Difference between revisions of "Email Server - Extended Spam filtering"
(→DKIM) |
(→Eszközök) |
||
Line 8: | Line 8: | ||
A DNS szerverben lehetőség van úgynevezett TXT rekordok felvételére. A TXT rekordokban tetszőleges, emberek által is megérthető szöveget lehet elhelyezni. | A DNS szerverben lehetőség van úgynevezett TXT rekordok felvételére. A TXT rekordokban tetszőleges, emberek által is megérthető szöveget lehet elhelyezni. | ||
+ | DNS rekordok: | ||
+ | - SOA: globális beállításai a zóna fájlnak | ||
+ | - NS: a DNS szerver domain neve az adott domain-ben. | ||
+ | - MX: (mail exchange), a mail kiszolgálója az adott domain-nek | ||
+ | - A: normál domain – ip cím összerendelések. | ||
+ | - TXT: tetszőleges szöveg | ||
+ | |||
+ | |||
A DNS szerverben a DKIM egy külön bejegyzést kap. Pl ha a berki.org-t akarjuk védeni, akkor felvesszük a default.berki.org-ot. | A DNS szerverben a DKIM egy külön bejegyzést kap. Pl ha a berki.org-t akarjuk védeni, akkor felvesszük a default.berki.org-ot. | ||
Revision as of 20:42, 19 September 2016
Contents
Eszközök
DKIM
DKIM (DomainKeys Identified Mail): http://www.dkim.org/, https://luxsci.com/extranet/dkim.html
- A DKIM szerver a levelet elküldés előtt a titkos kulcsával aláírja, majd az aláírást elhelyezi az email fejlécében.
- A DKIM kliens az email-hez hozzárakott digitális aláírás segítségével ellenőrzi a beérkező emailt, hogy valóban az küldte e aki a feladókén szerep benne, ezen felül az időpont és a tárgy lett e módosítva. A DKIM kliens a publikus kulcsot az email domain DNS szerverétől kérdezi le.
A DNS szerverben lehetőség van úgynevezett TXT rekordok felvételére. A TXT rekordokban tetszőleges, emberek által is megérthető szöveget lehet elhelyezni. DNS rekordok: - SOA: globális beállításai a zóna fájlnak - NS: a DNS szerver domain neve az adott domain-ben. - MX: (mail exchange), a mail kiszolgálója az adott domain-nek - A: normál domain – ip cím összerendelések. - TXT: tetszőleges szöveg
A DNS szerverben a DKIM egy külön bejegyzést kap. Pl ha a berki.org-t akarjuk védeni, akkor felvesszük a default.berki.org-ot.
Telepítés
# yum install spamassassin
Mi hol van
- DEF_RULES_DIR=/usr/share/spamassassin,
- LOCAL_RULES_DIR=/etc/mail/spamassassin
- LOCAL_STATE_DIR=/var/lib/spamassassin
Szabályok frissítése
Spam adatbázis
A Spamassassin szabály adatbázisa a /var/lib/spamassassin/<verziószám> mappában található, az esetünkben itt: /var/lib/spamassassin/3.003001
Ezen belül minden úgynevezett "csatornának" van egy saját almappája, amiben az adott csatorna szabálygyűjteménye található. A csatorna egy "szervezetnek" a saját szabálygyűjteménye. A hivatalos "gyári" csatorna/szabálygyűjteménye az update_spamassassin_org nevet viseli. Ezen felül még rengeteg egyéb nem hivatalos csatorna/szabálygyűjteménye létezik.
A sa-update parancsnak meg kell adni, hogy milyen csatornákat frissítsen ill. töltsön le. Ezt a --channel kapcsoló után tudjuk megadni, ahol a csatorna/szabálygyűjteménye URL-jét várja.
A hivatalos CentOS repository-ból telepített spamassassin esetében a sa-update parancsot a /usr/share/spamassassin/sa-update.cron script hívja meg. A csatornákat a /usr/share/spamassassin/sa-update.cron használata esetén a /etc/mail/spamassassin/channel.d mappában elhelyezett csatorna leíró fájlokból olvassa ki a script, és ezekkel a csatorna URL-ekkel hívja meg a sa-update parancsot.
Gyárilag két csatorna van a /etc/mail/spamassassin/channel.d mappában, a hivatalos updates_spamassassin_org és a széles körben elterjedt sought_rules_yerp_org:
[root@server channel.d]# ll /etc/mail/spamassassin/channel.d total 12 -rw-r--r--. 1 root root 2572 Dec 5 2013 sought.conf -rw-r--r--. 1 root root 4915 Dec 5 2013 spamassassin-official.conf
A csatorna leírók fájl elején található a csatorna URL-je, majd ezt követi az a kulcs amivel a frissítéseket aláírja a kibocsájtó. Pl. a spamassassin-official.conf fájl eleje az alábbi:
# http://wiki.apache.org/spamassassin/RuleUpdates CHANNELURL=updates.spamassassin.org KEYID=5244EC45 # Ignore everything below. return 0 This is the GPG key that updates are signed with (currently, as of Wed Dec 21 19:31:38 PST 2005. Please contact <dev /at/ spamassassin.apache.org> with any questions. -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.2 (SunOS) .....
A /usr/share/spamassassin/sa-update.cron script kiolvassa innen az összes csatorna leíró fájlt, és hozzáfűzi a --channel paraméterhez a leírókból kiolvasott URL-eket.
Minden csatornának van egy saját almappája és egy csatorna leírója a /var/lib/spamassassin/3.003001 szabály adatbázis gyűjtőmappában.
[root@server 3.003001]# ll /var/lib/spamassassin/3.003001 total 16 drwxr-xr-x. 2 root root 4096 Mar 12 2015 sought_rules_yerp_org -rw-r--r--. 1 root root 123 Mar 12 2015 sought_rules_yerp_org.cf drwxr-xr-x. 2 root root 4096 Sep 8 05:53 updates_spamassassin_org -rw-r--r--. 1 root root 2851 Sep 8 05:53 updates_spamassassin_org.cf
Tip
Ezekről a mappákról teljesen felesleges biztonsági mentést csinálni, mivel a sa-update mindig a legfrissebb gyűjteményt hozza le.
Warning
Úgy tűnik, hogy a sought szabályokhoz már jó ideje nem jön frissítés. A sa-update ezt a választ adja manuális update esetén minden nap:
# /usr/bin/sa-update -v --channel sought.rules.yerp.org --gpgkey 6C6191E3 Update finished, no fresh updates were available
Tanítás
https://kb.site5.com/email/how-to-train-spamassassin/
http://www.hostdango.com/train-spamassassin/
https://spamassassin.apache.org/full/3.1.x/doc/sa-learn.html
Szerintem nem jó, hogy a root nevében fut, és hogy oda rakja le a ./spamassassin mappába amit talál. Onnan hogy fogja felnyalni?
#!/bin/bash
## Database details
USER=''
PASS=''
HOST=''
DB='postfix'
## Where to log stuff
LOG='/var/log/sa-learn.log'
## How many days to wait before deleting spam
## Comment out to disable
CLEAN=30
echo -e "\n\nRun started `date +%c`" >> $LOG 2>&1
## Spam and ham training for all virtual users
## Delete spam older than $CLEAN days
mysql --skip-column-names -u$USER -p$PASS -h$HOST -D$DB -e "SELECT SUBSTRING(email, 1, LOCATE('@', email) - 1) AS user, SUBSTRING(email, LOCATE('@', email) + 1) AS domain FROM virtual_users" | while read user domain;
do
## Spam
echo "Spam training for $user@$domain" >> $LOG 2>&1
/usr/bin/sa-learn --no-sync --spam /var/spool/postfix/virtual/$domain/$user/.Junk/{cur,new} >> $LOG 2>&1
## Ham
echo "Ham training for $user@$domain" >> $LOG 2>&1
/usr/bin/sa-learn --no-sync --ham /var/spool/postfix/virtual//$domain/$user/{cur} >> $LOG 2>&1
## Delete
if [ -n $CLEAN ]; then
echo "Deleting spam for $user@$domain older than $CLEAN days" >> $LOG 2>&1
find /var/spool/postfix/virtual/$domain/$user/.Junk/cur/ -type f -mtime +$CLEAN -exec rm {} \;
fi
done
## Sync the SpamAssassin journal and print out stats
echo "Syncing the SpamAssassin journal" >> $LOG 2>&1
/usr/bin/sa-learn --sync >> $LOG 2>&1
echo "Statistics for this run:" >> $LOG 2>&1
/usr/bin/sa-learn --dump magic >> $LOG 2>&1
echo -e "Run finished `date +%c`" >> $LOG 2>&1
exit
Note
Mivel az adatbázis szinkronizálása nagyon időigényes, fontos, hogy ham és spam mappákat átadó futtatások esetében a --no-sync szerepeljen, ami nem frissíti be kapásból a db-be az új szabályokat, hanem egy ideglenes fájlban tárolja őket. Mikor az összes új szabályt hozzáadtuk az ideglenes fájlhoz akkor a végén egyszer meghívjuk a sa-update-et --sync kapcsolóval
Run started Sat 10 Sep 2016 10:57:28 PM CEST Spam training Learned tokens from 3889 message(s) (3889 message(s) examined) Learned tokens from 1 message(s) (1 message(s) examined) Learned tokens from 1 message(s) (1 message(s) examined) Ham training Learned tokens from 3479 message(s) (3479 message(s) examined) bayes: bayes db version 0 is not able to be used, aborting! at /usr/share/perl5/vendor_perl/Mail/SpamAssassin/BayesStore/DBM.pm line 203. Learned tokens from 11401 message(s) (11503 message(s) examined) Deleting spam for @ older than 30 days Syncing the SpamAssassin journal expired old bayes database entries in 37 seconds 132820 entries kept, 645263 deleted token frequency: 1-occurrence tokens: 49.55% token frequency: less than 8 occurrences: 23.04% Statistics for this run: 0.000 0 3 0 non-token data: bayes db version 0.000 0 3890 0 non-token data: nspam 0.000 0 14880 0 non-token data: nham 0.000 0 132820 0 non-token data: ntokens 0.000 0 1462517177 0 non-token data: oldest atime 0.000 0 1473531473 0 non-token data: newest atime 0.000 0 0 0 non-token data: last journal sync atime 0.000 0 1473542242 0 non-token data: last expiry atime 0.000 0 11059200 0 non-token data: last expire atime delta 0.000 0 645263 0 non-token data: last expire reduction count Run finished Sat 10 Sep 2016 11:17:25 PM CEST
# ll total 5744 -rw-------. 1 root root 2535424 Sep 10 23:17 bayes_seen -rw-------. 1 root root 4837376 Sep 10 23:17 bayes_toks