Mengunci gerbang keluar mail server: konsep SASL, menyiapkan auth socket Dovecot yang dipinjam Postfix, konfigurasi smtpd_sasl_auth_enable dan smtpd_sasl_type, memaksa autentikasi pada port submission, serta memilih mekanisme autentikasi yang aman dan mengujinya dengan swaks.

Sejauh ini siapa pun bisa mengirim email lewat Postfix kalian selama tujuan diizinkan — belum ada pemeriksaan siapa yang mengirim. Di episode ini kita mengunci gerbang keluar: autentikasi.
Konsep intinya SASL (Simple Authentication and Security Layer): sebuah lapisan standar untuk autentikasi di atas protokol. Postfix tidak perlu mengelola database password sendiri — ia "meminjam" kemampuan autentikasi Dovecot lewat Unix socket, sehingga satu set kredensial melayani kirim dan baca sekaligus.
Kita akan menyiapkan auth socket Dovecot, mengonfigurasi Postfix untuk memakainya, memaksa autentikasi di port submission, dan menguji hasilnya dengan swaks.
SASL memisahkan protokol (SMTP/IMAP) dari mekanisme autentikasi. Alih-alih setiap protokol mengimplementasikan login sendiri, mereka bertanya ke layer SASL yang sama. Di arsitektur kita:
Hasilnya: password tersimpan di satu tempat, aturan satu sumber kebenaran, dan tidak ada sinkronisasi kredensial antara Postfix dan Dovecot.
Dovecot menyediakan service auth yang melayani permintaan SASL. Kita perlu membuatnya bisa diakses Postfix dari dalam chroot-nya. Aktifkan di conf.d/10-master.conf:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
}
}Socket pertama dipakai Postfix untuk SASL; socket kedua dipakai Dovecot internal untuk lookup userdb. Reload:
sudo dovecot reload
ls -la /var/spool/postfix/private/authJika socket muncul dengan user postfix, jalur koneksi sudah terbuka.
Hubungkan Postfix ke socket Dovecot dan aktifkan autentikasi:
sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination'
sudo postfix reloadMakna parameter:
smtpd_sasl_type = dovecot — pakai backend SASL Dovecot.smtpd_sasl_path = private/auth — path socket relatif ke direktori antrian Postfix.smtpd_sasl_auth_enable = yes — nyalakan mekanisme AUTH di SMTP.smtpd_sasl_security_options = noanonymous — tolak login anonim.smtpd_recipient_restrictions — kini permit_sasl_authenticated memperbolehkan klien terautentikasi mengirim ke tujuan mana pun.Cek bahwa mekanisme terdeteksi:
postconf smtpd_sasl_type smtpd_sasl_path smtpd_sasl_auth_enableSaat ini AUTH tersedia di semua port. Seharusnya tidak: port 25 harus menolak autentikasi (mencegah spammer memakai kredensial bocor), sementara submission (587) dan SMTPS (465) mewajibkannya. Pisahkan kebijakan di master.cf:
sudo postconf -M submission/inet='submission inet n - y - - smtpd'
sudo postconf -P submission/inet/smtpd_tls_security_level=encrypt
sudo postconf -P submission/inet/smtpd_sasl_auth_enable=yes
sudo postconf -P submission/inet/milter_macro_daemon_name=ORIGINATING
sudo postfix reloadDengan konfigurasi ini, port 587 hanya melayani klien yang mengautentikasi lewat TLS — kombinasi yang membentuk praktik keamanan mail modern. Periksa master.cf hasilnya:
postconf -M submission/inetauth_mechanisms di Dovecot menentukan cara password dikirim:
Aturan emas: karena TLS sudah wajib di submission sejak episode 6, plain login adalah pilihan yang sah dan paling kompatibel dengan semua klien. scram-sha-256 adalah peningkatan bagi klien yang mendukungnya. Jangan pernah mengaktifkan PLAIN tanpa TLS.
doveadm config set auth_mechanisms 'plain login'
sudo dovecot reloadswaks (Swiss Army Knife for SMTP) adalah alat uji SMTP terbaik untuk memastikan autentikasi bekerja:
sudo apt install -y swaksUji login ke submission dengan TLS:
swaks --server mail.example.com --port 587 --tls \
--auth-user admin@example.com --auth-password 'rahasia' \
--to admin@example.com --from admin@example.comJika output diakhiri 250 2.0.0 Ok: queued, autentikasi dan pengiriman sukses. Untuk memastikan port 25 menolak AUTH, coba tanpa --tls di port 25 — hasilnya harus ditolak.
Info
Gunakan --tls dan bukan --tls-optional di swaks. Hasil "queued" hanya bermakna saat enkripsi benar-benar aktif — itulah yang membuktikan password tidak melintas terbuka.
Episode 13 selesai. Inti yang harus dibawa pulang:
/var/spool/postfix/private/auth menghubungkan keduanya.permit_sasl_authenticated memungkinkan klien terautentikasi mengirim ke mana saja.swaks --tls.Gerbang keluar sudah terkunci. Di episode 14 kita melawan sampah: Anti-Spam — SpamAssassin & RBL — memasang penilaian berbasis aturan, belajar dari riwayat email, dan menolak IP terkenal di awal koneksi. Sampai jumpa di episode 14!