Postfix¶
Catatan
Panduan ini tidak mencakup pengaturan Domain Virtual Postfix. Untuk informasi tentang Domain Virtual dan konfigurasi lanjutan lainnya, lihat daftar referensi di akhir halaman ini.
Instalasi¶
Untuk menginstal Postfix, jalankan perintah berikut:
$ sudo apt install postfix
Anda dapat menerima pengaturan default pada awalnya dengan menekan tombol "Enter" untuk setiap pertanyaan. Beberapa opsi konfigurasi akan dibahas lebih lanjut pada tahap konfigurasi.
Metapaket mail-stack-delivery telah dihentikan di Focal. Paket ini masih tersedia karena alasan kompatibilitas, tetapi tidak akan menyiapkan sistem email yang berfungsi.
Konfigurasi Postfix¶
Ada empat hal yang perlu Anda tentukan sebelum mengonfigurasi:
<Domain> yang akan Anda gunakan untuk menerima email (kita akan menggunakan mail.example.com dalam contoh kita)
Jaringan dan rentang kelas server email Anda (kita akan menggunakan 192.168.0.0/24)
Nama pengguna (kita menggunakan steve)
Jenis format kotak surat (mbox adalah default, tetapi kita akan menggunakan alternatifnya, Maildir)
Untuk mengonfigurasi postfix, jalankan perintah berikut:
sudo dpkg-reconfigure postfix
Antarmuka pengguna akan ditampilkan. Di setiap layar, pilih nilai berikut:
Internet Site
mail.example.com
steve
mail.example.com, localhost.localdomain, localhost
No
127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
0
all
Untuk mengatur format kotak surat, Anda dapat mengedit berkas konfigurasi secara langsung, atau menggunakan perintah postconf. Parameter konfigurasi akan disimpan di berkas /etc/postfix/main.cf. Jika nanti Anda ingin mengonfigurasi ulang parameter tertentu, Anda dapat menjalankan perintah tersebut atau mengubahnya secara manual di dalam berkas.
Konfigurasi format mailbox¶
Untuk mengkonfigurasi format mailbox Maildir :
$ sudo postconf -e 'home_mailbox = Maildir/'
Ini akan menempatkan email baru di /home/<nama pengguna>/Maildir sehingga Anda perlu mengonfigurasi Mail Delivery Agent (MDA) Anda untuk menggunakan jalur yang sama.
SMTP Authentication¶
SMTP-AUTH memungkinkan klien untuk mengidentifikasi dirinya sendiri melalui mekanisme autentikasi Simple Authentication and Security Layer (SASL), menggunakan Transport Layer Security (TLS) untuk mengenkripsi proses autentikasi. Setelah autentikasi selesai, server SMTP akan mengizinkan klien untuk meneruskan email.
Konfigurasi SMTP authentication¶
Untuk mengonfigurasi Postfix untuk SMTP-AUTH menggunakan SASL (Dovecot SASL), jalankan perintah ini pada prompt terminal:
sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth'
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_recipient_restrictions = \
permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
Catatan
Parameter konfigurasi smtpd_sasl_path adalah jalur relatif ke direktori antrean Postfix.
Ada beberapa properti mekanisme SASL yang perlu dievaluasi untuk meningkatkan keamanan penerapan Anda. Opsi "noanonymous" mencegah penggunaan mekanisme yang mengizinkan autentikasi anonim.
Konfigurasi TLS¶
Selanjutnya, buat atau dapatkan sertifikat digital untuk TLS. MUA yang terhubung ke server email Anda melalui TLS perlu mengenali sertifikat yang digunakan untuk TLS. Ini dapat dilakukan menggunakan sertifikat dari Let's Encrypt, dari CA komersial, atau dengan sertifikat yang ditandatangani sendiri yang diinstal/diterima secara manual oleh pengguna.
Untuk MTA-ke-MTA, sertifikat TLS tidak pernah divalidasi tanpa persetujuan terlebih dahulu dari organisasi yang terdampak. Untuk TLS MTA-ke-MTA, tidak ada alasan untuk tidak menggunakan sertifikat yang ditandatangani sendiri kecuali jika kebijakan lokal mewajibkannya. Lihat panduan tentang sertifikat keamanan untuk detail tentang cara membuat sertifikat digital dan menyiapkan Otoritas Sertifikat (CA) Anda sendiri.
Setelah Anda memiliki sertifikat, konfigurasikan Postfix untuk menyediakan enkripsi TLS untuk email masuk dan keluar:
sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_chain_files = /etc/ssl/private/server.key,/etc/ssl/certs/server.crt'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'myhostname = mail.example.com'
Jika Anda menggunakan Otoritas Sertifikat Anda sendiri untuk menandatangani sertifikat, masukkan:
sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
Hasil konfigurasi awal¶
Setelah menjalankan semua perintah di atas, Postfix akan dikonfigurasi untuk SMTP-AUTH dengan sertifikat yang ditandatangani sendiri untuk enkripsi TLS.
Sekarang, berkas /etc/postfix/main.cf akan terlihat seperti ini:
# See /usr/share/postfix/main.cf.dist for a commented, more complete
# version
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
myhostname = server1.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server1.example.com, localhost.example.com, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,permit_mynetworks,reject _unauth_destination
smtpd_tls_auth_only = no
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/ssl/private/smtpd.key
smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt
smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Konfigurasi awal Postfix kini telah selesai. Jalankan perintah berikut untuk memulai ulang daemon Postfix:
sudo systemctl restart postfix.service
SASL¶
Postfix mendukung SMTP-AUTH sebagaimana didefinisikan dalam RFC2554. Ini berbasis SASL. Namun, Anda tetap perlu menyiapkan autentikasi SASL sebelum dapat menggunakan SMTP-AUTH.
Saat menggunakan IPv6, parameter mynetworks mungkin perlu diubah untuk mengizinkan alamat IPv6, misalnya:
mynetworks = 127.0.0.0/8, [::1]/128
Konfigurasi SASL¶
Postfix mendukung dua implementasi SASL: Cyrus SASL dan Dovecot SASL.
Untuk mengaktifkan Dovecot SASL, paket dovecot-core perlu diinstal:
sudo apt install dovecot-core
Selanjutnya, edit /etc/dovecot/conf.d/10-master.conf dan ubah yang berikut ini:
service auth {
# auth_socket_path points to this userdb socket by default. It's typically
# used by dovecot-lda, doveadm, possibly imap process, etc. Its default
# permissions make it readable only by root, but you may need to relax these
# permissions. Users that have access to this socket are able to get a list
# of all usernames and get results of everyone's userdb lookups.
unix_listener auth-userdb {
#mode = 0600
#user =
#group =
}
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
Untuk mengizinkan penggunaan SMTP-AUTH oleh klien Outlook, ubah baris berikut di bagian mekanisme autentikasi /etc/dovecot/conf.d/10-auth.conf dari:
auth_mechanisms = plain
menjadi:
auth_mechanisms = plain login
Setelah Anda mengonfigurasi Dovecot, restart dengan:
sudo systemctl restart dovecot.service
Uji pengaturan Anda¶
Konfigurasi SMTP-AUTH telah selesai – sekarang saatnya menguji pengaturannya. Untuk melihat apakah SMTP-AUTH dan TLS berfungsi dengan baik, jalankan perintah berikut:
telnet mail.example.com 25
Setelah Anda membuat koneksi ke server email Postfix, ketik:
ehlo mail.example.com
Jika Anda melihat hal berikut pada output, berarti semuanya berfungsi dengan sempurna. Ketik quit untuk keluar.
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
Troubleshooting¶
Ketika masalah muncul, ada beberapa cara umum untuk mendiagnosis penyebabnya.
Escaping chroot¶
Paket Ubuntu Postfix, secara default, akan diinstal ke dalam lingkungan chroot demi alasan keamanan. Hal ini dapat menambah kerumitan saat memecahkan masalah.
Untuk menonaktifkan penggunaan chroot, cari baris berikut di berkas konfigurasi /etc/postfix/master.cf:
smtp inet n - - - - smtpd
Ubahlah seperti berikut:
smtp inet n - n - - smtpd
Anda kemudian perlu memulai ulang Postfix untuk menggunakan konfigurasi baru. Dari prompt terminal, masukkan:
sudo service postfix restart
SMTP¶
Jika Anda memerlukan SMTP yang aman, edit /etc/postfix/master.cf dan hapus komentar pada baris berikut:
smtps inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
Melihat Log¶
Postfix mengirimkan semua pesan log ke /var/log/mail.log. Namun, pesan kesalahan dan peringatan terkadang hilang dalam keluaran log normal, sehingga pesan-pesan tersebut juga dicatat ke /var/log/mail.err dan /var/log/mail.warn.
Untuk melihat pesan yang dimasukkan ke dalam log secara langsung (real-time), Anda dapat menggunakan perintah tail -f:
tail -f /var/log/mail.err
Tingkatkan detail logging¶
Jumlah detail yang tercatat dalam log dapat ditingkatkan melalui opsi konfigurasi. Misalnya, untuk meningkatkan pencatatan aktivitas TLS, atur opsi smtpd_tls_loglevel ke nilai 1 hingga 4.
sudo postconf -e 'smtpd_tls_loglevel = 4'
Muat ulang layanan setelah perubahan konfigurasi apa pun, untuk mengaktifkan konfigurasi baru:
sudo systemctl reload postfix.service
Mencatat pengiriman surat¶
Jika Anda mengalami masalah saat mengirim atau menerima email dari domain tertentu, Anda dapat menambahkan domain tersebut ke parameter debug_peer_list.
sudo postconf -e 'debug_peer_list = problem.domain'
sudo systemctl reload postfix.service
Meningkatkan verbositas daemon¶
Anda dapat meningkatkan verbositas proses daemon Postfix apa pun dengan mengedit /etc/postfix/master.cf dan menambahkan -v setelah entri tersebut. Misalnya, edit entri smtp:
smtp unix - - - - - smtp -v
Kemudian, muat ulang layanan seperti biasa:
sudo systemctl reload postfix.service
Log SASL debug info¶
Untuk meningkatkan jumlah informasi yang dicatat saat memecahkan masalah SASL, Anda dapat mengatur opsi berikut di /etc/dovecot/conf.d/10-logging.conf
auth_debug=yes
auth_debug_passwords=yes
Seperti halnya Postfix, jika Anda mengubah konfigurasi Dovecot, prosesnya perlu dimuat ulang:
sudo systemctl reload postfix.service
Catatan
Beberapa opsi di atas dapat meningkatkan jumlah informasi yang dikirim ke berkas log secara drastis. Ingatlah untuk mengembalikan tingkat log ke normal setelah Anda memperbaiki masalah – lalu muat ulang daemon yang sesuai agar konfigurasi baru dapat diterapkan.
Referensi¶
Mengelola server Postfix bisa menjadi tugas yang sangat rumit. Pada titik tertentu, Anda mungkin perlu menghubungi komunitas Ubuntu untuk mendapatkan bantuan yang lebih berpengalaman.
The Postfix website documents all available configuration options.
O’Reilly’s Postfix: The Definitive Guide is rather dated but provides deep background information about configuration options.
The Ubuntu Wiki Postfix page has more information from an Ubuntu context.
There is also a Debian Wiki Postfix page that’s a bit more up to date; they also have a set of Postfix Tutorials for different Debian versions.
Info on how to set up mailman3 with postfix.