Primeiro, definimos dois processos smtpd em master.cf
, aquele com reescrita ativada e o outro com reescrita desativado. O SMTPD com reescrita ativada existia por padrão no master.cf. Agora vamos essas linhas
127.0.0.1:2525 inet n - n - 2000 smtpd
-o receive_override_options=no_header_body_checks,no_address_mappings
Isso ativará outro processo smtpd
- Ouça na porta IP do host local 2525
- Com o recurso header_checks e o recurso de reescrita desativado.
Aqui o pseudocódigo do seu pedido
if header exist (postfix will checks via header_cheks)
no rewrite
else
rewrite with virtual_alias_maps
Implementaremos essa lógica com header_checks .
Adicione esta linha em main.cf
header_checks = regexp:/etc/postfix/mycustomheader
Conteúdo de /etc/postfix/mycustomheader
/^X-Your-Header/ FILTER smtp:[127.0.0.1]:2525
Como funciona
Sempre que o postfix detectar X-Your-Header nas suas mensagens, ele redirecionará o email para o segundo processo smtpd, conforme definimos anteriormente. Se o cabeçalho não existir, seu e-mail passará pelo processo smtpd padrão com a reescrita ativada.