Захватить идентификатор очереди и 250 ОК через милтер

У нас есть веб-приложение, которое отправляет электронную почту. Прямо сейчас, если мы отправим электронное письмо, и оно будет отослано (по какой-либо причине), никто не узнает, так как оно приходит с адреса без ответа, который никогда не проверяется на предмет отскоков.

Некоторые из этих писем очень важны, и мы хотели бы показать неудачную попытку электронной почты в интерфейсе.

Моя мысль сделать это:

  1. Вставьте X-Header: guid-идет-сюда в электронное письмо, чтобы однозначно идентифицировать его.
  2. Создайте сообщение в Postfix, которое будет запускать электронную почту через скрипт, чтобы разобрать этот заголовок и (надеюсь) одновременно захватить идентификатор очереди.
  3. Разберите mail.log для этого идентификатора очереди и определите его расположение (250 OK).

Для #2, когда я создаю milter, postfix вводит идентификатор очереди, когда отправляет почту в скрипт? Я нахожусь на ранних стадиях этого, и еще не заставил это работать. Кроме того, я решил использовать фильтр содержимого SMTP в пост-очереди ( http://www.postfix.org/FILTER_README.html). Это правильный выбор?

1 ответ

Решение

Просто используйте адрес в качестве отправителя конверта, который фактически отслеживается.

Сделай это так:

  • убедитесь, что bounces@$yourdomain доставлен в программу (т.е. может быть через псевдонимы или.forward)
  • Измените ваше приложение для отправки почты с использованием этой схемы отправителя конверта:bounces+receient=receientdomain@$yourdomain

Как видите, начальный получатель (получатель @ получатель) зашифрован в адрес отправителя, который вы используете. Если почта приходит в норму, она возвращается обратно в адрес bounces + receient=receientdomain@$yourdomain - так что без разбора вы можете узнать, какой адрес был отклонен!

Это называется VERP и используется менеджерами списков рассылки, такими как ezmlm или mailman: https://en.wikipedia.org/wiki/Variable_envelope_return_path

Ваш предложенный подход ошибочен, так как статус "250 OK" на самом деле не означает, что почта не будет возвращена последующими ретрансляторами!

Другие вопросы по тегам