Ebben a leírásban a csak Spamassassin spamszűrőt állítjuk be, amavis és minden más segítség nélkül. A Spamassassin csak megjelöli a leveleket. Ha mozgatni szeretnénk a spam gyanús leveleket, vagy egy MDA szoftver vagy például az Amavis szükséges.
apt install postfix spamassassin spamc
Szerkesszük a master.cf konfigurációs fájlt:
mcedit /etc/postfix/master.cf
Tegyük a fájl elejére (a meglévőt javíthatjuk):
smtp inet n - - - - smtpd -o content_filter=spam
Tegyük a fájl végére:
spam unix - n n - - pipe user=debian-spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Szerkesszük a következő állományt:
/etc/spamassassin/local.cf
Keressük meg a következő sort és vegyük ki a megjegyzést:
rewrite_header Subject *****SPAM*****
Így a levél tárgyába kerül a SPAM szó.
Ha szeretnénk részletes naplózni spam eseményeket, szerkesszük a következő fájlt:
/etc/default/spamassassin
Tegyük az utolsó opciót a beállítások végére:
OPTIONS="--create-prefs --max-children 5 --helper-home-dir -s /var/log/spamd.log"
Az alábbi sort egy levél törzsébe másolva a spamassassin a levelet spamként fogja értékelni:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
A /var/log/mail.log fájlban ehhez hasonló kell látnunk:
Jun 30 17:39:25 iskolazo postfix/pipe[8558]: 8475E426E7: to=<joska@verem.zold.and>, relay=spamassassin, delay=0.06, delays=0.01/0/0/0.05, dsn=2.0.0, status=sent (delivered via spam service)
A /var/log/spamd.log állományban azt is láthatjuk, hogy hogyan pontozta a spamszűrő az e-mailt, ha beállítottuk a fentiek szerint.
A spamszűrő tanítása:
sa-learn --spam -u debian-spamd --dir /home/joska/Maildir/.Junk/* -D
sa-learn --ham -u debian-spamd --dir /home/joska/Maildir/.INBOX/* -D
#!/usr/bin/perl -w use Net::SMTP; $emailServer = '192.168.5.100'; $spamMsg = "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X\n"; $mailTo = 'kati@zold.and'; my $smtp = Net::SMTP->new($emailServer); $smtp->mail($ENV{USER}); if ($smtp->to($mailTo)) { $smtp->data(); $smtp->datasend("To: Neked\n"); $smtp->datasend("\n"); $smtp->datasend($spamMsg); $smtp->dataend(); } else { print "Error: ", $smtp->message(); } $smtp->quit;