7 Рекомендаций по Эффективной Блокировке Спама с использованием Postfix на CentOS/RHEL

В этом уроке я хочу поделиться с вами 7 рекомендациями по борьбе со спамом при использовании SMTP-сервера Postfix на CentOS/RHEL. За последние четыре года, управляя своим почтовым сервером, мне довелось получить множество нежелательных писем. Спам продолжает существовать, потому что отправка массовых писем в интернете обходится очень дешево. Postfix позволяет эффективно блокировать спам, предотвращая его попадание в ваш почтовый ящик, что помогает сэкономить трафик и место на диске.

Рекомендация: Если вы собираетесь развернуть собственный почтовый сервер, советую обратить внимание на iRedmail, который значительно облегчает процесс его установки. В комплекте идут и антиспам-фильтры. Если же вам больше по душе настраивать сервер с нуля, обратите внимание на мою серию уроков по этому вопросу.

Содержание статьи

Основные свойства спама

Вот что я узнал о спаме: его можно легко заблокировать.

  1. PTR-записи для их IP-адресов отсутствуют.
  2. Спамер указывает недействительное имя хоста в команде HELO/EHLO.
  3. Они фальсифицируют адрес отправителя MAIL FROM.
  4. Обычно они не отправляют письмо повторно после неудачной попытки доставки.

Настоящие почтовые серверы не должны обладать такими характеристиками. Вот мои 7 рекомендаций, которые помогут избавиться от 90% нежелательных писем.

Факт: Примерно 93%~95% электронных писем по всему миру не проходят проверку на уровне SMTP и не достигают ни почтового ящика, ни папки со спамом.

Отказывайтесь от писем, если у клиента нет записи PTR для SMTP.

Запись PTR связывает IP-адрес с доменным именем, что является аналогом записи A. На системах CentOS/RHEL можно получить доменное имя, соответствующее IP-адресу, используя следующую команду:

host

Если команда host отсутствует, необходимо установить пакет bind-utils.

sudo dnf install bind-utils

К примеру, данная команда выводит название хоста моего почтового сервера.

host 23.254.225.226

226.225.254.23.in-addr. arpa domain name pointer mail.linux16.ru.

В связи с ростом спама, множество почтовых серверов, таких как Gmail, gmx.com, gmx.net и facebook.com, требуют наличия действительных записей PTR для клиентов SMTP, которые связаны с их IP-адресами. Каждому администратору почтового сервера необходимо настроить запись PTR для своих SMTP-серверов. Если у клиента SMTP имеется запись PTR, в журнале Postfix (/var/log/maillog) можно будет обнаружить строку, похожую на следующую.

connect from mail.linux16.ru[23.254.225.226]

Если у клиента отсутствует запись PTR для SMTP, имя хоста будет зафиксировано как неизвестное в логах Postfix.

connect from unknown[120.41.196.220]

Для фильтрации писем, не имеющих записей PTR, необходимо открыть главный конфигурационный файл Postfix.

sudo nano /etc/postfix/main.cf

Вставьте следующую строку в smtpd_sender_restrictions. Эта настройка будет отклонять сообщения, если у клиентского IP-адреса отсутствует запись PTR.

reject_unknown_reverse_client_hostname

smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated reject_unknown_reverse_client_hostname

Сохраните файл и закройте его. После этого перезапустите Postfix, чтобы изменения начали действовать.

sudo systemctl restart postfix

Установите ограничения для имени хоста HELO/EHLO в Postfix.

Некоторые спамеры не указывают корректное имя хоста HELO/EHLO во время общения по SMTP. Это может быть как неполное доменное имя, так и несуществующее доменное имя, либо имя, предназначенное только для внутренней сети. К примеру, спамер, который отправляет спам с помощью экземпляра Amazon EC2, регистрируется на моем сервере таким образом:

16 августа в 04:21:13 почтовый сервер postfix/smtpd[7070] зарегистрировал подключение от ec2-54-237-201-103.compute-1.amazonaws.com[54.237.201.103]. В то же время в 04:21:13 служба policyd-spf[7074] добавила запись Received-SPF: None (mailfrom) для идентификации mailfrom; IP-адрес клиента: 54.237.201.103; helo=ip-172-30-0-149.ec2.internal;

Имя хоста HELO — ip-172-30-0-149.ec2.internal, что указывает на его использование исключительно во внутренней сети AWS. У этого имени отсутствуют действительные A-записи или MX-записи.

Для активации ограничения имени хоста HELO/EHLO необходимо внести изменения в основной конфигурационный файл Postfix.

sudo nano /etc/postfix/main.cf

Сначала вставьте следующую строку, чтобы запросить у клиента указание имени хоста HELO/EHLO.

smtpd_helo_required = yes

После этого добавьте три следующих строки для активации smtpd_helo_restrictions.

smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated

Для отказа в обслуживании клиентов, отправляющих неверное имя хоста HELO/EHLO, воспользуйтесь следующей строкой.

reject_invalid_helo_hostname

Применяйте следующую команду для отклонения хостов HELO/EHLO, которые не имеют полной квалификации.

reject_non_fqdn_helo_hostname

Чтобы отвергнуть электронное письмо, если имя хоста HELO/EHLO не имеет записей DNS A или MX, примените

reject_unknown_helo_hostname

smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated reject_invalid_helo_hostname reject_non_fqdn_helo_hostname reject_unknown_helo_hostname

Сохраните файл и закройте его. После этого выполните перезагрузку Postfix.

sudo systemctl reload postfix

Имейте в виду, что, несмотря на то что большинство законных почтовых серверов обладают корректной A-записью для имени хоста HELO/EHLO, иногда встречаются легитимные почтовые серверы, которые не удовлетворяют этому критерию. Вам необходимо внести их в белый список с помощью функции check_helo_access.

Читайте также:  Установка Arch Linux в Virtualbox с поддержкой UEFI в 2019 году

smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated check_helo_access hash:/etc/postfix/helo_access reject_invalid_helo_hostname reject_non_fqdn_helo_hostname reject_unknown_helo_hostname

После этого необходимо создать файл /etc/postfix/helo_access.

sudo nano /etc/postfix/helo_access

Включите в белый список действительные имена хоста почтового сервера HELO/EHLO, представленные ниже.

optimus-webapi-prod-2.localdomain OK va-massmail-02.rakutenmarketing.com OK

Скорее всего, вы не уверены, какие имена хостов следует внести в белый список. Поэтому просто скопируйте указанные выше две строки, так как они являются единственными записями в вашем файле helo_access. Вы всегда сможете добавить дополнительные имена хостов позже. Сохраните изменения и закройте файл. После этого выполните следующую команду для создания файла /etc/postfix/helo_access. db.

sudo postmap /etc/postfix/helo_access

Перезапустите Postfix.

sudo systemctl reload postfix

Отказывайтесь от писем, если у хоста SMTP-клиента отсутствует корректная A-запись.

Законный почтовый сервер обязан иметь актуальную A-запись для своего хостнейма. IP-адрес, полученный из A-записи, должен совпадать с IP-адресом самого почтового сервера. Чтобы исключить письма от хостов без действительной A-записи, необходимо внести изменения в основной конфигурационный файл Postfix.

sudo nano /etc/postfix/main.cf

Включите следующие две строки в smtpd_sender_restrictions.

reject_unknown_reverse_client_hostname reject_unknown_client_hostname

smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated reject_unknown_reverse_client_hostname reject_unknown_client_hostname

Сохраните файл и закройте его. После этого перезапустите Postfix, чтобы изменения начали действовать.

sudo systemctl restart postfix

Имейте в виду, что параметр reject_unknown_client_hostname не требует от SMTP-клиента отправки команды HELO. Вместо этого он извлекает имя хоста из PTR-записи и затем осуществляет проверку A-записи.

Отказывайтесь от писем, если домен MAIL FROM не имеет ни MX-записи, ни A-записи.

Адрес MAIL FROM, или адрес отправителя, также называют адресом конверта. Некоторые спамеры прибегают к использованию несуществующих доменов в этом адресе. Если у домена отсутствует MX-запись, Postfix попытается найти A-запись основного домена и направит письмо на этот хост. Если же у домена отправителя нет ни MX-, ни A-записи, Postfix не сможет отправить сообщение. Зачем же принимать письма, на которые невозможно ответить?

Для того чтобы исключить этот вид спама, необходимо внести изменения в главный конфигурационный файл Postfix.

sudo nano /etc/postfix/main.cf

Включите следующую строку в smtpd_sender_restrictions. Она будет блокировать электронные письма, если домен, указанный в команде MAIL FROM, не содержит ни записи MX, ни записи A.

reject_unknown_sender_domain

smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated reject_unknown_sender_domain reject_unknown_reverse_client_hostname reject_unknown_client_hostname

Сохраните файл и закройте его. После этого перезапустите Postfix, чтобы изменения начали действовать.

sudo systemctl restart postfix

Учтите, что я разместил это ограничение выше остальных reject-ограничений. Исходя из моего опыта, если оно находится ниже других, оно не будет функционировать. (Возможно, это касается только моего почтового сервера.)

Совет номер пять: Активируйте Greylisting в Postfix.

Согласно требованиям протокола SMTP, любой действительный SMTP-клиент обязан иметь возможность повторной отправки электронных писем в случае неудачи доставки. По умолчанию Postfix настроен на повторную отправку неудачных сообщений в течение 4 часов.~За пять дней до того, как уведомить отправителя о невозможности доставки. Обычно спамеры рассылают письма лишь один раз и не предпринимают попыток повторной отправки.

Postgrey представляет собой сервер для реализации политики greylisting в системе Postfix. Владельцы CentOS/RHEL могут установить его через репозиторий EPEL.

sudo dnf install epel-release sudo dnf install postgrey

После установки выполните запуск через systemctl.

sudo systemctl start postgrey

Активируйте автоматический запуск при загрузке.

sudo systemctl enable postgrey

В CentOS/RHEL Postgrey работает через Unix-сокет, расположенный по пути /var/spool/postfix/postgrey/socket.

Теперь необходимо внести изменения в основной конфигурационный файл Postfix, чтобы настроить использование сервера политики серого листинга.

sudo nano /etc/postfix/main.cf

В smtpd_recipient_restrictions добавьте следующую строку.

check_policy_service unix:postgrey/socket

Директива check_policy_service unix

Закройте файл после сохранения и перезапустите Postfix.

sudo systemctl restart postfix

Начиная с этого момента, Postgrey будет блокировать электронное письмо, если триплет (IP-адрес отправителя, email отправителя, email получателя) ранее не встречался. В журнале /var/log/maillog следующее сообщение указывает на новый триплет отправителя. Статус «greylist» обозначает, что письмо было отклонено.

postgrey[1016]: action=greylist, reason=new, client_name=unknown, client_address=117.90.24.148/32, [email protected], [email protected]

Из моего опыта, китайские спамеры предпочитают использовать фальшивые, странно оформленные и случайным образом сгенерированные адреса отправителей для каждого письма. По этой причине внесение этих адресов в черный список не даст желаемого эффекта. Однако они никогда не пытаются отправить отклоненное письмо повторно с тем же адресом отправителя, что делает технологию greylisting весьма действенным способом для блокировки такого спама.

Способы уменьшения негативного пользовательского опыта

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

Список доверенных лиц

Postgrey включает в себя два файла для белого списка: /etc/postfix/postgrey_whitelist_clients и /etc/postfix/postgrey_whitelist_recipients. Первый файл содержит перечень имен хостов, в то время как второй предназначен для адресов получателей.

Почтовые серверы Google автоматически находятся в белом списке. Это означает, что независимо от того, используется ли адрес с доменом @gmail.com или другой, если отправитель использует сервер Google, Postgrey не заблокирует сообщение. Пример тому можно увидеть в следующей записи моего лога /var/log/maillog.

postgrey[1032]: action=pass, reason=client whitelist, client_name=mail-yb0-f190.google.com

Обратите внимание: журналы postgrey можно просмотреть с помощью следующей команды: sudo journalctl — u postgrey.

Вы можете внести дополнительные имена хостов в файл /etc/postfix/postgrey_whitelist_clients, например

Читайте также:  Установить разделитель для разбора переменных в Linux

facebook.com bounce. twitter.com blogger.com email.medium.com

Эти имена хостов можно извлечь с помощью утилиты под названием pflogsumm, о которой я упомяну позже в этом материале. Сохраните изменения в файле и закройте его, затем перезапустите Postgrey.

sudo systemctl restart postgrey

Создание альтернативного имени хоста MX, использующего тот же IP-адрес.

Можно указать несколько записей MX для вашего домена, как это демонстрируется ниже.

Тип записи Имя Почтовый сервер Приоритет MX @ mail.yourdomain.com 0 MX @ mail2.yourdomain.com 5

Отправитель в первую очередь обратится к почтовому серверу с приоритетом 0. Если mail.yourdomain.com отклонит сообщение по причине наличия в сером списке, отправитель сразу же попробует отправить его через второй почтовый сервер, имеющий приоритет 5.

В случае, если два хоста почтового сервера имеют один и тот же IP-адрес, письмо, отправленное через второй почтовый сервер, будет принято мгновенно (при условии успешного прохождения всех остальных проверок), и пользователи не почувствуют задержки, вызванной серым списком.

Для этого нужно задать очень короткий интервал задержки, например, 1 секунду, в файле /etc/sysconfig/postgrey, как указано ниже. Задержка сообщает SMTP-клиенту, сколько времени он должен ждать перед повторной отправкой. Если интервал будет слишком длительным, вторая попытка доставки письма будет отклонена.

POSTGREY_DELAY="--delay=1"

Сохраните изменения и закройте документ. После этого перезапустите Postgrey.

sudo systemctl restart postgrey

Имейте в виду, что не все почтовые серверы сразу же будут пытаться передать сообщения через второй хост MX.

Совет №6: Применение актуальных публичных черных списков

Существуют спам-сообщения, которые отправляются с серверов, имеющих действительное имя хоста и PTR-запись, и могут проходить через серые списки. В таком случае для блокировки спама можно использовать черные списки. Существует множество общедоступных черных списков в реальном времени (RBL), которые также известны как DNSBL (DNS-списки). Понятие «реальное время» означает, что эти списки постоянно обновляются. IP-адрес или доменное имя могут быть в списке сегодня, а завтра уже отсутствовать, поэтому результаты могут варьироваться в зависимости от времени запроса.

Существует возможность применения нескольких черных списков для предотвращения спама. Посетите сайты https://www.debouncer.com и mxtoolbox.com, введите домен или IP-адрес спамера, чтобы выяснить, какие черные списки их блокируют. Затем можно воспользоваться этими черными списками. Например, я узнал, что спамеры были внесены в один из следующих черных списков:

  • dbl.spamhaus.org
  • zen.spamhaus.org
  • multi.uribl.com
  • ivmURI
  • InvaluementURI

В связи с этим, я собираюсь внести дополнительные настройки в файл /etc/postfix/main.cf. Некоторые общественные черные списки требуют оплаты раз в месяц. На данный момент я пользуюсь бесплатным ресурсом spamhaus. org.

smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated check_policy_service unix:private/policyd-spf check_policy_service unix:postgrey/socket reject_rhsbl_helo dbl. spamhaus. org reject_rhsbl_reverse_client dbl. spamhaus. org reject_rhsbl_sender dbl. spamhaus. org reject_rbl_client zen. spamhaus. org

  • rhs обозначает правую часть, что соответствует доменному имени.
  • reject_rhsbl_helo заставляет Postfix отвергать сообщение, если имя хоста HELO или EHLO клиента находится в черном списке.
  • reject_rhsbl_reverse_client: отклоняет сообщение, если обратное имя хоста клиента не прошло проверку по черному списку. Postfix получит имя хоста клиента из PTR-записи. В случае, если это имя находится в черном списке, сообщение будет отвергнуто.
  • reject_rhsbl_sender заставляет Postfix отказывать в приеме письма, если домен отправителя (MAIL FROM) находится в черном списке.
  • reject_rbl_client: Это черный список, составленный по IP-адресам. Если IP-адрес клиента занесен в этот список, то его электронное письмо не будет принято.

Некоторые спамеры применяют почтовый сервер Google, из-за чего reject_rhsbl_helo оказывается бесполезным. Однако большинство из них используют свои собственные домены в заголовке MAIL FROM, что делает reject_rhsbl_sender действенным инструментом.

Формирование белого списка.

Порой законные почтовые серверы оказываются в черном списке. Вы можете сформировать белый список, чтобы избежать их блокировки. Подготовьте следующий файл.

sudo nano /etc/postfix/rbl_override

В этом документе укажите доменные имена, которые должны быть добавлены в белый список, как показано ниже.

dripemail2.com OK //Этот домен принадлежит drip.com

mlsend.com OK //Этот домен принадлежит сервису email-маркетинга MailerLite

Сохраните файл и закройте его. После этого введите следующую команду для создания файла rbl_override. db.

sudo postmap /etc/postfix/rbl_override

Измените главный конфигурационный файл Postfix.

sudo nano /etc/postfix/main.cf

В разделе smtpd_recipient_restrictions внесите следующую строку.

check_client_access hash:/etc/postfix/rbl_override

Как указано ниже, это необходимо расположить выше остальных проверок RBL.

smtpd_recipient_restrictions =

permit_mynetworks

permit_sasl_authenticated

проверь_политику_сервиса unix

проверить_политику_сервиса unix

проверка доступа клиента hash:/etc/postfix/rbl_override

отклонить_rhsbl_helo dbl. spamhaus. org

отклонить_rhsbl_обратный_клиент dbl. spamhaus. org

отклонить_отправителя_rhsbl dbl. spamhaus. org

reject_rbl_client zen. spamhaus. org

Перезапустите Postfix, чтобы изменения начали действовать.

sudo systemctl reload postfix

Применение открытого белого списка для снижения числа ложных срабатываний.

Иногда важно иметь собственный белый список, но также можно воспользоваться общественными вариантами. Один из самых известных — это dnswl. org. На данный момент доступен только белый список для IP-адресов, в то время как белый список для доменных имен находится на стадии бета-тестирования. Чтобы его использовать, добавьте следующую строку в раздел smtpd_recipient_restrictions.

permit_dnswl_client list. dnswl. org=127.0.[0..255].[1..3]

Как указано ниже, это необходимо расположить перед проверкой reject_rbl_client.

smtpd_recipient_restrictions =

permit_mynetworks

permit_sasl_authenticated

проверь_политику_сервиса unix

проверить_политику_сервиса unix

проверить_доступ_клиента хэш:/etc/postfix/rbl_override

отклонить_rhsbl_helo dbl. spamhaus. org

отклонить_rhsbl_обратный_клиент dbl. spamhaus. org

отклонить_отправителя_rhsbl dbl.spamhaus.org

разрешить_dnswl_client list.dnswl.org=127.0.[0..255].[1..3]

reject_rbl_client zen.spamhaus.org

Другой популярный белый список — это swl.spamhaus.org, и его также стоит добавить в вашу конфигурацию.

permit_dnswl_client swl.spamhaus.org

Нельзя, чтобы IP-адрес находился одновременно в белом и черном списке Spamhaus. Поэтому, если в Postfix вы полагаетесь только на черный список Spamhaus, проверка белого списка не требуется.

Фильтры спама, которые я использую для Postfix.

Вот изображение моих настроек фильтров спама для Postfix.

best-postfix-spam-filter-centos-rhel-mail-server

Отчет о журнале Postfix

Pflogsumm — это превосходное средство для формирования сводки логов Postfix. На системах CentOS/RHEL он доступен в составе пакета postfix-perl-scripts.

sudo dnf install postfix-perl-scripts

Воспользуйтесь данной командой для создания отчета за текущий день.

sudo pflogsumm - d today /var/log/maillog

Подготовьте отчет за прошедший день.

sudo pflogsumm - d yesterday /var/log/maillog

Если вы намерены создать отчет за текущую неделю.

sudo pflogsumm /var/log/maillog

Для того чтобы сначала отображать отчеты о «проблемах» (возвраты, задержки, предупреждения, отклонения) перед «нормальной» статистикой, применяйте флаг —problems-first.

sudo pflogsumm - d today /var/log/maillog --problems-first

Для того чтобы включить адрес отправителя электронной почты в каждый пункт отчета о отклонениях, примените флаг —rej-add-from.

sudo pflogsumm - d today /var/log/maillog --rej-add-from

Для того чтобы отобразить полную информацию о причинах в отчетах об отклонениях, воспользуйтесь флагом —verbose-msg-detail.

sudo pflogsumm - d today /var/log/maillog --rej-add-from --verbose-msg-detail

Вы можете настроить cron-задачу, чтобы pflogsumm ежедневно отправлял отчет на вашу электронную почту.

sudo crontab - e

Вставьте следующую строку, чтобы отчет формировался ежедневно в 4:00 утра.

0 4 * * * /usr/sbin/pflogsumm - d yesterday /var/log/maillog --problems-first --rej-add-from --verbose-msg-detail - q

Для получения отчета на электронную почту вставьте следующую строку перед всеми заданиями cron.

MAILTO color: #ff0000;">your-email-address"

Обратите внимание на раздел, посвященный причинам отклонения сообщений. Здесь вы сможете выяснить, почему письма были отклонены, а также есть ли среди них ложные срабатывания. Отклоненные сообщения из серого списка можно не учитывать.

лучший фильтр спама для postfix

Если переменная MAILTO уже задана, но вам необходимо направить сводку журнала Postfix на другой электронный адрес, добавьте следующую строку в ваше задание Cron.

0 4 * * * /usr/sbin/pflogsumm - d yesterday /var/log/maillog --problems-first --rej-add-from --verbose-msg-detail - q | mutt - s "Postfix log summary" your-email-address

Вывод команды pflogsumm передается в mutt, который является почтовым агентом командной строки. Он использует этот вывод в качестве содержимого письма и отправляет его на указанный вами адрес электронной почты. Естественно, для этого необходимо установить mutt на ваш сервер CentOS/RHEL.

sudo dnf install mutt

Рекомендация №7: Конфигурируйте OpenDMARC для автоматического отклонения писем, не соответствующих требованиям DMARC.

DMARC (Аутентификация сообщений на основе домена, отчетность и соответствие) — это стандарт в интернете, который помогает владельцам доменов защищать свои имена от злоупотреблений со стороны мошенников. Изучите одно из предложенных руководств по настройке OpenDMARC.

  • Конфигурация OpenDMARC с Postfix на CentOS/RHEL для предотвращения спама.

Создание локального DNS-резолвера для повышения скорости обработки DNS-запросов.

Postfix требует обращения к DNS-записям для обработки каждого SMTP-диалога. Чтобы ускорить процесс DNS-запросов, рекомендуется использовать локальный DNS-резолвер. Множество DNS-черных списков накладывает ограничения на число запросов. Запуск локального DNS-резолвера, который будет кешировать записи, поможет вам не превышать эти лимиты.

Можно настроить DNS-сервер bind9.

sudo dnf install bind

Запустите BIND 9 командой:

sudo systemctl start named

Активируйте автоматический запуск при старте системы.

sudo systemctl enable named

Вы можете узнать его состояние с помощью:

systemctl status named

named.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disable> Active: активный (работает) since Sun 2020-05-17 11:07:34 EDT; 9s ago Process: 7203 ExecStop=/bin/sh - c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill - TE> Process: 7218 ExecStart=/usr/sbin/named - u named - c $ $OPTIONS (code=exited,> Process: 7215 ExecStartPre=/bin/bash - c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; the> Main PID: 7220 (named) Tasks: 4 (limit: 5045) Memory: 55.5M CGroup: /system. slice/named.service └─7220 /usr/sbin/named - u named - c /etc/named.conf -4

Совет: Если команда, упомянутая выше, не выполняется мгновенно, нажмите клавишу Q.

Конфигурация DNS-резолвера по умолчанию на почтовом сервере CentOS/RHEL.

Необходимо задать 127.0.0.1 в качестве стандартного DNS-резолвера. Для проверки текущего DNS-резолвера на CentOS/RHEL используйте следующую команду.

cat /etc/resolv.conf

# Generated by NetworkManager nameserver 192.168.0.1 nameserver 8.8.8.8

Для того чтобы настроить BIND в качестве основного DNS-резолвера, сначала необходимо определить название вашего основного сетевого интерфейса, используя следующую команду.

ip addr

У меня это ens3. Затем введите следующую команду для редактирования конфигурационного файла сетевого интерфейса. Подставьте вместо ens3 название вашего интерфейса.

sudo nano /etc/sysconfig/network-scripts/ifcfg-ens3

Определите параметр DNS1 и измените его значение на 127.0.0.1. Учтите, что если остальные параметры в данном файле находятся в двойных кавычках, то и 127.0.0.1 следует также обрамить кавычками.

DNS1="127.0.0.1"

Если параметр DNS1 отсутствует, добавьте предложенную строку в конец файла. Рекомендуется также указать второй DNS-резолвер, добавив следующую строку, чтобы снизить риск сбоев в работе DNS.

DNS2="8.8.8.8"

Сохраните изменения и закройте файл. После этого перезапустите NetworkManager, чтобы изменения были применены.

sudo systemctl restart NetworkManager

Теперь вы можете вновь ознакомиться с содержимым файла /etc/resolv.conf.Как видно, 127.0.0.1 (BIND) стал основным DNS-резолвером в CentOS/RHEL.

Как деактивировать IPv6 в BIND.

Если вашему почтовому серверу недоступен публичный IPv6-адрес, стоит рассмотреть возможность отключения IPv6 в BIND, иначе в журнале BIND будет много ошибок, связанных с этой версией протокола, как видно ниже.

network unreachable resolving 'mirrors. fedoraproject. org/A/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors. fedoraproject. org/AAAA/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors. fedoraproject. org/A/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors. fedoraproject. org/AAAA/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53

Чтобы деактивировать IPv6 в BIND на CentOS/RHEL, достаточно открыть файл /etc/sysconfig/named.

sudo nano /etc/sysconfig/named

Добавьте следующую строку в конец документа.

OPTIONS="-4"

Сохраните изменения и закройте файл. После этого перезапустите службу named, и все будет готово.

sudo systemctl restart named

Теперь выполните следующую команду. Вы заметите, что BIND больше не реагирует на запросы по IPv6-адресу.

sudo netstat - lnptu | grep named

Проблема с обратным DNS-запросом в Postfix

Если ваш сервер Postfix SMTP функционирует в среде chroot, он может не иметь возможности выполнить обратный DNS-запрос. В такой ситуации IP-адрес с записью PTR всё равно будет распознан как неизвестный.

postfix/smtpd[14734]: connect from unknown[23.254.225.226]

Для решения данной проблемы следует переместить библиотеки, нужные для выполнения обратного DNS-запроса, в директорию окружения chroot.

sudo mkdir /var/spool/postfix/lib64 sudo cp - vl /usr/lib64/libnss_* /var/spool/postfix/lib64

После этого выполните перезапуск Postfix.

sudo systemctl restart postfix