У меня есть сервер DigitalOcean, на котором работает Ubuntu 14.04. У меня проблемы с отправкой писем из PHP mail()
функция (которая использует sendmail
внутренне).
Я думаю, проблема может быть связана с моим hosts
файл config. Вот что у меня есть /etc/hosts
в данный момент:
127.0.0.1 localhost localhost.localdomain ip-xxx-xxx-xxx-xxx
И в etc/hostname
:
ip-xxx-xxx-xxx-xxx
(В двух вышеупомянутых я заменил цифры IP-адреса на x
)
Теперь у меня есть домен, указывающий на этот сервер, назовем его mydomain.com
.
Итак, когда мой сайт mydomain.com
отправляет электронное письмо, оно попадает в папку нежелательной почты. Я провел тест на https://www.mail-tester.com и одна из проблем, которые он выявляет:
Я пробовал добавить mydomain.com
к строке выше в hosts
файла, но это приводит к тому, что электронное письмо приходит через долгое время или вообще не приходит.
Вот заголовки Received:
Received: from localhost.localdomain (unknown [xxx.xxx.xxx.xxx])
(using TLSv1.2 with cipher xxx (256/256 bits))
(No client certificate requested)
by mail-tester.com (Postfix) with ESMTPS id xxx
for <test-xxx@mail-tester.com>; Mon, 29 Apr 2019 18:35:18 +0200 (CEST)
Received: from localhost.localdomain (localhost [127.0.0.1])
by localhost.localdomain (8.15.2/8.15.2/Debian-3) with ESMTP id xxx
for <test-xxx@mail-tester.com>; Mon, 29 Apr 2019 17:35:18 +0100
Received: from mydomain.com (www-data@localhost)
by localhost.localdomain (8.15.2/8.15.2/Submit) with SMTP id xxx
for <test-xxx@mail-tester.com>; Mon, 29 Apr 2019 17:35:18 +0100
Может кто-нибудь посоветовать, в чем может быть проблема и как ее исправить?
Никого не волнуют переходы внутри вашей инфраструктуры и количество проходящих локальных хостов. Но убедитесь, что ваш исходящий сервер говорит «Привет, я mail.domain.tld» вместо «Привет, я localhost.localdomain», потому что ни один правильно настроенный наполовину сервер не будет заинтересован в разговоре с неизвестными почтовыми серверами.
Я вижу в ссылках на заголовки, которые вы используете postfix(1)
для обработки исходящих писем. Ищите переменную myhostname
внутри твоего main.cf
(обычно находится в /etc/postfix
или /usr/local/etc/postfix
) и залейте как следует. Пример: myhostname=mail.domain.tld
(замените его именем вашего почтового сервера). Также убедитесь, что smtp_banner=
содержит как минимум $myhostname
лайк smtp_banner=$myhostname ESMTP Postfix
.
Видеть этот для дополнительной информации.