2020-09-24 20:49:33 +02:00
DMARC Reporting done via Rspamd DMARC Module.
2021-08-28 15:26:19 +02:00
Rspamd documentation can be found here: https://rspamd.com/doc/modules/dmarc.html
2020-09-24 20:49:33 +02:00
**Important:**
2021-09-18 17:06:52 +02:00
2021-09-18 17:06:31 +02:00
1. Change `example.com` , `mail.example.com` and `Example` to reflect your setup
2021-09-18 17:06:52 +02:00
2021-08-28 18:23:49 +02:00
2. DMARC reporting requires additional attention, especially over the first few days
2021-09-18 17:06:52 +02:00
2021-09-18 17:06:31 +02:00
3. All receiving domains hosted on mailcow send from one reporting domain. It is recommended to use the parent domain of your `MAILCOW_HOSTNAME` :
- If your `MAILCOW_HOSTNAME` is `mail.example.com` change the following config to `domain = "example.com";`
- Set `email` equally, e.g. `email = "noreply-dmarc@example.com";`
2021-09-18 17:06:52 +02:00
2021-09-18 17:06:31 +02:00
4. It is optional but recommended to create an email user `noreply-dmarc` in mailcow to handle bounces.
## Enable DMARC reporting
1. Create the file `data/conf/rspamd/local.d/dmarc.conf` and set the following content:
2020-09-24 20:49:33 +02:00
```
2021-08-28 15:26:19 +02:00
reporting {
enabled = true;
email = 'noreply-dmarc@example.com';
domain = 'example.com';
org_name = 'Example';
helo = 'rspamd';
smtp = 'postfix';
2020-09-24 20:49:33 +02:00
smtp_port = 25;
2021-08-28 15:26:19 +02:00
from_name = 'Example DMARC Report';
msgid_from = 'rspamd.mail.example.com';
max_entries = 2k;
keys_expire = 2d;
2020-09-24 20:49:33 +02:00
}
```
2021-09-18 17:06:31 +02:00
2. Create or modify `docker-compose.override.yml` in the mailcow-dockerized base directory:
2021-08-28 15:26:19 +02:00
```
version: '2.1'
2020-09-24 20:49:33 +02:00
2021-08-28 15:26:19 +02:00
services:
rspamd-mailcow:
environment:
- MASTER=${MASTER:-y}
labels:
ofelia.enabled: "true"
ofelia.job-exec.rspamd_dmarc_reporting.schedule: "@every 24h"
ofelia.job-exec.rspamd_dmarc_reporting.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/bin/rspamadm dmarc_report > /var/lib/rspamd/dmarc_reports_last_log 2>& 1 || exit 0\""
ofelia-mailcow:
depends_on:
- rspamd-mailcow
```
2021-09-18 17:06:31 +02:00
2021-08-28 15:26:19 +02:00
3. Run `docker-compose up -d`
2020-09-24 20:49:33 +02:00
## Send a copy reports to yourself
2021-09-18 17:06:31 +02:00
To receive a hidden copy of reports generated by Rspamd you can set a `bcc_addrs` list in the `reporting` config section of `data/conf/rspamd/local.d/dmarc.conf` :
2021-08-28 15:26:19 +02:00
2021-08-28 18:23:49 +02:00
```
reporting {
enabled = true;
email = 'noreply-dmarc@example.com';
bcc_addrs = ["noreply-dmarc@example.com","parsedmarc@example.com"];
2021-09-18 17:06:31 +02:00
[...]
2021-08-28 18:23:49 +02:00
```
2021-09-18 17:06:31 +02:00
Rspamd will load changes in real time, so you won't need to restart the container at this point.
This can be useful if you...
2021-08-28 15:26:19 +02:00
2021-09-18 17:06:31 +02:00
- ...want to check that your DMARC reports are sent correctly and authenticated.
- ...want to analyze your own reports to get statistics, i.e. to use with ParseDMARC or other analytic systems.
2020-09-24 20:49:33 +02:00
2021-08-28 15:26:19 +02:00
## Troubleshooting
2021-08-28 18:23:49 +02:00
2021-09-18 17:06:31 +02:00
Check when the report schedule last ran:
2021-08-28 18:23:49 +02:00
```
docker-compose exec rspamd-mailcow date -r /var/lib/rspamd/dmarc_reports_last_log
```
2021-09-18 17:06:31 +02:00
See the latest report output:
2021-08-28 18:23:49 +02:00
```
docker-compose exec rspamd-mailcow cat /var/lib/rspamd/dmarc_reports_last_log
```
2021-09-18 17:06:31 +02:00
Manually trigger a DMARC report:
2021-08-28 18:23:49 +02:00
```
docker-compose exec rspamd-mailcow rspamadm dmarc_report
```
2021-09-18 17:06:31 +02:00
Validate that Rspamd has recorded data in Redis:
2021-08-28 18:23:49 +02:00
```
docker-compose exec redis-mailcow redis-cli KEYS 'dmarc;*'
docker-compose exec redis-mailcow redis-cli HGETALL "dmarc;example.com;20211231"
```
2020-09-26 11:23:14 +02:00
2021-09-18 17:06:31 +02:00
## Change DMARC reporting frequency
In the example above reports are sent once every 24 hours. You may want to change that interval:
1. Edit `docker-compose.override.yml` and a djust `ofelia.job-exec.rspamd_dmarc_reporting.schedule: "@every 24h"` to a desired value.
2021-08-28 15:26:19 +02:00
2. Run `docker-compose up -d`
2021-09-18 17:06:31 +02:00
2021-08-28 15:26:19 +02:00
3. Run `docker-compose restart ofelia-mailcow`
2020-09-26 11:23:14 +02:00
2021-08-28 15:26:19 +02:00
## Disable DMARC Reporting
2021-09-18 17:06:31 +02:00
2021-08-28 15:26:19 +02:00
To disable reporting:
2021-09-18 17:06:31 +02:00
2021-08-28 15:26:19 +02:00
1. Set `enabled` to `false` in `data/conf/rspamd/local.d/dmarc.conf`
2021-09-18 17:06:31 +02:00
2021-08-28 15:26:19 +02:00
2. Revert changes done to `docker-compose.override.yml`
2021-09-18 17:06:31 +02:00
2021-08-28 15:26:19 +02:00
3. Run `docker-compose up -d`