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'