Топ-7 ефективних порад щодо блокування спаму за допомогою Postfix на CentOS/RHEL
13:38, 18.12.2023
Порада #1: Потрібні PTR-записи для SMTP-клієнтів
PTR-записи, або записи-покажчики, - це зворотні записи DNS, які використовуються для пошуку в DNS.
Система доменних імен (DNS) - це місце, де зберігаються дані про зареєстровані домени. Коли ви хочете переглянути реєстри, ви виконуєте DNS-пошук. Браузери зазвичай роблять це, коли користувачі вводять свої адреси електронної пошти, і через них отримують IP-адресу поштового сервера. Результатом такого запиту зазвичай є запис A.
Зворотний DNS-пошук - це коли сервер отримує домен через IP-адресу. Результатом такого запиту є запис PTR.
Чому PTR-записи є життєво важливими? На шляху до поштової скриньки електронні листи проходять через сервери. У цьому процесі поштові провайдери здійснюють пошук DNS і зворотний пошук DNS. Якщо вони не збігаються, електронний лист класифікується як спам. Тому поштові провайдери вимагають, щоб SMTP-клієнти мали правильні PTR-записи; зазвичай цим займається адміністратор SMTP-сервера.
Тепер ви можете виконати зворотний пошук DNS самостійно. Для цього виконайте наступну команду в CentOS/RHEL, щоб отримати доменне ім'я та IP-адресу:
host <IP-адреса>.
Багато поштових серверів мають вимогу щодо наявності дійсних PTR-записів, що відповідають IP-адресам. Якщо це так, то в журналі Postfix (/var/log/maillog) буде наступний рядок, якщо SMTP-клієнт має PTR-записи:
connect from "hostname" [IP-адреса].
Якщо IP-адреса SMTP-клієнта не має PTR-записів, замість "hostname" у Postfix журналі буде "unknown".
Ви можете фільтрувати листи, які не пов'язані з жодним PTR-записом, за допомогою Postfix. Для цього вам потрібно відкрити конфігураційний файл Postfix наступною командою:
sudo nano /etc/postfix/main.cf
Після цього в полі "smtpd_sender_restrictions" потрібно додати:
reject_unknown_reverse_client_hostname
Після цього збережіть і перезавантажте Postfix, щоб зміни набули чинності:
sudo systemctl restart postfix
Порада #2: Впровадьте обмеження на імена хостів HELO/EHLO
Процедура EHLO дозволяє клієнту представитися SMTP-серверу. HELO дуже схожа на EHLO, але передає менше даних на сервер.
Тому іноді в діалоговому вікні SMTP можна побачити неіснуюче доменне ім'я або доменне ім'я, яке не функціонує; це, швидше за все, свідчить про те, що лист від спамерів. Вам потрібно відредагувати конфігураційний файл Postfix, щоб активувати обмеження HELO/EHLO:
sudo nano /etc/postfix/main.cf
Для того, щоб клієнт надавав запит на ім'я хоста, введіть:
smtpd_helo_required = yes
Щоб увімкнути обмеження, додайте:
smtpd_helo_restrictions =
permit_mynetworks
permit_sasl_authenticated
Якщо ви хочете відхиляти клієнтів, які надають невірне ім'я хоста, скористайтеся цією командою:
reject_invalid_helo_hostname
Щоб відхилити імейл, для якого не існує жодного запису, використовуйте
reject_unknown_helo_hostname
Підсумовуючи, всі випадки, які ви можете відхилити, будуть виглядати приблизно так:
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_invalid_helo_hostname
reject_unknown_helo_hostname
Потім збережіть файл і перезавантажте Postfix:
sudo systemctl reload Postfix
Іноді навіть легальним поштовим серверам потрібно відповідати стандартам HELO/EHLO. Щоб уникнути помилок у роботі Postfix, вам потрібно внести ці сервери до білого списку за допомогою
check_helo_access hash:/etc/postfix/helo_access
Потім створіть файл /etc/postfix/helo_access за допомогою:
sudo nano /etc/postfix/helo_access
Приклад білого списку може виглядати так:
optimus-webapi-prod-2.localdomain OK
va-massmail-02.rakutenmarketing.com OK
Після того, як ви додали сервери до списку, створіть файл /etc/postfix/helo_access.db:
sudo postmap /etc/postfix/helo_access
А потім перезавантажте Postfix:
sudo systemctl reload Postfix
Порада #3: Перевірте A-записи для імен хостів SMTP-клієнтів
Сервери спаму часто не мають дійсних A-записів для своїх IP-адрес. Ви можете відфільтрувати IP-адреси без A-записів, відредагувавши конфігураційний файл Postfix, як у попередніх прикладах.
Додайте наступні команди до розділу "smtpd_sender_restrictions":
reject_unknown_reverse_client_hostname reject_unknown_client_hostname
Збережіть конфігураційний файл і перезавантажте Postfix.
Пам'ятайте, що дві згадані команди не відкидають шахрайські імена хостів HELO/EHLO.
Порада №4: Відхиляйте листи з невідповідними записами MX або A
MX розшифровується як адреса "Mail From", яку також називають адресою "листівка від".
Іноді спам надсилається з неіснуючих доменів, адреса "Mail From" яких не містить жодних записів. Якщо домен відправника не має жодних записів, Postfix не зможе відправити листа на цей домен, тому ви можете відхилити його.
Щоб заблокувати цей тип спаму, вам потрібно знову відредагувати конфігураційний файл Postfix аналогічно до того, як це було описано в попередніх порадах.
Щоб відхиляти листи від доменного імені з адреси, яка не має записів MX або A, додайте до розділу "smtpd_sender_restrictions" наступне:
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.
Щоб уникнути проблем, краще розмістити reject_unknown_sender_domain над усіма іншими командами "reject".
Порада #5: Розгортайте сірий список за допомогою Postfix
Сірі списки - це метод відхилення спаму, який відкидає всі поштові сервери, що не входять до сірих списків. Якщо сервер-відправник не є шахрайським, він надішле імейл повторно. Однак більшість спамерів не надсилають імейл повторно. Таким чином, спам блокується. Завдяки сірому списку сервери, які повторно надсилають імейли, будуть додані до списку і не зіткнуться з перебоями в майбутньому; сірий список не дозволить серверам, які повторно не надсилають імейли, продовжувати свою діяльність.
Щоб розгорнути функцію сірих списків за допомогою Postfix, вам потрібно отримати доступ до служби Postgrey. Для користувачів CentOS/RHEL установка Postgrey доступна з репозиторію EPEL. Коли його буде встановлено, введіть наступну команду з:
sudo systemctl start postgrey
і запустіть його:
sudo systemctl enable postgrey
Потім вам потрібно відредагувати конфігураційний файл Postgrey, щоб він міг використовувати сервер сірих списків:
sudo nano /etc/postfix/main.cf
В "smtpd_recipient_restrictions" додайте наступне:
check_policy_service unix:postgrey/socket
Збережіть і перезавантажте Postfix.
Після цього Postgrey відхилятиме доступ з нової IP-адреси відправника, адреси електронної пошти відправника або адреси електронної пошти одержувача. Відправлення фальшивих адрес може не зупинити випадково згенеровані адреси. Однак спамери з фальшивих адрес ніколи не надсилають імейли повторно; таким чином, сірий список може стати в нагоді.
Порада №6: Використовуйте публічні чорні списки в режимі реального часу
Іноді шахрайські електронні листи можуть пройти через сірий список, де перевіряються ім'я хоста та записи, але все одно можуть бути спамом. Ще одним способом відхилення спаму в таких випадках є створення чорних списків. Публічні чорні списки в режимі реального часу передбачають, що ці списки постійно оновлюються.
Ви можете використовувати кілька чорних списків для блокування спаму. Для цього вам потрібно подивитися, які чорні списки блокують доменне ім'я спамерів, і використовувати їх. Щоб дізнатися, які чорні списки містять доменні імена поштових спамерів, ви можете перейти на сайти MXToolBox і Debouncer.
Щоб використовувати чорні списки, до файлу /etc/postfix/main.cf додайте наступне:
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
check_policy_service unix:private/policyd-spf
check_policy_service unix:postgrey/socket
reject_rhsbl_helo ... (чорний список)
reject_rhsbl_reverse_client ... (чорний список)
reject_rhsbl_sender ... (чорний список)
reject_rhsbl_client ... (чорний список)
Для спамерів, які використовують поштовий сервер Google, "reject_rhsbl_helo" не буде ефективним. Для більшості випадків буде достатньо "reject_rhsbl_sender".
Порада #7: Підвищення безпеки за допомогою OpenDMARC
Доменна автентифікація повідомлень, звітність та сумісність, скорочено це DMARC, - інтернет-стандарт, який не дозволяє шахраям використовувати чужі домени для розсилки спаму.
Для встановлення OpenDMARC вам потрібно мати перевірку DKIN та OpenDKIM. Наступні кроки допоможуть встановити та налаштувати OpenDMARC на CentOS/RHEL.
Спочатку потрібно встановити OpenDMARC, що можна зробити з репозиторію EPEL:
sudo dnf install epel-release
sudo dnf install opendmarc
Запустіть OpenDMARC (1) і переконайтеся, що він запущений (2):
(1) sudo systemctl start opendmarc
(2) systemctl status opendmarc
Далі відкриваємо і редагуємо конфігураційний файл:
sudo nano /etc/opendmarc.conf
Змініть в ньому "# AuthservID name" на "AuthservID OpenDMARC".
У наступному рядку введіть ваше Postfix ім'я хосту:
TrustedAuthservIDs mail.yourdomain.com
Потім знайдіть наступний рядок і змініть "false" на "true":
# IgnoreAuthenticatedClients false
У наступних рядках зробіть те ж саме:
# RejectFailures false
# RequiredHeaders false
Збережіть файл і перезапустіть OpenDMARC, щоб зміни набули чинності.
Прискорення DNS запитів за допомогою локального ресолвера
Postfix виконує пошук записів DNS, і цей процес може зайняти деякий час. Щоб пришвидшити його, ви можете запустити локальний ресолвер DNS (оскільки більшість списків DNS мають обмеження на запити). У цьому прикладі буде використано DNS-сервер bind9.
Встановіть DNS-сервер bind9:
sudo dnf install bind
І запустіть його:
sudo systemctl start named
Увімкніть автоматичний запуск під час завантаження:
sudo systemctl enable named
Налаштування DNS ресолвера за замовчуванням для поштового сервера CentOS/RHEL
DNS-розпізнавач за замовчуванням може бути різним, але вам потрібно встановити його на 127.0.0.1.
По-перше, вам потрібно дізнатись назву вашої мережі, за допомогою:
ip addr
Далі вам потрібно відредагувати конфігураційний файл і прописати назву вашої мережі:
sudo nano /etc/sysconfig/network-scripts/ifcfg-назва вашої мережі
Потім знайдіть параметр DNS і змініть його на 127.0.0.1:
DNS1="127.0.0.1"
Збережіть і перезапустіть NetworkManager.
Вимкнення IPv6 у BIND
Щоб уникнути помилок у журналі BIND, краще вимкнути IPv6, якщо ваш поштовий сервер не має публічної IPv6-адреси.
Спочатку відкрийте конфігураційний файл.
sudo nano /etc/sysconfig/named
В кінці файлу додайте наступне:
OPTIONS= "-4"
Збережіть файл і перезавантажте систему:
sudo systemctl restart named
Виконайте наступну команду:
sudo netstat -lnptu | grep named