Pendahuluan
Setelah server diamankan (firewall, Fail2Ban, DNS, dan port), tahap selanjutnya adalah instalasi Postfix.
Postfix adalah Mail Transfer Agent (MTA) yang bertugas mengirim dan menerima email antar server.
Kesalahan umum pemula adalah:
- Menginstal Postfix sebelum server aman
- Mengaktifkan port 25 ke publik
- Salah konfigurasi relay
- Tidak memahami alur kerja Postfix
Artikel ini membahas instalasi Postfix yang aman, minimal, dan mudah dipahami, tanpa konfigurasi berlebihan.
1. Konsep Dasar Postfix (WAJIB PAHAM)
Sebelum install, pahami alurnya:
- User mengirim email → SMTP Submission (587)
- Postfix menerima email
- Postfix cek autentikasi
- Email dikirim ke mail server tujuan
- Server tujuan menerima via SMTP (25)
Catatan penting:
- User tidak boleh kirim lewat port 25
- Port 25 hanya untuk komunikasi antar server
2. Pastikan Tidak Ada Mail Server Lain
Cek apakah ada mail server lain:
ss -tulpn | grep :25
Jika ada:
- exim
- sendmail
- postfix lama
Hapus dulu sebelum lanjut.
3. Instalasi Postfix
3.1 Install paket Postfix
sudo apt install postfix -y
Saat instalasi, akan muncul wizard.
3.2 Jawaban Wizard Postfix
Pilih dengan hati-hati:
- General type of mail configuration
→Internet Site - System mail name
→alfasmk.my.id
(gunakan domain utama, BUKANmail.domain)
Wizard ini hanya konfigurasi dasar. Kita akan amankan manual setelah ini.
4. Struktur File Penting Postfix
| File | Fungsi |
|---|---|
/etc/postfix/main.cf | Konfigurasi utama |
/etc/postfix/master.cf | Daftar service & port |
/var/log/mail.log | Log aktivitas mail |
⚠️ 90% pengamanan ada di main.cf
5. Konfigurasi Dasar main.cf (AMAN UNTUK PEMULA)
Edit file:
sudo nano /etc/postfix/main.cf
5.1 Identitas Server
myhostname = mail.alfasmk.my.id
mydomain = alfasmk.my.id
myorigin = $mydomain
5.2 Jaringan yang Diizinkan
mynetworks = 127.0.0.0/8
Jangan tambahkan IP publik di sini
Kalau salah → OPEN RELAY
5.3 Domain Tujuan
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
Artinya:
- Server hanya menerima email untuk domain sendiri
5.4 Disable Relay Tidak Sah (PALING PENTING)
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
➡️ Tanpa baris ini, server kamu TIDAK AMAN
6. Aktifkan SMTP AUTH (User Harus Login)
Postfix tidak menyimpan user, jadi nanti akan pakai Dovecot.
Untuk sekarang, siapkan settingnya dulu.
Tambahkan di main.cf:
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
7. Aktifkan TLS (WAJIB)
Tanpa TLS:
- Password dikirim plaintext
- Email dianggap tidak aman
7.1 Sertifikat TLS
Gunakan Let’s Encrypt (contoh):
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.alfasmk.my.id/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.alfasmk.my.id/privkey.pem
7.2 Konfigurasi TLS
smtpd_use_tls = yes
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_auth_only = yes
→ User harus TLS sebelum login
8. Nonaktifkan SMTP AUTH di Port 25
Edit master.cf:
sudo nano /etc/postfix/master.cf
Pastikan TIDAK ADA SASL AUTH di service smtp (port 25).
Yang boleh AUTH hanya di submission (587).
9. Aktifkan Port 587 (Submission)
Di master.cf, pastikan baris ini aktif:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
Artinya:
- User WAJIB TLS
- User WAJIB login
- Tidak bisa relay bebas
10. Restart dan Cek Konfigurasi
10.1 Cek syntax
sudo postfix check
Jika tidak ada output → aman.
10.2 Restart Postfix
sudo systemctl restart postfix
sudo systemctl status postfix
11. Test Dasar Postfix (AMAN)
Cek port yang aktif:
ss -tulpn | grep postfix
Yang ideal:
- 25 → listening (server)
- 587 → listening (submission)
- Tidak error
12. Kesalahan Fatal Pemula (WAJIB DIHINDARI)
| Kesalahan | Dampak |
|---|---|
| Menambah IP publik ke mynetworks | Open relay |
| Membuka port 25 untuk user | Spam |
| Tidak pakai TLS | Password bocor |
| Tidak pakai AUTH | Spam |
| Salah mydestination | Mail bounce |
| Tidak cek log | Masalah tak terdeteksi |
13. Checklist Postfix Aman
- Postfix terinstal
- Port 587 aktif
- Port 25 tidak untuk user
- TLS aktif
- SMTP AUTH aktif
- Open relay dicegah
- Firewall sesuai
- Log normal
Jika checklist ini lolos, Postfix kamu sudah cukup aman untuk pemula.
Penutup
Postfix yang aman bukan soal konfigurasi rumit, tetapi paham batasannya:
- Siapa boleh kirim
- Lewat port apa
- Dengan autentikasi apa
Setelah tahap ini, Postfix BELUM BISA dipakai user sampai Dovecot dikonfigurasi.
