У меня есть сервер Postfix, и я использую его с Outlook (POP / SMTP).
У меня разные адреса отправителя в аккаунте. Теперь я хочу настроить реле для определенного адреса отправителя. Например, у меня есть постфикс для моего основного домена domain1.com. Теперь у меня есть адрес отправителя domain2.com.
Для этого адреса отправителя я хочу, чтобы этот постфикс перенаправлял почту на второй SMTP-сервер. Я думаю, это должно быть возможно без проблем.
Но проблема в том, что мне нужно создать SSH-туннель ко второму серверу, чтобы подключиться к SMTP-серверу. Но я не могу использовать постоянное соединение SSH, поэтому я хочу знать, возможно ли, что postfix выполнит какой-то скрипт перед пересылкой почты на второй SMTP-сервер.
Я уже нашел некоторую информацию для выполнения сценария при отправке писем, но я хочу только установить SSH-туннель до того, как postfix отправит почту на второй SMTP-сервер.
Postfix не поддерживает перехват сценария при доставке. Чтобы обойти это, вы можете настроить crontab
выполнить специальный скрипт. Этот сценарий будет:
Во-первых, определите sender_dependent_relayhost_maps с правым значением, которое является вашим туннельным портом (например, порт 2525).
#/etc/main.cf
sender_dependent_relayhost_maps = hash:/etc/postfix/sshtunnel
#/etc/postfix/sshtunnel
domain2.com smtp:[127.0.0.1]:2525
Когда туннель не был подключен, postfix будет временный отложить электронное письмо из-за Connection refused
-ошибка. Так что вам не нужно беспокоиться о потере электронного письма.
Затем настройте crontab для выполнения вышеуказанного скрипта. Вот псевдоскрипт для достижения этих целей. Небольшая модификация от этот оригинальный сценарий.
#!/bin/sh
#setup ssh tunnel. modify the parameter for your needs
ssh -L 2525:localhost:25 user@remote.example.com
# Start mail deliveries.
/usr/sbin/sendmail -q
# Allow deliveries to start.
sleep 10
# Loop until all messages have been tried at least once.
while mailq | grep '^[^ ]*\*' | grep domain2.com >/dev/null
do
sleep 10
done
Как именно вы его реализуете, зависит от вас, но вы можете создать свой собственный транспорт, и этот транспорт может быть сценарием, демоном и т. Д.
Если бы вы могли поддерживать туннель, было бы легко, вы бы просто установили
domain2.com smtp: 127.0.0.1: 2000 (или любой другой порт, который вы назначили локально)
транспортировать вверх.