Похож Вы не загружаетесь mod_proxy_http
модуль (который необходим для проксирования к серверам HTTP). У меня нет Ubuntu 10.04 передо мной, но IIRC, как который это - что-то:
sudo a2enmod proxy_http
Как именно вы это реализуете, зависит от вас, но вы можете создать свой собственный транспорт, и этот транспорт может быть сценарием, демоном и т. Д.
Если бы вы могли сохранить туннель вверх, было бы очень просто, вы просто установите
domain2.com smtp: 127.0.0.1: 2000 (или любой другой порт, который вы назначили локально)
транспорт вверх.
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 будет временно отложить отправку электронной почты из-за Ошибка подключения
. Так что вы можете не беспокоиться о потере электронной почты.
Затем настройте 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