Вопрос или проблема
Как настроить exim на Debian для повторной отправки, если я получаю отклонение типа:
553 5.3.0 alph747 DNSBL:RBL 521<xxx.xxx.xxx.xxx>_is_blocked …
Таким образом, периодически мой почтовый сервер попадает в список spamhaus, который spamhaus говорит “не используйте этот список для черного списка”, но все это делают. Поэтому я удаляю свой сервер каждые год или два. Но теперь, похоже, это делает AT&T. Я могу купить релейную службу, которая заставляет меня платить за каждое сообщение, но я хочу использовать это только в случае необходимости. Мы отправляем всего лишь несколько десятков писем в день.
Чтобы прояснить, мой IP не находится в spamhaus или в каком-либо спам-списке на DNSBL или mxtoolbox. ATT просто так говорит.
Чтобы настроить Exim на Debian для доставки через релейный сервер только в том случае, если удаленный сервер отклоняет конкретные сообщения (например, “<xxx.xxx.xxx.xxx>_is_blocked.”), отредактируйте ваш файл конфигурации Exim (обычно /etc/exim4/exim4.conf.template
). Добавьте пользовательский ACL в секцию acl_check_rcpt
, чтобы запретить на основе этих сообщений об отклонении. Затем настройте маршрутизатор, который использует релейный сервер, когда такие сообщения обнаруживаются.
Ответ или решение
Для настройки Exim на Debian, чтобы он использовал релейную почту только в случае, если удаленные серверы отклоняют сообщения с конкретными кодами ошибок, вам нужно внести изменения в конфигурацию Exim. В данном ответе я подробно опишу шаги по конфигурации, которые помогут вам справиться с этой задачей.
Шаг 1: Открытие конфигурационного файла
Ваша конфигурация Exim по умолчанию находится в файле /etc/exim4/exim4.conf.template
. Обязательно создайте резервную копию этого файла перед внесением изменений:
sudo cp /etc/exim4/exim4.conf.template /etc/exim4/exim4.conf.template.bak
Шаг 2: Настройка ACL для проверки получателя
Следующим шагом будет настройка ACL (Access Control List) в разделе acl_check_rcpt
. Откройте файл конфигурации для редактирования:
sudo nano /etc/exim4/exim4.conf.template
Найдите секцию acl_check_rcpt
. Здесь вы можете добавить проверку, чтобы отклонять сообщения, которые содержат конкретные текстовые строки, такие как "is_blocked." Вы можете использовать регулярное выражение для поиска текста в сообщениях об ошибках.
Пример конфигурации
Добавьте следующий код в секцию acl_check_rcpt
:
accept hosts = :
message = "Processing message for relay"
deny message = "Your IP is blocked"
condition = ${if match{$received_separated}{$reg_expressions}}
Здесь matches
должен быть заменен вашим регулярным выражением, которое будет ловить сообщение об ошибке.
Шаг 3: Настройка маршрутизатора для релейной отправки
После установки проверки ACL, вам необходимо настроить маршрутизатор, который будет использовать релейный сервер при получении соответствующего отклонения. Найдите секцию routers
в вашем конфигурационном файле. Добавьте сюда следующий блок:
relay_via_service:
driver = smtp
relay_hosts = <адрес_вашего_релея>
condition = ${if match{$received_separated}{<ваше_условие>}}
Замените <адрес_вашего_релея>
на фактический адрес вашего релейного сервиса, а <ваше_условие>
— на условие, которое соответствует вашему требованию.
Шаг 4: Перезапуск Exim
После внесения всех изменений сохраните файл и закройте текстовый редактор. Теперь нужно перезапустить Exim для применения изменений:
sudo systemctl restart exim4
Шаг 5: Тестирование конфигурации
Для тестирования вашей конфигурации, отправьте тестовое сообщение на сервер, использующий ваш Exim. Проверьте, обрабатываются ли ошибки корректно, и отправляются ли сообщения через релейный сервер в случае, если оригинальный сервер отклоняет их с указанной ошибкой.
Заключение
Теперь ваша установка Exim на Debian настроена для использования релейного сервиса только в случае специфических отклонений. Если возникнут какие-либо проблемы или ошибки, проверьте логи Exim (обычно находятся в /var/log/exim4/mainlog
) для диагностики и устранения неполадок. Эта настройка обеспечит более надежную доставку ваших сообщений, избегая лишних затрат на релейные услуги, если ваши сообщения принимаются без проблем.