Teknologi
Setup Mail Server di VPS dengan Mailu: Kirim Email dari Domain Sendiri
Baca juga
📚 Baca juga
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.