smrsh: “mail.errors.pl” not available for sendmail programs (stat failed)

Если Вы ведете БД пользователей, которым интересен ваш сайт, вы наверняка сталкиваетесь с необходимостью делать массовые рассылки, новостей, событий и т.п.

Когда БД насчитывает 2000-3000 пользователей, то особенностей практически нет, кроме как победить бдительные почтовые системы, которые по началу наверняка отправят вашу новость в СПАМ. Как их победить я напишу в след. посте (нам потребуется DKIM, SPF  и настойчивость :-) )

Но если ваша БД насчитывает 100.000 и более пользователей, которую вы собирали продолжительное время, то наверняка в каждой из рассылок ваш почтовый сервер делает двойную и бесполезную работу при отправке 20% писем, т.к. email данных пользователей уже не существуют:

1. Отправляет письмо пользователю email которого уже удален.
2. Получает ошибку от почтового сервера и перенаправляет её отправителю (если он не локальный)

Конечно, пункт 2 можно пресечь (в данном посте мы говорим исключительно о sendmail), установив директиву ErrorMode в q. Но правильнее будет все-таки отслеживать подобные email  и предпринимать относительно них какие либо действия в зависимости от тематики вашего сайта: удалять, просить пользователя ввести новый email, исключать email из рассылки.

Чтобы отследить данные email, как один из вариантов можно, в качестве получателя ошибок  установить спец. адрес, пришедшие письма на который разбирать на статус ошибки.

Установить получателя ошибок можно используя ключ -f “<email для ошибок>” при отправке письма, или через заголовок Errors-To (который переопределяет email, указанный в -f).

Пусть email Для ошибок будет “mail-errors@your-domain.com”. Если использовать модуль MIME::Lite, то код будет примерно таким:

Чтобы обработать все письма, которые буду приходить на mail-errors@your-domain.com, нужно добавить программу обработчик. Прописываем в /etc/aliases

Не забываем, запустить newaliases и перезапустить sendmail

Вероятнее всего при первом тестировании у вас появится ошибка типа

Правильно, нужно было почитать мануал. Делаем линк запускаемой программы в папку /etc/smrsh, т.е. в нашем случае:

Код простейшего скрипта-обработчика:

 

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">