Как стать автором
Обновить

Комментарии 11

очень интересная идея, спасибо!
Я бы предложил не использовать ИМАП/ и вообще не создавать реалный ящик, а пайпить алиас noreply прямо в ваш скрипт, данные считывать прямо из stdin
Если пайпить в реальном времени, появится возможность DOS.
Можно не пайпить, а по крону ротировать и парсить mbox.
Да и ради операции которая запускается раз в несколько дней держать целый экземпляр приложения в памяти, думаю, не стоит. Особенно когда уже есть запущенные экземпляры(Resque, DJ) для других фоновых периодических задач, которые можно использовать.
А зачем держать экземпляр приложения в памяти? Речь шла о том, что если у вас собственный почтовый сервер, то его можно настроить, чтобы он письма на noreply не сохранял до обработки, а вызывал ваш скрипт для обработки сразу в момент получения. Скрипт будет запускаться единожды на каждое письмо.
Возможно, я не так понял и/или выразился.
Это не просто скрипт, это кусок кода, который надо поместить в Resque/DJ job или rake-task. «Запустить этот скрипт» означает запустить целиком приложение (нам как минимум надо доступ к БД, чтобы пользователей отписать)
А если уже есть экземпляры приложения, которые можно использовать, зачем еще один?
Да еще и на каждое письмо, а если 100500 разом придет? А если почтовый сервер не свой?
Ага, а stand-alone приложению, то которое у вас одно, будет очень хорошо, если на него посыпется 100500 режектов (=
Вопрос противодействию перегрузке надо учитывать что для вашего решения, что для альтернативного скрипта на пайпе.
Не до конца понял комментарий. Что за stand-alone приложение?

Скажу другими словами. 1 фоновый процесс обрабатывающий в цикле 100500 сообщений по одному за раз все-таки лучше чем 100500 новых запускаемых одновременно процессов. Или нет? Да, дольше отработает, но в данной ситуации не нужны реалтайм изменения.
Мы, администраторы на аутсорсе, решили проблему за ~15 минут сделующим образом:
1) Написали скрипт на баше / awk, который по крону парсил exim.log(ежедневно перед logrotate'ом) и записывал в формате «емэйл \t причина_отказа» все проваленные доставки почты -> по списку запускал пхп-скрипт из пункта два -> отправлял клиенту письмо с ответом скрипта из пункта два.
2) Написали php-файл на сервере, который переименовывал email-адрес пользователя в особый формат, формировал и отдавал ответ на основе принятого решения.
3) Сказали, как добавить в код сайта, отвечающего за рассылку проверку, попадает ли пользователь под проверку из пункта два.

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

Скажу сразу — авторизация у скрипта есть, хотя проще было бы поставить ограничение на доступ только с 127.0.0.1. Но тогда криент бы не увидел волшебных полей для ввода и кнопочки, делающей магию)
А такие сообщения ошибок «от почтового сервера» не получится подделать третьему лицу? Тогда можно со стороны отписывать ничего не подозревающих пользователей, если их почтовый адрес известен.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий