SkillAgentSearch skills...

M3MTA

Experimental Mojolicious IOLoop mail transfer agent with MongoDB backend

Install / Use

/learn @ian-kent/M3MTA
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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/

View on GitHub
GitHub Stars10
CategoryDevelopment
Updated4mo ago
Forks3

Languages

Perl

Security Score

72/100

Audited on Nov 4, 2025

No findings