Na verdade, a resposta do Instyle é muito difícil de implementar se você deseja dar suporte a muitos domínios diferentes e está errado porque:
a) Com o exemplo dele transport_maps, todos os emails enviados para esse domínio são enviados para esse serviço específico, independentemente de os emails serem devolvidos ou não. Como ele usa um nome de domínio específico, na verdade deve ser apenas emails devolvidos ... mas não pode ser garantido dessa maneira.
b) Os dados enviados ao seu script são o próprio email e não a mensagem de devolução. Em outras palavras, seu código pode não ter idéia do motivo pelo qual o email foi devolvido (por exemplo, o reembolso local enviará apenas o email original).
A maneira correta de fazer essa configuração no postfix é usar a classe de notificação de rejeição.
1) Em /etc/postfix/main.cf
notify_classes = bounce
bounce_notice_recipient = bounces@example.com
transport_maps = hash:/etc/postfix/transport_maps
2) Em / etc / postfix / transport_maps
# when you make changes to this file, run:
# sudo postmap /etc/postfix/transport_maps
bounces@example.com bulkbounce:
Como você pode ver, agora dizemos ao postfix para uso bounces@example.comsempre que um email for devolvido. Em seguida, no mapa de transporte, use-o bulkbouncecomo serviço para manipular qualquer endereço de email bounces@example.com.
Finalmente, você pode definir bulkbouncecom seu script:
3) Em /etc/postfix/master.cf
bulkbounce unix - n n - - pipe
flags=FRq user=bounce argv=/home/bounce/bin/snapbounce --sender ${sender} --recipient ${recipient}
Este script requer que você tenha um usuário. nobodyé uma boa escolha também. Se você deseja ter um usuário específico, pode criá-lo com:
useradd bounce
Sem o script master.cf, os e-mails são enviados para a conta de conversão em massa. Portanto, se você tiver um script que analise e-mails de arquivos, isso funcionaria sem as alterações transport_mapse master.cf.
De um comentário abaixo:
fyi - re: double bounces ...
se você estiver modificando o endereço de retorno (endereço VERP como user+id@fromdomain.com, então você desejará comentar a linha main.cfpara o bounce_notice_recipient, se você estiver interessado em analisar o +idretorno apenas em seu script.
Message-Idno cabeçalho, ele deve ser enviado de volta e isso basta verificar quem é quem.