Stalwart SMTP Server
Stalwart SMTP is a modern SMTP server developed in Rust with a focus on security, speed, and extensive configurability. It features built-in DMARC, DKIM, SPF and ARC support for message authentication, strong transport security through DANE, MTA-STS and SMTP TLS reporting, and offers great flexibility and customization thanks to its dynamic configuration rules and native support for Sieve scripts.
Key features:
- Sender and Message Authentication:
- Domain-based Message Authentication, Reporting, and Conformance (DMARC) verification and failure/aggregate reporting.
- DomainKeys Identified Mail (DKIM) verification, signing and failure reporting.
- Sender Policy Framework (SPF) policy evaluation and failure reporting.
- Authenticated Received Chain (ARC) verification and sealing.
- Reverse IP (iprev) validation.
- Strong Transport Security:
- DNS-Based Authentication of Named Entities (DANE) Transport Layer Security.
- SMTP MTA Strict Transport Security (MTA-STS).
- SMTP TLS Reporting (TLSRPT) delivery and analysis.
- Inbound Filtering and Throttling:
- Sieve scripting language with support for all registered extensions.
- Filtering, modification and removal of MIME parts or headers.
- DNS block lists (DNSBL) & Greylisting.
- Inbound concurrency & rate limiting.
- Integration with external content filtering systems such as SpamAssassin and ClamAV.
- Flexible Queues:
- Unlimited virtual queues with custom routing rules.
- Delayed delivery with
FUTURERELEASE
andDELIVERBY
extensions support. - Priority delivery with
MT-PRIORITY
extension support. - Outbound throttling & Disk quotas.
- Logging and Reporting:
- Detailed logging of SMTP transactions and events, including delivery attempts, errors, and policy violations.
- Integration with OpenTelemetry to enable monitoring, tracing, and performance analysis of SMTP server operations.
- Automatic analysis of incoming DMARC/TLS aggregate reports, DMARC/DKIM/SPF authentication failure reports as well as abuse reports.
- And more:
- SASL authentication.
- PostgreSQL, MySQL, MSSQL and SQLite support.
- Granular configuration rules.
- REST API for management.
- Memory safe (thanks to Rust).
Get Started
Install Stalwart SMTP on your server by following the instructions for your platform:
You may also compile Stalwart SMTP from the source.
Support
If you are having problems running Stalwart SMTP, you found a bug or just have a question, do not hesitate to reach us on Github Discussions, Reddit or Discord. Additionally you may become a sponsor to obtain priority support from Stalwart Labs Ltd.
Documentation
Table of Contents
- Get Started
- Configuration
- Inbound settings
- Outbound settings
- Email Authentication
- Management
- Development
Roadmap
The following major features and enhancements are planned for Stalwart SMTP:
- Embedded Antispam and Antivirus
- WASM filters
- Distributed mode
- Web-based administration
Testing & Fuzzing
The base tests perform protocol compliance tests as well as basic functionality testing on different functions across the Stalwart SMTP code base. To run the base test suite execute:
cargo test
To run the fuzz tests please refer to the Stalwart libraries that handle parsing for the SMTP server: smtp-proto, mail-parser, mail-auth and sieve-rs.
Funding
Part of the development of this project was funded through the NGI0 Entrust Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101069594.
If you find the project useful you can help by becoming a sponsor. Thank you!
License
Licensed under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See LICENSE for more details.
You can be released from the requirements of the AGPLv3 license by purchasing a commercial license. Please contact [email protected] for more details.
Copyright
Copyright (C) 2020-2023, Stalwart Labs Ltd.