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

Stáhneme balíček se skripty = http://imaputils.googlecode.com/files/imaputils-1.0.2.tar.gz, pokud není dostupné, můžete stáhnout skripty z našeho mirroru.

V debianu je potřeba doinstalovat balíček libio-socket-ssl-perl

Migrace pošty

Na novém serveru založíme čisté mailboxy

Napíšeme si bashový skript na migraci mailboxů (pokud jich migrujeme více, jinak nám postačí jen zadání příkazu)

#!/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ší.

Po spuštění skriptu uvidíme zhruba tento výpis - zde ukazuji jen migraci jednoho mailboxu:

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

Hotovo. Nyní se přihlaste pomocí webmailu nebo poštovního klienta a zkontrolujte, jestli je obsah schránky kompletní.

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