Instalasi dan Konfigurasi Webmail SnappyMail pada CentOS 7

Sebelumnya sudah saya jelaskan cara install mail server pada CentOS 7, nah sekarang saya akan berbagi hal tentang cara menggunakan webmail pada mail server yang sudah dibuat pada posingan saya sebelumnya.

Penggunaan webmail ini penting juga karena untuk memudahkan user dalam bertransaksi emailnya secara mudah karena disediakan secara grafik (GUI). Pada kali ini saya akan menggunakan SnappyMail.

Apa itu SnappyMail ?
SnappyMail merupakan salah satu webmail client yang simpel, modern, ringat dan cepat juga. SnappyMail hasil upgrade dari webmail RainLoop. Kenapa dikatakan mudah ? Karena menggunakannya tidak perlu membuat database terlebih dahulu seperti halnya RainLoop dan RoundCube.

Langsung saja berikut penjelasan instalasi dan konfigurasinya :

Persyaratan :

a. SnappyMail membutuhkan PHP 7.4 atau versi diatasnya dengan ekstensi berikut ini :

  • mbstring
  • Zlib
  • json
  • libxml
  • dom

Ekstensi PHP opsional :

  • cURL
  • exif
  • gd
  • gnupg
  • iconv
  • intl
  • ldap
  • openssl
  • PDO
  • redis
  • Sodium
  • Tidy
  • uuid
  • xxte
  • zip

Jika Anda belum install PHP 7.4 bisa melihatnya pada post saya sebelumnya yakni Install LEMPP pada CentOs 7.

b. Pointing webmail ke IP server Anda
Karena aksesnya nanti kita menggunakan webmail. maka silakan pointing record A untuk webmail ke IP server Anda.

Instalasi

  1. Download SnappyMail nya terlebih dahulu pada link berikut.
  2. Lalu ekstrak file tersebut dan pindahkan ke folder /var/www/html/snappymail. Jika belum membuat folder snappymail, buat terlebih dahulu dengan perintah sudo mkdir /var/www/html/snappymail

sudo unzip snappymail-2.16.1.zip -d /var/www/html/snappymail

  1. Kemudian set owner dan permission pada folder snappymail :
    sudo find /var/www/html/snappymail -type d -exec chmod 755 {} \;
    sudo find /var/www/html/snappymail -type f -exec chmod 644 {} \;
    sudo chown -R nginx:nginx /var/www/html/snappymail

Ket :

  • Maksud dari -type d -exec chmod 755 adalah tipe direktori dengan permission 755 secara rekursif
  • Maksud dari -type f -exec chmod 644 adalah tipe file dengan permission 644 secara rekursif

Untuk metode instalasi SnappyMail ini cukup beragam dilihat dari referensi officialnya mulai dari instruksi secara general, menggunakan debian/devuan, konfigurasi web server bahkan opsi upgrade dari RainLoop.
Nah karena saya sudah install LEMPP Stack maka metode instalasi yang saya bagikan disini adalah menggunakan konfigurasi web server yaitu Nginx.

  1. Gunakan certbot untuk install sertifikat SSL webmail Anda.
    sudo certbot --nginx -d webmail.example.id

Ket :
Ganti webmail.example.id dengan domain Anda (contoh : webmail.nuya.my.id)

Jika instalasi sudah selesai, maka file private key (privkey.pem) dan certificate (fullchain.pem) akan disimpan pada folder /etc/letsencrypt/live/$domain.

  1. Pastikan service nginx Anda berstatus running dan kemudian buat konfigurasi server block untuk SnappyMail Anda dengan perintah :
    sudo vim /etc/nginx/conf.d/snappy.conf dan paste file berikut ini :
###  
# Redirect insecure HTTP to the more secure HTTPS  
server {  
server_name webmail.nuya.my.id;  
return 301 https://$host$request_uri;  

}  

###  
# Actual domain configuration  
server {  
# TLS for the win!  
listen 443 ssl http2;  
# Domain name  
server_name webmail.nuya.my.id;  

# SSL configuration  
ssl_certificate /etc/letsencrypt/live/webmail.nuya.my.id/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/webmail.nuya.my.id/privkey.pem;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;  
ssl_protocols TLSv1.2 TLSv1.3;  
ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:AES-256-GCM-SHA384:EECDH+AESGCM:EDH+AESGCM";  
ssl_ecdh_curve secp521r1:secp384r1;  
ssl_session_timeout 10m;  
ssl_session_cache shared:SSL:10m;  
ssl_session_tickets off;  
ssl_prefer_server_ciphers on;  

# Security headers  
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;  
add_header X-Content-Type-Options "nosniff" always;  
add_header X-XSS-Protection "1; mode=block" always;  
add_header X-Robots-Tag "none" always;  
add_header X-Download-Options "noopen" always;  
add_header X-Permitted-Cross-Domain-Policies "none" always;  
add_header Referrer-Policy "no-referrer" always;  
add_header X-Frame-Options "SAMEORIGIN" always;  
fastcgi_hide_header X-Powered-By;  

###  
# GZIP / compression settings  
gzip on;  
gzip_vary on;  
gzip_comp_level 4;  
gzip_min_length 256;  
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;  
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application  
/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;  

###  
# Define the document root  
root /var/www/html/snappymail;  
index index.php;  

client_max_body_size 50M;  

# Forbid access to dotfiles  
location ~ (^|/)\. {  
return 403;  
}  

# The actual root location  
location / {  
try_files $uri $uri/ /index.php?$args;  
}  

# Last but not least, the PHP-FPM settings  
location ~* \.php$ {  
fastcgi_pass unix:/run/php-fpm.sock;  
include fastcgi_params;  
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
fastcgi_param SCRIPT_NAME $fastcgi_script_name;  
}  

}

Ket :
Ganti webmail.example.id dengan domain Anda (contoh : webmail.nuya.my.id)
Pastikan Anda membuat socket pada php-fpm juga seperti /run/php-fpm.sock

  1. Lalu silakan restart service nginx Anda.
    sudo systemctl restart nginx

  2. Buka webmail Anda dan lakukan beberapa konfigurasi mail server. Namun Anda perlu login sebagai admin terlebih dahulu, caranya akses di browser dengan url berikut ini :
    https://webmail.example.id/?admin
    enter image description here

Login : admin
Password : Isi password pada file .txt

Untuk password silakan membuka pada file /var/www/html/snappymail/data/_data_/_default_/admin_password.txt

Jika Anda terdapat kendala pada saat membuka webmail, silakan akses menggunakan private browser untuk menghindari adanya cache/cookies.

Apabila berhasil maka akan login ke menu dashboardnya dan saran saya ubah terlebih dahulu password default dari admin tersebut.

  1. Lakukan konfigurasi domain dengan cara pergi ke menu Domains dan tambahkan domain yang sudah Anda buat pada konfigurasi mail server sebelumnya.

Kemudian klik Add Domain dan isi form berikut ini :
enter image description here

Server IMAP : mail.example.id
Secure IMAP : SSL/TLS
Port IMAP : 993

Server SMTP : mail.example.id
Secure SMTP : STARTTLS
Port SMTP : 587

Lalu klik Test.
Jika berhasil maka akan muncul warna hijau seperti gambar berikut ini :
enter image description here
Untuk konfigurasi webmail secara sederhana sudah cukup sampai disini, saatnya sekarang kita akan coba test pengiriman dan penerimaan emailnya.

Uji Coba

Akses webmail Anda dengan user biasa dan login menggunakan user/akun email yang sudah dibuat sebelumnya :
https://webmail.example.id/

Disini saya akan mengilustrasikan pengiriman dan penerimaan email menggunakan akun test3 dan test4 yang sudah saya buat sebelumnya.

  • Pengiriman email dari user test3 ke user test4
  • User test4 melihat inbox dan membalas email ke user test3

Dan pengujian pengiriman dan penerimaan email berhasil/sukses berikut capturenya :

Kirim email dengan user3
enter image description here

Log mail :
enter image description here

Pengecekan email dari sisi user4 :
enter image description here

User4 membalas email dari user3 :
enter image description here

Itulah cara install dan konfigurasi webmail SnappyMail pada CentOS 7 dengan konfigurasi web server Nginx. Secara garis besar harusnya sama dengan web server Apache. Dari referensinya sudah detail dan dicantumkan juga konfigurasi virtualhostnya.
Dari tampilann SnappyMail ini sudah modern ya menurut saya dan memang mirip dengan RainLoop, semoga bisa membuat Anda lebih nyaman dalam bertransaksi email ya.

Referensi :
SnappyMail

Semoga bermanfaat !