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 consigo verificar uma combinação de To: e From: Headers.
Agora eu queria saber se era possível usar header_checks em combinação com smtpd_restriction_classes ou algo semelhante.
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 é possível combinar dois cabeçalhos para verificação. Mas não encontrei nenhuma informação se fosse possível fazer uma verificação de cabeçalho apenas se uma condição (por exemplo, o e-mail vai para exemplo.com) fosse atendida.
Editar:
Ao fazer mais pesquisas, descobri o seguinteartigoque sugere adicionar um serviço no postfix master.cf, usar um transportmap para passar e-mails do domínio para esse serviço e ter um header_check separado definido com -o.
O problema é que não consigo fazer funcionar...
O que fiz até agora foi 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 outro 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 e-mail irá para o nirvana, então tenho os seguintes check_headers definidos no processo principal do postfix:
/To:(.*)<(.*)@mydomain.example.com>(.*)/ REDIRECT [email protected]$2
De alguma forma, o Transporte é ignorado. Qualquer ajuda é apreciada.
Editar 2:
Ainda estou preso... 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)
Nas rewrite_table
seguintes entradas existem:
/From:(.*)@mydomain.ain>(.*)/ REPLACE From:[email protected]>$2
Tudo o que me dá é um NOQUEUE: reject: 451 4.3.5 Server configuration error
. Não consegui encontrar 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 essa pergunta foi porque temos um cliente (digamos customer.com) que usa alguns aliases que encaminharão mensagens 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.
Portanto, todos os e-mails escritos de example.com para[e-mail protegido]será rejeitado no final.
Uma exceção no servidor de e-mail de example.com não é possível.
Na verdade, não resolvemos esse problema, mas tentaremos contorná-lo usando listas (mailman) em vez de aliases. Isso não é muito bom, nem uma solução real.
Eu apreciaria todas as sugestões de como isso poderia ser feito de maneira adequada.
Responder1
Não tenho certeza se você conseguiu o que queria. Eu estava testando algo semelhante, precisava de filtragem de palavras-chave, etc. por domínio e consegui usar header_checks por domínio ou para os domínios que eu queria usando o recurso de múltiplas instâncias do postfix.
Você cria uma instância, basta alterar a porta SMTP nessa instância específica. Você usa transport_maps na instância primária para rotear emails de um domínio específico para a porta smtp da instância secundária. E faça todas as header_checks lá e retransmita o e-mail!
Saúde!
Responder2
Você pode configurar um novo servidor, rotear todos os domínios que deseja processar usando o arquivo de transporte e, em seguida, aplicar regras header_checks no novo servidor.