Mail-Migrator
Email migration tools untuk memindahkan mailbox IMAP antar server dengan dukungan resume, batch processing, dan insecure mode.
Features
- ✅ Single & Batch Migration: Migrasi satu akun atau batch dari file CSV
- ✅ Resume Support: Lanjutkan migrasi yang terputus menggunakan BoltDB state tracking
- ✅ Insecure Mode: Terima self-signed certificates dengan flag
--insecure - ✅ Comprehensive Logging: Log ke console dan file dengan timestamp
- ✅ Mailbox Detection: Otomatis detect dan migrate semua mailbox/folder
- ✅ Batch Processing: Proses message dalam batch untuk efisiensi
- ✅ Error Handling: Robust error handling dengan retry logic
- ✅ Authentication Support: LOGIN dan AUTHENTICATE PLAIN methods
- ✅ Special Characters: Support password dengan karakter khusus
- ✅ Debug Mode: Detailed logging untuk troubleshooting
Installation
Build from Source
git clone <repository-url>
cd mail-migrator
go mod tidy
go build .
Download Binary
Download binary dari releases page atau build sendiri.
Usage
Single Account Migration
# Basic migration
./mail-migrator --src "user@domain.com:password@imap.source.com:993" \
--dst "user@domain.com:password@imap.dest.com:993" \
--insecure
# With logging
./mail-migrator --src "user@domain.com:password@imap.source.com:993" \
--dst "user@domain.com:password@imap.dest.com:993" \
--insecure --log migration.log
# With resume support
./mail-migrator --src "user@domain.com:password@imap.source.com:993" \
--dst "user@domain.com:password@imap.dest.com:993" \
--insecure --resume --log migration.log
Batch Migration
- Buat file CSV (contoh:
accounts.csv):
user1@domain.com:password1@imap.source.com:993,user1@domain.com:password1@imap.dest.com:993
user2@domain.com:password2@imap.source.com:993,user2@domain.com:password2@imap.dest.com:993
info@trieltree.co.id:P@ssw0rd123@10.10.11.30:993,info@trieltree.co.id:P@ssw0rd123@10.10.11.24:993
- Jalankan batch migration:
./mail-migrator --batch accounts.csv --insecure --resume --log migration.log
URL Format
Format URL untuk source dan destination:
username:password@hostname:port
Contoh:
user@domain.com:mypassword@mail.server.com:993info@trieltree.co.id:P@ssw0rd123@10.10.11.30:993
Password dengan Karakter Khusus
Jika password mengandung karakter khusus (@, :, /, dll), gunakan URL encoding:
@→%40:→%3A/→%2F%→%25
Contoh:
# Password: P@ssw0rd:123/test
# URL encoded: P%40ssw0rd%3A123%2Ftest
./mail-migrator --src "user:P%40ssw0rd%3A123%2Ftest@server:993" \
--dst "user:P%40ssw0rd%3A123%2Ftest@server:993" \
--insecure
Command Line Options
| Flag | Description | Default |
|---|---|---|
--src |
Source IMAP URL | Required |
--dst |
Destination IMAP URL | Required |
--batch |
CSV file untuk batch migration | - |
--insecure |
Skip SSL certificate verification | false |
--resume |
Resume interrupted migration | false |
--log |
Log file path | - |
Troubleshooting
1. Authentication Failed
Error: LOGIN Authentication failed
Solusi:
-
Pastikan credential benar:
# Test dengan IMAP test tool cd tools go build -o imap-test.exe imap-test.go ./imap-test.exe <host> <port> <username> <password> -
Coba format username berbeda:
username(tanpa domain)username@domain.com(dengan domain)username@mail.domain.com(dengan subdomain)
-
Periksa server capabilities:
- Tool akan otomatis mencoba LOGIN dan AUTHENTICATE PLAIN
- Check log untuk melihat supported authentication methods
2. SSL Certificate Error
Error: certificate verify failed
Solusi:
# Gunakan flag --insecure untuk self-signed certificates
./mail-migrator --src "..." --dst "..." --insecure
3. Connection Timeout
Error: connection timeout
Solusi:
-
Test koneksi manual:
telnet <hostname> <port> # atau openssl s_client -connect <hostname>:<port> -
Periksa firewall dan network
-
Pastikan port benar (biasanya 993 untuk IMAPS, 143 untuk IMAP)
4. Resume Migration
Jika migration terputus, gunakan --resume untuk melanjutkan:
./mail-migrator --src "..." --dst "..." --resume --log migration.log
State disimpan di file state.db menggunakan BoltDB.
5. Debug Mode
Untuk troubleshooting detail, check log file atau console output:
./mail-migrator --src "..." --dst "..." --log debug.log
Log akan menampilkan:
- Server capabilities
- Authentication attempts
- Message copy progress
- Error details
Tools
IMAP Test Tool
Tool untuk test koneksi dan authentication IMAP:
cd tools
go build -o imap-test.exe imap-test.go
./imap-test.exe <host> <port> <username> <password>
Contoh:
./imap-test.exe 10.10.11.30 993 info@trieltree.co.id P@ssw0rd123
Tool ini akan:
- Test koneksi SSL/TLS
- Tampilkan server capabilities
- Test berbagai format username
- Memberikan feedback detail untuk troubleshooting
Examples
Contoh Sukses Migration
# Single account
./mail-migrator --src "info@trieltree.co.id:P@ssw0rd123@10.10.11.30:993" \
--dst "info@trieltree.co.id:P@ssw0rd123@10.10.11.24:993" \
--insecure --log migration.log
# Output:
# ✓ Connected to 10.10.11.30:993 as info@trieltree.co.id
# ✓ Connected to 10.10.11.24:993 as info@trieltree.co.id
# ✓ Found 6 mailboxes to migrate
# ✓ INBOX: 17 messages migrated
# ✓ Migration completed successfully
Batch Migration
# File: accounts.csv
info@trieltree.co.id:P@ssw0rd123@10.10.11.30:993,info@trieltree.co.id:P@ssw0rd123@10.10.11.24:993
user2@domain.com:password2@10.10.11.30:993,user2@domain.com:password2@10.10.11.24:993
# Command:
./mail-migrator --batch accounts.csv --insecure --resume --log batch-migration.log
Technical Details
- Language: Go
- IMAP Library: github.com/emersion/go-imap
- State Storage: BoltDB
- Logging: Logrus
- Authentication: LOGIN, AUTHENTICATE PLAIN
- SSL/TLS: Support dengan opsi insecure mode
License
[Sesuai dengan license file]
Contributing
- Fork repository
- Create feature branch
- Commit changes
- Push to branch
- Create Pull Request
Support
Jika mengalami masalah:
- Check troubleshooting section
- Gunakan IMAP test tool untuk debug
- Enable debug logging
- Create issue dengan log detail