Teknologi

Setup Mail Server di VPS dengan Mailu: Kirim Email dari Domain Sendiri

Setup Mail Server di VPS dengan Mailu: Kirim Email dari Domain Sendiri
Mailu adalah mail server suite lengkap berbasis Docker yang mencakup SMTP, IMAP, POP3, webmail, dan anti-spam. Dibandingkan setup manual Postfix + Dovecot yang rumit, Mailu menyediakan semua komponen dalam satu docker-compose file yang mudah dikelola. ## Mengapa Mail Server Sendiri? **Kontrol Penuh.** Email tidak melewati third-party. Data dan privasi terjaga. **Domain Reputation.** Dengan SPF, DKIM, dan DMARC yang benar, email dari domain kamu akan diterima Gmail, Outlook, dan provider lainnya. **Biaya.** Untuk volume email yang wajar (ratusan per hari), self-hosted mail server jauh lebih murah dari layanan email seperti Google Workspace atau Microsoft 365. ## Persiapan ### 1. VPS Requirements | Komponen | Minimum | |----------|---------| | RAM | 2 GB | | CPU | 2 core | | Storage | 20 GB | | OS | Ubuntu 22.04/24.04 | ### 2. Domain dan DNS Kamu butuh domain yang bisa kamu manage DNS-nya. Contoh: `mail.yourdomain.com`. ### 3. Reverse DNS (rDNS) Set reverse DNS di VPS provider agar IP kamu ptr-record pointing ke domain kamu. Ini kritis untuk deliverability. ### 4. Ports yang Dibutuhkan ``` 25 (SMTP) 465 (SMTPS) 587 (Submission) 143 (IMAP) 993 (IMAPS) 110 (POP3) 995 (POP3S) 80 (HTTP/Webmail) 443 (HTTPS) ``` **Penting:** Port 25 harus terbuka. Banyak VPS provider (AWS, DigitalOcean) memblokir port 25 secara default. Hubungi support untuk membukanya. ## Install Mailu ### 1. Setup DNS Records ``` # A Records mail.yourdomain.com A mail.yourdomain.com AAAA # MX Records yourdomain.com MX 10 mail.yourdomain.com # SPF yourdomain.com TXT "v=spf1 mx a ip4: -all" # DKIM (generate setelah install) selector._domainkey.yourdomain.com TXT "v=DKIM1; k=rsa; p=" # DMARC _dmarc.yourdomain.com TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]" # Reverse PTR (di VPS provider panel) PTR mail.yourdomain.com ``` ### 2. Buat Docker Compose ```bash mkdir -p /opt/mailu && cd /opt/mailu curl -O https://setup.mailu.io/master compose.yml curl -O https://setup.mailu.io/master mailu.env ``` ### 3. Konfigurasi mailu.env ```env DOMAIN=yourdomain.com HOSTNAMES=mail.yourdomain.com ADMIN=true ADMIN_URL=mail.yourdomain.com MESSAGE_SIZE_LIMIT=50000000 RELAYNETS= RELAYHOST= DEFAULT_SPAM_SCORE=8.0 SPAM_SUBJECT=[SPAM] ``` ### 4. Generate Secrets ```bash # Generate secrets SECRET_KEY=$(openssl rand -hex 32) ADMIN_PASS=$(openssl rand -base64 24) echo "SECRET_KEY=$SECRET_KEY" >> mailu.env echo "ADMIN_PASS=$ADMIN_PASS" >> mailu.env echo "Admin password: $ADMIN_PASS" ``` ### 5. Jalankan Mailu ```bash docker compose up -d ``` ### 6. Generate DKIM Key ```bash # Akses ke front container docker exec -it mailu-front cat /dkim/dkim.pub # Copy public key dan tambahkan sebagai DNS TXT record ``` ## Webmail Akses webmail di `https://mail.yourdomain.com`. Mailu menggunakan Roundcube sebagai webmail client. Fitur: - Compose, read, reply email - Calendar (CalDAV) - Contacts (CardDAV) - Filter rules - IDENTITY management ## Konfigurasi Email Client ### IMAP Settings ``` Server: mail.yourdomain.com Port: 993 SSL: Yes ``` ### SMTP Settings ``` Server: mail.yourdomain.com Port: 587 STARTTLS: Yes ``` ### autoconfig (Thunderbird/Outlook) ```bash # Buat DNS record untuk autoconfig autoconfig.yourdomain.com A # Buat file konfigurasi mkdir -p /opt/mailu/autoconfig ``` Buat `/opt/mailu/autoconfig/config-v1.1.xml` untuk auto-configuration email client. ## Anti-Spam dan Filtering ### Rspamd Mailu menggunakan Rspamd untuk spam filtering. Web interface di `https://mail.yourdomain.com/webadmin` → Rspamd. - Bayes classification - DKIM signing - Rate limiting - Whitelist/Blacklist ### Manage Spam Score Di admin panel, kamu bisa set spam threshold per user: - Default: 8.0 (score lebih tinggi = lebih aggressive filter) - Permissive: 15.0 - Strict: 5.0 ## Backup Email ### Backup Script ```bash #!/bin/bash BACKUP_DIR="/backup/mailu" DATE=$(date +%Y%m%d) # Backup mail volumes tar czf $BACKUP_DIR/mail-$DATE.tar.gz \ /opt/mailu/mail \ /opt/mailu/overrides \ /opt/mailu/certs # Backup database docker exec mailu-admin sqlite3 /data/main.db .dump > $BACKUP_DIR/admin-$DATE.sql # Cleanup old backups find $BACKUP_DIR -mtime +30 -delete ``` ### Crontab ``` 0 3 * * * /opt/mailu/backup.sh ``` ## Deliverability Tips ### 1. Warm Up IP Jangan langsung kirim ratusan email dari IP baru. Mulai dari 10-20 email/hari dan naikkan bertahap selama 2-4 minggu. ### 2. Monitor Blacklists Cek IP kamu di blacklist: ```bash # Check MXToolbox https://mxtoolbox.com/blacklists.aspx ``` ### 3. Email Authentication Pastikan SPF, DKIM, dan DMARC terkonfigurasi dengan benar. Cek di: ```bash # Test email headers # Kirim test email ke mail-tester.com ``` ### 4. Good Content - Jangan kirim email yang terlihat spam - Sertakan unsubscribe link - Jangan gunakan URL shorteners - Gunakan teks yang relevan ## Monitoring ### Logs ```bash # SMTP logs docker logs mailu-smtp # IMAP logs docker logs mailu-imap # Rspamd logs docker logs mailu-rspamd ``` ### Web Admin Panel ``https://mail.yourdomain.com/webadmin`` - User management - Domain management - Queue monitoring - Log viewer - Server configuration Mailu adalah solusi all-in-one untuk self-hosted email. Dengan Docker-based architecture, maintenance menjadi jauh lebih mudah dibandingkan setup manual Postfix + Dovecot.