Обычно есть два типа отказов
- Отказов, вызванных прямым отклонением удаленного почтового сервера, когда ваш постфикс доставляет электронную почту.
- Отказов, вызванных удаленным сервером (сервер следующего перехода после вашего постфикса) не удается доставить сообщение конечным получателям.
Первый случай уже был освещен превосходным ответом Эсы Йокинена выше. Ваш лучший выбор - анализ почтового журнала.
Второй случай был частным случаем отказов. Пример сценария:
- Вы отправляете письмо с получателем fakemail@example.com на mail.example.com сервер.
- В mail.example.com fakemail@example.com был назначен псевдоним realmail@example.net и должен быть перенаправлен на mail.example.net .
- Когда-нибудь mail.example.net отклонит ваше сообщение, поэтому mail.example.com должен отправить отказы на ваш сервер.
- К сожалению, maillog на вашем сервере будет иметь «dsn = 2», потому что mail.example.com уже принял сообщение, но не смог переслать его на mail.example.net .
Вот пример второго типа отказов электронной почты. Существует правило пересылки на почтовый сервер Yahoo myuser@yahoo.com -> myuser@example.net . К сожалению почтовый сервер example.net отклоняет сообщение :(
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]
В этом случае ваш единственный метод - это анализ сообщения об отказах. К сожалению, нет стандартного формата отказов, поэтому вы должны проанализировать тело и определить причину отклонения.
Контрольный список возможностей вашего анализа постфикса:
- Проверьте правильность адреса VERP. Вы не хотите анализировать недействительное сообщение.
- Разобрать тело, определить, мягкое ли оно или жесткое отторжение.
Что касается второй функции, вы можете погуглить какое-то распространенное сообщение об отказе. Примером этого является bounce-regex-list.xml от Jakub Liska .
Эса Йокинен хорошо прокомментировала эти два типа отказов в комментарии ниже . Если ваша цель состоит в том, чтобы сохранить репутацию сервера, то достаточно иметь первый тип отказов. Второй отскок был о чистке ваших списков. Таким образом, мертвая электронная почта должна быть удалена, освобождая некоторые ресурсы на вашем сервере
Некоторые менеджеры списков рассылки, такие как PHPlist и Mailman, также имеют дело с этой проблемой отказов при разборе тела письма, поскольку у них нет ресурсов для разбора почтового журнала.