Топ-7 ефективних порад щодо блокування спаму за допомогою Postfix на CentOS/RHEL

Топ-7 ефективних порад щодо блокування спаму за допомогою Postfix на CentOS/RHEL

18.12.2023
Автор: HostZealot Team
2 мін.
165

Що таке спам? Як він працює? Чому ви отримуєте так багато спаму?

Якщо коротко, то спам - це небажана електронна пошта. Постійно переповнена поштова скринька може розчаровувати. Крім того, непотрібні або шахрайські електронні листи, які належать до спаму, можуть коштувати вашому бізнесу грошей у довгостроковій перспективі.

Багато інструментів можуть допомогти вам ефективно боротися зі спамом, зокрема Postfix.

Postfix SMTP-сервер на CentOS/RHEL дозволяє блокувати спам ще до того, як він потрапить до поштової скриньки. 

Давайте розглянемо, що таке спам і як його зупинити за допомогою Postfix на CentOS/RHEL.

Поняття спаму

Спам - це небажана електронна пошта, яку користувач отримує на свою електронну адресу. На жаль, електронний спам не є новим поняттям, він існує вже досить давно. Існують мільярди спам-повідомлень, які користувачі отримують щодня.

Спам часто розсилається великій групі людей за допомогою програмного забезпечення, яке автоматично генерує та надсилає електронні листи. Однак, спам також можна розсилати вручну.

Існують такі поширені типи спаму, як:

  • Комерційні листи. Такі листи просувають комерційні продукти або послуги за комісійні від рекламодавця. Спам може містити посилання на сайти зі схожим контентом або пропозиції товарів і послуг, які не мають прямого відношення до ваших інтересів.
  • Віруси. Віруси - це шкідливі програми, які заражають операційну систему і викрадають особисту інформацію. Поштові віруси можуть містити шкідливий код для зараження системи.
  • Фішингові електронні листи. Фішинг передбачає надсилання шахрайських електронних листів, призначених для того, щоб обманом змусити користувачів розкрити свою приватну або фінансову інформацію, щоб шахраї могли використати її у своїх цілях. Фішингові листи зазвичай містять посилання на інший веб-сайт.

Знову ж таки, спамери часто використовують автоматизовані програми (боти) для надсилання тисяч листів одночасно, а це означає, що деякі листи можуть потрапити у вашу поштову скриньку, навіть якщо ви ніколи не підписувалися на розсилки або акції.

Порада #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
# VPS Поділитися:
Статті за темою