Alternatywa dla SpamAssassin zgodna z protokołem spamd
Spam Scanner odpowiada w protokole spamdDemon SpamAssassin. Jego protokołem posługują się spamc, Exim, Haraka i inni klienci SpamAssassin. ze SpamAssassin, więc oprogramowanie napisane dla SpamAssassin korzysta z niego bez zmian: spamc, warunek spam w Exim, wtyczka spamassassin w Haraka i inne.
Podmiana#
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-* headersOdpowiada na CHECK, SYMBOLS, REPORT, REPORT_IFSPAM, PROCESS, HEADERS, PING oraz, z --allow-tell, TELL do nauki. Testy end-to-end projektu uruchamiają na nim oryginalny spamc ze SpamAssassin.
Co zostaje bez zmian#
- Nagłówki:
X-Spam-Flag,X-Spam-Score,X-Spam-LeveliX-Spam-Statusw formacie SpamAssassin, więc istniejące reguły Sieve, procmail i klientów poczty działają dalej. - Wynik z progiem 5, złożony z nazwanych testów z punktami:
BAYES_99,RBL_ZEN,SPF_FAIL,DKIM_PASSi tak dalej. - Punkty poszczególnych testów można zmieniać według nazwy testu.
Co jest inne#
- Języki. Słowa są wyznaczane według reguł Unicode, więc chiński, japoński i tajski są czytane jako słowa, a nie jeden długi ciąg, a maskowanie, takie jak niewidoczne znaki czy litery cyrylicy w słowach łacińskich, jest najpierw odwracane.
- Phishing. Podobne domeny, mylące linki i nazwy marek w nazwach wyświetlanych są sprawdzane bez dodatkowych reguł.
- Załączniki są rozpoznawane po bajtach: plik wykonywalny przemianowany na
.pdfnadal jest plikiem wykonywalnym. - Modele językowe. Trudne przypadki mogą trafić do lokalnego modelu przez OllamaProgram, który pobiera i uruchamia otwarte modele językowe na twoim własnym komputerze, z HTTP API. lub do modelu hostowanego.
- Node.js. Jedno
npm installlub samodzielny plik binarny; żadnych modułów Perl ani aktualizacji reguł do pilnowania.
Spam Scanner nie uruchamia plików reguł SpamAssassin, a jego format bazy Bayesa jest własny: wytrenuj go na tej samej poczcie przez 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