Implementasi DomainKeys pada Zimbra & SLES 11 SP1 Menggunakan OpenDKIM

Mail server yang disetup dengan baik harus memiliki beberapa kriteria tertentu, yang diukur dari reputasi dan rankingnya. Semakin tinggi reputasi dan ranking, semakin besar pula kemungkinan email dari mail tersebut dianggap eligible dan otomatis dianggap whitelist atau masuk ke Inbox.

Jika reputasi dan ranking mail server kurang baik, email kemungkinan besar akan masuk ke folder junk atau folder spam dan dalam tingkat yang parah, email dibanned/blacklist/ditolak. Kalaupun diterima, email bukan masuk ke Inbox melainkan langsung masuk ke tempat sampah alias didelete, hehehe…Tentu bukan hasil yang menyenangkan untuk kita sebagai Admin mail server.

Sebagai gambaran, berikut adalah beberapa kriteria mail server yang baik :

  1. Memiliki IP public static, bukan dynamic. Cukup banyak mail server tujuan yang menolak pengiriman email dari IP dynamic, karena IP dynamic ini kerap dijadikan sebagai media open relay suatu email
  2. IP tidak tercantum dalam Blacklist. IP public mail server tidak masuk ke dalam blacklist di beberapa layanan online blacklist seperti barracudacentral, spamhaus, spamcop dll. Jika mail server kita ingin menerapkannya, bisa membaca artikel ini : Tips Anti Spam Zimbra : Aktivasi Fasilitas Blacklist Spammer
  3. Memiliki reverse DNS/PTR Records. Keterangan detail mengenai DNS/PTR Records dapat dibaca pada tulisan ini : Tips Mail Server : Apa itu Reverse DNS Zone? sedangkan panduan untuk konfigurasinya jika DNS server dikelola sendiri bisa dilihat pada artikel Konfigurasi Reverse DNS Server (PTR Records) Secara Mudah
  4. Dilengkapi dengan SPF. SPF atau Sender Policy Framework berfungsi sebagai rujukan bahwa mail server bersangkutan memang eligible untuk mengirimkan email dengan domain tertentu. Penjelasan implementasi SPF dapat dibaca disini : Menangkal Spoofing & Phising Spam Menggunakan SPF (Sender Policy Framework)
  5. Dilengkapi dengan DomainKeys atau DKIM. DomainKeys atau DKIM pada dasarnya merupakan signature yang menjadi pertanda bahwa email yang keluar dari suatu mail server sudah di sign dengan kode tertentu sesuai nama domain dan identitas mail server sehingga dianggap syah dan meyakinkan sebagai pengirim resmi

Meski masih ada beberapa prasayarat sebuah mail server yang baik, 5 hal diatas sudah cukup membuat reputasi mail server meningkat. 15 point yang lebih lengkap mengenai audit suatu mail server dapat dibaca pada artikel mengenai Tips Audit Mail Server.

Panduan kali ini akan membahas mengenai penerapan DomainKeys/DKIM menggunakan OpenDKIM. Sebagai sample, saya menggunakan domain vavai.web.id yang berjalan pada sistem Zimbra Mail Server 7.0.0 beta 3 menggunakan sistem operasi SUSE Linux Enterprise Server 11 SP 1 64 bit. Jika menggunakan distro lain, silakan sesuaikan tahapan instalasi dan path folder yang digunakan.

Langkah-langkah implementasi DKIM dapat dibagi kedalam 5 bagian, yaitu :

  1. Instalasi OpenDKIM
  2. Konfigurasi OpenDKIM
  3. Konfigurasi DNS Records
  4. Integrasi dengan Zimbra Mail Server
  5. Testing & Verifikasi DKIM

INSTALASI OPENDKIM

Download dan install OpenDKIM. Untuk kemudahan, saya menggunakan repo yang ada pada alamat http://download.vavai.com. Saya menggunakan mesin 64 bit sehingga menggunakan aplikasi x86_64. Jika menggunakan mesin 32 bit, gunakan sesuaikan alamat aplikasi dengan menggunakan folder i586

wget -c http://download.vavai.com/repo/x86_64/opendkim-2.2.2-2.1.x86_64.rpm
wget -c http://download.vavai.com/repo/x86_64/libopendkim3-2.2.2-2.1.x86_64.rpm
zypper in *.rpm

KONFIGURASI OPENDKIM

  1. Buat salinan file konfigurasi OpenDKIM
    cp /usr/share/doc/packages/opendkim/opendkim.conf.sample /etc/opendkim.conf
  2. Lakukan perubahan isi file /etc/opendkim.conf, jangan lupa sesuaikan dengan nama domain dan IP yang mail server yang dikonfigurasi
    BaseDirectory /var/run/opendkim
    Domain vavai.web.id
    InternalHosts 192.168.10.0/24, 127.0.0.1
    KeyFile /etc/mail/dkim/selector.private
    Mode sv
    Selector selector
    Socket inet:8891@localhost
    Syslog Yes
    SyslogFacility mail
    X-Header Yes
  3. Buat file selector dan key
    mkdir -p /etc/mail/dkim
    opendkim-genkey -d vavai.web.id -D /etc/mail/dkim -s selector
    cd /etc/mail/dkim
    chmod 440 selector.private

    Perintah diatas akan menghasilkan 2 buah file yaitu selector.txt dan selector.private. File selector.txt berisi records DNS yang harus kita paste ke konfigurasi DNS Server yang kita gunakan.

  4. Jalankan OpenDKIM dengan perintah :
    opendkim -x /etc/opendkim.conf

    Agar otomatis berjalan setiap kali sistem direstart, masukkan perintah diatas kedalam file /etc/init.d/after.local, kemudian lakukan perintah chmod +x /etc/init.d/after.local

KONFIGURASI DNS SERVER

Buka file /etc/mail/dkim/selector.txt dan salin isinya menjadi salah satu records pada DNS Server. Jika DNS Server publik yang digunakan dikelola oleh pihak ISP, kirimkan file selector.txt pada pihak ISP dan minta pada mereka untuk membuatkan records baru sesuai permintaan anda tersebut. Jika ISP tidak bersedia melakukannya dan tidak bersedia mendelegasikan wewenang perubahan DNS server pada anda, pertimbangkan untuk pindah ISP. Terdengar kasar ? Tidak juga, karena DomainKeys/DKIM memang memerlukan penambahan records. Jika tidak, anda harus mengubur impian anda membuat DomainKeys.

Berikut adalah contoh isi konfigurasi DNS Server yang saya kelola untuk vavai.web.id :

# cat /var/lib/named/master/vavai.web.id
$TTL 2d
@		IN SOA		ns1.vavai.web.id.	root.ns1.vavai.web.id. (
				2010122101	; serial
				3h		; refresh
				1h		; retry
				1w		; expiry
				1d )		; minimum

vavai.web.id.	IN NS		ns1.vavai.web.id.
vavai.web.id.	IN NS		ns2.vavai.web.id.
vavai.web.id.   IN A		174.120.9.XXX
vavai.web.id.	IN MX		0 mail.vavai.web.id.
www		IN CNAME	vavai.web.id.
ns1		IN A		202.158.52.xxx
mail		IN A		202.158.52.xxx
ns2		IN A		202.43.115.xxx
vavai.web.id.   IN TXT          "v=spf1 a mx include:mail.vavai.web.id ~all"
selector._domainkey IN TXT "v=DKIM1; r=postmaster; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ5IZT5e5nvmkotroz5ylTlwU8yEEZ+v/576aI+w6TkbP4XibYxDsWVweXXtVeQQmw8AwYuK5R9b373Xqu+Hv9HNAJoAteKF/qlKcZc5Akhj5B7P1imXaurZkkIBp63yBZyZRralzQYNT3UrVB7M/xONMWXcU9xm7Zv1PzH1Y1OQIDAQAB"

INTEGRASI DENGAN ZIMBRA MAIL SERVER
Masuk sebagai Zimbra user (su – zimbra) dan ganti/tambahkan baris berikut pada file /opt/zimbra/postfix/conf/main.cf :

smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
milter_default_action = accept

Setelah selesai, jalankan perintah : postfix reload

UPDATE 02 Maret 2011
Agar bersifat permanen meski Zimbra berulangkali direstart, lakukan prosedur berikut :
Masuk sebagai Zimbra user (su – zimbra) dan tambahkan baris berikut pada file /opt/zimbra/postfix/conf/master.cf.in, tepat dibagian bawah baris :
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings

    -o milter_default_action=accept
    -o smtpd_milters=inet:localhost:8891
    -o non_smtpd_milters=inet:localhost:8891
    -o disable_mime_output_conversion=yes

Setelah selesai, jalankan perintah : zmcontrol restart

TESTING & VERIFIKASI DKIM
Jika kesemua perintah diatas sudah diakukan, lakukan testing pengiriman email ke sa-test@sendmail.net atau check-auth@verifier.port25.com atau autorespond+dkim@dk.elandsys.com.

Berikut adalah contoh pesan dari sendmail :

Authentication System:       DomainKeys Identified Mail
Result:                   DKIM signature confirmed GOOD
Description:              Signature verified, message arrived intact
Reporting host:           sendmail.net
More information:         http://mipassoc.org/dkim/
Sendmail milter:          https://sourceforge.net/projects/dkim-milter/

Pesan dari elandsys :

This is an automatic response.  Replies to this message will not generate
an automatic response.
Do not reply to this message except for reporting a problem.

The results are as follows:

DKIM Signature validation: pass (1024-bit key)

Contoh respon dari Gmail

Received-SPF: pass (google.com: domain of vavai@vavai.web.id designates XXX.158.52.XXX as permitted sender) client-ip=XXX.158.52.XXX;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of vavai@vavai.web.id designates XXX.158.52.XXX as permitted sender) smtp.mail=vavai@vavai.web.id; dkim=pass header.i=@vavai.web.id
Received: from localhost (localhost [127.0.0.1])
	by mx3.vavai.web.id (Postfix) with ESMTP id 0E666DB0302
	for ; Wed, 22 Dec 2010 09:42:12 +0700 (WIT)
X-Virus-Scanned: amavisd-new at vavai.web.id
Received: from mx3.vavai.web.id ([127.0.0.1])
	by localhost (mx3.vavai.web.id [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id On3P3QqkyMM4 for ;
	Wed, 22 Dec 2010 09:42:11 +0700 (WIT)
Received: from mx3.vavai.web.id (mx3.vavai.web.id [XXX.158.52.XXX])
	by mx3.vavai.web.id (Postfix) with ESMTP id 56CC1DB0136
	for ; Wed, 22 Dec 2010 09:42:11 +0700 (WIT)
X-DKIM: OpenDKIM Filter v2.2.2 mx3.vavai.web.id 56CC1DB0136
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=vavai.web.id;
	s=selector; t=1292985731;
	bh=cBOiyKgb7kh/ygTXq8sQihgwMCryqYRvRZBYcO6/z5U=;
	h=Date:From:To:Message-ID:Subject:MIME-Version:Content-Type;
	b=KMOYjsda6qPqNdf0NuyxdEayFxgRCAVmilYKobK3sKV8hSvybT3fmbWM+2mZUCzMY
	 sDSdVVTXMB6RnHoEPyPzNFK7y9TPpAn0SPkGqL0nSzQ+Fr6/VaEBHrcQGduUNm5Ot5
	 V0Y9vIcmfjLGWTkkAX0RjHpV/9ZK8VPJD0etRsM0=

TROUBLE SHOOTING
Setting DomainKeys/DKIM merupakan salah satu proses konfigurasi yang butuh kesabaran dan ketelitian untuk mengimplementasikannya. Saran saya, ikuti panduan diatas sesuai dengan urutan dan jangan terburu nafsu untuk cepat-cepat mendapat hasilnya 🙂

Jika ada masalah, silakan share melalui halaman komentar dibawah ini.

27 thoughts on “Implementasi DomainKeys pada Zimbra & SLES 11 SP1 Menggunakan OpenDKIM

  1. Thanks om… setelah baca” di sini dan di sana akhirnya bisa juga setting SPF, Domainkeys
    Untuk DKIM berharil di mesin yang pake postfix/CentOS, untuk mesin yang pake cpanel/exim dan plesk/psa (pake postfix) belum ketemu caranya

  2. ketika saya mencoba
    /opt/zimbra/postfix/conf/master.cf.in
    dengan saya tambahkan
    -o milter_default_action=accept
    -o smtpd_milters=inet:localhost:8891
    -o non_smtpd_milters=inet:localhost:8891
    -o disable_mime_output_conversion=yes
    selanjutnya,

    zmcontrol restart
    zmcontrol status
    antispam Running
    antivirus Running
    ldap Running
    logger Running
    mailbox Running
    mta Stopped
    postfix is not running
    snmp Running
    spell Running
    stats Running
    zmconfigd Running
    slalu seperti itu

  3. setelah saya jalankan opendkim +x /etc/opendkim.conf
    muncul pesan berikut :

    opendkim: error while loading shared libraries: libopendkim.so.3: cannot open shared object file: No such file or directory

  4. Mau tanya mas,

    Saya sedang membuat/mengaktifan DKIM pada ubuntu saya

    semua prosedur telah dilakukan

    saat mengaktifkannya, /etc/init.d/opendkim start

    yang muncul adalah “opendkim: /etc/opendkim.conf: at least one
    selector and key required for signing mode”

    apakah maksudnya dkimnya sudah aktif mas?

    padahal sudah ada mail.txt dan mail.selector pada /etc/mail

    Mohon pencerahan.

  5. saya sudah setting semuanya…, tapi pas dibagian ” opendkim -x /etc/opendkim.conf “, ada pesan error. Error : opendkim: smfi_opensocket() failed

    itu apanya ya mas???……mohon bantuannya

  6. sy sdh konfig dkim sesuai sama yg diatas…tp knp ttp DKIM Signature validation: not available jawaban dari elandsys dan Result: (no result present) jawaban dari sendmail, apa yg salah y, sy pake centos untuk mesinnya zimbra v 7

    terimakasih sebelumnya

  7. sy sudah cb yg di tulisan terbarunya, tetap msh blm bisa y?

    apa karena gini
    subdomain emailnya mail.XX.ac.id
    id email yg digunakan wahyuprio@XX.ac.id
    utk record dnsnay selector._domainkey sy menggunakan mail.XX.ac.id bkn XX.ac.id

    apakah itu berpengaruh?

  8. klo pesan errornya seperti ini apa yang salah yah mas vavai

    opendkim: smfi_opensocket() failed

  9. Mas, kalau ada pesan error disaat service opendkim start ini kenapa ya ? pesan error nya seperti ini

    Starting OpenDKIM Milter: opendkim: /etc/opendkim.conf: refile:/etc/opendkim/TrustedHosts: dkimf_db_open(): Permission denied

  10. @yoga,

    Check di bagian /etc/opendkim.conf, sepertinya mas ada set baca file /etc/opendkim/TrustedHosts namun file ini tidak ada atau tidak bisa diakses. Konfigurasinya cukup seperti contoh saya diatas saja mas

  11. Mas vavai, saya sudah mencoba implementasi open dkim pada zimbra. saya coba kirim ke gmail alhasil header mail sudah ada informasi dkimnya, tetapi sy coba tes mail ke sa-test@sendmail.net hasilnya “DKIM signature confirmed BAD, Unrecoverable error during processing; signature data cannot be verified”. dan juga cek dkim di http://dkimcore.org/tools/keycheck.html hasilnya “the p= field must be base64 encoded”.
    Ini kenapa ya mas? mohon pencerahannya. terima kasih

  12. mas vavai , source rpm nya masih punya , saya coba download dari link diatas tapi sudah tidak ada .
    terimakasih

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.