У меня есть крошечный домашний сервер, установленный за кабельным модемом (Bresnan Communications). Я хочу иметь возможность для этого ящика отправлять электронную почту (не получать) для уведомлений и еще много чего.
Что я уже сделал:
- Я установил и настроил sendmail.
- Я добавил в
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, и время его ожидания истекло.
Вот где мой вопрос. Читатели Asstute заметят, что pmx0.bresnan.net
это не то, чем я руководствуюсь SMART_HOST
. Это (внешний?) MX
Сервер для домена bresnan.com/net. Очевидно, сеть bresnan настроена так, что вы не можете получить доступ к этому серверу из своей собственной сети, и вместо этого должны использовать mail.bresnan.net
сервер (к которому я могу подключиться). Проблема в том, что я не знаю, как сказать sendmail использовать этот сервер, а не домен .
Что я пробовал
- Установка записи hosts так, чтобы сервер pmx0 указывал на почтовый IP-адрес. Это не работает, что имеет смысл, поскольку sendmail, очевидно, выполняет запрос MX, чтобы найти сервер, который возвращает IP-адрес, поэтому никогда не требуется выполнять «нормальное» разрешение DNS, чтобы файл hosts никогда не включался.
Исправление (для всей исходящей почты):
Опять же, реквизиты переходят к webmin (см. Примечание ниже) за помощь в изучении этого. Если вы вводите ваш smarthost в квадратных скобках, который указывает sendmail не выполнять поиск MX, то: define('SMART_HOST','[69.145.248.18]')
(Исправьте кавычки-> обратные пометки) фактически работает без таблицы отправителя.
Исправление (для определенных доменов):
Как указано ниже, настройка a 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
- Перезапустите sendmail:
service sendmail restart
ПРИМЕЧАНИЕ. Я настоятельно рекомендую использовать WebMin для редактирования / перестройки этих файлов. Без этого я бы сошел с ума, пытаясь выяснить, почему мой почтовый файл игнорировался.
Ответы:
Вы можете обойти поиск MX, добавив короткую запись в свой
/etc/mail/mailertable
файл sendmail .Содержимое файла должно содержать одну строку:
Сохраните файл и перезапустите sendmail (или перестройте ваш sendmail.cf, если это необходимо сделать вручную).
источник