Спам-фільтр для Postfix

Spam Scanner налаштовується як фільтр для сервера Postfix приблизно за п’ять хвилин. Він працює як milterПоштовий фільтр: протокол із Sendmail, який також використовує Postfix; він дозволяє окремій програмі перевіряти кожен лист під час сеансу SMTP., тож Postfix запитує його про кожен лист під час сеансу SMTP і може відхилити спам до прийняття.

Встановлення й запуск#

Shell
npm install --global spamscanner
spamscanner milter --port 7831 --auth --subject-tag "[SPAM]"

--auth перевіряє SPFSender Policy Framework: запис DNS зі списком серверів, яким дозволено надсилати пошту від імені домену., DKIMDomainKeys Identified Mail: підпис листа, який перевіряють відкритим ключем, опублікованим у DNS відправника., DMARCПолітика в DNS, яка вказує отримувачам, що робити з поштою від імені домену, коли вона не проходить вирівнювання SPF і DKIM. і ARCAuthenticated Received Chain: підписи, які передають результати автентифікації через сервери пересилання.; --subject-tag позначає спам у темі. Кожен лист отримує заголовки X-Spam-Flag, X-Spam-Score, X-Spam-Status і X-Spam-Action, а будь-який заголовок X-Spam-*, доданий відправником, спершу видаляється.

Підключення Postfix#

INI
# /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:7831
milter_protocol = 6
milter_default_action = accept
Shell
sudo postfix reload

milter_default_action = accept пропускає пошту без фільтрації, якщо milter недоступний; tempfail натомість просить відправників повторити спробу.

Відхилення спаму під час сеансу SMTP#

Shell
spamscanner milter --port 7831 --auth --reject

Листи, що досягли порогу відхилення (15 балів), відхиляються з відповіддю 451 4.7.1 Message rejected as spam. Код 451 тимчасовий: відправник зберігає лист і повторює спробу, тож хибне рішення коштує затримки, а не втраченого листа. Коли результати виглядатимуть правильними, --reject-code 550 робить відхилення постійним.

Без milter#

Контент-фільтр працює після того, як Postfix прийняв лист: Postfix передає його до spamscanner filter, який додає заголовки й повертає лист назад. Під час сеансу нічого не відхиляється, а збій завжди відкладає доставку, а не повертає лист відправнику. Налаштування контент-фільтра

Спам у теку «Спам»#

З Dovecot правило Sieve розкладає позначену пошту:

Text
require ["fileinto"];
if header :is "X-Spam-Flag" "YES" { fileinto "Junk"; stop; }

Перевірено на справжньому Postfix#

Наскрізні тести проєкту запускають Postfix із milter і контент-фільтром: hamБажана пошта: протилежність спаму. (бажані листи) доставляється із заголовками та без підробленого X-Spam-Flag, спам позначається, а GTUBEGeneric Test for Unsolicited Bulk Email: фіксований рядок, який кожен спам-фільтр вважає спамом, для тестування. відхиляється з кодом 550 під час сеансу SMTP.

Далі: повний посібник з Postfix і Sendmail, з юнітом systemd і INPUT_MAIL_FILTER для Sendmail.

Редагувати цю сторінку на GitHub · Markdown ·