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.
Install DKIM
yum install opendkim
Generate Key Signing
Buat folder tempat menyimpan private dan public key di /etc/opendkim/keys/ untuk memudahkan memanage beberapa domain buat folder baru untuk tiap domain.
Contoh saya akan menambahkan domain jaranguda.com
mkdir /etc/opendkim/keys/jaranguda.com cd /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
$ ls -l /etc/opendkim/keys/jaranguda.com/ total 8 -rw------- 1 opendkim opendkim 891 Apr 27 14:06 mail.private -rw------- 1 opendkim opendkim 314 Apr 27 14:06 mail.txt
Buka file konfigurasi opendkim yang berada di /etc/opendkim.conf
, dibagian paling bawah tambahkan
KeyTable /etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts
buka file /etc/opendkim/KeyTable
, tambahkan dibagian paling bawah
mail._domainkey.jaranguda.com jaranguda.com:mail:/etc/opendkim/keys/sibayak.com/mail.private
buka file /etc/opendkim/SigningTable
, tambahkan dibagian paling bawah
*@jaranguda.com mail._domainkey.jaranguda.com
Jalankan opendkim
# aktifkan opendkim setealh reboot
systemctl enable opendkim
systemctl restart opendkim
Edit File Konfigurasi Postfix
Agar DKIM ini dikenali oleh Postfix, ubah file /etc/postfix/main.cf tambahkan
smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = access
Restart Postfix
systemctl restart postfix
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.