Panduan ini membahas langkah-langkah yang diperlukan dalam mengonfigurasi server STMP Postfix yang aman dengan sertifikat yang disediakan oleh otoritas sertifikat Let’s Encrypt dan Dovecot yang digunakan untuk otentikasi klien. Petunjuk yang tercantum di bawah ini ditujukan untuk Ubuntu 16.04, tetapi komponennya juga tersedia di distribusi lain hanya dengan sedikit perubahan pada perintah instalasi.
Membuat catatan DNS
Langkah pertama dalam menyiapkan server email yang tepercaya adalah membuat nama domain dan catatan penukar email yang diperlukan. Proses ini akan berbeda tergantung pada Server Nama Domain yang Anda gunakan untuk mengelola nama domain Anda. Kebanyakan server nama domain akan memberikan instruksi atau dokumentasi tentang bagaimana pengaturan ini dapat dilakukan.
Misalnya, Anda dapat menambahkan subdomain untuk server SMTP seperti mail.example.com dan mengaktifkan data MX yang mengarah ke subdomain tersebut.
Catatan yang perlu Anda konfigurasi:
- DNS Catatan yang memetakan nama domain Anda ke alamat IP publik server.
example.com A 83.136.253.111
- Data MX, yang akan memberi tahu server email lain ke mana pesan yang dikirim ke domain Anda harus dikirimkan.
example.com MX 1 mail.example.com. @ MX 2 mail.example.com.
- Membalikkan catatan DNS, yang memungkinkan server memeriksa domain mana yang memiliki alamat IP server Anda. Anda dapat mengatur nama DNS terbalik per alamat IP publik di panel kontrol UpCloud Anda di bawah tab Pengaturan server dan Alamat IP. Pengaturan ini mungkin memerlukan waktu beberapa saat untuk diterapkan ke server DNS lain, jadi sebaiknya lakukan lebih awal.
Menginstal Postfix
Postfix adalah MTA default untuk Ubuntu dan dapat diinstal langsung dengan manajer paket. Gunakan perintah berikut untuk menginstal paket yang diperlukan.
sudo apt install postfix
Setelah instalasi selesai, setup akan menjalankan skrip konfigurasi yang meminta untuk menentukan beberapa pengaturan; pilih default untuk saat ini dengan menekan enter untuk melanjutkan.
Dengan Postfix terinstal, jalankan skrip konfigurasi lengkap untuk menentukan pengaturan seperti di bawah ini.
sudo dpkg-reconfigure postfix
Perintah konfigurasi ulang akan menampilkan antarmuka konfigurasi lagi. Pilih nilai berikut dalam urutan tampilan.
- Jenis umum konfigurasi email:
Internet Site
- Nama email sistem – Ganti <example.com> dengan nama domain Anda:
<example.com>
- Penerima email root dan postmaster – Semua akun pengguna Unix:
root
- Tujuan lain untuk menerima email – Sertakan $mydomain sebagai tujuan akhir:
$mydomain, $myhostname, localhost.$myhostname, , localhost
- Paksa pembaruan tersinkronisasi pada antrean email?
No
- Jaringan lokal:
127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
- Batas ukuran kotak surat (byte):
0
- Karakter ekstensi alamat lokal:
+
- Protokol internet yang digunakan:
all
Konfigurasi ditulis ke dalam file /etc/postfix/main.cf . Jika Anda ingin melakukan perubahan pada pengaturan di atas, Anda selalu dapat menjalankan skrip konfigurasi ulang lagi.
Secara default, Postfix menggunakan format kotak surat mbox . Opsi lain yang umum digunakan adalah Maildir, yang menyimpan email dalam file individual, sehingga mengurangi kemungkinan database email Anda rusak. Pengaturan berikut akan menggunakan Maildir, tetapi Anda bebas memilih format apa pun. Jika Anda ingin menggunakan sesuatu yang lain, ingatlah juga untuk mengkonfigurasinya untuk Dovecot.
Daripada mengedit file konfigurasi secara langsung, Anda dapat menggunakan perintah postconf -e untuk mengubah parameter Postfix.
sudo postconf -e 'home_mailbox = Maildir/'
Menggunakan format kotak surat Maildir, email disimpan di bawah folder utama pengguna penerima /home//Maildir.
Juga, beri tahu Postfix domain apa yang menjadi tujuan akhirnya sehingga dapat dengan mudah direferensikan sebagai variabel Postfix, seperti yang telah ditunjukkan dalam skrip konfigurasi.
sudo postconf -e 'mydomain = <example.com>'
Sekarang Postfix telah terinstal, Anda dapat melanjutkan dengan konfigurasi lebih lanjut di bawah.
Mendapatkan sertifikat Let’s Encrypt
Mengaktifkan TLS akan mengharuskan Anda mendapatkan sertifikat. Let’s Encrypt adalah Otoritas Sertifikat gratis, otomatis, dan terbuka yang memungkinkan penyiapan sertifikat dengan mudah menggunakan klien Certbot ACME dari Electronic Frontier Foundation.
Cara mudah untuk mendapatkan sertifikat yang diterbitkan pada server yang tidak memiliki server web yang berjalan adalah dengan menggunakan klien dengan plugin –standalone. Mulailah dengan menginstal modul Let’s Encrypt.
sudo apt install certbot
Setelah instalasi selesai, Anda dapat menjalankan prosesnya dengan perintah mudah di bawah ini. Ganti mail.example.com dengan nama domain Anda.
sudo certbot certonly --standalone -d mail.example.com
Perintah tersebut memulai skrip konfigurasi interaktif, yang akan menanyakan beberapa pertanyaan untuk menyiapkan sertifikat dengan benar.
- Pilih Ya untuk menggunakan file vhost default dan tentukan pengaturannya secara manual.
- Masukkan nama domain server email mail.example.com .
- Pada instalasi pertama di host tertentu, Anda harus memasukkan email kontak.
- Baca Ketentuan Layanan Let’s Encrypt dan pilih Setuju untuk melanjutkan.
- Kemudian pilih apakah Anda ingin menggunakan HTTP dan HTTPS atau mengharuskan semua lalu lintas menggunakan enkripsi dengan menyorot opsi Mudah atau Aman dan memilih OK .
Jika semuanya berfungsi dengan benar, Anda akan mendapatkan pesan bahwa HTTPS berhasil diaktifkan.
Jika Anda sudah menginstal layanan web di server email Anda, Anda dapat menemukan lebih lanjut tentang cara mendapatkan sertifikat dengan Apache2 atau Nginx dalam petunjuk khusus perangkat lunaknya.
Setelah Anda menyelesaikan prosesnya, sertifikat akan disimpan di /etc/letsencrypt/live/<domain.Anda>/. Anda dapat menambahkan sertifikat baru ke konfigurasi Postfix menggunakan dua perintah di bawah ini. Ganti <domain.anda> dengan nama domain server email Anda.
sudo postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/<your.domain>/fullchain.pem'
sudo postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/<your.domain>/privkey.pem'
Anda dapat mengonfigurasi server email lainnya dengan sertifikat terpasang.
Menyiapkan otentikasi SMTP
Selanjutnya, Anda harus mengaktifkan SMTP-AUTH, yang memungkinkan klien mengidentifikasi dirinya melalui mekanisme otentikasi SASL. Transport Layer Security (TLS) harus digunakan untuk mengenkripsi proses otentikasi. Setelah diautentikasi, server akan mengizinkan klien untuk menyampaikan email.
Masukkan hasil edit berikut apa adanya.
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'
Kemudian, 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_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
Mengaktifkan SASL memungkinkan pengguna mengirim pesan di luar domain lokal tanpa mengorbankan keamanan relai.
Pemetaan alias virtual
Bagian terakhir dari konfigurasi Postfix adalah memetakan alamat email yang ingin Anda gunakan ke akun pengguna Anda. Dengan domain alias virtual, setiap alamat yang dihosting dapat diberi alias ke akun sistem UNIX lokal atau alamat jarak jauh. Aktifkan pemetaan alias virtual dengan dua perintah edit berikut.
sudo postconf -e 'virtual_alias_domains = $mydomain'
sudo postconf -e 'virtual_alias_maps = hash:/etc/postfix/virtual'
Anda kemudian dapat membuat peta alias yang ditunjukkan di atas. Contoh di bawah menunjukkan cara menggunakan mekanisme ini untuk domain example.com . Tetapkan alamat email yang ingin Anda aktifkan ke nama pengguna menggunakan <[email protected]><username>
pola yang sama.
sudo nano /etc/postfix/virtual
postmaster@example.com root
root@example.com root
info@exampe.com info
Setelah Anda mengkonfigurasi alias virtual, beri tahu Postfix untuk membuat file database yang diperlukan dari daftar.
sudo postmap /etc/postfix/virtual
Kemudian restart Postfix sendiri untuk menerapkan konfigurasi penuh.
sudo systemctl restart postfix
Anda mungkin juga ingin menambahkan pengaturan Maildir ke templat direktori home pengguna sehingga dikonfigurasi secara otomatis ketika akun pengguna baru dibuat.
sudo maildirmake.dovecot /etc/skel/Maildir
sudo maildirmake.dovecot /etc/skel/Maildir/.Drafts
sudo maildirmake.dovecot /etc/skel/Maildir/.Sent
sudo maildirmake.dovecot /etc/skel/Maildir/.Trash
sudo maildirmake.dovecot /etc/skel/Maildir/.Templates
Maildir yang sama dapat ditambahkan ke pengguna saat ini menggunakan perintah di bawah ini. Jika pengguna tersebut tidak memiliki hak sudo, ganti $USER dengan nama pengguna yang ada.
sudo cp -r /etc/skel/Maildir /home/$USER/
sudo chown -R $USER:$USER /home/$USER/Maildir
sudo chmod -R 700 /home/$USER/Maildir
sudo adduser $USER mail
Terakhir, sertakan lokasi Maildir di terminal dan profil email Anda.
echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh
Masuk kembali ke terminal untuk menerapkan perubahan grup dengan membuka kembali koneksi SSH.
Mengonfigurasi Dovecot
Postfix mendukung dua implementasi SASL yang digunakan untuk otentikasi, Cyrus dan Dovecot. Dari keduanya, Dovecot relatif mudah dikonfigurasi dan oleh karena itu dipilih untuk panduan ini. Untuk mengaktifkan Dovecot SASL Anda perlu menginstal paket dovecot-common . Anda mungkin juga ingin menginstal plugin Dovecot untuk IMAP dan POP3 untuk memungkinkan koneksi dari klien email seperti Thunderbird atau Outlook.
sudo apt install dovecot-common dovecot-imapd dovecot-pop3d
Setelah terinstal, Anda perlu membuat beberapa perubahan pada beberapa file konfigurasi. Konfigurasi Dovecot dibagi menjadi beberapa file di /etc/dovecot/conf.d/. Untuk mengaktifkan fitur keamanan yang diperlukan, lakukan perubahan yang ditunjukkan di bawah ini pada empat file .conf berikutnya.
Mulailah dengan menonaktifkan otentikasi teks biasa di bagian atas dan mengaktifkan mekanisme otentikasi login di dekat akhir file auth.conf .
sudo nano /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
...
auth_mechanisms = plain login
Kemudian, instruksikan direktori mail untuk menggunakan format yang sama seperti Postfix.
sudo nano /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
Selanjutnya, konfigurasikan protokol IMAP dan POP3 untuk klien email di file master.conf seperti yang ditunjukkan di bawah ini. Batalkan komentar pada baris port yang ditunjukkan di bawah dengan menghapus tanda ‘#’ di awal baris ini. Dalam file yang sama, edit juga segmen autentikasi layanan untuk mengizinkan autentikasi pengguna.
sudo nano /etc/dovecot/conf.d/10-master.conf
service imap-login {
inet_listener imap {
port = 143
}
...
}
service pop3-login {
inet_listener pop3 {
port = 110
}
...
}
...
service auth {
...
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
Sebagian besar klien email menggunakan port standar secara default, 143 untuk IMAP dan 110 untuk POP3. Dengan STARTTLS yang diperlukan untuk setiap koneksi, tidak perlu menduplikasi layanan ke port khusus SSL.
Anda juga harus menyertakan sertifikat Anda di file Dovecot ssl.conf , dan mengganti <mail.example.com> dengan nama domain server Anda. Pilih untuk mewajibkan SSL dan nonaktifkan juga protokol SSLv2 dan SSLv3 yang tidak aman.
sudo nano /etc/dovecot/conf.d/10-ssl.conf
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = required
...
ssl_cert = </etc/letsencrypt/live/<mail.example.com>/fullchain.pem
ssl_key = </etc/letsencrypt/live/<mail.example.com>/privkey.pem
...
# SSL protocols to use
ssl_protocols = !SSLv2 !SSLv3
Setelah selesai mengedit file, Anda dapat memeriksa konfigurasi Dovecot menggunakan perintah berikut.
dovecot -n
Setelah semuanya terlihat benar, mulai ulang Dovecot untuk menerapkan pengaturan baru.
sudo systemctl restart dovecot
Hanya itu saja! Selamat, server email Anda kini siap menerima dan mengirim email menggunakan autentikasi aman.
Menguji server SMTP secara lokal
Anda dapat menguji server Postfix secara lokal dari terminal dengan menggunakan koneksi langsung dengan netcat , telnet atau sejenisnya. Perintah berikut harus dijalankan dalam urutan yang benar, atau server akan menutup koneksi.
nc mail.example.com 25
EHLO $hostname
MAIL FROM:<root@example.com>
RCPT TO:<info@example.com>>
DATA
Subject: Test email
Body of the email
.
QUIT
Jika konfigurasi berfungsi dengan benar, Anda akan melihat konfirmasi bahwa email yang baru saja Anda tulis telah dimasukkan ke dalam antrian dan akan tiba sebentar lagi.
Perhatikan bahwa dengan menggunakan metode ini, Anda hanya dapat mengirim email ke alamat domain Anda sendiri. Saat mencoba menyetel penerima di luar domain, Anda akan melihat pesan yang menyatakan bahwa akses relai ditolak dan sambungan akan ditutup.
Cara lain yang lebih nyaman untuk menggunakan email dari terminal adalah dengan menginstal Mailutils.
sudo apt install mailutils
Ini dapat digunakan untuk memeriksa email menggunakan perintah sederhana di bawah ini.
mail
Anda juga dapat menguji pengiriman email menggunakan utilitas yang sama dengan menambahkan alamat penerima.
mail test@example.com
Kemudian, lengkapi formulir email dengan subjek dan isi teks. Kirim pesan dengan menekan Ctrl+D, yang keluar dari utilitas. Menggunakan metode ini akan memungkinkan Anda mengirim pesan ke luar jaringan Anda. Namun, alamat pengirim dan pengirim akan menampilkan nama pengguna dan nama domain server Anda, misalnya [email protected]
, daripada yang mungkin lebih diinginkan [email protected]
. Oleh karena itu, metode ini sebaiknya hanya digunakan untuk tujuan pengujian.
Opsi keamanan tambahan
Perhatian utama dalam menjalankan server SMTP pribadi adalah memerangi pesan spam yang masuk dan keluar. Konfigurasi yang aman dan kata sandi pengguna yang kuat akan membantu dalam hal ini, namun Anda mungkin ingin mengambil langkah tambahan untuk mencegah spam masuk.
Tolak koneksi buruk dan pesan spam
Memperketat aturan koneksi SMTP dapat menghentikan banyak robot spam umum yang mengabaikan etiket email. Memerlukan perintah HELO atau EHLO yang valid dengan nama domain yang sepenuhnya memenuhi syarat dapat melakukan hal tersebut. Tambahkan parameter berikut untuk lebih meningkatkan konfigurasi aman Postfix Anda.
sudo postconf -e 'smtpd_helo_required = yes'
sudo postconf -e 'smtpd_helo_restrictions = reject_non_fqdn_helo_hostname,reject_invalid_helo_hostname,reject_unknown_helo_hostname'
Postfix mendukung perintah verifikasi (VRFY) yang memungkinkan siapa pun menentukan apakah ada akun di sistem, yang dapat memberikan bantuan signifikan terhadap serangan brute force apa pun pada akun pengguna Anda. VRFY juga dapat memberikan informasi sensitif tentang pengguna, seperti nama lengkap pemilik akun. Disarankan untuk menonaktifkan perintah VRFY dengan parameter berikut.
sudo postconf -e 'disable_vrfy_command = yes'
Anda mungkin juga ingin menunda pesan penolakan agar Postfix dapat mencatat informasi alamat penerima ketika klien yang terhubung melanggar salah satu aturan penolakan. Hal ini memungkinkan Anda untuk kemudian mengetahui siapa yang coba ditargetkan oleh spammer.
sudo postconf -e 'smtpd_delay_reject = yes'
Pembatasan penerima Postfix yang ditetapkan di bagian konfigurasi SASL penting dalam mengamankan server sekaligus memungkinkan pengguna untuk terhubung dengan klien email seperti Thunderbird atau Outlook. Menjaga parameter ini dalam urutan yang benar akan mempertahankan kemampuan ini, namun Anda dapat menyertakan batasan lebih lanjut yang harus dipatuhi oleh pesan masuk.
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,reject_invalid_hostname,reject_non_fqdn_hostname,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_sender_domain,reject_rbl_client sbl.spamhaus.org,reject_rbl_client cbl.abuseat.org'
Parameter di atas cukup jelas meskipun agak sulit dibaca dalam format terminal yang ramah salin dan tempel. Ide umumnya adalah menolak koneksi dari alamat buatan yang tidak menggunakan nama domain yang sepenuhnya memenuhi syarat atau memang tidak ada. Di sini dimungkinkan juga untuk menambahkan filter spam eksternal seperti daftar hitam Spamhaus atau CBL. Jika Anda ingin mengetahui lebih lanjut, Postfix memiliki dokumentasi yang sangat luas mengenai opsi konfigurasinya.
Mengarahkan spam ke /dev/null
Postfix mendukung apa yang disebut alamat catch-all dengan alias virtual. Setiap email yang dikirim ke alamat yang tidak ditentukan dalam peta virtual akan diarahkan sesuai dengan alamat generiknya. Ini berguna untuk menyembunyikan alamat yang valid dengan mengizinkan pengiriman email ke alamat mana pun, sehingga mencegah pelaku spam menemukan pengguna sebenarnya melalui coba-coba sederhana.
Aktifkan alamat catch-all dengan menambahkan baris seperti yang ditunjukkan pada contoh di bawah ini ke akhir pemetaan virtual Anda tanpa bagian lokal apa pun dan arahkan pesan ke pengguna virtual none .
sudo nano /etc/postfix/virtual
...
@example.com nobody
Untuk mencegah spam memenuhi seluruh ruang penyimpanan Anda, edit daftar alias sistem untuk mengarahkan pesan yang dikirim ke alamat yang tidak valid langsung ke /dev/null.
sudo nano /etc/aliases
# See man 5 aliases for format
postmaster: root
nobody: /dev/null
Setelah Anda mengkonfigurasi sistem dan alias virtual, beri tahu Postfix untuk membuat ulang file database yang diperlukan dari daftar ini.
sudo postmap /etc/postfix/virtual
sudo postalias /etc/aliases
Kemudian, muat ulang Postfix untuk mengaktifkan pengaturan baru.
sudo service postfix reload
Anda dapat menguji perangkap spam dengan mengirimkan pesan ke alamat email acak yang tidak dikonfigurasi. Surat seharusnya berhasil terkirim tetapi tidak akan disimpan. Cara lain untuk mengujinya adalah dengan menggunakan validator alamat seperti Pemeriksa Email , alamat mana pun akan terlihat valid, bahkan yang belum ada sama sekali.
Menjaga keamanan
Mengkonfigurasi dan memelihara server SMTP Postfix yang aman hanya memerlukan pemahaman dasar tentang komponen, namun kesalahan sederhana dalam pengaturan dapat menyebabkan pengaturan keamanan tidak efektif, oleh karena itu bagian terpenting adalah memastikan server tidak menjadi relai terbuka. MX Toolbox, sebuah utilitas pengujian jaringan online, menyediakan alat diagnostik SMTP yang dengannya Anda dapat dengan mudah menguji konfigurasi Anda hanya dengan memasukkan nama domain server email Anda seperti mail.example.com. Dengan pengaturan yang digunakan dalam panduan ini, semuanya akan menunjukkan warna hijau dalam pengujiannya, asalkan aturan DNS telah disebarkan.
Meskipun konfigurasi membantu menjaga keamanan server SMTP Anda, kata sandi pengguna yang kuat juga sangat penting. Jika pihak ketiga mendapatkan akses tidak sah ke salah satu akun pengguna, mereka akan dapat mengirim pesan spam tanpa hambatan menggunakan infrastruktur Anda dan merusak reputasi jaringan Anda. Cara umum untuk mengurangi kemungkinan seseorang menebak kata sandi pengguna Anda adalah dengan menerapkan batasan pada upaya logging yang gagal dengan Fail2ban. Anda dapat membaca lebih lanjut tentang menginstal Fail2ban di Ubuntu di artikelnya sendiri untuk lebih meningkatkan keamanan server.