Как сделать почтового бота, который отвечает пользователям не, отвечают на автоответы и вовлекают себя в почтовые циклы

По необходимости

, Что я люблю приблизительно по необходимости, говорят по сравнению с CVS, то, что управление ответвлением, должен более сложный (но все еще довольно легкий), и Вы не должны прослушивать центральную бюрократию для создания ответвлений/маркировок и т.п.. Другими словами, это позволяет отдельной команде (или разработчик) управлять их исходными компонентами, как им нравится перед представлением к магистрали, централизованно администрируемой кем-то еще.

, О, я также сказал бы, что это имеет один из лучших графический интерфейсов пользователя там, все еще имея 1-й интерфейс командной строки гражданина класса. Я обычно ненавижу графический интерфейсы пользователя, но их работы.

9
задан dreeves 4 December 2009 в 04:45
поделиться

4 ответа

RFC 3834 дает некоторые рекомендации о том, что вам следует делать, но вот несколько конкретных рекомендаций:

Установите отправителя конверта на адрес электронной почты, отличный от вашего автоответчика, чтобы отказов не было обратная связь с системой.

Я всегда храню в базе данных ключ, указывающий, когда ответ по электронной почте был отправлен с определенного адреса на другой адрес. Ни при каких обстоятельствах я не буду отвечать на один и тот же адрес чаще одного раза в 10 минут. Само по себе это остановило все циклы, но не гарантирует хорошего поведения (автоответы на списки рассылки раздражают).

Убедитесь, что вы добавили любую перестановку заголовка, с которой другие люди сопоставляют, чтобы остановить циклы. Вот список, который я использую:


X-Loop: autoresponder
Auto-Submitted: auto-replied
Precedence: bulk (autoreply)

Вот несколько регулярных выражений заголовков, которые я использую, чтобы избежать циклов и попытаться хорошо сыграть:


 /^precedence:\s+(?:bulk|list|junk)/i
 /^X-(?:Loop|Mailing-List|BeenThere|Mailman)/i
 /^List-/i
 /^Auto-Submitted:/i
 /^Resent-/i

Я также избегаю отвечать, если один из этих отправителей конверта:


if ($sender eq ""
    || $sender =~ /^(?:request|owner|admin|bounce|bounces)-|-(?:request|owner|admin|bounce|bounces)\@|^(?:mailer-daemon|postmaster|daemon|majordomo|ma
ilman|bounce)\@|(?:listserv|listsrv)/i) {
8
ответ дан 4 December 2019 в 19:34
поделиться

То на самом деле звучит как что-то, что, вероятно, доступно как модуль из CPAN , но я не нашел ничего явно релевантного за пять минут поиска . Mail :: Lite :: Mbox :: Processor похоже, что он может делать то, что вы хотите:

Mail :: Lite :: Message :: Matcher - это фреймворк для автоматической почты обработка. Например, у вас есть почтовый сервер, и вам нужно обрабатывать некоторые типы входящей почты сообщения автоматически. Например, вы можете извлечь автоматизированные уведомления, счета-фактуры, предупреждения и т. д. из вашего почтового потока и выполните некоторые задачи, основанные на содержании тех messages.

, но его документация достаточно скудна, поэтому не сразу становится очевидным, предоставляет ли он эти примерные функции сам, или вам нужно предоставить код для их управления.

В любом случае, если у вас нет ' Я уже проверил CPAN, вот с чего я бы начал, если бы хотел сделать что-то подобное.

2
ответ дан 4 December 2019 в 19:34
поделиться

Должен быть стандартный способ решения этой проблемы, но проблема в том, что вы должны предположить, что системы, отправляющие автоответчики, соответствуют этому стандарту, когда в большинстве случаев они просто не надо.

Как получить адрес, на который вы отвечаете? Надеюсь, вы не используете заголовок From: . Сначала проверьте заголовок Reply-to: , и если он не существует, используйте обратный путь : ​​.

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

1
ответ дан 4 December 2019 в 19:34
поделиться

Мой ответ здесь касается только отказов, что является более простым.

Использование идентификатора DSN (уведомление о статусе доставки) поможет вам обнаружить DSN / отказов сообщение. Он должен идти по пути возврата, а не к ответу.

Вот образец типичного сообщения DSN . Информация заголовка включает идентификатор сообщения, тип содержимого имеет определенные значения (статус доставки) и т. Д.

Не могу предоставить вам какие-либо коды на perl, только мои 2 цента идеи.

PS: Обратите внимание, что не все почтовые серверы или MTA соответствуют этому, но я думаю, большинство из них.

Пример типичного сообщения DSN . Информация заголовка включает идентификатор сообщения, тип содержимого имеет определенные значения (статус доставки) и т. Д.

Не могу предоставить вам какие-либо коды на perl, только мои 2 цента идеи.

PS: Обратите внимание, что не все почтовые серверы или MTA соответствуют этому, но я думаю, большинство из них.

Пример типичного сообщения DSN . Информация заголовка включает идентификатор сообщения, тип содержимого имеет определенные значения (статус доставки) и т. Д.

Не могу предоставить вам какие-либо коды на perl, только мои 2 цента идеи.

PS: Обратите внимание, что не все почтовые серверы или MTA соответствуют этому, но я думаю, большинство из них.

1
ответ дан 4 December 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: