Kevin Schoon 1 month ago
78 commits
87fff6c5 main
fix mail-auth dependency
File Commit Size Mode Time
.containerignore add a basic containerfile for maitred-debug 7 B -rw-r--r-- 3 months ago
.gitignore Reduce duplicated code for STARTTLS connections 29 B -rw-r--r-- 2 months ago
Cargo.lock fix mail-auth dependency 60.7 KiB -rw-r--r-- 1 month ago
Cargo.toml make maitred-debug a top level package 71 B -rw-r--r-- 2 months ago
Containerfile working STARTTLS implementation 384 B -rw-r--r-- 2 months ago
LICENSE add license 33.7 KiB -rw-r--r-- 4 months ago
README.md move spf validation out of session 4 KiB -rw-r--r-- 2 months ago
contrib add support for HAProxy's PROXY Protocol NaN B d--------- 2 months ago
demo add neomutt demo accounts, improve maitred-debug NaN B d--------- 3 months ago
maitred-debug bump dependencies NaN B d--------- 1 month ago
maitred.toml move spf validation out of session 511 B -rw-r--r-- 2 months ago
maitred fix mail-auth dependency NaN B d--------- 1 month ago
rfcs add placeholder for REQUIRETLS NaN B d--------- 2 months ago
scripts add tls no-auth test NaN B d--------- 2 months ago

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.

Clone

HTTP

Subscribe

License

AGPL-3.0

Authors

Kevin Schoon: 100%

Analysis