Email OTP (One-Time Password) adalah bagian kritis dari sistem keamanan Anda. Ketika email OTP tidak sampai ke pengguna, mereka tidak bisa masuk, reset password, atau menyelesaikan verifikasi dua faktor. Hasilnya: bounce rate naik, frustasi pengguna meningkat, dan Anda kehilangan transaksi.
Masalah ini bukan kebetulan. Email OTP sering ditangkap oleh spam filter, terhambat oleh ISP, atau ditolak oleh sistem autentikasi email. Artikel ini menjelaskan penyebab sebenarnya dan solusi praktis yang bisa langsung Anda terapkan.
Mengapa Email OTP Tidak Terkirim?
Ketika email OTP tidak sampai, masalahnya jarang sekali karena "ISP down" atau kebetulan. Biasanya ada satu atau lebih dari faktor berikut:
- SPF/DKIM tidak dikonfigurasi atau salah.Gmail dan Yahoo memerlukan kedua record ini untuk membuktikan bahwa Anda benar-benar pemilik domain pengirim. Tanpa keduanya, email sering tertahan atau masuk folder Spam.
- Domain memiliki reputasi buruk.Jika domain Anda sebelumnya digunakan untuk spam atau memiliki bounce rate tinggi, ISP akan memfilter email-email berikutnya secara otomatis.
- Throttling atau rate limiting.ISP seperti Gmail dan Yahoo membatasi jumlah email yang diterima dari satu IP dalam waktu tertentu. Jika Anda mengirim OTP untuk 1000 pengguna dalam 1 menit, sebagian akan ditolak atau tertunda.
- Hosting atau SMTP provider punya reputasi buruk.Jika Anda menggunakan hosting murah tanpa SMTP terpisah atau plugin default WordPress/WooCommerce, server Anda berbagi IP dengan ribuan pengguna lain, dan reputasi IP itu buruk.
- Tidak ada one-click unsubscribe.Google dan Yahoo memerlukan link one-click unsubscribe di setiap email transaksional yang berisi promosi. Tanpa itu, email bisa ditandai sebagai spam secara otomatis.
SPF, DKIM, dan DMARC untuk Email OTP
Email OTP adalah email transaksional — artinya, tidak ada promosi dan tidak ada link yang bisa diubah-ubah. Namun, email itu tetap perlu terautentikasi dengan ketat. Inilah mengapa SPF dan DKIM sangat penting.
SPF (Sender Policy Framework)memberitahu ISP: "Email dari domain saya hanya boleh dikirim dari server-server IP tertentu." Tanpa SPF, ISP tidak tahu apakah email benar-benar dari Anda atau palsu.
DKIM (DomainKeys Identified Mail)menambahkan tanda tangan digital ke setiap email. ISP memverifikasi tanda tangan itu menggunakan public key yang ada di DNS Anda. Jika DKIM valid, ISP lebih percaya dengan email Anda.
DMARC (Domain-based Message Authentication, Reporting and Conformance)menentukan apa yang harus dilakukan ISP jika email gagal SPF atau DKIM. Minimal, atur DMARC ke p=none(hanya laporkan, jangan reject) sambil Anda masih setup, kemudian naik ke p=quarantine(pisahkan email yang gagal) atau p=reject(tolak sama sekali) setelah semua terautentikasi.
Reputasi Domain dan IP
Meskipun SPF dan DKIM sudah benar, ISP masih bisa menolak email OTP jika reputasi domain atau IP Anda buruk. Ini terjadi khususnya di Indonesia, di mana banyak domain dan IP yang sebelumnya digunakan untuk spam.
Beberapa cara untuk memeriksa reputasi:
- Postmaster Tools Gmail.Masuk ke postmaster.google.com dan periksa "Spam rate" Anda. Jika di atas 0,3%, Google akan mulai menolak email Anda. Jika berada di kisaran ini, kurangi volume atau tingkatkan kualitas engagement.
- Microsoft SNDS atau Outlook Postmaster Tools.Untuk Yahoo dan Outlook, periksa apakah IP Anda ada di daftar abuse atau sedang dithrottle.
- Tools pihak ketiga.Check.live-direct-marketing.onlinemenawarkan test placement inbox gratis — Anda bisa mengirim OTP test ke seed addresses di Gmail, Yahoo, Outlook, dan lainnya, dan lihat apakah masuk Inbox atau Spam secara real-time dengan screenshot.
Jika reputasi buruk, solusinya adalah "warming up" domain Anda. Mulai dari volume kecil (puluhan email per hari), tunggu beberapa minggu sampai ISP percaya, kemudian naikkan perlahan.
Throttling dan Rate Limiting
ISP seperti Gmail dan Yahoo tidak langsung menolak email dalam jumlah besar — mereka membatasi kecepatan (throttle). Contohnya, Google bisa menerima maksimal puluhan email per detik dari satu IP. Jika Anda mengirim lebih cepat, sisanya akan tertunda atau gagal.
Di Indonesia, banyak startup dan UMKM yang memakai WordPress/WooCommerce dengan plugin mail default atau hosting murah tanpa SMTP terpisah. Server-server ini punya IP shared dengan ribuan pengguna lain, dan limit-nya sangat ketat. Hasilnya, OTP untuk 100 pengguna bisa memakan waktu berjam-jam.
Solusi:
- Gunakan SMTP provider terpisah(bukan mail() default), misalnya dedicated SMTP atau ESP yang punya IP reputation bagus. Ini jauh lebih murah daripada mengatasi masalah bounce nantinya.
- Implementasikan queue system(antrian). Jangan kirim OTP langsung saat user request. Masukkan ke antrian (Redis/BullMQ), kemudian worker mengirim dengan jeda aman untuk menghindari throttle.
- Monitor delivery timing.Catat berapa lama OTP terkirim dari user request sampai email diterima ISP. Jika rata-rata 1–2 menit, itu normal. Jika 1 jam atau lebih, ada masalah throttle atau queue backlog.
Testing OTP Delivery Sebelum Produksi
Kesalahan terbesar adalah meluncurkan sistem OTP ke 1000 pengguna tanpa test terlebih dahulu. Setelah masalah muncul, sulit untuk fix cepat.
Sebelum go live, lakukan:
- Test dengan seed addresses.Gunakan alat seperti check.live-direct-marketing.onlineuntuk mengirim OTP test ke seed addresses di 20+ provider (Gmail, Yahoo, Outlook, Mail.ru, dan lainnya). Lihat apakah masuk Inbox atau Spam, dan dapatkan screenshot rendering di perangkat nyata dengan light/dark mode.
- Periksa header email.Tools deliverability sering menunjukkan apakah SPF/DKIM/DMARC passed atau failed. Jika failed, jangan lanjutkan produksi — fix dulu di DNS.
- Test dengan volume bertahap.Mulai dengan 10 OTP per jam, monitor deliverability rate selama 24 jam. Jika 99% sampai, naikkan ke 100 per jam. Terus sampai mencapai volume target Anda.
- Catat error logs.Simpan log setiap attempt pengiriman OTP: timestamp, user email, status (sent/bounced/throttled), delay. Ini sangat berguna untuk debug nanti jika ada complaint.
Gunakan check.live-direct-marketing.onlineuntuk mengirim OTP test ke inbox seeds di Gmail, Yahoo, Outlook, dan provider lainnya. Layanan ini gratis, tanpa perlu registrasi, dan menampilkan screenshot rendering email di mailbox real sesuai light/dark mode. Ini jauh lebih berguna daripada tools generik seperti mail-tester, karena Anda langsung lihat email Anda masuk mana — Inbox, Spam, Promotions, atau folder khusus.
Solusi Praktis Langkah demi Langkah
Jika OTP Anda sedang tidak terkirim, ikuti checklist ini:
- Verifikasi SPF dan DKIM di DNS.Minta tim DevOps atau shared hosting provider Anda untuk memastikan record SPF dan DKIM sudah ada dan benar. Jika belum, tambahkan sekarang.
- Set DMARC ke p=none.Ini memungkinkan ISP untuk melaporkan email yang gagal auth tanpa menolaknya langsung. Monitor report DMARC selama 1–2 minggu.
- Periksa reputasi di Postmaster Tools Gmail.Jika spam rate di atas 0,3%, kurangi volume atau segmentasi audience (kirim ke email yang engagement-nya bagus dulu).
- Test dengan seed addresses.Gunakan check.live-direct-marketing.onlineuntuk memastikan OTP masuk Inbox, bukan Spam.
- Implementasikan queue system.Jangan kirim OTP langsung. Gunakan antrian dengan jeda aman antar email.
- Monitor bounce dan delay.Catat dan analisis setiap OTP yang gagal atau tertunda. Jika pola tertentu muncul, investigasi lebih lanjut.
Kepatuhan Hukum di Indonesia
Email OTP yang Anda kirim harus mematuhi UU PDP (Undang-Undang Pelindungan Data Pribadi) dan UU ITE (Undang-Undang Informasi dan Transaksi Elektronik). Artinya, Anda harus memiliki dasar hukum untuk mengumpulkan dan menggunakan email pengguna.
Dalam praktik, itu berarti:
- Dapatkan persetujuan eksplisit dari pengguna sebelum mengirim OTP (misalnya, checkbox "Saya setuju menerima kode verifikasi").
- Sertakan informasi identitas pengirim yang jelas di setiap email — nama bisnis, alamat, atau link ke privacy policy.
- Jika email OTP juga berisi promosi atau link marketing, sertakan link unsubscribe yang jelas dan one-click.