Это первый раз, когда я начинаю писать более сложный постфикс, так как ненавижу настраивать параметры почты, не зная, что делать. Но прямо сейчас я обязан это сделать.
Здесь настройка:
По внутренним причинам я должен настроить ретранслятор 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;
Это очень стандартная и типичная установка. 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 документация.