У меня есть веб-сервер, который был внесен в черный список для отправки электронной почты, потому что он отвечал на SMTP HELO
с участием localhost.localdomain
вместо доменного имени моего сервера (назовем его example.com
). Мне удалось заставить сервер ответить на HELO
с участием example.com
путем удаления localhost.localdomain
от моего /etc/hosts
файл. Однако теперь каждый раз, когда я пытаюсь отправить электронное письмо на адрес с тем же доменным именем, sendmail пытается доставить сообщение локально, а не отправлять его через SMTP на наш фактический почтовый сервер (который размещен в Rackspace).
Я последовал совету здесь: Почему sendmail принимает почту для имени хоста, которого нет в файле local-host-names? и побежал
echo '$=w' | sendmail -bt
И получил:
[mail]
[162.243.XX.XXX]
mail
[mail.example.com]
mail.example.com
localhost
[127.0.0.1]
example.com
Насколько я понимаю, sendmail считает все эти домены локальными. Я установил DontProbeInterfaces=True
в моем sendmail.cf
файл. Теперь, когда я бегу
sendmail -bt
$=w
Я получил:
localhost
[127.0.0.1]
example.com
Я также пробовал удалить example.com
из /etc/mail/local-host-names
, но sendmail все еще считает, что example.com
местный. Как я могу заставить sendmail прекратить попытки доставки локальной почты для example.com
адрес электронной почты?
РЕДАКТИРОВАТЬ:
echo '$j' | sendmail -bt
производит
example.com
РЕДАКТИРОВАТЬ:
Я попытался изменить имя хоста с example.com
к example
, но теперь мой SMTP HELO
ответ localhost
и отправка электронного письма занимает несколько минут. Согласно этому: https://www.digitalocean.com/community/questions/sendmail-is-slow-to-send-mail sendmail
надеется hostname
быть полным доменным именем, но мне сказали, что это должно никогда быть полным доменным именем. Что это?
Это у меня mail.log
:
Jul 28 16:40:01 localhost sm-msp-queue[1679]: My unqualified host name (localhost) unknown; sleeping for retry
Jul 28 16:41:01 localhost sm-msp-queue[1679]: unable to qualify my own domain name (localhost) -- using short name
Исправьте имя хоста вашего сервера. Ни один сервер не должен иметь имя хоста, равное голому доменному имени.; это лишь одна из многих проблем, которые возникают при этом.
В вашем случае Sendmail добавляет автоматически настроенное "имя этого хоста (электронной почты)" ($j
) в список локальных почтовых доменов ($=w
). Sendmail использует имя, указанное hostname --fqdn
.
Рекомендуемые исправления:
Не используйте "именованный домен" в качестве имени хоста (как предлагается в ответе Майкла)
ИЛИ
Измените имя, используемое sendmail, как "имя почты этого хоста"
После просмотра комментария @poige мое рассудок восстановилось:
удалять sendmail
. Установить postfix
. Здесь есть хороший учебник: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on-ubuntu-14-04
Затем отредактируйте /etc/postfix/main.cf
и удалите полное доменное имя из mydestination
параметр.