Integrasi OpenLDAP dengan Zimbra (External Authentication)

Sebelumnya saya sudah menulis prosedur Instalasi OpenLDAP di Ubuntu 24.04 from scratch. Lalu selanjutnya apa? Integrasi dengan aplikasi apa? OpenLDAP kan hanya directory service saja.

Melakukan instalasi & konfigurasi server LDAP yang berjalan hanya langkah awal. Tantangan sebenarnya adalah bagaimana mengintegrasikan directory service LDAP tersebut dengan berbagai aplikasi yang ada di infrastruktur yang kita miliki. Salah satu skenario yang sangat umum dan paling saya pahami adalah menjadikannya sebagai External LDAP untuk Zimbra Mail Server.

Mengapa Zimbra Harus Pakai External LDAP?

Secara default, Zimbra sudah dilengkapi dengan OpenLDAP di dalamnya untuk menyimpan data akun dan konfigurasi server. Namun, seiring dengan berkembangnya sistem yang kita tangani, pengelolaan akun secara terpisah pada setiap aplikasi seringkali menjadi kendala. Bayangkan jika kita harus membuat satu akun yang sama di Zimbra untuk email, di OpenVPN untuk akses remote, di aplikasi lain untuk berbagai macam kebutuhan. Selain tidak efisien, risiko human error dan inkonsistensi data menjadi sangat tinggi. Bisa saja username karyawan 1 di aplikasi Zimbra menggunakan ‘User 1’, di OpenVPN menggunakan ‘Pengguna 1’, di aplikasi lain menggunakan ‘Pengguna 01’ dan seterusnya. Padahal 3 username tersebut dipakai oleh karyawan yang sama.

Di sinilah peran OpenLDAP terpisah yang akan kita siapkan. Dengan memusatkan data user satu tempat yang sama yaitu, OpenLDAP. Dengan mekanisme ini, ada beberapa keunggulan

  • Single Source of Truth: Semua data autentikasi username & password pada satu server/cluster LDAP terpusat

  • Ease of Management: Proses onboarding user baru , penyesuaikan ataupun penghapusan user existing cukup dilakukan sekali di sisi LDAP, dan akses ke berbagai sistem (termasuk Zimbra) akan otomatis menyesuaikan

  • Security Policy: Penerapan policy keamanan seperti password criteria menjadi lebih seragam semua aplikasi yang ada

  • Scalability: Jika di masa depan sistem hendak menerapkan mekanisme Single Sign-On (SSO) yang lebih modern seperti SAML atau OAuth, kita sudah memiliki fondasi struktur yang terpusat

Pada artikel kali ini, saya akan melanjutkan panduan sebelumnya dengan fokus pada konfigurasi untuk menghubungkan Zimbra ke OpenLDAP eksternal. Kita akan membahas bagaimana menyesuaikan Base DN, melakukan mapping atribut, hingga memastikan proses authentication dari Zimbra ke OpenLDAP external berjalan sebagaimana mestinya. Sebelum mulai konfigurasi, pastikan rekan-rekan sudah melakukan Instalasi OpenLDAP di Ubuntu 24.04 dan sudah memiliki email server berbasis Zimbra yang running well.

Konfigurasi Tree/Structure User (OpenLDAP)

Konfigurasi ini perlu dilakukan apabila OpenLDAP baru dilakukan fresh install dan belum ada tree/structure ou=users atau ou=people. Jika OpenLDAP yang rekan-rekan punya sudah ada data user dan sudah ada ou=users atau ou=people maka silakan melewati bagian ini.

  • Buat file baru dengan nama /srv/import-structure-user.ldif dengan isi sebagai berikut:
    dn: ou=users,dc=excellent,dc=co,dc=id
    objectClass: organizationalUnit
    ou: users
  • Import ou=users dengan perintah berikut:
    # ldapadd -x -D cn=admin,dc=excellent,dc=co,dc=id -W -f /srv/import-structure-user.ldif
    Enter LDAP Password: (Masukkan password admin LDAP)
    adding new entry "ou=users,dc=excellent,dc=co,dc=id"
  • Memastikan ou=users sudah berhasil ditambahkan dengan perintah berikut:
    # ldapsearch -x -H ldapi:/// -b dc=excellent,dc=co,dc=id dn
    .....
    # excellent.co.id
    dn: dc=excellent,dc=co,dc=id
    
    # users, excellent.co.id
    dn: ou=users,dc=excellent,dc=co,dc=id

Pengecekan Akun Email Zimbra

Sebelum kita menambahkan user di LDAP, kita perlu cek dulu ada akun apa saja di Zimbra email server yang akan di integrasikan dengan LDAP karena semua akun email di Zimbra nanti akan kita buat usernya di OpenLDAP. Pengecekan akun-akun yang ada pada email server Zimbra bisa dilakukan melalui zimbraAdmin atau supaya lebih mudah listing-nya kita bisa menjalankan perintah berikut dari CLI:

# su - zimbra
# zmprov -l gaa
admin@aktiva.co.id
spam.akudulw8@aktiva.co.id
ham.ugitoky90u@aktiva.co.id
virus-quarantine.hpdqpoah@aktiva.co.id
arif@aktiva.co.id
ahmad@aktiva.co.id
afatyo@aktiva.co.id
raihan@aktiva.co.id

Pada case kali ini, terdapat 5 akun di email server Zimbra (Akun sistem seperti spam.xxx, ham.xxx, virus-xxx, galsync.xxx dan sejenisnya tidak perlu dihitung karena tidak akan kita buat usernya di OpenLDAP)

Pembuatan Data User OpenLDAP

Jika kita sudah ada list akunnya, maka selanjutnya saya akan membuat atau melakukan import data-data user sesuai dengan akun yang ada di Zimbra. Semua akun yang ada di Zimbra perlu kita buat di OpenLDAP, jika ada 5 akun di Zimbra berarti minimal harus ada 5 user di OpenLDAP (Paling tidak harus ada data-data yang mandatory, seperti uid, givenName, sn, cn & userPassword), karena kalau user di OpenLDAP kurang dari jumlah akun pada email server Zimbra, pasti akan ada beberapa akun di Zimbra yang tidak bisa login dengan pesan error “The username & password is incorrect”. Berikut adalah langkah-langkah yang perlu dilakukan untuk membuat atau melakukan import user di OpenLDAP:

  • Buat file import user dengan nama /srv/import-user-admin.ldif dengan isi sebagai berikut:
    dn: uid=admin,ou=users,dc=excellent,dc=co,dc=id
    objectClass: inetOrgPerson
    givenName: Admin Email
    sn: Server
    cn: Admin Email Server
    uid: admin
    mail: admin@excellent.co.id
    mail: admin@aktiva.co.id
    userPassword: mRoo5V!Fh9mMqJCo2j5W&N3s
    • Atribut yang ada diatas merupakan atribut mandatory ou=users, kecuali mail (Atribut mail nanti bisa kita gunakan untuk mapping username login di email server Zimbra, tapi jika tidak dimasukan juga tidak apa-apa)
    • Atribut yang dimasukan untuk userPassword merupakan password yang akan digunakan untuk login akun ke webmail Zimbra
  • Import user dengan uid=admin menggunakan perintah berikut:
    # ldapadd -x -D cn=admin,dc=excellent,dc=co,dc=id -W -f /srv/import-user-admin.ldif 
    Enter LDAP Password: (Masukkan password admin LDAP)
    adding new entry "uid=admin,ou=users,dc=excellent,dc=co,dc=id"
  • Cek apakah user uid=admin sudah terbuat atau belum dengan perintah berikut:
    # ldapsearch -x -D cn=admin,dc=excellent,dc=co,dc=id -W -b "ou=users,dc=excellent,dc=co,dc=id" "(uid=admin)" -LL
    Enter LDAP Password: (Masukkan password admin LDAP)
    version: 1
    dn: uid=admin,ou=users,dc=excellent,dc=co,dc=id
    objectClass: inetOrgPerson
    givenName: Admin Email
    sn: Server
    cn: Admin Email Server
    uid: admin
    mail: admin@excellent.co.id
    mail: admin@aktiva.co.id
    userPassword:: bVJvbzVWIUZoOW1NcUpDbzJqNVcmTjNz
  • Lakukan tahapan import tersebut untuk user lainnya, pada case kali ini saya perlu membuat 4 user lagi di OpenLDAP:
    • uid=arif
    • uid=ahmad
    • uid=afatyo
    • uid=raihan

Bulk Import User OpenLDAP (Zimbra)

Pada case kali ini, proses import yang saya lakukan relatif cepat karena hanya ada 4 akun email saja, lalu bagaimana kalau data user untuk akun email yang mau kita import lebih dari 10, bahkan mungkin ratusan, bahkan ribuan? Nah, supaya prosesnya tidak terlalu memakan waktu, kita juga bisa melakukan export semua data user yang ada di Zimbra lalu melakukan import secara bulk atau massal. Berikut adalah langkah-langkah yang perlu kita lakukan di Zimbra untuk melakukan export (Kalau rekan-rekan sudah punya ldif yang mau di import, lewati step ini):

  • Silakan download script https://colamen.id/ldap/generate-ldif-export-from-zimbra di untuk export data LDAP Zimbra ke dalam bentuk ldif:
    # cd /srv
    # wget -c https://colamen.id/ldap/generate-ldif-export-from-zimbra
    # chmod u+x generate-ldif-export-from-zimbra
  • Proses export ini bisa memakan, apalagi jika akun yang ada di Zimbra berjumlah banyak. Saran saya, rekan-rekan boleh jalankan aplikasi screen terlebih dahulu, lalu jalankan script di dalam aplikasi screen lalu melakukan export data LDAP Zimbra menggunakan script:
    # /srv/generate-ldif-export-from-zimbra
    Domain DN yang akan digunakan (Contoh: dc=domain,dc=co,dc=id): dc=excellent,dc=co,dc=id
    Tentukan password default untuk user-user di OpenLDAP: mRoo5V!Fh9mMqJCo2j5W&N3s
    Memproses data user dari Zimbra...
    Selesai! File LDIF tersimpan di: /tmp/import_users.ldif
  • Salin file /tmp/import_users.ldif ke server OpenLDAP, boleh ke direktori /srv atau direktori lain

Selanjutnya, baru kita bisa melakukan import list user yang sudah ada di file import_users.ldif ke server OpenLDAP. Berikut adalah perintah untuk melakukan import data ke OpenLDAP:

# ldapadd -x -D cn=admin,dc=excellent,dc=co,dc=id -W -f /srv/import_users.ldif
Enter LDAP Password: (Masukkan password admin LDAP)
adding new entry "uid=arif,ou=users,dc=excellent,dc=co,dc=id"
adding new entry "uid=ahmad,ou=users,dc=excellent,dc=co,dc=id"
adding new entry "uid=afatyo,ou=users,dc=excellent,dc=co,dc=id"
adding new entry "uid=raihan,ou=users,dc=excellent,dc=co,dc=id"

Konfigurasi External Authentication (Zimbra)

Setelah user OpenLDAP siap, kita bisa mengaktifkan external authentication untuk email server Zimbra. Konfigurasi external authentication perlu dilakukan per domain, jadi apabila kita punya beberapa domain maka kita perlu melakukan konfigurasi untuk setiap domain atau bisa juga hanya domain-domain tertentu saja yang mau di integrasikan dengan OpenLDAP. Disini saya menggunakan domain aktiva.co.id di Zimbra (Domain yang menjadi domain DN OpenLDAP boleh berbeda dengan domain yang ada di Zimbra, nanti cukup disesuaikan query filternya saja). Berikut adalah langkah-langkah untuk mengaktifkan external authentication OpenLDAP di Zimbra:

  • Login ke zimbraAdmin
  • Pilih Configure | Domains
  • Klik kanan pada domain yang dimaksud lalu pilih Configure Authentication

  • Pilih External LDAP
  • Masukan data-data berikut:

    • LDAP server name: ip-address-ldap
    • LDAP filter: uid=%u
      • Pakai %u jika domain DN OpenLDAP berbeda dengan domain di email server
      • Pakai %n jika domain DN OpenLDAP sama dengan domain di email server (Namun username yang digunakan untuk login ke webmail harus lengkap, user@domain.com)
    • LDAP search base: ou=users,dc=excellent,dc=co,dc=id (Sesuaikan dengan domain DN yang digunakan OpenLDAP)
  • Lewati LDAP Bind karena OpenLDAP yang saya buat belum dilengkapi dengan credential untuk query
  • Test salah satu uid password yang sudah import ke OpenLDAP
  • Klik Finish
  • Testing login ke webmail dengan salah satu uid sebagai username dan passwordnya di OpenLDAP

Apa yang Terjadi Kalau Users OpenLDAP Tidak Lengkap?

Apabila semua akun pada email server Zimbra tidak ditambahkan ke OpenLDAP, maka yang terjadi adalah sebagai berikut (Misalnya di OpenLDAP hanya ada uid=admin):

  • Bisa Login:
    • Username: admin
      • Password: (Password uid=admin di OpenLDAP)
    • Username: arif
      • Password: (Password uid=raihan di OpenLDAP)
  • Tidak Bisa Login:
    • Username: admin
      • Password: (Password akun admin di Zimbra)
    • Username: arif
      • Password: (Password akun admin di Zimbra)
    • Username: ahmad
      • Password: (Password akun admin di Zimbra)
    • Username: afatyo
      • Password: (Password akun admin di Zimbra)
    • Username: raihan
      • Password: (Password akun admin di Zimbra)
2026-03-31 14:53:03,732 INFO [qtp350068407-112://localhost:8080/service/soap/BatchRequest] [name=raihan@aktiva.co.id;oip=192.168.50.51, 192.168.6.232;ua=zclient/10.1.16_GA_4850;soapId=40d7a4be;] account - Error occurred during authentication: authentication failed for [raihan]. Reason: external LDAP auth failed, LDAP error: - unable to ldap authenticate: invalid credentials.
2026-03-31 14:53:03,732 INFO [qtp350068407-112://localhost:8080/service/soap/BatchRequest] [name=raihan@aktiva.co.id;oip=192.168.50.51, 192.168.6.232;ua=zclient/10.1.16_GA_4850;soapId=40d7a4be;] SoapEngine - handler exception: authentication failed for [raihan], external LDAP auth failed, LDAP error: - unable to ldap authenticate: invalid credentials

Apabila proses integrasi yang dilakukan berhasil, berarti OpenLDAP sudah siap digunakan sebagai directory service. Apabila rekan-rekan mengalami kesulitan atau ada kebutuhan konfigurasi LDAP, Excellent menyediakan layanan implementasi LDAP dan sudah mencakup integrasi external authentication diatas. Bagi rekan-rekan yang berminat untuk jasa layanan tersebut bisa langsung kontak & tanya-tanya ke email sales@excellent.co.id.

Leave a Reply

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