Назад | Перейти на главную страницу

SpamAssassin local.cf Конфигурация DMARC распознает отклонение и none, но не карантин

Для SpamAssassin 3.4.2 я добавил следующий набор правил конфигурации в local.cf с целью предоставления оценки спама для неудавшихся тестов DMARC.

Заголовки DMARC и SPF Authentication-Results создаются opendmarc и заголовок DKIM Authentication-Results от opendkim.

Ожидаемый результат - это оценка всех трех результатов заголовка, добавленных к заголовку X-Spam-Report.

Фактический результат предназначен только для домена, в котором p=reject или p=none с соответствующей оценкой, добавленной в заголовок X-Spam-Report, но для p=quarantine в заголовок X-Spam-Report ничего не добавляется, даже если заголовки DMARC, DKIM и SPF Authentication-Results были добавлены должным образом.

Добавлен к /etc/spamassassin/local.cf:

ifplugin Mail::SpamAssassin::Plugin::AskDNS
askdns __DMARC_POLICY_NONE _dmarc._AUTHORDOMAIN_ TXT /^v=DMARC1;.*\bp=none;/
askdns __DMARC_POLICY_QUAR _dmarc._AUTHORDOMAIN_ TXT /^v=DMARC1;.*\bp=quarantine;/
askdns __DMARC_POLICY_REJECT _dmarc._AUTHORDOMAIN_ TXT /^v=DMARC1;.*\bp=reject;/

meta DMARC_REJECT !(DKIM_VALID_AU || SPF_PASS) && __DMARC_POLICY_REJECT
score DMARC_REJECT 10
meta DMARC_QUAR !(DKIM_VALID_AU || SPF_PASS) && __DMARC_POLICY_QUAR
score DMARC_QUAR 5
meta DMARC_NONE !(DKIM_VALID_AU || SPF_PASS) && __DMARC_POLICY_NONE
score DMARC_NONE 0.1
endif # Mail::SpamAssassin::Plugin::AskDNS

Что не так с конфигурацией?

Конфигурация, о которой вы говорите, скопирована из блога Случайные мысли на DMARC / Spamassassin / Qmail. Это сообщение в блоге дает AskDNS в качестве третьего варианта, если вы по какой-то причине не можете использовать OpenDMARC. Поскольку вы уже используете OpenDMARC, вы можете напрямую использовать его Authentication-Results заголовок в SpamAssassin. Изменено из Дэвид Джонс:

header DMARC_PASS Authentication-Results =~ /mail\.example\.com; dmarc=pass/
describe DMARC_PASS DMARC check passed
score DMARC_PASS -0.1

header DMARC_FAIL Authentication-Results =~ /mail\.example\.com; dmarc=fail/
describe DMARC_FAIL DMARC check failed
score DMARC_FAIL 5.0

header DMARC_NONE Authentication-Results =~ /mail\.example\.com; dmarc=none/
describe DMARC_NONE DMARC check neutral
score DMARC_NONE 0.1

Если вы внедрили OpenDMARC в отказ на этапе подключения сообщения, которые не проходят проверку DMARC с p=reject, ваш SpamAssassin никогда не увидит сообщения, попадающие в четвертую категорию, но вот он, просто для полноты:

header DMARC_FAIL_REJECT Authentication-Results =~ /mail\.example\.com; dmarc=fail \(p=reject/
describe DMARC_FAIL_REJECT DMARC check failed and the sending domains says to reject this message
score DMARC_FAIL_REJECT 10.0

Поскольку Authentication-Results заголовки также могут быть кованый, Я бы не дал высоких отрицательный оценка, основанная только на них. Поэтому наиболее полезным правилом здесь является DMARC_FAIL, стреляя по p=quarantine. На мой взгляд, это тоже могло дать оценку больше, чем 5.0 в этом примере, поскольку решение уже принято отправляющим доменом.

Если приведенный выше пример конфигурации не подходит, вот дополнительная опция конфигурации и оценки:

header DMARC_PASS Authentication-Results =~ /mail\.example\.com; dmarc=pass/
describe DMARC_PASS DMARC check passed
score DMARC_PASS -0.1

header DMARC_NONE Authentication-Results =~ /mail\.example\.com; dmarc=none/
describe DMARC_NONE DMARC record not found
score DMARC_NONE 0.1

header DMARC_FAIL_NONE Authentication-Results =~ /mail\.example\.com; dmarc=fail \(p=none/
describe DMARC_FAIL_NONE DMARC check failed (p=none)
score DMARC_FAIL_NONE 2.0

header DMARC_FAIL_QUARANTINE Authentication-Results =~ /mail\.example\.com; dmarc=fail \(p=quarantine/
describe DMARC_FAIL_QUARANTINE DMARC check failed (p=quarantine)
score DMARC_FAIL_QUARANTINE 5.0

header DMARC_FAIL_REJECT Authentication-Results =~ /mail\.example\.com; dmarc=fail \(p=reject/
describe DMARC_FAIL_REJECT DMARC check failed (p=reject)
score DMARC_FAIL_REJECT 10.0