# maitred |
|
Lightweight embeddable SMTP [RFC5321](https://www.rfc-editor.org/rfc/rfc5321.html) |
server for use in applications that need to receive e-mail. |
|
## Use Case |
|
The original goal of this library is to have a usable SMTP server that can be |
embedded in mailing list software, particularly for use in |
[Ayllu](https://ayllu-forge.org) and |
[Mailpot](https://git.meli-email.org/meli/mailpot). After considering all of |
the existing SMTP servers there was no Rust library that could be easily |
embedded in an application and general purpose SMTP servers like Postfix are |
too complex to be reasonably packaged. |
|
## Security |
|
### Relaying |
|
Due to the common abuse of the SMTP protocol by nefarious internet actors the |
default behavior of this package must _never_ allow open relaying without |
explicit and conscious configuration from the user. Additionally the SMTP |
server must never expose the e-mail addresses or other user data contained |
within. |
|
## Alpha Status |
|
This library is in an "alpha" state currently and should not be considered |
stable until it reaches version `1.0`, use at your own risk! |
|
## Protocol Status |
|
### SMTP Base server and Commands [RFC5321](rfcs/rfc5321.txt) |
|
| Name | Status | Notes | |
|-----------|--------|-------------------------------------------------------| |
| HELO | ✅ | | |
| EHLO | ✅ | | |
| MAIL | ✅ | | |
| RCPT | ✅ | | |
| BDAT | ✅ | | |
| DATA | ✅ | | |
| AUTH | ✅ | SASL PLAIN only | |
| VRFY | ✅ | | |
| EXPN | ✅ | | |
| STARTTLS | ✅ | | |
|
|
### ESMTP Extensions |
|
| Name | Status | RFC | |
|-----------------------|----------|-------------------------------| |
| SIZE | ✅ | [RFC1870](rfcs/rfc1870.txt) | |
| PIPELINING | ✅ | [RFC2920](rfcs/rfc2920.txt) | |
| 8BITMIME | ✅ | [RFC6152](rfcs/rfc6152.txt) | |
| ENHANCED STATUS CODES | ⚠️ | [RFC2920](rfcs/rfc3463.txt) | |
| SMTPUTF8 | TODO | [RFC6531](rfcs/rfc6531.txt) | |
| CHUNKING | ✅ | [RFC3030](rfcs/rfc3030.txt) | |
| DSN | TODO | [RFC3461](rfcs/rfc3461.txt) | |
| ETRN | ❌ | [RFC1985](rfcs/rfc1985.txt) | |
| ATRN | ❌ | RFC2645 | |
| BURL | ❌ | RFC4468 | |
| REQUIRETLS | TODO | [RFC8689](rfcs/rfc8689.txt) | |
|
### Authentication Extensions |
|
All authentication extensions are implemented with the |
[mail-auth](https://crates.io/crates/mail-auth) package from Stalwart. |
|
|name | status | |
|---------------------------|--------| |
| DKIM Verification | ✅ | |
| ARC Chain Verification | TODO | |
| SPF Policy Evaluation | ✅ | |
| DMARC Policy Evaluation | TODO | |
|
|
### TLS Configuration |
|
STARTTLS is supported for upgrading plain text connections (opportunistic TLS). |
|
Implicit TLS on a dedicated port is a WIP. |
|
### Proxy Protocol |
|
Often times you don't want to bind directly to privileged port `25`. Maitred |
provdes support for HAProxy's |
[PROXY protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) |
which lets you proxy traffic from Nginx (or HAProxy) and expose the client's |
original source IP address. This is required for SPF session level validation. |
|
|
## Attributions |
|
Several of the free software libraries released by |
[stalwart](https://github.com/stalwartlabs/mail-server) are in use here. |