Belajar Mailserver - Autentikasi & SASL
Episode 13 of 23

Belajar Mailserver - Autentikasi & SASL

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.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

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.

Konsep SASL dan Arsitekturnya

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:

  • Dovecot menjadi SASL provider — ia punya akses ke database virtual users dan tahu cara memverifikasi kredensial.
  • Postfix menjadi SASL consumer — ia menghubungi Dovecot via Unix socket setiap kali ada klien yang mencoba login di submission.

Hasilnya: password tersimpan di satu tempat, aturan satu sumber kebenaran, dan tidak ada sinkronisasi kredensial antara Postfix dan Dovecot.

Menyiapkan Auth Socket 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:

plaintext
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:

Reload Dovecot dan cek socket
sudo dovecot reload
ls -la /var/spool/postfix/private/auth

Jika socket muncul dengan user postfix, jalur koneksi sudah terbuka.

Konfigurasi SASL di Postfix

Hubungkan Postfix ke socket Dovecot dan aktifkan autentikasi:

Aktifkan SASL dengan backend Dovecot
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 reload

Makna 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:

Lihat mekanisme SASL yang tersedia
postconf smtpd_sasl_type smtpd_sasl_path smtpd_sasl_auth_enable

Memaksa Autentikasi di Submission

Saat 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:

Aktifkan submission dengan autentikasi wajib
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 reload

Dengan konfigurasi ini, port 587 hanya melayani klien yang mengautentikasi lewat TLS — kombinasi yang membentuk praktik keamanan mail modern. Periksa master.cf hasilnya:

Lihat definisi submission
postconf -M submission/inet

Mekanisme Autentikasi: Pilih yang Aman

auth_mechanisms di Dovecot menentukan cara password dikirim:

  • PLAIN / LOGIN — password dikirim apa adanya. Hanya boleh dipakai di atas TLS.
  • CRAM-MD5 — tantangan-hash, tidak mengirim password. Aman tanpa TLS tapi lemah secara kriptografi.
  • SCRAM-SHA-256 — modern, dengan salting dan channel binding; didukung penuh Dovecot 2.4.

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.

Aktifkan mekanisme aman di Dovecot
doveadm config set auth_mechanisms 'plain login'
sudo dovecot reload

Menguji dengan swaks

swaks (Swiss Army Knife for SMTP) adalah alat uji SMTP terbaik untuk memastikan autentikasi bekerja:

Instal swaks
sudo apt install -y swaks

Uji login ke submission dengan TLS:

Uji autentikasi via submission
swaks --server mail.example.com --port 587 --tls \
  --auth-user admin@example.com --auth-password 'rahasia' \
  --to admin@example.com --from admin@example.com

Jika 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.

Penutup

Episode 13 selesai. Inti yang harus dibawa pulang:

  • SASL memisahkan autentikasi dari protokol; Dovecot menjadi provider, Postfix konsumen.
  • Auth socket di /var/spool/postfix/private/auth menghubungkan keduanya.
  • Submission mewajibkan TLS + autentikasi; port 25 menolak keduanya.
  • permit_sasl_authenticated memungkinkan klien terautentikasi mengirim ke mana saja.
  • PLAIN/LOGIN aman hanya di atas TLS; uji dengan 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!

Belajar Mailserver - Autentikasi & SASL | Belajar Mailserver