Альтернатива SpamAssassin, що підтримує протокол spamd
Spam Scanner відповідає за протоколом spamdДемон SpamAssassin. Його протокол використовують spamc, Exim, Haraka та інші клієнти SpamAssassin. від SpamAssassin, тож програми, написані для SpamAssassin, використовують його без змін: spamc, умова spam в Exim, плагін spamassassin у Haraka та інші.
Заміна#
sudo systemctl disable --now spamd # or spamassassin
npm install --global spamscanner
spamscanner spamd --port 783 --authspamc -c < message.eml # prints the score, exits 1 for spam
spamc -R < message.eml # the report, one line per test
spamc < message.eml # the message with X-Spam-* headersВін відповідає на CHECK, SYMBOLS, REPORT, REPORT_IFSPAM, PROCESS, HEADERS, PING, а з --allow-tell — і на TELL для навчання. Наскрізні тести проєкту запускають проти нього власний spamc від SpamAssassin.
Що залишається незмінним#
- Заголовки:
X-Spam-Flag,X-Spam-Score,X-Spam-LevelіX-Spam-Statusу форматі SpamAssassin, тож наявні правила Sieve, procmail і поштових клієнтів працюють далі. - Бал із порогом 5, складений з іменованих тестів із балами:
BAYES_99,RBL_ZEN,SPF_FAIL,DKIM_PASSтощо. - Бали окремих тестів можна змінювати за назвою тесту.
Що відрізняється#
- Мови. Слова виділяються за правилами Unicode, тож китайська, японська й тайська читаються як слова, а не як один довгий рядок, а маскування на кшталт невидимих символів чи кириличних літер у латинських словах спершу знімається.
- Фішинг. Схожі домени, оманливі посилання та назви брендів в іменах відправника перевіряються без додаткових правил.
- Вкладення розпізнаються за байтами: виконуваний файл, перейменований на
.pdf, залишається виконуваним файлом. - Мовні моделі. Спірні випадки можна передати локальній моделі через OllamaПрограма, яка завантажує й запускає відкриті мовні моделі на вашому комп’ютері та надає HTTP API. або хмарній.
- Node.js. Один
npm installабо окремий виконуваний файл; жодних модулів Perl чи оновлень правил, якими треба керувати.
Spam Scanner не виконує файли правил SpamAssassin, і формат його баєсової бази даних власний: навчіть його на тій самій пошті за допомогою spamscanner train.
Exim#
spamd_address = 127.0.0.1 783
# in the DATA ACL
warn spam = nobody:true
add_header = X-Spam-Score: $spam_score
defer spam = nobody:true
condition = ${if >={$spam_score_int}{150}}
message = Message rejected as spam