Konfigurasi Mail Server
Membuat mail server memiliki tingkat kesulitan yang lebih tinggi jika dibandingkan dengan server lain. Hal tersebut dikarenakan mail server memiliki banyak komponen yang harus dikonfigurasi.
Mail server memiliki 2 komponen penting agar dapat berjalan yaitu SMTP dan IMAP. SMTP berfungsi untuk mengirim e-mail antar server oleh karena itu SMTP juga disebut MTA (Mail Transfer Agent). Sedangkan IMAP berfungsi untuk mengambil e-mail dari server oleh user, IMAP biasa juga disebut MUA (Mail User Agent). Kita akan menggunakan software Postfix untuk SMTP dan software Dovecot untuk IMAP. Dan untuk user interface nya, kita akan menggunakan Roundcube.
Selain 2 komponen tersebut nantinya kita juga akan install beberapa komponen lain agar e-mail kita dipercaya oleh server lain. Komponen tersebut adalah SPF dan DKIM dan SSL untuk enkripsi. Namun pada bab ini hanya meng-ssl-kan user interface nya saja.
Install Postfix
Kita akan meng-install postfix untuk SMTP.
sudo apt-get install postfixLalu muncul opsi installasi postfix, kita akan memilih Internet Site setelah itu kita diminta untuk memasukkan domain pada system mail name. Ini akan menjadi domain pada alamat e-mail yang biasanya berada di belakang simbol @ pada email. Misalnya alamat email saya adalah galih@myapp.com maka saya harus mengisinya dengan myapp.com.
Lalu kita akan ubah lokasi mailbox pada /etc/postfix/main.cf. Buka dan tambahkan baris berikut dipaling bawah pada file tersebut.
home_mailbox = Maildir/Lalu sekarang kita akan melakukan konfigurasi ulang pada service postfix dengan perintah berikut.
sudo dpkg-reconfigure postfixLalu akan ada prompt yang meminta mengisi Destination to accept email maka kita isi dengan myapp.com, dan ketika mengisi Local Network maka isi dengan 0.0.0.0/0, dan sisa nya hanya perlu Yes saja.
Install Dovecot
Kita akan meng-install postfix untuk IMAP.
sudo apt-get install dovecot-core dovecot-imapd Jika sudah maka kita akan konfigurasi dovecot nya. Kita akan melakukan konfigurasi penting pada file /etc/dovecot/dovecot.conf, /etc/dovecot/conf.d/10-auth.conf, dan /etc/dovecot/conf.d/10-mail.conf.
Cari baris listen pada file /etc/dovecot/dovecot.conf dan ubah seperti berikut.
listen = *Lalu cari baris disable_plaintext_auth pada file /etc/dovecot/conf.d/10-auth.conf dan ubah seperti berikut.
disable_plaintext_auth = noLalu cari baris mail_location pada file /etc/dovecot/conf.d/10-mail.conf dan ubah seperti berikut.
mail_location = maildir:~/MaildirLalu aktifkan Maildir dovecot nya dengan perintah berikut:
maildirmake.dovecot /etc/skel/Maildir/Membuat User
User untuk mail server kita juga menggunakan user yang sama didalam server kita, maka untuk melakukan tes kita akan membuat user tes.
sudo adduser galihsudo adduser faizInstall Roundcube
Kita akan meng-install roundcube untuk user interface mail server kita.
sudo apt-get install roundcube Lalu konfigurasi roundcube pada file /etc/roundcube/config.inc.php. Defaultnya file tersebut belum ada, maka kita akan meng-copy-nya dari /etc/roundcube/config.inc.sample.php.
sudo cp /etc/roundcube/config.inc.sample.php /etc/roundcube/config.inc.phpLalu buka file tersebut kemudian cari baris dan sesuaikan dengan konfigurasi berikut:
$config['default_host'] = 'myapp.com';
$config['smtp_server'] = 'localhost';
$config['smtp_port'] = '25';
$config['smtp_user'] = '';
$config['smtp_pass'] = '';Install PHP
Kita akan install PHP untuk menunjang webserver kita, karena untuk menjalankan roundcube membutuhkan PHP.
sudo add-apt-repository ppa:ondrej/phpsudo apt-get updatesudo apt install php8.2-fpm php8.2-common php8.2-cli php8.2-mbstring php8.2-gd php8.2-intl php8.2-xml php8.2-mysql php8.2-zip php8.2-jsonPastikan bahwa PHP sudah terinstall.
php -vsudo systemctl status php8.2-fpmInstall Nginx
Lalu kita akan menginstall nginx untuk webserver nya.
sudo apt-get updatesudo apt-get install nginxKonfigurasi Server Block
Jika sudah kita tinggal melakukan konfigurasi webserver nginx agar ketika ada yang mengakses mail.myapp.com maka otomatis akan dibawa ke roundcube.
Konfigurasi dan sesuaikan dengan script berikut:
server {
listen 80;
server_name mail.myapp.com;
root /var/lib/roundcube/;
index index.php index.html;
location ~ \.php$ {
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
access_log /var/log/nginx/mail.access.log;
error_log /var/log/nginx/mail.error.log;
}Ekstensi file konfigurasi server block didalam /etc/nginx/conf.d/ harus .conf.
Jika sudah sekarang hanya perlu me-restart nginx.
sudo systemctl restart nginxSekarang silahkan buka http://mail.myapp.com dan login dengan user yang sudah dibuat tadi. Dan untuk melakukan pengetesan silahkan kirim email dari galih ke faiz dan juga sebaliknya.
Konfigurasi SSL / HTTPS
Agar web interface roundcube dapat diakses melalui https, maka kita juga akan melakukan konfigurasi ssl pada nginx nya.
File yang perlu kita siapkan adalah:
- myapp.crt
- myapp.key
Kita telah membuat 2 file tersebut, lalu simpan 2 file tersebut di /home/ubuntu/ssl/.
Konfigurasi ulang dan sesuaikan dengan script berikut:
server {
listen 443 ssl;
ssl_certificate /home/ubuntu/ssl/myapp.crt;
ssl_certificate_key /home/ubuntu/ssl/myapp.key;
server_name mail.myapp.com;
root /var/lib/roundcube/;
index index.php index.html;
location ~ \.php$ {
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
access_log /var/log/nginx/mail.access.log;
error_log /var/log/nginx/mail.error.log;
}
server {
listen 80
server_name mail.myapp.com
return 302 https://$server_name$request_uri;
}Jika sudah sekarang hanya perlu me-restart nginx.
sudo systemctl restart nginxSekarang silahkan buka https://mail.myapp.com (opens in a new tab) untuk uji coba.