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

Как настроить 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=<[email protected]>, 
  relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<[email protected]>, 
  size=397, class=0, nrcpts=1,
  msgid=<[email protected]>,
  proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
  to=<[email protected]>, 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=<[email protected]>, ctladdr=<[email protected]>
  (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 использовать этосервери недомен.

Что я пробовал

  • Настройка записи hosts так, чтобы сервер pmx0 указывал на почтовый IP-адрес. Это не работает, что имеет смысл, так как sendmail, очевидно, делает запрос MX, чтобы найти сервер, который возвращает IP, поэтому нет необходимости делать «нормальное» разрешение DNS, поэтому файл hosts никогда не будет задействован.

Исправление (для всей исходящей почты):

Опять же, props обращается к webmin (см. примечание ниже) за помощь в изучении этого. Если вы введете свой smarthost с квадратными скобками, это предписывает sendmail не выполнять поиск MX, так: define('SMART_HOST','[69.145.248.18]')(исправьте кавычки->обратные кавычки) на самом деле работает без таблицы почтовой программы.

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

Как указано ниже, требуется настройка mailertable. Однако, как указано встраница руководства, эту функцию также необходимо включить в вашем sendmail.mcфайле.

Также обратите внимание, что маршрут почтовой программы не заставляет sendmail использовать указанный сервер для всех операций, он основан на адресе получателя. Это на самом деле нормально для меня, так как мне нужно отправлять только на несколько доменов (gmail, google hosted и my work).

Краткое содержание:

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

решение1

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

Содержимое файла, вероятно, должно состоять из одной строки, например:

bresnan.net       esmtp:[69.145.248.18]

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

Связанный контент