Skip to content

Installasi & Konfigurasi Mail Server + Roundcube di Centos/RHEL 8

Sebelum kita melakukan konfigurasi mail server, pastikan kita sudah mengkonfigurasi MX Record di DNS Server, MX Record ini nantinya kita arahkan ke server email kita contohnya seperti ini

@ IN MX 5 mail.sysidn.id.
mail IN A 172.23.0.151

Tahap pertama kita lakukan installasi MTA (Mail Transfer Agent) yang berfungsi untuk melakukan pengiriman email dengan protokol SMTP. Ada banyak software yang bisa digunakan seperti mailq,sendmail,smtpd. Kali ini kita menggunakan software yang umum digunakan yaitu postfix.

Installasi Postfix

dnf install postfix -y

Menjalankan dan Mengaktifkan Layanan

systemctl start postfix
systemctl enable postfix

Jika kita menggunakan firewalld, tambahkan rule baru untuk mengizinkan protokol smtp

firewall-cmd --add-service=smtp --permanent
firewall-cmd --reload

Konfigurasi Postfix

Sebelum melakukan konfigurasi pastikan hostname server kita sudah berformat FQDN(Fully Qualified Domain). Ubah nama hostname dan tambahkan FQDN ke hosts

[root@mail ~]# vi /etc/hostname
.....
mail
.....
[root@mail ~]# vi /etc/hosts
.....
172.23.0.151 mail.sysidn.id mail
.....
[root@mail ~]# vi /etc/postfix/main.cf
.....
##Ubah beberapa konfigurasi berikut
myhostname = mail.sysidn.id
mydomain = sysidn.id
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
myorigin = $mydomain
inet_interfaces = ipv4
#Masukkan Alamat IP Lokal kita
mynetworks = 127.0.0.0/8, 172.23.0.0/20
home_mailbox = Maildir/

#Limit maksimal ukuran email, misal 10MB
message_size_limit = 10240000

#SMTP-Auth Setting untuk MUA
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject
.....

Selanjutnya restart layanan postfix, dan pastikan tidak ada error

[root@mail ~]# systemctl restart postfix

[root@mail ~]# systemctl status postfix

Selanjutnya konfigurasi POP3/IMAP agar server kita bisa menerima email, untuk software yang kita gunakan yaitu Dovecot

Install Dovecot

[root@mail ~]# dnf -y install dovecot

Menjalankan dan Mengaktifkan Layanan

[root@mail ~]# systemctl start postfix
[root@mail ~]# systemctl enable postfix

Menambahkan rule di firewall, agar mengizinkan protokol pop3,imap berjalan

[root@mail ~]# firewall-cmd --add-service={pop3,imap} --permanent
[root@mail ~]# firewall-cmd --reload

Konfigurasi Dovecot

[root@mail ~]# vi /etc/dovecot/dovecot.conf
.....
#Hilangkan komentar listen
listen = *, ::
.....
[root@mail ~]# vi /etc/dovecot/conf.d/10-auth.conf
.....
#Hilangkan komentar dan izinkan plaintext login
disable_plaintext_auth = no

#Tambahkan login auth mechanism
auth_mechanisms = plain login
.....
[root@mail ~]# vi /etc/dovecot/conf.d/10-mail.conf
.....
#Mengubah lokasi direktori mail menjadi Maildir, beri komentar pada konfigurasi lain
mail_location = maildir:~/Maildir
#mail_location = mbox:~/mail:INBOX=/var/mail/%u
#mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
.....
[root@mail ~]# vi /etc/dovecot/conf.d/10-master.conf
.....
##Hilangkan komentar pada konfigurasi postfix smtp-auth dan tambahkan user dan group postfix
 # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
.....
[root@mail ~]# vi /etc/dovecot/conf.d/10-ssl.conf
.....
#Ubah menjadi yes jika ingin menggunakan SSL
ssl = no
.....

Restart layanan Dovecot

[root@mail ~]# systemctl restart dovecot

Melakukan pengujian dengan menggunakan telnet

Sebelum melakukan pengujian mail server kita buat user terlebih dahulu, disini saya membuat 2 user misal rafi dan andri

[root@mail ~]# adduser rafi
[root@mail ~]# passwd rafi
Changing password for user rafi.
New password: PasswordPalingAman
Retype new password: PasswordPalingAman
passwd: all authentication tokens updated successfully.
[root@mail ~]# adduser andri
[root@mail ~]# passwd andri
Changing password for user andri.
New password: PasswordPalingAman
Retype new password: PasswordPalingAman
passwd: all authentication tokens updated successfully.

Kita lakukan pengiriman email dengan melakukan telnet ke smtp dengan port 25

[root@mail ~]# telnet mail.sysidn.id 25
Trying 172.23.0.151...
Connected to mail.sysidn.id.
Escape character is '^]'.
220 mail.sysidn.id ESMTP
mail from: [email protected]
250 2.1.0 Ok
rcpt to: [email protected]
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Tes mengirim email
.
250 2.0.0 Ok: queued as CEFEB9CCD
quit
221 2.0.0 Bye
Connection closed by foreign host.

Kemudian kita telnet ke pop3 dengan port 110 untuk melihat apakah email yang kita kirim tadi berhasil diterima atau tidak.

[root@mail ~]# telnet mail.sysidn.id 110
Trying 172.23.0.151...
Connected to mail.sysidn.id.
Escape character is '^]'.
+OK Dovecot ready.
user andri
+OK
pass PasswordPalingAman
+OK Logged in.
list
+OK 1 messages:
1 417
.
retr 1
+OK 417 octets
Return-Path: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: from mail.sysidn.id (mail.sysidn.id [172.23.0.151])
	by mail.sysidn.id (Postfix) with SMTP id CEFEB9CCD
	for <[email protected]>; Mon,  4 Jul 2022 13:52:18 +0000 (UTC)
Message-Id: <[email protected]>
Date: Mon,  4 Jul 2022 13:52:18 +0000 (UTC)
From: [email protected]

Tes mengirim email
.
quit
+OK Logging out.
Connection closed by foreign host.

Email berhasil diterima, konfigurasi mail server yang kita lakukan berhasil! selanjutnya kita akan install Roundcube Webmail untuk memudahkan user dalam pengiriman dan penerimaan email.

Sebelum melakukan installasi Roundcube pastikan sudah menginstall LAMP/LEMP Stack di Artikel sebelumnya

Installasi Roundcube

Pertama download terlebih dahulu roundcube terbaru dari repository yang berada di github

[root@mail ~]# wget https://github.com/roundcube/roundcubemail/releases/download/1.5.3/roundcubemail-1.5.3.tar.gz

Lalu ekstrak file dan pindah ke direktori /var/www

[root@mail ~]# tar xvf roundcubemail-1.5.3.tar.gz 
[root@mail ~]# mv roundcubemail-1.5.3 /var/www/roundcube

Install Depedensi PHP yang dibutuhkan

[root@mail ~]# dnf install -y php-ldap php-imagick php-common php-gd php-imap php-json php-curl php-zip php-xml php-mbstring php-bz2 php-intl php-gmp php-pdo php-mysqli

Konfigurasi Database untuk Roundcube

disini kita membuat user ngadmin untuk database roundcube

[root@mail ~]# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.3.28-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database roundcube;
Query OK, 1 row affected (0.002 sec)

MariaDB [(none)]> grant all privileges on roundcube.* to 'ngadmin'@'localhost' identified by 'PasswordPalingAman';
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> exit
Bye

Selanjutnya kita perlu mengimpor contoh database yang digunakan oleh roundcube.

Jalankan perintah berikut

[root@mail ~]# mysql -u root -p roundcube < /var/www/roundcube/SQL/mysql.initial.sql
Enter password: PasswordPalingAman

Buat VirtualHost baru di Apache

[root@mail ~]# vi /etc/httpd/conf.d/roundcube.conf
.....
<VirtualHost *:80>
  ServerName mail.sysidn.id
  DocumentRoot /var/www/roundcube/

  ErrorLog /var/log/httpd/roundcube_error.log
  CustomLog /var/log/httpd/roundcube_access.log combined

  <Directory />
    Options FollowSymLinks
    AllowOverride All
  </Directory>

  <Directory /var/www/roundcube/>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

</VirtualHost>
.....

Restart layanan Apache

[root@mail ~]# systemctl restart httpd

Jalankan installer di web browser

http://mail.yourdomain.com/installer

Jika menggunakan Nginx berikut konfigurasi VirtualHostnya

[root@mail ~]# vi /etc/nginx/conf.d/roundcube.conf
.....
server {
  listen 80;
  server_name mail.sysidn.id;
  root /var/www/roundcube/;
  index index.php;

  error_log /var/log/nginx/roundcube.error;
  access_log /var/log/nginx/roundcube.access;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ \.php$ {
   try_files $uri =404;
    fastcgi_pass unix:/run/php-fpm/www.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }

}
.....

Test konfigurasi nginx

[root@mail ~]# nginx -t

Jika berhasil lakukan restart pada layanan Nginx

[root@mail ~]# systemctl restart httpd

Akses Installer dari Browser pastikan semua dependensi sudah terinstall

Geser ke paling bawah lalu klik next

Di Halaman Konfigurasi disini saya ubah untuk product name menjadi Mail SysIDN

Geser kebawah di bagian database, isi nama database, username, dan password sesuai dengan yang kita buat tadi

Untuk Konfigurasi SMTP dan IMAP, kita bisa menggunakan port 25 dan 143 Akan tetapi agar lebih aman kita gunakan SMTPS dan IMAPS untuk itu kita perlu membuat sertifikat terlebih dahulu, untuk caranya bisa dilihat di Artikel ini

Konfigurasi SMTPS di Postfix

[root@mail ~]# vi /etc/postfix/main.cf
.....
#Arahkan ke lokasi file sertifikat dan key
smtpd_tls_cert_file = /etc/ssl/sysidn1.crt
smtpd_tls_key_file = /etc/ssl/sysidn1.key
smtp_tls_CAfile = /etc/ssl/cacert.pem
.....

Kemudian aktifkan konfigurasi TLS dan SSL, hilangkan komentar pada submission dan smtps

[root@mail ~]# vi /etc/postfix/master.cf
.....
submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -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

smtps     inet  n       -       n       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_recipient_restrictions=
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
.....

Lalu restart layanan postfix, dan pastikan port 465&587 sudah aktif

[root@mail ~]# systemctl restart postfix
[root@mail ~]# ss -tulpn | grep master

Konfigurasi IMAPS/POP3S di Dovecot

Konfigurasi SSL/TLS

[root@mail ~]# vi /etc/dovecot/conf.d/10-ssl.conf
.....
ssl = required
ssl_cert = </etc/ssl/sysidn1.crt
ssl_key = </etc/ssl/sysidn1.key
ssl_dh = </etc/dovecot/dh.pem
ssl_prefer_server_ciphers = yes
.....

Simpan file, lalu generate diffie-hilman file(Tunggu agak lama)

[root@mail ~]# openssl dhparam -out /etc/dovecot/dh.pem 4096

Terakhir restart layanan dovecot dan pastikan port 993 & 995 sudah berjalan

[root@mail ~]# systemctl restart dovecot
[root@mail ~]# ss -tulpn | grep dovecot

Oke, kita lanjutkan lagi untuk setup roundcubenya

Isi konfigurasi imap seperti ini

Konfigurasi SMTP

Untuk plugins disini saya centang semua plugin

Terakhir klik create config

Konfigurasi berhasil, kita klik Continue jika ingin melakukan pengetesan konfigurasi

Jangan lupa untuk mendisable menu installer di config.inc.php

[root@mail ~]# vi /var/www/roundcube/config/config.inc.php
.....
$config['enable_installer'] = false; 
.....

Lanjut kita uji coba mengirim email menggunakan roundcube

Lalu kita cek di mailbox user andri apakah email yang dikirim tadi sudah ada

Published inCentosLinuxRed Hat

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *