# Migration Guide — Mailcow (MX & Domain) **Owner:** cutover email `geonet.co.id` dari cPanel ke Mailcow. Inventori: [../server.md](../server.md). Env: [../../.env.example](../../.env.example). **Prinsip:** URL/domain dynamic via `.env` — bukan hardcode di script. --- ## Status migrasi saat ini (2026-07-06) | Fase | Status | Keterangan | |------|--------|------------| | Mailcow live | ✅ | VM `10.100.1.28`, `sync.geonet.co.id` | | POP3 drain | ✅ | fetchmail timer 2 menit, `nokeep` | | Outbound relay | ✅ Transisi | cPanel SMTP :587 | | MX DNS | ❌ | Masih cPanel | | DKIM/SPF publish | ❌ | Key generated, belum DNS | | fetchmail mati | ❌ | Setelah MX cutover | --- ## Inventori sebelum cutover MX | Item | Saat ini | Target | File update | |------|----------|--------|-------------| | MX record | cPanel | `sync.geonet.co.id` | DNS panel | | Inbox canonical | Mailcow (via POP3) | Mailcow (langsung) | — | | SPF | cPanel IP | Mailcow `117.102.73.102` | DNS | | DKIM | — | Mailcow selector | DNS | | PTR | TBD | `sync.geonet.co.id` | Provider IP | | fetchmail | aktif | **stop** | systemd disable | | relay cPanel | aktif | opsional mati | Mailcow relayhosts | --- ## Fase 1 — Transisi (saat ini) 1. MX tetap cPanel 2. fetchmail POP3 drain → Mailcow inbox 3. User Outlook → IMAP `sync.geonet.co.id:993` saja 4. Outbound relay cPanel sampai reputasi IP Mailcow OK Verifikasi fetchmail: ```bash ssh mailcow systemctl status fetchmail-support.timer tail -20 /var/log/fetchmail-support.log ``` --- ## Fase 2 — DNS email publish 1. [ ] Ambil DKIM public key: Mailcow Admin → Configuration → DKIM 2. [ ] Publish TXT DKIM di DNS `geonet.co.id` 3. [ ] Update SPF: `v=spf1 ip4:117.102.73.102 include:... -all` 4. [ ] Tambah DMARC (opsional): `_dmarc.geonet.co.id` 5. [ ] PTR `117.102.73.102` → `sync.geonet.co.id` 6. [ ] Smoke test: kirim ke Gmail, cek header SPF/DKIM pass Append [../version.md](../version.md) setelah publish. --- ## Fase 3 — MX cutover 1. [ ] Stabil minimal 2–4 minggu (fetchmail + relay tanpa error) 2. [ ] Turunkan TTL MX 24 jam sebelumnya 3. [ ] Ubah MX → `sync.geonet.co.id` (priority 10) 4. [ ] Monitor Postfix log Mailcow 24–48 jam 5. [ ] `systemctl disable --now fetchmail-support.timer` 6. [ ] Evaluasi matikan relay cPanel (kirim langsung dari Mailcow) 7. [ ] Update docs: server.md, project-status.md, version.md --- ## Rollback MX 1. Kembalikan MX ke cPanel 2. Enable fetchmail timer jika masih diperlukan 3. Catat di [../issues.md](../issues.md) --- ## Riwayat migrasi | Tanggal | Dari | Ke | Versi | Catatan | |---------|------|-----|-------|---------| | 2026-07-03 | — | POP3 drain live | 1.0.0 | fetchmail + relay | | 2026-07-06 | — | Docs bootstrap | 1.1.0 | SSOT AI-Agent-Standards |