Postfix: Como aplicar header_checks apenas para domínios específicos?

Postfix: Como aplicar header_checks apenas para domínios específicos?

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_tableseguintes 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.

informação relacionada