By Vlad Marian transilvlad@gmail.com
Robin MTA Server and Tester is a development, debug and testing tool for MTA architects.
However, as the name suggests it can also be used as a lightweight MTA server with Dovecot SASL AUTH and mailbox integration.
It is powered by a highly customizable SMTP client designed to emulate the behaviour of popular email clients.
The lightweight server is ideal for a simple configurable catch server for testing or a fully fledged MTA using Dovecot mailboxes or web hooks. Provides Prometheus and Graphite metrics with Prometheus remote write built in plus a multitude or other handy endpoints.
The testing support is done via JSON files called test cases. Cases are client configuration files ran as Junit tests leveraging CI/CD integrations.
This project can be compiled into a runnable JAR or built into a Docker container as a stand alone MTA or combined with Dovecot.
A CLI interface is implemented with support for client, server and MTA-STS client execution. Robin makes use of the single responsibility principle whenever possible providing stand-alone tools and libraries most notably an MTA-STS implementation.
Use this to run end-to-end tests manually or in automation. This helps identify bugs early before leaving the development and staging environments.
Or set up the MTA server and configure it with for your mailbox hosting, API infrastructure or bespoke needs. Best do both since Robin is both an MTA and MTA tester :)
Contributions of any kind (bug fixes, new features...) are welcome! This is a development tool and as such it may not be perfect and may be lacking in some areas.
Certain future functionalities are marked with TODO comments throughout the code. This however does not mean they will be given priority or ever be done.
Any merge request made should align to existing coding style and naming convention. Before submitting a merge request please run a comprehensive code quality analysis (IntelliJ, SonarQube).
Read more here.
Complete email infrastructure with Dovecot, PostgreSQL, ClamAV, Rspamd, and Roundcube:
docker-compose -f docker-compose.suite.yaml up -d- Robin Full Suite - Architecture and deployment guide
- Full Suite Testing - Integration testing procedures
This project makes use of sample password as needed for testing and demonstration purposes.
- notMyPassword - It's not my password. It can't be as password length and complexity not met.
- 1234 - Sample used in some unit tests.
- stark/potts/hogan - Another sample used in unit tests and documentation. (Tony Stark / Pepper Potts Easter egg)
- avengers - Test keystore password that contains a single entry issued to Tony Stark. (Another Easter egg)
These passwords are not in use within production environments.
- Documentation Index
- Getting Started Guide - Installation and quick start
- CLI Reference
- Server configuration
- DoS Protection - Multi-layered defense against SMTP attacks (connection floods, slowloris, command floods).
- Queue Persistence - Configurable queue backends (MapDB, MariaDB, PostgreSQL).
- HashiCorp Vault
- SMTP webhooks
- Endpoints - JVM metrics implementation.
- Prometheus Remote Write - Prometheus Remote Write implementation.
- ClamAV Integration - ClamAV virus scanning integration.
- Rspamd Integration - Rspamd spam/phishing detection integration.
- Email Analysis Bots - Email and infrastructure analysis bots.
- MTA-STS - MTA-STS compliant MX resolver implementation (former MTA-STS library).
- Dovecot SASL - Dovecot SASL authentication implementation.
- IMAP helper - Lightweight Jakarta Mail IMAP client.
- MIME Parsing and Building - Lightweight RFC 2822 email parsing and composition.
- MIME Header Wrangler - MIME header content injector for tagging and adding headers.
- Received Header Builder - RFC-compliant Received header builder for email tracing.
- HTTP Request Client - Lightweight HTTP request client.
Robin is designed with single responsibility principle in mind and thus can provide reusable components for various tasks.
