Postfix Policyd - Ahmet Orhan
Yöneticisi olduğum bir sunucudan mail gönderilme sorunu yaşanıyordu. Girdim baktım ki bir kullanıcıdan 30 bine yakın mail gönderilmiş ve her an gönderilmeye devam ediyor..
Kullanıcı smtp auth ile login olmuş ve legal durumda.. Muhtemelen bilgisayarındaki virus yüzünden ya da smtp login bilgileri ele geçirildiği için böyle bir durum yaşanmış ancak sonuçları açısından durum biraz vahim
Mail sunucuda posta gönderim veya alımların limitlendirilmesi ve izlenmesi..
Postfix sunucuda Policyd kurulumu yapıp Policyd uygulaması ile bu işi çözeceğiz..
//Kurulum için dosyayı indirelim
#wget http://devlabs.linuxassist.net/attachments/download/256/cluebringer-v2.1.x-201211111115.tar.gz #tar -zxvf cluebringer-v2.1.x-201211111115.tar.gz #cd cluebringer-v2.1.x-201211111115
#tar -zxvf cluebringer-v2.1.x-201211111115.tar.gz
//Gerekli Dizinleri oluşturalım
#mkdir /usr/local/lib/cbpolicyd-2.1 #mkdir /var/log/cbpolicyd #mkdir /var/run/cbpolicyd #mkdir /etc/cbpolicyd
//Gerekli dizinleri ve dosyaları ilgili yerlere kopyalayalım
#cp -r cbp /usr/local/lib/cbpolicyd-2.1/ #cp -r awitpt/awitpt /usr/local/lib/cbpolicyd-2.1/ #cp cbpadmin /usr/local/bin/ #cp cbpolicyd /usr/local/sbin/ #cp cluebringer.conf /etc/cbpolicyd
#cp -r cbp /usr/local/lib/cbpolicyd-2.1/
#cp -r awitpt/awitpt /usr/local/lib/cbpolicyd-2.1/
#cp cluebringer.conf /etc/cbpolicyd
//Policyd için kullanıcı oluşturalım ve haklarını düzenleyelim
#groupadd cbpolicyd #useradd -g cbpolicyd cbpolicyd #chown cbpolicyd.cbpolicyd /var/log/cbpolicyd /var/run/cbpolicyd
#useradd -g cbpolicyd cbpolicyd
#chown cbpolicyd.cbpolicyd /var/log/cbpolicyd /var/run/cbpolicyd
//Config dosyasında mysql bilgilerini girelim. (/etc/cluebringer.conf)
#vi etc/cluebringer.conf DSN=DBI:mysql:database=policyd;host=localhost Username=policyd Password="parola"
Mysql server üzerinde policyd kullanıcısı oluşturdum ve policyd veritabanına yetkilendirdim..
Kurulum sırasından Centos5 de bazı problemler yaşadım.. Bunlar genellikle perl modulleri ile ilgili sorunlardı.. Aşağıdaki adımlarla sorunları çözdüm..
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm rpm -Uvh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm yum –enablerepo=rpmforge install perl-Net-Server
perl -MCPAN -e ‘install Perl::OSType’ perl -MCPAN -e ‘install Module::Build’; cpan install Config::IniFiles cpan install Cache::FastMmap cpan install mail::SPF
//MYSQL yapılandırması için web arabirimini ilgili konuma kopyalayalım:
#cp -r webui /var/www/vhosts/httpdocs/domain.com/
//domain.com/webui adresinden sayfaya erişiyor olmamız gerek..
//Mysql bağlantı bilgileri – Web arabirimi için
//config.php db ayarı
$DB_DSN="mysql:host=localhost;dbname=policyd"; $DB_USER="policyd"; $DB_PASS="parola"; $DB_TABLE_PREFIX="";
#for i in core.tsql access_control.tsql quotas.tsql amavis.tsql checkhelo.tsql checkspf.tsql greylisting.tsql accounting.tsql
./convert-tsql mysql $i done > policyd.sql
policyd.sql dosyasını phpmyadmin yada mysql üzerinden policyd veritabanımıza import edelim..
Tüm ayarlarımız tamamlandığında
komutu ile policyd başlatalım. sistem açılırken policyd nin aktif olması için de dosyayı init.d ye kopyalayalım..
#cp cluebringer-v2.1.x-201211111115/contrib/initscripts/Fedora/cbpolicyd /etc/init.d/
//Policyd’nin postfixe tanıtılması postfix main.cf de
smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10031,permit_mynetworks,…..
en başa check_policy_service inet:127.0.0.1:10031 ekleyelim sonraki komutlara virgülden sonra devam edebiliriz.. Başa eklenmesi önemli..
postfix restart ettiğimizde artık policyd aktif olacak.. Bundan sonraki aşamada web arabiriminden işlemlerimizi yapacağız…
Policyd başlattığımızda hataları /var/log/cbpolicyd/cbpolicyd.log dosyasından kontrol edebiliriz..
Bu ekranda default policy tanımları mevcut.. Bu tanımlar üzerinden işlem yapabiliriz.. Biz gönderilen postalara kota koyacağız o nedenle Default Outbound Policy kullanacağız..
Default tanımlarda kullanılan grup ayarları. Yani default outbond policy seçtiğimizde internal_domains ve internal_ips grubundaki üyeler için policy uygulanacak.. Domainlere kota koymak için internal_domains üyelerini seçmemiz gerekecek..
Sadece defsad.org domaini için policy uygulanacak…
Quotas kısmında kota belirleyeceğiz.. ve seçili kota tanımlamasına limit koyacağız..
Default Outbound : Giden mailler için policy uygulanacak(internal_domainsde yazan domain listesi için..) Track : sender@domain : Gönderenin mail adresine göre filtreleme yapar..
Saslusername:username : Smtp auth ile login olmuş mail hesaplarına policy uygular.. Bu seçenek daha mantıklı çünkü mail gönderen kişi mail adresi kısmını değiştirdiğinde sender@domain filtresini atlayacaktır, saslusername:username seçeneğinde ise böyle bir durum söz konusu olamaz..
Period : 3600 ( Saatlik periyotta policy geçerli olacaktır.)
Verdict : Reject( Maili geri gönderiyoruz.. 501 hatası ile birlikte..)
Disabled : İlk policy oluşturulduğunda yes seçeneği aktif gelir. Bu nedenle policy güncelleyip no yapmamız gerek.
Seçili kotaya limit ekleyelim.
Mesaj sayısı 3ü geçmeyecek..
Yani özetle defsad.org domaininden bir kullanıcı saatte 3 adet mail gönderebilir.. Daha sonra hata mesajı ile mail geri döner..