Прокси почта на другой 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. Я обновил ответ, чтобы учесть это улучшение.
— граф
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.