Парсинг возвращенных писем

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

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

Итак, я думаю, мой вопрос в том, есть ли у кого-нибудь решение этой проблемы? Честно говоря, я не хочу искать миллиард и одну из возможных строк в электронном письме. Тем не менее, было бы неплохо не прибегать к «неизвестной причине» или чему-то подобному.

Кому-нибудь еще повезло с этим или идеями? Ваше здоровье


person rich    schedule 23.11.2009    source источник
comment
Это бардак, как вы сказали. Вот почему я плачу JangoMail за то, чтобы он занимался всем этим дерьмом. Цены невысокие, но доставляемость электронной почты — большая проблема, и у нас нет ресурсов, чтобы решить ее собственными силами.   -  person Frank Farmer    schedule 23.11.2009
comment
Ах, я не думаю, что есть какое-то простое решение. Иногда стандарты и вещи действительно были бы полезны, если бы им следовали. К сожалению, я не могу использовать какую-либо внешнюю программу для этого.   -  person rich    schedule 24.11.2009


Ответы (3)


Вы можете настроить систему, позволяющую оператору просматривать сообщения, выбирать строки и затем классифицировать их. В конце концов, вы можете надеяться уменьшить этот показатель с 1 из 10 до 1 из 100 или 1 из 1000. Однако здесь всегда будет все больше и больше угловых случаев.

person Kyle    schedule 24.11.2009
comment
Да, я рассматриваю этот вариант как лучший, хотя конечный пользователь сможет определить, какой тип почты, это другое дело. - person rich; 24.11.2009

Также не окончательный ответ, но в том же духе, что и ответ Кайла, вы можете использовать спам-фильтр на основе байесов / токенов, чтобы «узнать» о сообщениях о возврате, а затем автоматически направить их на то, что вы хотите обработать возвращенную почту.

Другими словами, у вас есть учетная запись, в которой вы тренируете spamassassin или spamprobe или что-то еще, что куча различных сообщений о возврате (и только сообщения о возврате) являются «мусором», тогда пусть эта спам-система будет второй линией фильтрации после того, что вы сделали. развитый.

Итак, допустим, ваше решение, первый фильтр, находит 90% возвращенных сообщений. Ваша система делает то, что она обычно делает с отказами, а затем сохраняет их в почтовый ящик сообщений о возврате, который периодически сканируется spamassasin/spamprobe, чтобы определить эти сообщения как «мусор».

Затем у вас также есть spamassassin или spamprobe или что-то еще в качестве второго фильтра (запустите все, что ваше не помечает как отказ), сделайте свою собственную оценку отказов и все, что он считает «мусором» (потому что вы обучены для думаю, bounce = мусор), вы также направляетесь к своей программе и т. д.

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

person Chirael    schedule 24.11.2009

Мы столкнулись с той же проблемой, но ни одного «идеального» решения не нашли. Я думаю ты

  • может либо использовать какого-либо поставщика услуг (с надлежащим почтовым API) - это позволит вам передать проблему на аутсорсинг и даст вам высокий уровень обнаружения, либо
  • используйте какой-нибудь простой фильтр, чтобы поймать как минимум (скажем) 80% отказов. В нашей настройке этого было достаточно, чтобы база данных в приемлемом состоянии.
person claasz    schedule 16.12.2013