pasang dkim di qmail tanpa patch

1. install libdomainkeys. download dari sourceforge lalu

$ tar xzfv libdomainkeys-0.69.tar.gz
$ cd libdomainkeys-0.69
$ make

jika muncul error seperti berikut :

./libdomainkeys.a(dns_txt.o): In function `dns_text':
dns_txt.c:(.text+0x2d): undefined reference to `__res_query'
dns_txt.c:(.text+0xc0): undefined reference to `__dn_expand'
dns_txt.c:(.text+0x11e): undefined reference to `__dn_expand'
collect2: ld returned 1 exit status
make: *** [dktest] Error 1
solusinya :
$
echo -lresolv > dns.lib

lalu ulangi lagi proses diatas. kalo tidak ada error lanjut
$ su –
$ install -m 644 libdomainkeys.a /usr/local/lib/
$ install -m 644 domainkeys.h dktrace.h /usr/local/include/
$ install -m 755 dknewkey /usr/local/bin/
$ install -m 755 dktest /usr/local/bin/

2. install Mail::DKIM.  ada 2 cara yaitu melalui CPAN atau manual.

melalui CPAN :

$ perl -MCPAN -e shell

cpan> install Mail::DKIM

cara manual :

browse ke http://search.cpan.org lalu cari Mail::DKIM kemudian download lalu

$ tar xzfv Mail-DKIM-0.40.tar.gz
$ cd Mail-DKIM-0.40
$ perl Makefile.PL
$ make
$ make test
$ su –
$ make install

jika ada dependensi yang kurang ketika install Mail::DKIM, penuhi dengan cara manual untuk masing-masing dependensi hingga tidak ada komplain ketika install Mail::DKIM. Selanjutnya:

$ cd /usr/local/bin
$ wget http://www.memoryhole.net/qmail/dkimsign.pl
$ wget http://www.memoryhole.net/qmail/dkimverify.pl
$ chmod 755 dkimsign.pl
$ chmod 755 dkimverify.pl

3. bikin key pair dan seting DNS. untuk ini kita bisa minta bantuan dkimcore.
pertama, gunakan tool generate a dkim core key. ketik nama domain anda (misal: serverku.com) lalu klik generate.
catat selector yang berupa 10 digit angka (misal:1366597073).
copy link pada Download private key lalu

$ su –
$ mkdir -p /etc/domainkeys/serverku.com/
$ cd /etc/domainkeys/serverku.com/
$ wget yyy (ganti yyy dengan paste link yang tadi dicopy dari Download private key)
$ mv privatekey.txt 1366597073 (sesuaikan dengan selector yang tadi diperoleh diatas)
$ chown -R qmailq /etc/domainkeys
$ chgrp qmail 1366597073 (sesuaikan dengan selector yang tadi diperoleh diatas)
$ chmod 0640 1366597073 (sesuaikan dengan selector yang tadi diperoleh diatas)

selanjutnya seting DNS. Jika menggunakan Bind gunakan hasil dari tool generate a dkim core key bagian Bind 9 Format.
copy lalu
$ vi /var/named/ serverku.com.zone

setelah paste, hapus kata serverku setelah angka-angka selector sehingga hasilnya seperti berikut :

1366597073._domainkey.serverku.com. IN TXT (
“v=DKIM1;t=s;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYrSCbfKerv5o6lht41H5EU3cy”
“lnUfx7i+uPnjTOtV2im1u5cHW63PwMrisfwTE6MdMK9wrUVHQO+dt+n+bkUArRg+”
“5FNMoHtbPbwuVYM2/BiU9FZNoRqz/ct6WVV6O2FTHeAL4SuldeOC0X+UgS+cDUb5”
“sGtDeTF2p0Ar/iPqUwIDAQAB”)
simpan lalu keluar dari dari editor vi dan restart Bind. Demikian juga jika menggunakan tinydns jangan lupa hapus kata serverku.

4. pasang qmail-remote wrapper

$ su –
$ cd /var/qmail/bin
$ mv qmail-remote qmail-remote.orig
$ vi qmail-remote-wrapper.sh isi dengan baris-baris berikut (atau download disini) :
#!/bin/bash
DOMAIN=”serverku.com”
DKREMOTE=”/var/qmail/bin/qmail-remote.orig”
DKSIGN=”/etc/domainkeys/$DOMAIN/1366597073″
tmp=`/bin/mktemp -t dk.sign.XXXXXXXXXXXXXXXXXXX`
/bin/cat – >”$tmp”
( /usr/local/bin/dktest -s “$DKSIGN” -c nofws -h <“$tmp” 2>/dev/null |
/bin/sed ‘s/; d=.*;/; d='”$DOMAIN”‘;/’ ;
/usr/local/bin/dkimsign.pl –type=dkim –selector=1366597073
–key=”$DKSIGN” –method=relaxed <“$tmp” |
/usr/bin/tr -d ‘r’ ;
/bin/cat “$tmp” ) |
“$DKREMOTE” “$@”
retval=$?
/bin/rm “$tmp”
exit $retval

penyesuaian yang harus dilakukan adalah pada :
a. DOMAIN
b. DKSIGN pada bagian akhir sesuaikan dengan selector yang tadi diperoleh diatas
c. –selector= sesuaikan dengan selector yang tadi diperoleh diatas

perhatikan juga path untuk file-file binary, pastikan bahwa path file tersebut sesuai (misal:/bin/mktemp). simpan lalu keluar dari editor vi.

$ chmod a+x qmail-remote-wrapper.sh
$ ln -s qmail-remote-wrapper.sh qmail-remote

untuk testing bisa gunakan tool dari www.appmaildev.com klik tombol next step lalu kirim email dari salah satu akun email @serverku.com ke email yang muncul (misal: AAAA3QcEFRcA@appmaildev.com )

akan ada balasan email yang berisi report. jika berhasil maka isi report ada cuplikan :

===========================================================DomainKey result: pass

===========================================================DKIM result: pass

Cara testing lainnya adalah kirim email kosong ke check-auth@verifier.port25.com dan tunggu sejenak untuk balasan email yang berisi info tentang status SPF, DKIM dan DomainKeys mail server anda.

The IP you’re using to send mail is not authorized

Jika mengirim email ke gmail atau yahoo atau lainnya dan mendapat balasan dengan pesan error sebagai berikut :

The IP you’re using to send mail is not authorized
550-5.7.1 to send email directly to our servers. Please use the SMTP relay at
550-5.7.1 your service provider instead. Learn more at
550 5.7.1 http://support.google.com/mail/bin/answer.py?answer=10336 wh6si12627961igb.37

maka setidaknya ada 2 hal yang dapat dilakukan untuk mengatasinya. yang pertama adalah memastikan bahwa hostname mail server (misalnya example.com) memiliki reverse DNS yang sesuai. Untuk memeriksanya dapat menggunakan layanan gratis seperti www.dnsgoodies.com

Pada kotak DNS Query Lookup masukkan hostname mail server (misal: example.com) lalu klik DNS Lookup. Catat nomer IP yang keluar. Lalu masukkan IP tersebut ke kotak Reverse DNS Lookup dan klik Rev DNS. Pastikan hasilnya adalah example.com. Jika berbeda, hubungi ISP Anda dan minta agar record PTR untuk IP tersebut diarahkan ke example.com.

Yang kedua, pastikan IP mail server Anda tidak masuk dalam daftar blacklist layanan anti-spam seperti SPAMHAUS. Untuk memeriksanya klik disini. Lalu masukkan IP mail server dalam kotak Enter an IP address lalu klik Lookup. Pastikan hasilnya is not listed berwarna hijau. Jika berwarna merah, klik pada link yang ada untuk permohonan menghapus dari daftar blacklist. Namun sebelumnya pastikan bahwa IP tersebut memenuhi apa yang disyaratkan oleh pihak spamhaus.