BLOG

ANASAYFA > BLOG > + Postfix, Spamassasin ve Policyd kurulumu
2015-10-14

Postfix, Spamassasin ve Policyd kurulumu

İki sayfa olarak yazılmış bu yazılarımızın esas amacı Php socket açma yöntemi ile ele geçirilmiş makinelerden yapılan mail-spam saldırılarını durdurmak ve mail serverlerimizin black liste gitmesine engel olmaktır. Bu yapıyı gerçekleştirir kullandığımız araçlar tamamı ile Open Source ve hala geliştirilmeye devam edilen projelerdir.


Kullandığımız yapılardan ve işlevlerinden biraz bahsetmek gerekirse farklı makinelerimizin tek bir yapı altında kontrol edilmesi ve loglanması için relay server mantığını kullandık. Bu yapıda kullandığmız esas programlar MTA olarak kullanılan Postfix, maillerin içeriğini otomatik olarak kontrol eden Spamassasin ve işin büyük kısmını yapan Policyd Cluebringer.


Bir Postfix eklentisi olan Policyd lightweight yapısı ile mail geldiğinde mailin içeriğine bakmadan sadece headerlerini kontrol edip mail atan kişinin bizim müşterimiz olup olmadığını kontrol edip eğer sistemde izinli ise mail atmasına izin vermesidir. Tahmin edebilirsiniz ki bu yapı ile sistemde tanımlı olmayan maillerin engellenmesi ile %60 daha fazla bir oranla outbound maillerde engelleme uygulayabiliyoruz ve kayıtlı kullanıcıların maillerinin sıkıntısız bir şekilde iletiyoruz.


!! Not kurulumda Ubuntu 15.04 versiyonu kullanılmıştır.



1 Postfix, Spamassasin, Policyd Kurulumu ve Konfigürasyonu


1.1 Exim Cpanel Serverinin Yönlendirilmesi


nano /etc/exim.conf

Komutu ile var ise smart route satırını editliyoruz yoksa kendimiz
ekliyoruz


smart_route:
driver = manualroute
domains = !+local_domains
transport = remote_smtp

Burada Exim MTA sisteminde gelen bütün portun hepsinin diğer makineye aktarılması sağlanır

route_data = <RELAY SERVER IP>


1.1.1 Yönlendirmenin test edilmesi


echo “This is the body of the email” | mail -s “This is the subject line” user@example.com


  • Komutu ile herhangi bir yere mail atmalısınız ve tcpdump komutu ile
    relay server makinesinden dinlemelisiniz eğer sayfada çıktı
    oluşuyorsa yönlendirmeyi doğru yapmışsınız denilebilir


tcpdump host <CPanel IP>


  • Eğer burada serverimizden gelen paketleri alabiliyorsak bundan sonra
    esas işlemlerin ve düzenlemelerin yapılacağı Relay serverimize
    geçebiliriz


1.2 Postfix Kurulumu


1.2.1 Postfix kurulumu için gerekli ekipmanlar



  • Programın kurulması için root yetkisi


  • Postfixi test etmek için Postfix üzerinden çalışan mail mailx gibi
    komutları içeren mailutils paketi


    apt-get install mailutils


    • NOT Burada Postfix ile alakalı ekranda bir ayarlama gelir ise
      Smart Host seçeneği ile ilerleyeceğiz gerekli işlemleri biz
      kendimiz manuel olarak etc dizininde main.cf ve master.cf
      dosyaları üzerinde yapacağız.

      • main.cf hakkında daha fazla bilgi[^fn-1]

      • master.cf hakkında daha fazla bilgi[^fn-2]







  1. Postfix ekipmanlarının indirilmesi


    apt-get install postfix



    1. Postfix elemanlarının yapılandırılması



      • main.cf nin editlenmesi


      sudo nano /etc/postfix/main.cf

      smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
      myhostname = SERVERNAME
      alias_maps = hash:/etc/aliases
      alias_database = hash:/etc/aliases
      mydestination = localdomain, localhost, localhost.localdomain, localhost
      relayhost =
      mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128, 31.192.215.72
      mailbox_command = procmail -a “$EXTENSION”
      mailbox_size_limit = 0
      recipient_delimiter = +
      inet_interfaces = all

      NOT!! eğer burada Postfix ile alakalı ayarları sorarsa no
      configuration seçeneğini işaretleyin



      • Postfix serverin yeni ayarlarının uygulanması


      sudo service postfix restart



    2. Sistemin çalışırlığının test edilmesi


      echo “This is the body of the email” | mail -s “This is the subject line” user@example.com


      • Eğer burada user@example.com sitesine mail gidiyorsa ve
        ayrıntılarda Postfix görüyorsanız sistem gayet güzel
        çalışıyor diyebiliriz.






1.3 Spamassassin kurulumu




  • Bu kısımda Postfixte bir eklenti olarak çalışan Spam assaasian
    yazılımını yükleyeceğiz


    apt-get install spamassassin spamc



  • Spamassassinin çalışmasının daha düzenli olması için kullanıcı grubu
    ve kullanıcı ekleyeceğiz


    # Grubun eklenmesi
    groupadd spamd

    Kullanıcının eklenmesi ve home dizini ayarları

    useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd




  • Logların tutulacağı yer ve yetkilendirmenin yapılması


    mkdir /var/log/spamassassin
    chown spamd:spamd /var/log/spamassassin



1.3.1 Spamassassini aktifleştirme ayarlarının yapılması




  • Burada Spamassassinin gerekli ayarlarını yapacağız


    nano /etc/default/spamassassin



  • Spamassasinnin aktif edilmesi


    ENABLED=0



  • satırının bulunup aşağıdaki satır ile değiştiriniz


    ENABLED=1



  • Güncellenme ve yeni spam listelerini getirmesi için


    CRON=0



  • satırını bulup aşağıdaki satır ile değiştiriniz


    CRON=1



  • SAHOME adında bir değişken oluşturup aşağıdaki gibi set ediniz


    SAHOME=“/var/log/spamassassin/”



  • OPTIONS değişkenini bulup aşağıdaki değeri atayınız


    OPTIONS=“–create-prefs –max-children 5 –username spamd -H ${SAHOME} -s ${SAHOME}spamd.log”



  • Herşeyin aktifleşmesi için spamassassini yeniden başlatın


    service spamassassin start



1.3.2 Spamassassinin Postfix ile ilişkilendirilmesi



  • Bu bölümde yapılandırılmış Spamassassin konfigürasyonumuzu Postfix
    ile ilişkilendireceğiz


  • Bu sebeple Postfixin ana konfigürasyon dosyasını editlememiz
    gerekiyor


    nano /etc/postfix/master.cf



  • Aşağıdaki satırı bulup bir altındaki ile değiştiriniz


    #smtp      inet  n       -       -       -       -       smtpd

    smtp      inet  n       -       -       -       -       smtpd -o content_filter=spamassassin



  • Sütunlar bittikten sonraki ilk boşluğa bu satırları ekleyiniz


    spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}



  • Değişiklikleri uygulamak için Postfix’i restart ediniz


    service postfix restart



1.3.3 Spamassassin yapılandırılmasının özelleştirilmesi



  • Bu kısımda basit bir şekilde spam maillerin ne gibi bir işlem
    göreceği hakkında kurallar yazacağız

  • Yazdığımız kurallar sadece maillerin spam olarak işaretlenmesi ve
    bunun derecelendirmesini yapacak


  • Öncelikle bu özelleştirmelerin yapılacağı konfigürasyon dosyasını
    açıyoruz


    nano /etc/spamassassin/local.cf



  • Aşağıdaki satırları kontrol ederek ekli ise düzenliyoruz ekli değil
    ise biz kendimiz ekliyoruz


    #Eğer sistem maili spam olarak algılamışsa mail title kısmına SPAM SCORE unu ekle
    rewrite_header Subject [***** SPAM SCORE *****]
    #Spamasasinin değerlerine göre spam olup olmadığına karar verir Bunu duruma göre değiştiebiliriz
    required_score 5.0
    #auto update ayarları
    use_bayes 1
    bayes_auto_learn 1



  • Servisi yeniden başlatıyoruz


    service spamassassin restart


    • Servis yeniden başlatıldığında buradan düzgün çalışıp
      çalışmadığını aşağıdaki komut ile kontrol edebilirsiniz


    tail -f /var/log/spamassassin/spamd.log


    • 2. olarakta C Panelden mail atarak ve mailin detaylarını Spamassassini
      ve diğer değerleri alıcının mail kutusundaki ayrıntılar kısmından
      bakabilirsiniz.








1.4 Policyd Kurulumu


1.4.1 Kurulum biraz sıkıntılı sebepleri



  • Perl paketlerinin yüklenmesi ve bazı perl fonksiyonlarına özel ayar
    yapılması gereği

  • Linklerdeki kurulumların eski olması ve çalışmıyor olması

  • mysql versiyonuna göre veri tabanının hazırlanması


1.4.2 Kurulum




  • Kurulumu apt-get reposu ile yapacağız bu aşağıdaki komut bize web
    arayüzü ile birlikte gerekli çoğu programıda beraberinde
    yükleyecektir.


    apt-get install postfix-cluebringer


    • Bu kod ile birlikte sistemimize bize gerekli olan

      • php5

      • bazı gerekli perl modülleri

        • CIDR






1.4.3 Kurulum için gerekli perl modüllerinin yüklenmesi




  • http://wiki.policyd.org/requirements




    • MySQL, PostgreSQL or SQLite


      apt-get install mysql-server mysql-client



    • Net::Server >= 0.96


      /usr/bin/perl -MCPAN -e ‘install Net::Server’



    • Net::CIDR


      /usr/bin/perl -MCPAN -e ‘install Net::CIDR’



    • Config::IniFiles (debian: libconfig-inifiles-perl, rpm:
      perl-Config-IniFiles)


      apt-get install libconfig-inifiles-perl



    • Cache::FastmMap (debian: libcache-fastmmap-perl, rpm:
      perl-Cache-FastMmap)


      apt-get install libcache-fastmmap-perl



    • Mail::SPF (required for CheckSPF module)


      /usr/bin/perl -MCPAN -e ‘install Mail::SPF ‘


    • NOT bazı yüklemeler apt-get install postfix-cluebringer
      sırasında yüklenmiş olabilir

    • Not2 ilk defa perl reposundan modül indiriyorsanız gerekli repo
      ayarlarının yapılması için gelen sorulara [yes] demeniz
      gerekmektedir




1.4.4 Mysql veritabanına özel veritabanının hazırlanması



  • Cluebringer birkaç veritabanı ile tümleşik çalışabilmektedir. Ben
    burada yaygın kullanımı açısından mysql veritabanını seçtim. Bu veri
    tabanı kullanılırken cluebringer her veritabanı sistemimize özel sql
    yapısı istiyor. Bu yüzden biz bu veritabanını kendimiz oluşturmamız
    gerekiyor.


  • Hangi veritabanını kullanacağımıza karar verdikten sonra bir de bu
    veritabanımızın versiyonunu öğrenmemiz gerekiyor


    mysql –version

    mysql Ver 14.14 Distrib 5.5.44, for debian-linux-gnu (x86_64) using readline 6.3



  • Mysql versiyonumuz burada 5.5.44 olduğu anlaşılıyor

  • Şimdi veritabanımızın şemasını hazırlayacağımız sistemi indirmemiz
    gerekiyor


  • Policyd ekipmanlarının indirilmesi


    cd
    mkdir policyd-cluebringer
    cd policyd-cluebringer
    wget http://download.policyd.org/v2.0.14/cluebringer-v2.0.14.tar.xz
    unxz -c clue* | tar xv
    cd clue*
    cd database
    for i in core.tsql access_control.tsql quotas.tsql amavis.tsql checkhelo.tsql checkspf.tsql greylisting.tsql
    do
    ./convert-tsql mysql55 $i
    done > policyd.mysql



1.4.5 Veritabanının aktifleştirilmesi




  • Şimdiye kadar kendimizin kullanacağı veri tabanımızı hazırladık
    fakat henüz kullanılabilir şekilde değil bu veri tabanının
    bağlantısını mysql ile ilişkilendireceğiz.


    mysql -p
    Enter password:
    #eğer daha önceden oluşturulmuş bir veritabanı varsa sil yoksa oluştur
    #mysql> drop database cluebringer;
    mysql> create database cluebringer;
    mysql> use cluebringer;
    mysql> CREATE USER ‘cluebringer’@‘localhost’ IDENTIFIED BY ‘mypassword’;
    mysql> GRANT ALL PRIVILEGES ON cluebringer.* TO ‘cluebringer’@‘localhost’;
    exit



  • Bu query dosyasını mysqlde çalıştıracağız


    mysql -u root -p cluebringer < policyd.mysql



1.4.6 Cluebringerin database özelliklerine göre konfigürasyonu




  • cluebringer dosyasını editleyin


    nano /etc/cluebringer/cluebringer.conf



  • Aşağıdaki değişkenleri bulup değerlerini değiştiriniz


    DSN=DBI:mysql:dbname=cluebringer;host=localhost
    DB_Type=mysql
    DB_Host=localhost
    DB_Port=3306
    DB_Name=cluebringer
    Username=cluebringer
    Password=mypassword



  • Servisi başlatınız ve kontrol ediniz


    service postfix-cluebringer start
    service postfix-cluebringer status



1.4.7 Cluebringerin postfix ile ilişkilendirilmesi




  • Postfixin Policyd izinleri


    nano /etc/postfix/main.cf


    • Aşağıdaki satırları en alta yapıştırınız


    smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10031, permit_mynetworks
    smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10031, permit_mynetworks


    • Policyd ile birlikte çalışan perl kütüphanesine izin vermek için


    nano /etc/postfix/master.cf

    -Bu satırı listeye ekleyin


    policy-spf  unix  -       n       n       -       -       spawn
    user=nobody argv=/usr/sbin/postfix-policyd-spf-perl



1.4.8 Cluebringer-webui konfigürasyonu




  • Bu kısımda policyd nin web arayüzü olan kısmının ayarlarını
    yapacağız


    nano /etc/cluebringer/cluebringer-webui.conf



  • Aşağıdaki satırları dosyaya ekleyin veya editleyin


    $DB_DSN=“mysql:host=localhost;dbname=cluebringer”;
    $DB_USER=“cluebringer”;
    $DB_PASS=“mypassword”;



  • Şimdi usr/share altında olan web sayfalarınını link olarak apache2
    programına tanıtalım


    cd /var/www/html
    ln -s /usr/share/postfix-cluebringer-webui/webui/





  1. Php5 mysql driverinin yüklenmesi</p>


    • Artık bütün işlemleri tamamlamış bulunmaktayız ve bir tek php
      ile mysql arasındaki bağlantıyı kuracak driveri yüklememiz
      gerekiyor


    apt-get install php5-mysql


    • Artık serverimize &lt;Relay Server IP/webui> sayfasından
      ulaşabilirsiniz




1.5 Son notlar



  • Artık serverimiz pratikte iş yapar hale gelmiştir bundan sonra
    yapılacak ayarların hepsi sizin serverlerinizin durumuna ve Policyd
    programında nasıl yetki vereceğinize bağlı olarak değişicektir.

    • !! Bu kısıma kadar ne yapmadık !!

      1. Serverimiz her hangi bir koruması bulunmamakta yani sizin
        serverinizin IPsini yazan her hangi bir kişi /webui
        arayüzünden istediği gibi kural atayabilir.

      2. Spamassasin sadece spamları işaretlemek için
        ayarlardığımızdan spam mailleriniz dışarı, mail kısmında
        bulunan title kısmını değişicektir ve herhangi bir silme
        işlemi uygulamayacaktır.

      3. Her mail serverin üstünden geçen mailleri imzalamak gibi bir
        özelliği vardır, bizim Eximden çıkan maillerimizin IPsi ,
        Makine ismi versiyonu gibi özellikleri gizleme işlemi
        yapılmadı.

      4. Aynı şekilde Spamasasinin de header imzalama özelliğinden
        dolayı oluşan headerlerin silinmesi yapılmadı

      5. Policyd üzerinde özelleştirme yapmadık.




Bunların ayarları için diğer yazımızı inceleyebilirsiniz.


https://www.netinternet.com.tr/bilgi-bankasi/spam-engelleme-icin-spamassasin-ve-policyd-ozellestirmeleri


1.6 Kaynakça


1.6.1 Postfix kurulum sayfaları



1.6.2 Spamassassin kurulum sayfaları



1.6.3 Policyd kurulum sayfaları



Footnotes


[^fn-1] http://www.postfix.org/postconf.5.html


[^fn-2] http://www.postfix.org/master.8.html

Avatar
Abdullah Altunbaş Teknik Şef
Netinternet Bilişim Teknolojileri A.Ş.'de teknik konularda liderlik yapıyorum. 15 yıldır bu alanda çalışıyorum ve özellikle sistem yönetimi, ağ teknolojileri ve yazılım geliştirme konularına odaklanıyorum.
Yorumlar

Henüz yorum yok.

Yorum Yap