Simulasi Error SMTP 451 Temporary Lookup Failure dengan Postfix

Error 451 Temporary lookup failure sering muncul di lingkungan produksi dan bikin email nyangkut di antrian dengan status deferred. Supaya paham perilakunya tanpa mengganggu server klien, saya buat lab kecil berisi dua VM Postfix, satu sebagai pengirim dan satu sebagai penerima. Panduan ini mencakup instalasi, pengujian normal, simulasi error 451, lalu pemulihan ke kondisi normal.

Informasi lab

PeranHostnameIPOS
Pengirimsender.lab192.168.14.22Ubuntu 24.04
Penerimareceiver.lab192.168.14.23Ubuntu 24.04

Prasyarat: akses root di kedua VM, koneksi internet untuk instalasi paket, dan kedua VM berada di segmen jaringan yang sama.

1. Persiapan

Tambahkan entri berikut di /etc/hosts pada kedua server:

192.168.14.22 sender.lab
192.168.14.23 receiver.lab

Set hostname sesuai perannya:

hostnamectl set-hostname sender.lab

Pastikan saling terjangkau:

ping -c 3 receiver.lab

2. Instalasi Postfix

Jalankan di kedua server:

apt update
apt install postfix mailutils -y

Saat wizard muncul, pilih Internet Site, lalu isi System mail name dengan sender.lab atau receiver.lab sesuai server.

Cek status service:

systemctl status postfix

Status harus active (running).

3. Konfigurasi server penerima

Edit /etc/postfix/main.cf di receiver, pastikan baris berikut ada:

myhostname = receiver.lab
mydestination = receiver.lab, localhost.lab, localhost
inet_interfaces = all
mynetworks = 127.0.0.0/8, 192.168.14.0/24

Buat akun lokal sebagai tujuan email:

adduser user
systemctl restart postfix

Verifikasi Postfix listen di port 25:

ss -tlnp | grep :25

Output:

4. Konfigurasi server pengirim

Secara default Postfix mencari tujuan lewat DNS (smtp_host_lookup = dns), jadi entri /etc/hosts saja tidak cukup. Karena di lab ini tidak ada DNS internal, arahkan langsung ke IP receiver. Edit /etc/postfix/main.cf di sender:

myhostname = sender.lab
relayhost = [192.168.50.20]

Tanda kurung siku [ ] membuat Postfix melewati pencarian MX dan langsung konek ke IP tersebut. Lalu reload:

systemctl reload postfix

Uji koneksi SMTP dari sender:

telnet receiver.lab 25

Harus muncul banner seperti 220 receiver.lab ESMTP Postfix. Keluar dengan mengetik quit.

5. Uji pengiriman normal

Kirim email percobaan dari sender:

echo "Test kondisi normal" | mail -s "SMTP Test" user@receiver.lab

Pantau log di sender:

tail -f /var/log/mail.log

Output yang benar:

2026-07-24T07:37:35.394338+00:00 sender postfix/smtp[27206]: 4DD982C6: to=<user@receiver.lab>, relay=192.168.14.23[192.168.14.23]:25, delay=0.09, delays=0.02/0.02/0.03/0.01, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 5A88D6AF79)

Ini jadi baseline sebelum kita rusak sengaja.

6. Simulasi error 451

Di server penerima, tambahkan restriction berikut di /etc/postfix/main.cf:

smtpd_recipient_restrictions =
    check_recipient_access hash:/etc/postfix/recipient_access,
    permit_mynetworks,
    reject_unauth_destination

Buat file /etc/postfix/recipient_access dengan isi:

user@receiver.lab 451 4.3.0 Temporary lookup failure

Format 4NN text di access table membuat Postfix membalas dengan kode dan pesan tersebut. Kode 4.3.0 ditulis eksplisit supaya DSN di sisi pengirim sama persis dengan kasus produksi. Generate database lalu reload:

postmap /etc/postfix/recipient_access
systemctl reload postfix

Catatan: jika postmap gagal karena tipe hash tidak tersedia, cek dengan postconf -m dan ganti ke lmdb.

7. Uji ulang dan baca log

Kirim lagi dari sender:

echo "Test 451" | mail -s "451 test" user@receiver.lab

Log di sender akan berbunyi:

2026-07-24T07:53:18.718740+00:00 sender postfix/smtp[27250]: 9CED3332: to=<user@receiver.lab>, relay=192.168.14.23[192.168.14.23]:25, delay=0.09, delays=0.03/0.01/0.03/0.01, dsn=4.3.0, status=deferred (host 192.168.14.23[192.168.14.23] said: 451 4.3.0 <user@receiver.lab>: Recipient address rejected: Temporary lookup failure (in reply to RCPT TO command))

Cek antrian:

postqueue -p

Output

Email tetap tertahan dan akan dicoba ulang sesuai maximal_queue_lifetime (default 5 hari). Ini yang membedakan error 4xx dari 5xx.

8. Kembalikan ke kondisi normal

Kosongkan file access lalu regenerate:

: > /etc/postfix/recipient_access
postmap /etc/postfix/recipient_access
systemctl reload postfix

Paksa antrian jalan lagi:

postqueue -f

Log akan berubah menjadi dsn=2.0.0, status=sent dengan balasan 250 2.0.0 Ok.

2026-07-24T07:56:01.180149+00:00 sender postfix/qmgr[27194]: 9CED3332: from=<root@sender.lab>, size=317, nrcpt=1 (queue active)
2026-07-24T07:56:01.258620+00:00 sender postfix/smtp[27271]: 9CED3332: to=<user@receiver.lab>, relay=192.168.14.23[192.168.14.23]:25, delay=163, delays=163/0.03/0.04/0.01, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 314AD6AF79)
2026-07-24T07:56:01.258793+00:00 sender postfix/qmgr[27194]: 9CED3332: removed

Ringkasan

SkenarioBalasan SMTPStatus di antrian
Server penerima normal250 2.0.0 Oksent
Gangguan sementara di penerima451 4.3.0 Temporary lookup failuredeferred, retry otomatis
Alamat ditolak permanen550 5.x.xbounced, tidak retry

Troubleshoot

GejalaPenyebabSolusi
Host or domain name not foundSender masih pakai lookup DNSSet relayhost = [IP_RECEIVER] atau smtp_host_lookup = native, dns
Connection refused port 25inet_interfaces = loopback-only atau firewallSet inet_interfaces = all, buka port 25
Relay access deniedDomain tujuan tidak ada di mydestinationTambahkan receiver.lab ke mydestination
554 Too many hopsMail loop antar serverPeriksa relayhost, mydestination, dan transport_maps
/var/log/mail.log kosongrsyslog tidak terpasangGunakan journalctl -u postfix -f

Lab ini cukup ringan tapi mencakup pola error yang paling sering ditemui saat troubleshooting Postfix, Zimbra, Carbonio, maupun SMTP relay. Semoga bermanfaat.

Referensi

Comments

Leave a Reply

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