qmail Kurulumu

Qmail, *nix işletim sistemleri için yazılmış, oldukça güvenli ve efektif bir MTA (Mail Transport Agent)’dır. Bu dokümanda sendmail’in hiç bulaşmadığı bir sisteme yapılan kurulum anlatılmıştır. Ayrıca bu kurulumda kullanıcılar sanal değil, sistem kullanıcılarıdır. Eğer sanal kullanıcılar da kullanmak istiyorsanız bu dokümanın sonunda referans olarak verilen belgelerden yararlanabilirsiniz.

Qmail için gerekli paketlerin kurulması

Öncelikle ucspi-tcp paketini kurmalıyız. Bu paketin son versiyonunu http://cr.yp.to/ucspi-tcp.html adresinden bulabilirsiniz. Biz ucspi-tcp-0.88′i kullandık.

Paketi indirdikten sonra açın:

# tar -zxvf ucspi-tcp-0.88.tar.gz
# cd  ucspi-tcp-0.88

Daha sonra programı derleyin:

# make

Root olarak /usr/local altına ucspi-tcp programını kurun:

# make setup check

İlk olarak root olarak (# su) /package dizini yaratın:

# mkdir -p /package
# chmod 1755 /package
# cd package

Daha sonra daemontools kurulacak. daemontools un son sürümünü daemontools homepage den bulabilirsiniz. Biz bu dökümanı yazarken daemontools-0.76 kullandık.

Paketi /package dizinine indirip açın:

# tar -zxpvf daemontools-0.76.tar.gz
# cd admin/daemontools-0.76

Programi derleyip kurun:

# ./package/install

daemontools başarıyla kurulmuştur.

Son olarak pop3 authentication sağlamak için checkpassword paketi kurulacak. checkforward paketinin son sürümünü http://cr.yp.to/checkpwd.html adresinden bulabilirsiniz. Biz bu dokümanda checkpassword-0.90 kullandık.

öncelikle paketi açın ve dizine girin:

# tar -zxvf checkpassword-0.90.tar.gz
# cd  ckeckpassword-0.90

Daha sonra programı derleyin:

# make

Root olarak /bin/checkpassword altına checkpassword programını kurun:

# make setup check

Qmail Kurulumu

Şimdi qmail’i kurmaya başlayabiliriz. Bu paketin en son sürümünü http://cr.yp.to/qmail.html adresinden bulabilirsiniz. Biz qmail-1.03 sürümünü kullandık.

Ilk olarak qmail için gerekli kullanıcı ve kullanıcı gruplarını ekleyelim.

FreeBSD için:

# pw groupadd nofiles
# pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
# pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
# pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
# pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
# pw groupadd qmail
# pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
# pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
# pw useradd qmails -g qmail -d /var/qmail -s /nonexistent

Linux için:

# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias -s /no-login alias
# useradd -g nofiles -d /var/qmail -s /no-login qmaild
# useradd -g nofiles -d /var/qmail -s /no-login qmaill
# useradd -g nofiles -d /var/qmail -s /no-login qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail -s /no-login qmailq
# useradd -g qmail -d /var/qmail -s /no-login qmailr
# useradd -g qmail -d /var/qmail -s /no-login qmails

komutlarını verin.qmail home directory’yi yaratın:

# mkdir /var/qmail

Daha sonra paketi açın ve qmail-1.03 dizinine girin:

# tar -zxvf qmail-1.03.tar.gz
# cd qmail-1.03

Programı derleyin ve qmail dizin ağacını oluşturun:

# make setup check

eğer sunucunuzun bir DNS kaydı varsa /var/qmail dizini altında gerekli qmail konfigürasyon dosyalarını oluşturmak için komutu verin:

# ./config

Dilerseniz hostname’inizi kendiniz de girebilirsiniz:

# ./config-fast tam.makina.adı

Sistem ‘alias’larını yaratın:

# echo haluk@eh.edu.tr > ~alias/.qmail-postmaster
# echo eli@eh.edu.tr > ~alias/.qmail-mailer-daemon
# echo deli@eh.edu.tr > ~alias/.qmail-root
# chmod 644 ~alias/.qmail-postmaster ~alias/.qmail-mailer-deamon ~alias/.qmail-root

Burada ‘haluk’ sistemin mail admin’i, ‘eli’ bounce olan mesajları alacak standart kullanıcı, ‘deli’ sistem admin’imiz, ‘eh.edu.tr’ de domain’imiz. Dilersenis sadece touch komutuyla bu dosyaları yaratıp içlerini boş bırakabilirsiniz, bu durumda ilgili mailler ~alias/Maildir’e kaydedilir.Kullanıcı Dizinlerinin Maildir kullanımı için ayarlanması

Her kullanıcı için şu komutları verin:

# su kullanıcı
# ./maildirmake ~/Maildir
# echo ./Maildir/ > ~/.qmail
# exit

Sisteme yeni eklenecek her kullanıcının bir Maildir dizini olması için:

# ./maildirmake /etc/skel/Maildir
# echo ./Maildir/ > /etc/skel/.qmail

Daha sonra /var/qmail/boot/home dosyasini /var/qmail/rc e kopyalayın:

# cp /var/qmail/boot/home /var/qmail/rc

Şimdi bir editörle /var/qmail/rc dosyasını açıp Mailbox’ı Maildir ile değiştirin.

qmail’i kontrol etmeye yarayan aşağıdaki scripti /usr/sbin/qmail adlı dosyaya yazın:

#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
case "$1" in
start)
echo -n "Starting qmail: svscan"
cd /var/qmail/supervise
env - PATH="$PATH" svscan &
echo $! > /var/run/svscan.pid
echo "."
;;
stop)
echo -n "Stopping qmail: svscan"
kill `cat /var/run/svscan.pid`
echo -n " qmail"
svc -dx /var/qmail/supervise/*
echo -n " logging"
svc -dx /var/qmail/supervise/*/log
echo "."
;;
stat)
cd /var/qmail/supervise
svstat * */log
;;
doqueue|alrm)
echo "Sending ALRM signal to qmail-send."
svc -a /var/qmail/supervise/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sending HUP signal to qmail-send."
svc -h /var/qmail/supervise/qmail-send
;;
pause)
echo "Pausing qmail-send"
svc -p /var/qmail/supervise/qmail-send
echo "Pausing qmail-smtpd"
svc -p /var/qmail/supervise/qmail-smtpd
;;
cont)
echo "Continuing qmail-send"
svc -c /var/qmail/supervise/qmail-send
echo "Continuing qmail-smtpd"
svc -c /var/qmail/supervise/qmail-smtpd
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtpd."
svc -d /var/qmail/supervise/qmail-smtpd
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /var/qmail/supervise/qmail-send
echo "* Restarting qmail-smtpd."
svc -u /var/qmail/supervise/qmail-smtpd
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp*
echo "Reloaded /etc/tcp.smtp."
;;
help)
cat <

Bu dosyanın haklarını değiştirin:

# chmod 700 /usr/sbin/qmail

Daha sonra daemontools servis dizinini oluşturun:

# mkdir /var/qmail/supervise
# mkdir /var/qmail/supervise/qmail-send
# chmod +t /var/qmail/supervise/qmail-send
# mkdir /var/qmail/supervise/qmail-send/log
# mkdir /var/qmail/supervise/qmail-smtpd
# chmod +t /var/qmail/supervise/qmail-smtpd
# mkdir /var/qmail/supervise/qmail-smtpd/log
# mkdir /var/log/qmail
# mkdir /var/log/qmail/qmail-send
# mkdir /var/log/qmail/qmail-smtpd
# chown qmaill /var/log/qmail
# chown qmaill /var/log/qmail/*

Sonra /var/qmail/supervise/qmail-send/run dosyasına aşağıdakileri yazın:

#!/bin/sh
exec /var/qmail/rc

/var/qmail/supervise/qmail-send/log/run dosyasına aşağıdakileri yazın:

#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 /var/log/qmail/qmail-send

/var/qmail/supervise/qmail-smtpd/run dosyasına aşağıdakileri yazın:

#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 2000000 \
 /usr/local/bin/tcpserver -H -R -v -p -x /etc/tcp.smtp.cdb \
 -u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

/var/qmail/supervise/qmail-smtpd/log/run dosyasına aşağıdakileri yazın:

#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 /var/log/qmail/qmail-smtpd

şimdi bu dosyaların haklarını değiştirin:

# chmod 755 /var/qmail/supervise/qmail-send/run
# chmod 755 /var/qmail/supervise/qmail-send/log/run
# chmod 755 /var/qmail/supervise/qmail-smtpd/run
# chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

İstediğimiz bilgisayarlara smtp relay izni vermek için aşağıdaki komutlar kullanılacak:

loopback’e izin vermek için:

#echo '127.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp

mail sunucunun hizmet vereceği IP uzayına izin vermek için (”192.168.131.” yerine kendi network adresinizi yazın):

# echo '192.168.131.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp

Eğer mail sunucusu bu IP uzayının içinde değilse ona da izin vermek için (160.75.76.61 yerine kendi sunucunuzun IP sini girin):

# echo '160.75.76.61:allow,RELAYCLIENT=""' >> /etc/tcp.smtp

Şimdi bu kuralları aktif hale getirmek için:

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

Yeni bir IP eklemek/silmek istediğinizde yukarıdaki komutu tekrar vermeniz gerekir.

Bazı Konfigürasyon Dosyaları:

/var/qmail/control dizininde qmail’in konfigürasyon dosyaları bulunur. Bu dosyalar ‘config’ ya da ‘config-fast’ komutunu çalıştırdığınız zaman oluşturulmuşlardır. Şimdi bunların en önemlilerine göz atalım:

me -- Bu dosyanın içinde qmail'in kurulu olduğu makinanın full hostname'i yazar (ör: haluk.eh.edu.tr).
rcpthosts -- Qmail, bu dosyada yazılı olan domain'ler için mail kabul eder.
locals -- Bu dosya 'local' olan host'ları içerir. Eğer örneğin makinanızdaki eli kullanıcısının
		eli@eh.edu.tr'ye gelen mailleri almasını istiyorsanız bu dosyanın içine eh.edu.tr yazmalısınız.

qmail’i Başlatma

şimdi qmail’i başlatmaya hazırız.svscan zaten çalşıtığından yapacağımız tek şey /service/ dizininden /var/qmail/supervise daki kontrol dizinlerine linkler yaratmaktır.

# ln -s /var/qmail/supervise/* /service/

qmail’in çalıştığını test etmek için aşağıdaki komutu verebilirsiniz:

# ps auxww | grep qmail

POP3 Server Kurulumu

Bu kurulumda /etc/passwd den pop3 authentication sağlayan checkpassword programını kullanacaksınız.

İlk olarak qmail-pop3.sh adında bir dosya yaratın ve içine aşağıdakileri yazın (haluk.eh.edu.tr yerine kendi host name’inizi yazın):

#!/bin/sh
tcpserver 0 pop3 /var/qmail/bin/qmail-popup haluk.eh.edu.tr \
/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &

Daha sonra bu dosyanın haklarını değiştirin ve ardından çalıştırın:

# chmod 755 qmail-pop3.sh
#./qmail-pop3.sh

pop3 ün açlışta çalışmasını sağlamak için sisteminize göre işlemler yapacaksınız.

FreeBSD kullanıyorsanız qmail-pop3.sh dosyasını /etc/ dizinine kopyalayıp /etc/rc.conf.local dosyasına aşağıdakini yazın:

./etc/qmail-pop3.sh

Redhat ya da Slackware Linux kullanıyorsanız qmail-pop3.sh dosyasını /etc/ dizinine kopyalayıp /etc/rc.d/rc.local dosyasına aşağıdakini yazın:

./etc/qmail-pop3.sh

Hepsi bu kadar.


Kaynaklar

qmail HOWTO v2:
http:/qmail/qmail-howto.html
Türkçe Doküman (Yazar: İsmail Yenigül):
http://yenigul.net/documents/qmail.html
Life with qmail:
http://www.lifewithqmail.org/lwq.html