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)