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.

qmail-smtpd end status 11

Hari ini saya mendapat pengalaman baru dengan qmail yang berkaitan dengan SPF. Awalnya lupa password untuk login ke citrix. Memanfaatkan fasilitas forgot password dari citrix untuk melakukan reset password, namun email yang berisi link untuk melakukan reset tidak masuk. Setelah beberapa kali mencoba menggunakan fasilitas reset password, email balasan yang diharapkan tidak juga kunjung datang.

Maka dilakukan pengecekan di log qmail-send. Ternyata tidak pernah ada pengiriman dari citrix. Pengecekan pun dilakukan ke log qmail-send. Ternyata ada yang tidak beres. Di log terlihat ada koneksi dari mail server citrix, namun end signal atau status yang seharusnya 0 (nol) berubah menjadi 11.  Setelah diusut, ternyata penyebabnya adalah penggunaan patch SPF yang jadul. Solusinya adalah menonaktifkan SPF dengan memberi nilai 0 (nol) di /var/qmail/control/spfbehaviour lalu restart qmail-smtpd dengan perintah:

$ svc -t /service/qmail-smtpd

Email untuk reset password dari citrix pun lalu satu per satu datang. Thanks to mbah google and www.goodcleanemail.com