Как настроить sendmail для ретрансляции через определенный сервер

У меня есть крошечный домашний сервер, установленный за кабельным модемом (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]') (Исправьте кавычки->backticks) на самом деле работает без таблицы почтовой программы.

Исправление (для определенных доменов):

Как указано ниже, настройка 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 для редактирования / перестройки этих файлов. Без этого я бы сошел с ума, пытаясь выяснить, почему мой почтовый файл игнорировался.

1 ответ

Решение

Вы можете обойти поиск MX, добавив короткую запись в ваш sendmail /etc/mail/mailertable файл.

Содержимое файла должно содержать одну строку:

bresnan.net       esmtp:[69.145.248.18]

Сохраните файл и перезапустите sendmail (или перестройте ваш sendmail.cf, если это необходимо сделать вручную).

Другие вопросы по тегам