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

Настройки sendmail, exim или php для предотвращения «Адрес отправителя отклонен: домен не найден» на vps

У меня есть VPS с настройкой нескольких доменов. У некоторых доменов есть сайты PHP, которые отправляют электронную почту. Оказывается, некоторые почтовые серверы отклоняют эти письма с ошибкой: «Адрес отправителя отклонен: домен не найден» (это из журналов в exim_mainlog на сервере).

Интересно то, что домен, который он использует в качестве отправителя, не тот, который я установил в php mail (), а скорее внутреннее имя сервера.

Так, например, если мой главный домен VPS - mymasterdomain.com, и у меня есть несколько сайтов, таких как site1.com, site2.com и т. Д., Тогда программа php, которая отправляет электронное письмо, отправит электронное письмо с полем from, установленным в заголовке, на: webapp@site1.com, но письмо будет отклонено с пометкой «Адрес отправителя отклонен: домен не найден в site1cpanelaccount@com.mymasterdomain.com».

com.mymasterdomain.com - это то, как хостинговая компания идентифицирует мой VPS-сервер внутри себя, и, очевидно, это ни к чему не приводит.

Записи SPF настроены правильно и включают IP-адрес сайта. Я провел тест, используя php, чтобы отправить одно и то же письмо на два адреса. Один отклоняет его, но другой в учетной записи Gmail принимает его, что позволяет мне смотреть на заголовки.

Я вижу проблему - в заголовках есть:


Получено: от cpanelSite1Account пользователем com.mymasterdomain.com с локальным (Exim 4.91) (исходящим из конверта) идентификатором 1fWXCF-0006ED-Vv; Пт, 22 июн 2018 09:37:56 -0500

Кому: something@somewhere.com

Тема: ПОЛУЧЕН НОВЫЙ ЗАПРОС

X-PHP-Script: www.site1.com/inquire_process.php для XXX.XXX.XXX.XXX

X-PHP-Исходный-Скрипт: 522: inquire_process.php

От: webapp@site1.com


[От:] правильный, но [Получено: от] содержит информацию о VPS, которая вызывает у меня проблемы.

Как это исправить? В php? в cpanel? в настройках sendmail или exim? Любая помощь будет оценена по достоинству - я уже некоторое время царапал меня ...

Вот что, вероятно, происходит:

  1. Принимающий MTA проверяет наличие на отправитель конверта вместо того From: заголовок.
  2. Sendmail, вызываемый PHP mail() функция использует account@server.example.com как отправитель конверта, а webapp@example.net в заголовки параметр mail(to,subject,message,headers,parameters); используется только для создания заголовков писем.
  3. Sendmail получает собственное имя хоста от первого хоста, найденного для себя в /etc/hosts.

Вы можете исправить это на любом уровне (решения в соответствующем порядке, сначала не лучшие):

  1. Сделайте домен / имя хоста, используемое в качестве отправителя конверта, существующим, добавив A запись.
  2. Используйте дополнительные параметр чтобы передать Sendmail отправителя конверта:

    mail('to@example.org','subject','message',
         'From: webapp@example.net',
         '-f webapp@example.net');
    

    Из man sendmail:

    -f sender
    

    Установите адрес отправителя конверта. Это адрес, на который отправляются проблемы с доставкой.

  3. Добавьте существующее имя хоста в свой /etc/hosts линия для 127.0.0.1 или фактический IP-адрес сервера. Это должно быть A запись из существующего домена, указывающая на ваш сервер.

Я думаю, что решение №2 ближе всего к вашей цели, а решение №1 и №3 может решить стоящую за ним проблему.