Basicamente, o que eu quero fazer é reescrever o From: Header, usando header_checks, mas somente se o email for para um determinado domínio.
O problema com header_check é que não posso verificar se há uma combinação de Para: e De: Cabeçalhos.
Agora eu queria saber se era possível usar o header_checks em combinação com o smtpd_restriction_classes ou algo similar.
Encontrei muitas informações sobre header_checks e vários campos de cabeçalho ao pesquisar na rede.
Todos eles basicamente me dizendo, que não se pode combinar dois cabeçalhos para checar.
Mas eu não encontrei nenhuma informação se fosse possível fazer apenas uma checagem de cabeçalho se uma condição (por exemplo, e-mail for example.com) fosse atendida.
Editar :
Enquanto pesquisava mais, encontrei o seguinte artigo que sugere adicionar um serviço no postfix master.cf, use um transportmap para passar emails para o domínio para aquele serviço e ter um header_check separado definido com -o.
O problema é que não consigo fazer funcionar ...
O que eu fiz até agora é adicionar o serviço ao master.cf:
example unix - - n - - smtpd
-o header_checks=regexp:/etc/postfix/check_headers_example
Adicionando a seguinte linha ao mapa de transporte:
example.com example:
Por último, mas não menos importante, tenho dois arquivos regexp para verificações de cabeçalho, um para o serviço recém-adicionado e um para redirecionar as respostas para o domínio reescrito.
check_headers_example:
/From:(.*)@mydomain.ain>(.*)/ REPLACE From:[email protected]>$2
Obviamente, se alguém responder, o email irá para o nirvana, então eu tenho os seguintes check_headers definidos no processo principal de postfix:
/To:(.*)<(.*)@mydomain.example.com>(.*)/ REDIRECT [email protected]$2
De alguma forma, o transporte é ignorado.
Qualquer ajuda é apreciada.
Editar 2:
Eu ainda estou preso ... Eu tentei o seguinte:
smtpd_restriction_classes = header_rewrite
header_rewrite = regexp:/etc/postfix/rewrite_headers_domain
smtpd_recipient_restrictions = (some checks) check_recipient_access hash:/etc/postfix/rewrite_table, (more checks)
No rewrite_table
, existem as seguintes entradas:
/From:(.*)@mydomain.ain>(.*)/ REPLACE From:[email protected]>$2
Tudo isso me pega é um NOQUEUE: reject: 451 4.3.5 Server configuration error
. Não encontrei nenhum recurso sobre como você faria isso, mas algumas pessoas disseram que não era possível.
Editar 3:
A razão pela qual fiz esta pergunta foi que temos um cliente (digamos customer.com) que usa alguns aliases que encaminham e-mails para um domínio, digamos example.com.
O servidor de e-mail em example.com não aceita nenhum e-mail de um servidor externo proveniente de um remetente @ example.com.
Assim, todas as mensagens escritas de example.com para [email protected] serão rejeitadas no final.
Uma exceção no servidor de email do example.com não é possível.
Não resolvemos esse problema, mas tentamos contornar isso usando listas (mailman) em vez de aliases.
Isso não é muito legal, nem uma solução real.
Eu apreciaria todas as sugestões de como isso poderia ser feito de maneira adequada.