DMARC Reporting
Отчетность DMARC осуществляется через модуль Rspamd DMARC.
Документацию Rspamd можно найти здесь: https://rspamd.com/doc/modules/dmarc.html
Важно:
-
Замените
example.com,mail.example.comиExampleв соответствии с вашей конфигурацией. -
Отчетность DMARC требует дополнительного внимания, особенно в первые несколько дней.
-
Все принимающие домены, размещенные в animails, отправляют отчеты с одного домена отчетности. Рекомендуется использовать родительский домен вашего
MAILCOW_HOSTNAME:- Если ваш
MAILCOW_HOSTNAME—mail.example.com, измените следующий параметр конфигурации наdomain = "example.com"; - Аналогично настройте
email, например:email = "noreply-dmarc@example.com";
- Если ваш
-
Рекомендуется (но не обязательно) создать почтового пользователя
noreply-dmarcв animails для обработки рикошетных сообщений (bounces).
Включение отчетности DMARC¶
Создайте файл data/conf/rspamd/local.d/dmarc.conf и установите следующее содержимое:
reporting {
enabled = true;
email = 'noreply-dmarc@example.com';
domain = 'example.com';
org_name = 'Example';
helo = 'rspamd';
smtp = 'postfix';
smtp_port = 25;
from_name = 'Example DMARC Report';
msgid_from = 'rspamd.mail.example.com';
max_entries = 2k;
keys_expire = 2d;
}
Создайте или измените docker-compose.override.yml в корневой директории animails:
services:
rspamd-animails:
environment:
- MASTER=${MASTER:-y}
labels:
ofelia.enabled: "true"
ofelia.job-exec.rspamd_dmarc_reporting_yesterday.schedule: "@every 24h"
ofelia.job-exec.rspamd_dmarc_reporting_yesterday.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/bin/rspamadm dmarc_report $(date --date yesterday '+%Y%m%d') > /var/lib/rspamd/dmarc_reports_last_log 2>&1 || exit 0\""
ofelia-animails:
depends_on:
- rspamd-animails
Запустите стек animails командой:
docker compose up -d
docker-compose up -d
Отправка копий отчетов себе¶
Чтобы получать скрытую копию отчетов, созданных Rspamd, вы можете настроить список bcc_addrs в секции reporting конфигурационного файла data/conf/rspamd/local.d/dmarc.conf:
reporting {
enabled = true;
email = 'noreply-dmarc@example.com';
bcc_addrs = ["noreply-dmarc@example.com","parsedmarc@example.com"];
[...]
Rspamd загружает изменения в режиме реального времени, поэтому перезапуск контейнера на данном этапе не требуется.
Это может быть полезно, если вы...
- ...хотите убедиться, что ваши отчеты DMARC отправляются корректно и проходят аутентификацию.
- ...хотите анализировать собственные отчеты для получения статистики, например, для использования в ParseDMARC или других аналитических системах.
Устранение неполадок¶
Проверьте время последнего запуска расписания отчетов:
docker compose exec rspamd-animails date -r /var/lib/rspamd/dmarc_reports_last_log
docker-compose exec rspamd-animails date -r /var/lib/rspamd/dmarc_reports_last_log
Просмотрите вывод последнего отчета:
docker compose exec rspamd-animails cat /var/lib/rspamd/dmarc_reports_last_log
docker-compose exec rspamd-animails cat /var/lib/rspamd/dmarc_reports_last_log
Запустите формирование отчета DMARC вручную:
docker compose exec rspamd-animails rspamadm dmarc_report
docker-compose exec rspamd-animails rspamadm dmarc_report
Убедитесь, что Rspamd записал данные в Redis: замените 20220428 на интересующую вас дату.
docker compose exec redis-animails redis-cli SMEMBERS "dmarc_idx;20220428"
docker-compose exec redis-animails redis-cli SMEMBERS "dmarc_idx;20220428"
Возьмите одну из строк вывода, которая вас интересует, и запросите ее, например:
docker compose exec redis-animails redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49
docker-compose exec redis-animails redis-cli ZRANGE "dmarc_rpt;microsoft.com;mailto:d@rua.agari.com;20220428" 0 49
Изменение частоты отправки отчетов DMARC¶
В приведенном выше примере отчеты отправляются раз в 24 часа за вчерашний день. Этого достаточно для большинства систем.
Если у вас большой объем почты и вы хотите запускать отчетность DMARC чаще одного раза в день, вам нужно создать второе расписание и запустить его с параметром dmarc_report $(date '+%Y%m%d') для обработки текущего дня. Важно убедиться, что первый запуск в день также обрабатывает последний отчет за предыдущий день, поэтому его нужно запускать дважды: один раз с $(date --date yesterday '+%Y%m%d') в 00:05 (0 5 0 * * *) и затем с $(date '+%Y%m%d') с нужным интервалом.
Расписание Ofelia имеет ту же реализацию, что и cron в Go; поддерживаемый синтаксис описан в документации cron.
Чтобы изменить расписание:
- Отредактируйте
docker-compose.override.yml:
services:
rspamd-animails:
environment:
- MASTER=${MASTER:-y}
labels:
ofelia.enabled: "true"
ofelia.job-exec.rspamd_dmarc_reporting_yesterday.schedule: "0 5 0 * * *"
ofelia.job-exec.rspamd_dmarc_reporting_yesterday.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/bin/rspamadm dmarc_report $(date --date yesterday '+%Y%m%d') > /var/lib/rspamd/dmarc_reports_last_log 2>&1 || exit 0\""
ofelia.job-exec.rspamd_dmarc_reporting_today.schedule: "@every 12h"
ofelia.job-exec.rspamd_dmarc_reporting_today.command: "/bin/bash -c \"[[ $${MASTER} == y ]] && /usr/bin/rspamadm dmarc_report $(date '+%Y%m%d') > /var/lib/rspamd/dmarc_reports_last_log 2>&1 || exit 0\""
ofelia-animails:
depends_on:
- rspamd-animails
-
Перезапустите необходимые контейнеры:
docker compose up -ddocker-compose up -d -
Перезапустите только контейнер ofelia:
docker compose restart ofelia-animailsdocker-compose restart ofelia-animails
Отключение отчетности DMARC¶
Чтобы отключить отчетность:
-
Установите
enabledв значениеfalseв файлеdata/conf/rspamd/local.d/dmarc.conf. -
Отмените изменения, внесенные в
docker-compose.override.ymlдляrspamd-animailsиofelia-animails. -
Перезапустите необходимые контейнеры:
docker compose up -ddocker-compose up -d