Debian Gnu/Linux 4.0 (Etch) ile E-Posta Sistemi Kurulumu

Bu belgeyi, Free Software Foundation tarafından yayınlanmış bulunan GNU Genel Kamu Lisansının 2 ya da daha sonraki sürümünün koşullarına bağlı kalarak kopyalayabilir, dağıtabilir ve/veya değiştirebilirsiniz. Bu lisansın bir kopyasını http://www.gnu.org/copyleft/gpl.html adresinde bulabilirsiniz.

Bu belgedeki bilgilerin kullanımından doğacak sorumluluklar, ve olası zararlardan belge yazarı sorumlu tutulamaz. Bu belgedeki bilgileri uygulama sorumluluğu uygulayana aittir.

Tüm telif hakları aksi özellikle belirtilmediği sürece sahibine aittir. Belge içinde geçen herhangi bir terim bir ticarî isim yada kuruma itibar kazandırma olarak algılanmamalıdır. Bir ürün ya da markanın kullanılmış olması ona onay verildiği anlamında görülmemelidir.

Baskı Tarihçesi
Baskı Versiyon 1.0.0Aralık 2007
İlk versiyon

Özet

Bu belge ile, Debian Gnu/Linux 4.0 (Etch) üzerinde orta ve büyük ölçekli e-posta sistemi ihtiyacını karşılayabilecek bir yapının kurulması hedeflenmiştir. Söz konusu sistemde, Qmail ve Vpopmail ile birden fazla domaine hizmet verebilecek bir yapı oluşturulmaya çalışılırken, spam ve virüs denetleme uygulamaları ile de desteklenmiştir.

Bu belgede henüz yer almayan detaylar için http://www.serdaraytekin.com/docs/os/debian/sarge-qmail-vpopmail-spamassassin-antivir-squirrelmail.html adresinde yer alan belgeye göz atabilirsiniz.

Belgenin son haline http://www.serdaraytekin.com/docs/os/debian/etch-mail-server.html adresinden ulaşabilirsiniz.


İçindekiler

I.
1. Smtp-Auth Destekli Qmail Kurulumu
1.1. Ucspi-tcp-src Paketinin Kurulumu
1.2. Qmail Kurulumu
2. Vpopmail Kurulumu
3. Qmail-Pop3 Daemon'un Aktif Edilmesi
4. Spamassassin Kurulumu
5. Clamav Antivirüs Kurulumu
6. Qmail-Scanner Kurulumu

Kısım I. 

Bölüm 1. Smtp-Auth Destekli Qmail Kurulumu

1.1. 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 etch 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-10_[amd64|i386].deb now? [Yn] sorusuna Enter ile yanıt verip kurulumu tamamlayabiliriz.

1.2. Qmail Kurulumu

Qmail paketinin kaynak kodunu indirip smtp-auth yaması uygulayarak yeniden derleyeceğiz. Bunun için /etc/apt/source.list dosyanızda aşağıdaki satırların yer alıyor olması gerekiyor.

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

Yukarıdaki satırı source.list dosyamıza ekledikten sonra apt-get update ile indeximizi güncelleyelim. Sonra aşağıdaki adımları takip edebiliriz.

		# apt-get install procmail (qmail paketinin kurulumu için gerekli)				
		# cd /usr/local/src/
		# apt-get source qmail
		# cd qmail-1.03/patches
		# wget -c http://www.serdaraytekin.com/files/debian/etch/qmail/qmail-dnsbl-smtp-auth.patch
		# cd ..
		# patch < ./patches/qmail-dnsbl-smtp-auth.patch
		# dpkg-buildpackage
		

İşlem hata vermeden tamamlanmışsa bir üst dizinde qmail-src paketi oluşmuş olmalı. Kurulum için:

		# cd ..
		# dpkg -i qmail-src_1.03-44_all.deb
		# build-qmail			
		

Yukarıdaki işlemlerden sonra qmail paketi oluşturulacak ve kurulumu için onayınız isteniyor olacak.

		Do you want to install qmail_1.03-44_[amd64|i386].deb now? [Yn] 
		

Şeklindeki soruya da enter ile onay verip kurulumu tamamlayabiliriz.

Qmail kurulumundan sonra son bir adım olarak aşağıdaki işlemleri yapıp kurulumun düzgün şekilde tamamlanmayıp tamamlanmadığını kontrol edebiliriz.

		# echo "localhost" > /etc/qmail/me   
		# /etc/init.d/qmail restart
				
		# 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-PIPELINING
		250 8BITMIME
		

Yukarıdaki şekilde telnet localhost 25 ile 25. portun qmail tarafından dinlenip dinlenmediğini kontrol edebiliriz. Ayrıca yine EHLO komutu ile de smtp-auth desteğinin verilmiş olup olmadığını kontrol etmiş olduk.

Bölüm 2. Vpopmail Kurulumu

Öncelikle vpopmail paketi tarafından ihtiyaç duyulan libmysqlclient* paketini kuralım

		# apt-cache search libmysqlclient
		

İle depolardaki libmysqlclient paketinin tam ismini tespit edip doğru paketi kuralım.

Paket libmysqlclient15-dev benzeri bir isimle yer alıyor olacaktır.

		# apt-get install libmysqlclient15 
		

Paket bağımlılığı sebebi ile zlib1g-dev paketide kurulacaktır.

Ayrıca vpopmail'i mysql destekli olarak kuracağımız için de mysql paketlerine ihtiyacımız olacak.

		# apt-get install mysql-server-5.0
		

Vpopmail kurulumu için aşağıdaki adımları takip edebiliriz.

		# cd /usr/local/src
		# wget -c http://www.serdaraytekin.com/files/vpopmail/vpopmail-5.4.25.tar.gz
		# tar -zxvf vpopmail-5.4.25.tar.gz
		# cd vpopmail-5.4.25
		

Sıra vpopmail'in derlenmesi işlemine geldi.

		# ./configure --enable-auth-module=mysql --enable-sqllibdir=/usr/lib --enable-libdir=/usr/lib --enable-clear-passwd=n --enable-md5-passwords=y
		# make
		# make install strip
		

Not

Vpopmail'in son versiyonu için http://www.inter7.com/index.php?page=vpopmail adresini kontrol ediniz. Ayrıca vpopmail'i daha farklı parametreler ile konfigüre edebilmek içinde ./confiure --help komutu ile diğer parametreleri de inceleyebilirsiniz.

Ş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";
		

Not

Yukarıdaki örnekte, 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.

~vpopmail/etc/vpopmail.mysql dosyasını uygun bir editör ile açarak, 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
		

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

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

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ı_sifresi 
		

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

Bölüm 3. Qmail-Pop3 Daemon'un Aktif Edilmesi

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ğıdakı adresde gerekli değişiklerin aktif edilmiş olduğu qmail betiğini bulabilirsiniz.

	              # cd /etc/init.d/
	              # wget http://www.serdaraytekin.com/files/debian/etch/qmail/qmail
	              # /etc/init.d/qmail restart
	              

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.

		# telnet localhost 110
		Trying 127.0.0.1... 
		Connected to localhost. 
		Escape character is '^]'. 
		+OK  <22431.1196541543@hostname>
	              

Bölüm 4. Spamassassin Kurulumu

Kurulum için aşağıdaki adımları takip edebiliriz.

	               # apt-get install spamassassin spamc
	               # apt-get install razor dcc-client pyzor
	               

Kurulum sonraki konfigürasyon dosyalarında gerekli değişiklikleri yapıp aktif edelim.

/etc/default/spamassassin dosyasında spamd daemon'unu enable edelim.

	               # EDIT /etc/default/spamassassin
	               # ENABLED=1 (varsayılan değer olarak ENABLED=0 olan satırı ENABLED=1 olarak değiştiriyoruz)
	               

/etc/spamassassin/local.cf dosyasında da uygun şekilde düzenleme yapmak için aşağıdaki örnek konfigürasyonu kullanabiliriz.

Aşağıdaki örnek konfigürasyon http://www.yrex.com/spam/spamconfig.php adresindeki web arabirimi ile oluşturulmuştur

	               # How many hits before a message is considered spam.
	               required_score           5.0
	               
	               # Encapsulate spam in an attachment (0=no, 1=yes, 2=safe)
	               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_dcc                 1
	               use_pyzor               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
	               

Bölüm 5. Clamav Antivirüs Kurulumu

	               # apt-get install clamav clamav-daemon
	               # apt-get install  arj unzoo unrar lha unzip
	               

İleriki adımlarda gerekli olacak clamav-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 satırını User qscand şeklinde değiştirelim. Ardından;

	               # chown qscand -R /var/run/clamav/ 
	               # chown qscand -R /var/log/clamav/ 
	               # /etc/init.d/clamav-daemon restart 
	               

Bölüm 6. 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 kurulum için gerekli olacak paketleri kuralım

	               # apt-get install perl-suid
	               # apt-get install maildrop
	               # apt-get install apt-get install daemontools-installer 
	               # build-daemontools
	               

Qmail-scanner'e ekstra yetenekler kazandırmak için http://toribio.apollinare.org/qmail-scanner/ adresinde yer alan yama uygulanmış qmail-scanner'ı kullanacağız. Bu versiyon ile spam olarak işaretlediğimiz ve içerisinde virüs bulunan e-postaların otomatik olarak silinmesini sağlayabileceğiz.

Not

http://toribio.apollinare.org/qmail-scanner/ adresinde yer alan Qmail-Scanner'in ekstra özellikleri için ./configure --help komutu ile http://qmail-scanner.sourceforge.net/ adresinde yer alan Qmail-Scanner ile arasındaki farkları görebilirsiniz.ile kontrol edebilirsiniz.
	               # cd /usr/local/src/
	               # wget  http://www.serdaraytekin.com/files/qmail-scanner/q-s-2.01st-20070204.tgz
	               # tar -zxvf q-s-2.01st-20070204.tgz
	               # cd qmail-scanner-2.01st
	               
	               ./configure \
	               --qs-user qscand \
	               --spooldir /var/spool/qmailscan \
	               --qmail-queue-binary /usr/sbin/qmail-queue \
	               --admin-description "System Anti-Virus Administrator" \
	               --notify none \
	               --local-domains localhost \
	               --silent-viruses auto \
	               --virus-to-delete 1 \
	               --skip-text-msgs 1 \
	               --lang tr_TR \
	               --debug 1 \
	               --minidebug 1 \
	               --add-dscr-hdrs 1 \
	               --dscr-hdrs-text "X-Qmail-Scanner" \
	               --normalize 1 \
	               --archive 0 \
	               --max-scan-size 100000000 \
	               --unzip 1 \
	               --max-zip-size 1000000000 \
	               --max-unpacked-files 10000 \
	               --redundant 0 \
	               --log-details yes \
	               --log-crypto 0 \
	               --fix-mime 1 \
	               --ignore-eol-check 0 \
	               --sa-delta 0 \
	               --sa-alt 0 \
	               --sa-debug 0 \
	               --sa-report 0 \
	               --sa-quarantine 0 \
	               --sa-delete 0.0 \
	               --sa-reject 0 \
	               --scanners "clamdscan,verbose_spamassassin" \
	               --install 1
	               

Yukarıdaki parametrelerin işletilmesinden sonra, aşağıdaki şekilde bir konfigürasyon elde etmiş olacağız.

Not

Konfigürasyon parametrelerindeki --virus-to-delete 1 ve --sa-delete 0.0 kısmına dikkat.
	               ----------------------------------------------
	               st: configuration options for  2.01st-20070204
	               ----------------------------------------------
	               minidebug=1
	               settings-per-domain=0
	               virus-to-delete=1
	               dscr-hdrs-text='X-Qmail-Scanner'
	               
	               sa-delta  =0
	               sa-alt    =0
	               sa-debug  =0    (only valid if sa-alt is enabled)
	               sa-report =0    (only valid if sa-alt and sa-debug are enabled)
	               
	               Spamassasin Required_Hits=5.0
	               sa-quarantine=0         (no mail will be quarantined)
	               sa-delete    =0.0       (messages over 5 hits will be deleted)
	               sa-reject    =0
	               -------------------------------------------------------------------------
	               
	               If that looks correct, I will now generate qmail-scanner-queue.pl
	               for your system...
	               Continue? ([Y]/N) 
	               

Yukarıdaki parametrelerden de görüleceği üzere, spam derecesi 5.0 ve üzerinde olan tüm e-postalar e-posta kutusuna gönderilmeden silinecek. Yine benzer şekilde --virus-to-delete 1 parametresi sayesinde virüs tespit edilen e-posta da otomatik olarak silinecek şekilde konfigüre edilmiş oldu.

Spamassassin'de spam seviyesini 5.0 olacak şekilde konfigüre etmiştik. --sa-delete 0.0 parametresi ile de 5.0 (spamassassin seviyesi) + 0.0 (qmail-scanner seviyesi) = 5.0 olarak hesaplanacağı için, yine spam seviyesi 5.0 ve üzeri olan e-postaların otomatik olarak silinmesini istemiş olduk. Şayet --sa-delete 1.0 olsaydı, bu durumda 5.0 (spamassassin seviyesi) + 1.0 (qmail-scanner seviyesi) = 6.0 olarak hesaplanacağı için, spam seviyesi 6 ve üstündeki e-postalar otomatik olarak siliniyor olacaktı.

Son olarak aşağıdaki komut ile kurulum işleminin testini yapmış olalım.

	               # /var/qmail/bin/qmail-scanner-queue.pl -g
	               

Yukarıdaki işlem sonucunda aşağıdakine benzer bir sonuç görebiliyor olmamız gerekiyor.

	              perlscanner: generate new DB file from /var/spool/qscan/quarantine-events.txt
	              perlscanner: total of 35 entries.
	              

Qmail-Scanner'in devreye girebilmesi için, /etc/tcp.smtp dosyasında aşağıdaki değişiklikleri aktif edelim.

	              127.0.0.1:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
	              :allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
	              

Yukarıdaki satırları /etc/tcp.smtp dosyasına yazdıktan sonra aktif etmek içinde aşağıdaki komutu uygulayalım.

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

Qmail-Scanner dosyalarının izinlerini tekrar ayarlayarak qmail sistemimizi restart edebiliriz.

	              # chown qscand -R  /var/spool/qscan/
	              # chmod 755 -R /var/spool/qscan/
	              # qmail-scanner-queue.pl -z
	              # /etc/init.d/qmail restart
	              

Not

/etc/init.d/qmail restart işleminden sonra tcpserver: fatal: unable to bind: address already used şeklinde bir hata ile karşılaşırsanız qmail'i aşağıdaki adımları uygulayabilirsiniz.
	               # ps -adef | grep qmail | grep -v grep | awk '{print $2}' | xargs kill -9
	               # /etc/init.d/qmail restart
	               

Qmail-Scanner ile ilgili rapor alabilmek için qmail-queue.log verilerinden faydalanabiliriz. Bunun içinde:

	                # /var/spool/qscan/log-report.sh /var/spool/qscan/qmail-queue.log