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

11

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

ErebusBat
источник
Можем ли мы увидеть ваш sendmail.mc?
Жаворонки
Когда вы внесли изменения в файл конфигурации sendmail.mc, перезапускали ли вы sendmail после каждого изменения?
Ewwhite

Ответы:

7

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

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

bresnan.net       esmtp:[69.145.248.18]

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

ewwhite
источник
2
Ваш ответ был правильным; Однако мне пришлось предпринять некоторые дополнительные шаги. Для других, сталкивающихся с этой проблемой, см. Мое редактирование выше.
ErebusBat