Você pode configurar um filtro de fila de postagem. Como estão as suas habilidades perl / sed?
A primeira coisa que você precisa fazer é escrever um script que aceite uma mensagem bruta em STDIN
e modifique a mensagem como quiser (suponho que você já tenha esse recurso). Em seguida, você configura o postfix para passar todas as mensagens para esse script como um filtro. Como a última coisa que o script faz, passe a mensagem de volta para o postfix.
Para escrever o script, sugiro usar o perl. Tem um motor regexp muito poderoso. Você também pode usar Net::SMTP
para tornar a reenvio de volta ao postfix fácil.
Veja como configurar o postfix para fazer isso:
Em master.cf
na sua linha smtpd
, altere a última parte para incluir o filtro.
Linha original:
smtp inet n - n - - smtpd
Nova linha:
smtp inet n - n - - smtpd -o content_filter=myfilter
Adicione seu serviço de filtro a master.cf
:
myfilter unix - n n - 3 pipe
flags= user=nobody argv=/usr/local/bin/myfilter.pl localhost 25252 $sender $recipient
Observe que o remetente e o destinatário aqui são do envelope e não do corpo . Você precisará fazer parte do envelope ao passar a mensagem de volta ao postfix.
Por fim, adicione um receptor SMTP não filtrado a master.cf
para aceitar as mensagens recém-modificadas:
local:25252 inet n - n - - smtpd
-o content_filter=