Qmail mi Postfix mi diyenler için eski bir araştırma olsa da veriler bugunkü versiyonlarda da aşağı yukarı aynı .
Category: Qmail
Qmail Hizmetini Net-SNMP ile İzleme
Qmail Hizmetini Net-SNMP ile İzleme
Qmail üzerindenki mail trafiğini MRTG PRTG gibi snmp analiz programlarında izlemek istiyorsanız aşağıdaki yolu takip etmeniz gerekicek. Qmail’de ne olup bittiğinden haberdar olmak için gayet kullanışlı ve kolay bir yöntem .
Freebsd kullananlar için ;
1- (Net-Snmp Kurulu değilse)
Net – Snmp Kurulumu
Port ağacından net snmp kurmak için
# cd /usr/ports/net-mgmt/net-snmp
# make install clean
Bizim burada yapacağımız işlem için net-snmp paketini default ayarlarla kurmak yeterli olacaktır.
Net-snmp kurulumu bittikten sonra gelelim snmp konfigürasyonunu yapmaya
# snmpconf –i
Snmpd.conf dosyasını düzenlemek için 1 deyip devam ediyoruz .
Gelen menüde snmp erişim ayarları için 2 deyip geçiyoruz
Gelen menüde bize snmp hangi versiyonu için community oluşturacağımızı soruyor. Burada kullandığınız snmp analiz programının desteklediği versiyona göre hareket edebilirsiniz . Genelde desteklenen v1 ve v2 dir . Bu menüde 4 deyip ilerliyoruz.
Gelen ekranda community name isteniyor . Community name olarak kirn deyip ilerliyorum ve diğer iki aşama için default değerler bırakıyorum .
Snmp tarafındaki ayarlarımızı bitirdik bu sihirbazda yaptığımız değişiklikleri kaydetip çıkmak için finished deyip ana menüye döndükten sonra quit deyip çıkıyoruz.
Ve bize snmpd.conf dosyasını nerede oluşturduğunun bilgisini veriyor.
Snmp konfigürasyonunda bizim için gerekli olan aşamaları tamamladık . Şimdi Qmail için gerekli eklentiyi indirelim.
2- Qmail Mrtg Kurulumu
# fetch http://www.inter7.com/qmailmrtg7/qmailmrtg7-4.2.tar.gz
# tar –zxvf qmailmrtg7-4.2.tar.gz
# cd qmailmrtg7-4.2
# make
# make install
Qmail mrtg eklentisi kuruldu.
Aşağıdaki bilgileri snmpd.conf dosyasının en alt satırına eklememiz gerekiyor.
# ee /usr/local/share/snmp/snmpd.conf
extend qmail-message-status /usr/local/bin/qmailmrtg7 s /var/log/qmail
extend qmail-bytes-transfer /usr/local/bin/qmailmrtg7 b /var/log/qmail
extend qmail-smtp-concurrency /usr/local/bin/qmailmrtg7 t /var/log/smtpd
extend qmail-smtp-sessions /usr/local/bin/qmailmrtg7 a /var/log/smtpd
extend qmail-pop3-concurrency /usr/local/bin/qmailmrtg7 t /var/log/pop3d
extend qmail-pop3-sessions /usr/local/bin/qmailmrtg7 a /var/log/pop3d
extend qmail-queue /usr/local/bin/qmailmrtg7 q /var/qmail/queue
extend qmail-messages /usr/local/bin/qmailmrtg7 m /var/log/qmail
extend qmail-concurrency /usr/local/bin/qmailmrtg7 c /var/log/qmail
extend qmail-virus /usr/local/bin/qmailmrtg7 C /var/log/clamd
extend qmail-spam /usr/local/bin/qmailmrtg7 S /var/log/spamd
extend dnscache /usr/local/bin/dnscache-stats
4-) Kullanacağınız SNMP destekleyen izleme programını aşağıdaki SNMP MIB kodlarını girmeniz yeterli olacaktır.
QMail Kuyruk Sayısı
.1.3.6.1.4.1.8072.1.3.2.4.1.2.11.113.109.97.105.108.45.113.117.101.117.101.1
QMail Açılmamış Kuyruk Sayısı
.1.3.6.1.4.1.8072.1.3.2.4.1.2.11.113.109.97.105.108.45.113.117.101.117.101.2
QMail SMTPd Bağlantı Sayısı
.1.3.6.1.4.1.8072.1.3.2.4.1.2.22.113.109.97.105.108.45.115.109.116.112.45.99.111.110.99.117.114.114.101.110.99.121.1
Ve PRTG konsolunda bu şekilde görüyoruz ,
Qmail Relay Açma veya Kapama
Qmail kurulumundan sonra default olarak gelen tcp.smtp değerlerine göre qmail üzerinden local’den dahi olsa mail atamıyoruz. Ve bunun için tcp.smtp dosyasının içindeki Relay ayarlarını kontrol etmemiz gerekiyor.
# ee /etc/tcp.smtp
127.:allow,RELAYCLIENT=””
10.10.10.10:allow,RELAYCLIENT=””
10.10.20.:allow,RELAYCLIENT=””
Bu şekilde düzenleyip kaydettikten sonra sadece 10.10.10.10 nolu ipden ve 10.10.20.0 networkünden gelen istekler qmail server üzerinden geçebilecek .
Tabiki qmaili smtp auth olarak calistirmak daha garantili.
Qmail log dosyalarını okunabilir hale getirmek
Qmail log dosyalarını okunabilir hale getirmek
/var/log/qmail/ altında bulunan log dosyaları üzerinde çalışılmıştır.Bu dizin sizde başka bir yerde olabilir.
qmail loglarının bulunduğu dizinde “@” işareti ile başlayan (@400000004359384d36cf0b44.s) dosyalar ve current isimli dosya bulunmaktadır. Bu dosyaların içinde de aynı şekilde başlayan satırlar bulunmaktadır. Bunlar TAI64N formatında 16’lı sayı sisteminin rakamlarından oluşan zaman bilgisidir.
İlk 16 basamak 1.1.1970 yılı başından şu ana kadar geçen saniyeyi, sonraki 8 basamak ise nanosaniye bilgisini göstermektedir. Bu formatı bildiğimiz tarih formatına çevirmek için “tai64nlocal” komutu yeterlidir.
Örnek:
# tail current
@40000000435f391021516564 info msg 441674: bytes 5624 from qp 29263 uid 0
@40000000435f391023d37494 starting delivery 230469: msg 441674 to local deu.edu.tr-xxxxxxx@deu.edu.tr
@40000000435f391023d491bc status: local 1/120 remote 15/120
@40000000435f39102aa876ac new msg 441675
@40000000435f39102aaad424 info msg 441675: bytes 5851 from qp 29273 uid 0
@40000000435f39102da8fcdc starting delivery 230470: msg 441675 to remote xxxxxxxx@enkapower.com
@40000000435f39102da923ec status: local 1/120 remote 16/120
@40000000435f3910349328ec delivery 230469: success: did_0+0+4/
@40000000435f391034982a2c status: local 0/120 remote 16/120
@40000000435f391034a1c334 end msg 441674
# tail current|tai64nlocal
2005-10-26 11:06:30.558982500 info msg 441674: bytes 5624 from qp 29263 uid 0
2005-10-26 11:06:30.601060500 starting delivery 230469: msg 441674 to local deu.edu.tr-xxxxxxx@deu.edu.tr
2005-10-26 11:06:30.601133500 status: local 1/120 remote 15/120
2005-10-26 11:06:30.715683500 new msg 441675
2005-10-26 11:06:30.715838500 info msg 441675: bytes 5851 from qp 29273 uid 0
2005-10-26 11:06:30.766049500 starting delivery 230470: msg 441675 to remote xxxxxxx@enkapower.com
2005-10-26 11:06:30.766059500 status: local 1/120 remote 16/120
2005-10-26 11:06:30.882059500 delivery 230469: success: did_0+0+4/
2005-10-26 11:06:30.882387500 status: local 0/120 remote 16/120
2005-10-26 11:06:30.883016500 end msg 441674
bash-2.03#
Qmail – DKIM ve Domainkeys imzalaması
Gönderdiğiniz maillerin gerçekten sizin tarafınızdan gönderildiğini ispat etmeye yönelik bir kimlik doğrulama metodu olan DKIM konusuna önceki bir yazımdadeğinmiş ve qmail sunucularda giden maillerin DKIM (DomainKeys Identified Mail) ile imzalanmasının nasıl sağlanabileceğini anlatmıştım. Özellikle toplu mail gönderileri yapıyorsanız maillerinize mutlaka uygulanması gereken DKIM bildiğiniz gibi Domainkeys denilen bir diğer kimlik doğrulama metodunun geliştirilmiş ve yaygın olarak kullanılan versiyonudur. |
DKIM ile DomainKeys aynı şeyi amaçlayıp aynı teknolojiyi kullanıyor olsalar ve sadece DKIM kullanmak yeterli gibi görünse de gönderdiğiniz mailleri hem DKIM hem de Domainkeys ile imzalamak elbette daha iyi olacaktır. Zira bazı sistemlerde sadece DKIM doğrulaması yapılırken bazılarında sadece DomainKeys kullanılıyor olabilir. Bu nedenle her iki yöntemi kullanarak yapılan imzalama, iki yöntemden sadece birini kullanan alıcı sistemlerle de iyi geçinmek anlamına gelir. Yazının devamında, daha önceki yazıma ek olarak qmail sistemlerde giden maillerin DKIM’in yanı sıraDomainKeys kullanılarak da imzalanmasından bahsedeceğim.
DomainKeys ve DKIM
Giriş bölümünde de değindiğim gibi DomainKeys ve DKIM birbirleri ile aynı mantıkta çalışıyor ve çok benzer metodları kullanıyorlar, daha önceki yazımda DKIM’in ne olduğuna ve çalışma mantığına uzun uzun değindiğim için bu yazıda DKIM nedir, DomainKeys nedir gibi konulara tekrar değinmeyeceğim, bu konularda bilgi almak için http://www.syslogs.org/qmail-giden-postalar-icin-dkim-implementasyonu/ linkindeki ilgili yazıya göz atabilirsiniz.
Çalışma Mantığı
qmail sistemlerde DKIM ve DomainKeys ile imzalama işlemi, giden maillerin gönderilmesinden sorumlu olan qmail-remote’un, imzalama işlemini yapacak olan bir wrapper script ile değiştirilmesi sayesinde yapılabilmektedir. İlgili script, uzaktaki sisteme gönderilmesi için qmail-remote’a verilmek istenen mail’i alır, DKIM için libdkim kütüphanesi ile birlikte gelen libdkimtest ve DomainKeys için de libdomainkeyskütüphanesi ile gelen dktest isimli programcıktan yararlanarak ve özel anahtarınızı kullanarak imzalama işlemini yaptıktan sonra teslim işlemi için gerçek qmail-remote verir. Yazının devamında, adım adım libdkimtest ve dktest’in kurulmasından, openSSL kullanarak private key ve (dns txt recordu olarak yayınlanacak) public key’in oluşturulmasından son olarak da qmail-remote’un imzalama işlemini yapacak wrapper script ile değiştirilmesinden bahsedeceğim.
Kurulum
libdkimtest ve dktest portable uygulamalar olduğu için uzun uzadıya kurulum prosedürleri bulunmuyor. İlgili paketleri download edip make işlemi yaptıktan sonra oluşan dosyaları sistemin binary dizinine atmak yeterli oluyor. Ben qmail’i FreeBSD sistemler üzerinde çalıştırıyorum. Dolayısı ile bu bölümde FreeBSD üzerine kurulumdan bahsedeceğim. Ancak kurulum herhangi bir linux dağıtımı için de pek farklı değildir. Dolayısı ile aynı yönergeler ile Linux’lar için de kurulum yapabilirsiniz.
Libdkim
Aslında libdkim http://libdkim.sourceforge.net/ adresinde bulunuyor ancak ben http://patchlog.com/security/qmail-and-dkim/ adresinde bulunan ve kütüphanenin Linux sistemler altında derlenebilmesi ve bizim wrapper scriptimizin de kullanacağı bir takım extra özellik içeren patch’li bir versiyonunu kullanıyorum.
Şimdi bu versiyonu sisteme kuralım:
FreeBSD’ler altında, Libdkim’i derlemek için gmake kullanmak gerekiyor. Bu nedenle öncesinde sisteminizde yüklü olması gerekir. Kontrol etmek için aşağıdaki şekilde pkg_info komutundan yararlanabilirsiniz:
Komut
# pkg_info |grep gmake
Eğer yüklü ise sorun yok, ancak değilse kurmanız gerekir. gmake, port ağacında /usr/ports/devel/gmake dizininde bulunuyor. Dolayısı ile port ağacınızı güncelledikten sonra aşağıdaki şekilde kurulum yapabilirsiniz.
Komut
# cd /usr/ports/devel/gmake/
# make install clean
Sisteminizde port ağacı yoksa, “pkg_add -r gmake” komutu ile yüklemeniz de mümkün. Gmake kurulumundan sonra, derleme işlemine geçebilirsiniz. Ben, derleme vs işlemleri için çalışma dizini olarak /usr/local/src dizinini kullanıyorum. Şimdi ilgili çalışma dizinine girip libdkim’in yukarıda bahsedilen patchli versiyonunu indirelim
Komut
# cd /usr/local/src
Paketi açalım ve gmake ile derleme işlemini yapalım.
Komut
# tar xvfz libdkim-1.0.19-patched.tgz
# cd libdkim-1.0.19-patched/src/
# gmake
Derleme işleminden sonra src dizininde libdkimtest isimli binary dosyasını görebilirsiniz. Bu binary dosyasını /usr/local/bin dizinine kopyalıyoruz.
Komut
# cp libdkimtest /usr/local/bin/
libdkimtest dosyası herkes tarafından çalıştırılabilir olmalıdır:
Komut
# chown root:wheel /usr/local/bin/libdkimtest
# chmod 755 /usr/local/bin/libdkimtest
Libdkim kurulumu bu kadar. libdkimtest komutunu vermeniz ve aşağıdaki gibi bir çıktı almanız gerekir.
Çıktı
# libdkimtest
dkimlibtest: can’t open private key file test.pem
Yukarıdaki çıktıyı alıyorsanız, (özel anahtar dosyasını bulamadığı için uyarı veriyor olsa da) libdkimtest sorunsuz çalışıyor demektir.
Şimdi de libdomainkeys’in kurulumunu yapalım.
Libdomainkeys
Libdomainkeys http://sourceforge.net/projects/domainkeys/ adresinden download edilebilmektedir. /usr/local/src dizinine geçelim ve paketi indirelim.
Komut
# cd /usr/local/src/
# fetch http://downloads.sourceforge.net/project/domainkeys/libdomainkeys/0.69/libdomainkeys-0.69.tar.gz
Şimdi de paketi açıp make edelim.
Komut
# tar xvf libdomainkeys-0.69.tar.gz
# cd libdomainkeys-0.69
# make
Make işlemi sonucu oluşan dktest binary’sini /usr/local/bin dizinine taşıyıp, gerekli izinleri verelim:
Komut
# cp dktest /usr/local/bin/
# chown root:wheel /usr/local/bin/dktest
# chmod 755 /usr/local/bin/dktest
libdomainkeys kurulumu da bu kadar. dktest komutunu verdiğiniz zaman aşağıdaki gibi usage bilgisini içeren bir çıktı almanız gerekir.
Çıktı
# dktest
dktest: [-f] [-b#] [-c nofws|simple] [-v|-s selector] [-h] [-t#] [-r] [-T]
Durum sizde de yukarıdaki şekildeyse dktest çalışıyor demektir.
Gerekli programcıkların kurulmasından sonra, OpenSSL kullanarak private ve public key’lerin oluşturulması ve txt recordu olarak dns’e girilecek kayıtların düzenlenmesi bölümüne geçiyoruz.
Private ve Public Keylerin Oluşturulması
Key’lerle ilgili teorik bilgiye daha önceki yazımda değindiğim için burda uzun uzadıya tekrarlamayacağım, detay ve teorik bilgi isterseniz, daha önceki yazımın “OpenSSL Private ve Public Key Oluşturmak” bölümüne bakabilirsiniz. İmzalama işleminde kullanılacak private key ve alıcı tarafında doğrulama işlemi için kullanılacak (dns sorgusu ile elde edilecek) public key’i oluşturmak için OpenSSL kullanılmaktadır. Keylerin oluşturulması işlemi manual olarak yapılabilir ancak http://www.syslogs.org/downloads/domainkey * adresinde bulunan shell script ile daha kolay bir şekilde yapmak mümkün. İlgili script, verdiğiniz alan adı ve selector için private ve public key’leri /etc/domainkeys dizini altında oluşturmakta ve dns sunucusuna girilmesi gereken txt kaydını da vermektedir. Bu yüzden bu aşamada scripti kullanmak daha yerinde olacaktır.
* Scriptin orjinali http://www.backschues.net/backschues.net/know-how/qmail/domainkey adresinde bulunuyor. Ben scripte küçük bir değişiklik yaptım.
Şimdi shell scripti download edelim:
Kod
# cd /usr/local/src
Örnek olarak, syslogs.org domainini ve genel isimli selector’u kullanacağımızı düşünürsek scripti aşağıdaki şekilde çalıştırabiliriz:
Kod
# sh domainkey syslogs.org genel
Komutu verdiğiniz zaman, anahtarlar oluşturulup, /etc/domainkeys/ altında syslogs.org dizini altında konulacaktır ve aşağıdaki gibi bir çıktı verilecektir.
Çıktı
Generating RSA private key, 1024 bit long modulus
…..++++++
………………….++++++
e is 65537 (0x10001)
writing RSA key
TXT record for BIND:
genel._domainkey.syslogs.org. IN TXT “v=DKIM1\; k=rsa\; t=y\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDynTqLz+FyCuU4GM4h87Jg1tXd9AxDaK6Ix2HV9vByoCkY8uY0LRd/1XSZMSP2oyeABsdppAahts5whPayVjG83XDb80C3bGaJW8/XKYjUjfmtzwQ/5sivpTAjfsPCvt7LGaQnkAIO20FDCybksYWRobvit9aD8WJGvqOc9bpQCwIDAQAB”
Gördüğünüz gibi bind dns sunucuları için sisteme eklenmesi gereken txt recordu veriliyor. Yukarıdaki çıktıyı bir yere not edin, dns kaydı oluşturulması ile ilgil bölümde kullanacağız.
Ayrıca /etc/domainkeys dizinine bakarsanız içerisinde alanadi.com isminde bir dizin olduğunu görebilirsiniz. Bizim örneğimiz için dizinin içeriği şu şekilde olacaktır:
Çıktı
# ls -l /etc/domainkeys/syslogs.org/
total 6
lrwxr-xr-x 1 root wheel 45 Apr 26 23:30 default -> /etc/domainkeys/syslogs.org/rsa.private_genel
-rw——- 1 qmailr qmail 887 Apr 26 23:30 genel
-rw——- 1 qmailr qmail 887 Apr 26 23:30 rsa.private_genel
-rw——- 1 qmailr qmail 272 Apr 26 23:30 rsa.public_genel
-rw——- 1 qmailr qmail 6 Apr 26 23:30 selector
Dikkat ederseniz dosyaların sahibi qmailr ve grubu qmail. Ayrıca bu dosyaları sadece qmailr okuyabiliyor. Gerekli dosyalar oluşturulduğuna göre, bundan sonra izlenmesi gereken adım, public key’i yayınlamak için DNS sunucusunda txt kayıtlarını oluşturmaktır.
Public Key İçin DNS Kaydı Oluşturulması
Bu bölümde de uzun uzadıya teorik detaylara değinmeyeceğim, detay almak isterseniz daha önceki yazımın “Public Key İçin DNS Kaydı Oluşturulması” bölümüne bakabilirsiniz.
DKIM ve Domainkeys, aynı dns kaydını kullanmakta olduğu için sadece bir txt kaydı oluşturmak hem dkim hem de domainkeys için yeterlidir.
Şimdi örneğimizde kullandığımız syslogs.org domaini için dkim/domainkey kayıtlarını oluşturalım.
Öncelikle, _domainkey.syslogs.org alt domaini için aşağıdaki txt kaydını dns sunucusuna ekliyoruz:
Çıktı
“t=y\;” “o=~”
Kullanılan switchlerin anlamları şu şekildedir:
t=y : Bu domain DKIM’i test mode’da kullandığını belirtir. Yani imzalı mailler ile imzasız mailler arasında teknik olarak ayırım yapılmaması söylenir.
o=~ : Buradaki tilda (~), bu domainden gönderilecek maillerin bazılarının imzalı bazılarının imzasız olabileceğini belirtir. Sonuç olarak imzasız mail göndermeniz durumunda sorun çıkmayacaktır.
Eğer (~) yerine (-) işareti kullanırsanız, bu domaine ait her mailin imzalı olması gerektiğini belirtmiş olursunuz.
Şimdi de genel._domainkey.syslogs.org için biraz önce not aldığımız txt kaydını giriyoruz:
Çıktı
“v=DKIM1\; k=rsa\; t=y\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDynTqLz+FyCuU4GM4h87Jg1tXd9AxDaK6Ix2HV9vByoCkY8uY0LRd/1XSZMSP2oyeABsdppAahts5whPayVjG83XDb80C3bGaJW8/XKYjUjfmtzwQ/5sivpTAjfsPCvt7LGaQnkAIO20FDCybksYWRobvit9aD8WJGvqOc9bpQCwIDAQAB”
Bu kayıt, bir önceki bölümde oluşturduğumuz public key’i barındırdığı için, gene aynı adımda oluşturulan private key ile imzalanan mailler için imza doğrulaması yapılabilmesine olanak sağlayacaktır. DNS kayıtlarınızı ekledikten sonra nslookup ile durumu doğrulayabilirsiniz:
Kod
# nslookup -q=txt genel._domainkey.syslogs.org
Çıktı şu şekilde olacaktır:
Çıktı
genel._domainkey.syslogs.org text = “v=DKIM1\; k=rsa\; t=y\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDynTqLz+FyCuU4GM4h87Jg1tXd9AxDaK6Ix2HV9vByoCkY8uY0LRd/1XSZMSP2oyeABsdppAahts5whPayVjG83XDb80C3bGaJW8/XKYjUjfmtzwQ/5sivpTAjfsPCvt7LGaQnkAIO20FDCybksYWRobvit9aD8WJGvqOc9bpQCwIDAQAB”
DNS kayıtlarınız sorunsuz olarak çalışıyorsa, bir sonraki bölüme geçebilirsiniz.
qmail`in Yapılandırılması
Şimdi ki adımda qmail-remote’u imzalama işlemini yapacak wrapper script ile değiştireceğiz.
Bunun için öncelikle qmail’i stop edelim.
Komut
# qmailctl stop
Daha sonra da /var/qmail/bin dizinine geçip qmail-remote’un adını qmail-remore.orig olarak değiştiriyoruz.
Komut
# cd /var/qmail/bin
# mv qmail-remote qmail-remote.orig
Şimdi de, yeni bir qmail-remote dosyası açıyoruz:
Komut
# vi /var/qmail/bin/qmail-remote
ve aşağdaki satırları bu dosyaya ekliyoruz :
FreeBSD kullanıyorsanız:
Çıktı
#!/usr/local/bin/bash
# version 7
PATH=/bin:/usr/bin:/usr/local/bin
DOMAIN=${2##*@}
[ “$DKREMOTE” ] || DKREMOTE=”/var/qmail/bin/qmail-remote.orig”
[ “$SELECTOR” ] || SELECTOR=$(cat “/etc/domainkeys/$DOMAIN/selector”)
[ “$DKSIGN” ] || DKSIGN=”/etc/domainkeys/$DOMAIN/rsa.private_$SELECTOR”
if [ -r “$DKSIGN” ] ; then
tmp=`mktemp -t dk.sign.XXXXXXXXXXXXXXXXXXX`
tmp2=`mktemp -t dk2.sign.XXXXXXXXXXXXXXXXXXX`
tmp3=`mktemp -t dk3.sign.XXXXXXXXXXXXXXXXXXX`
tmp4=`mktemp -t dk4.sign.XXXXXXXXXXXXXXXXXXX`
/bin/cat – >”$tmp”
/usr/local/bin/dktest -s “$DKSIGN” -c nofws d=”$DOMAIN” -h <“$tmp” >> “$tmp2” 2>&1
(/bin/cat “$tmp2” “$tmp” |tr -d “\15”) > “$tmp3″
/usr/local/bin/libdkimtest -d”$DOMAIN” -y”$SELECTOR” -z1 -s “$tmp3” “$DKSIGN” “$tmp4” 2>/dev/null
(/bin/cat “$tmp4” |tr -d “\15”) | “$DKREMOTE” “$@”
retval=$?
rm “$tmp” “$tmp2” “$tmp3” “$tmp4”
exit $retval
else
# No signature added
exec “$DKREMOTE” “$@”
fi
Linux kullanıyorsanız:
Çıktı
#!/bin/bash
# version 7
PATH=/bin:/usr/bin:/usr/local/bin
DOMAIN=${2##*@}
[ “$DKREMOTE” ] || DKREMOTE=”/var/qmail/bin/qmail-remote.orig”
[ “$SELECTOR” ] || SELECTOR=$(cat “/etc/domainkeys/$DOMAIN/selector”)
[ “$DKSIGN” ] || DKSIGN=”/etc/domainkeys/$DOMAIN/rsa.private_$SELECTOR”
if [ -r “$DKSIGN” ] ; then
tmp=`mktemp -t dk.sign.XXXXXXXXXXXXXXXXXXX`
tmp2=`mktemp -t dk2.sign.XXXXXXXXXXXXXXXXXXX`
tmp3=`mktemp -t dk3.sign.XXXXXXXXXXXXXXXXXXX`
tmp4=`mktemp -t dk4.sign.XXXXXXXXXXXXXXXXXXX`
/bin/cat – >”$tmp”
/usr/local/bin/dktest -s “$DKSIGN” -c nofws d=”$DOMAIN” -h <“$tmp” >> “$tmp2” 2>&1
(/bin/cat “$tmp2” “$tmp” |tr -d “\15”) > “$tmp3″
/usr/local/bin/libdkimtest -d”$DOMAIN” -y”$SELECTOR” -z1 -s “$tmp3” “$DKSIGN” “$tmp4” 2>/dev/null
(/bin/cat “$tmp4” |tr -d “\15”) | “$DKREMOTE” “$@”
retval=$?
rm “$tmp” “$tmp2” “$tmp3” “$tmp4”
exit $retval
else
# No signature added
exec “$DKREMOTE” “$@”
fi
Not: Script bash kullanmak üzere düzenlenmiştir, bu nedenle sisteminizde bash’ın kurulu olması gerekir.
Şimdi de qmail-remote dosyasına gerekli izinleri veriyoruz.
Komut
# chown root:qmail /var/qmail/bin/qmail-remote
# chmod 755 /var/qmail/bin/qmail-remote
Qmail’in yapılandırılması işlemi bundan ibaret. Şimdi qmail’i yeniden başlatalım.
Komut
# qmailctl start
Herşey yolunda gittiyse artık qmail giden mailler için hem dkim hem de domainkeys ile imzalama işlemi yapacaktır. Durumu test etmek için, sunucunuzdan herhangi bir yahaoo adresine gönderim yapabilirsiniz. Yahoo hem dkim hem de domainkeys doğrulaması yaptığı için imzalama işlemlerinin doğruluğunu net olarak kontrol edebilirsiniz.
Düzgün çalışan bir qmail sunucudan, yahoo’ya gönderilen bir mailin header’ında dkim ve domainkeys ile ilgili şu ibareler bulunacaktır.
Çıktı
Authentication-Results: mta1020.mail.sk1.yahoo.com from=syslogs.org; domainkeys=pass (ok); from=syslogs.org; dkim=pass (ok)
Görüldüğü üzere kimlik doğrulama hem domainkeys hem de dkim için pass etmiş durumda.
Konu ile ilgili daha fazla bilgi almak için aşağıdaki adresleri de inceleyebilirsiniz:
Kaynaklar
http://www.syslogs.org/qmail-giden-maillerin-dkim-ve-domainkeys-ile-imzalanmasi/