Google обнаруживает, что DMARC не подписан

У меня проблема на моем сервере:

  • Домен example.com для отправки электронной почты, и у меня есть веб-сайт на php
  • Сервер server.example.com
  • Сервер example2.com.mx для отправки электронной почты через систему на php

Example.com и example2.com.mx - это домены с server.example.com , когда я отправляю электронное письмо с учетной записью account@example.com в Gmail пройти и показать подписанный DKIM, но когда я пытаюсь отправить электронное письмо из php-формы в example2.com.mx с адресом электронной почты account@example.com Отказ DKIM показывает, что учетная запись используется для входа, но не подписана.

Система в example2.com.mx имеет фреймворк php и Zend 1, а server.example.com имеет WHM centos 6 и Cpanel в доменах example.com и example2.com

И Gmail возвращает это, например, в письмо с php:

dmarc = fail (p = NONE sp = NONE dis = NONE) header.from = example.com

Надеюсь, вы можете мне помочь
Спасибо: D

0
задан 4 January 2018 в 21:54
1 ответ

Давайте разберемся с этим, поскольку здесь на вас работают несколько различных компонентов.

Если я правильно понимаю, все электронные письма имеют адрес электронной почты @ example.com (независимо от того, какой сервер их отправляет), поэтому мои элементы ниже настроены для отправки с @ example.com

Кроме того, ваша настоящая проблема, похоже, связана с DKIM (поскольку вы получаете электронное письмо, просто не видите его как подписанное) . Я включаю другие вещи, которые нужно очистить, которые помогут вам в долгосрочной перспективе.


DKIM

Поскольку вы заметили, что иногда вы получаете сообщения в Gmail, в которых говорится, что они подписаны DKIM, я предполагаю, что у вас есть часть селектора верна и сервер исходящей почты правильно добавляет подписи DKIM к вашим исходящим сообщениям. Проблема звучит так, будто у вас нет сервера исходящей почты для настройки веб-страницы PHP для подписи DKIM. Самый простой способ - заставить ваш веб-сервер отправлять электронную почту через тот же почтовый сервер, который вы используете для почтовых ящиков; они уже доказали, что правильно подписывают сообщения, и это позволит объединить ваш почтовый поток в единый маршрут.

Это важно, потому что DKIM - единственная часть этой настройки, которая требует от вас изменения потока почты. SPF и DMARC - это инструкции на основе DNS для принимающих серверов, в которых рассказывается, как проверять и обрабатывать поддельную почту, якобы отправленную из вашего домена. DKIM фактически изменяет почту с ваших серверов, так что есть доказательства, что она на 100% исходит от вас. Если в отправляемом электронном письме нет заголовков подписи DKIM, значит, исходящие электронные письма подписываются неправильно, и DMARC позже не сработает.

Ваши текущие записи DKIM в DNS немного большие, на самом деле похоже, что вы включаете некоторые элементы, которые предназначены для заголовков почты, а не для DNS; и у вас плохое значение для флага тестирования с "t = s". Для большей части всего, для чего вам нужен DKIM, запись DNS очень проста; например, всего 2 или 3 элемента, версия DKIM и открытый ключ (и, возможно, флаг тестирования). Кроме того, для флага тестирования установлено значение « t = y », иначе вы столкнетесь с проблемами.

Поскольку мы все еще тестируем это, я включу флаг test , но обязательно удалите его, когда все заработает.

Для тестирования

com.example._domainkey.selector TXT "v = DKIM1; t = y; p = [публичный ключ подписи DKIM]"

Для производства (удалите флаг тестирования)

com.example._domainkey.selector TXT "v = DKIM1; p = [общедоступный ключ подписи DKIM]"

Все остальное не нужно, поэтому давайте немного очистим это. Все, что делает запись DNS, - это дает всему миру копию вашего закрытого ключа, чтобы он мог проверить подпись самостоятельно. (и указывается, что этот домен все еще тестирует DKIM, поэтому не отклоняйте сообщение только потому, что оно не прошло проверку DKIM)

Записи DKIM относятся к домену в строке «От» сообщения электронной почты. Итак, если ваша почта приходит ОТ @ example.com, то будет использоваться именно DKIM.


SPF

Структура политики отправителя определяет, каким серверам разрешено отправлять электронные письма, которые утверждают, что они исходят из вашего домена. У вас есть несколько элементов, перечисленных в вашей записи SPF, которые обычно не используются в сильной настройке. Также существует общая синтаксическая ошибка: вы используете слишком много символов «+». Знак "+" перед каждым элементом не нужен. Фактически, учитывая ваши записи, вам не нужен знак «+» в ваших записях SPF, избавьтесь от них.

  • mx : это означает, что любой из серверов, которые могут получать почту для домен (почтовые обменники) также могут отправлять исходящую почту из вашего домена. Этот элемент довольно распространен , особенно в небольших почтовых системах.
  • a : Этот элемент меня немного беспокоит. Этот элемент говорит, что «все, что имеет A-запись в моем домене, может отправлять электронную почту из моего домена». Обычно это слишком разрешительно и может позволить отправлять слишком много вещей (буквально любой хост в вашем DNS). Я бы подумал об удалении этого элемента, если он вам не нужен.
  • ip4 : Этот элемент прост. Разрешить этому IP-адресу отправлять электронную почту для этого домена. Если у вас есть статические IP-адреса, которые никогда не должны меняться, тогда это достойный способ. Если вы перечисляете IP-адреса всех авторизованных служб отправки, то вам не нужны элементы a или mx , поскольку они будут избыточными.
  • include : Этот элемент означает, что вы хотите использовать запись SPF, расположенную по адресу, прикрепленному к элементу include. Это используется только тогда, когда у вас есть хорошая установка SPF где-то еще и вам нужно добавить ее в другие места. Чаще всего это наблюдается, когда вы используете стороннего поставщика электронной почты (O365 / Outlook / Hotmail, Google Apps, Yahoo for Biz и т. Д.) И настраиваете свой домен, чтобы их серверы могли отправлять сообщения от имени вашего пользователя. Это также полезно, если вы используете компанию электронного маркетинга для рассылки массовых рассылок от вашего имени. Я считаю крайне маловероятным, что вам понадобятся включения с 4 разных почтовых хостов, вам, вероятно, следует удалить большинство из них, если не все. (если вы используете один из этих хостов, убедитесь, что используете ТОЧНОЕ включение, которое они дают в своих инструкциях.)
  • -all : Это важная запись. Это специальный подстановочный знак «все», измененный на «-». Это означает, что все, что не соответствует ни одной из предыдущих записей, должно быть отклонено и заблокировано. Это индикатор полного отказа , и его удобно использовать, если у вас все работает так, как вы хотите. * Если вы уже используете этот домен для электронной почты и только что настраиваете SPF (или DMARC), вы можете временно использовать индикатор «~» soft-fail . При этом электронные письма будут доставлены (хотя они могут быть помечены как подозрительные или пройти дополнительное обнаружение спама из-за программного сбоя). После того, как все настроено и работает так, как вы хотите, вернитесь к жесткой ошибке «-». *

Не зная ваших доменов, я не могу проверить ваши a и mx записи через DNS. Но поскольку у вас в списке есть большое количество элементов IPv4, я бы упростил записи SPF до примерно следующего:

Для тестирования

com.example. TXT "v = spf1 ip4: [IP-адрес сервера, отправляющего электронные письма] ip4: [IP-адрес server.example2.com.mx] ~ all"

Для производства (отклонение сообщений не с ваших серверов)

com .пример. TXT "v = spf1 ip4: [IP-адрес сервера, отправляющего электронные письма] ip4: [IP-адрес server.example2.com.mx] -all"

У вас может быть несколько элементов ip4:, если вам нужны дополнительные IP-адреса ( больше серверов или добавленные интерфейсы на сервере).

Важной частью здесь является то, что запись TXT для SPF создается в DNS для домена , из которого поступает почта. А элементы ip4: SPF указывают IP-адреса серверов, которым будет разрешено отправлять почту. Они не обязательно должны быть серверами для одного и того же домена, но они должны быть всеми IP-адресами, которым разрешено отправлять электронную почту для этого домена.


DMARC

DMARC является особенным, поскольку он не выполняет никаких функций. проверка действительности электронного письма, он просто сообщает другому серверу, как обрабатывать электронные письма, если они не проходят проверку SPF или DKIM.

Похоже, ваша запись DMARC говорит серверам никогда не отклонять и не помещать сообщения в карантин, даже если они не прошли проверку (" p = none; sp = none ") часть команды. Это хорошо для тестирования, если вы не забудете включить его на ступеньку выше, когда закончите тестирование.

Кроме того, элементы выравнивания идентификаторов DKIM и SPF записи по умолчанию установлены на «расслабленный» (рекомендуемый параметр), чтобы вы могли оставьте их, чтобы немного упростить. В остальном это выглядит неплохо.

Для тестирования

com.example._dmarc TXT "v = DMARC1; p = none; sp = none; pct = 100;"

Для производства (с жесткими отказами отказы "

com.example._dmarc TXT" v = DMARC1; p = reject; sp = reject; pct = 100; "

0
ответ дан 5 December 2019 в 06:53

Теги

Похожие вопросы