Et alternativ til SpamAssassin, der taler spamd
Spam Scanner svarer på SpamAssassins spamd-protokol, så software, der er skrevet til SpamAssassin, bruger den uændret: spamc, Exims spam-betingelse, Harakas spamassassin-plugin og andre.
Skift den ind#
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-* headersDen svarer på CHECK, SYMBOLS, REPORT, REPORT_IFSPAM, PROCESS, HEADERS, PING og, med --allow-tell, TELL til indlæring. Projektets end-to-end-test kører SpamAssassins egen spamc mod den.
Hvad forbliver det samme#
- Headerne:
X-Spam-Flag,X-Spam-Score,X-Spam-LevelogX-Spam-Statusi SpamAssassins format, så eksisterende regler i Sieve, procmail og mailklienter fortsat virker. - En score med en grænse på 5, sammensat af navngivne test med point:
BAYES_99,RBL_ZEN,SPF_FAIL,DKIM_PASSog så videre. - Scoren for hver test kan ændres ud fra testens navn.
Hvad er anderledes#
- Sprog. Ord opdeles efter Unicode-reglerne, så kinesisk, japansk og thai læses som ord i stedet for én lang streng, og forklædninger som usynlige tegn eller kyrilliske bogstaver i latinske ord omgøres først.
- Phishing. Forvekslelige domæner, vildledende links og varemærker i visningsnavne tjekkes uden ekstra regler.
- Vedhæftede filer identificeres ud fra deres bytes: en programfil, der er omdøbt til
.pdf, er stadig en programfil. - Sprogmodeller. Tvivlstilfælde kan sendes til en lokal model via OllamaEt program, der henter og kører åbne sprogmodeller på din egen maskine, med et HTTP API. eller til en hostet model.
- Node.js. Én
npm installeller en selvstændig binærfil; ingen Perl-moduler eller regelopdateringer at holde styr på.
Spam Scanner kører ikke SpamAssassins regelfiler, og dens format for Bayes-databasen er dens eget: træn den fra den samme post med 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