Obsah

Migrace pošty pomocí IMAPu

Pokud potřebujeme migrovat mailboxy mezi servery, můžeme na to velmi jednoduše využít protokol IMAP pomocí skriptu imapcopy

Instalace

Migrace pošty

migruj.sh
#!/bin/bash
/usr/local/bin/iu-copy -R -S src.server.cz:993/test@domena.cz/heslo -D dst.server.cz:993/test@domena.cz/heslo
/usr/local/bin/iu-copy -R -S src.server.cz:993/test2@domena.cz/heslo -D dst.server.cz:993/test2@domena.cz/heslo
/usr/local/bin/iu-copy -R -S src.server.cz:993/test3@domena.cz/heslo -D dst.server.cz:993/test3@domena.cz/heslo

Pokud spouštíme skript iu-copy přímo na serveru, kam migrujeme poštu, můžeme dst.server.cz:993 nahradit zalocalhost:143, čímž bude celá operace rychlejší.

gandalf@sirius:~/bin# ./iu-copy -R -S iris.spoje.net:993/test@domena.cz/heslo -D localhost:143/test@domena.cz/heslo
./iu-copy starting
Connected to iris.spoje.net on port 993
Authenticating to iris.spoje.net:993 as test@domena.cz
Connected to localhost on port 143
Authenticating to localhost:143 as test@domena.cz
Number of mailboxes to process: 6
   Copied 3 messages to INBOX.Archiv.2014
   Copied 1 messages to INBOX.Sent
   INBOX.Archiv mailbox is empty
   INBOX.Drafts mailbox is empty
   INBOX.Trash mailbox is empty
 
   Copied 2969 messages to INBOX
Copied 2973 total messages
Pokud potřebujete jen aktualizovat změny do již přemigrované schránky, můžete ještě do příkazového řádku přidat parametr -U

Pro úplnost ještě uvádím kompletní parametry skriptu iu-copy:

usage:
 iu-copy  -S sourceHost/sourceUser/sourcePassword [/CRAM-MD5]
          -D destHost/destUser/destPassword [/CRAM-MD5]
          -d debug
          -I show IMAP protocol exchanges
          -L logfile
          -m mailbox list (eg "Inbox, Drafts, Notes". Default is all mailboxes)
          -R include submailboxes when used with -m
 
          -e exclude mailbox list
          -r remove msgs from source mbx after copying
          -p <mailbox> put copied mailboxes under a root mailbox
          -A <mailbox> copy to local mailbox from scrmbx
          -x <mbx delimiter [mbx prefix]>  source (eg, -x '. INBOX.'
          -y <mbx delimiter [mbx prefix]>  destination
          -i initialize mailbox (remove existing messages first
          -M <file> mailbox map file. Maps src mbxs to dst mbxs. Each line in the file should be 'src mbx:dst mbx'
          -q quiet mode (still writes to the logfile)
          -t <timeout in seconds>
          -T copy custom flags (eg, $Label1,$MDNSent,etc)
          -a <DD-MMM-YYYY> copy only messages after this date
          -b <DD-MMM-YYYY> copy only messages before this date
          -X <megabytes> Skip any message exceeding this size
          -U update mode, don't copy messages that already exist
          -B <msgnum>  Starting point for message fetch
          -E <msgnum>  Ending point for message fetch