Debian GNU/Linux 3.1 (Sarge) Üzerinde

Qmail (Smtp-Auth destekli) + Vpopmail (Mysql destekli) + Courier-Imap + Squirrelmail (Türkçe)

Spamassassin + Razor + Pyzor + Dcc + Maildrop + Clam Antivirüs + Qmailscanner

Yazan : Serdar Aytekin - serdar~aytekin.web.tr
Versiyon : 2.1.0
Son Güncellenme Tarihi : 12-02-2005

GİRİŞ :

Belgede yazılanların uygulanıp uygulanmaması tamamen uygulayan kişinin sorumluluğundadır. Belgede bahsedilenlerin uygulanması sonucu ortaya çıkabilecek hertürlü zarardan yazar sorumlu tutulamaz. Belge GNU Özgür Belgeleme Lisansının http://www.gnu.org/copyleft/fdl.html adresinde yer alan -son sürümdeki- lisans içeriğine bağlı kalmak koşulu ile aynen yada kısmen dağıtılabilir, yayınlanabilir.

Bu belgenin son sürümüne;

http://www.serdaraytekin.com/docs/os/debian/sarge-qmail-vpopmail-spamassassin-antivir-squirrelmail.html adresinden ulaşabilirsiniz.

NASIL BİR SİSTEM AMAÇLANIYOR :

Bu yazı ile Debian Gnu/Linux 3.1 (Sarge) üzerinde öncelikle Qmail'in sağlamlığı ve Vpopmail yazılımının gücünü birleştirilip, ortaya binlerce/milyonlarca kullanıcıya e-posta hizmeti sunabilecek yapının oluşturulması öngörülmüştür. Web üzerinden e-postalara erişim için Squirrelmail yazılımı kullanılmış, ayrıca pop3 ve imap desteği ilede Thunderbird, Evolution, Kmail, Outlook Express gibi yazılımlarla da sistemin entegre çalışabilmesi sağlanmaya çalışılmıştır. Bu yapı Antivirus ve Spam sistemleri ilede desteklenerek daha da modern bir e-posta sisteminin oluşturulması amaçlanmıştır.

Belgede anlatılan yazılımlar kurulduğunda,

Smtp-Auth desteği,

Pop3 ve Imap desteği,

Web-Mail desteği,

Antivirus ve Spam desteğine sahip virtual (sanal) e-posta sistemi oluşturulmuş olacaktır. Sistemde kullanacağınız donanımada bağlı olarak yüzlerce/binlerce domaine ve binlerce/milyonlarca kullanıcıya e-posta hizmeti sunabileceksiniz. Ayrıca bu Sistemi http://www.inter7.com/?page=vpopmail adresinde yer alan qmailadmin, vqadmin, vqregister, vqsignup yazılımları ile destekleyerek, hotmail, yahoo, gmail benzeri sistemler (üyelik kaydı olan, yönetici paneli olan, tüm sistemin kontrolunun, kullanıcı işlemlerinin yönetici paneli üzerinden yapılabileceği) oluşturabilirsiniz. Bu yazılımların kurulumu ve anlatılan sistem ile kullanımına vakit buldukça yer vermeye ve belgeyi güncellemeye çalışacağım.

Bu belgede bahsedilen yapının dahada iyileştirilmiş, dahada profesyonel olan yaklaşım şekli, Mysql yerine LDAP destekli kurulmasıdır. Bununla ilgili başka bir belge hazırlamayı düşünüyorum.

ÖN KOŞUL OLARAK GEREKLİ YAZILIMLAR :

Biraz sonraki yazılımları kurmadan sistemimizde php ve mysql ve apache'nin kurulu olduğunu apache'ye php desteğinin verilmiş olduğunu, aynı zamanda php'ye de mysql desteğinin verilmiş olduğunu farz ediyoruz. Şayet sisteminizde php,mysql ve apache kurulu değilse,

  • apt-get install apache veya apt-get install apache2 (apache 2.x versiyonunu kurar)
  • apt-get install mysql-server mysql-common
  • apt-get install php4 php4-mysql php4-pear php4-cgi

Eksik kalan paketler daha sonra diğer paketler kurulurken bağımlılık gereği otomatik kurulacaktır.

QMAIL + SMTP-AUTH :

Qmail, lisans sebeplerinden dolayı, sadece kaynak kodu olarak dağıtılır (Official olarak dağıtılan binary deb dosyası yoktur). Bundan dolayı, paket deposunun non-free kısmında qmail-src ismi ile yer alır.

Qmail'i kurabilmek için kullanılan debian yöntemi, qmail-src paketini çekip, kendi sistemimizde derleyip binary dosyasını oluşturmak ve onunla kurulum yapmak şeklindedir.

Qmail uzun süredir güncellenmediği ve artık eski kaldığı için, mevcut şekliyle modern sistemlerin ihtiyaç duyduğu bir çok desteği sağlayamamakta. Bu destekleri sağlama işlemleri yamalarla yapılmaktadır. Bu da qmaildeki en problemli işlerden birisi olarak karşımıza çıkar,özellikle debian'ın qmail-src yapısına zarar vermeden uygulanabilecek yapayı bulup, uygulamaktır. Smtp-Auth desteği içinde yama uygulama durumunda olduğumuz için, sarge'de derlemek üzer indirdiğimiz qmail-src paketine de debian'a uygun olan sistematiği veya dosya yapılarını bozmadan uygulanabilecek smpt-auth yamasına ihtiyacımız var. Daha önce woody'de derlemek üzere indirdiğim qmail-src paketine http://members.elysium.pl/brush/qmail-smtpd-auth adresindeki smtp-auth yamasını sorunsuzca uygulayabiliyor ve binary .deb dosyasını oluşturabiliyorduk.

Sarge üzerinde derlemek üzere sid deposundan (yazının hazırlandığı anda sarge depolarında qmail-src bulunmadığı için) indirdiğim qmail-src paketinede yukarıdaki adresde belirttiğim smpt-auth yamasını uygulamada bir takım sorunlar olduğunu farkettim. Bu durumu daha önce woody'de kullandığım smpt-auth yaması uygulanmış kaynak dosyaları ile şu an sid deposunda yer alan qmail-src 'nin gerekli dosyalarını diff komutu ile karşılaştırarak, bu farkları dosyalara kaydedip, daha sonra sid deposundan indirdiğim kaynak dosyalarına bu yamaları (farkları) uyguladım. Oluşan yeni dosyaları, dpkg-buildpackage komutu ile derleyip binary dosyasının oluşmasını sağladım. Kurulum aşamasında 3 farklı yöntem sunup, dilediğiniz şekilde kurulumu yapmanıza olanak vereceğiz.

Bu kadar izahatdan sonra şimdi kuruluma geçelim. Öncelikle gerekli olan paketleri kurmak ile işe başlayalım.

Ucspi-tcp-src Paketinin Kurulumu :

ucspi-tcp-src paketinin kurulabilmesi için /etc/apt/sources.list dosyanızda,

deb http://ftp.tr.debian.org/debian sarge main contrib non-free

benzeri satırın olması gerekir (bu paketinde deponun non-free kısmında yer aldığına dikkat ediniz). Bu satır yoksa ekleyip apt-get update ile indeximizi güncelleyelim. Ardından;

  • apt-get install ucspi-tcp-src
  • build-ucspi-tcp

Do you want to install ucspi-tcp_0.88-9_i386.deb now? [Yn]

sorusuna Enter ile onay verip, build-ucspi-tcp ile oluşturduğumuz paketin kurulumunu yapabiliriz..

Yukarıdaki şekilde ucspi-tcp-src paketini kurmuşşsak, şimdi Qmail paketinin kurulum yöntemlerine geçelim;

Qmail Kurulumu İçin 1. Yöntem :

Yukarıdaki yöntem ile oluşturduğum Smtp-Auth (plain, login ve cram-md5) destekli qmail_1.03-36_i386.deb paketini indirip

  • dpkg -i qmail_1.03-36_i386.deb

bu komutdan sonra bir takım çakışma (conflict) hataları alırsanız hemen aşağı kısımdaki Olası Qmail Kurulum Hatası kısmına göz atınız.

Qmail Kurulumu İçin 2. Yöntem :

Sizde woody için kullandığım, smpt-auth yamasına sahip qmail dosyaları ile sid deposundaki qmail'in gerekli dosyalarındaki farkları gözetmek yöntemi ile oluşturduğum diff dosyalarını kendiniz yama olarak uygulayıp, makinenizde derleyip, deb paketini oluşturabilirsiniz. Bu yöntemi tercih edenler için yukarıdaki paketi oluşturmak için yapmanız gerekenleri izah etmeye çalışalım.

Öncelikle /etc/apt/sources.list dosyamıza qmail-src paketinin bulunduğu depoyu ekliyoruz.

deb http://ftp.tr.debian.org/debian sarge main contrib non-free

"apt-get source qmail-src" için gerekli olacak olan, kaynak kodunun bulunduğu depoyuda ekleyelim;

deb-src http://ftp.tr.debian.org/debian sarge main contrib non-free

sources.list dosyamıza ekleyip, "apt-get update" ile index'imizi yeniden güncelliyoruz. Daha sonra,

  • apt-get install qmail-src

ile kurulumu yapabilirsiniz.

NOT : Bu yöntemde herhangi bir sebepden qmail-src'yi bulamiyorsa öncelikle /etc/apt/sources.list dosyanızı kontrol ediniz ("deb http://ftp.tr.debian.org/debian sarge main contrib non-free" şeklinde kaydın olması gerekli). Halen sonuç alamazsanız aşağıdaki şekilde wget ile indirip "dpkg -i" ile kurulumu yapabilirsiniz. Daha sonra olası bağımlılık problemlerini çözmek içinde "apt-get -f install" komutunu uygulayıp "build-qmail" ile işlemlerinize devam ediniz.

"apt-get install qmail-src" ile herhangi bir problem olmaksızın kurulumu yapmış olmanız durumunda işlemlerinize "build-qmail" kısmı ile devam ediniz.

  • wget http://ftp.tr.debian.org/debian/pool/non-free/q/qmail/qmail-src_1.03-36_all.deb
  • dpkg -i qmail-src_1.03-36_all.deb
Selecting previously deselected package qmail-src.
(Reading database ... 46782 files and directories currently installed.)
Unpacking qmail-src (from qmail-src_1.03-36_all.deb) ...
dpkg: dependency problems prevent configuration of qmail-src:
qmail-src depends on fakeroot | sudo; however:
Package fakeroot is not installed.
Package sudo is not installed.
dpkg: error processing qmail-src (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
qmail-src

şeklinde eksik dosyaların olduğunu belirten mesajı alırsanız, hemen sihirli komutu devreye sokun.

  • apt-get -f install
  • build-qmail

Bu kısımda bize sorulan sorulara, [TAMAM] deyip devam ediyoruz. Yalnız dikkatinizi çekmek istediğim bir nokta var, Şayet daha önce qmail-src kurmaya çalışmışsanız, /etc/passwd ve /etc/shadow dosyanızı kontrol edip qmail'e ait bir kullanıcı adı/id veya grup adı/id'si bulunmadığına emin olun. Aşağıdaki grup ve kullanıcı adları zaten sisteminizde varsa, bunları silip daha sonra işleme devam edin.

Qmail için gerekli aşağıdaki kullanıcıların ve grupların oluşmasını sağlamış oluyoruz.

alias:x:64010:65534:qmail alias,,,:/var/qmail/alias:/bin/false
qmaild:x:64011:65534:qmail daemon,,,:/var/qmail:/bin/false
qmails:x:64012:64010:qmail send,,,:/var/qmail:/bin/false
qmailr:x:64013:64010:qmail remote,,,:/var/qmail:/bin/false
qmailq:x:64014:64010:qmail queue,,,:/var/qmail:/bin/false
qmaill:x:64015:65534:qmail log,,,:/var/qmail:/bin/false
qmailp:x:64016:65534:qmail pw,,,:/var/qmail:/bin/false
  • apt-get source qmail-src (sources.list'inizde yukarıdaki deb-src deposunun olmasına dikkat ediniz)
  • wget http://www.serdaraytekin.com/files/debian/sarge/qmail/qmail-src-deb-patches.tar.gz
  • tar -zxvf qmail-src-deb-patches.tar.gz
  • cd qmail-1.03
  • cp ../qmail-src-deb-patches/base64* . (sondaki noktaya dikkat)
  • patch qmail-smtpd.c < ../qmail-src-deb-patches/qmail-smtpd-patch.c
  • patch Makefile < ../qmail-src-deb-patches/Makefile-patch
  • patch TARGETS < ../qmail-src-deb-patches/TARGETS-patch
  • dpkg-buildpackage

Hata vermeden işlemleri tamamlamışsa, bir üst dizinde (cd ..) qmail_1.03-36_i386.deb isminde .deb dosyası oluşmus olmalı. Artık kurulum çok kolay :)

  • apt-get install procmail
  • dpkg -i qmail_1.03-36_i386.deb

bu komutdan sonra bir takım çakışma (conflict) hataları alırsanız hemen aşağı kısımdaki Olası Qmail Kurulum Hatası kısmına göz atınız.

NOT : Sizde qmail'e farklı yamalar uygulamak istiyorsanız, yukarıdaki sistematiği takip edip, "apt-get source qmail-src" ile kaynak kodlarını sisteme indirdikten sonra gerekli gördüğünüz yamaları uygulayıp dpkg-buildpackage ile derleyebilirsiniz. Ama yukarıda ifade etmeye çalıştığım üzere, uygun yamayı bulup tuttutmak biraz uğraştırıcı olabilmekte.

Qmail Kurulumu İçin 3. Yöntem :

http://www.litux.org/debian/ adresinde bulduğum http://www.serdaraytekin.com/files/debian/sarge/qmail/qmail_1.03-31+1_i386.deb adresinden veya http://www.litux.org/debian/mirror/qmail_1.03-31+1_i386.deb adresinden indirebileceğiniz, smtp-auth (login, plain) ve qfilter yamasına sahip qmail_1.03-31+1_i386.deb paketini indirip kurabilirsiniz. Bunun için izlenilmesi gereken yöntem;

şeklinde kurulumu yapabilirsiniz.

Bunlardan başka Yöntemlerde var elbette, mesela qmail'in orjinal .tar.gz paketinden kurulum yapmak gibi. Ama bu belgede o tarz bir kurulumdan bahsedilmeyecektir.

Olası Qmail Kurulum Hatası :

qmail conflicts with mail-transport-agent
exim provides mail-transport-agent and is installed.

benzeri bir hata alırsanız, sisteminizde daha önce kurulu olan exim paketi ile qmail'in çakıştığının ifadesidir. Bu durumda sisteminizde daha önce kurulu olan MTA'yı kaldırmanız gerekmektedir.

  • dpkg -r --force-depends exim4 (exim4 paketi ile çakışma hatası vermişse) veya
  • dpkg -r --force-depends exim4-daemon-light (exim4-daemon-light paketi ile çakışma vermişse)

Çakışmaya sebep olan paketi/paketleri kaldırdıktan sonra dpkg -i ile kurmaya çalıştığınız paketi yeniden kurmayı deneyiniz.

Kurulumu tamamladıktan sonra,

  • echo "localhost" > /etc/qmail/me
  • nano /etc/tcp.smtp
127.:allow,RELAYCLIENT=""

ifadesini tcp.smtp dosyası içerisine yazıp, kaydedip çıkalım ve,

  • tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

komutu ile bu ifadenin aktif edilmesini sağlayalım. Daha sonra,

  • /etc/init.d/qmail restart

ile de qmaili restart ettikten sonra, ufak bir kontrol yapabiliriz.

  • telnet localhost 25

komutunu verdikten sonra "220 localhost ESMTP" şeklinde bir karşılama ekranı geliyorsa, qmail başlatılmış demektir. Smtp-Auth desteğini kontrol etmek içinde, bu ekrandan çıkmadan "EHLO" komutunu yazıp çıktıya bakıyoruz. Sonu aşağıdakine benzer şekilde olmalı

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost ESMTP
EHLO
250-localhost
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-STARTTLS
250-PIPELINING
250 8BITMIME

VPOPMAIL KURULUMU :

Öncelikle Vpopmail paketi tarafından ihtiyaç duyulan libmysqlclient10-dev paketini kuralım.

  • apt-get install libmysqlclient10-dev
  • apt-get install zlib1g zlib1g-dev
  • cd /usr/local/src/
  • wget -c http://www.inter7.com/vpopmail/vpopmail-5.4.0.tar.gz

(http://www.inter7.com/index.php?page=vpopmail adresinden yazılımın son sürümünü kontrol ediniz)

  • tar -zxvf vpopmail-5.4.0.tar.gz
  • useradd vpopmail
  • addgroup vchkpw
  • cd vpopmail-5.4.0
  • ./configure --enable-auth-module=mysql --enable-sqllibdir=/usr/lib --enable-libdir=/usr/lib --enable-clear-passwd=n --enable-md5-passwords=y

configure işlemindeki detaylar için;

  • ./configure --help

ile bilgi alabiliriz. E-posta aliaslarının mysql üzerinde tutulabilmesi için, --enable-valias parametresini ekleyebiliriz veya domain bazında yapabileceğimiz sınırlamaların/ayarların .qmailadmin-limits dosyasından yapılabilmesi yerine mysql üzerinden yapılabilmesi için --enable-mysql-limits ifadesini ekleyebiliriz gibi.

  • make
  • make install-strip

Şimdi mysql üzerinde veritabanımızı oluşturalım.

mysql> create database vpopmail;

mysql>grant all on vpopmail.* to vpopmail_user@localhost identified by "vpopmail_password";

Veritabanımızı oluşturduk. Veritabanı ismimiz vpopmail, bu veritabanına erişim yetkisi olan kullanıcı adı, vpopmail_user ve bu kullanıcıya ait şifreyi de vpopmail_password olarak vermiş olduk. Burada kullandığımız kullanıcı adı ve şifresini mutlaka farklı ve tahmin edilmesi güç değerlerler olarak tanımlayınız. Biz anlatımın kolaylaştırılması amacı, basit bir kullanıcı adı ve şifre tanımı yaptık. Buradaki değerlere bağlı kalmayınız.

Şimdi oluşturduğumuz veritabanı ismi, kullanıcı adı ve şifresine göre vpopmail.mysql dosyasını düzenleyelim.

  • nano ~vpopmail/etc/vpopmail.mysql

Bu dosya içerisinde aşağıdakine benzer şekilde tanımlanmış olan satırı uygun şekilde düzenleyip aktif ediyoruz.

localhost|0|vpopmail_user|vpopmail_password|vpopmail

Öncelikle "/var/qmail/control/locals" dosyasını oluşturalım.

  • touch /var/qmail/control/locals

Evet, şimdi sistemimize yeni bir domain ve ardından da kullanıcı ekleyebiliriz.

  • ~vpopmail/bin/vadddomain domainismi.com postmaster_şifresi

komutu ile domain ismi "domainismi.com" olan ve postmaster şifresi "postmaster_şifresi" olarak tanımlanmış domaini eklemeye çalışıyoruz. Şayet ekleme işleminde aşağıdakine benzer şekilde bir hata alırsanız "/var/qmail/control/locals" dosyasının varlığını kontrol edip, tekrar domaini eklemeye çalışınız.

Failure while attempting to remove_line() the locals file
Error. Failed to add domain to assign file
Error: Could not update file

NOT : Domain eklerken herhangi bir sebepler hata verir ve eklenmedi olarak görünürse, tekrar vadddomain komutu ile aynı domaini eklemeye çalıştığınız zaman ise bu domain zaten var (domain already exists) şeklinde bir mesaj verirse, vdeldomain komutu ile domaini silmeye çalışınız. Domaini silmeye çalışırkende bu domain yok şeklinde bir hata mesajı alırsanız, kısır döngüye girmiş demektir. Bu durumda muhtemelen ~vpopmail/domains/ dizin altında eklemeye çalıştığınız domain ismi ile aynı tanımı taışması gereken dizini aramakta, fakat bulamayınca döngüde kalmaktadır. Bu durumda öncelikle, ~vpopmail/domains/ dizini içerisinde eklemeye/silmeye çalıştığınız domain ismi ile oluşturulmuş bir dizin olup olmadığınız kontrol ediniz. Bu isimde bir dizin yoksa mkdir ~vpopmail/domains/domainismi.com şeklinde sisteme eklemeye çalıştığınız fakat herhangi bir sebeple kısır döngüye giren domain'in tanımı ile aynı şekilde olacak olan dizini oluşturup, daha sonra "vdeldomain domainismi.com" komutu ile söz konusu domaini silebilirsiniz.

Domain ekleme işlemini başarılı şekilde tamamlanmışşsa, yeri gelmişken bu domaine nasıl kullanıcı ekleyebileceğimizi de görelim,

  • ~vpopmail/bin/vadduser kullanici_adı@domainismi.com kullanıcı_şifresi

Yukarıdaki komut ile domainismi.com domainine "kullanici_adi" ile tanımlanan kullanıcıyı eklemiş oluyoruz. Kullanıcının şifreside, "kullanıcı_şifresi" ile tanımlanan şifre olacaktır. Neticesini veritabanınız üzerinden inceleyebilirsiniz.

Vpopmail'de Sınırlamalar (Limitler) ve Ekstra Ayarlar:

Daha önceden vpopmail ile uygulamak istediğimiz kota vb. sınırlamalar vpopmailin kurulumu esnasında "configure" ye parametre ilavesi ile mümkün oluyordu. Ancak yeni versiyonlarda bu işlemleri /home/vpopmail/etc/vlimits.default (daha doğrusu ~vpopmail/etc/vlimits.conf dosyası) dosyası üzerinden yapabiliyoruz. Bu çok daha iyi olmuş.

Mesela kullanıcılara 10 Mb kota sınırlaması yapmak için,

default_quota 10485760 satırını aktif etmemiz yeterli, yada kullanıcılar pop3 hizmetinden faydalanamasın istiyorsanız disable_pop satırının aktif olmasını sağlayarak yapabiliriz.

Domain Bazında Sınırlamalar Yapabilmek :

vlimits.conf dosyasında yapacağınız sınırlamalar tüm domainlere etki edecektir. Siz şayet belli domainler için özel ayarlar/sınırlamalar yapmak istiyorsanız ve yukarıda vpopmail'in kurulumu esnasında, configure işlemindeki parametrelere ilave olarak --enable-mysql-limits ifadesinide eklemişseniz, domain'in dizininde ".qmailadmin-limits" isimli bir dosya oluşturup, vlimits.conf dosyasındaki kurallara benzer şekilde özel tanımlamalar yapabilirsiniz. ".qmailadmin-limits" dosyasının erişim izinlerininde uygun şekilde ayarlanmasına dikkat etmeyi unutmayınız. Vpopmail'in kurulumu esnasında --enable-mysql-limits şeklindeki parametreyide kullanmışsanız domain bazındaki ayarlamalar/sınırlamalar için mysql'deki tablolara göz atınız.

Varsayılan Domain Tanımlama :

Vpopmailde artık çoğu ayar ~vpopmail/etc/ altından yapılabilecek şekildedir. Varsayılan domain için de "~vpopmail/etc/defaultdomain" dosyasında varsayılan olarak ayarlamak istediğimiz domaini belirtebiliriz. Burada belirttiğimiz domain haricinde sistemde yer alan diğer tüm domainlerde login işlemleri sırasında kullanıcı adı olarak hep e-posta adresimizi kullanacağımızı unutmayalım.

QMAIL-POP3 DAEMON'un AKTİF EDİLMESİ :

Sistemimizde e-postalarımız "Maildir" yapısında tutulacaktır. Bu yapıya erişebilme yeteneğine sahip pop3 daemonlardan birisi olan ve qmail içerisinde gelen qmail pop3 daemon'u aktif edeceğiz. Bunun için ilk iş olarak -varsa- sistemimizde yer alan eski pop3 daemonumuzu kaldıralım. Her sistem için % 100 sonuç vermeyebilirsede, "dpkg -l|grep POP3" şeklindeki bir komutla -varsa- kurulu olan pop3 daemonunuzu anlayabilirsiniz.

Daha sonra orjinal qmail scriptimizi kaybetmemek, gerektiği zaman en kötü ihtimalle orjinal duruma geri dönebilmek için qmail scriptimizi aşağıdaki komut ile qmail.org olarak yedekleyelim.

  • cp /etc/init.d/qmail /etc/init.d/qmail.org

Şimdi /etc/init.d/qmail betiğinde gerekli değişiklikleri yapıp qmail pop3 daemonu aktif edeceğiz, aynı zamanda vpopmail'in düzgün şekilde çalışabilmesi için gerekli olan ayarları tamamlamış olacağız. Aşağıda /etc/init.d/qmail içerisinde yaptığımız değişikliği anlayabilmek amacı ile değişiklik yapılmış (olması gerektiği şekilde ayarlanmış) bir qmail scriptinin gerekli olduğu kadarını aşağıda görebilirsiniz. Koyu işaretlenmiş yerlere dikkat ediniz.

"/etc/init.d/qmail" betiğinin gerekli değişiklikten sonraki durumu (değişikliğin yapıldığı yerler) :

start)
echo -n "Starting mail-transfer agent: qmail"
sh -c "start-stop-daemon --start --quiet --user vpopmail \
--exec /usr/sbin/qmail-send \
--startas /usr/sbin/qmail-start -- \"$alias_empty\" $logger &"
# prevent denial-of-service attacks, with ulimit
ulimit -v 8192
sh -c "start-stop-daemon --start --quiet --user qmaild \
--exec /usr/bin/tcpserver -- -R -H -l 0 \
-u `id -u vpopmail` -g `id -g vpopmail` -x /etc/tcp.smtp.cdb 0 smtp \
/usr/sbin/qmail-smtpd `hostname`.`dnsdomainname` \
/home/vpopmail/bin/vchkpw /bin/true 2>&1 | $logger -t qmail -p mail.notice &"

sleep 1
# Uncomment the following lines to automatically start the pop3 server
sh -c "start-stop-daemon --start --quiet --user root \
--exec /usr/bin/tcpserver -- -R -H -u `id -u vpopmail` -g `id -g vpopmail` \
0 pop-3 /usr/sbin/qmail-popup `hostname`.`dnsdomainname` \
/home/vpopmail/bin/vchkpw /usr/sbin/qmail-pop3d Maildir &"

echo "."
;;
stop)

Gerekli değişiklikleri yaptıkdan sonra,

"/etc/init.d/qmail restart" komutu ile qmaili yeniden başlatıp test edelim. 110 nolu porta telnet çekince aşağıdakine benzer bir sonuç almamız gerekir. Cevap alamıyorsak qmailimiz başarılı şekilde başlatılamamış olabilir. Bu durumda qmail scripti içerisindeki değişiklikleri gözden geçirip, yeniden aynı işlemleri deneyiniz.

NOT : Dilerseniz benim hem woody hemde sarge sistemde sorunsuzca kullandığım qmail betiğini kullanmayı deneyebilirsiniz. Yada bu dosyadaki değişikleri orjinal qmail betiği ile karşılaştırıp kendi sisteminize göre özelleştirebilirsiniz.

telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK <28570.1098382924@domainismi.com>

COURIER-AUTHLIB ve COURIER-IMAP KURULUMU :

Courier-imap paketide Maildir desteğine sahip, imap sunucusudur. Bu paket e-postalarımızı imap üzerinden kontrol etmek istediğimizde aynı zamanda ileriki bölümde kurulumunu anlatacağımız Web-Mail olan Squirrelmail'in e-postalara imap üzerinden erişebilmesi için gereklidir.

Courier-imap'ın kurulumunu tar.gz üzerinden yapacağız.

Öncelikle şayet sisteminizde yüklü değilse;

  • apt-get install openssl libssl-dev libltdl3

ile openssl, libssl ve libltdl3 kütüphanelerini kurunuz.

Courier-Authlib Kurulumu :

  • cd /usr/local/src/
  • wget -c http://ovh.dl.sourceforge.net/sourceforge/courier/courier-authlib-0.53.tar.bz2

http://www.courier-mta.org/?download.php~authlib adresinden en son sürümünü kontrol ediniz.

  • apt-get install libgdbm3 libgdbm-dev
  • apt-get install bzip2
  • tar -jxvf courier-authlib-0.53.tar.bz2
  • cd courier-authlib-0.53
  • ./configure
  • make
  • make install
  • make install-configure

Courier-Imap Kurulumu :

  • cd /usr/local/src/
  • wget http://umn.dl.sourceforge.net/sourceforge/courier/courier-imap-4.0.1.tar.bz2

(http://www.courier-mta.org/download.php#imap adresinden en son sürümü kontrol edip indiriniz.)

  • tar -jxvf courier-imap-4.0.1.tar.bz2 (daha öncesinde yoksa bzip2 paketini kurunuz)
  • cd courier-imap-4.0.1
  • ./configure --disable-root-check --without-authdaemon --with-authvchkpw --enable-workarounds-for-imap-client-bugs
  • make
  • make install

İşlemi ile kurulumu tamamlamış olduk. Şimdi bu işlemler sonucunda olması gereken dizin/dosya yapımızı hızlı bir şekilde kontrol edelim.

ls -al /usr/lib/courier-imap/libexec/
toplam 440
drwxr-xr-x 2 root root 4096 2005-01-27 03:19 .
drwxr-xr-x 9 root root 4096 2005-01-27 00:39 ..
-rwxr-xr-x 1 root root 379130 2005-01-27 03:19 couriertcpd
-rwxr-xr-x 1 root root 1486 2005-01-27 03:19 imapd.rc
-rwxr-xr-x 1 root root 1469 2005-01-27 03:19 imapd-ssl.rc
-rwxr-xr-x 1 root root 37920 2005-01-27 03:19 makedatprog
-rwxr-xr-x 1 root root 1422 2005-01-27 03:19 pop3d.rc
-rwxr-xr-x 1 root root 1438 2005-01-27 03:19 pop3d-ssl.rc

Şimdi sıra, courier-imap için konfigürasyonun ayarlanmasına geldi,

  • cd /usr/lib/courier-imap/etc/
  • cp imapd.dist imapd
  • cp imapd-ssl.dist imapd-ssl

imapd dosyamızı açıp,

IMAPDSTART=NO olarak yer alan satırı, aşağıdaki şekilde YES olarak değiştirelim.

IMAPDSTART=YES

aynı şekilde nano imapd-ssl ile imapd-ssl dosyamızı açıp IMAPDSSLSTART=NO şeklinde olan satırın

IMAPDSSLSTART=YES

şeklinde olmasını sağlayalım.

/usr/local/etc/authlib/authdaemonrc dosyasında

authmodulelist="authuserdb authpwd authshadow authmysql authcustom authvchkpw"

şeklinde olan satırlardan "authmysql" ifadesini çıkarınız. Yani bu satırı şu hale getiriniz.

authmodulelist="authuserdb authpwd authshadow authcustom authvchkpw"
  • /usr/lib/courier-imap/libexec/imapd.rc start
  • /usr/lib/courier-imap/libexec/imapd-ssl.rc start (imapd-ssl'e ihtiyacınız yoksa başlatmayabilirsiniz)
  • /usr/local/libexec/courier-authlib/authdaemond &

ile imapd, imapd-ssl'in ve authdaemond'un başlatılmasını sağlayalım. Bu betiklerin açılışta da otomatik olarak başlatılabilmesi için

#!/bin/bash

/usr/lib/courier-imap/libexec/imapd.rc start

/usr/lib/courier-imap/libexec/imapd-ssl.rc start

/usr/local/libexec/courier-authlib/authdaemond &

şeklinde "imapd" isimli bir dosya oluşturup bu dosyayı /etc/init.d/ altına bırakalım. Daha sonrasında "apt-get install rcconf" paketini kurup, bu betiğin açılışta başlatılmasını sağlayacak şekilde ayarlayalım.

* imapd-ssl'e ihtiyacınız yoksa bunu başlatmanıza gerek yok.

Şimdi kurduğumuz bu courier-imapd paketini test edelim, bunun için 143 nolu porta telnet çekip, daha önce yukarıda oluşturduğumuz domain ve kullanıcı adı ile deneme yapabiliriz.

NOT : Kullanıcı adı olarak e-posta adresimizin tamamının kullanıldığını unutmayalım. Kullanıcı adımız kullanıcı_adı@domain_ismi.com şeklinde olacaktır.

# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE] Courier-IMAP ready. Copyright 1998-2003 Double Precision, Inc. See COPYING for distribution information.
a login kullanıcı_adı@domain_ismi.com kullanıcı_şifresi
a OK LOGIN Ok.

şeklinde bir sonuç alıyorsak, problemsiz olarak kurulumu tamamladığımız anlamına gelir. Şayet 143 nolu portdan cevap alamıyorsanız courier-imapd kurulumunuzu ve ayarlarınız gözden geçiriniz. Portdan cevap alıyor fakat, "a login kullanıcı_adı@domain_ismi.com kullanıcı_şifresi" satırı ile giriş yaptığınızda "a OK LOGIN Ok." sonucunu alamıyorsanız, vpopmail kurulumunda vadddomain ve vadduser ile girdiğiniz domain, kullanıcı adı ve şifreyi gözden geçiriniz. Ayrıca doğrulama işlemi yaparken "a" harfininde satıra dahil olduğuna dikkat ediniz.

TÜRKÇE SQUIRRELMAIL KURULUMU :

Squirrelmail e-postalarımıza web üzerinden ulaşabilmemizi sağlayar. Kurulum için

  • apt-get install squirrelmail

daha sonra apacheye, gerekli Alias tanımını yapmamızı sağlayan dosyayı include ile apache ayarlarına dahil edelim.

  • nano /etc/apache/httpd.conf ile apachenin konfigürasyon dosyasını açıp
Include /etc/squirrelmail/apache.conf

satırını ekleyelim daha sonra "/etc/init.d/apache restart" ile apacheyi yeniden başlayıp bu alias tanımının etkinleşmesini sağlayalım.

Apache 1.3.x kullanıcısı iseniz ve şayet sisteminizde /etc/apache/conf.d/ şeklinde bir dizin varsa, yukarıdaki apache.conf isimli dosyayı /etc/apache/conf.d/ altına kopyalamakla da aynı include işlemini yapabilirsiniz. Kullandığınız Apache ayarlarında (httpd.conf) /etc/apache/conf.d dizini zaten tümden ayarlara dahil ediliyor olabilir.

Apache 2.x kullanıcılarıda benzer şekilde yukarıdaki /etc/squirrelmail/apache.conf dosyasını /etc/apache2/apache.conf içerisinden include ile Apache ayarlarına dahil edebilir veya /etc/squirrelmail/apache.conf dosyasını /etc/apache2/mods-enabled/ dizini içerisine kopyalayarak otomatik olarak Apache ayarlarına dahil edilmesini sağlayabilirler.

Metod olarak bu yöntemler seçilmiş olsa bile Apache 1.3.x "/etc/init.d/apache restart" veya Apache 2.x için "/etc/init.d/apache2 restart" şeklinde Apache'nin yeni ayarlar ile çalışması sağlanması unutulmamalı.

Bu şekilde, Squirrelmail'i sistemimize kurduk ve http://www.domainismi.com/squirrelmail/ şeklinde ulaşalabilmeyi sağladık. Sıra squirrelmail'in konfigurasyonuna (özelleştirilmesine) geldi.

  • /usr/sbin/squirrelmail-configure

Languages -> Default Language : tr_TR

Languages -> Default Charset : iso-8859-9

Server Settings -> A. Update IMAP Settings : Server software : courier

Server Settings -> A. Update IMAP Settings : IMAP Port : 143

olarak ayarlanmış olmalı. (tr_TR için "dpkg-reconfigure locales" komutu ile tr_TR ninde sistem yerelleri arasına dahil edilmiş olduğuna emin olunuz.)

Squirrelmail için Dil Çeviri Dosyaları :

http://sourceforge.net/project/showfiles.php?group_id=311&package_id=110388 adresinden çevirisi yapılan tüm diller için gerekli dosyaları bulabilirsiniz. Dilerseniz tüm çevirilerin yer aldığı all_locales paketini indirebilir veya sadece tr_TR paketini indirip Türkçe desteini aktif edebilirsiniz. Biz örneğimizde tüm çeviri dosyalarının yer aldığı paketi indirelim. Bunun için;

  • cd /usr/share/squirrelmail/
  • wget -c http://unc.dl.sourceforge.net/sourceforge/squirrelmail/all_locales-1.4.4-20050122.tar.bz2
  • tar -xjvf all_locales-1.4.4-20050122.tar.bz2

Sonuçta /usr/share/squirrelmail/locale/ içerisinde Türkçe çevirilerinin yer aldığı tr_TR dizini ve diğer diller için de gerekli olan dizinler yer alacaktır.

SPAMASSASSIN KURULUMU :

Spamassassin, spam olarak nitelendirdiğimiz e-postaların tespit edilmesini, işaretlenmesini, ayıklanmasını sağlar. Kurulum için

  • apt-get install spamassassin

komutunu vermemiz yeterlidir. Kurulum sonrası ayarlara gelince, http://www.yrex.com/spam/spamconfig.php adresinde konfigürasyon dosyasının oluşturulmasına yardımcı bir yazılım mevcut (belgenin hazırlandığı tarihte bu adresten 3.0 versiyonunu destekleyen bir dosya oluşturamıyordu, oluşturulan konfigürasyon dosyasının sizin kullandığınız spamassassin versiyonuna uygun olup olmadığına dikkat ediniz.) . Buradan istediğimiz özellikleri ve sınırlamaları belirtip kendi sistemimizde kullanabileceğimiz /etc/spamassassin/local.cf isimli konfigürasyon dosyamızı oluşturabiliriz.

NOT : Spamassassin 3.0 ile birlikte konfigürasyon dosyalarında da önemli bir kaç değişiklik oldu. Aşağıdaki local.cf dosyası 3.0 ve üzeri için hazırlanmıştır. Ancak bu dosya isteğinize göre daha da geliştirip şekillendirilebilir. Dosyada kullanılabilecek tanımlamalar ile ilgili detaylı bilgiye http://spamassassin.apache.org/full/3.0.x/dist/doc/Mail_SpamAssassin_Conf.html adresinden ualaşabilirsiniz.

Örnek /etc/spamassassin/local.cf :

#Bu dosya 3.x versiyonu için düzenlenmiştir.
#Kullandığınız Spamassassin versiyonuna ve sisteminizin durumuna göre dosyada yapılması gereken değişiklikler olabilir.

# How many hits before a message is considered spam.
required_hits 5.0

# Text to prepend to subject if rewrite_subject is used
rewrite_header Subject ****SPAM(_SCORE_)****

# Encapsulate spam in an attachment
report_safe 1

# Enable the Bayes system
use_bayes 1

# Enable Bayes auto-learning
bayes_auto_learn 1

# Enable or disable network checks
skip_rbl_checks 0
use_razor2 1
use_pyzor 1

# Allows users to create rules
allow_user_rules 1

# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_languages all

# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales all

Şimdi ise sıra /etc/default/spamassassin dosyasının ayarlanmasına geldi,

/etc/default/spamassassin dosyasında

ENABLED=0 olan satırı

ENABLED=1

olarak değiştirelim. OPTIONS satırının da;

OPTIONS="--create-prefs --max-children 5 --helper-home-dir"

şeklinde olmasına dikkat ediniz.

Ayarların etkin olması ve spamassassin'in başlatılması için;

  • /etc/init.d/spamassassin restart

komutunu vermemiz yeterlidir.

Spamassassin Ayarlarının Test Edilmesi :

  • spamassassin --lint

komutu ile /etc/spamassassin/local.cf dosyasında kabul görmeyen bir tanımlama yapıp yapmadığınızı görebilirsiniz. Dosyanın durumu ile ilgili daha detaylı bilgi edinmek için;

  • spamassassin --lint -D

şeklinde bir komut ile daha detaylı bilgilere ulaşabilirsiniz. "-D" parametresi "debug" edebilmenizi sağlar.

Spamassassin'in Çalışma Mantığı ve Ekstra Ayarları :

Spamassassin, gelen e-postaların durumlarına göre puanlar vererek, bizim /etc/spamassassin/local.cf dosyasında belirttiğimiz değeri (required_hits 5.0) aşan e-postaları SPAM olarak algılar. Şayet biz şu grubtan gelen e-postalar yada şu tarzdaki tüm e-postalar SPAM olarak işaretlensin demişsek, puan durumuna bakmadan doğrudan SPAM olarak algılar. Benzer şekilde, şu adresden gelen e-postaları kesinlikle spam olarak algılama dersek, bunların puanlarına bakmaksızın göz ardı eder.

Puanlama mantığı kabaca şu şekilde çalışır, subject (konu) kısmı boş olan e-postayı spam olma olasılığı sebebiyle, "spam puanı" veriyor olsun, yine söz konusu e-posta aynı anda birden fazla kişiye gönderilmişse yine spam olma olasılığının fazla olması ihtimaline binayen "spam puanı" veriyor olsun, e-posta içerisinde html tagları kullanılmışsa, çok cicili bicili bir e-posta ise yine bununda spam olma olasılığı yüksek diyerek onada bir puanlama yapar. Benzer şekilde yaptığı puanlamaları toplayarak bizim /etc/spamassassin/local.cf de belirttiğimiz değeri (mesela, required_hits 5.0) aşan e-postaları, bu adresden gelen e-postalar veya benzer tarzdaki e-postalar için belirttiğimiz aksi bir başka kural olmadığı sürece SPAM olarak işaretler.

Spam olarak işaretleme yaparken, istersek SPAM olarak algılanan e-postaların konu başlıklarının (subject) değiştirilmesini, var olan konu başlığının başına SPAM olduğunu belirten bir tag eklenmesini sağlayabiliriz. Bu işlemi gerçekleştiren kısım, rewrite_header' dır. Yukarıdaki dosyada spam olarak algılanan e-postaların konu başlıklarının başına "*****SPAM*****" ifadesinin de eklemesini söylemişiz bulunuyoruz. Bu kısımda gelen e-postanın kaç puan ile spam olarak işretlendiğini anlayabilmek için 3.x versiyonu ile birlikte "****SPAM(_SCORE_)****" şeklinde kullanabiliyoruz.

"report_safe 1" ifadesi ilede, kullanıcıya giden e-postalar, SPAM olarak algınırsa konu başlığı belirttiğimiz şekilde yeniden düzenlenecek ve mesajın orjinali mail'e Attach (ek) edilecek. Kullanıcı spam olan e-postayı direk göremeyecek, isterse söz konusu e-postanın ek dosyasından bakıp, bu e-postanın gerçekten spam olup olmadığına karar verebilir ve gereken işlemi yapabilir. Gelen e-posta spam olarak işaretlendiğinden direk sunucuda iken silinedebilir, fakat bu benim çok fazla tercih etmediğim bir yöntem. En azından sistemin düzgün işlediğine (ince ayarların yapıldığına) emin olmadan önce bu opsiyonu aktif etmek pek sağlıklı olmasa gerek, spam olmayan ama spam olarak algılanabilecek bir çok e-postayı kaybedebilirsiniz. Bunun yerine procmail veya maildrop kullanarak bu tarzdaki e-postaların akibetini ".Spam" klasörüne taşımak olarak belirtebiliriz. Detaylar hususunda Spamassassin için ekstra ayarlar kısmına göz atınız.

Belli Domainlerden Gelen E-postaların Ne Olursa Olsun Spam Olarak İşaretlenmemesi :

/etc/spamassassin/local.cf dosyamızda bunları whitelist_from olarak belirtiyoruz. Örnekler:

whitelist_from *@garanti.com.tr
whitelist_from *@bonus.com.tr
whitelist_from *@ykb.com

yukarıdaki örneklerde garanti.com.tr, bonus.com.tr ve ykb.com dan gelecek e-postaları ne olursa olsun spam olarak işaretleme yada spam olarak algılama diyoruz.

Spam Olarak İşaretlenen E-postaların İçerisine Bilgi Mesajı Koyma :

Yine, /etc/spamassassin/local.cf dosyamızı aşağıdaki şekilde düzenleyerek, kullanıcıya bilgi verebiliriz.

clear_report_template

report Bu Mail sunucusu üzerinde SPAM e-posları kontrol eden bir yazılım çalışmaktadır. Bu yazılıma göre size gönderilmiş olan bu e-postanın SPAM içerebileceği tespit edilmiş ve size gelen bu e-postanın orjinal hali (e-postanın SPAM OLMAMA ihtimaline karşı) -EK DOSYA- olarak bu e-posta ile size gönderilmiştir.
report
report --------------------------------------------
report Bilgi için :: info@domainismi.com
report --------------------------------------------

gibi bir yapı ile , "report" ifadesini kullanarak kullanıcıya bilgilendirme mesajı gönderebilmiş oluyoruz.

Otomatik Öğrenme Metodu :

Thomas Bayes tarafından bulunan, Bayesian metodu olarak bilinen bu yöntemi spamassassin içerisinde kullanarak otomatik öğrenmeyi sağlıyoruz. Kabaca ,o ana kadar gelen e-postaları değerlendirerek, gelen e-postalara göre daha sonraki e-postalarında spam olabilme olasılığını hesap eden bir metod. Metod gücünü, olasılık hesaplarından alıyor. Bu yöntemin aktif hale gelebilmesi için local.cf dosyamızda,

# Enable Bayes auto-learning
bayes_auto_learn 1

ayarlamasının yapılmış olmasına dikkat etmemiz gerekir.

E-postaların, Sisteme Kullanıcı Tarafından Öğretilmesi :

sa-learn komutu ile gelen bir e-postanın benzerinin bir daha gelmesi durumunda spam olarak algılanmasını veya o tarz maillerin spam olarak algılanmamasını sağlayabiliriz.

  • sa-learn --ham <epostaların_bulunduğu_dizin_ismi_veya_eposta_dosyası>

belirttiğimiz dizinde yer alan maillerin veya belirttiğimiz mail dosyasının, spam olarak algılanmamasını söyleyebiliriz. Benzer şekilde

  • sa-learn --spam <epostaların_bulunduğu_dizin_ismi_veya_eposta_dosyası>

belirttiğimiz dizinde yer alan e-postaların veya belirttiğimiz e-posta dosyasının, spam olarak algılanmasını söyleyebiliriz.

Böylece biz, bu e-postayı veya bu tarzdaki e-postaları tanı, bundan sonra belirttiğim şekilde davran demiş oluyoruz.

Her Kullanıcıya Farklı Kuralların Uygulanması :

Bu durumda kullanıcının e-posta dizininde oluşan (yoksa oluşturun) .spamassassin dizininin içerisine "user_prefs" (~vpopmail/domain/kullanıcı_dizini/.spamassassin/user_prefs) diye bir dosya oluşturup, /etc/spamassassin/local.cf dosyasında belirttiğimiz kural setine benzer kuralları user_prefs içerisinde yapıyoruz.

Spam Olarak Algılanan E-postaların Farklı Bir Klasöre Taşınması :

Burada devreye procmail veya maildrop giriyor (biz burada procmail üzerinde duracağız). Procmail kullanarak istediğiniz e-postaların istediğiniz işleme tabi tutulması işini rahatlıkla yapabilirsiniz. Bu konuda çok fazla detaya girmemekle beraber fikir vermesi açısından bir örnek .procmail dosyası vermek istiyorum. Konu ile ilgili detaylı anlatıma sahip bir çok döküman bulabilmek mümkün.

procmail'i sistemimize kurduktan sonra, kullanıcının ev dizininde procmail (~vpopmail/domain/kullanıcı_dizini/.procmail) isimli bir dosya oluşturup içerisine aşağıdakine benzer tanımlar yapabiliriz. Bu işlemin tüm kullanıcılara aynı anda etki etmesini istiyorsak /etc/procmailrc dosyasında işlem yapmamız gerekir.

Konu başlığında "*****SPAM*****" içeren e-postaları yok etmek için.

:0w
* ^Subject:.*\*\*\*\*SPAM\*\*\*\*\*
/dev/null

veya,

Konu başlığında "*****SPAM*****" içeren e-postaları aynı dizindeki .Spam/new/ dizinine aktarabiliriz. Bunun için de

:0w
* ^Subject:.*\*\*\*\*SPAM\*\*\*\*\*
./Spam/new

şeklinde bir kaç satır yeterli olacaktır.

RAZOR KURULUMU :

Razor, spamassassin ile birlikte kullanılan ve spamassassin'in etkinliğini artıran bir yazılımdır. Aynı şekilde benzer görevi yapan Pyzor'u da sisteminize kurabilirsiniz. Aynı anda hem razor hemde pyzor kullanmak mümkün. Razor kurulumu için

  • apt-get install razor

PYZOR KURULUMU :

Pyzor'da esasen Razor'dan türemiş Python dili ile yazılmış bir yazılımdır. Bu yazılımı kurarken sisteminize Python da kurulacaktır. Bu yazılımıda sisteminize kurmak isterseniz,

  • apt-get install pyzor

Pyzor 'un nasıl çalıştığını merak edenler http://www.archeus.plus.com/colin/pydoc/overview adresindeki kısa yazıya göz atabilirler. Bu yazı ile aynı zamanda Razor'un da çalışma mantığı anlaşılmış olacaktır.

DCC KURULUMU :

Benzer şekilde DCC'yi de kullanmak istersek;

  • apt-get install dcc-common dcc-client

RAZOR PYZOR ve DCC'nin SPAMASSASSIN İLE KULLANILMASI :

Her iki yazılımında aktif olabilmesi için /etc/spamassassin/local.cf içerisinde

use_razor2 1

use_pyzor 1

use_dcc 1

ifadelerinin yer almasına dikkat edelim. Her üç yazılımıda aynı anda kullanabiliriz.

MAILDROP KURULUMU :

Spam olarak işaretlenen e-postaların hangi klasöre taşınacağını veya ne gibi bir işleme tabi tutulacağını belirtebilmek için kullanmamız gereken yazılım Maildrop veya procmail olabilir. Mesela kullanıcının e-posta dizininde .SPAM diye bir klasör oluşturup, SPAM olarak algılanan emaillerin bu klasöre taşınmasını sağlayabiliriz. Ayrıca qmail-scanner maildrop'a bağımlılık duyduğu için bu paketi kurmak durumundayız. Kurulum için

  • apt-get install maildrop

CLAM ANTIVIRUS KURULUMU (CLAMAV):

Clam Antivirüs (Clamav) GPL lisansı ile dağıtılan bir yazılımdır.

  • apt-get install clamav clamav-daemon

ile Clamav Antivirüs yazılımını sistemimize kurabiliriz.

"Please choose the method for virus database updates" kısmından uygun olan güncelleme metodonu seçiniz. sürekli internet bağlantısı olanlar için "daemon" uygun bir seçim olacaktır.

Sonraki adımda; "new CA certificates will be trusted and installed" seçeneğine "Yes" diyerek devam edelim.

Bunlarla birlikte önerilen paketlerden bazılarınıda kuralım

  • apt-get install unrar-nonfree lha arj unzoo unzip daemon libcurl3-gssapi ca-certificates

İleriki adımlarda problem olacak slamav-daemon ile ilgili ayarları ayarları şimdiden yapalım. Qmailscanner için gerekli olacak olan qscand grubu ve kullanıcısını ekleyelim.

  • groupadd qscand
  • useradd -c "Qmail-Scanner Account" -g qscand -s /bin/false qscand

Daha sonra /etc/clamav/clamd.conf dosyasındaki;

"User clamav" ifadesini "User qscand" ile değiştirip clamd.conf dosyasını kaydediniz.

  • chown qscand -R /var/run/clamav/

ile /var/run/clamav/ dizinine qscand kullanıcısının erişimini sağlayalım.

  • /etc/init.d/clamav-daemon restart

ile clamav-daemon'u başlatabilirsiniz. İşlemleriniz yolunda ise /var/run/clamav/ içerisinde "clamd.ctl" dosyası oluşmuş olmalı.

QMAIL-SCANNER KURULUMU :

Qmail-Scanner, Qmail için tasarlanmış içerik tarayıcı sistemidir. Clamav ve Spamassasin ile birlikte çalışmasını sağlayacağız. Bu şekilde, sisteme gelen veya sistemden gönderilen maillerin kontrol edilmesini, virus içerip içermediğini veya spam olup olmadığını anlayabilmemizi sağlayacak. Bu yazılımın kurulumunuda yine .tar.gz 'den yapacağız. Kurulum için,

Öncelikle sisteminizde yoksa qmail-scanner'in ihtiyaç duyduğu perl-suid paketini kurun,

  • apt-get install perl-suid

daha sonra;

  • cd /usr/local/src/
  • wget http://unc.dl.sourceforge.net/sourceforge/qmail-scanner/qmail-scanner-1.25.tgz

(Son sürümünü, http://qmail-scanner.sourceforge.net adresinden kontrol ediniz.)

  • tar -zxvf qmail-scanner-1.25.tgz
  • cd qmail-scanner-1.25
  • apt-get install unzip unrar-nonfree lha (kurulu değilse)

Aşaıdaki qscand grubu ve kullanıcısını clam-daemon ayarlarında eklemiştik. Eklememişseniz ekleyiniz.

  • groupadd qscand
  • useradd -c "Qmail-Scanner Account" -g qscand -s /bin/false qscand

Konfigürasyon işlemine geçmeden önce, aşağıda koyu renkle işaretlenmiş yerlere dikkatinizi çekmek istiyorum. "--admin info --domain domainismi.com" ifadesi ile qmail-scanner.pl dosyasında admin'in mail adresinin info@domainismi.com olarak ayarlanmasını sağlıyoruz. "--notify sender,admin,recips" ifadesi ile de, sisteme gelen/giden maillerin kontrolü sırasında Virüslü bir maile rastlanırsa, bunun ile ilgili bilginin maili gönderene (sender), sistem yöneticisine (admin, az önce belirttiğimiz mail adresine olmak üzere) ve mail alıcılarına (recips) bir rapor gönderilmesini, durumun iletilmesini sağlama işlemi yapılır. Şayet rapor'un (bilginin) sadece göndereciye gitmesini isterseniz bu kısımda "--notify sender" şeklinde düzenleme yapabilirsiniz. Ayrıca qmail-scanner.pl dosyasındaki uyarı metinlerininde Türkçe olabilmesi için "--lang tr_TR" desteği ile derlediğimize dikkat ediniz.

Şayet sistemde clamav'dan başka antivirüs programıda kullanmak isterseniz onuda --scanners ifadesinden sonra gelen "clamdscan,verbose_spamassassin" paremetreleri içerisinde belirtmeniz gerekir. Yalnız kullanacağınız antivirüs yazılımının qmail-scanner tarafından destelendiğine emin olunuz.

Clamav ile birlikte ikinci bir antivirus programı daha çalıştırmak isteyenler için AntiVir isimli antivirus yazılımın e-posa sunucuları için olan MailGate ürününü önerebilirim. Bu ürünü ticari amacı olmayan (non-commercial) sunucunuzda bir sene boyunca ücretsiz kullanabilirsiniz. Bir senelik lisansı http://www.antivir.de/en/support/unix_private_registration/?type=98 adresindeki formu doldurarak temin edebilmek mümkün.

./configure --spooldir /var/spool/qmailscan --qmaildir /var/qmail --bindir /var/qmail/bin --qmail-queue-binary /var/qmail/bin/qmail-queue --admin info --domain domainismi.com --notify sender,admin,recips --local-domains localhost --silent-viruses auto --lang tr_TR --debug 1 --unzip 1 --block-password-protected 0 --add-dscr-hdrs 1 --archive 0 --redundant no --log-details yes --log-crypto 0 --fix-mime 1 --ignore-eol-check 0 --scanners "clamdscan,verbose_spamassassin" --install 1

Kurulum sırasındaki bilgiler aşağıdakine benzer şekilde olacak.

Building Qmail-Scanner 1.25...

This script will search your system for the virus scanners it knows
about, and will ensure that all external programs
qmail-scanner-queue.pl uses are explicitly pathed for performance
reasons.

Continue? ([Y]/N) [Y ile devam ediyoruz]

The following binaries and scanners were found on your system:

mimeunpacker=/usr/bin/reformime
unzip=/usr/bin/unzip

Content/Virus Scanners installed on your System

clamscan=/usr/bin/clamscan

Qmail-Scanner details.

log-details=mailstats.csv
fix-mime=1
ignore-eol-check=0
debug=1
notify=sender,admin,recips
redundant-scanning=no
virus-admin=info@domainismi.com
local-domains='domainismi.com','localhost'
silent-viruses='klez','bugbear','hybris','yaha','braid','nimda','tanatos','sobig','winevar', 'palyh','fizzer','gibe','cailont', 'lovelorn','swen','dumaru','sober','hawawi','holar-i','mimail','poffer','bagle', 'worm.galil','mydoom','worm.sco','tanx', 'novarg','\@mm'
scanners="clamscan_scanner"

If that looks correct, I will now generate qmail-scanner-queue.pl
for your system...
Continue? ([Y]/N) [Burada Y ile devam ediyoruz]

Hit RETURN to create initial directory structure under /var/spool/qmailscan,
and install qmail-scanner-queue.pl under /var/qmail/bin:
perlscanner: generate new DB file from /var/spool/qmailscan/quarantine-attachments.txt
perlscanner: total of 9 entries.

Finished installation of initial directory structure for Qmail-Scanner
under /var/spool/qmailscan and qmail-scanner-queue.pl under /var/qmail/bin.

Finished. Please read README(.html) and then go over the script
(/var/qmail/bin/qmail-scanner-queue.pl) to check paths/etc.

"/var/qmail/bin/qmail-scanner-queue.pl -r" should return some well-known virus
definitions to show that the internal perlscanner component is working.

That's it!

****** FINAL TEST ******

Please log into an unpriviledged account and run
/var/qmail/bin/qmail-scanner-queue.pl -g

If you see the error "Can't do setuid", or "Permission denied", then
refer to the FAQ.

(e.g. "setuidgid qmaild /var/qmail/bin/qmail-scanner-queue.pl -g")


That's it! To report success:

% (echo 'First M. Last'; cat SYSDEF)|mail jhaar-s4vstats@crom.trimble.co.nz
Replace First M. Last with your name.

Şeklinde kurulum tamamlanmış olacaktır. Şimdi "/var/qmail/bin/qmail-scanner-queue.pl -g" komutunu işleterek işlemi sonlandıralım.

  • /var/qmail/bin/qmail-scanner-queue.pl -g
    perlscanner: generate new DB file from /var/spool/qmailscan/quarantine-attachments.txt
    perlscanner: total of 9 entries.

Bu işlemler sonucunda qmail-scanner-queue.pl dosyasının /var/qmail/bin/ altında yerini almış olması gerekir. Bu dosyanın hakları ile ilgilide, dosya sahibi ve grubunun qscand (qscand:qscand), chmod olarak erişim yetkisininde 4755 olarak ayarlanmış olmasına dikkat ediniz.

ls -al /var/qmail/bin/qmail-scanner-queue.pl
-rwsr-xr-x 1 qscand qscand 90980 2004-10-15 21:06 /var/qmail/bin/qmail-scanner-queue.pl

Ayrıca, /var/spool/qmailscan/ dizini yapısınında aşağıdakine benzer şekilde oluşturulmuş olup olmadığını kontrol ediniz.

ls -al /var/spool/qmailscan/
toplam 52
drwxrwx--- 5 qscand qscand 4096 2004-10-15 21:07 .
drwxr-xr-x 9 root root 4096 2004-10-15 21:06 ..
-rw-rw---- 1 qscand qscand 96 2004-10-15 21:06 mailstats.csv
-rw------- 1 qscand root 597 2004-10-15 21:06 qmail-queue.log
-rw------- 1 qscand root 18 2004-10-15 21:06 qmail-scanner-queue-version.txt
drwxrwx--- 5 qscand qscand 4096 2004-10-15 21:06 quarantine
-rw-r----- 1 qscand root 12288 2004-10-15 21:07 quarantine-attachments.db
-rw-rw---- 1 qscand qscand 4336 2004-10-15 21:06 quarantine-attachments.txt
-rw-rw---- 1 qscand qscand 0 2004-10-15 21:06 quarantine.log
drwx------ 2 qscand root 4096 2004-10-15 21:06 tmp
lrwxrwxrwx 1 qscand qscand 31 2004-10-15 21:06 viruses -> /var/spool/qmailscan/quarantine
lrwxrwxrwx 1 qscand qscand 35 2004-10-15 21:06 viruses.log -> /var/spool/qmailscan/quarantine.log
drwxrwx--- 5 qscand qscand 4096 2004-10-15 21:06 working

Şimdi /etc/tcp.smtp dosyasının Qmail-Scanner'ın devreye girebileceği şekilde düzenlenmesine geldi. /etc/tcp.smtp dosyasının içeriğini aşağıdaki şekile getirin.

127.0.0.1:allow,RELAYCLIENT="",QMAILQUEUE="/usr/sbin/qmail-scanner-queue.pl"
:allow,QMAILQUEUE="/usr/sbin/qmail-scanner-queue.pl"

Değişikliğin aktif olabilmesi için,

  • tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

Şimdide, /var/qmail/bin/qmail-scanner-queue.pl dosyamızda aşağıdakine benzer şekilde olan satırların, aşağıdaki yapıda olup olmadığını kontrol edelim. Şayet ilgili satırlardaki tanımlar, bu şekilde değilse tanımları belirtilen şekile getirelim. Özellikle dikkat edilmesi gereken satırlar koyu renkle işaretlenmiştir.

my $clamscan_binary='/usr/bin/clamscan';
my $clamscan_options="-r -m --unzip --unrar --unzoo --lha --disable-summary --max-recursion=10 --max-space=100000";
my $clamdscan_binary='/usr/bin/clamdscan';
my $clamdscan_options="--no-summary";
my $spamc_binary='/usr/bin/spamc';
my $spamc_options=' -c ';
my $spamc_subject='';
my $spamassassin_binary='/usr/bin/spamassassin';
my ($sa_comment,$sa_level);

Evet, şimdi yazılımların kurulması ve yapılandırılması işlemi tamamlandı. Sistemimizi test etmek için,

  • /etc/init.d/qmail restart

deyip, ilk önce qmailin düzgün şekilde başlayıp başlamadığını (telnet localhost 25) kontrol edelim. Benzer şekilde pop3 portunun aktif olup olmadığına (telnet localhost 110) bakalım. Bunlarda problem varsa, öncelikle /etc/init.d/qmail betiğinde yaptığımız ayarlarda sorun olmadığına emin olalım, daha sonra qmail-scanner ile ilgili ayarları gözden geçirelim.

HATALARI YAKALAMAK VE HATALARLA BAŞA ÇIKABİLMEK :

  • tail -f /var/log/mail.log
  • tail -f /var/spool/qmailscan/qmail-queue.log

takip etmemiz gereken logların başında gelir. Özellikle /var/spool/qmailscan/qmail-queue.log dosyasında tutulan loglar sistemdeki sorunlar ve sorunların çözümüne ulaşabilmeniz için önemli ip uçları sunacaktır.

451 qq temporary problem (#4.3.0)

şeklinde veya aşağıdaki şekilde,

clamdscan: corrupt or unknown clamd scanner error or memory/resource/perms problem

hata alırsanız, /etc/init.d/qmail içerisindeki ulimit -v değerini artırıp qmail'i yeniden başlatıp kontrol edin. Örnek olarak bu değeri, "ulimit -v 65536" şeklinde bir değere ayarlayabilirsiniz (veya daha yüksek bir değere çekebilirsiniz). Bu değerin hemen aktif olabilmesi için bu ifadeyi komut satırından da işletebilirsiniz.

Ayrıca bu hataya sebep olabilecek olan, /etc/clamav/clamd.conf dosyasındaki "User clamav" ifadesinin "User qscand" olarak değiştirilmesine ve "chown qscand -R /var/run/clamav/" ile " /var/run/clamav/" dizininin qscand kullanıcısı içinde erişilebilir olmasına dikkat ediniz.

"/etc/init.d/clamav-daemon restart" komutunu işlettiğinizde "/var/run/clamav/" içerisinde "clamd.ctl" dosyasının yer alması gerektiğine dikkat ediniz.

Bu hatanın olası sebebi ile ilgili son olarak, "perl-suid" paketinin sistemde kurulu olduğuna emin olunuz.

SİSTEMİN KOMPLE TEST EDİLMESİ :

Sistemin çalışmasında bir sorun gözlemlemişseniz, sistemi genel olarak test edelim. Bunun için qmail-scanner içerisinden çıkan ufak betiği çalıştırıp genel bir fikir sahibi olabiliriz.

Yukarıdaki şekilde adımları takip etmişseniz qmail-scanner kaynak kodlarınız /usr/local/src/qmail-scanner-1.25/ dizininde bulunuyor olmalı. Bu dizin içerisindeki "contrib" isimli dizinde yer alan "test_installation.sh" isimli betiği aşağıdaki şekilde çalıştırarak spam ve viruslere karşı sistemimizin tutumuna bakabiliriz.

  • test_installation.sh -doit

Bunun yanısıra dilerseniz aşağıdaki şekilde gerekli testleri farklı şekillerde de yapabilirsiniz.

An error has occured.

Cannot find any reference to the Q-S administrator Email address in
/usr/sbin/qmail-scanner-queue.pl on your system!

Exiting....

Şeklinde bir hata mesajı ile işleminiz kesilirse "/var/qmail/control/defaultdomain" dosyasının içerisinde varsayılan olarak bulunmasını istediğiniz domaini belirtiniz. Bu dosya içerisine "localhost" gibi bir ifade de yazabilirsiniz.

"test_installation.sh -doit" işleminin sonucunda aşağıdakine benzer bir mesaj alacaksınız. Bu mesaj spam ve virüs testlerinin yapılıp sonucun qmail-scanner ayarlarında belirttiğiniz e-posta adresine gönderildiğini belirtiyor.

QMAILQUEUE was not set, defaulting to /var/qmail/bin/qmail-scanner-queue.pl for this test...
QMAILQUEUE was not set, defaulting to /usr/sbin/qmail-scanner-queue.pl for this test...

Sending standard test message - no viruses...
done!

Sending eicar test virus - should be caught by perlscanner module...
done!

Sending eicar test virus with altered filename - should only be caught by commercial anti-virus modules (if you have any)...

Sending bad spam message for anti-spam testing - In case you are using SpamAssassin...
Done!

Finished test. Now go and check Email for info@domainismi.com

1. Virus Testi :

Sisteminizi kontrol edebilmek için aşağıdaki adreslerden faydalanabilirsiniz.

http://www.webmail.us/testvirus

http://www.eicar.org/anti_virus_test_file.htm

http://www.webmail.us/testvirus adresine e-posta adresinizi tanıtıp daha sonra ilgili adrese bol bol viruslu e-posta gönderebilirsiniz :). Ayrıca http://www.eicar.org/anti_virus_test_file.htm adresinden indireceğiniz virüs içeren dosyayı kendinize göndererek benzer bir test de yapabilirsiniz.

2. Spam Testi :

  • /usr/bin/spamassassin -t < /usr/share/doc/spamassassin/examples/sample-spam.txt

komutu ile /usr/share/doc/spamassassin/ dizininde yer alan sample-spam.txt dosyası ile Spam olan e-postalara karşı nasıl bir davranış göstereceği test edilebilir. Aynı şekilde,

  • gunzip /usr/share/doc/spamassassin/examples/sample-nonspam.txt.gz
  • /usr/bin/spamassassin -t < /usr/share/doc/spamassassin/examples/sample-nonspam.txt
komutu ilede spam olmayan e-postalara karşı nasıl bir davranış göstereceğini gözlemleyebiliriz.

Bu testler ile en azından sistemin çalışıp çalışmadığını öğrenebilirsiniz. Çalıştığına kanaat getirdikten sonra, en iyi sonuçlar için sisteminizi 1-2 gün gözlemleyerek duruma göre ayar dosyaları ile oynama yapabilir ve daha başarılı sonuçlar elde edebilirsiniz.

EKSTRA İŞLEMLER :

Squirrelmail'in Attachment Dosyalarının Belirli Aralıklarla Temizlenmesi :

Squirrelmail'in attachment dizini,

General Options -> Attachment Directory : /var/spool/squirrelmail/attach/

şeklinde "/usr/sbin/squirrelmail-configure" ile oluşturduğumuz ayar dosyasında tanımlanmıştır. Bu dizindeki (sizde farklı bir yeri gösteriyor olabilir) dosyaların belirli aralıklarla temizlenmesini sağlayabiliriz.

En son 3 gün önce erişilmiş dosyaları silmek için crontab içerisine aşağıdaki satırı uygun şekilde, uygun bir zamanda çalışacak şekilde ayarlayabilirsiniz.

find /var/spool/squirrelmail/attach/ -type f -atime +3 | xargs rm -rf

Karantinaya Alınan Email'lerin Belirli Aralıklarla Temizlenmesi :

En son 7 gün önce erişilmiş dosyaları silmek için crontab içerisine aşağıdaki satırı uygun şekilde, uygun bir zamanda çalışacak şekilde ayarlayabilirsiniz.

find /var/spool/qmailscan/quarantine/new/ -type f -atime +7 | xargs rm -rf

Clamav'ın Belirli Aralıklarla Güncellenmesi :

Her 6 saatde bir güncellenmesi için crontaba aşağıdaki satırı yerleştirebilirsiniz.

NOT : Clamav'ı daemon olarak çalıştırmışsak buna gerek kalmayacak veya buna benzer bir ayar cron'dan güncelleme yapacak şekilde ayar edilmiş clamav için crontab dosyasına otomatik eklenmiş olabilir. Yani sonuç olarak sisteminize bağlı olarak bu satıra ihtiyacınız olmayabilir.

* */6 * * * /usr/bin/freshclam /var/log/clam-update.log >/dev/null 2>&1

İstemcilerde (client) Smtp-Auth İçin Gerekli Ayar :

Smtp-Auth, nasıl e-postalarımı sistemden çekerken, sistemin bizi tanıyabilmesi için kullanıcı adımızı (vpopmail ile oluşturduğumuz sistemde kullanıcı adı = email adresimiz olduğunu unutmayalım) ve şifremizi giriyoruz. Aynı şekilde Smtp-Auth destekli sistemler üzerinden e-posta gönderebilmek için, o sistemdeki kullanıcı adımız ve şifremiz ile doğrulama yapmamız gerekir.

Thunderbird, Kmail, Sylpheed, Evolution, Outlook gibi istemcilerde Smtp-Auth'u aktif edebilmek için "Sunucum Kimlik Doğrulaması Gerektirir" şeklindeki ifadenin yer aldığı ayarı aktif etmemiz gereklidir (gerekiyorsa, smtp-auth için kullanacağımız domain ismini, kullanıcı adımızı ve şifremizide bizden istenildiği şekilde ilgili yere girmemiz gerekir) .

NOT : Sistemimizde destek verdiğimiz Auth. Tiplerinin (mekanizmalarının), kullandığımız istemci tarafından da desteklenmesi gerekir. Örnek olarak bizim sistemimiz, LOGIN ve PLAIN destekler şekilde kurulmuş olsun ("telnet localhost 25" dedikten sonra EHLO yazıp hangi tipleri desteklediğini kontrol edebiliriz.). Şayet kullandığımız istemci, LOGIN veya PLAIN desteklemiyor, CRAM-MD5 destekliyorsa Smtp-Auth çalışmıyacaktır.