Прокси почта на другой smtp сервер с Postfix

11

Как переслать (или прокси) почту на разные SMTP-серверы в зависимости от адреса To?

У меня есть одна машина с сервером SMTP (postfix), прослушивающим порт 25. Я хочу использовать Lamson ( http://lamsonproject.org/ ) для обработки некоторой входящей почты и части почты, которую я хочу иметь для постфикса.

Моя идея - настроить Lamson для прослушивания другого порта, скажем, localhost: 10025. Затем я настраиваю postfix, чтобы перехватывать всю почту, прослушивая порт 25.

Как мне настроить Postfix для прокси определенной почты Lamson на 10025 и обрабатывать всю другую почту?

Маттиас
источник

Ответы:

18

Postfix чрезвычайно гибок (и, следовательно, сложен) в своей конфигурации, поэтому существуют различные способы достижения этого. Самый простой способ, вероятно, будет использовать transport(5)таблицу.

Во-первых, включите использование транспортной таблицы в postfix:

/etc/postfix/main.cf:
    transport_maps = hash:/etc/postfix/transport

Вы также должны убедиться, что Postfix принимает почту для адресов, которые будут обрабатываться Lamson. Ознакомьтесь с permit_auth_destinationправилами, которые Postfix будет применять для определения действительных адресов получателей. В следующем примере, если предположить, что «example.com» является доменом, неизвестным Postfix, вероятно, проще всего добавить его в качестве домена ретрансляции:

/etc/postfix/main.cf:
    relay_domains = example.com

Затем создайте соответствующую таблицу. Например, чтобы перенаправить всю почту для домена «example.com», а также почту для «user@mydomain.org» к вашему локальному Lamson, прослушивающему порт 10025:

/etc/postfix/transport:
    example.com          smtp:127.0.0.1:10025
    user@mydomain.org    smtp:127.0.0.1:10025

После этого (а затем один раз после каждого обновления файла транспортной таблицы) не забудьте выполнить:

$ postmap /etc/postfix/transport

Это должно помочь вам. Обязательно прочитайте transport(5)справочную страницу, которая даст вам больше идей о том, как использовать это мощное средство.

граф
источник
Привет, спасибо за совет. У меня все еще есть проблемы с доставкой почты после выполнения ваших инструкций. Я получаю NOQUEUE: reject: RCPT от {my-mail-relay} Адрес получателя отклонен: пользователь неизвестен в локальной таблице получателей. Есть идеи?
Маттиас
Ах, да, вам также нужно убедиться, что Postfix принимает почту для пересылки на example.com (поскольку Postfix теперь действует как ретранслятор для Lamson). Если ваш Postfix в основном обслуживает другой домен, самый простой способ добиться этого - добавить «домен Lamson» relay_domains. Я обновил, чтобы ответить, чтобы включить это.
граф
1
Спасибо, после выполнения ваших шагов, у меня все еще были некоторые проблемы с получением постфикса для распознавания localhost в качестве действительного хоста. Я запустил команду postconf -e 'smtp_host_lookup = dns, native', и это решило мою проблему: теперь postfix пересылает письмо, которое я хочу, Лэмсону.
Маттиас
1
Приятно слышать, что это работает. Вместо того, чтобы изменить smtp_host_lookup, вы также можете использовать 127.0.0.1вместо localhost. Я обновил ответ, чтобы учесть это улучшение.
граф