Kevin Schoon 8 months ago
 
 
 
Kevin Schoon 8 months ago
 
 
 
 
 
 
 
 
 
 
 
 
Kevin Schoon 7 months ago
 
Kevin Schoon 8 months ago
 
 
 
 
 
 
 
Kevin Schoon 6 months ago
 
Kevin Schoon 8 months ago
 
 
 
 
Kevin Schoon 7 months ago
 
 
 
 
 
 
 
 
 
 
Kevin Schoon 6 months ago
Kevin Schoon 8 months ago
 
 
 
 
 
Kevin Schoon 8 months ago
 
 
Kevin Schoon 7 months ago
Kevin Schoon 8 months ago
Kevin Schoon 6 months ago
Kevin Schoon 8 months ago
Kevin Schoon 7 months ago
 
 
Kevin Schoon 6 months ago
Kevin Schoon 8 months ago
Kevin Schoon 7 months ago
 
 
 
 
 
 
 
 
Kevin Schoon 6 months ago
Kevin Schoon 7 months ago
 
 
Kevin Schoon 6 months ago
 
 
 
 
 
Kevin Schoon 6 months ago
 
 
 
 
 
 
 
Kevin Schoon 7 months ago
Kevin Schoon 8 months ago
 
 
 
# 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.