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.