fix mail-auth dependency
maitred
Lightweight embeddable SMTP RFC5321 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 and 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
Name | Status | Notes |
---|---|---|
HELO | ✅ | |
EHLO | ✅ | |
✅ | ||
RCPT | ✅ | |
BDAT | ✅ | |
DATA | ✅ | |
AUTH | ✅ | SASL PLAIN only |
VRFY | ✅ | |
EXPN | ✅ | |
STARTTLS | ✅ |
ESMTP Extensions
Name | Status | RFC |
---|---|---|
SIZE | ✅ | RFC1870 |
PIPELINING | ✅ | RFC2920 |
8BITMIME | ✅ | RFC6152 |
ENHANCED STATUS CODES | ⚠️ | RFC2920 |
SMTPUTF8 | TODO | RFC6531 |
CHUNKING | ✅ | RFC3030 |
DSN | TODO | RFC3461 |
ETRN | ❌ | RFC1985 |
ATRN | ❌ | RFC2645 |
BURL | ❌ | RFC4468 |
REQUIRETLS | TODO | RFC8689 |
Authentication Extensions
All authentication extensions are implemented with the 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
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 are in use here.