Főoldal

2010. június 13., vasárnap

Postfix clamavval és amavissal

Már van egy maildires levelező szerverünk, bővítsük vírus és spamszűréssel!

A vírusrtáshoz a calamavot fogom használni, ez egy unix-os vírusirtó alkalmazás. Az adatbázisát önmagától frissíti és ingyenes. Spamszűréshez a sapmassassint telepítem, ez egy nyílt forráskódú Perl nyelven írt program, amely a leveleinket pontozza, és ha elértek egy bizonyos határt akkor SPAM-nek minősíti. A clamav és spamassassin együttes használatához az amavis szűrőre lesz szükségünk.

Telepítsük a clamav, clamav-daemon, amavis, spamassassin csomagokat:

test:~# apt-get install clamav-daemon amavis spamassassin

Most feltelepítettük a vírusirtót és a spamszűrőt, de még nincsenek beemelve a levéltovábbítási folyamatba. Mivel a postfix moduláris felépítésű, akár saját magunk készítette scripteken is átengedhetjük a leveleket. Most az amavis-t kell beemelni, hogy az szűrni tudja a clamavval közösen a vírusokat illetve a spamet a spamassassinnal.

Szerkesszük a master.cf-et! ( a fájl egy részlete, kiemelve az új beillesztendő sorokkal:)

#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").

# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
#
==========================================================================
smtp inet n - - - - smtpd
-o content_filter=smtp-amavis:[127.0.0.1]:10024

...
smtp-amavis unix - - n - 5 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o local_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o strict_rfc821_envelopes=yes

A piros sort a fölötte lévő az alap konfogfájlban megtalálható sor alá kell beszúrni. Ez mondja meg a postfixnek, hogy a loopback címre továbbítsa először a levelet (a 10024-es portra). A zöld rész egyéb beállításokat tartalmaz, később részletezni fogom őket. Ezt a fájl aljára illesszük oda.

Az amavis és calamav együttműködéséhez az kell, hogy a clamav az amavis felhasználója nevében fusson, ennek megfelelően változtassuk meg a jogosultságokat az általa használt könyvtárakon, illetve a konfigurációs állományaiban. A /etc/clamav/clamd.conf fájlban keressük meg a User clamav sort és írjuk át User amavis-ra, a LocalSocketGroup clamavot LocalSocketGroup amavis-ra valamit a freshclam.conf-ban a DatabaseOwner clamav-ot DatabaseOwner amavis-ra. Változtassuk meg néhány könyvtár tulajdonosát:

test:~# chown -R amavis:amavis /var/{run,log,lib}/clamav

Ezzel túl is vagyunk a munka oroszlánrészén, indítsuk újra a postfixet, clamavot, amavist és jöhet a tesztelés! Küldhetünk helyileg is levelet a mailx segítségével, de ha feltelepítettük a courier-pop csomagot akkor akár egy levelezőkliensről is a POP3 protokoll segítségével ( a levelek letöltéséhez kell). Ha minden jól megy hasonlót kell látnunk a /var/log/mail.log fájlban:

Jun 11 17:04:02 test postfix/smtpd[3163]: connect from unknown[192.168.56.2]
Jun 11 17:04:02 test postfix/smtpd[3163]: A71D72603D: client=unknown[192.168.56.2]
Jun 11 17:04:02 test postfix/cleanup[3165]: A71D72603D: message-id="<201006111704.04549.tibi@root-tech.hu>
Jun 11 17:04:02 test postfix/qmgr[2333]: A71D72603D: from=, size=155922, nrcpt=1 (queue active)
Jun 11 17:04:02 test postfix/smtpd[3163]: disconnect from unknown[192.168.56.2]
Jun 11 17:04:02 test postfix/smtpd[3130]: connect from localhost[127.0.0.1]
Jun 11 17:04:02 test postfix/smtpd[3130]: EB2AC26040: client=localhost[127.0.0.1]
Jun 11 17:04:02 test postfix/cleanup[3165]: EB2AC26040: message-id="<201006111704.04549.tibi@root-tech.hu>
Jun 11 17:04:03 test postfix/smtpd[3130]: disconnect from localhost[127.0.0.1]
Jun 11 17:04:03 test postfix/qmgr[2333]: EB2AC26040: from=, size=156314, nrcpt=1 (queue active)
Jun 11 17:04:03 test amavis[1902]: (01902-02) Passed CLEAN, [192.168.56.2] [192.168.56.2] ->
Jun 11 17:04:03 test postfix/smtp[3166]: A71D72603D: to=, relay=127.0.0.1[127.0.0.1]:10024, delay=0.44, delays=$
Jun 11 17:04:03 test postfix/local[3168]: EB2AC26040: to=, relay=local, delay=0.15, delays=0.11/0.02/0/0.02, ds$
Jun 11 17:04:03 test postfix/qmgr[2333]: A71D72603D: removed
Jun 11 17:04:03 test postfix/qmgr[2333]: EB2AC26040: removed

Láthatjuk hogy két levél keletkezett, az egyik amit én küldtem a kliensről, ez át lett passzolva a 127.0.0.1:10024-es portjára és visszakaptunk egy másik leellenőrzött levelet.

2 megjegyzés:

  1. Spamszűrésre okos találmány még a postgrey is.
    Kár hogy egy csomó mailszerver nem szabványosan van beállítva, és nem küldik újra a levelet.
    Arról nem is beszélve, hogy hány helyen nem tudják rendesen beállítani, hogy a reverse dns eltaláljon egy forward dns-t is :)

    VálaszTörlés
  2. A postfix ha azonnal nem tudja továbbítani a levelet, akkor beteszi a DEFERRED-be, bent hagyja a sorba és később még próbálkozik. Sejti hogy valami szürkelista van a háttérben :)

    VálaszTörlés