Я пытаюсь ретранслировать все исходящие письма, отправленные из любого программного обеспечения через мой 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