Virtualmin + Roundcube
Virtualmin হলো Webmin-এর উপর ভিত্তি করা একটি হোস্টিং কন্ট্রোল প্যানেল—Apache/Nginx, BIND, Postfix, Dovecot, MySQL/MariaDB, PHP ইত্যাদি অটোমেটিক কনফিগার করে। Roundcube হলো আধুনিক ওয়েবমেইল ক্লায়েন্ট (IMAP/SMTP)।
Prerequisites
- Ubuntu 22.04/24.04 (Static Public IP recommended)
- FQDN hostname (e.g.,
server.example.com
) - DNS এ A/MX/SPF/DKIM/DMARC রেকর্ড যোগ করার অ্যাক্সেস
- Open ports: 22, 25, 53, 80, 110, 143, 443, 465, 587, 993, 995, 10000, 20000
Virtualmin
Roundcube
1 Pre-setup: Hostname, Update
sudo hostnamectl set-hostname server.example.com
echo "127.0.1.1 server.example.com server" | sudo tee -a /etc/hosts
sudo apt update && sudo apt -y upgrade && sudo reboot
2 One-command Install (Virtualmin GPL)
wget https://software.virtualmin.com/gpl/scripts/install.sh
sudo /bin/sh install.sh -y
Access: Web UI →
https://server.example.com:10000/
(root user)। Initial post-install wizard complete করুন।3 DNS & Mail basics
আপনার ডোমেইন example.com
এর জন্য নিচের রেকর্ডগুলি যোগ করুন:
# Example DNS
A server 203.0.113.10
A mail 203.0.113.10
MX @ 10 mail.example.com.
TXT @ "v=spf1 mx a ip4:203.0.113.10 -all"
TXT _dmarc "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com;"
Virtualmin → Email Settings থেকে DKIM enable করুন; DNS-এ DKIM TXT key publish করুন।
4 Create Virtual Server (site)
# Web UI Steps:
# Virtualmin → Create Virtual Server → Domain name: example.com
# Enabled features: Apache website, Mail for domain, MySQL (optional), BIND DNS (if authoritative)
# Create!
Mailbox Users: Virtualmin → Edit Users → Add a user → “Email only” বা “Website login” টাইপ দিন।
5 SSL (Let's Encrypt)
# Web UI:
# Virtualmin → Server Configuration → SSL Certificate → Let's Encrypt
# Domains to request: example.com, www.example.com, mail.example.com
# Request Certificate
# তারপর "Copy to Postfix" এবং "Copy to Dovecot" বাটন ক্লিক করুন
6 Mail ports & test (Postfix/Dovecot)
# SMTP (submission/SMTPS):
# 587 (STARTTLS), 465 (TLS)
# IMAP: 143(STARTTLS) / 993(TLS)
# POP3: 110(STARTTLS) / 995(TLS)
# টেস্ট (from server):
telnet 127.0.0.1 25
openssl s_client -starttls smtp -crlf -connect 127.0.0.1:587
openssl s_client -connect 127.0.0.1:993
1 Install prerequisites
sudo apt update
sudo apt install -y apache2 mariadb-server php php-cli php-common php-intl php-xml \
php-mbstring php-zip php-gd php-curl php-mysql unzip
2 Database & User (Roundcube)
sudo mysql -e "CREATE DATABASE roundcube CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
sudo mysql -e "CREATE USER 'rcuser'@'localhost' IDENTIFIED BY 'Strong_DB_Pass';"
sudo mysql -e "GRANT ALL PRIVILEGES ON roundcube.* TO 'rcuser'@'localhost'; FLUSH PRIVILEGES;"
3 Download & Deploy Roundcube
cd /var/www
sudo wget -O roundcube.zip https://github.com/roundcube/roundcubemail/releases/download/1.6.7/roundcubemail-1.6.7-complete.tar.gz
sudo tar -xzf roundcube.zip
sudo mv roundcubemail-1.6.7 roundcube
sudo chown -R www-data:www-data /var/www/roundcube
sudo find /var/www/roundcube -type d -exec chmod 755 {} \;
sudo find /var/www/roundcube -type f -exec chmod 644 {} \;
Version: প্রয়োজনে সর্বশেষ ভার্সনের URL ব্যবহার করুন।
4 Apache vhost (webmail.example.com)
sudo tee /etc/apache2/sites-available/roundcube.conf >/dev/null <<'APACHE'
<VirtualHost *:80>
ServerName webmail.example.com
DocumentRoot /var/www/roundcube
<Directory /var/www/roundcube>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log
CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined
</VirtualHost>
APACHE
sudo a2ensite roundcube.conf
sudo a2enmod rewrite
sudo systemctl reload apache2
DNS:
webmail.example.com
→ A record to server IP। এরপর Let’s Encrypt SSL দিন।5 Roundcube Initial Config
cp /var/www/roundcube/config/config.inc.php.sample /var/www/roundcube/config/config.inc.php
sudo nano /var/www/roundcube/config/config.inc.php
Key options (sample):
$config['db_dsnw'] = 'mysql://rcuser:Strong_DB_Pass@localhost/roundcube';
$config['default_host'] = 'ssl://mail.example.com';
$config['default_port'] = 993;
$config['smtp_server'] = 'tls://mail.example.com';
$config['smtp_port'] = 587;
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
$config['product_name'] = 'Example Webmail';
Test: ব্রাউজারে
http://webmail.example.com/
খুলে login করুন (ইউজার: user@example.com
)। SSL এর পর https
ব্যবহার করুন।6 Enable HTTPS (Let’s Encrypt)
sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d webmail.example.com
# Auto-renew:
sudo systemctl enable certbot.timer
7 Attach Roundcube under Virtualmin (optional)
# Option A: webmail subdomain as its own Virtual Server
# Virtualmin → Create Virtual Server → Domain: webmail.example.com
# তারপর Apache docroot কে /var/www/roundcube সেট করুন
# Option B: main domain-এ /webmail path
# Add alias in Apache vhost or symlink:
sudo ln -s /var/www/roundcube /home/example/public_html/webmail
sudo systemctl reload apache2
8 Extras: Fail2ban, SpamAssassin, ClamAV
sudo apt install -y fail2ban spamassassin clamav-daemon
sudo systemctl enable --now fail2ban
sudo systemctl enable --now spamassassin
sudo freshclam && sudo systemctl enable --now clamav-daemon
Security: Virtualmin → Fail2ban jail profiles, Postfix rate-limit, SMTP auth only, open relay off নিশ্চিত করুন।