mirror of
https://github.com/mailscope/kumomta.git
synced 2026-08-25 05:38:18 +00:00
54e230ffca2c56bfc4fc0b2625c995bb9a93f13f
* Switch uuids to v1 format, so that we can cheaply determine when a message was created without having to load its metadata from the spool * Add some message delivery parameters; retry interval, limit, max age * Respect those parameters when spooling in and when we encounter a transient failure.
kumomta
Concepts
Queuing
Messages are assigned to a queue upon reception. The system can support arbitrarily named queues but the convention is to construct the queue name from some metadata associated with the message:
tenant- some kind of sender or customer identifier or identity derived either from the message itself or authentication of the injection session.campaign- a sender-provided label that can be used to logically group a set of related messages, perhaps generated from the same campaign.- destination domain - the site where the email will be routed
These three pieces of information are combined to produce the name of the queue
in the form campaign:tenant@domain.
Debugging/Tracing
This will launch the server using the policy defined in simple_policy.lua:
KUMOD_LOG=kumod=trace cargo run -p kumod -- --policy simple_policy.lua
Contributing
Ensure that the code is formatted before submitting a PR.
You need to install StyLua to format lua:
$ cargo install stylua --features lua54
Then you can format both the rust and the lua code:
$ make fmt
Fuzzing
Some components have fuzzer coverage. To run it, follow the setup from the Rust Fuzz Book
Then:
$ cd crates/rfc5321/
$ cargo +nightly fuzz run parser
Description
The first Open-Source high-performance MTA developed from the ground-up for high-volume email sending environments.
Languages
Rust
91.7%
Lua
6.3%
Python
0.9%
Shell
0.8%
JavaScript
0.1%