По необходимости
, Что я люблю приблизительно по необходимости, говорят по сравнению с CVS, то, что управление ответвлением, должен более сложный (но все еще довольно легкий), и Вы не должны прослушивать центральную бюрократию для создания ответвлений/маркировок и т.п.. Другими словами, это позволяет отдельной команде (или разработчик) управлять их исходными компонентами, как им нравится перед представлением к магистрали, централизованно администрируемой кем-то еще.
, О, я также сказал бы, что это имеет один из лучших графический интерфейсов пользователя там, все еще имея 1-й интерфейс командной строки гражданина класса. Я обычно ненавижу графический интерфейсы пользователя, но их работы.
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) {
То на самом деле звучит как что-то, что, вероятно, доступно как модуль из CPAN , но я не нашел ничего явно релевантного за пять минут поиска . Mail :: Lite :: Mbox :: Processor похоже, что он может делать то, что вы хотите:
Mail :: Lite :: Message :: Matcher - это фреймворк для автоматической почты обработка. Например, у вас есть почтовый сервер, и вам нужно обрабатывать некоторые типы входящей почты сообщения автоматически. Например, вы можете извлечь автоматизированные уведомления, счета-фактуры, предупреждения и т. д. из вашего почтового потока и выполните некоторые задачи, основанные на содержании тех messages.
, но его документация достаточно скудна, поэтому не сразу становится очевидным, предоставляет ли он эти примерные функции сам, или вам нужно предоставить код для их управления.
В любом случае, если у вас нет ' Я уже проверил CPAN, вот с чего я бы начал, если бы хотел сделать что-то подобное.
Должен быть стандартный способ решения этой проблемы, но проблема в том, что вы должны предположить, что системы, отправляющие автоответчики, соответствуют этому стандарту, когда в большинстве случаев они просто не надо.
Как получить адрес, на который вы отвечаете? Надеюсь, вы не используете заголовок From:
. Сначала проверьте заголовок Reply-to:
, и если он не существует, используйте обратный путь :
.
Но что бы вы ни делали, вам просто нужно будет вести журнал того, что вы кому отправили, и ограничивать своего бота до некоторого разумного количества сообщений за раз.
Мой ответ здесь касается только отказов, что является более простым.
Использование идентификатора DSN (уведомление о статусе доставки) поможет вам обнаружить DSN / отказов сообщение. Он должен идти по пути возврата, а не к ответу.
Вот образец типичного сообщения DSN . Информация заголовка включает идентификатор сообщения, тип содержимого имеет определенные значения (статус доставки) и т. Д.
Не могу предоставить вам какие-либо коды на perl, только мои 2 цента идеи.
PS: Обратите внимание, что не все почтовые серверы или MTA соответствуют этому, но я думаю, большинство из них.
Пример типичного сообщения DSN . Информация заголовка включает идентификатор сообщения, тип содержимого имеет определенные значения (статус доставки) и т. Д.Не могу предоставить вам какие-либо коды на perl, только мои 2 цента идеи.
PS: Обратите внимание, что не все почтовые серверы или MTA соответствуют этому, но я думаю, большинство из них.
Пример типичного сообщения DSN . Информация заголовка включает идентификатор сообщения, тип содержимого имеет определенные значения (статус доставки) и т. Д.Не могу предоставить вам какие-либо коды на perl, только мои 2 цента идеи.
PS: Обратите внимание, что не все почтовые серверы или MTA соответствуют этому, но я думаю, большинство из них.