Changes

Email Server - MailScanner alapok

2,161 bytes added, 22:32, 29 September 2016
Amavis – 2.9.1
=Áttekintés=
 
Email szkennelőnek az AmavisNew programot fogjuk használni. Az AmaivsNew ...
 
:[[File:ClipCapIt-160926-214529.PNG|400px]]
 
 
Letölthető egy okos script, ami elvégzi a megadott mappák vírus vizsgálatát, majd az eredményt elküldi emailben.
Hozzunk létre egy karantén mappát, és adjunk rá mindenkinek írási jogot:
<pre>
# mkdir /var/local/virus_quaraintin/dailyScan
# chmod 722 /var/local/virus_quaraintin/dailyScan
</pre>
Tegyük a cron.weekly mappába a szkennelő szkriptet.
/etc/cron.weekly/clam_scan_home.sh
<pre>
#!/bin/bash
check_scan
</pre>
Adjunk rá futási jogot:
<pre>
# chmod +x /etc/cron.weekly/clam_scan_home.sh
</pre>
 
 
=Spamassassin=
{{note|Itt csak az alap Spamassassin konfigurációt végezzük el, ezt fogjuk kibővíteni a [[Email Server - Extended Spam filtering|Kiterjesztett spam szűrés ]] című fejezetben.}}
7 spamassassin-3.3.1
<pre>
# yum install spamassassin
</pre>
=== 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''':<pre>[root@server channel.d]# ll /etc/mail/spamassassin/channel.dtotal 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</pre> 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:<pre># http://wiki.apache.org/spamassassin/RuleUpdatesCHANNELURL=updates.spamassassin.orgKEYID=5244EC45# yum install 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. 
A spamassassin telepítéskor létrehozza a naponta futó cron frissítő szkriptjét-----BEGIN PGP PUBLIC KEY BLOCK-----Version: GnuPG v1.4.2 (SunOS).....</pre>
/etc/cron.d/sa-update
10 4 * * * root /usr/share/spamassassin/sa-update.cron 2>&1 | tee -a /var/log/sa-update.log && echo "" | /bin/mail -s "[SERVER] Spamassassin refreshment" -r "root" root
A /usr/share/spamassassin/sa-update.cron fájl egy bonyolult szkriptet tartalmaz. A frissítés minden nap hajnali 4:10-kor fog lefutni.
A '''/etcusr/mailshare/spamassassin/localsa-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.cfrequired_hits 5 report_safe 0 rewrite_header Subject [SPAM]
Az itt lévő összes beállítást az amavis.conf-ban felül lehet írni.
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.
<pre>
[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
</pre>
8 Amavis – 2{{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.9.1}}
rpm {{warning|Úgy tűnik, hogy a '''sought''' szabályokhoz már jó ideje nem jön frissítés. A sa-Uvh httpupdate ezt a választ adja manuális update esetén minden nap:<pre># /usr/apt.sw.bebin/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforgesa-update -releasev -0.5.3-1channel sought.el6rules.rfyerp.x86_64.rpmorg --gpgkey 6C6191E3Update finished, no fresh updates were available</pre>}}
=Amavis – 2.9.1=
==Installáció==
<pre>
rpm -Uvh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
</pre>
<pre>
# yum install amavisd-new
</pre>
/etc/amavisd/amavisd.conf
<pre>
$daemon_user = 'amavis'; # (no default; customary: vscan or amavis), -u
$daemon_group = 'amavis'; # (no default; customary: vscan or amavis), -g
$sa_spam_subject_tag = '***Spam*** ';
$sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
$sa_tag2_level_deflt sa_tag_level_deflt = 6.2-999; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 6.9; # triggers spam evasive actions (e.g. blocks mail)
$sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent
$spam_quarantine_to = 'system@berki2.org';
 
$sa_debug = 1;
$log_level = 5;
1; # insure a defined return value
</pre>
Szerintem ami már a config-ban fentebb is szerepelt, azt nem kell kiszedni, mert itt felülírjuk. Meg kell adni a mydomain és a myhostname paramétereket, szerintem nem fotnos, hogy mit írunk oda.
FONTOS:A '''$sa_tag_level_deflt = -999;''' beállításával rákényszerítjük az amavis-t hogy mindig belerakja a header-be a spam szűrés végeredményét, még akkor is ha nem gondolja spam-nek az üzenetet.  A '''$sa_debug = 1;''' és a '''$log_level = 5;''' el maximálisra emeltük az amavis + spamassassin logolását. Ez a kísérletező időszakban nagyon praktikus.  {{note|Az amavis azért tudja kiküldeni a figyelmeztetéseket is publikus email címekre, mert meg van adva a sneder mind három esetre: <pre>
$mailfrom_notify_admin = "root\@berki.org"; # notifications sender
$mailfrom_notify_recip = "root\@berki.org"; # notifications sender
$mailfrom_notify_spamadmin = "root\@berki.org"; # notifications sender
</pre>
Ha ez nem lenne megadva, akkor a publikus email szerverek eldobálnák a figyelmeztető leveleket.
}}
/etc/cron.daily/amavisd
<pre>
/usr/sbin/tmpwatch 24 /var/spool/amavisd/tmp
/usr/sbin/tmpwatch -d 720 /var/spool/amavisd/quarantine
</pre>
A tmpwatch kitörli azokat a fájlokat, amihez egy megadott ideig nem nyúlt senki. A conrtab-ban az van beállítva, hogy törölje a tmp mappából azokat a fájlokat, amiket 24 óráig senki nem nyúlt hozzá, és a karanténból azokat a fájlokat, amiket 720 óráig (30 nap) senki nem nézett meg.
<pre>
# mkdir -p /var/spool/amavisd/quarantine
# chown amavis:amavis /var/spool/amavisd/quarantine
# chmod 750 /var/spool/amavisd/quarantine
</pre>
Indítsuk el:
<pre>
# service amavisd start
# chkconfig amavisd on
</pre>
 
8.1 ==Vírus szűrés - clamd==
A clamd démon fogadja a kéréseket a Amavis-töl, és meghívja a ClamAV-t a levelek átvizsgálására. A clamd és az amaivs egy socket-en keresztük kommunikálnak. Ezt a clamd.conf-ban és az amavisd.conf-ban fontos, hogy ugyan arra állítsuk, és mind két démon tudja írni ezt a fájlt.
/etc/clamad.conf
<pre>
...
LocalSocket /var/run/clamav/clamd.sock
AllowSupplementaryGroups yes
...
</pre>
Indítsuk el a clamd-t.
<pre>
# service clamd start
# chkconfig clamd on
</pre>
Ekkor létrejön a clamd.sock socket fájl.
Nézzük meg, hogy kinek a tulajdonában van
<pre>
# ls -l /var/run/clamav/clamd.sock
srw-rw-rw-. 1 clam clam 0 Jan 31 17:06 /var/run/clamav/clamd.sock
</pre>
Láthatjuk, hogy a clam user és csoport tulajdonában van, és a csoport írhatja és olvashatja a fájlt. Ezért fontos, hogy az amaivis user is benne legyen a clam csoportba, hogy tudja írni a socektet ő is.
<pre>
# usermod -G amavis clam
# cat /etc/group | grep clam
clam:x:489:
amavis:x:488:clam
</pre>
Ezen felül, meg kell engedni, hogy a /var/spool/amavisd mappát a csoport is tudja írni. Ez ahhoz kell, hogy a clamd is bele tudjon írni a mappába.
<pre>
# chmod g+rx /var/spool/amavisd/tmp
qr/\bOK$/m, qr/\bFOUND$/m,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
</pre>
Az amaivis az amaivis user és gourp nevében fut. Ami nagyon fontos, hogy a ClamAV-clamd szekcióban a socket fájl ugyan az legyen mint ami clamd.conf-ban meg van adva. Ezt ellenőrizzük.
8.2 ==Spam szűrés - spamd==
Ahhoz hogy az amaivs át tudja adni a leveleket, a clmad-hez hasonló démont kell elindítani, a spamd démont.
Indítsuk el:
<pre>
# service spamassassin start
# chkconfig spamassassin on
</pre>
Az amavis-nak nem kell megmondani, hogy hol van a spamd, mert alapértelmezés szerint azt akarja használni. Amúgy így kéne megadni az amavis.conf-ban:
<pre>
@spam_scanners = ( ['SpamAssassin', 'Amavis::SpamControl::SpamAssassin'] );
</pre>
  8.3 ==Posfix integráció==
A postfix-ben be kell állítani, hogy minden emailt adjon át kézbesítés előtt az Amavis-nak az 10024-es portra, és fogadja azokat, mikor az amavis visszaküldi az 10025-ös porton.
Ehhez két új szolgáltatást kell beállítani a /etc/postfix/maser.cf-ben.
<pre>
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
-o local_recipient_maps=
-o relay_recipient_maps=
</pre>
Az első azon szolgáltatás, ami átadja a leveleket az Amavis-nak. A neve fontos, mert majd ezzel kell rá hivatkozni a main.cf-ben.
A második szolgáltatás fogadja az Amavis-től visszaérkező leveleket. Az itt felsorolt paraméterek mind felülírják a main.cf-ben felsorolt értékeket.
A main.cf végére pedig be kell állítani, hogy a leveleket adja
<pre>
###########################
# AMAVIS
###########################
content_filter = amavisfeed:[127.0.0.1]:10024
</pre>
  8.4 ==Üzenet hozzárakása a kimenő levelekhez(disclaimer)==
Vagy a kimenő vagy a bejövő levelekhez hozzá lehet csapni egy üzenetet, amennyiben a levelet tisztának találta az Amavis. Egyszerre mind két irányban nekem nem sikerült.
Az alábbi a kimenő levelekhez csapja hozzá az üzenetet.
Ezt az altermime program segítségével tesszük meg, ami az emailek manipulálását teszi lehetővé. Ehhez elsőként meg kell mondani az amaivis-nak hogy hol van az altermime, majd meg kell adni a két üzenet fájlt. Egy sima szöveges és egy html-es változatot. Az amavis a sima szöveges levelekhez a txt-s fájlt fogja hozzácsapni, míg a html üzenetekhez a html fájlt. A karakter kódolást nem tudom hogy lehet állítani, ezért ékezetek nélkül írtam.
<pre>
$altermime = '/usr/bin/altermime';
$allow_disclaimers = 1;
</pre>
Ezen felül az összes policy_bank belsejébe kapcsoljuk be disclaimer küldést.
<pre>
$policy_bank{....} = {
...
...
}
</pre>
8.5 ==Értesítések lokalizációja==
Ha az email vírusos volt, vagy tiltott csatolmányt tartalmazott, akkor az amaivs a küldőnek és a címzettnek értesítést küld. Alapértelmezés szerint ehhez hard kódolt emial templétet használ. Ezeket felül lehet definiálni.
Hozzunk létre egy mappát a /etc/amaivsd/ alatt hu_HU néven. Ebben kötelezően el kell helyezni az alábbi fájlokat:
* /etc/amavisd/hu_HU/charset * /etc/amavisd/hu_HU/template-dsn.txt * /etc/amavisd/hu_HU/template-spam-admin.txt * /etc/amavisd/hu_HU/template-spam-sender.txt * /etc/amavisd/hu_HU/template-virus-admin.txt * /etc/amavisd/hu_HU/template-virus-recipient.txt * /etc/amavisd/hu_HU/template-virus-sender.txt
Ezek letölthetők angolul több változatban is, bár nem túl egyszerű megtalálni őket. A legfontosabb a charset fájl. Itt meg kell mondani, hogy milyen karakter kódolású fájlokat használunk:
<pre>
/etc/amavisd/hu_HU/charset
utf-8
ignored lines after first one
</pre>
Az amavisd.conf végére, az 1-es elé írjuk oda:
<pre>
read_l10n_templates('/etc/amavisd/hu_HU');
1; # insure a defined return value
</pre>
A templét fájlokból két fontos van számunkra, csak ezeket kell lefordítani:
* /etc/amavisd/hu_HU/template-virus-recipient.txt * /etc/amavisd/hu_HU/template-virus-sender.txt
A nevükkel ellentétben, ezeket nem csak vírusos üzenetek esetében használja. Ugyan ezt a templétet használja a szabálytalan header, a tiltott csatolmány, a spam és a vírusos üzenetek küldőjének és címzettjének értesítésére.
Az Amaivs-2.9-es verziója már nem tud értesítést küldeni a vírus feladójának, a '''$ warnvirussender = 1 ''' paramétert nem viszi már figyelembe.  
=Tesztelés=
Ha már működik az alap rendszer, teszteljük le a rendszert.
== Spam szűrés tesztelése ==
Küldeni fogunk a parancssorból egy SPAM üzenetet a szervernek, és meg fogjuk nézni, hogyan fogja feldolgozni.
Töltsük le a spam-eket tartalmazó email-eket innen: [[File:Spam_teszt_levelek.tar]]
=Spamassassin=Mindig kell címzett. Vagy implicit megadjuk:
<pre>
# yum install spamassassinsendmail adam@berki2.org < spam1.eml
</pre>
vagy megmondjuk, hogy szedje ki a levélből.
 
=== 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''':
<pre>
[root@server channel.d]# ll /etc/mail/spamassassin/channel.dtotal 12-rw-r--r--. 1 root root 2572 Dec 5 2013 sought.conf-rw-r--r--. 1 root root 4915 Dec 5 2013 spamassassinsendmail -officialt < spam1.confeml
</pre>
A csatorna leírók fájl elején található Nézzük meg a csatorna URL/var/log/maillog-je, majd ezt követi ban az a kulcs amivel a frissítéseket aláírja a kibocsájtó. Pl. a '''spamassassin-official.conf''' fájl eleje az alábbiüzenet feldolgozását:
<pre>
# httpSep 26 20://wiki56:28 centostest amavis[1505]: (01505-02) Blocked SPAM {RejectedInternal,Quarantined}, ORIGINATING LOCAL [127.apache0.org/spamassassin/RuleUpdatesCHANNELURL=updates0.spamassassin1] [59.orgKEYID=5244EC45# Ignore everything below99.return 0 This is the GPG key that updates are signed with (currently,as of Wed Dec 21 19:31:38 PST 200575. Please contact 77] <dev /at/spamassassinsystem@berki.apacheorg> -> <adam@berki2.org> with any questions, quarantine: system@berki2.  ---org, Message--BEGIN PGP PUBLIC KEY BLOCK-----VersionID: GnuPG v1.4.2 (SunOS)...<668816996730456862921563@mail2love.com>, mail_id: vbdsjBOkRG4a, Hits: 27.535, size: 2539, 2035 ms
</pre>
 A '''/usr/share/spamassassin/sa-update.cron''' script kiolvassa innen az összes csatorna leíró fájltrendszerünk úgy van beállítva, és hozzáfűzi hogy a '''--channel''' paraméterhez spam üzeneteket ne a karantén mappába másolja, hanem küldje el a leírókból kiolvasott URLsystem user-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ábannek. Most vizsgáljuk meg az email header-jét:
<pre>
[root@server 3.003001]# ll /var/lib/spamassassin/3.003001X-Quarantine-ID: <WlQeNLMXlflo>total 16X-Spam-Flag: YESdrwxrX-xrSpam-xScore: 29. 2 root root 4096 Mar 12 2015 sought_rules_yerp_org093X-rwSpam-r--rLevel: *****************************X-Spam-Status: Yes, score=29.093 tag=2 tag2=6.2 kill=6.9 tests=[DATE_IN_FUTURE_03_06=2.426, DIGEST_MULTIPLE=0.001, FREEMAIL_FROM=0.001, HTML_MESSAGE=0. 1 root root 123 Mar 12 2015 sought_rules_yerp_org, PYZOR_CHECK=1.985, RAZOR2_CF_RANGE_51_100=0.365, RAZOR2_CF_RANGE_E8_51_100=2.cf43,drwxr-xr-x RAZOR2_CHECK=1.729, RCVD_IN_BRBL_LASTEXT=1.644, RCVD_IN_PBL=3. 558, RCVD_IN_PSBL=2 root root 4096 Sep 8 05:53 updates_spamassassin_org.7, RCVD_IN_SBL_CSS=3.558, RCVD_IN_XBL=0.724,-rw-r--r-- RDNS_NONE=1.274, URIBL_ABUSE_SURBL=1.948, URI_WP_DIRINDEX=2. 996, URI_WP_HACKED_2=1 root root 2851 Sep 8 05:53 updates_spamassassin_org.cf753] autolearn=unavailable
</pre>
{{tip|Ezekről Ezeket 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:<pre># /usr/bin/sa-update -v --channel sought.rules.yerpmezőket az email kliensek tudják értelmezni.org --gpgkey 6C6191E3Update finished, no fresh updates were available</pre>}}