DKIM adalah salah satu cara untuk menandai email yang anda kirim di ijinkan menggunakan domain yang bersangkutan, contoh k891@jaranguda.com, oleh mail server jaranguda.com, akun k891@jaranguda.com diberi tanda bahwa akun tersebut memang benar-benar menggunakan mail server jaranguda dan terotentikasi. Untuk mempermudah tutorial ini, kita akan menggunakan domain jaranguda.com sebagai contoh dalam pengaplikasian DKIM dan SPF. Tahap instalasi dan konfigurasi DKIM dan SPF akan dijelaskan satu persatu. Untuk instalasi Mail Server bisa dilihat di Instalasi Mail Server Postfix Dovecot MySQL Debian 7.
Instalasi dan Konfigurasi DKIM
Install pake dkim di Debian 7
apt-get install opendkim opendkim-tools
Generate Private Key
Kita akan membuat private key untuk domain jaranguda.com dan membuat folder khusus tempat menyimpan key tersebut
mkdir -p /etc/opendkim/keys/jaranguda.com opendkim-genkey -t -s mail -d jaranguda.com chown opendkim:opendkim -R /etc/opendkim
mail diatas bisa diganti dengan berbagai variasi, misalnya dnsx901, private dll, untuk memudahkan tutorial ini kita akan menggunakan mail, mail diatas dinamakan sebagai selector.
Setelah diubah file permission dengan chown, kira-kira seperti dibawah ini user:group dari folder yang baru kita buat
/etc/opendkim/keys/jaranguda.com: total 16 drwxr-xr-x 2 opendkim opendkim 4096 Apr 11 04:42 . drwx------ 5 opendkim opendkim 4096 Apr 11 04:42 .. -rw------- 1 opendkim opendkim 887 Apr 11 04:42 mail.private -rw------- 1 opendkim opendkim 305 Apr 11 04:42 mail.txt
Buka file konfigurasi opendkim yang berada di /etc/opendkim.conf
, tambahkan
LogWhy yes SyslogSuccess yes Domain jaranguda.com KeyFile /etc/opendkim/keys/jaranguda.com/mail.private Selector mail
LogWhy dan SyslogSuccess untuk memudahkan debugging bila ada kesalahan konfigurasi di openDKIM. Buka file /etc/default/opendkim, hapus tanda # di depan SOCKET=”inet:12345@localhost”
#SOCKET="local:/var/run/opendkim/opendkim.sock" # default #SOCKET="inet:54321" # listen on all interfaces on port 54321 SOCKET="inet:12345@localhost" # listen on loopback on port 12345 #SOCKET="inet:12345@192.0.2.1" # listen on 192.0.2.1 on port 12345
Edit File Konfigurasi Postfix
Agar DKIM ini dikenali oleh Postfix, ubah file /etc/postfix/main.cf tambahkan
milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:localhost:12345 non_smtpd_milters = inet:localhost:12345
Ubah konfigurasi DNS
Hasil generate opendkim-genkey diatas menghasilkan file mail.private dan mail.txt, isi mail.txt yang akan kita pindah ke DNS.
Contoh isi file mail.txt
mail._domainkey IN TXT "v=DKIM1; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/jY/MPlIomlaLbnIYsMr05SuCSDf5NG6pN0bFRL1FT+LrLCRI+NQI9RgHlgTxBE5IGVNSyfNkj3+uCoBNBJqBqu8tzBfGKawvgVRFWA8aOu24f67LCfOMBxezJFkouMDvVXpElZdkUxsaL25V4ILS9UK0CTwo0r/QihrvsnPN5wIDAQAB" ; ----- DKIM key mail for jaranguda.com
contoh bila anda menggunakan cPanel
Menambah SPF Record
Sebagai contoh saya menggunakan IP 192.168.1.1, ganti dengan IP server anda. Tambah record baru di DNS dengan record type : TXT
"v=spf1 a ip4:192.168.1.1/32 ?all"
/32 menandakan server anda hanya memiliki 1 buah IP, dan hanya IP tersebut yang digunakan untuk mengirim email. Untuk Server yang lebih dari 1 IP silahkan disesuaikan CIDR-nya.
Restart Services
Karena telah dilakukan perubahan di postfix dan opendkim maka kita perlu merestart service tersebut
service opendkim restart; service postfix restart
Setelah semua selesai, sekarang kita verifikasi konfigurasi yang telah kita buat. Salah satu tool yang sangat membantu adalah dig. Tes DNS ini bisa tidak segera muncul karena butuh waktu untuk propagation DNS. Bisa juga digunakan situs whatsmydns.net untuk mempermudah mengecek propagation sudah berjalan atau belum.
Cek konfigurasi SPF
dig jaranguda.com txt
bila settingan DNS sudah benar maka muncul
; <<>> DiG 9.9.4-P2-RedHat-9.9.4-12.P2.fc20 <<>> jaranguda.com txt ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40451 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;jaranguda.com. IN TXT ;; ANSWER SECTION: jaranguda.com. 14016 IN TXT "v=spf1 a ip4:192.168.1.1/32 ?all" ;; Query time: 107 msec ;; SERVER: 8.8.4.4#53(8.8.4.4) ;; WHEN: Fri Apr 11 12:11:24 WIB 2014 ;; MSG SIZE rcvd: 90
Cek konfigurasi DKIM
dig mail._domainkey.jaranguda.com txt
hasil output perintah diatas
; <<>> DiG 9.9.4-P2-RedHat-9.9.4-12.P2.fc20 <<>> mail._domainkey.jaranguda.com txt ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28291 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;mail._domainkey.jaranguda.com. IN TXT ;; ANSWER SECTION: mail._domainkey.jaranguda.com. 14399 IN TXT "v=DKIM1; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/jY/MPlIomlaLbnIYsMr05SuCSDf5NG6pN0bFRL1FT+LrLCRI+NQI9RgHlgTxBE5IGVNSyfNkj3+uCoBNBJqBqu8tzBfGKawvgVRFWA8aOu24f67LCfOMBxezJFkouMDvVXpElZdkUxsaL25V4ILS9UK0CTwo0r/QihrvsnPN5wIDAQAB" ;; Query time: 456 msec ;; SERVER: 8.8.4.4#53(8.8.4.4) ;; WHEN: Fri Apr 11 09:29:42 WIB 2014 ;; MSG SIZE rcvd: 310
cara yang lain untuk testing DKIM dan SPF adalah dengan mengirim email ke gmail
mail -s "dkim test" alamat.email@gmail.com
setelah menekan enter, ketik isi pesan anda, tekan enter, akhiri dengan kombinasi CTRL + D. Kira-kira seperti dibawah ini
mail -s "dkim test" alamat.email@gmail.com Ini adalah percobaan untuk DKIM dan SPF record. EOT
Sekarang buka Gmail anda, bila sukses tampilannya seperti dibawah ini
bagian mailed-by dan signed-by menandakan SPF dan DKIM sukses. Bila email tidak ada di inbox anda, coba cek di folder spam.
Mau tanya DKIM ini bisa bikin email kita masuk inbox ga ya? saya tiap kirim email via postfix masuk folder spam terus
pake DKIM/SPF/DMARC dan lain sebagainya ngga menjadi jaminan email masuk inbox, apalagi ke Gmail, atau Hotmail. :)
Untuk awal-awal whitelist aja dlu emailnya, nanti lama-kelamaan setelah ngirim banyak email dan ngga di tag user sebagai spam masuk ke inbox kok.
Mas , mau nanya neh.
implementasi dkim pada mail server yang tidak langsung berhadapan dengan dunia luar ( NAT) apakah memungkinkan untuk authentication ?
Terima Kasih
Please advice ..
mail servernya di belakang NAT? opendkim kan hanya merupakan key untuk verifikasi dan ngga membuka port keluar.