Назад | Перейти на главную страницу

Пересылать электронную почту на другие серверы, если получатель не существует на карте псевдонимов

Это первый раз, когда я начинаю писать более сложный постфикс, так как ненавижу настраивать параметры почты, не зная, что делать. Но прямо сейчас я обязан это сделать.

Здесь настройка:

По внутренним причинам я должен настроить ретранслятор postfix следующим образом:

Если получатель электронного письма не существует на карте псевдонимов, но есть домен получателя, postfix отправит его на настоящий почтовый сервер.

Хорошо, это звучит странно, но я привожу вам пример.

Запись MX для example.com установлена ​​на ProxyHost, но реальный почтовый сервер со всеми учетными записями доступен через external.example.com

В mysql у меня есть setup redirect@example.com, который нужно перенаправить на my@example.net. Это работает прямо сейчас.

Но если я отправляю письмо на any@example.com где без разницы НЕ находится в локальной таблице пересылки mysql, но, как вы можете видеть example.com я бы хотел пересылать почту на настоящий почтовый сервер. Настоящая информация о сервере находилась в таблица доменов в столбец realmx.

Мне это не очень тяжело, но я не могу с этим справиться. Прямо сейчас все письма на any@example.com просто получают отказ.

Предупреждение: непроверенный запрос | не проверенная установка.
Поскольку вы предоставили мало информации о своей настройке, я предполагаю, что вы задали псевдоним через virtual_alias_maps.

Первая проблема позволяет избежать отказа. Решение определить relay_domains с картами mysql

relay_domains = mysql:/etc/postfix/relay_domains

с частью запроса

SELECT 1 FROM forwarding WHERE email LIKE '%%@%s' LIMIT 1;

Вторая проблема перенаправляет электронную почту на область. Решение определить transport_maps с картами mysql, объединяющими переадресацию и таблицу доменов

relay_domains = mysql:/etc/postfix/relay_domains

с частью запроса

SELECT domain.realmx FROM domain INNER JOIN forwarding ON email LIKE CONCAT ('%',domain.domain) WHERE domain.domain = '%d' LIMIT 1;

Скрипка SQL.

Это очень стандартная и типичная установка. Postfix работает на внешнем сервере, принимает почту и передает ее на сервер, имеющий почтовый ящик:

world -> smtp.example.com -> imap.example.com

На ваше smtp сервер (который вы называете ProxyHost но я не буду использовать этот термин, поскольку на самом деле это не прокси в общем использовании термина), вы будете использовать следующие конфигурации (вам нужно будет настроить свой точный сценарий, это общие рекомендации):

mydestination = localhost
transport_maps = hash:/etc/postfix/transport
relay_domains = example.com
relay_recipient_maps = hash:/etc/postfix/relay_recipients

/etc/postfix/relay_recipients будет содержать список действительных получателей.

/etc/postfix/transport отобразит пункт назначения для конечного пункта назначения почты.

Полную документацию и полное объяснение каждой приведенной выше конфигурации можно найти в прекрасном руководстве по Postfix. Начнем с relay_domains документация.