Tag: ldap

  • Mengatasi Error 451 4.3.0 Temporary lookup failure  di Carbonio

    Mengatasi Error 451 4.3.0 Temporary lookup failure di Carbonio

    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.

    ServerOwnerGroup
    Server errorzextraszextras
    Server normalzextraspostfix

    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.