Спам-фільтр для Postfix
Spam Scanner налаштовується як фільтр для сервера Postfix приблизно за п’ять хвилин. Він працює як milterПоштовий фільтр: протокол із Sendmail, який також використовує Postfix; він дозволяє окремій програмі перевіряти кожен лист під час сеансу SMTP., тож Postfix запитує його про кожен лист під час сеансу SMTP і може відхилити спам до прийняття.
Встановлення й запуск#
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#
# /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:7831
milter_protocol = 6
milter_default_action = acceptsudo postfix reloadmilter_default_action = accept пропускає пошту без фільтрації, якщо milter недоступний; tempfail натомість просить відправників повторити спробу.
Відхилення спаму під час сеансу SMTP#
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 розкладає позначену пошту:
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.