Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отслеживать дохлые мыла? 
V
    Опции темы
maxipub
Дата 21.8.2013, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Добрый день!

Ребята, есть определенный сервис, растет база юзеров. По ясными причинам, часть мыл при реге вводится с ошибками (есть валидация регуляркой, просто опечатываются либо преднамеренно чушь пишут). Другая часть - вполне реальных изначально, просто отмирает со временем. В итоге получаю кучу возвратов вида "550 Message was not accepted -- invalid mailbox." - как с этим можно бороться на автомате? Т.е. письмо отправилось, получили такую ошибку, и понимаем что мыло не существует.

Шлю через PHP, стоит все под Debian, разсылает Exim.
PM MAIL   Вверх
Sanchezzz
Дата 21.8.2013, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



пингануть сервак почтовый по домену который указал пользователь  после @


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
maxipub
Дата 21.8.2013, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Sanchezzz, домен mail.ru - ?

Добавлено через 33 секунды
Дохнут же не только приватные домены, но и учетные записи на почтовых сервисах. smile
PM MAIL   Вверх
Sanchezzz
Дата 21.8.2013, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



эээ  smile  как-то я об этом не подумал

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

Парсим лог по крону вроде таблица в mysql sended_list.
Возможно можно создать правило в exim, как это делать правильно я не знаю.

PHP сторона, я как понял отправляет уведомления ? 

Это сообщение отредактировал(а) Sanchezzz - 21.8.2013, 17:58


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
maxipub
Дата 22.8.2013, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Цитата(Sanchezzz @  21.8.2013,  17:58 Найти цитируемый пост)
PHP сторона, я как понял отправляет уведомления ?

Да.

Помечать тех, кто не заходит - это один из вариантов.

Но хотелось бы как-то отлавливать именно эти ошибки, и действовать по факту. Тут действительно, exim может больше чем PHP, но х3, логов он никаких не ведет, 550 - это ответы, которые приходят на email отправителя (указанный в заголовках письма). Вот и думал, может на PHP можно как-то это отлавливать? Т.к. exim тут вероятно даже не видет эти ошибки - они же приходят на почту в виде ответных писем. А почта еще к слову, привязана к Яндекс.Почте. smile 
PM MAIL   Вверх
Sanchezzz
Дата 22.8.2013, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Пыха только вставляет в очередь на отправку письмо в exim.
Если что то не так логи у exim ведутся, если их нету то значит все нормально или не достаточно выставлены приоритеты для лорнирования.
Может яндекс вставляет эту гадость?




--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
maxipub
Дата 22.8.2013, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Цитата(Sanchezzz @  22.8.2013,  10:09 Найти цитируемый пост)
Если что то не так логи у exim ведутся, если их нету то значит все нормально или не достаточно выставлены приоритеты для лорнирования.

Ну насколько я понимаю, exim отдает письмо smtp Яндекса, если с ним что-то явно не так, тот сразу возвращает ответ с ошибкой, если все ок (формально), принимает на отправку. После этого exim помечает его как Completed и на этом все. И видимо уже после реальной отправки с smtp Яндекса, получив ответ (по факту) от принимающей стороны, Яндекс генерит этот ответ.

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

Код
<[email protected]>: host imx1.rambler.ru[81.19.66.235] said: 550 5.1.1
    <[email protected]>: Recipient address rejected: user not found (in
    reply to RCPT TO command)

...

Action: failed
Status: 5.1.1

...

Diagnostic-Code: smtp; 550 5.1.1 <[email protected]>: Recipient address
    rejected: user not found


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

1. Поинтересоваться у службы поддержки Яндекса, как тут быть. Может быть, у них какой-нибудь колл-бэк есть?

2. Поднять свой небольшой smtp, но не для отправки, а для теста RCPT TO (не очень хорошо, конечно).

3. На PHP сделать проверяльщик почты, который будет брать новые письма с заголовком "Undelivered Mail Returned to Sender", и выдергивать из них мыла реципиентов при наличии сообщения "Action: failed\nStatus: 5.0.0" и "Action: failed\nStatus: 5.1.1".

Пока буду так рыть. Если у кого будут идеи или кто уже решал такую задачу - велкам! smile
PM MAIL   Вверх
EugenyPavlenko
Дата 25.8.2013, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



Весчь, которая возможно вас заинтересует называется "Bounce Mail Handler". То есть обработчик "отскакнувших" мейлов, тех которые конечный почтовый сервер отверг и выслал вам на return-path (bounce mail).

Либа на ПХП:
http://phpmailer.worxware.com/index.php?pg=bmh

Встречал еще и пару других реализаций.

Сложность заключается в том, что ответы маил-серверов могут быть разные, в вашем случае "rejected: user not found", но бывает и "user banned", "user rejected", "пользователей удален", "disk quota exceed" и т.д. Отличается сообщение, формат и даже язык... Например МС маил-сервера как-то вообще по другому ответят))

Обычно различают 2 типа отказа, soft и hard.
[*] Hard это когда юзеру вообще трындец (удален, забанен) — таких можно в своей БД помечать сразу как-то, чтобы не слать туда письма...
[*] А вот soft другой случай — это например закончилось место в почтовом ящике... то есть юзер как бы есть и нормален, но места в его ящике нет...

А в целом технология реализации того что вам нужно извесная мне, основывается на сканировании вашего bounce-mail ПХП-скриптом (по крону раз в сутки напрмиер), и этот скрипт анализирует тело писем и делает правильные выводы относительно имейла на который пытались слать мейл)))

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

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM WWW   Вверх
maxipub
Дата 28.8.2013, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



EugenyPavlenko, благодарю, весьма интересное решение... Но как по мне, слшком навороченное. smile Если по моей проблеме, немного подумав, все же решил пойти сразу 3-м путем. Все оказалось совсем не сложно, даже примитивно. smile Посмотрим, как это будет работать на практике.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0966 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.