Fitur mail default WordPress tidak memiliki autentikasi SMTP, sehingga email transaksional sering masuk spam atau tidak terkirim sama sekali. Setup SMTP yang benar di WordPress butuh lebih dari cuma install plugin: Anda perlu memilih plugin yang tepat, mengkonfigurasi credential dengan benar, dan tahu cara debug ketika email tidak sampai. Artikel ini menjelaskan langkah demi langkah untuk production.
WordPress mengirim email lewat fungsi mail() PHP secara default. Fungsi ini tidak punya autentikasi, tidak ada koneksi ke SMTP server, dan tidak ada retry mechanism kalau email gagal terkirim. Untuk website statis yang tidak kritis, ini mungkin tidak jadi masalah. Untuk aplikasi yang mengirim OTP, konfirmasi order, atau notifikasi password reset, ini adalah sumber bug yang tidak terlihat sampai user mengeluh.
Masalahnya tidak berhenti di situ. Bahkan kalau Anda sudah install plugin SMTP dan isi credential dengan benar, email tetap bisa masuk spam kalau IP server SMTP yang Anda pakai punya reputasi buruk. Atau kalau SPF record domain Anda tidak mencantumkan IP server SMTP yang digunakan. Atau kalau konten email Anda memicu filter spam sebelum filter memeriksa konfigurasi teknis apapun.
Artikel ini menjelaskan langkah setup SMTP WordPress untuk email transaksional production. Bukan tutorial generik yang bisa ditemukan di mana saja, tapi pendekatan production-grade yang mempertimbangkan deliverability nyata.
Daftar Isi
Apa Beda Fungsi mail() PHP dan SMTP?
Fungsi mail() PHP adalah fungsi bawaan WordPress untuk mengirim email. Cara kerjanya sederhana: memanggil sendmail di server lokal. Tidak ada autentikasi, tidak ada encryption, tidak ada informasi balikan kalau email gagal dikirim.
Masalahnya di sini. Karena tidak ada autentikasi, server email penerima tidak punya cara untuk memverifikasi bahwa email memang berasal dari domain yang diklaim. Ini langsung menambah spam score.
SMTP (Simple Mail Transfer Protocol) bekerja berbeda. SMTP punya mekanisme autentikasi username dan password, koneksi terenkripsi lewat TLS, dan server penerima bisa memverifikasi bahwa email berasal dari pengirim yang sah.
Yang terjadi adalah WordPress membuat email, lalu menyerah ke fungsi mail() PHP di server, yang kemudian menyerah ke MTA (Mail Transfer Agent) lokal. Dari MTA lokal, email baru dikirim ke server tujuan. Rantai ini panjang dan banyak yang bisa salah di tengah.
Plugin SMTP WordPress memutus rantai tersebut dengan membuat WordPress berkomunikasi langsung dengan SMTP server yang Anda tentukan.
Plugin SMTP WordPress: Mana yang Sebaiknya Dipilih?
Tiga plugin yang paling banyak digunakan untuk WordPress SMTP.
WP Mail SMTP adalah yang paling populer dengan 10+ juta install. Versi gratis sudah mencakup fitur SMTP dasar: OAuth 2.0 untuk Gmail dan Microsoft, email logging, dan opsi untuk memaksa FROM email yang konsisten. Versi premium menambahkan white-glove setup,.email failure notification ke admin, dan Salesforce integration.
Easy WP SMTP lebih ringan. Versi gratis sudah mencakup SMTP dasar dengan TLS dan SSL, perfect untuk server yang tidak butuh OAuth. Plugin ini lebih cocok kalau Anda pakai SMTP relay generik yang mendukung basic authentication.
Post SMTP Mailer punya fitur yang mirip WP Mail SMTP tapi dengan interface yang lebih bersih. Keunggulan utamanya adalah failure notification yang bisa dikirim ke Slack atau email lain kalau email gagal terkirim.
Untuk use case email transaksional production, WP Mail SMTP adalah pilihan paling aman karena komunitasnya besar, dokumentasinya lengkap, dan update security lebih konsisten. Easy WP SMTP baik untuk setup sederhana. Post SMTP Mailer untuk tim yang butuh notifikasi kegagalan lebih advance.
Langkah 1: Install dan Aktifkan Plugin SMTP
Dari dashboard WordPress, install plugin WP Mail SMTP lewat menu Plugins > Add New. Cari “WP Mail SMTP”, install, lalu aktifkan.
Setelah aktif, WP Mail SMTP akan menampilkan setup wizard. Lewati wizard untuk sekarang karena konfigurasi dasar yang wizard tawarkan tidak cukup untuk production. Klik Settings.
Di halaman Settings, bagian SMTP Configuration, isikan:
- SMTP Host: hostname SMTP server Anda. Kalau pakai KIRIM.EMAIL, ini biasanya
smtp.kirim.email. - Encryption: pilih TLS untuk port 587, atau SSL untuk port 465. Keduanya aman selama SMTP server mendukung.
- SMTP Port: 587 untuk STARTTLS, 465 untuk SSL legacy.
- Auto TLS: aktifkan kalau server mendukung.
- Authentication: aktifkan, lalu isi username dan password SMTP.
Bagian FROM Email, centang Override untuk force semua email yang keluar pakai FROM email yang sama. Ini penting karena default WordPress bisa pakai email acak dari server kalau tidak dikunci.
Langkah 2: Konfigurasi SPF dan DKIM
Setup SMTP di plugin saja tidak cukup. Anda perlu memastikan domain email yang Anda pakai untuk kirim email punya SPF dan DKIM record yang benar di DNS.
SPF (Sender Policy Framework) adalah record TXT di DNS yang menentukan IP mana yang boleh kirim email atas nama domain Anda. Tanpa SPF, server penerima tidak punya cara untuk memverifikasi legitimacy email dari domain Anda.
Record SPF untuk SMTP relay KIRIM.EMAIL biasanya kelihatan seperti ini:
v=spf1 include:mail.kirim.email ~all
Tambahkan record ini di DNS manager domain Anda. Kalau domain Anda sudah punya record SPF, tambahkan include:mail.kirim.email ke dalam record yang sudah ada, jangan buat record baru. Satu domain hanya boleh punya satu record SPF.
DKIM (DomainKeys Identified Mail) adalah tanda tangan digital yang di-generate oleh SMTP server Anda. Untuk KIRIM.EMAIL, DKIM record disediakan di dashboard KIRIM.EMAIL. Tambahkan sebagai CNAME record di DNS:
ke1._domainkey IN CNAME ke1._domainkey.kirim.email.
Setelah SPF dan DKIM dikonfigurasi, verifikasi dengan mengirim test email ke mail-tester.com. Skor di atas 8 dari 10 berarti konfigurasi sudah cukup baik untuk production.
Langkah 3: Konfigurasi From Email dan Reply-To yang Konsisten
Bagian yang sering diabaikan adalah konsistensi FROM email di seluruh email yang dikirim WordPress.
Default WordPress menggunakan email seperti [email protected] sebagai FROM address. Ini tidak professional untuk email transaksional dan bisa menambah spam score karena domain email pengirim tidak konsisten.
Di WP Mail SMTP Settings, bagian From Email, isi dengan alamat email yang domainnya sama dengan domain Anda. Contoh: [email protected]. Centang Override untuk force semua email pakai FROM ini.
Bagian Force From Name berguna kalau Anda ingin nama pengirim berbeda dari alamat email. Untuk email transaksional, nama seperti “NamaToko” lebih baik daripada generic “WordPress”.
Reply-To yang konsisten juga penting. Untuk transactional email, Reply-To sebaiknya diarahkan ke support email yang dikelola manusia, bukan bounce address otomatis. Ini memungkinkan customer membalas email transaksi dan email tersebut sampai ke tim yang bisa menangani.
Langkah 4: Test Pengiriman Email
Jangan deploy sebelum testing. WP Mail SMTP menyediakan tool untuk kirim test email langsung dari dashboard. Kirim ke alamat email yang bisa Anda akses, lalu cek:
- Email masuk di inbox, bukan spam.
- Header email menunjukkan SPF dan DKIM pass.
- FROM address dan FROM name sesuai konfigurasi.
Untuk cek manual di Gmail: buka email, klik menu tiga titik, pilih Show original. Di bagian Authentication results, pastikan SPF, DKIM, dan DMARC menunjukkan pass.
Kalau email masuk spam, langkah pertama adalah cek skor mail-tester. Dari situ Anda bisa tahu apakah masalahnya di SPF, DKIM, konten, atau reputasi IP.
Kenapa Email dari WordPress Bisa Tidak Terkirim Sama Sekali?
Ada satu masalah yang lebih parah dari email masuk spam: email tidak terkirim sama sekali. User tidak dapat reset password, tidak dapat aktivasi akun, tidak dapat invoice.
Penyebab tersering adalah limit memory PHP di hosting WordPress. Fungsi wp_mail() memanggil PHP mail(), dan kalau PHP memory limit terlalu rendah, proses pengiriman email akan gagal tanpa error yang jelas di dashboard.
Cara cek: aktifkan email logging di WP Mail SMTP. Kalau ada error, akan tercatat di log. WP Mail SMTP versi premium bisa mengirim notifikasi ke admin setiap kali ada email yang gagal.
Penyebab lain adalah SMTP server yang diblokir oleh firewall hosting. Beberapa hosting shared memblokir outbound port 25, 465, atau 587 untuk mencegah spam dari server mereka. Kalau ini terjadi, Anda perlu pakai SMTP relay yang bisa diakses lewat port yang tidak diblokir, atau minta hosting provider untuk membuka port.
Lazy loading plugin yang interfere dengan wp_mail() juga bisa menyebabkan masalah. Beberapa plugin keamanan atau caching bisa memblok wp_mail() kalau mereka menganggap email yang di-generate adalah malicious.
Troubleshooting: Email Masuk Spam Setelah Setup SMTP
Setup SMTP sudah benar, tapi email tetap masuk spam. Ini lebih umum daripada yang dibanyak orang kira.
Pertama, cek reputasi IP server SMTP yang Anda pakai. Kalau Anda pakai shared SMTP server dari hosting, IP tersebut mungkin sudah masuk blacklist karena pengguna lain mengirim spam dari server yang sama. Cek di mxtoolbox.com/blacklists.
Kedua, cek apakah FROM domain Anda ada di RFC 2142 format. Email seperti [email protected] atau [email protected] lebih dipercaya daripada [email protected].
Ketiga, cek konten email. Subject line dengan kata-kata promosi, ALL CAPS, atau emoji berlebihan menambah spam score. Untuk transactional email, subject line yang straightforward seperti “Reset Password untuk Akun Anda” lebih aman daripada “Segera Reset Password Anda Sekarang”.
Keempat, cek apakah email Anda punya plain text version. Email yang hanya HTML tanpa fallback plain text lebih mudah masuk spam. WP Mail SMTP bisa dikonfigurasi untuk always include plain text version.
Kapan Perlu Pindah ke SMTP Relay Dedicated?
Kalau sudah setup SMTP dengan benar, tapi email tetap masuk spam atau tidak reliable, pertimbangkan SMTP relay service yang mengelola infrastruktur secara dedicated.
KIRIM.EMAIL Dev menyediakan SMTP relay dengan server di Indonesia. Untuk aplikasi yang mengirim email transaksional ke user Indonesia, IP yang berasal dari Indonesia punya latency lebih rendah dan reputasi lebih terkontrol untuk traffic Indonesia. Integrasi cukup dengan menambahkan plugin SMTP, tanpa perlu ubah kode aplikasi yang sudah ada. KIRIM.EMAIL juga menyediakan integrasi WordPress langsung yang bisa dikonfigurasi tanpa plugin SMTP pihak ketiga.
Tanda Anda perlu SMTP relay dedicated:
- Volume email di atas 1.000 per hari dan mulai ada keluhan deliverability
- Email transaksional kritis (OTP, payment confirmation) yang tidak boleh tidak terkirim
- User melaporkan email tidak masuk inbox tapi ada di spam
- Tim development tidak punya bandwidth untuk maintain mail server sendiri
FAQ
Apakah WP Mail SMTP versi gratis sudah cukup untuk production?
Versi gratis sudah cukup untuk setup SMTP dasar. Yang sering jadi bottleneck bukan fitur plugin-nya, tapi reputasi IP SMTP server yang Anda pakai. WP Mail SMTP tidak bisa memperbaiki reputasi IP yang sudah buruk karena pengguna lain di shared hosting.
Kalau Anda mengalami masalah email masuk spam setelah setup SMTP, baca panduan kami tentang kenapa email Laravel masuk spam meski SPF sudah benar karena masalah yang sama juga terjadi di WordPress dengan cara yang identik. Untuk memahami secara mendalam cara kerja SPF, DKIM, dan DMARC, lihat panduan setup SPF DKIM DMARC untuk domain email baru.
Port SMTP mana yang sebaiknya saya gunakan?
Port 587 dengan STARTTLS adalah pilihan yang paling kompatibel dan aman untuk modern SMTP server. Port 465 dengan SSL legacy juga masih berfungsi di banyak server tapi sudah dianggap deprecated. Port 25 sebaiknya dihindari karena banyak hosting provider dan ISP yang memblokir port ini untuk outbound SMTP.
Bagaimana cara test apakah konfigurasi SMTP WordPress sudah benar?
Pakai tool test email dari WP Mail SMTP, lalu verifikasi header email di Gmail dengan Show original. Pastikan SPF, DKIM, dan DMARC menunjukkan pass. Kirim juga email ke mail-tester.com untuk skor keseluruhan. Skor di atas 8 dari 10 sudah cukup untuk sebagian besar kasus.
Kenapa email WordPress masuk spam di Gmail tapi tidak di Yahoo?
Gmail memiliki filter spam yang paling ketat di antara semua provider. Yang sering terjadi adalah email masuk spam di Gmail karena FROM address domain Anda tidak memiliki SPF atau DKIM yang valid. Gmail juga sangat memperhatikan reputasi IP dan engagement history dari domain pengirim. Kalau email tersebut sebelumnya pernah dilaporkan spam, bahkan satu kali, Gmail akan sangat sulit untuk diandalkan lagi.
Apakah saya perlu setup DMARC juga?
DMARC adalah layer keamanan setelah SPF dan DKIM. Kalau SPF dan DKIM sudah berjalan dengan baik, DMARC belum kritis untuk tahap awal. Tapi untuk production yang serius soal email deliverability, DMARC policy p=none untuk monitoring adalah langkah yang baik sebelum memperketat ke p=quarantine atau p=reject.
Apakah bisa pakai SMTP Gmail untuk email transaksional?
Gmail SMTP memiliki limit 500 email per hari untuk akun personal dan 2.000 per hari untuk Google Workspace. Untuk aplikasi dengan volume lebih tinggi, limit ini akan tercapai. Selain itu, IP Gmail adalah shared IP yang reputasinya tidak bisa Anda kontrol. Gmail juga secara aktif menurunkan reach email yang promotional, termasuk transactional email yang tidak dikonfigurasi dengan benar.
Berapa lama propagasi DNS untuk SPF dan DKIM?
Propagasi DNS bisa memakan waktu 1 sampai 48 jam setelah Anda menambahkan record SPF dan DKIM. Kalau setelah 48 jam email masih belum pass SPF atau DKIM check, periksa lagi record yang ditambahkan. Kesalahan umum adalah salah ketik nama record atau salah menambahkan record di DNS yang salah.
Hasbi Putra adalah Head of Marketing di KIRIM.EMAIL, email delivery infrastructure untuk developer dan tim IT di Indonesia. KIRIM.EMAIL mengirim lebih dari 11 juta email per hari dengan server yang sepenuhnya berlokasi di Indonesia.
