README.md -rw-r--r-- 4 KiB

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
MAIL
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.