Beberapa waktu lalu, saya menemukan satu hal setelah melakukan upgrade in-place pada server Carbonio. Pengiriman email lokal (local delivery) gagal dan log Postfix menunjukkan error 451 4.3.0 Temporary lookup failure yang sekilas terlihat seperti masalah LDAP atau DNS.
Awalnya saya juga mengira penyebabnya adalah layanan LDAP yang tidak berjalan atau DNS lokal bermasalah. Namun setelah melakukan pengecekan lebih dalam, ternyata penyebabnya sama sekali berbeda. Masalah terjadi karena Postfix tidak memiliki izin membaca file konfigurasi LDAP yang digunakan untuk melakukan lookup account dan domain.
Panduan ini membahas langkah-langkah troubleshooting hingga menemukan akar penyebabnya.
Kendala
Saat mengirim email muncul log seperti berikut.
postfix/proxymap: warning: ldap:/opt/zextras/conf/ldap-transport.cf is unavailable.
open /opt/zextras/conf/ldap-transport.cf: Permission denied
postfix/trivial-rewrite: warning:
virtual_alias_domains lookup failure
451 4.3.0 Temporary lookup failure
Karena Postfix gagal melakukan lookup ke LDAP, proses penerimaan email langsung ditolak. Ternyata permission ditolak pada file /opt/zextras/conf/ldap-transport.cf untuk user group postfix.
Analisis Awal
Awalnya saya melakukan beberapa pengecekan berikut.
Memastikan service LDAP berjalan
su - zextras
systemctl list-units -all carbonio-*
Semua service berjalan normal.
Memastikan DNS berjalan
Saya juga mengecek dnsmasq.
systemctl status dnsmasq
Memeriksa permission file LDAP
Saya mengecek seluruh file konfigurasi LDAP yang digunakan Postfix.
ls -l /opt/zextras/conf/ldap-*.cf
Hasilnya:
-rw-r----- 1 zextras zextras ldap-transport.cf
-rw-r----- 1 zextras zextras ldap-vad.cf
-rw-r----- 1 zextras zextras ldap-vmd.cf
Sekilas permission tersebut terlihat normal.
Namun saya mencoba membaca file menggunakan user Postfix.
su -s /bin/bash postfix
Kemudian:
cat /opt/zextras/conf/ldap-transport.cf
Hasilnya:
Permission denied
Di sinilah penyebab utama mulai terlihat.
Mengapa Bisa Terjadi?
Service SMTP dijalankan oleh user postfix.
ps -ef | grep smtpd
Output:
postfix .... smtpd
Sementara file konfigurasi LDAP dimiliki oleh:
Owner : zextras
Group : zextras
Permission : 640
Artinya hanya:
- owner (
zextras) - group (
zextras)
yang dapat membaca file tersebut.
Karena user postfix bukan anggota group zextras, maka Postfix tidak dapat membaca file konfigurasi LDAP.
Akibatnya seluruh proses lookup gagal.
Postfix
│
▼
ldap-transport.cf
│
Permission denied
│
▼
LDAP lookup gagal
│
▼
451 Temporary lookup failure
Membandingkan Dengan Server Carbonio yang Normal
Saya kemudian membandingkan dengan server Carbonio lain yang berjalan normal.
Server yang sehat memiliki permission berikut.
-rw-r----- 1 zextras postfix ldap-transport.cf
Perbedaannya hanya pada group ownership.
| Server | Owner | Group |
|---|---|---|
| Server error | zextras | zextras |
| Server normal | zextras | postfix |
Karena group sudah menggunakan postfix, service SMTP dapat membaca file tanpa perlu memberikan permission ke user lain.
Solusi
Saya mengubah group ownership seluruh file LDAP menjadi postfix.
chown zextras:postfix /opt/zextras/conf/ldap-*.cf
chmod 640 /opt/zextras/conf/ldap-*.cf
Kemudian restart layanan MTA.
systemctl restart carbonio-mta.target
Setelah itu saya kembali mencoba membaca file menggunakan user postfix.
su -s /bin/bash postfix
cat /opt/zextras/conf/ldap-transport.cf
File sudah dapat dibaca tanpa error.
Penyebab Permission Berubah
Sampai artikel ini ditulis saya belum tau penyebab pastinya. Namun ada beberapa kemungkinan:
- Upgrade Carbonio mengubah ownership file.
- Script maintenance atau proses regenerasi konfigurasi membuat ulang file LDAP.
- Restore konfigurasi dari backup dengan ownership berbeda.
- Perubahan manual menggunakan
chown.
Tips Sebelum Mengubah Permission
Saya tidak menyarankan menggunakan:
chmod 644 /opt/zextras/conf/ldap-*.cf
karena file tersebut berisi informasi autentikasi LDAP seperti:
bind_dn
bind_pw
Memberikan permission 644 berarti seluruh user lokal pada server dapat membaca credential LDAP.
Solusi yang lebih aman adalah tetap menggunakan permission 640, namun memastikan group ownership sesuai dengan yang dibutuhkan oleh Postfix.
Penutup
Error 451 Temporary lookup failure tidak selalu berarti LDAP atau DNS sedang bermasalah. Pada kasus ini penyebab sebenarnya adalah Postfix tidak dapat membaca file konfigurasi LDAP akibat perubahan group ownership.
Jika menemukan log seperti:
open /opt/zextras/conf/ldap-transport.cf: Permission denied
Periksa ownership dan permission file konfigurasi LDAP dan pastikan ownership dan permission sesuai. Perubahan kecil pada group ownership dapat menyebabkan seluruh proses lookup gagal dan membuat layanan email tidak dapat berfungsi sebagaimana mestinya.


Leave a Reply