M3MTA ===== An experimental mail transfer agent using Mojo::IOLoop and MongoDB. For development use only. Do NOT use this MTA in a production environment. CURRENT SUPPORT --------------- SMTP - RFC5321 Basic and Extended SMTP - supports EHLO, HELO, MAIL, RCPT, DATA, RSET and NOOP commands - RFC1870 SIZE - optionally broadcast SIZE with maximum message size - maximum message size check on MAIL command - maximum local mailbox size check on RCPT command - enforcement of MAIL SIZE on DATA command - RFC2195 SASL CRAM-MD5 - implements the SASL CRAM-MD5 mechanism for RFC4954 - RFC2487 TLS - implements and broadcasts STARTTLS support - optionally require a TLS connection for remote delivery - optionally require a TLS connection for all (including local) delivery - RFC2920 PIPELINING - broadcasts PIPELINING support - RFC3461 DSN - partial support for delivery status notifications - RFC4616 SASL PLAIN - implements the SASL PLAIN mechanism for RFC4954 - RFC4954 AUTH - implements and broadcasts AUTH support MDA - Local user message delivery to MongoDB backend - Aliasing to local or remote addresses (including alias chains) - Catch-all mailboxes and aliases - Remote message delivery via SMTP - Relay only domains for backup MX - Configurable retry times and notifications - Mailbox size limits - Message filtering at time of delivery - SpamAssassin already built in IMAP - IMAP4rev1 - TLS Scalability: - Multiple IMAP, SMTP or MDA daemons can be started - Configure MongoDB to use sharded collections and replica sets REQUIREMENTS ------------ You'll need: - Perl (preferably 5.16 or later) - MongoDB - SpamAssassin (if you want to use it, otherwise remove from config) - CPAN modules: Digest::MD5 Digest::HMAC_MD5 Hash::Merge IO::Socket::SSL JSON Log::Log4perl Mail::SpamAssassin MIME::Base64 Mojolicious (4.14 or later) MojoX::IOLoop::Server::StartTLS MongoDB Net::DNS::Resolver Readonly Text::Xslate INSTALLATION ------------ Run 'make install'. M3MTA will be installed to /usr/bin, /etc/m3mta and /usr/lib/m3mta by default. If you're using M3MTA in command line daemon mode, you'll need to create /var/log/m3mta and /var/run/m3mta before use. In console mode, no log file or PID file are required. MONGODB ------- See demo.js and config files in ./etc STARTING M3MTA -------------- Start IMAP, SMTP and MDA: m3mta start Stop IMAP, SMTP and MDA: m3mta stop To use M3MTA without the m3mta command, you need to add /usr/lib/m3mta to PERL5LIB. Start server or MDA in daemon mode: m3mta-imap start --daemon m3mta-smtp start --daemon m3mta-mda start --daemon Stop server or MDA in daemon mode: m3mta-imap stop m3mta-smtp stop m3mta-mda stop Start server or MDA in console mode: ./bin/m3mta-imap ./bin/m3mta-smtp ./bin/m3mta-mda Use Ctrl<C> to stop. CONFIGURATION ------------- Edit files in /etc/m3mta/ M3MTA (c) Ian Kent, 2013 - http://github.com/ian-kent/