Difference between revisions of "Email Server - Extended Spam filtering"

From berki WIKI
Jump to: navigation, search
(DKIM)
Line 5: Line 5:
  
 
* 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 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 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.
 +
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 =
 
= Telepítés =

Revision as of 20:38, 19 September 2016

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. 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
TipIcon.png

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.


WarningIcon.png

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


ImportantIcon.png

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


Megtanult szabályok mentése és visszatöltése

ClipCapIt-160910-214715.PNG