Я использую честную отправку электронной почты по нескольким доменам, а последняя политика p = отклонения AOL вызывает у меня некоторые проблемы, а также много путаницы. Мое понимание DMARC заключается в том, что он основан на DKIM и SPF с уровнем отчетности. Я понимаю, что SPF - это проблема с переадресацией, но до тех пор, пока SPF устанавливается на ~ все мягкие сбои, то это не шоу-стоппер. Я также подумал, что DKIM может пройти через пересылку без проблем, если вы не будете много возиться с заголовками. Однако я обнаружил, что некоторые электронные письма от AOL, отправленные MailGun, терпят неудачу DMARC, когда они приземляются в GMail. MailGun говорит об этом из-за ошибки отправителя/ошибки несоответствия. Может ли кто-нибудь уточнить, является ли переадресация электронной почты обреченной, поскольку DMARC захватывает или MailGun просто не пересылает правильно?
Является ли DMARC завершением отправки электронной почты?
Ответ 1
Я думаю, что проблема, с которой вы сталкиваетесь, - это не переадресация, а выравнивание DKIM. Да, SPF будет сбой, но DKIM должен пройти, но выравнивание DKIM может не пройти. DMARC требует, чтобы выравнивание было строгим или расслабленным, основываясь на вашей политике. Вы можете прочитать больше о выравниваниях здесь: Идентификационные выравнивания
Существуют инструменты для тестирования, такие как отправка электронной почты на [email protected]
, которая покажет выравнивание результатов, но это платная функция.
Так как это проблема, в работах, называемых "ARC", есть новая спецификация, цель этого - решить эту проблему, вы можете прочитать об этом здесь: ARC Spec
Ответ 2
Я попросил Mailgun поддержать эту проблему и не получил никаких полезных ответов. Однако решение действительно находится в их документации:
Примечание. Если вы пересылаете сообщения на другой адрес электронной почты, отключить отслеживание кликов, открыть отслеживание и отказаться от подписки, путем редактирования настройки вашего домена на панели управления. Если эти функции разрешено, содержимое каждого сообщения модифицируется Mailgun до пересылка, что делает недействительной подпись DKIM. Если сообщение приходит из домена, публикующего политику DMARC (например, Yahoo! Mail), сообщение будет отклонено как спам отправителем пересылки.
https://documentation.mailgun.com/en/latest/user_manual.html#routes
Итак, я отключил все эти функции в своем основном домене, которые я использую для получения почты, и это решило отскок DMARC. Если вы хотите использовать любую из этих функций, вам необходимо настроить поддомен для исходящей почты.
Ответ 3
Как уже упоминалось выше, проблема в том, что при отправке электронной почты somedomain.com отправляет электронное письмо с помощью DKIM (уникальный хэш содержимого электронной почты). Когда Mailgun перенаправляет сообщение в Gmail, он вставляет в него изменения open/click/unsubscribe, которые затем аннулируют хэш DKIM.
Потому что somedomain.com DMARC говорит "отклонить все, что было недействительным DKIM". Gmail или другие службы отклоняют письмо.
Обходной путь, который я нашел, состоял в том, чтобы использовать собственное решение для почтовых ящиков. WhoIs поставляется с одним, который легко настроить, например: https://manage.whois.com/kb/servlet/KBServlet/faq579.html
Впоследствии я просто добавил почтовый ящик POP в настройках Gmail. (Начиная с Gmail 24 декабря 2017 года). Я смог снова включить Open и Click tracking, и теперь все работает, и я счастливо получаю почту в Gmail.
В качестве бонуса мы используем электронную почту как общий почтовый ящик, поэтому теперь каждый может видеть отправленные письма в своем почтовом ящике, а не только пересылаемые ответы.
[Edit] После этого я понял, что теперь получаю почту только в собственном решении почтового ящика, но больше не в Mailgun, где я также нуждался в них.
Чтобы обойти это, я добавил записи MX, чтобы указать на mxa.mailgun.org, используя поддомен, так что mg.exampledomain.com
Затем я использовал правило переадресации в WhoIs, чтобы отправить все электронные письма, которые доставляются на адрес [email protected], также доставляться по адресу [email protected] Теперь я получаю сообщения в Mailgun и все еще могу видеть его в Gmail через почтовый ящик POP.
Ответ 4
В моем случае оказывается, что это было просто вызвано недействительными сигнатурами DKIM от уважаемых отправителей, несмотря на то, что серверы пересылки НЕ модифицируют сообщения.
Без промежуточного сервера пересылки SPF мог бы пройти и разрешить прохождение электронной почты в любом случае, но, учитывая, что SPF здесь также не пройдет (так как вы не являетесь отправителем, прошедшим проверку подлинности), DMARC сообщает получателю о серьезном сбое, и тогда ваш экспедитор может получить сообщение об ошибке, например, из Gmail:
5.7.1 Не прошедшая проверку подлинности электронная почта с сайта example.com не принимается из-за политики домена DMARC.
Пожалуйста, свяжитесь с администратором домена example.com, если это была легальная почта.
Пожалуйста, посетите https://support.google.com/mail/answer/2451690, чтобы узнать об инициативе DMARC.
- gsmtp
Ключевой фразой здесь является неаутентифицированное электронное письмо, означающее, что электронная почта не имеет действительной подписи. Аутентифицированная электронная почта, с другой стороны, могла быть разрешена с вашего домена.
Вы можете проверить, является ли проблема недопустимой подписью DKIM, следующим образом:
$ pip install dkimpy # dkimpy supercedes pydkim
$ dkimpy -v < message.eml
Traceback (most recent call last):
File "/usr/sbin/dkimverify", line 10, in <module>
sys.exit(main())
File "/usr/lib/python/site-packages/dkim/dkimverify.py", line 41, in main
res = d.verify()
File "/usr/lib/python/site-packages/dkim/__init__.py", line 869, in verify
return self.verify_sig(sig, include_headers, sigheaders[idx], dnsfunc)
File "/usr/lib/python/site-packages/dkim/__init__.py", line 696, in verify_sig
(base64.b64encode(bodyhash), sig[b'bh']))
dkim.ValidationError: body hash mismatch (got b'...', expected b'...')
К сожалению, если это произойдет, у вас не будет больших возможностей в вашем распоряжении:
Отправьте отдельное сообщение об ошибке доставки с вашего собственного домена и включите исходное письмо в качестве вложения. Если вы сделаете это правильно, Gmail (и, возможно, другие получатели) могут фактически отобразить вложенное вложение в виде перенаправленного сообщения.
Замените адрес "От" своим собственным, затем подпишите свой собственный ключ DKIM.
Возможно, включите оригинальное письмо как приложение, чтобы получатель знал, что это было.Если получатель - вы, напишите сценарий для загрузки электронного письма и поместите его прямо в ваш почтовый ящик (скажем, через IMAP или напрямую с помощью API).
Сообщите владельцу домена и надейтесь, что он это исправит.
(Хотя, если они этого еще не сделали, удачи убедить их, проблема на их стороне.)