Files
mail-migrator/README.md
Othman Hendy Suseno 8c4b661152 fix and recompile
2025-09-09 00:08:24 +07:00

6.6 KiB

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

  1. 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
  1. 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:993
  • info@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:

  1. 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>
    
  2. Coba format username berbeda:

    • username (tanpa domain)
    • username@domain.com (dengan domain)
    • username@mail.domain.com (dengan subdomain)
  3. 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:

  1. Test koneksi manual:

    telnet <hostname> <port>
    # atau
    openssl s_client -connect <hostname>:<port>
    
  2. Periksa firewall dan network

  3. 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

  1. Fork repository
  2. Create feature branch
  3. Commit changes
  4. Push to branch
  5. Create Pull Request

Support

Jika mengalami masalah:

  1. Check troubleshooting section
  2. Gunakan IMAP test tool untuk debug
  3. Enable debug logging
  4. Create issue dengan log detail