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

Как замаскировать домен Sendmail и заставить DKIM использовать правильный домен

У меня один домен с десятком поддоменов для разных сайтов. У каждого есть отдельный виртуальный хост в apache.

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

К сожалению, поля заголовка DKIM d = и i = показывают субдомен. Поскольку запись DNS хранится в домене верхнего уровня, проверка DKIM не выполняется.

Как мне указать DKIM использовать домен верхнего уровня?

Пожалуйста помоги.

p.s. Я перепробовал все точки зрения на это, и я в тупике. Я не могу понять, как Sendmail сообщает DKIM, какой субдомен использовать. И я не могу понять, как PHP сообщает Sendmail, какой субдомен используется. Я попытался настроить $ _SERVER ['SERVER_NAME'], чтобы переопределить его непосредственно перед отправкой почты, но это не дало результата. Я не могу придумать ни одного решения.

Проблема связана с переписыванием заголовков и обсуждается здесь: https://serverfault.com/questions/442180/sendmail-rewriting-headers-after-opendkim-signature

Одно из предлагаемых решений - установить правильные заголовки в PHP, чтобы sendmail передавала правильную информацию о домене и не требовала перезаписи.

В моем случае я понял, что это означает, что установка $ _SERVER ['SERVER_NAME'] - это правильное решение, которое можно легко исправить. Я упомянул, что это не сработало для меня, потому что я думал, что Sendmail игнорирует значение. Но я попробовал еще раз и заметил, что Sendmail ДЕЙСТВИТЕЛЬНО распознает значение из $ _SERVER ['SERVER_NAME']. Проблема, о которой я раньше не подозревал, заключалась в том, что у меня был неправильно настроен фильтр DKIM.

В dkim-filter.conf у меня была строка: Domain * .mydomain.com

Когда Sendmail получил "mydomain.com" в информации заголовка и вызвал DKIM-Milter, DKIM не смог найти совпадение, потому что "mydomain.com" явно не соответствует * .mydomain.com. Я изменил * .mydomain.com на mydomain.com, и все заработало.

Поэтому все, что мне нужно сделать на всех моих сайтах, - это установить $ _SERVER ['SERVER_NAME'] = 'mydomain.com' перед вызовом mail () или wp_mail () (для WordPress). Тогда все работает.