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

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

У меня есть веб-сервер, который был внесен в черный список для отправки электронной почты, потому что он отвечал на 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 параметр.