Een alternatief voor SpamAssassin dat spamd spreekt
Spam Scanner beantwoordt het spamd-protocol van SpamAssassin, zodat software die voor SpamAssassin is geschreven het ongewijzigd gebruikt: spamc, de voorwaarde spam van Exim, de plug-in spamassassin van Haraka en andere.
Inwisselen#
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-* headersHet beantwoordt CHECK, SYMBOLS, REPORT, REPORT_IFSPAM, PROCESS, HEADERS, PING en, met --allow-tell, TELL om te leren. De end-to-endtests van het project draaien de eigen spamc van SpamAssassin ertegen.
Wat hetzelfde blijft#
- De headers:
X-Spam-Flag,X-Spam-Score,X-Spam-LevelenX-Spam-Statusin het formaat van SpamAssassin, zodat bestaande regels in Sieve, procmail en mailclients blijven werken. - Een score met een drempel van 5, opgebouwd uit benoemde tests met punten:
BAYES_99,RBL_ZEN,SPF_FAIL,DKIM_PASSenzovoort. - De scores per test zijn via de testnaam aan te passen.
Wat anders is#
- Talen. Woorden worden gesegmenteerd met de Unicode-regels, zodat Chinees, Japans en Thai als woorden worden gelezen in plaats van als één lange string, en vermommingen zoals onzichtbare tekens of Cyrillische letters in Latijnse woorden worden eerst ongedaan gemaakt.
- Phishing. Lookalike-domeinen, misleidende links en merknamen in weergavenamen worden zonder extra regels gecontroleerd.
- Bijlagen worden herkend aan hun bytes: een uitvoerbaar bestand dat is hernoemd naar
.pdfblijft een uitvoerbaar bestand. - Taalmodellen. Twijfelgevallen kunnen naar een lokaal model via OllamaEen programma dat open taalmodellen downloadt en op je eigen machine draait, met een HTTP API. of naar een gehost model.
- Node.js. Eén
npm install, of een standalone binary; geen Perl-modules of regelupdates om te beheren.
Spam Scanner voert de regelbestanden van SpamAssassin niet uit, en het formaat van de Bayes-database is eigen: train het op dezelfde mail met 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