Geralmente existem dois tipos de rejeições
- As rejeições causadas pela rejeição direta do servidor de email remoto quando o postfix entrega o email.
- As rejeições causadas pelo servidor remoto (servidor do próximo salto após o seu postfix) não entregam a mensagem aos destinatários finais.
O primeiro caso já estava 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 e-mail com o destinatário [email protected] para o servidor mail.example.com .
- Em mail.example.com, [email protected] foi alias para [email protected] e deve ser encaminhado para mail.example.net .
- Algum dia mail.example.net rejeite a sua mensagem, então mail.example.com deve enviar retornos 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 é devolvido por email. Há uma regra de encaminhamento Yahoo mail server [email protected] - > [email protected] . 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: [email protected]
Delivered-To: [email protected]
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 <[email protected]>; 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: [email protected]
To: [email protected]
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.
<[email protected]>:
Remote host said:
550 5.1.1 User unknown
[RCPT_TO]
Neste caso, seu único método é analisar a mensagem de rejeições. Infelizmente, não há formato de rejeições 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 rejeição do postfix:
- Verifique se o endereço VERP era válido. Você não quer analisar a mensagem inválida.
- Analise o corpo, determine se eles são rejeição leve ou dura.
Para o segundo recurso, você pode pesquisar no Google alguma mensagem de rejeição comum. O exemplo é este bounce-regex- list.xml por Jakub Liska .
Esa Jokinen fez um bom ponto no comentário abaixo sobre esses dois tipos de rejeição. Se seu objetivo é manter a reputação do servidor, o primeiro tipo de rejeição deve ser suficiente. A segunda rejeição foi sobre a limpeza de suas listas. Então, e-mails mortos devem ser apagados, liberando alguns recursos em seu servidor.
Alguns gerenciadores de lista de discussão, como o PHPlist e o Mailman, também lidam com esse problema de rejeição ao analisar o corpo do email, já que não possuem recursos para analisar o maillog.