Почему вы должны использовать :fail:


Если в сPanel в качестве почтового сервера установлен exim, имеются веские технические причины, по которым вы должны использовать только :fail: и не использовать :blackhole: для удаления писем, пришедших на несуществующий почтовый аккаунт.

Нами было проведено длительное тестирование, целью которого было выявление настройки exim для удаления таких писем. Сделанные выводы мы привели в данной статье.

Вообще, существуют два разных метода для удаления писем, пришедших на несуществующий аккаунт POP3 учетной записи (основной домен или алиас). С тех пор, как verify=recipient включено в cPanel в стандартный ACL для exim, эти два метода удаления различаются совершенно четко :

При использовании :blackhole: письмо сначала будет принято на почтовый сервер. И только после прохождения через exim такое письмо будет направлено в null (/dev/null) и молча проигнорировано.

К недостаткам этого метода можно отнести следующее:
1. Это трата трафика сервера электронной почты, т.к. письмо допускается на сервер
2. Это трата ресурсов сервера (CPU, памяти и дискового ввода/вывода), так как письмо проходит полную обработку exim ом,прежде чем попасть наконец в /dev/null
3. Т.к. при blackhole электронная почта проходит все этапы обработки exim"ом, недоставленное письмо может находиться в очереди очень долго. Обычно это происходит, если какая-либо из обычных проверок проходит неудачно. Тогда такие письма помещаются exim"ом в очередь для повторных попыток. Это может привести к десяткам тысяч недоставленных писем, которые будут накапливаются в очереди exim и могут, в свою очередь, вызвать ряд серьезных проблем с сервером и его ресурсами, что повлияет на нормальное и своевременное получение электронной почты.
4. Это фактически нарушение SMTP RFC, так как вы не отправляете уведомление о том, что SMTP-сервер не доставил письмо получателю, как рекомендовано спецификацией
5. Это может стать причиной того, что нужное письмо никогда не будет доставлено. Т.к. при данном методе все письма проходят такую проверку, как верификация отправителя, количество писем в очереди увеличивается. Если некоторые проверки писем не смогут успешно завершиться, то письма останутся в очереди exim и где будут находиться до тех пор, пока наконец не удалятся автоматически (как правило, через 4 или более дней). Это может привести к образованию очень больших очередей почты, неоднократная полная обработка спама в которой, может заметно ухудшить показатели работоспособности сервера

При использовании :fail: электронная почта для несуществующего аккаунта никогда не поступает на сервер. На начальном этапе отсылки почты, когда SMTP-сервер отправителя соединяется с вашим SMTP-сервером, SMTP-сервер отправителя направляет командой RCPT уведомления серверу получателя для какого адреса электронной почты предназначено данное письмо. Затем сервер получателя (ваш сервер) проверяет, действительно существует на сервере получатель письма(POP3 аккаунт домена или алиаса) и если нет, он выдает SMTP DENY, по которому сервер отправителя прекращает попытки доставки сообщения.

К преимуществам данного метода можно отнести следующее:

1. Это экономит трафик, т.к. вы не получаете такие письма на свой сервер
2. Это экономит ресурсы, т.к. сервер электронной почты не должен обрабатывать такую почту
3. Это соответствует SMTP RFC, потому что SMTP сервер отправителя получает команду DENY
4. Ваш сервер не отправляет никаких дополнительных данных (только команду DENY)
5. Ваш сервер не отправляет никаких данных ваших отправителю (т.е. адрес в От: прочерк)
6. SMTP сервер отправителя самостоятельно возвращает письмо отправителю и уведомляет о недоставке

Вот простое описание того, что происходит во время SMTP переговоров:
Некоторый SMTP-сервер подключается к вашему серверу на 25 порт и инициирует SMTP соединения (команда EHLO)
Отправляется сообщение о том, для кого доставляется письмо (команда MAIL FROM)
Отправляется сообщение о том, кто отправляет данное письмо на ваш сервер (команда RCPT)
Ваш сервер проверяет наличие указанного адреса электронной почты на предмет существования и, следовательно, возможности доставки на сервер.

Если у вас не настроен адрес электронной почты по умолчанию (Default Address) и установлено значение :fail: то:

Ваш сервер отправит обратно, в то же соединение с сервером, уведомление "Здесь нет таких" (команду DENY)
Сервер отправителя скажет, что попытки их пользователя отправить сообщение на ваш сервер не увенчались успехом.
Ваш сервер не примет сообщение для несуществующего аккаунта.

Также нами в ACL Exim Deny реализована следующая задача :

Если сервер отправителя пытается отправить почту на четыре адреса, которые не существуют на сервере, ACL отключает сессию с сервера отправителя (DROP) и помещает IP-адрес сервера отправителя в файл /etc/exim_deny

Если сервер отправителя снова соединяется с вашим сервером, ACL сначала проверяет файл /etc/exim_deny и если там находится IP-адрес отправителей, то сессия сразу же отключается