Сценарий:
У меня есть пара почтовых серверов, работающих на Debian за брандмауэром, с общедоступным IP-адресом, и я правильно настроил свои записи DNS (MCX, DMARC, DKIM, SPF).
Это пример моих записей DNS (вывод с помощью команды dig):
DKIM
customselector._domainkey.domain.com. 3600 IN TXT "v=DKIM1\; h=rsa-sha256\; k=rsa\; s=email\; " "p=MII...
SPF:
domain.com. 3599 IN TXT "v=spf1 mx -all"
MX:
domain.com. 3599 IN MX 1 mailsystem.domain.com.
DMARC:
_dmarc.domain.com. 3599 IN TXT "v=DMARC1\;p=quarantine\;sp=reject\;rua=mailto:dmarc@domain.com\; ruf=mailto:dmarc@domain.com\; fo=1\; adkim=r\; aspf=r\; pct=100\; rf=afrf\; ri=86400"
Попробовав несколько общедоступных систем тестирования, вся моя установка прошла проверку на 100% нормально. Но затем я начинаю получать эти странные отчеты, показывающие, что с моего общедоступного IP-адреса отправляется много плохих писем, а также некоторые электронные письма, идеально проверенные тем же доменом. Следующий фрагмент взят из отчета Google:
<record>
<row>
<source_ip>0.0.0.0</source_ip>
<count>6</count>
<policy_evaluated>
<disposition>none</disposition>
<dkim>pass</dkim>
<spf>pass</spf>
</policy_evaluated>
</row>
<identifiers>
<header_from>domain.com</header_from>
</identifiers>
<auth_results>
<dkim>
<domain>domain.com</domain>
<result>pass</result>
<selector>customselector</selector>
</dkim>
<spf>
<domain>domain.com</domain>
<result>pass</result>
</spf>
</auth_results>
</record>
<record>
<row>
<source_ip>0.0.0.0</source_ip>
<count>16</count>
<policy_evaluated>
<disposition>none</disposition>
<dkim>fail</dkim>
<spf>pass</spf>
</policy_evaluated>
</row>
<identifiers>
<header_from>domain.com</header_from>
</identifiers>
<auth_results>
<dkim>
<domain>domain.com</domain>
<result>fail</result>
<selector>customselector</selector>
</dkim>
<spf>
<domain>domain.com</domain>
<result>pass</result>
</spf>
</auth_results>
</record>
<record>
Я получил 6 хороших писем против 16 плохих писем, все практически с одинаковым содержанием.
Тесты:
Конфигурация:
Я использую opendkim, вот что считаю актуальным:
Canonicalization relaxed/relaxed
Mode sv
SubDomains yes
Хотя моя запись DKIM "действительна", некоторые валидаторы не принимают h=rsa-sha256;
в записи DNS и сделает подпись DKIM недействительной. Я полагаю, что Google использует несколько разных дистрибутивов Linux на своих почтовых серверах с разными валидаторами.
Чтобы решить эту проблему, просто удалите этот аргумент в своей записи DKIM, он должен выглядеть так:
v=DKIM1; k=rsa; s=email; p=MI...
После этого каждое электронное письмо будет должным образом проверено.
Я пересек http://dkimvalidator.com проводя небольшое исследование, и это был единственный инструмент, который выводил довольно запутанное сообщение:
result = invalid
Details: public key: does not support hash algorithm 'sha256'
На удивление эта ошибка кажется необычной, но когда вы используете opendkim для генерации ключей, вы можете сделать что-то вроде этого:
opendkim-genkey -b 2048 -h rsa-sha256 -r -s customselector -d domain.com -v
Что записывает неверный аргумент в txt
выходной файл, приводящий к неверной записи DKIM.