Exim üzerine domainkeys kurulumu

Exim üzerine domainkeys kurulumu

domainkey özellikle yahoo tarafından takip edilen, gmailinde gizli gizli takip ettiği, fakat henüz hayata geçirmediği bir spam tespit yöntemidir.

Birçoğunuzun bildiği gibi birçok email servis sağlayıcısı SPF koruması yapmaktadır. Web sitesi için girdiğimiz “bu site bu ip adresinden mail gönderir, farklı ipden mail alırsan bu spam olabilir” şeklinde girdiğimiz kayıda SPF kaydı diyoruz. Domainkeys uygulaması ise çok farklıdır. Her web sitesi için SSL aracılığı ile özel bir kod üretilir ve bu kod DNS kaydı olarak tanımlanır. Gönderilen her mail, bu kod ile işaretlenir. Maili alan servis sağlayıcı, email headerında yer alan domainkey ile, sitenin dnsinde girilmiş olan domainkey kaydını kıyaslar, eğer kayıtlar biribirine uyuyor ise emaili kabul eder. Bu uygulamayı yahooda inboxa mail gönderme problemi yaşayan siteler için yapabiliriz. Büyük oranda başarı sağlanacaktır.

Kurulum ileri derecede linux bilgisi gerektirmektedir. Bu nedenle kendinize güvenmiyor iseniz, çalışan sisteminizi bozmayın :)

Domain Key Kurulumu

cd /usr/local/src

Öncelikle libdomainskeys kurulumunu yapalım;

wget http://mesh.dl.sourceforge.net/sourceforge/domainkeys/libdomainkeys-0.69.tar.gz
tar -zxvf libdomainkeys-0.69.tar.gz
cd libdomainkeys-0.69
make
echo “-lresolv” > dns.lib
make

Kurulum bittikten sonra;

cd..
mv libdomainkeys-0.69 libdomainkeys

Libdomainkeys kurulumu bitti şimdi eximi domainkeys desteği ile compile edelim;

wget ftp://ftp.exim.org/pub/exim/exim4/exim-4.69.tar.gz
tar -zxvf exim-4.69.tar.gz
cd exim-4.69/Local
wget www.directadmin.com/Makefile
perl -pi -e ’s/^EXTRALIBS/#EXTRALIBS/’ Makefile

Makefile dosyasına domainkeys desteğini eklemek için;

EXPERIMENTAL_DOMAINKEYS=yes
CFLAGS  += -I/usr/local/src/libdomainkeys
LDFLAGS += -ldomainkeys -L/usr/local/src/libdomainkeys

HAVE_ICONV=yes
CFLAGS=-O -I/usr/local/include
EXTRALIBS_EXIM=-L/usr/local/lib -liconv
HAVE_ICONV=yes
CFLAGS=-O -I/usr/local/include
EXTRALIBS_EXIM=-L/usr/local/lib -liconv

LOOKUP_LIBS=-L/usr/lib/mysql -L/usr/lib/ -lssl

Makefile dosyasını kaydetip çıkıyoruz.

Eximi compile etmeye başlayalım;

cd ..
make
make install

compile sırasında 2 hata alabilirsiniz;

1) liconv kütüphanesini bulamayabilir;

cd /usr/local/directadmin/custombuild
./build iconv

2) db.h hatası verebilir

yum -y install db4-devel -> centos
apt-get install libdb4.4-dev -> directadmin

3) /usr/bin/ld: cannot find -lperl

apt-get install libperl-dev

Debian 5.0 ise;

wget http://files.directadmin.com/services/debian_5.0/da_exim-4.69.deb
dpkg -i da_exim-4.69.deb

Exim compile olduktan sonra sistemi compile edilmiş dosyaları tanıtalım;

cp -f /usr/sbin/exim-4.69-X /usr/sbin/exim  ( her compile işleminden sonra -X gibi bir sayı verilir. dosyanın en son compile edilen exime ait rakamı içerdiğine emin olalım, exim-4.69-5 demek 5. compile dan sonra oluşan dosya demek)
chmod 4755 /usr/sbin/exim

Exim.conf dosyasına domain key değişlenlerini ekleyerek restart edelim;

nano /etc/exim.conf

Bul:

remote_smtp:
driver = smtp

Değiştir:

remote_smtp:
driver = smtp
dk_selector = myselector
dk_private_key = /usr/local/src/dk/rsa.private
dk_canon = nofws

Kaydet ve /etc/init.d/exim restart ile hata verip vermediğini kontrol et.

nano /etc/bind/named.conf.options (options yoksa named.confa ekleyebiliriz, zaten options named.conf a include ediliyor)

Bu satırı ekliyoruz: check-names master ignore;

Kaydetip çıkıyoruz ve /etc/init.d/named restart

Domain keyini oluşturuyoruz;

cd /usr/local/src
mkdir dk; chown mail dk
openssl genrsa -out rsa.private 768
openssl rsa -in rsa.private -out rsa.public -pubout -outform PEM

Burada rsa.private dosyasının tamamlayıcısı olarak rsa.public keyini oluşturuyoruz. DNS kayıtlarına rsa.public keyini ekliycez.

Oluşturduğumuz key için DNS kaydi giriyoruz;

DNS yönetim menüsüne girdikten sonra 2 ayrı kayıt girmemiz gerekmektedir;

1) _domainkey için TXT kaydı giriyoruz, t=y test modu demektir ve bu şekilde kalmalıdır, o=- sadece bu domaine özel kayıt demektir.

1. kayıt: _domainkey.oyuncakkepce.com.    TXT     “t=y; o=-”


2) myselector._domainkey için TXT kaydı giriyoruz, önemli olan nokta p= kısmına doğru keyi kopyalamaktır;

nano /usr/local/src/dk/rsa.public

—–BEGIN PUBLIC KEY—–
MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAOcABVeOelBOPlhdUEvGlCGsXiQ3NzDM
6USi5t/NpMAfnmc9fR0LzS6USDhclAPCBbH+QM8UYUPxlFHFEsdhM+FtOXN9RM7j
DX3ZHtD4vLSscqtL3y54qIMK9yz/G8iZlwIDAQAB
—–END PUBLIC KEY—–

Kayıt aşağıdaki gibi olmalıdır;

2. kayıt: myselector._domainkey.oyuncakkepce.com. TXT     “k=rsa; t=y; p=MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAOcABVeOelBOPlhdUEvGlCGsXiQ3NzDM6USi5t/NpMAfnmc9fR0LzS6USDhclAPCBbH+QM8UYUPxlFHFEsdhM+FtOXN9RM7jDX3ZHtD4vLSscqtL3y54qIMK9yz/G8iZlwIDAQAB”

DNS ve Exim servisini restart ettikten sonra kurulumu bitiriyoruz ve test aşamasına geçiyoruz;;

/etc/init.d/exim restart

/etc/init.d/named restart

Domain Key desteğini test edelim;

1) Öncelikle key ve selector testi yapıyoruz;

http://domainkeys.sourceforge.net/policycheck.html

Testing oyuncakkepce.com
New test
Policy TXT=t=y; o=-

This policy record appears valid.

Tag  Value  Explanation
o  -  Domain signs *ALL* email
t  y  Domain is in test mode

2) Selector testi yapıyoruz;

http://domainkeys.sourceforge.net/selectorcheck.html

myselector._domainkey.oyuncakkepce.com
New test
TXT Record length = 182

k=rsa; t=y; p=MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAOcABVeOelBOPlhdUEvGlCGsXiQ3NzDM6U

…Si5t/NpMAfnmc9fR0LzS6USDhclAPCBbH+QM8UYUPxlFHFEsdhM+FtOXN9RM7jDX3ZHtD4vLSscqtL3y

…54qIMK9yz/G8iZlwIDAQAB

This selector appears valid.

Tag  Value  Explanation
k  rsa  The public key algorithm used to verify the signature
p  MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAOcABVeOelBOPlhdUEvGlCGs…  Modulus Size=768 Exponent=65537
t  y  This Selector is in test mode

3) Robotlara mail göndererek test ediyoruz;

dkim-test@altn.com
sa-test@sendmail.net
check-auth@verifier.port25.com
dk@dk.crynwr.com
dktest@exhalus.net

Kayıtların doğru olması için bize aşağıdaki gibi email dönüşü olması gerekmektedir;

Summary of Results
==========================================================
SPF check:          pass
DomainKeys check:   pass
DKIM check:         neutral
Sender-ID check:    pass
SpamAssassin check: ham
domainkeys=pass header.from=info@oyuncakkepce.com (good)

About the Author