This is offered as a free simulator. If you want to build it yourself or experiment on your own, just follow the instructions below. It can also be available with a very large database of response codes for a fee as a SaaS model. If that is interesting to you send your inquiry to [email protected].
This config policy defines KumoMTA as a smart sink and reflector to simulate real-world delivery testing. It will consume and process all incoming messages in the following ways:
- incoming mail will be evaluated against the behaviour file at behave.toml
- mail will be bounced (5xx), Deferred (4xx), or accepted (250) based on the percentages in that file per domain
- TBD: Will add oob and fbl responses in the future
- TBD: Might add opens and clicks in the future
Sample behave.toml file:
[yahoo.com]
bounce 20
defer 20
# all remailing will be accepted and dropped
Install KumoMTA as per the instructions here: https://docs.kumomta.com/userguide/installation/overview/
- Important: There are two ways to use this code.
- Smarthost or gateway your traffic to the sink server so that you do not have to change your recipient domains.
- This has the advantage of not requiring a change to recipient addresses, but requires the ability to smarthost a message stream.
- Update your DNS so that any message sent to a fake domain will route to the sink.
- This has the advantage of allowing specific messages in a campaign to hit the sink for testing while not interfering with others. It has the disadvantage of requiring access to DNS and requires altering recipient domains.
For option 2, repeat this step for all domains you want to simulate
Modify your DNS to add fake redirection to this new mail server. For instance, if your sink server domain is sink.mydomain.com
and the IP is 100.100.100.100, then you should add something like:
not-yahoo.sink.mydomain.com A 100.100.100.100
not-yahoo.sink.mydomain.com MX 10 not-yahoo.sink.mydomain.com
Now when you send an email to [email protected], it will land at your sink server.
Clone this repo to a separate working folder.
Modify the sample bounce files or add your own with a similar format.
The Python importer will look for bouncedata.csv first and import it if possible.
If that file does not exist, it will prompt for the location of a suitable
import file. The file must be CSV with only the named columns domain
,code
,context
.
Execute the Python importer script sq3dbimporter.py
. If you used files that are not named bouncedata.cvs
you will need to provide those file names during the process.
Modify the listener_domains
file to include your sending domain in the relay_from
format (sample is provided)
Copy the contents of this directory to /opt/kumomta/etc/policy/
Restart KumoMTA with a stop/start
sudo systemctl stop kumomta
sudo systemctl start kumomta
Tail the system journal to make sure there are no errors
journalctl -f -n 50 -u kumomta
^^ If you leave this running, you will see a running log of injection and processing activity.
You can test this from another terminal window with swaks:
swaks --to [email protected] --from [email protected] --server localhost
If that all works, then you can set up your te4st campaign send by replacing all the real domains to fake domains.
IE: [email protected] becomes [email protected] based on the sample scenario above.