qSheff
KLAVUZU
$Id: qSheff-Klavuzu.html,v 1.1 2006/03/03 23:37:59 afsin Exp $
qSheff; qmail-queue'nun yerine
geçerek
maillerin virus ve spam filtrelerinden geçirilmesini bir
sağlayan
araçtır.
- Ripmime Kurulumu
qSheff, maillerin parçalanması
için ripmime'ye ihtiyaç duyar. Ripmime, maili header,
body, ekler şeklinde ayrı ayrı dosyalara böler.
#
cd /usr/local/src
#
wget http://www.pldaniels.com/ripmime/ripmime-1.4.0.6.tar.gz
#
gunzip ripmime-1.4.0.6.tar.gz
#
tar xvf ripmime-1.4.0.6.tar
#
cd ripmime-1.4.0.6/
#
make
#
make install
#
ripmime -V
v1.4.0.6
- December 12, 2005 (C) PLDaniels http://www.pldaniels.com/ripmime
- ClamAV Kurulumu
qSheff ile bir virus tarayıcı
kullanmanız zorunlu değildir. Ancak bir virus tarayıcısı
kullanmanız kesinlikle önerilir. qSheff, virus taramaları
için
başta ClamAV olmak üzere bir çok virus tarayıcısı ile
birlikte çalışabilir. qSheff, ClamAV'a doğrudan soket bağlantısı
yapabilmektedir. clamdscan veya clamscan'i çalıştıran diğer
tarayıcılara göre daha az sistem kaynağı tüketmekte, daha
hızlı çalışmaktır.
ClamAV'yi www.clamav.net adresinden
indirebilirsiniz.
#gunzip
clamav-0.88.tar.gz
#tar
xvf clamav-0.88.tar
#cd
clamav-0.88/
#./configure
-prefix=/opt/clamav
#make
#make
install
configure ile birlikte kullandığımız
prefix parametresi ClamAV'ın hangi dizine kurulacağını bildirir. Eğer
ClamAV'yi /usr veya /usr/local dışında bir yere qSheff'i configure
ederken bu prefix'i belirtmeyi unutmayın.
#vi /opt/clamav/etc/clamd.conf
#Example //Bu satır diyezle ( # ) kapatılmalıdır.
#vi
/opt/clamav/etc/freshclam.conf
#Example //Bu satırı da diyezle ( # ) kapatıyoruz.
clamd.conf dosyasında LocalSocket
parametresi daha sonra qSheff kurulumunda bize lazım olacaktır.
- qSheff'in Kurulumu
#cd
/usr/local/src
#wget
http://www.enderunix.org/qsheff/qsheff-2.0-r1.tar.gz
#gunzip
qsheff-2.0-r1.tar.gz
#tar
xvpf qsheff-2.0-r1.tar
#cd
qsheff-2.0-r1
Kurulum seçeneklerine göz atalım:
#./configure -help
--enable-debug
debug modunu aktif hale geçirir.
Eğer qSheff hata veriyorsa bu mod aktif hale getirilir ve yanlızca make
yapılarak sorun şu şekilde tespit edilmeye çalışılır:
# ./qsheff < share/sample-OK.msg
# ./qsheff
< share/sample-VIRUS.msg
# ./qsheff
< share/sample-SPAM.msg
Gelen ve giden tüm mail trafiğinin
/var/qsheff/backup klasörünün altına kaydedilesini
sağlar.
--enable-subject-tag
Bu özellikle birlikte spam olarak
belirlenen maillerin konu kısımlarınin başına ***SPAM***
kelimesi eklenir ve mail kullanıcıya teslim edilir. Bu özellik
mailin kullanıcıya iletilmesini sağladığı ve hata
döndürmediği için custom-error-patch 'i
kullanılmamalıdır. Kullanıcılar Outlook veya diğer mail istemcilerde
filtre yazarak spam mailleri Trash'a düşürür.
Böylece yanlış tanımlanan maillerin kaybı engellenmiş olur.
--enable-qmailqueue-patch
Bu yama sayesinde qmail-smtpd,
qmail-queue yerine hangi programı çalıştıracağını QMAILQUEUE
çevre değişkeninden bulur. Qmail'e qsheff_patch'inin ya da
qmailqueue-patch
uygulanmış olması gerekir. Bu yamaları contribute dizininde
bulabilirsiniz.
Not:
qsheff_patch'ini kullanmanız önerilir.
--enable-local-users
Yerel kullanıcılar için spam
filtrelerini aktif hale getirir. Öntanımlı olarak yerel (local)
kullanıcılar taranmaz, qsheff.log'da görünmez. Kendi
kullanıcılarınızın tümü ve
sunucunuz üzerinden ip ile relay yapan kullanıcılar yerel (local)
kullanıcı olarak adlandırılır.
--enable-custom-error
qmail "permanently" hata mesajları yerine
göndericiye kendi istediğiniz mesajların dönülmesini
sağlar. Bu mesajlar main.h içerisinde yer alır, istenilirse
değiştirilebilir. qSheff, tanımlı mesajın sonuna spam ise spam
kelimesini, virus ise virus adını otomatik olarak ekler.
--enable-custom-filter
Kullanıcının tanımladığı filtre programını aktif hale getirir.
Programın tam yolunu ve dönüş
değerlerini qsheff.conf a yazmanız gerekir.
--with-clamd-socket
clamd'nin dinlediği soket dosyasını gösterir.
qSheff bu soketi kullanarak clamd'ye bağlanır. Öntanımlı adresi
/tmp/clamd'dır. Eğer clamd çalışıyorsa soket şu şekilde
öğrenilebilir:
# netstat -an | grep clamd
dfdf9dc0 stream 0 0 dfe20040 0 0 0
/tmp/clamd
Buradaki /tmp/clamd clamav soket inin
tutulduğu yerdir. clamd'nin dinlediği soket clamd.conf'dan
ayarlanabilir.
--with-maxfiles
Her işletim sisteminin bir klasörde
tutabileceği maksimum alt klasör sayısı vardır. Örneğin
FreeBSD'de öntanımlı olarak 32768'dır. backup ve quarantine
dizinleri bu limite ulaştığında sistem hata verecektir. Bu sorunu
çözmek için alt dizinler oluşturulmuştur. qSheff,
dizinlerden biri dolduğunda diğerine geçer. backup ve quarantine
dizinlerinin altında 16 alt dizin vardır. ( Örn;
/var/qsheff/backup/4/ ) Eğer qSheff 'x' alt dizinine yazmaya başlamışsa
backup veya quarantine dizininiz dolmak üzere demektir.
Öntanımlı değeri
32000'dir. Bu değer kesinlikle işletim sisteminizin limitini
geçmemelidir.
--with-qmaildir
qmail'in kurulduğu dizini seçmeye
yarar. Öntanımlı ve tavsiye edilen qmail dizini /var/qmail
dir.
--with-qmailgroup
qmail kullanıcısını belirtmek için kullanılır. Öntanımlı değeri qmail dir. Bu değeri de qmail kurulumu sırasında standartlara bağlı kalarak değiştirmemeniz önerilir.
--with-max-bodyline
Mail içerisindeki qSheff'in
tarayacağı maksimum satır sayıdır. Öntanımlı değeri 40'dir. Bu
değer sisteminizi DoS ataklarına karşı korumak içindir. Eğer bir
saldırgan binlerce satırlık mailler gönderip sistem
performansınızı düşürücü ataklar yaparsa qSheff
yanlızca belirtilen kadar satır okuyarak performans
düşüşünü engeller.
--with-clamav
ClamAV'ı aktif hale getirmek ve tam yolunu belirtmek için
kullanılır.
Kuruluma başlamadan önce qmail'e
kurulu olan tüm filtreleme
yazılımlarını (qscanq, rav vs ...) kaldırmanız gerekir.
qmail-queue'de herhangi bir sembolink link olmamalıdır:
# ls -l /var/qmail/bin/qmail-queue
-rws--x--x 1 qmailq qmail 16565 Feb 26 14:29 /var/qmail/bin/qmail-queue
configure parametrelerini kendi ihtiyaçlarınız doğrultusunda belirtmelisiniz.
# ./configure
--with-clamav=/opt/clamav/ --with-clamd-socket=/tmp/clamd
--enable-subject-tag --with-max-bodyline=30 --enable-local-users
--enable-backup-all
# make
# make
install
# /usr/local/etc/qsheff/install-wrapper.sh
Kurulum bittikten sonra aşağıdaki
gibi bir görünüm olmalıdır.
# ls -l /var/qmail/bin/qmail-queue
lrwxr-xr-x 1 root qmail 37870 Feb 28 00:22 /var/qmail/bin/qmail-queue -> /var/qmail/bin/qmail-qsheff
# ls -l /var/qmail/bin/qmail-qsheff
-rws--x--x 1 root qmail 37870 Feb 28 00:22 /var/qmail/bin/qmail-qsheff
# ls -l /var/qmail/bin/qmail-queue.orig
-rws--x--x 1 qmailq qmail 37870 Feb 28 00:22 /var/qmail/bin/qmail-queue.orig
Not: qmail-queue yaması enable edilmişse qmail-queue sembolink link olmayacaktır.
qSheff çalışır halde hazır demektir.
Yamaların Uygulanması:
- qsheff-patch Yaması
qmail'i qsheff-patch ile derlemenizi
mutlaka öneririm. Bu yamanın içerisinde hem custom-error
hem de qmailqueue yaması mevcuttur. (Kullandığınız qmail dağıtımı bu
yamalardan bir kısmını içeriyor olabilir. Örneğin;
netqmail, qmailqueue yamasını zaten içerir. Bu durumda bu yama
uygulanamaz.)
qsheff_patch'i herhangi bir çevre değişkeni
okumadığından ve doğrudan qsheff'i çalıştırdığından
hem daha güvenli hem de daha hızlıdır.
Bu yamaları kullanmak için
qmail'in kaynak kodlarının olduğu dizine gidilir ve yama
uygulanır.
#
cd /usr/local/src/qmail-1.03/
#
cp /usr/local/src/qsheff-2.0/contribute/qsheff_patch.diff .
#
patch < qsheff_patch.diff
patching
file qmail.c
patching
file qmail.h
# make setup check
Böylece qmail i qsheff yamasıyla
derlemiş ve kurmuş olduk. qmail
kaynak kodları bu yamaları içerse de qSheff'den aktif
edilmedikçe bu özellikler pasif kalacaktır. qsheff
i de enable-qmailqueue-patch ve enable-custom-error parametreleriyle
derleyince işlem tamam
demektir.
#
cd /usr/local/src/qsheff-2.0-r1/
#
./configure --with-clamav=/opt/clamav/
--with-clamd-socket=/tmp/clamd
--enable-qmailqueue-patch
--enable-custom-error
#
make
#
make install
#
/usr/local/etc/qsheff/install-wrapper.sh
qmail-queue'nun sembolink link olmayacağını göreceksiniz:
#
ls -l
/var/qmail/bin/qmail-q*
-r-s--x--x
1 root qmail 37838 Feb 28 01:18 /var/qmail/bin/qmail-qsheff
-rws--x--x
1 qmailq qmail 16565 Feb 26 14:29 /var/qmail/bin/qmail-queue
- qmailqueue Yaması
Eğer Bruce Guenter'in qmailqueue
yamasını kullanıyorsanız (netqmail'de bu yama uygulanmıştır.) tcp.smtp
aracılığıyla QMAILQUEUE çevre değişkeninin tcp.smtp dosyasında
atanması gerekmektedir.
192.168.1.:allow,QMAILQUEUE="/var/qmail/bin/qmail-qsheff"
Yukarıdaki satır 192.168.1 networkunden gelen kullanıcılar için
qmail-queue yerine qmail-qsheff'in çalıştırılmasını sağlar.
Tüm networkler için aşağıdaki satırı eklemelisiniz:
:allow,QMAILQUEUE="/var/qmail/bin/qmail-qsheff"
NOT: Bu yama custom-error içermez.
- custom-error Yaması
Kullanıcı tanımlı hata mesajı
dönmeyi sağlar. qsheff_patch yaması bu yamayı zaten
içermektedir. qmail-queue veya qsheff_patch yamalarını
kullanmadan sadece bu yamayı kullanmak istiyorsanız qmail kaynak kodunu
contribute dizinindeki qmail-queue-custom-error.patch ile yamalamanız
gerekmektedir.
Yamaların çalıştığını görmek
için
qsheff.log dosyasını kontrol edebilirsiniz.
- Püf Noktası:
-- Backup özelliği aktif halde olan qSheff'de aradığım bir maili nasıl bulurum ?
İlk olarak mailin kuyruktaki ID'si bulunur. Bunun için qsheff.log, cat ve grep ile kullanılabilir.
#
cat /var/log/qsheff.log | grep enderunix
28/02/06
01:19:27: QUEUE, queue=q-1141083887-164274-32338, recvfrom=,
from=`afsin.taskiran@example.com',
to=`baris.simsek@example.enderunix.org', subj=`ufak denemeler',
size=522
qsheff, mailleri yedeklerken kuyruktaki ID'lerine göre isimlendirir. Daha sonra backup klasöründe ufak bir arama ile mailimizi bulabiliriz.
#
find /var/qsheff/backup/ -name q-1141083887-164274-32338
/var/qsheff/backup/0/q-1141083887-164274-32338
-- Herhangi bir sorun anında
qsheff'i geçici olarak devre dışı bırakmak için;
#mv
/var/qmail/bin/qmail-qsheff /var/qmail/bin/qmail-qsheff.old
#rm
-f /var/qmail/bin/qmail-queue
#mv
/var/qmail/bin/qmail-queue.orig /var/qmail/bin/qmail-queue
Normalde qmail-smtpd veya qmail-inject qmail-queue'yi ararlar. Ama
qmailqueue veya qsheff yaması uygulanmışsa qmail-qsheff'i
arayacaklardır. Biz qSheff'i kaldırmaya çalıştığımız için
yamaları uninstall etmek zor olacağı için en kolay yol olarak cp
-p ile qmail-queue'yi qmail-qsheff üzerine kopyalarız.
Böylece qmail-smtpd veya qmail-inject, qmail-qsheff'i
çalıştırdığını zanneder ama aslında o qmail-queue'dir.
Bu durumda;
#mv
/var/qmail/bin/qmail-qsheff /var/qmail/bin/qmail-qsheff.old
#cp -p
/var/qmail/bin/qmail-queue /var/qmail/bin/qmail-qsheff
cp komutunu -p parametresiyle kullandıysanız chmod veya chown
komutlarına ihtiyacınız yoktur. Ancak gerekirse qmail-queue dosyasının
izinleri aşağıdaki gibi düzenlenebilir.
#chmod
4511 /var/qmail/bin/qmail-queue
#chown
qmailq:qmail /var/qmail/bin/qmail-queue
qSheff yaması uyguladıysanız
qmail-qsheff'in hakları ve sahiplikleri de
önem kazanmaktadır. Daha önce dediğimiz gibi cp komutunu -p
parametresiyle kullanırsanız aşağıdaki komutları uygulamanıza gerek
yoktur.
#chmod
4511 /var/qmail/bin/qmail-qsheff
#chown
qmailq:qmail /var/qmail/bin/qmail-qsheff
KAYNAKLAR:
[1] http://www.enderunix.org/qsheff/manual-en/ qsheff el kitabı
[2] http://www.enderunix.org/qsheff/docs/regular.expressions.txtSorularıma cevap veren Barış ŞİMŞEK'e
teşekkür ederim.
Bu dökümanı kaynak
göstererek serbestçe kullanabilirsiniz.
03.03.2006
$Id: qSheff-Klavuzu.html,v 1.1 2006/03/03 23:37:59 afsin Exp $
Afşin TAŞKIRAN
afsin || enderunix.org