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.

melindungi domain dari spammer

Salah satu cara untuk meningkatkan penjualan adalah dengan iklan. Penjual ingin agar iklannya dapat dilihat oleh sebanyak mungkin orang. Salah satu cara yang mudah dan murah untuk itu adalah melalui email. Maka segala cara dilakukan agar dapat mengirimkan iklan ke sebanyak mungkin alamat email.

Model marketing yang seperti ini sangat tidak santun, bahkan di beberapa negara ada regulasi (spam act) yang mengatur hal ini lengkap dengan ancaman hukumannya. Marketing melalui email yang santun agar tidak dianggap melanggar regulasi dan tidak dikategorikan sebagai spam, harus memenuhi beberapa kriteria, antara lain :

  1. Jangan menggunakan header yang tidak jelas atau palsu. From, To, Reply-To dan info lain dalam header email harus mencerminkan si pengirim.
  2. Jangan menggunakan subject yang tidak relevan dengan isi email. Subject harus sebaik mungkin mencerminkan isi email.
  3. Tunjukkan bahwa email adalah memang iklan.
  4. Beritahukan kepada penerima dimana alamat fisik (alamat pos) anda.
  5. Beritahukan kepada penerima bagaimana caranya agar tidak lagi menerima email sejenis dari anda. Pemberitahuan dan petunjuk ini harus jelas dan mudah dilihat serta diikuti oleh penerima.
  6. Hargai dan laksanakan permintaan penerima jika tidak ingin lagi menerima email dari anda.
  7. Jika anda meminta pihak ketiga untuk melakukan marketing email untuk kepentingan anda, lakukan pengawasan dan pastikan yang bersangkutan tidak melakukan pelanggaran terhadap regulasi ini. Karena jika pihak ketiga melanggar spam act,  bukan hanya dia yang dapat dihukum tapi pihak yang dipromosikan pun juga dapat dihukum.

Tapi spammer tidak peduli dengan spam act. Salah satu cara yang sering digunakan spammer adalah menggunakan nama domain milik suatu organisasi yang bonafid agar penerima lebih tertarik dan percaya. Jika isi email spam adalah sesuatu yang buruk tentu saja akan merusak citra organisasi yang bersangkutan sebagai pemilik nama domain.

Untuk mencegah agar suatu nama domain tidak disalahgunakan oleh spammer, dibuatlah suatu cara yang dikenal dengan sebutan SPF (Sender Policy Framework). SPF adalah suatu cara yang memungkinkan pemilik nama domain untuk memberitahu kepada dunia siapa saja (mail server mana) yang berhak mengirim email menggunakan nama domainnya. Jika suatu email dikirim oleh mail server yang tidak diakui oleh pemilik nama domain maka hampir dapat dipastikan bahwa email tersebut palsu. Email palsu biasanya spam. Sehingga mail server penerima boleh menolak email tersebut.

Lakukanlah pencegahan agar nama domain anda tidak disalahgunakan oleh spammer. SPF memanfaatkan DNS untuk dapat berfungsi. Caranya dengan menambahkan record SPF pada semua DNS server anda. Jika DNS anda menggunakan BIND tambahkan sebagai berikut (ganti xxx.xxx.xxx.xxx dengan ip mail server yang menangani nama domain anda & sesuaikan namadomain.com):

$ vi /var/named/namadomain.com.zone

namadomain.com        TXT         “v=spf1 ip4:xxx.xxx.xxx.xxx -all”

jangan lupa update serial, simpan dan keluar dari vi lalu restart BIND. jika menggunakan tinydns dari djbdns, gunakan online SPF record builder yang disediakan oleh Anders Brownworth dengan klik disini. Pada kotak Domain ketikkan namadomain.com dan pada kotak Text ketikkan

v=spf1 ip4:xxx.xxx.xxx.xxx -all

lalu klik tombol Build SPF Record, hasilnya kurang lebih seperti ini :

:namadomain.com:16:37v=spf140ip472xxx.xxx.xxx.xxx40-all:86400

copy hasilnya lalu buka file data dan paste. simpan dan keluar dari vi lalu restart tinydns.

$ vi /service/tinydns/root/data

$ make

$ svc -t /service/tinydns

SPF record pada contoh ini artinya hanya mail server dengan ip xxx.xxx.xxx.xxx yang berhak mengirim email menggunakan namadomain.com selain mail server tersebut berarti palsu dan bisa dianggap sebagai spammer.

Jika memiliki lebih dari satu mail server atau membutuhkan record SPF yang lebih kompleks, silakan klik disini untuk referensi syntax dari record SPF.

Untuk menguji apakah record SPF di DNS server sudah benar dan berfungsi dengan baik, ada beberapa alat uji yang dapat digunakan. Antara lain dengan mengirimkan email dari mail server ke alamat check-auth@verifier.port25.com yang akan mengirimkan email balasan. Jika berfungsi akan terdapat baris sebagai berikut :

----------------------------------------------------------
SPF check details:
----------------------------------------------------------
Result:         pass 

alat uji lainnya dapat dilihat disini.