Как лучше всего проанализировать заголовки отклоненной (недоставленной) электронной почты, отправленной обратно на мой сервер, и определить, является ли это мягкой или жесткой передачей?
Я отправляю только подписные письма своим пользователям, но иногда некоторые адреса электронной почты устаревают. Когда электронное письмо возвращается на мой сервер, я хотел бы выяснить, почему оно было возвращено (мягкое / жесткое). Затем я могу соответствующим образом справиться с этим в своей базе данных и / или отметить пользователя, чтобы он обновлял свою электронную почту при следующем входе в систему.
Я использую Ubuntu и Postfix. Я успешно реализовал VERP с псевдонимами и виртуальными псевдонимами. Таким образом, для отклоненных писем есть обратный путь bounce+OrigEmailAddress@example.com , и я могу направить их в скрипт.
Теперь, когда у меня есть настройка VERP, я знаю, кому было отправлено исходное письмо, но мне нужно проанализировать заголовки возвращенной почты, чтобы выяснить, мягкая она или жесткая.
Каков наилучший способ справиться с этим? Насколько я понимаю, не все почтовые серверы играют по одинаковым правилам, а заголовки могут иметь различные форматы. Есть ли какой-нибудь проект с открытым исходным кодом, который отслеживает подобные вещи? Что-то простое, что я могу реализовать, чтобы правильно классифицировать большинство отскоков?
Я пытаюсь защитить репутацию своего почтового сервера, поэтому любая помощь очень ценится!
источник
grep " dsn=5." /var/log/mail.log | pcregrep -o1 " to=<(.+?)>" | sort | uniq -c
Обычно есть два типа отказов
Первый случай уже был освещен превосходным ответом Эсы Йокинена выше. Ваш лучший выбор - анализ почтового журнала.
Второй случай был частным случаем отказов. Пример сценария:
Вот пример второго типа отказов электронной почты. Существует правило пересылки на почтовый сервер Yahoo myuser@yahoo.com -> myuser@example.net . К сожалению почтовый сервер example.net отклоняет сообщение :(
В этом случае ваш единственный метод - это анализ сообщения об отказах. К сожалению, нет стандартного формата отказов, поэтому вы должны проанализировать тело и определить причину отклонения.
Контрольный список возможностей вашего анализа постфикса:
Что касается второй функции, вы можете погуглить какое-то распространенное сообщение об отказе. Примером этого является bounce-regex-list.xml от Jakub Liska .
Эса Йокинен хорошо прокомментировала эти два типа отказов в комментарии ниже . Если ваша цель состоит в том, чтобы сохранить репутацию сервера, то достаточно иметь первый тип отказов. Второй отскок был о чистке ваших списков. Таким образом, мертвая электронная почта должна быть удалена, освобождая некоторые ресурсы на вашем сервере
Некоторые менеджеры списков рассылки, такие как PHPlist и Mailman, также имеют дело с этой проблемой отказов при разборе тела письма, поскольку у них нет ресурсов для разбора почтового журнала.
источник