Назад | Перейти на главную страницу

Пересылать все исходящие письма exim в mailhog

Я пытаюсь ретранслировать все исходящие письма, отправленные из любого программного обеспечения через мой smtp exim4 на порту 25, на mailhog на порту 1025 на той же машине. Это возможно?

Я пытался:

 begin routers

 driver=manualrouter
 transport = mailhog
 route_list = * 127.0.0.1::1025
 domains = *

 mailhog:
 driver = smtp

и многое другое, но безуспешно.

Вы почти готовы, но параметры конфигурации должны применяться точно так, как они указаны в руководстве: даже небольшая опечатка приводит к совершенно другому результату, а у вас, похоже, здесь больше одной.

Вы, вероятно, следовали руководству вроде Exim с удаленным SMTP-сервером из ArchLinux Wiki.

В конце раздела Routers Configuration добавьте:

passonto_isp:
  driver = manualroute
  domains = !+local_domains
  transport = remote_smtp
  route_list = * smtp.myisp.com        # change to the desired smtp server

Убедитесь, что в Transports Configuration написано (без комментариев):

remote_smtp:
  driver = smtp

Хорошо, а в чем разница?

  • Самая первая строка, passonto_isp:. Вы должны указать маршрутизатор, прежде чем давать его настройки.
  • Пока пустое пространство в синтаксис общей опции необязательно, имя драйвера ручной маршрутизатор точно manualroute, т.е. без r в финале, как и у вас.
  • Вы действительно уверены, что хотите, чтобы это применялось и к локальным доменам? * vs. !+local_domains, где ! делает это отрицанием +local_domains, т.е. все, кроме локальных доменов.
  • У каждого облака есть лучшая сторона: вы избежали распространенной ошибки: в route_list ты не испортил разделитель списка хостов :, но использовал :: чтобы отделить порт от имени хоста.

    Поскольку двоеточие является разделителем по умолчанию для списка хостов, либо двоеточие, указывающее порт, должно быть удвоено, либо разделитель списка должен быть изменен. Следующие два примера имеют такой же эффект:

    route_list = * "host1.tld::1225 : host2.tld::1226" 
    route_list = * "<+ host1.tld:1225 + host2.tld:1226"
    
  • Вы указали transport = mailhog. Ваш mailhog: должен быть в transports раздел.

Результирующая конфигурация:

begin routers

passonto_mailhog:
  driver = manualroute
  domains = !+local_domains
  transport = mailhog
  route_list = * 127.0.0.1::1025

begin transports

mailhog:
  driver = smtp