Geralmente existem dois tipos de rejeições
- As devoluções causadas pela rejeição direta do servidor de correio remoto quando o seu postfix entrega o email.
- As devoluções causadas pelo servidor remoto (servidor do próximo salto após o seu postfix) não conseguem entregar a mensagem aos destinatários finais.
O primeiro caso já foi coberto pela excelente resposta de Esa Jokinen acima. Sua melhor aposta é analisar o maillog.
O segundo caso foi um caso especial de rejeições. O cenário de exemplo:
- Você envia um email com o destinatário fakemail@example.com para o servidor mail.example.com .
- Em mail.example.com, fakemail@example.com era alias para realmail@example.net e deve ser encaminhado para mail.example.net .
- Um dia o mail.example.net rejeita a sua mensagem, para que o mail.example.com precise enviar devoluções ao seu servidor.
- Infelizmente, o maillog em seu servidor terá "dsn = 2" porque mail.example.com já aceitou a mensagem, mas não conseguiu encaminhá-la para mail.example.net .
Aqui, o exemplo do segundo tipo rejeita o email. Existe uma regra de encaminhamento do servidor de e-mail do Yahoo myuser@yahoo.com -> myuser@example.net . Infelizmente o servidor de email do example.net rejeita a mensagem :(
From MAILER-DAEMON Thu Mar 5 05:07:26 2015
Return-Path: <>
X-Original-To: noreply-myuser=yahoo.com@example.org
Delivered-To: noreply-263462085117-1425506829-myuser=yahoo.com@example.org
Received: from nm21-vm7.bullet.mail.gq1.yahoo.com (nm21-vm7.bullet.mail.gq1.yahoo.com [98.136.217.54])
(using TLSv1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits))
(No client certificate requested)
by mx.example.org (Postfix) with ESMTPS id D6365565FC
for <noreply-263462085117-1425506829-myuser=yahoo.com@example.org>; Thu, 5 Mar 2015 05:07:25 +0700 (WIT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=bounce; t=1425506842; bh=zk/tWZNl6c36dmlPDmakM9ekK8cHVJANXMmSdsbkcWc=; h=From:To:Date:Subject:From:Subject; b=Im95h1qTg6qN3yUI7vF1fXtJ0SbUnzv8rUPwLbpNwxGPN2p8wfosXJzQgJ3nzr4L4ZQ50P2d9E9U4jEUNtnyi7nlFd5kKbtiVuda4H56h1PFnt+7wSpgHcd5Irs/lLODumb6ZZSEpCOWttcB9+JLaDfEUUPjGcbR+xww4XeH5Eo=
From: MAILER-DAEMON@yahoo.com
To: noreply-263462085117-1425506829-myuser=yahoo.com@example.org
Date: Wed, 04 Mar 2015 22:07:22 -0000
Subject: Failure Notice
X-Yahoo-Newman-Property: bmbounce
Sorry, we were unable to deliver your message to the following address.
<myuser@example.net>:
Remote host said:
550 5.1.1 User unknown
[RCPT_TO]
Nesse caso, seu único método é analisar a mensagem de devolução. Infelizmente, não há formato de rejeição padrão, portanto, você deve analisar o corpo e determinar a rejeição causada.
A lista de verificação de recursos da análise de devolução do postfix:
- Verifique se o endereço VERP era válido. Você não deseja analisar mensagens inválidas.
- Analise o corpo, determine se eles são rejeição suave ou dura.
Para o segundo recurso, você pode pesquisar no Google alguma mensagem de rejeição comum. O exemplo é este bounce-regex-list.xml de Jakub Liska .
Esa Jokinen fez uma boa observação no comentário abaixo sobre esses dois tipos de rejeição. Se seu objetivo é manter a reputação do servidor, a negociação do primeiro tipo de rejeição deve ser suficiente. O segundo salto foi sobre como limpar suas listas. Portanto, o e-mail morto deve ser apagado, liberando alguns recursos em seu servidor.
Alguns gerenciadores de listas de discussão, como PHPlist e Mailman, também lidam com esse problema de rejeição ao analisar o corpo do email, pois eles não têm recursos para analisar o maillog.