O postfix usando o comando de correio reporta se um email não pôde ser enviado para um endereço?

0

Estou escrevendo um programa que enviará e-mails externos usando postfix com o comando mail -s e preciso verificar se o e-mail foi enviado para o endereço especificado.

Nesse caso, fico curioso se postfix informar imediatamente um erro que eu recebo como código de retorno se o email não tiver sido enviado ou se postfix disser que foi um sucesso, desde que um email válido ([email protected]) foi inserido e, posteriormente, reportado em um arquivo de log ou tal que o email não pôde ser enviado?

Além disso, se a rede estiver inativa, postfix ainda retornará sucesso enquanto um endereço de e-mail válido for usado ou uma falha será informada imediatamente?

    
por jgr208 28.03.2016 / 15:29

2 respostas

1

Se a sua configuração do postfix estiver definida para logs, você poderá verificar os registros em busca do status de uma mensagem.

Ele conterá informações como:

Mar 25 16:07:40 serverName postfix/smtp[3113]: B169ZZZ24F: host foo.net.mx1.name.foo.net[1.2.3.4] refused to talk to me: 421 Offline: HELO/FDNS

Mar 25 16:07:40 serverName postfix/smtp[3036]: 7ZZZFC2440: to=<[email protected]>, relay=mtaz.amz.yahoodns.net[66.196.118.35]:25, delay=11, delays=0.35/0/0.6/9.9, dsn=2.0.0, status=sent (250 ok dirdel)

Mar 25 16:07:36 serverName postfix/smtp[3073]: ZZZZ3C623E: to=<[email protected]>, relay=none, delay=0.55, delays=0.35/0/0.2/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for name=customer.com type=A: Host not found)

Esta informação pode ser recuperada através de um script com linhas como: (Não é o meu trabalho. Obrigado a quem nunca, isso é usado todos os dias.)

grep 'status=sent' /var/log/mail.log | awk '{print $7}' | sed 's/to=<//g' | sed 's/>,//g'

grep 'status=deferred' /var/log/mail.log | awk '{print $7}' | sed 's/to=<//g' | sed 's/>,//g'

grep 'status=bounced' /var/log/mail.log | awk '{print $7}' | sed 's/to=<//g' | sed 's/>,//g'
    
por 28.03.2016 / 16:29
1

Alguns erros graves (como erros de E / S que leem o conteúdo da mensagem ou mensagens / endereços muito mal descartáveis) podem ser reportados como falhas, mas, em geral, isso não será o caso e você não pode contar com isso. / p>

Em caso de falha de entrega, você deve receber uma devolução (enviada de volta ao usuário que originou o e-mail), mas mesmo isso pode estar fora das mãos do Postfix se o Postfix encaminhou a mensagem para outro agente de transporte de email e o erro ocorreu na linha. A rejeição pode acontecer minutos ou dias depois.

Se a rede estiver inativa, o Postfix ainda retornará o sucesso. Este é um recurso, não um bug: -)

    
por 28.03.2016 / 15:35