Instalasi IMAP Server Dovecot & Enkripsi TLS di Ubuntu 20.04

Ini adalah bagian ke-2 dari tutorial cara membuat mail server di Ubuntu 20.04. Pada bagian pertama kita telah menginstall Postfix sebagai SMTP server di Ubuntu 20.04. Kali ini kita akan lanjutkan dengan menginstall IMAP Server Dovecot agar mail server kita dapat digunakan untuk mengirim dan menerima e-mail menggunakan mail client seperti Thunderbird atau Outlook. Selain itu, kita juga akan mengaktifkan enkripsi TLS agar email kita tidak mudah disadap.

Kita tidak menggunakan POP3 sebagai prokotol Mail User Agent karena saat ini tidak terlalu populer digunakan.

Berikut ini adalah cara install IMAP Server Dovecot dan Enkripsi TLS pada Mail Server di Ubuntu Server 20.04.

1. Request SSL untuk Hostname Server Dari Let’s Encrypt.

Perbarui database repositori terlebih dahulu:

$ sudo apt update

Selanjutnya kita akan request SSL dari Let’s Encrypt. Di sini kita akan menggunakan web server Nginx untuk verifikasi SSL ke Let’s Encrypt. Karena itu kita akan install python3-certbot-nginx. Jika anda sudah memiliki web server lain seperti apache2 silahkan install python3-certbot-apache.

$ sudo apt -y install certbot python3-certbot-nginx

Buat server block untuk hostname FQDN pada file /etc/nginx/sites-available/hostname.namadomain.com. Hostname FQDN adalah konfigurasi yang telah kita atur pada bagian prasyarat di tutorial bagian pertama. Jika anda lupa silahkan jalankan perintah hostname --fqdn untuk mengetahuinya. Contohnya hostname FQDN saya adalah itkodingserver.itkoding.com maka:

$ sudo nano /etc/nginx/sites-available/itkodingserver.itkoding.com

Masukkan kode di bawah ini (sesuaikan dengan hostname anda):

server {
        listen 80;
        root /var/www/itkodingserver.itkoding.com;
        index index.html index.htm index.nginx-debian.html;
        server_name itkodingserver.itkoding.com;

        location / {
                try_files $uri $uri/ =404;
        }
}

Tutup lalu simpan file tersebut.

Aktifkan server block dengan cara:

$ sudo ln -s /etc/nginx/sites-available/itkodingserver.itkoding.com /etc/nginx/sites-enabled/

Bagi pengguna apache2 silahkan sesuaikan dengan membuat VirtualHost untuk alamat hostname anda.

Buat direktori web root:

$ sudo mkdir /var/www/itkodingserver.itkoding.com

Reload nginx:

$ sudo systemctl reload nginx

Buka port 80 pada Firewall UFW:

$ sudo ufw allow 'Nginx HTTP'

Request SSL dengan perintah:

$ sudo certbot certonly --nginx

Jika pertama kali request SSL maka akan tampil, silahkan sesuaikan jawabannya dengan domain anda:

Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): Isi dengan email anda.

(A)gree/(C)ancel: A Ketik A untuk menyetujui.

Would you be willing to share your email... (Y)es/(N)o: N Ketik N.

Which names would you like to activate HTTPS for?
1: itkodingserver.itkoding.com
Select the appropriate numbers separated by commas and/or spaces,
or leave input blank to select all options shown (Enter 'c' to cancel): 1 Ketik nomor domain yang ingin diberi SSL HTTPS, pisahkan dengan spasi jika lebih dari 2 nomor.

Maka file SSL akan disimpan pada direktori /etc/letsencrypt/live/namadomain/. Misalnya SSL pada contoh praktik ini terletak pada /etc/letsencrypt/live/itkodingserver.itkoding.com/.

2. Aktifkan Submission pada Postfix

Agar kita bisa mengirim atau menerima email dari aplikasi email client seperti Outlook ataupun Thunderbird maka layanan Submission pada Postfix harus diaktifkan. Untuk mengaktifkannya edit pada /etc/postfix/master.cf.

$ sudo nano /etc/postfix/master.cf

Copy-paste konfigurasi berikut ini di bagian paling bawah file untuk mengaktifkan submission di postfix:

submission     inet     n    -    y    -    -    smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_tls_wrappermode=no
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
 -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
 -o smtpd_sasl_type=dovecot
 -o smtpd_sasl_path=private/auth

Kode di atas akan mengaktifkan layanan Submission pada port TCP 587. Umumnya aplikasi email client akan menggunakan port 587. Namun, Microsoft Outlook menggunakan port lain yaitu port 465. Kita juga harus mengaktifkan SMTPS jika ingin menggunakan Outlook. Copy-paste juga kode di bawah ini lalu letakkan di bawah kode yang tadi.

smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth

Simpan lalu tutup file tersebut.

Edit konfigurasi Postfix agar menggunakan TLS:

$ sudo nano /etc/postfix/main.cf

Cari parameter TLS di bawah ini lalu ganti valuenya sesuai dengan lokasi SSL Let’s Encrypt anda. Contohnya di bawah ini:

smtpd_tls_cert_file=/etc/letsencrypt/live/itkodingserver.itkoding.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/itkodingserver.itkoding.com/privkey.pem

Tambahkan parameter berikut tepat di bawah parameter yang kita edit sebelumnya:

smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_loglevel = 1
#Menggunakan TLS terbaru TLSv1.3 atau TLSv1.2
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1

Simpan kemudian tutup file.

Ingat! Sesuaikan isian di atas dengan lokasi file SSL dari Let’s Encrypt yang telah anda request tadi pada langkah 1. Lokasi saya adalah pada /etc/letsencrypt/live/itkodingserver.itkoding.com/.

Restart postfix:

$ sudo systemctl restart postfix

Buka port untuk Postfix submission dan SMTPS:

$ sudo ufw allow 'Postfix Submission'
$ sudo ufw allow 'Postfix SMTPS'

3. Install dan Aktifkan IMAP Server Dovecot

Untuk menginstall IMAP server Dovecot berikut ini perintahnya:

$ sudo apt -y install dovecot-core dovecot-imapd

Edit konfigurasi file Dovecot untuk mengaktifkan imap server:

$ sudo nano /etc/dovecot/dovecot.conf

Tambahkan parameter di bawah ini di bagian paling bawah:

protocols = imap

Simpan kemudian tutup file.

4. Atur Lokasi Mailbox

Pada pengaturan default, Dovecot menyimpan email pada direktori /var/mail. Namun umumnya yang beredar saat ini lokasi penyimpanan email berada di direktori home masing-masing user. Untuk mengikuti tren pengaturan tersebut maka kita dapat mengubahnya:

$ sudo nano /etc/dovecot/conf.d/10-mail.conf

Cari parameter mail_location lalu ubah dari:

mail_location = mbox:~/mail:INBOX=/var/mail/%u

Menjadi:

mail_location = maildir:~/Maildir

Simpan lalu tutup file.

Masukkan user dovecot ke dalam grup mail:

$ sudo adduser dovecot mail

5. Atur Mekanisme Otentikasi

Edit file 10-auth.conf:

$ sudo nano /etc/dovecot/conf.d/10-auth.conf

Nonaktifkan otentikasi plaintext dengan cara menambahkan parameter berikut di bagian paling bawah file:

disable_plaintext_auth = yes

Tambahkan juga parameter berikut di bawah jika ingin menggunakan full alamat email seperti paijo@itkoding.com.

auth_username_format = %n

Cari baris parameter auth_mechanisms = plain lalu ubah menjadi:

auth_mechanisms = plain login

Tutup lalu simpan file.

6. Atur Enkripsi TLS

Edit file 10-ssl.conf:

$ sudo nano /etc/dovecot/conf.d/10-ssl.conf

Cari baris ssl = yes lalu ubah menjadi:

ssl = required

Cari baris ssl_cert dan ssl_key lalu ubah menjadi alamat SSL anda:

ssl_cert = </etc/letsencrypt/live/itkodingserver.itkoding.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/itkodingserver.itkoding.com/privkey.pem

Tambahkan parameter berikut di paling bawah file untuk mengatur ciphers dan versi minimal TLS:

ssl_prefer_server_ciphers = yes
ssl_protocols = !SSLv3 !TLSv1 !TLSv1.1
ssl_min_protocol = TLSv1.2

Simpan kemudian tutup file.

7. Atur Otentikasi SASL Dovecot untuk Postfix

Edit file 10-master.conf:

$ sudo nano /etc/dovecot/conf.d/10-master.conf

Cari service auth lalu ubah konfigurasi di dalamnya menjadi:

service auth {
    unix_listener /var/spool/postfix/private/auth {
      mode = 0660
      user = postfix
      group = postfix
    }
}

Tutup lalu simpan file.

8. Buat Folder E-Mail secara Otomatis

Edit file 15-mailboxes.conf:

$ sudo nano /etc/dovecot/conf.d/15-mailboxes.conf

Tambahkan parameter auto = create agar folder tersebut dibuat secara otomatis. Contohnya jika ingin membuat folder Draft otomatis:

mailbox Drafts {
    special_use = \Drafts
    auto = create
  }

Lakukan pada semua folder yang ingin anda buat otomatis (Junk, Trash dan Sent).

9. Install dan Konfigurasi Dovecot LMTP

LMTP digunakan untuk memasukkan e-mail yang diterima ke folder inbox e-mail. Pengalaman saya jika tanpa menginstall Dovecot LMTP kita tidak bisa mendapatkan notifikasi di aplikasi mail client secara real time.

Install Dovecot LMTP:

$ sudo apt -y install dovecot-lmtpd

Edit file utama dovecot:

$ sudo nano /etc/dovecot/dovecot.conf

Cari parameter protocols = imap lalu tambahkan lmtp:

protocols = imap lmtp

Simpan file kemudian tutup.

Edit file 10-master.conf lagi:

$ sudo nano /etc/dovecot/conf.d/10-master.conf

Atur parameter service lmtp agar bisa digunakan Postfix:

service lmtp {
 unix_listener /var/spool/postfix/private/dovecot-lmtp {
   mode = 0600
   user = postfix
   group = postfix
  }
}

Edit file konfigurasi utama Postfix:

$ sudo nano /etc/postfix/main.cf

Tambahkan kode di bawah ini di bagian paling bawah file untuk menggunakan LMTP:

mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtputf8_enable = no

Simpan file.

Restart Postfix dan Dovecot:

$ sudo systemctl restart postfix dovecot

Buka port untuk Dovecot IMAP dan Secure IMAP:

$ sudo ufw allow 'Dovecot IMAP'
$ sudo ufw allow 'Dovecot Secure IMAP'

10. Test Mail Server melalui Mail Client

Akun e-mail anda adalah user yang digunakan untuk login ubuntu ditambahkan dengan @namadomain.com misalnya user ubuntu saya adalah paijo maka menjadi paijo@itkoding.com. Jika ingin membuat akun baru kita hanya perlu menambahkan user di Ubuntu Server dengan cara:

$ sudo adduser namauserbaru

Kita bisa melakukan test untuk mengakses e-mail dari mail client seperti Thunderbird di Windows atau Microsoft Outlook di Android.

Silahkan unduh aplikasi email Thunderbird, install pada Windows anda lalu buka aplikasi Thunderbird tersebut.

Masukkan akun e-mail anda di Thunderbird dengan cara klik mail pada bagian setup an account. Masukkan nama, email dan password. Lalu, klik Manual Config.

Konfigurasi email di thunderbird

Pada incoming pilih IMAP lalu masukkan hostname FQDN anda, misalnya itkodingserver.itkoding.com lalu pilih Port 143. Pilih STARTTLS pada SSL. Lalu authentication pilih Normal Password.

Pada Outgoing masukkan juga hostname FQDN anda. Pilih Port 587 lalu pilih STARTTLS. Kemudian Normal Password.

Pada username incoming isi dengan username anda tanpa @namadomain.com, begitu juga pada outgoing. Klik Done maka kita dapat mengakses mail server yang telah dibangun.

Konfigurasi manual mail server pada thunderbird

Setelah melakukan tutorial di atas. Kita bisa mengirim e-mail dengan cara klik tombol Write > masukkan e-mail penerima > masukkan subject > masukkan isi e-mail > klik Sent. Kita juga bisa menerima e-mail melalui aplikasi mail client tersebut. Selain itu, email juga terenkripsi menggunakan SSL dari Let’s Encrypt.

Tampilan saat berhasil memasukkan mail server di thunderbird

Langkah Berikutnya

Jika e-mail kita dari aplikasi Thunderbird terkirim maka praktik pada part 2 ini berhasil. Biasanya e-mail masih dianggap spam oleh mail server lain. Oleh karena itu, pada part selanjutnya kita akan membuat SPF dan DKIM agar e-mail lebih dipercaya sehingga tidak dianggap spam. Silahkan baca part selanjutnya pada tulisan saya tentang cara membuat SPF dan DKIM pada mail server Ubuntu. Mari kita tingkatkan kualitas mail server kita.

M. Hernawan
Web developer yang juga suka dengan dunia sysadmin. Pernah belajar Teknik Informatika di Indonesia.

Komentar

  • Jasman
    • M. Hernawan
      • Jasman
        • M. Hernawan
  • Firgi
    • M. Hernawan

Kirim Komentar