Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
R@MATCH $#error $@ 5.7.1 $: "554 Bad hostname for mailserver: " $&{client_name} " (regex rule 6)"
Итак, что здесь происходит?
В секции LOCAL_CONFIG прописаны все наши правила. Строки, начинающиеся с «K» – это так называемые «карты» (maps), в нашем случае имеющие тип regex и проверяющие соответствие входящих аргументов указанному регулярному выражению.
Далее, в секции LOCAL_RULESETS, определяются локальные наборы правил преобразования. В нашем случае такой набор один – Local_check_relay. И здесь мы последовательно проверяем соответствие имени клиента ($&{client_name}) нашим правилам.
Сперва безоговорочно пропускаем ($@ OK) клиентов, подпадающих под правило ournet1. Затем выполняем разрешение имени клиента ($&{client_resolve}) с выдачей соответствующих сообщений об ошибках в зависимости от результата. Если проверку на ournet1 делать после разрешения имени, то соединения наших клиентов, не имеющих PTR-записи, будут отклонены.
Клиенты, успешно прошедшие проверку на соответствие PTR- и A-записей, переходят к дальнейшим правилам. Сначала применяем наши правила-исключения, пропуская клиентов, имя которых соответствует данным регулярным выражениям (если у вашего домена есть проблемы с разрешением имён, то эти правила можно поставить сразу после ournet1; хотя лучше навести порядок в DNS).
Ну а затем блокируем соединения по нашим правилам блокировки. Для удобства последующего анализа лог-файла каждое сообщение об ошибке помечаем номером правила.
Запускаем и тестируем
Теперь можно ещё раз всё проверить (обратите особое внимание, чтобы левая и правая части каждой строки разделялись символами табуляции, а не пробелами), пересобрать sendmail.cf и поставить его на «боевое дежурство» (в данной статье я имею в виду FreeBSD; на вашей системе могут потребоваться другие команды):
# cd /etc/mail
# make && make install
# make restart
Результат работы можно будет получить, проанализировав лог-файлы (maillog.7.bz2 собран, когда данные правила фильтрации ещё не использовались; maillog.0.bz2 – уже с работающими регулярными выражениями):
$ cd /var/log
$ bzcat maillog.7.bz2 | grep "Greylisting in action" | wc -l
203944
$ bzcat maillog.7.bz2 | grep "stat=Sent" | wc -l
1188
$ bzcat maillog.7.bz2 | grep "5.7.1" | wc -l
1179
$ bzcat maillog.0.bz2 | grep "Greylisting in action" | wc -l