У меня настроен почтовый шлюз Postfix, и я хочу изменить адрес получателя. Я хочу, чтобы вся почта пересылалась на ceo@yahoo.com
вместо этого передается ceo@somewhere.org
Я настроил Postfix с помощью smtp_generic_maps
(как показано ниже), однако это работает только для почты, создаваемой на самом сервере Postfix. Любая почта, пересылаемая через сервер Postfix, по-прежнему отправляется ceo@yahoo.com
эффективно игнорируя smtp_generic_maps
. Какую конфигурацию мне следует изучить для этого?
# grep smtp_generic_maps main.cf
smtp_generic_maps = hash:/etc/postfix/generic
# postmap /etc/postfix/generic
# service postfix reload
# cat /etc/postfix/generic
ceo@yahoo.com ceo@somewhere.org
smtp_generic_maps
для этогоВ Readme для перезаписи адресов Postfix описывает правильное использование для smtp_generic_maps
:
С
smtp_generic_maps
параметр вы можете указать универсальный (5) таблицы поиска, которые заменяют локальные почтовые адреса действительными интернет-адресами, когда почта покидает машину через SMTP. В универсальный (5) отображение заменяет адреса конверта и заголовка и не является рекурсивным. Этого не происходит, когда вы отправляете почту между адресами на локальной машине.
Вы пытаетесь использовать его (вместо замены локальных адресов, например ceo@localdomain.local
) для замены адреса на полное доменное имя ceo@yahoo.com
. Так как yahoo.com
не настроен в mydestination
он не считается локальным доменом, поэтому не обрабатывается универсальный (5) отображение.
Однако вам не следует настраивать чужой домен в качестве локального, так как он действительно должен обрабатываться smtp (8) агент доставки вместо этого. Это предотвратит отправку почты любым пользователем @yahoo.com
адрес. Такое вмешательство было бы технически некорректным и, возможно, даже незаконным.
check_recipient_access
Если проблема в том, что кто-то пытается отправить электронное письмо вашему генеральному директору на адрес личного @yahoo.com
адрес, и вы хотите предотвратить это и принудительно использовать корпоративный адрес электронной почты ceo@example.com
вместо этого вы можете добавить check_recipient_access
ограничение на ваш main.cf
:
smtpd_recipient_restrictions =
...
check_recipient_access hash:/etc/postfix/denied_recipients,
...
permit
а затем добавьте отказ с понятной человеку причиной в /etc/postfix/denied_recipients
:
ceo@yahoo.com REJECT The CEO must be contacted using official <ceo@example.com> address.
(Как я использовал hash:
в моем примере не забудьте postmap /etc/postfix/denied_recipients
.)
Чтобы все ceo@yahoo.com
быть доставленным ceo@example.com
ты можешь использовать transport_maps
вместо того smtp_generic_maps
.
ОПИСАНИЕ
Необязательный транспорт (5) Таблица определяет сопоставление адресов электронной почты с механизмами доставки сообщений и местами назначения следующего перехода. Транспорты доставки сообщений, такие как local или smtp, определены в
master.cf
файл, а места назначения следующего перехода обычно являются хостами или доменными именами. Таблица просматривается тривиально-переписать (8) демон.Это сопоставление отменяет значение по умолчанию
transport:nexthop
выделение, встроенное в Postfix.
Добавить transport_maps
на ваш /etc/postfix/main.cf
:
transport_maps = hash:/etc/postfix/transport
А затем добавить к /etc/postfix/transport
одна строка для ceo@yahoo.com
изменение значения по умолчанию transport:nexthop
к virtual:ceo@example.com
:
ceo@yahoo.com virtual:ceo@example.com
yahoo.com :
* :
В других строках просто указано, что никаких изменений для yahoo.com
а остальные, возвращаясь к значениям по умолчанию transport:nexthop
поведение.