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
| Peran | Hostname | IP | OS |
|---|---|---|---|
| Pengirim | sender.lab | 192.168.14.22 | Ubuntu 24.04 |
| Penerima | receiver.lab | 192.168.14.23 | Ubuntu 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
| Skenario | Balasan SMTP | Status di antrian |
|---|---|---|
| Server penerima normal | 250 2.0.0 Ok | sent |
| Gangguan sementara di penerima | 451 4.3.0 Temporary lookup failure | deferred, retry otomatis |
| Alamat ditolak permanen | 550 5.x.x | bounced, tidak retry |
Troubleshoot
| Gejala | Penyebab | Solusi |
|---|---|---|
Host or domain name not found | Sender masih pakai lookup DNS | Set relayhost = [IP_RECEIVER] atau smtp_host_lookup = native, dns |
Connection refused port 25 | inet_interfaces = loopback-only atau firewall | Set inet_interfaces = all, buka port 25 |
Relay access denied | Domain tujuan tidak ada di mydestination | Tambahkan receiver.lab ke mydestination |
554 Too many hops | Mail loop antar server | Periksa relayhost, mydestination, dan transport_maps |
/var/log/mail.log kosong | rsyslog tidak terpasang | Gunakan 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.







