Re: Spamassassin -- Postfix sunucusunda kurulum
Deniz Akkus Kanca <[email protected]> Mon, 24 Feb 2003 08:44:14 +0200
| Newsgroups | gmane.mail.spam.anti-spam.turkish |
|---|---|
| Message-ID | <[email protected]> |
Pazartesi 24 Åubat 2003 08:15 tarihinde Åunları yazmıÅtınız: Sayın Funda, Problem Türkçe karakterden çok eklemiÅ olduÄum HTML sayfasının Ecartis tarafından metine çevrilmesinden kaynaklanıyor. Ãnerinizi uyguladım. Yazı altta. Gözden geçirilirse sevinirim. Esen kalın, Deniz ----------------------------------------------------------------------- Postfix, RAVAntivirus ve SpamAssassin ile Virus ve Spam Filtrelemesi: 24 Subat 2003 Deniz Akkus Kanca <[email protected]> Onemli not: Bu NASIL belgesi, hazirladigim daha detayli bir Postfix NASIL belgesinden cikarilmistir. Bu belge sadece calisan bir Postfix duzenine virus ve spam filtrelemesinin nasil eklenecegini ele almaktadir. Sifirdan bir Postfix/Cyrus sistemi kurmak, ic ve dis kullanicilariniza cesitli kisitlamalar getirmek, SMTP-AUTH veya sifreli (TLS/SSL) SMTP/IMAP/POP3 iletisimlerini devreye almak icin diger belgeye bakiniz. Tepeden tirnaga sifirdan bir posta sisteminin kurulusunu ele alacak olan belge, http://www.belgeler.org ve http://www.arayan.com/da/linux_tr.html adreslerinde yayinlanacaktir. Mekanizma: 1. Her yone posta sunucusundan gecen butun postalar hem virus, hem de spam filtrelemesinden gecirilir. 2. Virus tasiyan postalar durdurulur, Turkce olarak aliciya, gonderene ve sistem yoneticisine haber verilir. 3. Spam niteligi tasiyan postalarin basliklari yeniden yazilir ve ozel bir posta kutusuna atilir. Kullanilan Linux Dagitimi: Redhat 8.0. Bu kurulum RPM paket sisteminden mumkun oldugunca faydalanmaktadir. Gereken Yazilimlar: 1. Postfix 2. Bir POP veya IMAP sunucusu. Bu sistem Cyrus uzerinde calismaktadir, fakat herhangi bir POP veya IMAP sunucusu isinizi gorur. 3. Procmail 4. Oldukca kapsamli bir Perl kurulumu. Bu sistemde Redhat ile gelen perl paketlerinin cogu kurulu durumdadir. Ek bazi paketler de asagida listelenmektedir. 5. SpamAssassin 6. Pyzor 7. RAVAntivirus 8. Eger sistemde python yok ise pyzor calismaz. Dolayisiyla pyzor'un ihtiyac duydugu paketler (RedHat dagitiminda hazir mevcut). 9. NTP. Zamanini dogru bilmeyen bir posta sunucusu bas agritir. RedHat dagitiminda mevcut. Bizim sistemimizde saatler NTP marifeti ile es zamanlanmaktadir. On Gereklilikler: Calisan bir Postfix posta sistemi. Sistemde kullanici posta kutusu olusturabiliyor ve bu posta kutularini kontrol edebiliyor olmalisiniz. Bizim sistemimizde LDAP/Kerberos uzerinde olusturulan gercek kullanicilar kullanilmaktadir. Calisan bir NTP duzeni. Bunsuz calisabilse bile, saatini dogru takip etmeyen bir posta sistemi bas agritacak ve spam filtrelerinin onemli saat farklarini da kontrol etmeleri yuzunden etkinligi azalacaktir. postfixfilter adinda bir gercek kullanici. Bu ornekte ev dizininin /home/postfixfilter oldugu varsayiliyor. [email protected] adresine gonderilen postalari kabul eden bir posta kutusu. Gercek veya sanal, sizin tercihiniz, fakat buraya gonderilen postalari kontrol edebilmelisiniz. Paketler ve Hazirlik Sureci: 1. Postfix: Guncel surum olan postfix-2.0.3-1.src.rpm http://postfix.wl0.org/en/ adresinden alindi. Bunun nasil kurulacagi bu belge kapsaminda degil. 2. IMAP/POP sunucusu: Guncel surum olan cyrus-imapd-2.1.12-3.src.rpm http://home.teleport.ch/simix/ adresinden alindi. Bunun nasil kurulacagi bu belge kapsaminda degil. 3. Procmail: Redhat ile gelen procmail-3.22-7.i386.rpm sisteme kuruldu. rpm -Uvh procmail-3.22-7.i386.rpm 4. Perl: Redhat: Asagidaki paketlerin hepsi gerekmemektedir. Fakat spamassassin calisirken bazi perl siniflarini bulamadi. Dolayisiyla hemen hemen (veritabani gerektirenler haricindekileri) hepsini sisteme kurduk: perl-5.8.0-55 perl-Archive-Tar-0.22-26 perl-BSD-Resource-1.15-4 perl-Bit-Vector-6.1-28 perl-CGI-2.81-55 perl-CPAN-1.61-55 perl-Compress-Zlib-1.16-8 perl-Crypt-SSLeay-0.45-2 perl-DBI-1.30-1 perl-DB_File-1.804-55 perl-Date-Calc-5.0-25 perl-DateManip-5.40-27 perl-Devel-Symdump-2.03-9 perl-Digest-HMAC-1.01-8 perl-Digest-SHA1-2.01-6 perl-File-MMagic-1.15-2 perl-Filter-1.28-9 perl-Filter-Simple-0.78-8 perl-Frontier-RPC-0.06-33 perl-HTML-Parser-3.26-14 perl-HTML-Tagset-3.03-25 perl-Inline-0.43-7 perl-NKF-1.71-7 perl-Net-DNS-0.26-2 perl-Parse-RecDescent-1.80-8 perl-Parse-Yapp-1.05-26 perl-RPM2-0.45-1 perl-SGMLSpm-1.03ii-6 perl-TermReadKey-2.20-2 perl-Time-HiRes-1.20-23 perl-TimeDate-1.1301-2 perl-URI-1.21-3 perl-XML-Dumper-0.4-22 perl-XML-Encoding-1.01-20 perl-XML-Grove-0.46alpha-21 perl-XML-Parser-2.31-12 perl-XML-Twig-3.05-3 perl-libwww-perl-5.65-2 perl-libxml-enno-1.02-25 perl-libxml-perl-0.07-25 perl-suidperl-5.8.0-55 Ek Perl Paketleri: Bunlari ftp://ftp.rpmfind.net/linux/contrib/noarch/noarch adresinden elde edebilirsiniz: perl-MIME-tools-5.411-2.noarch.rpm perl-MIME-Base64-2.12-2.noarch.rpm perl-IO-stringy-2.108-2.noarch.rpm perl-MailTools-1.50-1.noarch.rpm perl-libnet-1.11-2.noarch.rpm Kurulus Komutlari: rpm -Uvh --force perl-MIME-Base64* rpm -Uvh perl-IO-stringy* rpm -Uvh --force perl-libnet* rpm -Uvh perl-MailTools* rpm -Uvh perl-MIME-tools* 5. SpamAssassin: Guncel surum olan spamassassin-2.50-1.src.rpm http://spamassassin.kluge.net/ alindi. Redhat 8.0 uzerinde bu RPM sorun cikariyor. Asagidaki sekilde kurun: a. rpm -ivh spamassassin-2.50-1.src.rpm b. cd /usr/src/redhat/SPECS c. spamassassin.spec dosyasini bir metin editorunde acin. %prep -q satirini %prep haline getirin. d. rpmbuild -ba spamassassin.spec e. cd /usr/src/redhat/RPMS/i386 f. rpm -Uvh --nodeps perl-Mail-SpamAssassin* g. rpm -Uvh spam* 6. Pyzor: http://pyzor.sourceforge.net adresinden pyzor-0.4.0.tar.bz2 paketi alindi. RPM olmayan paketleri /usr/local/src altinda tutmak tertipli oluyor: a. cd /usr/local/src b. bunzip2 pyzor-0.4.0.tar.bz2 c. tar -xvf pyzor-0.4.0.tar d. cd pyzor-0.4.0 e. python setup.py build f. python setup.py install 7. RAV Antivirus: Bu bir ticari paket. 30 gun deneme kullanim suresinden sonra satin almak durumundasiniz. http://www.ravantivirus.com/ adresinden ravpostfixlnx.i386.rpm.tar.gz alindi. a. cd /usr/local/src b. tar -xzvf ravpostfixlnx.i386.rpm.tar.gz c. cd RAV_for_Postfix d. rpm -Uvh ravcore* e. rpm -Uvh ravmd* f. rpm -Uvh ravpostfix* Ayarlar: RAV Antivirus - POSTFIX: RAV'in calisma mantiginda, postfix'in kuyruk surecine mudahale etmek var. Postfix ayar dosyalarinda cesitli degerleri degistirerek, sistemin kullanicidan postayi alip ilk bazi ufak tefek (gonderen, alan vb) kontrolleri yaptiktan sonra RAV'a gondermesi ve daha sonra RAV'in tekrar Postfix kuyruguna postayi enjekte etmesi usulune gore calisiyor. cd /etc/postfix master.cf sonunda: #rav-begin: RAV AntiVirus Configuration 127.0.0.1:10026 inet n - n - 100 smtpd -o content_filter= -o myhostname=dummy.domain.name #rav-end satirlarini goreceksiniz. Burasi, RAV'in postfix kuyrugundan cekip kontrol ettikten sonra postfix kuyruguna postayi enjekte ettigi komut. -o content_filter= secenegi, postanin surekli olarak RAV'a gonderilmesini engelliyor. Bir kez gectikten sonra, artik filtre uygulama, direkt isle demek. Bu degismeyecek. Burada su anda mevcut olan kendi Postfix ayarlarinizi tasimak onem kazaniyor. Bizim main.cf dosyamizdan ayarlar: alias_maps= hash:/etc/postfix/aliases, ldap:ldapAlias Alias_maps ayarimizi tasimak zorundayiz. Yoksa bir takma isme gonderilmis olan postayi postfix reddeder. -o alias_maps= hash:/etc/postfix/aliases, ldap:ldapAlias myhostname duzenlenmemis, dolayisiyla sistemin kendi adini (istasyon.bizimfirma.com.tr) verecegiz . -o myhostname=istasyon.bizimfirma.com.tr smtpd_recipient_restrictions kullaniliyor. Degeri: check_sender_access ldap:ldapInternalUser, check_sender_access ldap:ldapExternalMail, reject_unauth_destination Yani gonderene gore bazi izinlendirme yaptiktan (ve bu izni olmayanlari hemen reddettikten) kalanlari yerine gonderiyoruz. Bu secenegi tekrar olusturacagiz. Bu noktada artik gonderenlerin izinleri kontrol edilmis ve reddedilecekse reddedilmis. Burayi permit_mynetworks, reject_unauth_destination yapiyoruz. Yani benim guvendigim aglardan gelenleri istedigi yere gonderiyoruz, geri kalanini ancak bizim sunucumuza yoneltilmisse kabul ediyoruz. Normal isleyiste buraya tek gelen RAV'in yonlendirdigi postalar olacak. Sonuncu komut, disaridan bir sekilde bu porta ulasirlar ise diye. -o smtpd_recipient_restrictions=permit_mynetworks, reject_unauth_destination smtpd_sender_login_maps kullaniliyor. Degeri ldap:ldapAlias . Bu salt SMTP-AUTH ile sisteme girenlerin bu kimlik sinamasinda verdikleri kimlik ile gonderdikleri postadaki gonderen kimliginin ayni oldugunu kontrol ediyor. Bu noktada artik gecerligi kalmis degil. Kuyruga enjeksiyon yapan surec SMTP-AUTH ile gelmemis. Bunu bosaltacagiz. -o smtpd_sender_login_maps= Yeni master.cf RAV komutu: #rav-begin: RAV AntiVirus Configuration 127.0.0.1:10026 inet n - n - 100 smtpd -o content_filter= -o myhostname=istasyon.bizimfirma.com.tr -o alias_maps=hash:/etc/postfix/aliases,ldap:ldapAlias -o smtpd_recipient_restrictions=permit_mynetworks,reject_unauth_destination -o smtpd_sender_login_maps= #rav-end RAV Antivirus - Kendi Ayarlari: /etc/opt/rav/ravmd.conf dosyasinda: Virus uyarilarini Turkce yapmasini istiyoruz. _include /etc/opt/rav/languages/turkish-iso-8859-9 satirinin basindaki # isaretini kaldirin. (Az yukaridaki english satirini oldugu gibi birakmak zorundasiniz. Yoksa hata olusuyor.) /etc/opt/rav/groups/global dosyasinda: RAV'in her virusu bir de RAV'a haber verme ozelligini kaldiralim: #admin_addr = [email protected] ve Turkce destegi icin asagidaki satirin basindaki # isaretini kaldiralim. _include /etc/opt/rav/languages/turkish-iso-8859-9.equiv Bu satirin yukarisinda yer alan Ingilizce satirinin (english.equiv) basina bir # koyalim. Virus uyarilarini sistem yoneticisi de alsin istiyoruz: admin_addr = [email protected] Postfix'in always_bcc secenegi ile sistemden gecen butun postalarin bir kopyasini aliyoruz. Viruslu dosyalarda bu adrese de posta gonderilmesini veya bu adrese gittiginin gonderene haber verilmesini istemiyoruz. # E-mail address that will not be notified. do_not_warn = [email protected] # E-mail address that will be hidden in all e-mail notifications. do_not_show = [email protected] Butun spam kontrollerimizi spamassassin ile yapacagiz. RAV kendi icinde de bazi spam filtreleri tasiyor. Bunlari devre disi birakiyoruz (antispam_configuration ile baslayan satirlarin basina # koyun): #antispam_configuration = bulk_high_precision, bulk_very_high_precision SpamAssassin/Procmail ve POSTFIX: /etc/postfix icerisindeki main.cf ve master.cf POSTFIX ayar dosyalarinda bazi degisiklikler yaparak Postfix'in kuyruga attigi postalari procmail'e yonlendirmesini, procmail'de spamassassin'den gecirilen postalarin RAV virus kontrolunden gecerek Postfix kuyruguna geri donmesini saglayacagiz. /etc/postfix/master.cf: Baslarinda yer alan smtp satirini asagidaki sekilde degistirin. Ortadaki y harfi onemli, bunu unutmayin! smtp inet n - y - - smtpd -o content_filter=procmail Dosyanin sonuna su satiri ilave edin (tek satir): procmail unix - n n - - pipe flags=R user=postfixfilter argv=/usr/bin/procmail -t -m USER=${user} EXT=${extension} /home/postfixfilter/procmailrc ${sender} SpamAssassin'i Cagiran PROCMAIL ayarlari: /home/postfixfilter/procmailrc dosyasini su icerikle olusturun (postfixfilter kullanicisi dosyayi okuyabilmeli): Eger spamassassin filtrelemesi sonucu olusan hareketleri degistirmek isterseniz mudahale edeceginiz yer burasi. Ornegin icinde X-Spam-Flag: YES yazan paragrafi cikararak filtreden gecirilen postalarin islendikten sonra herhangi bir ayiklamaya tabi tutulmadan son kullanicilara aynen gonderilmesini saglayabilirsiniz. Biz, eger bir posta spam olarak isaretlenmis ise, gonderilenleri baska bir basliga kaydedip postayi [email protected] adresine yonlendiriyoruz. /home/postfixfilter/procmailrc: SENDER = "<$1>" SHIFT = 1 :0 fw | /usr/bin/spamassassin :0 * ^X-Spam-Flag: YES | (formail -R "To:" "X-Originally-To:") | (formail -R "Cc:" "X-Originally-Cc:") \ | (formail -i "To: [email protected]") | $SENDMAIL -f "$SENDER" -i "$@" :0 | $SENDMAIL -f "$SENDER" -i "$@" SpamAssassin'in Kendi Ayarlari: /etc/mail/spamassassin/local.cf: required_hits 5 rewrite_subject 0 whitelist_from *.bizimfirma.com.tr pyzor_path /usr/bin/pyzor pyzor_max 2 pyzor_add_header 1 dns_available yes report_header 1 use_terse_report 1 score PYZOR_CHECK 5.00 Bitirme Islemleri: /etc/rc.d/init.d/ravmail restart /etc/rc.d/init.d/postfix reload Lutfen duzeltmeleri [email protected] adresine yollayin.