У меня есть 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? Любая помощь будет оценена по достоинству - я уже некоторое время царапал меня ...
Вот что, вероятно, происходит:
From:
заголовок.mail()
функция использует account@server.example.com
как отправитель конверта, а webapp@example.net
в заголовки параметр mail(to,subject,message,headers,parameters);
используется только для создания заголовков писем./etc/hosts
.Вы можете исправить это на любом уровне (решения в соответствующем порядке, сначала не лучшие):
A
запись.Используйте дополнительные параметр чтобы передать Sendmail отправителя конверта:
mail('to@example.org','subject','message',
'From: webapp@example.net',
'-f webapp@example.net');
Из man sendmail
:
-f sender
Установите адрес отправителя конверта. Это адрес, на который отправляются проблемы с доставкой.
Добавьте существующее имя хоста в свой /etc/hosts
линия для 127.0.0.1
или фактический IP-адрес сервера. Это должно быть A
запись из существующего домена, указывающая на ваш сервер.
Я думаю, что решение №2 ближе всего к вашей цели, а решение №1 и №3 может решить стоящую за ним проблему.