Postfix notificar envio

1

Meu cenário

Estou escrevendo um site que usa o postfix local para enviar e-mails para os usuários. Para qualquer email que eu vou enviar, eu preciso saber se o postfix o entregou com sucesso (para o próximo salto), ou não.

O que eu fiz até agora

Eu configurei corretamente a execução de um script caso o email seja devolvido. Para conseguir isso eu envio e-mail com algo como "info + 2493 @ mydomain" como endereço do remetente do envelope, onde 2493 é o identificador exclusivo do meu e-mail e configurei uma entrada de transporte para info @ mydomain que usa um relé ad-hoc .cf) que executa o meu script. Bom

Minha pergunta

Como posso configurar a execução de um script como eu fiz para o email devolvido para email entregue com sucesso?

E que outras possibilidades existem para que um e-mail seja enviado além de devolvido e entregue, com o qual eu deveria me importar?

    
por Jack 08.05.2014 / 12:43

1 resposta

2

Para saber o status da entrega de e-mails, o postfix usa o DSN como estado em RFC 3464 . A documentação afirma que há 3 status de entrega

  • Sucesso (o servidor aceita a mensagem)
  • Atrasado (o servidor não pode entregar agora, mas tentará novamente)
  • Falha (o servidor não pode entregá-lo, retornou ao remetente)

Se você enviar e-mail via sendmail (por exemplo, com função de e-mail no PHP), o o estado padrão é postfix irá notificá-lo em caso de falha ou atraso. Se você deseja ser notificado se a mensagem for enviada com sucesso, adicione o parâmetro -N delay,failure,success em seu comando sendmail. Esse recurso documentado em Suporte a DSN do Postfix e SENDMAIL (1) .

UPDATE

Para distinguir a entrega e a falha de sucesso, você pode analisar o anexo de DSN email , especialmente na seção Delivery report .

Aqui, o snippet de entrega de falhas

Content-Description: Delivery report
Content-Type: message/delivery-status

Reporting-MTA: dns; example.com
X-Postfix-Queue-ID: 3gPtcL5lvrzDFBC
X-Postfix-Sender: rfc822; [email protected]
Arrival-Date: Fri,  9 May 2014 08:04:50 +0700 (WIT)

Final-Recipient: rfc822; [email protected]
Original-Recipient: rfc822;[email protected]
Action: failed
Status: 5.1.1
Remote-MTA: dns; example.com
Diagnostic-Code: smtp; 550 5.1.1 <[email protected]>: Recipient address
    rejected: User unknown in virtual mailbox table

Aqui, o snippet de entrega de sucesso

Content-Description: Delivery report
Content-Type: message/delivery-status

Reporting-MTA: dns; www.example.com
X-Postfix-Queue-ID: 5936DF75D4
X-Postfix-Sender: rfc822; [email protected]
Arrival-Date: Thu,  8 May 2014 22:58:40 +0700 (WIT)

Final-Recipient: rfc822; [email protected]
Original-Recipient: rfc822;[email protected]
Action: relayed
Status: 2.0.0
Diagnostic-Code: X-Postfix; delivery via dovecot: delivered via dovecot service
    
por 08.05.2014 / 18:13

Tags