30 Kasım 2013 Cumartesi

Özgür Web Teknoloji Günleri 2013

Geçtiğimiz hafta Yeditepe Üniversitesi'nde gerçekleşen 'Özgür Web Teknoloji Günleri' hakkında ben de birşeyler yazmak istedim.

Etkinliğe +Necdet Yücel ve +Ebru Akagunduz ile birlikte katıldık. ÇOMÜ'den daha çok öğrenci ile katılmak isterdik ama vize dönemi bitmemişti.

Bu sene etkinliğin genel konusu ölçeklenebilirlikti. Konuşmalar 3 salonda paralel olarak yapıldı. İlk gün birkaç sunum dinledim. Katılımcıların fazla olduğunu söyleyemeyeceğim.

Etkinliğin ikinci günü Ebru ile birlikte konuşma yaptık. Ebru, Yakından Eğitim'de geliştirdiği Couchbase Nagios eklentisinden bahsetti. Ben de staj dönemimde +Kaan Ozdincer ile üzerinde çalıştığımız Haproxy kitaplığından ve web uygulamasından bahsettim. 

İlk kez bir topluluk karşısına çıkıp birşeyler anlattım. İtiraf etmeliyim ki dışarıdan göründüğü kadar kolay değilmiş. Ne kadar heyecanlansam da benim için çok güzel bir deneyim oldu. Sonraki konuşmalarımda bu kadar heyecanlanmam sanırım :)

Etkinlikten sonra mezunlarla bolca zaman geçirdik. Benim için hem faydalı hem de çok eğlenceliydi.




3 Kasım 2013 Pazar

Qmail Kurulumu

Merhabalar, geçen yazımda biraz Qmail'den bahsetmiştim. Kurulumu bitirince nasıl olduğunu paylaşayım istedim.

Qmail'i kurmadan önce hostname(e-posta sunucu ismi) DNS sunucuda kayıtlı ve sorgulanabilir olmalı. Ayrıca bazı yazılımların kurulu olması gerekiyor.

ucspi-tcp: Tcp tetikleyicisidir. Gelen tcp isteklerini dinleyip, istekler için uygun programları çalışmaları için tetikler.

Yazılımı kurmak için önce buradan indirelim.

#gunzip ucspi-tcp-0.88.tar.gz
#tar -xf ucspi-tcp-0.88.tar
#cd  ucspi-tcp-0.88
#make setup check

!! Glibc'nin 2.3.1 ve daha üst versiyonunu kullanıyorsanız (ldd --version ile öğrenebilirsiniz) "#make setup check" demeden önce error.h dosyasında "extern int errno;" satırını "#include <errno.h>" diye değiştirmelisiniz. 

daemontools: Unix servis yönetim programıdır. Duran servis varsa 'run' betiği ile servisi yeniden başlatır. Multilog sistem günlüklerini tutar. Belirlenen buyutu aşarsa günlükleri arşivler. Bu yazılımı da kurmadan önce '/package' diye bir dizin oluşturalım.

#mkdir -p /package
#chmod 1755 /package

Erişim iznini  1755 ile "drwxr-xr-t" haline geldi. Burada 't' sticky bitin belirlendiğini gösteriyor. Bu sayede sadece dosya sahibi erişimde değişiklik yapabilir ve dosyayı silebilir.

Şimdi yazılımı  package dizinine indirip kuralım. 

#cd /package
#gunzip daemontools-0.76.tar.gz
#tar -xpf  daemontools-0.76.tar
#rm daemontools-0.76.tar
#cd admin/daemontools-0.76
#./package/install

Yine Glibc'nin 2.3.1 üstü versiyonunu kullanıyorsanız son komuttan önce "/package/admin/daemontools-0.76/src/error.h" dosyasında "extern int errno;" satırını "#include <errno.h>" diye değiştirmelisiniz.

Kurulumdan sonra daemontools çalışıyor mu diye bakmak istersek:

#ps aux| grep svscan

Qmail için /var/qmail dizinini oluşturalım.

#mkdir /var/qmail

Qmail çeşiti görevleri yürütmek için sistem kullanıcı ve gruplarına ihtiyaç duyar. Nedeni de qmail yazarı D.J.Bernstein'in sistem kütüphanelerine güvenmemesi.Derlemeden önce UID'ler tespit edilip program içine gömülür. Bu nedenle gerekli kullanıcı ve gruplar oluşturulmalı.

#groupadd nofiles
#useradd -g nofiles -d /var/qmail qmaild
#useradd -g nofiles -d /var/qmail/alias alias
#useradd -g nofiles -d /var/qmail qmaill
#useradd -g nofiles -d /var/qmail qmailp

#groupadd qmail
#useradd -g qmail -d /var/qmail qmailq
#useradd -g qmail -d /var/qmail qmailr
#useradd -g qmail -d /var/qmail qmails

Şimdi qmail'i indirip aşağıdaki komutları verelim.

#gunzip qmail-1.03.tar.gz
#tar -xf  qmail-1.03.tar
#cd qmail-1.03
#make setup check

Derlemeden sonra Qmail'i yapılandırmalıyız. Eğer DNS ayarları düzgün çalışıyorsa "#./config" ile yapılandırma başlatılır.

DNS geçici nedenlerle çalışmıyorsa host ismini bulamadığından olabilir.

#./config-fast host adı.alan adı

Şimdi de açılış betiklerini oluşturalım.

#vi /var/qmail/rc

#!/bin/sh
exec env - PATH="/var/pmail/bin:$PATH"  \
qmail-start "`cat /var/qmail/control/defaultdelivery`"

E-postanın nasıl dağıtılacağı da defaultdelivery dosyasından okunacak.

# echo ./Maildir/ > /var/qmail/control/defaultdelivery

rc dosyasının da izinlerini verelim.

#chmod 755 /var/qmail/rc

Qmail servisleri için supervise dizinleri ve günlük dizinleri oluşturalım.

#mkdir -p /var/qmail/supervise/qmail-send/log
#mkdir -p /var/qmail/supervise/qmail-smtpd/log
#mkdir -p /var/qmail/supervise/qmail-smtpd
#chown -R qmaill /var/log/qmail

Her biri için çalıştırma betikleri oluşturalım.

#vi /var/qmail/supervise/qmail-send/run

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

#vi /var/qmail/supervise/qmail-smtpd/log/run

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

#vi /var/qmail/supervise/qmail-smtpd/run

#!/bin/sh
QMAILDUID= `id -u qmaild`
NOFILESGID= `id -g qmaild`
MAXSMTPD= `cat /var/qmail/control/concurrencyincoming`
exec /usr/local/bin/softlimit -m 8000000 \
/usr/local/bin/tcpserver -v -H -R -l 0 -x \
/etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

concurrencyincoming, aynı anda tcp sunucusu tarafından kabul edilecek bağlantı sayısını belirler.

#echo 150 > /var/qmail/control/concurrencyincoming
#chmod 644 /var/qmail/control/concurrencyincoming

#vi /var/qmail/supervise/qmail-smtpd/log/run

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

Bu betiklere çalışma hakkı verelim.

#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

Daemontools tarafından çalıştırılsın istiyorsak /service dizinine link oluşturmalıyız.

#ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service

qmailctl betiği çalışıyorsa link oluşturduktan sonra qmail çalışacaktır. Çalışmıyorsa qmailctl başlatılır.

#qmailctl start

Sunucu kendi üstünden SMTP ile e-posta teslimine izin vermek için /etc/tcp.smtp'ye şu satırları ekleyelim.

#echo 127.:allow,RELAYCLIENT= >> /etc/tcp.smtp
#tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp </etc/tcp.smtp

Alias Tanımları:

Qmail kurulumunda en az 3 alias tanımlanmalı.
postmaster: Sistem yöneticisine yönlendirilmeli.
mailer-daemon: Geri dönen e-postalar için standart alıcı.
root: Sistem yöneticisine yönlendirilmeli.

#echo aybuke > /var/qmail/alias/.qmail-root
#echo aybuke > /var/qmail/alias/.qmail-postmaster
#echo aybuke > /var/qmail/alias/.qmail-mailer-daemon
#chmod 644 /var/qmail/alias/.*

#qmailctl start

#qmail stat (4 servis de başlamış olmalı)

Kullanıcı Hesabı Açma:

#groupadd personel
#useradd -g personel -d /home/personel/olric olric
#/var/qmail/bin/maildirmake /home/personel/olric/Maildir
#echo ./Maildir/ > /home/personel/olric/.qmail
#chown -Rolric:personel /home/personel/olric/Maildir
#chown -Rolric:personel /home/personel/olric/.qmail

Test etmek için "#/var/qmail/bin/qmail-inject" diyoruz.Burada yerel kullanıcıya da uzak bir sunucuya e-posta gönderimi yaplabilir.

Deneme takibi için de :
#tail -f /var/log/qmail/current komutunu kullanabiliriz.

Daha ayrıntılı bakmak isteyenler için: http://cr.yp.to/ adresini önerebilirim.
Ayrıca Türkçe kaynak için de benim de okuduğum İsmail Yenigül, Barış Şimşek ve Huzeyfe Önal'ın Qmail kitabını tavsiye ederim.

Kolay gelsin.