Implementasi DomainKeys/DKIM pada Zimbra Mail Server Berbasis Ubuntu

Beberapa waktu yang lalu saya menulis artikel mengenai implementasi DKIM/DomainKeys pada Zimbra Mail Server berbasis SUSE Linux Enterprise Server (SLES) 11 SP1. DKIM/DomainKeys adalah metode signing sebuah mail menggunakan Public-key cryptography sebagai bukti bahwa email yang terkirim sudah divalidasi oleh pengirimnya. Penerapan DomainKeys/DKIM pada mail server akan meningkatkan eligibilitas suatu email yang dikirimkan.

Selain DKIM/DomainKeys, ada beberapa faktor lain yang mempengaruhi performance suatu mail server (baca link diatas untuk lengkapnya), namun DKIM/DomainKeys merupakan salah satu feature penting yang sebaiknya diimplementasikan.

Tadi siang ada saya melakukan implementasi sistem pada salah satu klien Excellent yang menggunakan Zimbra Mail Server diatas Ubuntu LTS 10.04.2 64 bit. Salah satu improvement yang saya lakukan adalah implementasi DKIM/DomainKeys menggunakan OpenDKIM. Sebagai sample, saya akan menggunakan live domain saya sendiri, yaitu vavai.net. Berikut adalah contoh message header saat belum diimplementasikan DKIM, belum ada label Signed By :

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

OpenDKIM sudah ada pada repo Ubuntu jadi untuk instalasi bisa langsung dilakukan dengan perintah apt-get sebagai berikut :

sudo apt-get update && apt-get install opendkim

KONFIGURASI OPENDKIM

  1. Lakukan perubahan isi file /etc/opendkim.conf, jangan lupa sesuaikan dengan nama domain dan IP yang mail server yang dikonfigurasi
    # This is a basic configuration that can easily be adapted to suit a standard
    # installation. For more advanced options, see opendkim.conf(5) and/or
    # /usr/share/doc/opendkim/examples/opendkim.conf.sample.
    
    # Log to syslog
    Syslog                  yes
    # Required to use local socket with MTAs that access the socket as a non-
    # privileged user (e.g. Postfix)
    UMask                   002
    
    # Sign for example.com with key in /etc/mail/dkim.key using
    # selector '2007' (e.g. 2007._domainkey.example.com)
    Domain                 vavai.net
    KeyFile                /etc/mail/mail.private
    Selector               mail
    
    # Commonly-used options; the commented-out versions show the defaults.
    #Canonicalization       simple
    Mode                   sv
    #SubDomains             no
    #ADSPDiscard            no
    
    Socket inet:8891@localhost
    X-Header Yes
  2. Buat file selector dan key (sesuaikan dengan nama domain dan selector yang digunakan)
    opendkim-genkey -d vavai.net -D /etc/mail/ -s mail
    chmod 440 /etc/mail/mail.private

    Perintah diatas akan menghasilkan 2 buah file yaitu mail.txt dan mail.private. File mail.txt berisi records DNS yang harus kita paste ke konfigurasi DNS Server yang kita gunakan, sedangkan file mail.private berisi kriptografi public key.

  3. Jalankan OpenDKIM dengan perintah :
    /etc/init.d/opendkim start

    Agar otomatis berjalan setiap kali sistem direstart, masukkan perintah diatas kedalam file /etc/rc.local

KONFIGURASI DNS SERVER

Buka file /etc/mail/mail.txt dan salin isinya menjadi salah satu records pada DNS Server. Jika DNS Server publik yang digunakan dikelola oleh pihak ISP, kirimkan file /etc/mail/mail.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. Hal ini mutlak diperlukankarena DomainKeys/DKIM memang memerlukan penambahan records. Jika tidak, anda harus mengubur impian anda membuat DomainKeys :-).

Berikut adalah contoh tambahan TXT records untuk DNS Server yang saya kelola untuk vavai.net (merupakan isi dari file /etc/mai/mail.txt):

# cat /etc/mail/mail.txt
mail._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFaeJe6OvwfaveStqNTNfU1U24JxE5jYY3y2uUkMTQey64NWBM1lMZ5H/POGtevtYNuJkpBFRcqN5eencLzNO2/X7yPW7RC10OPAUtOlQyvM2D+MJ2HyhYNb0CF+WoRR/lPRzUjSZ9b+45QQkUlXb6frKBGQjIz4f/CACDQGZ2NQIDAQAB" ; ----- DKIM mail for vavai.net

INTEGRASI DENGAN ZIMBRA MAIL SERVER
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 untuk melakukan restart service Zimbra.

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. Bisa juga dilakukan dengan mengirim email ke Gmail dan check pada bagian header apakah sudah mencantumkan label Signed By atau belum.

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

Hasil pengecekan message source :

Received-SPF: pass (google.com: domain of vavai@vavai.net designates 202.43.114.252 as permitted sender) client-ip=202.43.114.252;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of vavai@vavai.net designates 202.43.114.252 as permitted sender) smtp.mail=vavai@vavai.net; dkim=pass header.i=@vavai.net
Received: from localhost (localhost [127.0.0.1])
	by mail.vavai.net (Postfix) with ESMTP id 4C41140322
	for ; Fri,  1 Jul 2011 04:54:31 +0700 (WIT)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=vavai.net; s=mail;
	t=1309470871; bh=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN/XKdLCPjaYaY=;
	h=Date:From:To:Subject:Message-ID:Content-Type:
	 Content-Transfer-Encoding:MIME-Version;
	b=rGDDFx07Cfh0XB8+XMtQlbXmxuuiG+2R3KWlvkF/uzFtkizfQrH4MfRZ1gwBbY1aV
	 ByrfdB2LYsAJouH8/w3k5QKxgMfH4nvAM8A7u4xtPLnC24LoYMecNNDtbg8gUzEHZn
	 /ysSnnEvPvLuBeeO8CAZzP2mlDWqFIvm/YrModOo=

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.

You may also like

27 Comments

  1. Kalo di ubuntu, memasang prgram untuk jalan di startup bisa digunakan tool update-rc.d. Jadi tidak diletakkan di rc.local. Tapi ya, dimana saja boleh asal kebutuhan terpenuhi. 😀

  2. mas, TXT Records itu cara menambahkannya bagaimana ya? saya menggunakan NS dari webhosting, apakah saya menghubungi pihak hosting buat menambahkannya???

    Terima kasih….

  3. mas untuk installasi DKIM menggunakan Server Centos seperti apa ya ?, apakah sama atau ada yg berbeda, trus installasi DKIM ini dilakukan di DNS server atau di server terpisah sendiri ?

  4. Pak vavai klo dns dengan mail server terpisah bagaimana cara implementasinya? kebetulan dns server ada di isp?
    salam

  5. @mikriting,

    Sama saja mas, lakukan perubahan di DNS Server yang ada di ISP (kasih tahu mereka isi yang hendak ditambahkan)

  6. awalnya server saya spf nya sudah pass, namun ketika saya implementasikan DKIM ini kenapa jadi eror ya? 🙁 adakah yg salah?
    Received-SPF: temperror

  7. mas vavai,
    mohon petunjuk. saya gagal sampai step ini

    opendkim-genkey -d vavai.net -D /etc/mail/ -s mail

    errornya : “/usr/bin/opendkim-genkey: 140: cd: can’t cd to /etc/mail/”

    saya check directory memang tak ada /etc/mail

    apakah ada yang saya lewatkan

  8. mas vavai,
    yang di DNS server public sebagai recordnya apakah komplit seperti ini

    “v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFaeJe6OvwfaveStqNTNfU1U24JxE5jYY3y2uUkMTQey64NWBM1lMZ5H/POGtevtYNuJkpBFRcqN5eencLzNO2/X7yPW7RC10OPAUtOlQyvM2D+MJ2HyhYNb0CF+WoRR/lPRzUjSZ9b+45QQkUlXb6frKBGQjIz4f/CACDQGZ2NQIDAQAB” ; —– DKIM mail for vavai.net

    ataukah hanya yang di dalam tanda petik ganda
    v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFaeJe6OvwfaveStqNTNfU1U24JxE5jYY3y2uUkMTQey64NWBM1lMZ5H/POGtevtYNuJkpBFRcqN5eencLzNO2/X7yPW7RC10OPAUtOlQyvM2D+MJ2HyhYNb0CF+WoRR/lPRzUjSZ9b+45QQkUlXb6frKBGQjIz4f/CACDQGZ2NQIDAQAB

  9. mas vavai,

    bolehkah record tersebut saya set di hosting? bukan di sisi ISP.
    karena selama ini semua dns record (A, CNAME) saya set melalui hosting pada menu Advanced DNS Zone Editor di cPanel hostingnya

    Apa bedanya set di sisi ISP atau set di sisi hosting?

  10. Mas Vavai,

    Saya start opendkim di Centos 6.7, muncul error seperti ini:
    Starting OpenDKIM Milter: opendkim: /etc/opendkim.conf: /etc/opendkim/keys/mail.private is in group 0 which has multiple users (e.g. “sync”)

    Ini maksudnya apa ya mas? saya sudah cari, tapi belum ketemu solusinya.

    Mohon bantuannya mas.

    Terima kasih.

  11. zimbra saya gunakan untuk 3 domain,
    tapi yang masuk inboxnya gmail hanya domain utama,
    domain yang lain masuk junk (padahal statusnya email yang nge-junk tersebut pass untuk spf dan dkim nya).

    di test pakai tool lain seperti mail-tester.com hasilnya perfect.

  12. mas vavai.com
    mohon bantuan dan sarannya..
    di zimbra mail server saya sudah aktif semua.. mulai dari dkim, dmarch dan spf.. dan PTR record dari isp juga sudah mengarah ke doamin email semua.. tetapi saya send email ke gmail ataupun yahoo masih masuk spam/junk yaa..
    mohon bantuan dan informasi sarannyaa,,, terima kasih banyak….

  13. Makasi bung vavai buat tutsnya.

    Disini saya ingin bertanya :
    – pada saat saya ingin generate key dengan command opendkim-genkey -d domainsaya.com -D /etc/mail/ -s mail, keluar notif error: “bash: opendkim-genkey: command not found”.

    Saya sudah mencoba install yum install crypto-utils, maupun yum install opendkim-tools namun tidak membantu.

    Saya menggunakan centos 5.4 dan zimbra versi 7.2.

    Kira-kira kenapa ya bung ?

    Terimakasih..

  14. @Supriyanto,

    1. Rekomendasi : Install dan upgrade ke CentOS 7 dengan Zimbra 8.7 atau 8.8, karena Zimbra 7.x dan 8.0.x sudah end of life

    2. Untuk opendkim-genkey mesti install dulu aplikasinya

  15. Terimakasih bung vavai atas respon dan jawabannya.

    Berarti memang harus di upgrade toh, saya pikir masih ada jalan tanpa di upgrade ^_^

    Ok bung vavai saya akan coba mengikuti sarannya.

    Sekali lagi, terimakasih atas respon dan jawabannya.

    Sehat dan sukses selalu

  16. Terimakasih atas tutorialnya,

    ada 1 hal yang ingin saya tanyakan, kira nya bisa dibantu jawab. jika pada implementasi mail server dengan smtp server dipisah maka opendkim ini lebih cocok diinstall di server mana ya ya?

    Sebelumnya saya ucapkan 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.