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.com
sempre que um email for devolvido. Em seguida, no mapa de transporte, use-o bulkbounce
como serviço para manipular qualquer endereço de email bounces@example.com
.
Finalmente, você pode definir bulkbounce
com 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_maps
e 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.cf
para o bounce_notice_recipient
, se você estiver interessado em analisar o +id
retorno apenas em seu script.
Message-Id
no cabeçalho, ele deve ser enviado de volta e isso basta verificar quem é quem.