В этом уроке я хочу поделиться с вами 7 рекомендациями по борьбе со спамом при использовании SMTP-сервера Postfix на CentOS/RHEL. За последние четыре года, управляя своим почтовым сервером, мне довелось получить множество нежелательных писем. Спам продолжает существовать, потому что отправка массовых писем в интернете обходится очень дешево. Postfix позволяет эффективно блокировать спам, предотвращая его попадание в ваш почтовый ящик, что помогает сэкономить трафик и место на диске.
Рекомендация: Если вы собираетесь развернуть собственный почтовый сервер, советую обратить внимание на iRedmail, который значительно облегчает процесс его установки. В комплекте идут и антиспам-фильтры. Если же вам больше по душе настраивать сервер с нуля, обратите внимание на мою серию уроков по этому вопросу.
Содержание статьи
- 1 Основные свойства спама
- 2 Отказывайтесь от писем, если у клиента нет записи PTR для SMTP.
- 3 Установите ограничения для имени хоста HELO/EHLO в Postfix.
- 4 Отказывайтесь от писем, если у хоста SMTP-клиента отсутствует корректная A-запись.
- 5 Отказывайтесь от писем, если домен MAIL FROM не имеет ни MX-записи, ни A-записи.
- 6 Совет номер пять: Активируйте Greylisting в Postfix.
- 7 Способы уменьшения негативного пользовательского опыта
- 8 Совет №6: Применение актуальных публичных черных списков
- 9 Фильтры спама, которые я использую для Postfix.
- 10 Отчет о журнале Postfix
- 11 Рекомендация №7: Конфигурируйте OpenDMARC для автоматического отклонения писем, не соответствующих требованиям DMARC.
- 12 Создание локального DNS-резолвера для повышения скорости обработки DNS-запросов.
- 13 Конфигурация DNS-резолвера по умолчанию на почтовом сервере CentOS/RHEL.
- 14 Как деактивировать IPv6 в BIND.
- 15 Проблема с обратным DNS-запросом в Postfix
Основные свойства спама
Вот что я узнал о спаме: его можно легко заблокировать.
- PTR-записи для их IP-адресов отсутствуют.
- Спамер указывает недействительное имя хоста в команде HELO/EHLO.
- Они фальсифицируют адрес отправителя MAIL FROM.
- Обычно они не отправляют письмо повторно после неудачной попытки доставки.
Настоящие почтовые серверы не должны обладать такими характеристиками. Вот мои 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.
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, например
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.

Отчет о журнале 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"
Обратите внимание на раздел, посвященный причинам отклонения сообщений. Здесь вы сможете выяснить, почему письма были отклонены, а также есть ли среди них ложные срабатывания. Отклоненные сообщения из серого списка можно не учитывать.

Если переменная 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

