Tartalomjegyzék

< E-mail szerver

Postfix Spamassassin

Bevezetés

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.

Telepítés

apt install postfix spamassassin spamc

A postfix beállítása

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}
  1. Készítettünk egy spam nevű szűrőt, amely unix socketen keresztül érhető el.
  2. A „- n n - -”
    1. privát folyamat lesz
    2. privilegizált folyamatként fut
    3. nincs chroot (pipe esetén nem lehet)
    4. nincs élesztés
    5. az alapértelmezett folyamatszámot használjuk
  3. pipe-n keresztül kerül vissza a postfixhez a levél
  4. A debian-spamd felhasználó nevében fut a folyamat
  5. A szűrőparancs
    1. ${feladó} ${címzett}

A Spamassassin beállítása

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"

Spam assassin teszt

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

Napló fájlban

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.

Tanítás

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

Teszt Perl script

sendSpamTest.pl
#!/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;