Isso vai parecer um pouco de dor de cabeça, mas estamos migrando de um servidor Sendmail para um servidor Postfix para lidar com o roteamento de e-mail em nossa rede, determinando seletivamente quais endereços fazem com que o e-mail seja roteado para locais diferentes (ou simplesmente reescrito para um @domínio diferente). Assim, os domínios que são processados por este sistema estão na virtual_alias_domains
lista.
O problema é que temos um punhado de endereços que queremos sempre rejeitar e também vemos os endereços nos virtual_alias_domains
catch-alls no final da configuração. Fazemos o seguinte, essencialmente, e nos referimos a este arquivo na virtual_alias_maps
diretiva:
/etc/postfix/virtusertable:
...
@domain.tld @internal.domain.tld
Queremos poder fazer um REJECT
com a mensagem de "Destinatário rejeitado pela política" junto com ele, então tentamos colocar da seguinte forma:
/etc/postfix/recipient-access:
[email protected] REJECT Recipient rejected by policy.
baduser@ REJECT Recipient rejected by policy.
e o arquivo referido na configuração para ambos smtpd_recipient_restrictions
e smtp_relay_restrictions
com... check_recipient_access hash:/etc/postfix/recipient-access ...
O problema é que esperamos que ele retorne uma resposta "Rejeitado" ou similarmente "Não permitido" quando o e-mail destinado a esse destino for entregue ao servidor de e-mail e antes que ele seja reescrito e retransmitido para o próximo link da cadeia. Quando processado, no entanto, testando com sendmail -bv [email protected]
, o Postfix diz que o e-mail foi entregue (mesmo que a entrega não tenha sido tentada) - não 'rejeitado' ou algo assim.
Não tenho certeza de onde avançar para configurar essas regras de 'rejeição'. Parece que estamos 'trabalhando' no sistema Sendmail, mas queremos nos livrar desse sistema maligno e substituí-lo por um sistema Postfix.
Observe que estamos tentando combinar a configuração do Sendmail o mais próximo possível. No momento , temos tudo funcionando, exceto a rejeição de determinados endereços, e não temos certeza de como proceder...
Finalmente consegui uma solução para isso, mas tive que ir incomodar o
#postfix
canal IRC no Freenode para conseguir. Eles sugeriram usarheader_checks
para processar adequadamente os cabeçalhos com regex ou similar para determinar as políticas de rejeição.Então, eu fiz isso. Eu coloquei
header_checks = regexp:/etc/postfix/header_checks
nomain.cf
arquivo para PostFix e, em seguida, configurei regras como segue no/etc/postfix/header_checks
arquivo:Isso pode ser expandido para verificar certos campos 'De' ou outros itens nos cabeçalhos. Dito isto, você tem que conhecer seu regex um pouco para fazê-lo funcionar. Você pode usar
/^From: [email protected]/
para campos De ou qualquer coisa, mas precisa da/^
parte no início da regex para funcionar corretamente.É uma pena que isso não esteja mais claramente documentado, mas consegui resolver o problema com
header_checks
, então isso conta como uma resposta.