Skip to content
/ M3MTA Public

Experimental Mojolicious IOLoop mail transfer agent with MongoDB backend

Notifications You must be signed in to change notification settings

ian-kent/M3MTA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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/

About

Experimental Mojolicious IOLoop mail transfer agent with MongoDB backend

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published