Othman Hendy Suseno 8c4b661152 fix and recompile
2025-09-09 00:08:24 +07:00
2025-09-09 00:08:24 +07:00
2025-09-09 00:08:24 +07:00
2025-09-09 00:08:24 +07:00
2025-09-09 00:08:24 +07:00
2025-09-08 19:27:23 +07:00
2025-09-09 00:08:24 +07:00
2025-09-08 11:08:12 +00:00
2025-09-09 00:08:24 +07:00
2025-09-09 00:08:24 +07:00
2025-09-08 19:27:23 +07:00

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
Description
Email migration tools
Readme MIT 20 MiB
v1.0.0 Latest
2025-09-08 17:42:48 +00:00
Languages
Go 100%