![Como adicionar um único cabeçalho para qualquer e-mail recebido com Postfix?](https://rvso.com/image/776284/Como%20adicionar%20um%20%C3%BAnico%20cabe%C3%A7alho%20para%20qualquer%20e-mail%20recebido%20com%20Postfix%3F.png)
Tenho o Postfix em execução com vários processos smtpd configurados em master.cf assim:
# Internet facing one
1.2.3.4:25 inet n - y - - smtpd
-o ... # internet-only overrides
# Internal facing one
10.0.0.1:10026 inet n - y - - smtpd
-o ... # internal-only overrides
Agora, gostaria de adicionar um único cabeçalho, com nome e valor estáticos, paraentradamail dependendo de qual smtpd foi recebido.
Exemplo:
X-Gert-Postfix-Received-From: the evil internet
Minhas opções consideradas:
Adicione o
header_checks
opção e use aPREPEND
ação no arquivo.Quase lá, mas:
- É necessário corresponder a um cabeçalho existente e, em seguida, adicionar mais um nas correspondências subsequentes.
- Nem sempre tenho um determinado cabeçalho presente, talvez até
From
esteja faltando um, por exemplo. - Caso você já exista
header_checks
, não há uma maneira fácil de empilhar doisheader_check
arquivos, eu acho.
Crie um aplicativo personalizado que use oProtocolo Miltere conecte-o ao Postfix com
smtpd_milters
.Claro, isso funcionará. Posso inspecionar o e-mail em meu próprio aplicativo e injetar o cabeçalho lá. Parece excesso de engenharia para uma tarefa simples como adicionar um cabeçalho. Além disso, requer manutenção extra com a necessidade de executar outro aplicativo daemon, algum código padrão, etc.
Conforme sugerido em um comentário, use
check_recipient_access
(Q relacionado).As mesmas desvantagens de
header_checks
(ver 1).
Sinto que estou perdendo algo simples. Alguém tem uma ideia melhor?
Responder1
Caso você tenha header_checks existentes, não há uma maneira fácil de empilhar dois arquivos header_check, eu acho.
Na verdade, existe uma maneira de ter vários arquivos header_checks independentes por daemon.
cada-oA opção em seu master.cf substitui um valor padrão ou qualquer parâmetro de configuração postfix em main.cf. Para ter header_checks diferentes por daemon (digamos/etc/postfix/header_checks1e/etc/postfix/header_checks2), você terá que substituir cadaheader_checksparâmetro:
# Internet facing one
1.2.3.4:25 inet n - y - - smtpd
-o header_checks = regexp:/etc/postfix/header_checks1
# Internal facing one
10.0.0.1:10026 inet n - y - - smtpd
-o header_checks = regexp:/etc/postfix/header_checks2
Desta forma você terá total independênciaheader_checksarquivos por daemon smtpd. A partir daí você pode adicionar regras que precedem a tag da qual você estava falando.
Responder2
Para contornar as limitações de smtpd_*_restrictions
:
Uma mensagem - mesmo uma com remetente "nulo" - possui exatamente um remetente de envelope. Então use check_sender_access
em vez de check_recipient_access
. O tipo de pesquisa usado pode ser static:
porque não nos importamos com as especificidades do caminho de retorno. Adicione-o à sua lista de smtpd_sender_restrictions antes de qualquer verificação gerar ACCEPT
resultados (o postfix não consultaria pesquisas adicionais além).
# in main.cf
common_sender_restrictions =
reject_non_fqdn_sender
reject_unknown_sender_domain
..
internet_sender_restrictions =
$common_sender_restrictions
check_sender_access static:{PREPEND X-Gert-Postfix-Received-From: the evil internet}
# in master.cf
192.0.2.0:25 inet n - y - - smtpd
-o smtpd_sender_restrictions=$internet_sender_restrictions
10.0.0.1:10026 inet n - y - - smtpd
-o smtpd_sender_restrictions=$common_sender_restrictions