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

2

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.

    
por Lukas 23.11.2011 / 11:54

1 resposta

2

Não sei se você conseguiu o que queria. Eu estava testando uma coisa semelhante, precisava de filtragem de palavras-chave, etc por domínio e era capaz de 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, apenas altera a porta smtp nessa instância específica. Você usa transport_maps na instância principal para rotear emails de um domínio específico para a porta smtp da instância secundária. E faça todos os header_checks lá e retire o email!

Felicidades!

    
por 07.11.2012 / 17:52