Estou com dificuldades para conseguir que a função canonical_maps
funcione conforme necessário para reparar alguns endereços incorretos de um cliente legado. Aqui está a situação e o que eu tentei até agora:
Cliente legado (oldhost.legacy.org) não anexa seu domínio (legacy.org) a endereços no envelope ou a mensagem ao enviá-los via SMTP. Portanto, se o usuário digitar um endereço como guser@oldhost
, ele sairá como SMTP como user@oldhost
em vez de [email protected]
.
A máquina com postfix ( newhost.standard.org
) tem um domínio diferente ( standard.org
) da máquina herdada. Ele também atua como MX e retransmite para o domínio oldhost.legacy.org
.
Quando as mensagens do cliente legado chegam à máquina de pós-postagem com endereços como guser@oldhost
(faltando .legacy.org
), gostaria de reescrevê-las para ler [email protected]
. Entendo que a função canonical_maps é destinada para esse propósito.
Em /etc/postfix/canonical.pcre
tenho:
/^(.*)@oldhost$/ [email protected]
Se eu testar com: postmap –q
guser @ oldhost pcre:/etc/postfix/canonical.pcre
a resposta é: [email protected]
. Perfeito.
Em /etc/postfix/main.cf
tenho
canonical_maps = pcre:/etc/postfix/canonical.pcre
Em seguida, no host herdado, envio uma mensagem como:
To: [email protected]
Cc: user@oldhost
A mensagem chega à máquina postfix, mas a linha CC não é reescrita.
A documentação para canonical_maps diz que, para que os cabeçalhos sejam reescritos, o cliente precisa corresponder ao local_header_rewrite_clients
ou senão o remote_header_rewrite_domain
deve ser não nulo. Eu tentei os dois, mas nenhum deles produz a saída que eu preciso.
Se eu definir local_header_rewrite_clients = static:all
ou permit_mynetworks
ou alguma outra opção que cause uma correspondência do cliente herdado, a opção append_dot_domain
assumirá e reconfigurará o endereço como [email protected]
. A tabela canônica é aparentemente ignorada.
Se, em vez disso, eu deixar o local_header_rewrite_clients
em seu padrão (que não corresponde ao cliente herdado) e ativar remote_header_rewrite_domain = invalid.domain
, o endereço será reconfigurado como [email protected]
e, mais uma vez, a tabela canônica será ignorada.
Portanto, a documentação da tabela canônica está correta, pois a regravação ocorre apenas se o local_header_rewrite_clients
corresponder ao cliente ou se remote_header_rewrite_domain
estiver definido. E as reescritas estão de fato ocorrendo. Mas a reescrita que ocorre completamente ignora a tabela canônica.
Então, como faço para que o postfix aplique o append_dot_domain
e o append_at_myorigin
apenas a si mesmo e aplique a tabela canônica a outros clientes ou, pelo menos, aplique a tabela canônica primeiro?