![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
maxipub |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
Добрый день!
Ребята, есть определенный сервис, растет база юзеров. По ясными причинам, часть мыл при реге вводится с ошибками (есть валидация регуляркой, просто опечатываются либо преднамеренно чушь пишут). Другая часть - вполне реальных изначально, просто отмирает со временем. В итоге получаю кучу возвратов вида "550 Message was not accepted -- invalid mailbox." - как с этим можно бороться на автомате? Т.е. письмо отправилось, получили такую ошибку, и понимаем что мыло не существует. Шлю через PHP, стоит все под Debian, разсылает Exim. |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
пингануть сервак почтовый по домену который указал пользователь после @
-------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
maxipub |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
Sanchezzz, домен mail.ru - ?
Добавлено через 33 секунды Дохнут же не только приватные домены, но и учетные записи на почтовых сервисах. ![]() |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
эээ
![]() Ну как вариант можно помечать таких людей в базе и в дальнейшем не использовать в рассылке писем, пока они не объявится и не зайдут на сайт. 3 попытки думаю достаточно будет. Парсим лог по крону вроде таблица в mysql sended_list. Возможно можно создать правило в exim, как это делать правильно я не знаю. PHP сторона, я как понял отправляет уведомления ? Это сообщение отредактировал(а) Sanchezzz - 21.8.2013, 17:58 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
maxipub |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
Да. Помечать тех, кто не заходит - это один из вариантов. Но хотелось бы как-то отлавливать именно эти ошибки, и действовать по факту. Тут действительно, exim может больше чем PHP, но х3, логов он никаких не ведет, 550 - это ответы, которые приходят на email отправителя (указанный в заголовках письма). Вот и думал, может на PHP можно как-то это отлавливать? Т.к. exim тут вероятно даже не видет эти ошибки - они же приходят на почту в виде ответных писем. А почта еще к слову, привязана к Яндекс.Почте. ![]() |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Пыха только вставляет в очередь на отправку письмо в exim.
Если что то не так логи у exim ведутся, если их нету то значит все нормально или не достаточно выставлены приоритеты для лорнирования. Может яндекс вставляет эту гадость? -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
maxipub |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
Ну насколько я понимаю, exim отдает письмо smtp Яндекса, если с ним что-то явно не так, тот сразу возвращает ответ с ошибкой, если все ок (формально), принимает на отправку. После этого exim помечает его как Completed и на этом все. И видимо уже после реальной отправки с smtp Яндекса, получив ответ (по факту) от принимающей стороны, Яндекс генерит этот ответ. Я все-таки пересмотрел внимательно эти ответы. Они приходят именно от Яндекса. Т.е. на стороне exim его вряд-ли можно отследить, т.к. сам Яндекс видит ошибку и просто информирует меня о ней, вставляя текст ошибки, полученный от реципиента, типа:
В итоге, лично я вижу три варианта решения задачи, в такой последовательности и начну их долбить: 1. Поинтересоваться у службы поддержки Яндекса, как тут быть. Может быть, у них какой-нибудь колл-бэк есть? 2. Поднять свой небольшой smtp, но не для отправки, а для теста RCPT TO (не очень хорошо, конечно). 3. На PHP сделать проверяльщик почты, который будет брать новые письма с заголовком "Undelivered Mail Returned to Sender", и выдергивать из них мыла реципиентов при наличии сообщения "Action: failed\nStatus: 5.0.0" и "Action: failed\nStatus: 5.1.1". Пока буду так рыть. Если у кого будут идеи или кто уже решал такую задачу - велкам! ![]() |
||||
|
|||||
EugenyPavlenko |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
maxipub |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
EugenyPavlenko, благодарю, весьма интересное решение... Но как по мне, слшком навороченное.
![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |