Beberapa hari yang lalu, email notifikasi dari server yang masuk ke email, lebih banyak masuk ke spam box. Juga ketika saya mencoba fitur lupa password dari salah satu situs berbasis WordPress, email yang dikirimkan tidak masuk. Salah dua tersebut adalah kelemahan jika email dikirim via server, tidak reliable alias ababil kalo bahasa anak sekarang :)
Untuk itu, SMTP Server Eksternal harus saya gunakan untuk menggantikan sistem email di server web. Banyak pilihan SMTP Server Eksternal, yang cukup punya nama mentereng adalah SendGrid, Mandrill by MailChimp dan Amazon SES (Simple Email Service). Atau anda tinggal googling aja kata kunci “SMTP Server Services” atau bagi yang pemburu layanan gratisan bisa menggunakan kata kunci “Free SMTP Server Service”. Dan berikut adalah tutorial instal Postfix dengan menggunakan SMTP Server untuk mengirimkan email yang lebih reliable.
Disclaimer
- Tutorial ini sudah dicoba dan berhasil di Linux Debian 8, akan tetapi tidak menutuo kemungkinan bisa berhasil di Debian versi 7 atau varian linux berbasis Debian lainnya, seperti Ubuntu atau KNOPPIX.
- SMTP Server yang berhasil saya coba adalah SendGrid; tetapi tutorial ini juga bisa digunakan menggunakan SMTP server eksternal lainnya
- Tutorial ini tidak bisa digunakan menggunakan SMTP server Google (Gmail dan Google Apps), jika ada waktu akan saya tuliskan tutorial terpisah.
Ok next step.
Adonan Yang Diperlukan
Sebelum memulai tutorial ini, anda sudah mempunyai:
- Server, baik Dedicated Server atau VPS, sudah terinstal Linux Debian 8.
- Fully Qualified Domain Name (FQDN) sudah di setting di server. Ketik perintah
hostname
untuk cek. - Perbarui package Linux dengan perintah
apt-get update && apt-get upgrade
- Anda sudah mempunyai username & password SMTP server.
- Pastikan module libsasl2-modules sudah terinstal, jika belum gunakan perintah
apt-get install libsasl2-modules
NOTE: Jika server anda menggunakan Ubuntu, tambah sudo
untuk mengeksekusi perintah-perintah diatas.
Instal Postfix
Ketik perintah
apt-get install postfix mailutils
untuk memulai instal Postfix.
Pada saat proses instal, akan muncul jendela dialog General type of mail configuration seperti dibawah ini.
Pilih Internet Site.
Kemudian masukkan FQDN seperti dibawah ini, contoh fqdn.example.com
Setelah proses instalasi selesai, buka file konfigurasi Postfix dengan perintah
nano /etc/postfix/main.cf
Pastikan parameter myhostname diisi sesuai dengan FQDN anda
myhostname = fqdn.example.com
Konfigurasi Username & Password SMTP
Username dan password akan disimpan file bernama passwd
di direktori /etc/postfix/sasl/
. Selanjutnya kita akan membuat file passwd yang berisikan username & password SMTP server yang nantinya akan digunakan oleh Postfix.
Jika Anda Menggunakan SendGrid
Login ke SendGrid, pilih menu Settings -> API Keys. Kemudian klik tombol Create API Key.
Beri nama API Key yang akan dibuat. Dan pada pilihan API Key Permissions, pilih Full Access. Lihat gamabr dibawah.
Kemudian klik tombol Create & View. Pada halaman selanjutnya, akan muncul API Key, copy dan paste API Key tersebut ke notepad.
Selanjutnya kita akan membuat file passwd
dengan perintah
nano /etc/postfix/sasl/passwd
dan masukkan API Key yang tadi kita buat, dengan format seperti ini
[smtp.sendgrid.net]:587 apikey:kodeAPIkey
NOTE: apikey adalah username SMTP, biarkan seperti itu. Sedang kodeAPIkey adalah API Key yang tadi kita buat diatas. Sedang 587 adalah port yang dipakai oleh SendGrid.
Kemudian kita akan membuat file hash db untuk Postfix dengan menjalankan perintah
postmap /etc/postfix/sasl/passwd
Jika berhasil, akan muncul file passwd.db
di direktori /etc/postfix/sasl/
. Bisa cek dengan perintah ls -l /etc/postfix/sasl/
Agar file passwd dan passwd.db lebih aman, kita akan mengatur file tersebut agar hanya root yang bisa membaca dan mengubahnya; dan juga kita akan mengubah kepemilikan file-file tersebut ke root. Gunakan perintah ini:
chown root:root /etc/postfix/sasl/passwd /etc/postfix/sasl/passwd.db
chmod 0600 /etc/postfix/sasl/passwd /etc/postfix/sasl/passwd.db
Selanjutnya, kita akan mengkonfigurasi file /etc/postfix/main.cf
, agar Postfix bisa menggunakan SMTP server SendGrid. Ketik perintah
nano /etc/postfix/main.cf
Ubah relayhost sesuai dengan paramater SendGrid
# SMTP host dari SendGrid relayhost = [smtp.sendgrid.net]:587
Kemudian di bagian akhir file /etc/postfix/main.cf
, tambahkan parameter ini
# aktifkan otentikasi SASL smtp_sasl_auth_enable = yes # matikan metode otentikasi anonim smtp_sasl_security_options = noanonymous # lokasi sasl passwd smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd # Aktifkan enkripsi STARTTLS smtp_use_tls = yes # Lokasi CA certificates smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
Simpan ubahan diatas dan restart Postfix dengan perintah
service postfix restart
atau
/etc/init.d/postfix restart
Selanjutnya test Postfix untuk mengirim email dengan perintah
echo "body email" | mail -s "Ini Judul Email" -a "From: email@anda.com" email@yangdituju.com
NOTE: Ganti email@anda.com dengan sembarang alamat email. Dan ganti email@yangdituju.com dengan alamat email yang akan digunakan untuk menerima email (gunakan email yang valid, agar kita tahu email sudah masuk atau belum).
Jika Anda Menggunakan SMTP Server Lain
Pada prinsipnya konfigurasinya sama, yang perlu anda rubah hanya file /etc/postfix/sasl/passwd
agar menyesuaikan dengan alamat SMTP server, port, username dan paswordnya
[mail.ispserver.com]:587 username:password
Dan juga ubah relayhost pada file /etc/postfix/main.cf
relayhost = [mail.ispserver.com]:587
Jangan lupa untuk membuat file hash db dengan perintah
postmap /etc/postfix/sasl_passwd
Dan juga restart Postfix
service postfix restart
atau
/etc/init.d/postfix restart
Selamat mencoba!