У меня есть крошечный домашний сервер за моим кабельным модемом (связь Bresnan). Я хочу, чтобы в этом поле можно было отправлять электронную почту (не получать) для уведомлений и прочего.
mail.bresnan.net
Как мой SMART_HOST
директива.Когда я пытаюсь отправить электронное письмо, в моем журнале электронной почты появляется следующее:
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: from=aburns,
size=140, class=0, nrcpts=1,
msgid=<201012221724.oBMHOHrs001530@bresnan.net>,
relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<aburns@bresnan.net>,
size=397, class=0, nrcpts=1,
msgid=<201012221724.oBMHOHrs001530@bresnan.net>,
proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
to=<my@work-address.com>, ctladdr=aburns (1000/1000),
delay=00:00:00, xdelay=00:00:00, mailer=relay,
pri=30140, relay=[127.0.0.1] [127.0.0.1],
dsn=2.0.0, stat=Sent (oBMHOHWZ001531 Message accepted for delivery)
Dec 22 10:24:18 batcave sm-mta[1517]: oBMH9mVv001357:
to=<my@work-address.com>, ctladdr=<aburns@bresnan.net>
(1000/1000), delay=00:14:30, xdelay=00:00:42, mailer=relay,
pri=300339, relay=pmx0.bresnan.net. [69.145.248.1],
dsn=4.0.0, stat=Deferred: Connection timed out with pmx0.bresnan.net.
Вы можете видеть, где сообщение принято для доставки моим сервером sendmail, а затем где оно пытается передать его на сервер bresnan, и у него истекает время ожидания.
Вот где мой вопрос. Внимательные читатели заметят, что pmx0.bresnan.net
это не то, что у меня есть SMART_HOST
директива установлена как. Это (снаружи?) MX
сервер для домена bresnan.com/net. По-видимому, у bresnan настроена их сеть так, что вы не можете получить доступ к этому серверу из своей собственной сети и вместо этого должны использовать mail.bresnan.net
сервер (к которому я могу подключиться). Проблема в том, что я не знаю, как сказать sendmail использовать этот сервер а не домен.
Опять же, props отправляется в webmin (см. Примечание ниже), чтобы помочь мне узнать это. Если вы вводите свой смарт-хост в квадратных скобках, что указывает sendmail не выполнять поиск MX, поэтому: define('SMART_HOST','[69.145.248.18]')
(Исправить кавычки-> обратные кавычки) действительно работает без таблицы почтовой программы.
Как указано ниже, создание mailertable
необходимо. Однако, как указано в страница руководства, эту функцию также необходимо включить в вашем sendmail.mc
файл.
Также обратите внимание, что маршрут почтовой программы не заставляет sendmail использовать указанный сервер для всех операций, он основан на адресе получателя. На самом деле это нормально для меня, так как мне нужно отправить только на несколько доменов (gmail, google hosted и моя работа).
Резюме:
FEATURE('mailertable')
на ваш sendmail.mc
файл. (обратите внимание, что первая цитата должна быть обратной кавычкой./etc/mail/mailertable
файл (см. страница руководства)sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
make -C /etc/mail
service sendmail restart
НОТА: я очень рекомендую использовать WebMin для редактирования / восстановления этих файлов. Без этого я бы сошел с ума, пытаясь понять, почему мой файл mailertable игнорируется.
Вы можете обойти поиск MX, добавив короткую запись в свой sendmail /etc/mail/mailertable
файл.
В содержимом файла, вероятно, должна быть одна строка вроде:
bresnan.net esmtp:[69.145.248.18]
Сохраните файл и перезапустите sendmail (или перестройте sendmail.cf, если это необходимо сделать вручную).