Skip to content
This repository has been archived by the owner on Oct 8, 2024. It is now read-only.

stalwartlabs/smtp-server

⚠️ Repository Archived ⚠️

This repository has been archived and is no longer maintained.

Development for the SMTP server has been moved to the Stalwart Mail Server repository, where ongoing updates and improvements will take place.

Thank you for your interest and contributions!


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.
    • Milter support for integration with external content filtering systems such as SpamAssassin and ClamAV.
    • Address rewriting.
    • Filtering, modification and removal of message parts or headers.
    • Inbound concurrency & rate limiting.
  • Spam and Phishing filter:
    • Comprehensive set of filtering rules on par with popular solutions.
    • Statistical spam classifier with automatic training capabilities.
    • DNS Blocklists (DNSBLs) checking of IP addresses, domains, and hashes.
    • Collaborative digest-based spam filtering with Pyzor.
    • Phishing protection against homographic URL attacks, sender spoofing and other techniques.
    • Trusted reply tracking to recognize and prioritize genuine e-mail replies.
    • Sender reputation monitoring by IP address, ASN, domain and email address.
    • Greylisting to temporarily defer unknown senders.
    • Spam traps to set up decoy email addresses that catch and analyze spam.
  • Flexible Queues:
    • Distributed and fault-tolerant queues.
    • Unlimited virtual queues with custom routing rules.
    • Delayed delivery with FUTURERELEASE and DELIVERBY 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.
    • Redis, LDAP, PostgreSQL, MySQL, MSSQL and SQLite support.
    • Email aliases, mailing lists, subaddressing and catch-all addresses support.
    • Granular configuration rules.
    • REST API for management.
    • Memory safe (thanks to Rust).

Get Started

Install Stalwart SMTP Server on your server by following the instructions for your platform:

All documentation is available at stalw.art/docs/get-started.

Note If you need a more comprehensive solution that includes IMAP and JMAP servers, you should consider installing the Stalwart Mail Server instead.

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.

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 licensing@stalw.art for more details.

Copyright

Copyright (C) 2020-2023, Stalwart Labs Ltd.