Memasang wajah depan mail server: menyiapkan PHP-FPM dan Nginx, mengunduh Roundcube, menempatkannya di public_html, instalasi lewat web installer, pengaturan config.inc.php untuk imap_host, smtp_host, dan db_dsnw, lalu mengamankan instalasi dengan menghapus folder installer.

Postfix mengangkut, Dovecot menyimpan, database mengelola akun. Kini saatnya kalian — sebagai pengguna — punya pintu masuk yang ramah: Roundcube, webmail berbasis PHP yang menampilkan email lewat IMAP dan mengirim lewat SMTP.
Episode ini memasang Roundcube dari unduhan resmi sampai siap pakai: persiapan PHP-FPM dan Nginx, web installer, pengaturan config.inc.php, dan langkah pengamanan paling penting — menghapus folder installer. Di akhir episode, kalian bisa login dan membaca email dari browser.
Roundcube butuh PHP versi modern dengan ekstensi seperti mbstring, xml, intl, dan openssl. Kita pakai PHP-FPM + Nginx, kombinasi paling umum:
sudo apt install -y nginx php-fpm php-mysql php-mbstring php-xml php-intl php-zipVersi Roundcube 1.7.x resmi membutuhkan PHP 8.1 ke atas — cek versi PHP kalian:
php -vDi distro 2026, php -v biasanya menampilkan PHP 8.3 atau lebih baru, yang memenuhi syarat. Perlu diingat, Roundcube 1.7 mengenalkan entry point wajib public_html/ — struktur direktori yang dulu opsional kini standar.
Unduh versi stabil terbaru dari situs resmi. Saat artikel ini ditulis, versi tersebut adalah 1.7.2 (Juli 2026):
cd /tmp
wget https://github.com/roundcube/roundcubemail/releases/download/1.7.2/roundcubemail-1.7.2-complete.tar.gz
sudo tar -xzf roundcubemail-1.7.2-complete.tar.gz -C /var/www/
sudo mv /var/www/roundcubemail-1.7.2 /var/www/webmailStruktur webmail/public_html/ menjadi docroot Nginx, dan file konfigurasi config/ berada di luar docroot — keuntungan keamanan yang baru diwajibkan sejak 1.7.
Buat virtual host dengan docroot menunjuk ke public_html:
sudo tee /etc/nginx/sites-available/webmail > /dev/null <<'EOF'
server {
listen 443 ssl;
server_name webmail.example.com;
root /var/www/webmail/public_html;
index index.php;
ssl_certificate /etc/letsencrypt/live/mail.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.example.com/privkey.pem;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
EOFAktifkan site dan muat ulang Nginx:
sudo ln -s /etc/nginx/sites-available/webmail /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginxJangan lupa menambahkan A record webmail.example.com di DNS dan sertifikat untuk hostname itu di episode 6. Jika SSL memakai hostname berbeda, sesuaikan jalur sertifikat.
Roundcube menyimpan pengaturan user, kontak, dan cache di database MySQL sendiri (terpisah dari maildb virtual users):
sudo mysql -e "CREATE DATABASE roundcubemail;"
sudo mysql -e "CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'ganti-password';"
sudo mysql -e "GRANT ALL ON roundcubemail.* TO 'roundcube'@'localhost';"Skema tabel akan dibuat otomatis oleh web installer — kalian hanya perlu menyediakan kredensial.
Buka https://webmail.example.com/installer di browser. Installer memandu langkah demi langkah: cek prasyarat, koneksi database, dan pembuatan config.inc.php. Bagian paling penting ada di tab Mail server settings. Daripada mengedit file PHP secara manual, Roundcube 1.7 menyediakan bin/console config set untuk mengatur nilai dengan aman:
php /var/www/webmail/bin/console config set db_dsnw 'mysql://roundcube:ganti-password@localhost/roundcubemail'
php /var/www/webmail/bin/console config set default_host localhost
php /var/www/webmail/bin/console config set imap_host 'ssl://localhost:993'
php /var/www/webmail/bin/console config set smtp_host 'ssl://localhost:465'
php /var/www/webmail/bin/console config set smtp_user '%u'
php /var/www/webmail/bin/console config set smtp_pass '%p'Penjelasan singkat:
db_dsnw — koneksi database Roundcube.default_host — host IMAP yang dipakai user saat tidak mengetik host.imap_host / smtp_host — endpoint IMAP dan SMTP, keduanya dengan TLS wajib.smtp_user / smtp_pass — Roundcube memakai kredensial login pengguna (%u / %p) untuk autentikasi SMTP, bukan akun terpisah.Setelah installer menulis file, pindahkan ke lokasi aman dan beri permission yang benar:
sudo cp /var/www/webmail/config/config.inc.php /var/www/webmail/config/config.inc.php
sudo chown -R www-data:www-data /var/www/webmailLangkah ini wajib — installer yang dibiarkan aktif adalah celah yang diketahui semua penyerang. Hapus direktori installer dan verifikasi:
sudo rm -rf /var/www/webmail/installerUntuk memastikan instalasi sehat, cek error log dan halaman utama:
sudo tail -n 20 /var/log/nginx/error.log
php /var/www/webmail/bin/console versionbin/console version menampilkan versi Roundcube yang aktif — cek nomornya konsisten dengan unduhan (1.7.2).
Beberapa kebiasaan yang wajib dari hari pertama:
login_throttle di config untuk memperlambat brute force.samesite = Lax pada cookie dan pastikan HTTPS saja yang melayani webmail.Tip
Coba login dari browser dengan akun virtual user dari episode 7. Jika berhasil melihat folder INBOX, siklus Postfix → Dovecot → database → Roundcube sudah menyambung penuh — momen yang patut dirayakan sebelum lanjut ke episode berikutnya.
Episode 8 selesai. Inti yang harus dibawa pulang:
public_html/ dan PHP 8.1+.imap_host/smtp_host mengarah ke Dovecot dan Postfix dengan TLS; %u/%p memakai kredensial pengguna.installer — langkah keamanan yang tidak bisa ditawar.bin/console version memverifikasi versi aktif.Webmail sudah hidup. Di episode 9 kita turun ke level mailbox: Mailbox, Maildir, dan LMTP Delivery — bagaimana pesan benar-benar disimpan dalam direktori cur/new/tmp dan diserahkan lewat LMTP. Sampai jumpa di episode 9!