Το imapsync είναι το standard εργαλείο για μεταφορά και συγχρονισμό IMAP mailboxes — μεταξύ δύο email servers, για backup, ή για mass migrations. Είναι open-source, στενά συντηρούμενο από το 2007, και υποστηρίζει σχεδόν κάθε email provider.
Αυτός ο οδηγός δείχνει πώς να το χρησιμοποιήσετε για τα πιο συχνά σενάρια.
Πότε χρειάζεστε imapsync
- Migration από Gmail / Outlook 365 σε νέο εταιρικό email
- Consolidation πολλών mailboxes σε ένα
- Backup εξωτερικά από τον primary server
- Server migration — μετακίνηση mailboxes όταν αλλάζετε hosting
- Sync μεταξύ δύο providers (πχ. κρατάτε αντίγραφα σε Gmail + Outlook)
Τι κάνει το imapsync
- Διατηρεί φακέλους (Inbox, Sent, Drafts, custom)
- Διατηρεί flags (read/unread, flagged, replied)
- Διατηρεί dates (received, sent)
- Δεν διπλοτυπώνει — με τη δεύτερη εκτέλεση μεταφέρει μόνο τα νέα messages
- Υποστηρίζει OAuth2 για Gmail/Office 365
- Υποστηρίζει resume αν διακοπεί
Εγκατάσταση
Linux (Debian/Ubuntu)
sudo apt update
sudo apt install imapsync
macOS (Homebrew)
brew install imapsync
Windows
Κατεβάστε το official binary από το imapsync.lamiral.info ή τρέξτε σε WSL.
Verification
imapsync --version
Θα πρέπει να δείτε κάτι σαν imapsync 2.x.x.
Παράδειγμα 1: Migration από Gmail σε εταιρικό email
imapsync \
--host1 imap.gmail.com \
--port1 993 \
--ssl1 \
--user1 [email protected] \
--password1 'app-password-here' \
--host2 mail.symbols.gr \
--port2 993 \
--ssl2 \
--user2 [email protected] \
--password2 'newpassword'
Σημαντικό για Gmail: το
--password1πρέπει να είναι App Password, όχι ο κανονικός κωδικός. Δημιουργήστε ένα από το Google Account → Security → 2-Step Verification → App passwords.
Παράδειγμα 2: Migration από Office 365
imapsync \
--host1 outlook.office365.com \
--port1 993 \
--ssl1 \
--user1 [email protected] \
--password1 'password' \
--host2 mail.symbols.gr \
--port2 993 \
--ssl2 \
--user2 [email protected] \
--password2 'newpassword'
Για OAuth2 (όταν 2FA είναι enabled):
imapsync \
--host1 outlook.office365.com \
--user1 [email protected] \
--oauthaccesstoken1 'YOUR_OAUTH_TOKEN' \
--host2 mail.symbols.gr \
--user2 [email protected] \
--password2 'newpassword'
Παράδειγμα 3: Mass migration (πολλούς accounts μαζί)
Δημιουργήστε ένα accounts.csv:
[email protected];app-pass1;[email protected];newpass1
[email protected];app-pass2;[email protected];newpass2
[email protected];app-pass3;[email protected];newpass3
Και ένα migrate.sh:
#!/bin/bash
while IFS=';' read -r u1 p1 u2 p2; do
echo "Migrating $u1 → $u2"
imapsync \
--host1 imap.gmail.com --port1 993 --ssl1 \
--user1 "$u1" --password1 "$p1" \
--host2 mail.symbols.gr --port2 993 --ssl2 \
--user2 "$u2" --password2 "$p2" \
--logfile "logs/$u1.log"
done < accounts.csv
Χρήσιμα flags
| Flag | Τι κάνει |
|---|---|
--dry | Test run — δεν μεταφέρει τίποτα, δείχνει τι θα έκανε |
--folder INBOX | Συγχρονισμός μόνο ενός φακέλου |
--exclude 'Spam|Trash' | Αποκλεισμός spam/trash |
--minsize 1 | Skip empty messages |
--maxsize 50000000 | Skip messages > 50 MB |
--maxage 365 | Μόνο emails νεότερα από 365 ημέρες |
--logfile sync.log | Αναλυτικό log σε αρχείο |
--useheader 'Message-Id' | Αποφυγή διπλοτύπων |
--delete2 --delete2folders | Διαγραφή στον προορισμό όσων δεν υπάρχουν στην πηγή (sync mode) |
Πόσο διαρκεί
- ~1.000 emails = 2–5 λεπτά
- ~10.000 emails = 20–40 λεπτά
- ~100.000 emails = 4–8 ώρες
- ~500.000+ emails = 24–48 ώρες
Εξαρτάται από:
- Συνολικό μέγεθος (όχι μόνο count)
- Network speed σε σχέση με και τους δύο servers
- Rate limits του παρόχου (Gmail έχει ~10 GB/24h limit)
Troubleshooting
«Authentication failed»
- Σε Gmail: χρησιμοποιείτε App Password, όχι κανονικό
- Σε Outlook: ίσως χρειάζεται να επιτρέψετε «Less secure apps» ή να χρησιμοποιήσετε OAuth2
- Έλεγχος host/port — Gmail είναι
imap.gmail.com:993, όχιsmtp.gmail.com
«Maximum quota exceeded»
- Ο προορισμός είναι γεμάτος — αυξήστε το quota
- Ή χρησιμοποιήστε
--maxage 90για να μεταφέρετε μόνο πρόσφατα emails
«Connection timed out»
- Network issue ή ο server μπλοκάρει IPs
- Δοκιμάστε με
--timeout 300 - Ή τρέξτε από διαφορετικό network (cloud VPS)
Διακόπηκε στη μέση
- Απλά ξανατρέξτε την ίδια εντολή. Το imapsync ξεκινάει από εκεί που σταμάτησε.
Gmail rate limit (~750 emails/min)
- Προσθέστε
--maxbytespersecond 5000000(5 MB/s) - Ή
--maxmessagespersecond 2
Verification μετά το migration
- Συγκρίνετε counts ανά φάκελο στα δύο mailboxes
- Ελέγξτε ότι ημερομηνίες διατηρήθηκαν (sort by date στο νέο)
- Ελέγξτε ότι read/unread status είναι σωστό
- Ψάξτε ένα συγκεκριμένο παλιό email και επιβεβαιώστε ότι μεταφέρθηκε
Αδειοδότηση
Το imapsync είναι ελεύθερο για προσωπική χρήση. Για επαγγελματική / commercial χρήση, ο δημιουργός ζητάει μια συμβολική donation. Δείτε το official site για λεπτομέρειες.
Στα έργα μας στη Symbols, μεταφέρουμε mailboxes σε δεκάδες migrations / μήνα. Έχουμε δικά μας scripts για bulk migrations με logging, retries και verification. Αν θέλετε help, στείλτε email στο [email protected].