У меня возникают проблемы с настройкой функции canonical_maps
для исправления некоторых неправильных адресов унаследованного клиента. Вот ситуация и то, что я пробовал до сих пор:
Устаревший клиент (oldhost.legacy.org) не добавляет свой домен (legacy.org) к адресам в конверте или сообщению при отправке их через SMTP , Так, если пользователь вводит адрес, такой как guser@oldhost
, он выходит с SMTP как user@oldhost
вместо user@oldhost.legacy.org
.
Машина с постфиксом (newhost.standard.org
) имеет домен (standard.org
), отличный от прежней машины. Он также действует как MX и ретранслятор для домена oldhost.legacy.org
.
Когда сообщения от унаследованного клиента поступают на постфиксный компьютер с адресами, такими как guser@oldhost
(отсутствует .legacy.org
), я бы хотел переписать их так, чтобы они читали user@oldhost.legacy.org
. Насколько я понимаю, функция canonical_maps предназначена для этой цели.
В /etc/postfix/canonical.pcre
у меня есть:
/^(.*)@oldhost$/ $1@oldhost.legacy.org
Если я тестирую с: postmap –q
guser @ oldhost pcre:/etc/postfix/canonical.pcre
ответ: user@oldhost.legacy.org
. Совершенная.
В /etc/postfix/main.cf
у меня есть
canonical_maps = pcre:/etc/postfix/canonical.pcre
Затем, на устаревшем хосте, я отправляю сообщение, такое как:
To: user@someotherhost.domain
Cc: user@oldhost
Сообщение приходит на постфиксный компьютер, но строка CC не переписывается.
В документации для canonical_maps говорится, что для перезаписи заголовков клиент должен либо соответствовать local_header_rewrite_clients
, либо remote_header_rewrite_domain
должен быть ненулевым. Я пробовал оба, но ни один из них не выдает нужного мне результата.
Если я установлю local_header_rewrite_clients = static:all
или permit_mynetworks
или какую-либо другую опцию, которая вызовет совпадение унаследованного клиента, тогда опция append_dot_domain
вступит во владение и перезапишет адрес как user@oldhost.standard.org
. Каноническая таблица явно игнорируется.
Если я вместо этого оставлю local_header_rewrite_clients
по умолчанию (что не соответствует устаревшему клиенту) и включу remote_header_rewrite_domain = invalid.domain
, то адрес переписывается как user@oldhost.invalid.domain
, и снова каноническая таблица, по-видимому, игнорируется.
Таким образом, документация для канонической таблицы является верной, что перезапись происходит только в том случае, если local_header_rewrite_clients
соответствует клиенту или если установлено remote_header_rewrite_domain
. И переписывание действительно происходит. Но переписывание, которое происходит, полностью игнорирует каноническую таблицу.
Итак, как мне получить postfix, чтобы применить append_dot_domain
и append_at_myorigin
только к себе и применить каноническую таблицу к другим клиентам или, по крайней мере, сначала применить каноническую таблицу?