Email errors sering bikin pusing, apalagi kalau lagi urgent kirim email penting atau campaign marketing. Error code seperti 550 relay denied, 554 rejected, atau 421 temporarily deferred muncul tiba-tiba tanpa penjelasan yang jelas.
Nah, di artikel ini kita bakal breakdown masing-masing error, mulai dari artinya, penyebabnya, sampai cara fix-nya step-by-step. Jadi next time muncul error, kalian bisa baca kode-nya kayak pro dan langsung tahu harus ngapain.
Apa Itu SMTP Error Codes?
SMTP (Simple Mail Transfer Protocol) itu protokol standar buat kirim email. Setiap kali ada masalah, server bakal ngirim kode error 3 digit yang nunjukin apa yang salah.
Struktur kode error SMTP:
| Digit Pertama | Arti | Contoh |
|---|---|---|
| 2xx | Success | 250 OK (email terkirim) |
| 4xx | Temporary Failure | 421, 451 (coba lagi nanti) |
| 5xx | Permanent Failure | 550, 554 (harus diperbaiki dulu) |
Digit kedua dan ketiga nunjukin detail spesifik error-nya. Yang sering bikin pusing itu yang 4xx dan 5xx, karena email nggak kekirim.
550 Relay Denied
Error 550 relay denied atau “550 5.7.1 Unable to relay” itu artinya server email nolak untuk meneruskan (relay) email lo ke tujuan.
Kenapa Bisa Muncul?
Biasanya karena:
- Belum autentikasi ke SMTP server
- IP address atau domain di-blacklist
- SPF/DKIM record salah atau belum dikonfigurasi
- Mencoba relay dari IP yang nggak diizinkan
- Reverse DNS (rDNS) nggak sesuai
Ciri-Cirinya
- Email stuck di outbox
- Langsung dapet bounce back
- Pesan error: “Relay access denied” atau “Unable to relay”
Cara Fix 550 Relay Denied
Step 1: Cek Autentikasi SMTP
Pastikan email client sudah login dengan benar:
# Contoh konfigurasi SMTP yang benar
SMTP Server: smtp.domainlo.com
Port: 587 (TLS) atau 465 (SSL)
# Jangan pakai port 25 untuk client!
Authentication: Required
Username: email@domainlo.com
Password: ********
Encryption: STARTTLS atau SSL/TLS
Di Thunderbird atau Outlook, centang opsi “My server requires authentication”.
Step 2: Verifikasi SPF Record
SPF (Sender Policy Framework) itu DNS record yang nunjukin server mana yang boleh kirim email atas nama domain lo.
Cek SPF record:
# Cek SPF pakai dig
dig TXT domainlo.com +short
# Atau pakai nslookup
nslookup -type=txt domainlo.com
Hasil yang benar kira-kira gini:
"v=spf1 include:_spf.google.com include:mailgun.org ~all"
Kalau belum ada, tambahkan di DNS management:
Type: TXT
Host: @
Value: v=spf1 ip4:123.45.67.89 include:_spf.google.com ~all
TTL: 3600
Penjelasan:
ip4:123.45.67.89= IP server lo boleh kiriminclude:_spf.google.com= Google juga boleh (kalau pakai Gmail)~all= Soft fail (email masih diterima tapi di-flag)
Step 3: Cek Blacklist Status
Cek apakah IP lo kena blacklist:
# Cek IP publik lo dulu
curl ifconfig.me
# Terus cek di MXToolbox atau pakai command line:
dig +short 89.67.45.123.zen.spamhaus.org
# Kalau hasilnya 127.0.0.x berarti kena blacklist
Tools online yang recommended:
- MXToolbox Blacklist Check: mxtoolbox.com/blacklists.aspx
- Spamhaus: check.spamhaus.org
- MultiRBL: multirbl.valli.org
Kalau kena blacklist, ikuti prosedur delisting di masing-masing RBL (Real-time Blackhole List).
Step 4: Konfigurasi Reverse DNS (rDNS)
rDNS itu mapping dari IP ke domain (kebalikan dari DNS biasa).
Cek rDNS:
dig -x 123.45.67.89 +short
Harusnya keluar domain lo, misalnya mail.domainlo.com. Kalau nggak match, kontak ISP atau hosting provider buat set rDNS.
554 Rejected
Error 554 rejected itu lebih umum dan bisa berarti banyak hal. Variasi pesannya:
- “554 5.7.1 Message rejected due to content policy”
- “554 transaction failed”
- “554 Message refused”
Kenapa Bisa Muncul?
- Konten dianggap spam (terlalu banyak link, kata-kata mencurigakan)
- Domain/IP reputation jelek
- Rate limiting (kirim terlalu banyak email dalam waktu singkat)
- Attachment mencurigakan (.exe, .zip, .scr)
- Virus/malware terdeteksi di email
Ciri-Cirinya
- Bounce message panjang dengan detail “policy”
- Kadang ada link ke postmaster page
- Bisa terjadi saat kirim ke provider tertentu (Gmail, Yahoo, Outlook)
Cara Fix 554 Rejected
Step 1: Baca Pesan Error Lengkap
Jangan cuma lihat “554”, tapi baca seluruh pesan. Contoh:
554 5.7.1 [GL01] Message from 123.45.67.89 rejected
due to policy reasons. Please visit https://postmaster.yahoo.com/
Kode [GL01] itu petunjuk spesifik dari Yahoo. Search kode tersebut untuk solusi tepat.
Step 2: Periksa Konten Email
Hindari elemen yang trigger spam filter:
❌ Hindari:
- Subjek ALL CAPS atau banyak tanda seru!!!
- Kata-kata: “FREE”, “Click here”, “Act now”, “Limited time”
- Terlalu banyak link (ratio text:link < 60:40)
- Attachment: .exe, .zip, .scr, .js
- HTML berantakan atau broken tags
✅ Lakukan:
- Personalisasi subject dan body
- Plain text version selalu sertakan
- Unsubscribe link yang jelas (wajib untuk marketing email)
- Test dengan Mail Tester dulu
Step 3: Cek Sender Reputation
Score reputation kalian bisa cek di:
# Sender Score (perlu login gratis)
https://www.senderscore.org/
# Google Postmaster Tools (untuk Gmail)
https://postmaster.google.com/
# Microsoft SNDS (untuk Outlook/Hotmail)
https://sendersupport.olc.protection.outlook.com/snds/
Sender Score interpretasi:
- 90-100: Excellent
- 80-89: Good
- 70-79: Fair (perhatian)
- 0-69: Poor (perlu perbaikan serius)
Step 4: Kurangi Sending Rate
Kalau kirim bulk email, jangan langsung bomb:
# Contoh rate limiting dengan Postfix
# Di file /etc/postfix/main.cf:
default_destination_rate_delay = 1s
default_destination_concurrency_limit = 20
Rule of thumb:
- Shared hosting: max 100 email/jam
- VPS dengan dedicated IP: max 1000 email/jam (setelah warmup)
- Email marketing service: ikuti guideline provider
Step 5: Request Whitelist/Delisting
Kalau persisten, kontak postmaster:
To: postmaster@yahoo.com / abuse@yahoo.com / support@google.com
Subject: Request Review for IP 123.45.67.89
Body:
- IP Address: 123.45.67.89
- Domain: domainlo.com
- Problem: Email rejected with 554 error
- Action taken: [jelaskan perbaikan yang sudah dilakukan]
- Sample email: [lampirkan header email yang reject]
421 Temporarily Deferred
Error 421 temporarily deferred itu artinya server sementara nolak, tapi bukan permanent. Pesan umum:
- “421 4.7.1 Try again later”
- “421 Service not available”
- “421 Server busy”
Kenapa Bisa Muncul?
- Greylisting: Teknik anti-spam, suruh pengirim coba lagi nanti
- Server overload: Terlalu banyak traffic
- Rate limiting: ISP batasi sementara
- DNS temporary failure: Resolver sementara bermasalah
- Maintenance: Server tujuan lagi di-update
Ciri-Cirinya
- Email masuk queue (antrian), nggak langsung reject
- Biasanya ada kata “temporary” atau “try again”
- Email client akan retry otomatis
Cara Fix 421 Temporarily Deferred
Step 1: Identifikasi Jenis 421
Baca baik-baik pesan lengkap:
421 4.7.1 [TS01] Messages from 123.45.67.89 temporarily
deferred due to user complaints
Kalau ada kata “user complaints” atau “reputation”, itu bukan temporary biasa, tapi masalah reputation yang harus di-fix.
Step 2: Untuk Greylisting (Normal Case)
Greylisting itu teknik server suruh email server pengirim “coba lagi” setelah delay. Server yang legitimate bakal retry, sementara spam server biasanya nggak.
Ciri greylisting:
- Pesan: “Greylisted, please try again in 300 seconds”
- Delay: 5-15 menit pertama kali kirim ke domain tersebut
Solusi:
- Nggak perlu ngapa-ngapain, email server akan retry otomatis
- Jangan manual resend berkali-kali (bisa dianggap spam)
- Pastikan retry interval sesuai standar
Step 3: Konfigurasi Retry Policy yang Benar
Di Postfix, konfigurasi retry:
# /etc/postfix/main.cf
# Initial retry interval
minimal_backoff_time = 300s # 5 menit
maximal_backoff_time = 4000s # ~1 jam
# Maksimal waktu retry (setelah ini dianggap permanent)
maximal_queue_lifetime = 2d # 2 hari
bounce_queue_lifetime = 2d
# Jumlah retry
smtp_destination_concurrency_limit = 10
Exponential backoff pattern:
- Retry 1: 5 menit
- Retry 2: 15 menit
- Retry 3: 30 menit
- Retry 4: 1 jam
- Retry 5: 4 jam
- dst…
Step 4: Cek Server Status Tujuan
Kalau semua email ke Gmail deferred, cek status Google:
# Cek MX record Gmail
nslookup -type=mx gmail.com
# Cek apakah server up
telnet gmail-smtp-in.l.google.com 25
# Atau
nc -vz gmail-smtp-in.l.google.com 25
Cek juga status page:
- Google Workspace Status: google.com/appsstatus
- Microsoft 365 Status: status.office365.com
Step 5: Kalau Persisten >24 Jam
Kalau 421 terus-terusan lebih dari sehari:
# Cek queue email yang stuck
mailq
# atau
postqueue -p
# Flush queue manual (force retry)
postqueue -f
# Hapus email tertentu dari queue
postsuper -d MESSAGE_ID
Tindakan lanjut:
- Cek IP reputation (mungkin di-greylist terus karena reputation jelek)
- Setup dedicated IP (kalau shared IP bermasalah)
- Kontak support provider email tujuan
Bonus: Error Codes Lain yang Sering Muncul
451 Temporary Local Problem
451 4.3.0 Temporary local problem - please try later
Arti: Server penerima ada masalah internal (disk full, database error, dll).
Solusi: Tunggu 30-60 menit, retry otomatis biasanya berhasil.
452 Too Many Recipients
452 4.5.3 Too many recipients
Arti: Batas jumlah penerima per email terlampaui (biasanya max 100/orang).
Solusi: Bagi ke beberapa batch kirim.
571 Delivery Not Authorized
571 5.7.1 Delivery not authorized, message refused
Arti: Policy strict di server penerima (DKIM/SPF wajib tapi nggak valid).
Solusi: Perbaiki DNS record authentication.
550 Mailbox Unavailable
550 5.1.1 Mailbox unavailable or not found
Arti: Alamat email tujuan nggak ada.
Solusi: Cek typo, hapus dari list (hard bounce).
Tools untuk Diagnosa Email Errors
1. MXToolbox (All-in-One)
# Cek MX, SPF, DKIM, DMARC, Blacklist
https://mxtoolbox.com/
Fitur:
- MX Lookup
- SPF Record Check
- Blacklist Check
- SMTP Test
- Header Analyzer
2. Mail Tester (Spam Score)
Kirim email ke alamat unik yang digenerate, terus dapet score 0-10:
https://www.mail-tester.com/
Target: Score 8+ untuk inbox placement yang bagus.
3. Google Admin Toolbox
https://toolbox.googleapps.com/apps/checkmx/
Cek konfigurasi MX record untuk Google Workspace.
4. OpenSSL (Manual SMTP Test)
Test koneksi SMTP manual:
# Test TLS connection
openssl s_client -connect smtp.gmail.com:587 -starttls smtp
# Setelah connect, coba handshake SMTP:
EHLO domainlo.com
AUTH LOGIN
# (base64 encoded username)
# (base64 encoded password)
MAIL FROM:<email@domainlo.com>
RCPT TO:<tujuan@gmail.com>
DATA
Subject: Test
Test body.
.
QUIT
5. Log Analysis
Cek log email server untuk detail error:
# Postfix logs
tail -f /var/log/mail.log
grep "550" /var/log/mail.log | tail -20
# Sendmail logs
tail -f /var/log/maillog
# Exim logs
tail -f /var/log/exim/mainlog
Best Practices Biar Email Lo Nggak Ditolak
1. Warm Up IP Baru
Jangan langsung kirim ribuan email dari IP baru:
| Hari | Jumlah Email |
|---|---|
| 1-3 | 50-100/hari |
| 4-7 | 100-300/hari |
| 8-14 | 300-500/hari |
| 15-30 | 500-1000/hari |
| 30+ | Normal volume |
2. Implementasi Authentication Lengkap
Pastikan 3 pillar terpasang:
# SPF (Sender Policy Framework)
v=spf1 ip4:123.45.67.89 include:_spf.google.com ~all
# DKIM (DomainKeys Identified Mail)
default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."
# DMARC (Domain-based Message Authentication)
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@domainlo.com; pct=100"
3. Monitor Bounce Rate
Hard Bounce (permanent) vs Soft Bounce (temporary):
# Hard bounce: langsung hapus dari list
# Soft bounce: retry beberapa kali, baru hapus kalau persisten
# Target metrics:
Hard Bounce Rate: <2%
Soft Bounce Rate: <5%
Complaint Rate: <0.1%
4. List Hygiene
Bersihin email list secara rutin:
# Hapus:
- Email yang hard bounce
- Subscriber yang nggak engage >6 bulan
- Duplicate addresses
- Role accounts (admin@, support@, noreply@) kalau B2C
5. Feedback Loop (FBL)
Daftar ke feedback loop provider besar:
- Google: postmaster.google.com
- Microsoft: sendersupport.olc.protection.outlook.com
- Yahoo: postmaster.yahoo.com
- SpamCop: spamcop.net
FBL ngirim notifikasi kalau user mark email lo sebagai spam, jadi bisa langsung remove dari list.
FAQ
Q: Kenapa email saya masuk spam padahal nggak ada error?
A: Nggak ada error SMTP nggak jamin masuk inbox. Cek:
- Content (terlalu promotional?)
- Authentication (SPF/DKIM/DMARC valid?)
- Reputation (IP/domain pernah kirim spam?)
- Engagement (user sering open/reply atau nggak?)
Q: Berapa lama email stuck di queue karena 421?
A: Tergantung konfigurasi maximal_queue_lifetime, biasanya 2-5 hari. Setelah itu dianggap permanent failure dan bounce.
Q: Apakah boleh kirim email dari shared hosting?
A: Boleh, tapi dengan batasan:
- Max ~100-200 email/jam
- IP sering kena blacklist karena user lain
- Better pakai dedicated IP atau third-party SMTP (SendGrid, Mailgun, Amazon SES)
Q: Gimana bedain greylisting vs blacklist?
A:
- Greylisting: Pesan “try again later”, cuma delay sementara, pertama kali ke domain tersebut
- Blacklist: Pesan “rejected”, “denied”, atau “blocked”, permanen sampai di-delist
Q: Apa itu “warm up IP” dan kenapa penting?
A: Provider email (Gmail, Yahoo) tracking behavior IP baru. Kalau langsung kirim volume besar, dianggap spammer. Warm up nunjukin IP lo legitimate dengan volume gradual.
Kesimpulan
Email errors kayak 550, 554, dan 421 itu nggak serumit kelihatannya. Kuncinya:
- Baca pesan error lengkap – Jangan cuma lihat 3 digit awal
- Cek authentication – SPF, DKIM, DMARC wajib valid
- Monitor reputation – IP/domain nggak boleh di-blacklist
- Patuhi rate limit – Jangan greedy kirim terlalu cepat
- Konten berkualitas – Relevant, engaging, nggak spammy
Dengan setup yang bener dan monitoring rutin, delivery rate bisa dijaga di atas 95%. Kalau masih stuck, tools kayak MXToolbox dan Mail Tester jadi sahabat terbaik buat diagnosa.
Ada error spesifik yang belum tercover? Drop di komentar, kita bahas bareng-bareng!