mirror of
https://github.com/imapsync/imapsync.git
synced 2025-07-25 11:38:15 +02:00
1.637
This commit is contained in:
parent
4a536871fe
commit
e2bfc931f4
206 changed files with 7348 additions and 7982 deletions
62
FAQ.d/FAQ.Domino.txt
Normal file
62
FAQ.d/FAQ.Domino.txt
Normal file
|
@ -0,0 +1,62 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.Domino.txt,v 1.2 2015/03/26 04:24:17 gilles Exp gilles $
|
||||
|
||||
======================================================================
|
||||
Domino specific issues and solutions
|
||||
======================================================================
|
||||
|
||||
======================================================================
|
||||
Q. From Domino Notes to xxx
|
||||
|
||||
On Windows use:
|
||||
|
||||
imapsync.exe ... --sep2 "\\" --prefix2 ""
|
||||
|
||||
|
||||
On Unix use:
|
||||
|
||||
imapsync ... --sep2 '\\' --prefix2 ''
|
||||
|
||||
======================================================================
|
||||
Q. From xxx to Domino Notes
|
||||
|
||||
For Domino anywhere with imapsync.exe on Windows use:
|
||||
|
||||
imapsync.exe ... ^
|
||||
--sep2 "\\" --prefix2 "" ^
|
||||
--regextrans2 "s,^INBOX\\(.*),$1,"
|
||||
|
||||
Explanation: Domino doesn't accept INBOX subfolders.
|
||||
|
||||
If you want to sync the complete host1 mailbox in a subfolder called OLDBOX use:
|
||||
|
||||
imapsync.exe ... ^
|
||||
--sep2 "\\" --prefix2 "" ^
|
||||
--regextrans2 "s,(.*),OLDBOX\\$1," --justfolders --dry
|
||||
|
||||
If the output is correct for you then remove --dry and have a run.
|
||||
Verify the folder hierarchy is good on host2 then remove --justfolders to
|
||||
sync the messages.
|
||||
|
||||
For Domino with imapsync and Domino on Linux:
|
||||
(Thanks to Zafer)
|
||||
|
||||
R. We've migrated about 5000 users from cyrus to lotus domino 853!
|
||||
Mails are being copied into the new created lotus domino mailbox
|
||||
retaining the existing folder structure from the old mail database.
|
||||
This means that sent mails can be found in the sent folder and
|
||||
mails from the old inbox are copied into the new inbox
|
||||
We also marked migrated mails with the header Migratedbyus
|
||||
|
||||
For Domino 853FP6 on Linux, we used this command on Unix:
|
||||
|
||||
imapsync \
|
||||
--host1 hhh1 --user1 uuu1 --password1 ppp1 \
|
||||
--host2 hhh2 --user2 uuu2 --password2 ppp2 \
|
||||
--exclude "^INBOX/Trash" --exclude 'Junk|Drafts' \
|
||||
--regextrans2 's#^INBOX/Sent$#^Sent#' \
|
||||
--prefix2 "" --sep2 "\/" \
|
||||
--regexmess 's{\A(.*?(?! ^$))^Date:(.*?)$}{$1Migratedbyus:$2\nx-MailDate:$2}gxms'
|
||||
|
||||
|
||||
======================================================================
|
19
FAQ.d/FAQ.Dovecot.txt
Normal file
19
FAQ.d/FAQ.Dovecot.txt
Normal file
|
@ -0,0 +1,19 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.Dovecot.txt,v 1.1 2015/03/23 00:16:43 gilles Exp gilles $
|
||||
|
||||
=======================================================================
|
||||
Dovecot specific issues and solutions
|
||||
=======================================================================
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. How to migrate to Dovecot with an admin/MasterUser account?
|
||||
|
||||
R. Dovecot uses the same syntax as uw-imap
|
||||
|
||||
imapsync ... --user2="loginuser*admin_user" --password2 "admin_user_password"
|
||||
|
||||
To setup a Dovecot MasterUser see
|
||||
http://wiki2.dovecot.org/Authentication/MasterUsers
|
||||
|
||||
======================================================================
|
312
FAQ.d/FAQ.Exchange.txt
Normal file
312
FAQ.d/FAQ.Exchange.txt
Normal file
|
@ -0,0 +1,312 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.Exchange.txt,v 1.2 2015/03/16 15:11:32 gilles Exp gilles $
|
||||
|
||||
=======================================================================
|
||||
Exchange 20xx and Office365 specific issues and solutions
|
||||
=======================================================================
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. From XXX to Exchange 2010/2013 or Office365
|
||||
|
||||
R. Here is a command line resume that solves most encountered issues when
|
||||
migrating to Exchange or Office365. To understand or change the
|
||||
details you have to read next Q/R sections.
|
||||
|
||||
|
||||
On Windows:
|
||||
|
||||
imapsync ... ^
|
||||
--maxsize 10000000 ^
|
||||
--maxlinelength 9900 ^
|
||||
--regexflag "s/\\Flagged//g" ^
|
||||
--disarmreadreceipts
|
||||
|
||||
|
||||
On Unix:
|
||||
|
||||
imapsync ... \
|
||||
--maxsize 10000000 \
|
||||
--maxlinelength 9900 \
|
||||
--regexflag "s/\\Flagged//g" \
|
||||
--disarmreadreceipts
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. From XXX to Exchange 2013 or Office365 read receipts are all
|
||||
resent again after a sync. Even for old messages. How can I fix that?
|
||||
|
||||
R. imapsync can remove the header containing this read receipt request.
|
||||
|
||||
On Unix or Windows use:
|
||||
|
||||
imapsync ... --disarmreadreceipts
|
||||
|
||||
Since read receipts should be sent for unseen messages that will go
|
||||
to a seen state after the migration, you could be strict and apply
|
||||
the regex only to seen messages.
|
||||
Selecting seen message can be done with:
|
||||
|
||||
imapsync ... --search1 "SEEN" --disarmreadreceipts
|
||||
|
||||
Of course a second run has to be run without the --disarmreadreceipts
|
||||
for unseen messages:
|
||||
|
||||
imapsync ... --search1 "UNSEEN"
|
||||
|
||||
If fact --disarmreadreceipts is just an option equivalent to:
|
||||
|
||||
--regexmess 's{\A(.*?(?! ^$))^Disposition-Notification-To:(.*?)$}{$1X-Disposition-Notification-To:$2}igxms'
|
||||
|
||||
That regex changes the header Disposition-Notification-To. It prefixes
|
||||
it with an X- so that it becomes inactive.
|
||||
Disposition-Notification-To: blabla
|
||||
becomes
|
||||
X-Disposition-Notification-To: blabla
|
||||
|
||||
Thanks to David Karnowski for pointing and solving this issue.
|
||||
|
||||
=======================================================================
|
||||
Q. From XXX to Exchange 2010/2013 or Office365 I get this error message
|
||||
sometimes: "BAD Command Argument Error 11"
|
||||
|
||||
R. This error message comes from Exchange IMAP server when it
|
||||
encounters any problem. Most of the time it is one of the following:
|
||||
|
||||
* Some messages are bigger than the size limit. 10 MB by default
|
||||
on Exchange. It can be upped by configuration for Exchange.
|
||||
If you can't configure this limit then use option
|
||||
--maxsize 10000000 for 10 MB, change it if needed) to tell
|
||||
imapsync to skip those messages.
|
||||
This value is 25 MB by default for Office365 --maxsize 25000000
|
||||
|
||||
imapsync ... --maxsize 10000000 # 10 MB for Exchange
|
||||
|
||||
imapsync ... --maxsize 25000000 # 25 MB for Office365
|
||||
|
||||
|
||||
* Quota reached. The whole account is full.
|
||||
It can be upped by configuration.
|
||||
|
||||
* Some messages have some lines too long. Use option --maxlinelength
|
||||
to skip messages whose max line length is over a number of bytes.
|
||||
--maxlinelength 1000 is a RFC2822 must but most server support
|
||||
higher values. Exchange supports 9900:
|
||||
|
||||
imapsync ... --maxlinelength 9900
|
||||
|
||||
Have also in mind that Exchange closes the connection after 10 errors
|
||||
encountered so you might also see "BYE Connection closed" errors from
|
||||
Exchange, which means Exchange leaves the session and say goodbye,
|
||||
come back later. Rerun a sync then.
|
||||
|
||||
=======================================================================
|
||||
Q. From XXX to Exchange 2010 or 2013 or Office365 the flag Flagged does
|
||||
not seem to be well synced.
|
||||
|
||||
R. Use the following trick. Run imapsync twice, one with --regexflag
|
||||
and one without, like this:
|
||||
|
||||
1) imapsync ... --regexflag "s/\\Flagged//g"
|
||||
2) imapsync ...
|
||||
|
||||
You can add --debugflags if you want to see what imapsync gets and
|
||||
does in details with flags.
|
||||
|
||||
The magic of this trick is on ignoring the \Flagged flag on the first
|
||||
sync and setting it on the second sync, with STORE instead of APPEND.
|
||||
This Exchange bug seems that Exchange gets and sets well the Flagged
|
||||
flag with APPEND in IMAP but then it forgets it with other protocols;
|
||||
With STORE it sets and gets the "\Flagged" flag everywhere.
|
||||
|
||||
Thanks to Dave Murray and Simon Savva for reporting and solving
|
||||
this issue.
|
||||
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. How to migrate from or to Exchange 2007/2010 with an
|
||||
admin/authuser account?
|
||||
|
||||
R. The tricks comes from Michele Marcionelli and Benjamin Priestman:
|
||||
|
||||
This doesn't work:
|
||||
imapsync ... --user2 user2 --authuser2 admin2 --password2 adminpassword2 ...
|
||||
|
||||
This might works:
|
||||
imapsync ... --user2 "domain\admin2\user2" --password2 adminpassword2 ...
|
||||
or
|
||||
imapsync ... --user2 "admin2@domain\user2" --password2 adminpassword2 ...
|
||||
|
||||
where "domain" is set be the user's UPN in Active Directory
|
||||
or the NETBIOS or DNS name of the domain.
|
||||
|
||||
The exact format might vary depending on local configuration and you
|
||||
should experiment with the different formats.
|
||||
|
||||
PLAIN authentication is the only way to go with --authuser1 for now.
|
||||
So don't use --authmech1 SOMETHING with --authuser1 admin_user,
|
||||
it will not work.
|
||||
Same behavior with the --authuser2 option.
|
||||
|
||||
A little note from Michael Scherer.
|
||||
The previous workaround in the FAQ seems to be obsolete.
|
||||
I can confirm that
|
||||
|
||||
imapsync ... --host2 exchange_server \
|
||||
--authuser2 admin@domain --user2 user_alias
|
||||
|
||||
is working without any glitches, running Exchange 2010 SP2 here.
|
||||
Explanation, Exchange knows a) about a username
|
||||
and b) about a mailNickname which can be different to the username.
|
||||
As it seems you need to use the mailNickname (e.g. alias) defined
|
||||
for user2, not the username itself.
|
||||
http://blogs.technet.com/b/exchange/archive/2004/03/31/105275.aspx
|
||||
|
||||
|
||||
A little note from John Becker.
|
||||
After you pointed out that I had issues with authorization, I realized that
|
||||
as an admin user I don't have all the rights on the mailboxes.
|
||||
So I added myself to the user mailbox with full rights.
|
||||
I also changed the login type on the Exchange CAS to type 1, plain text.
|
||||
The command that I used for imapsync is:
|
||||
imapsync ... ^
|
||||
--host2 exchange-server ^
|
||||
--user2 "windows-domain\admin-user\aaaa" ^
|
||||
--password2 admin-password ...
|
||||
|
||||
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. How to migrate from or to Office 365 with an admin/authuser account?
|
||||
|
||||
Note from Yago Torres Fernandez:
|
||||
(a working command using admin/authuser on host2 Office 365)
|
||||
|
||||
imapsync ... --authuser2 user_admin@domain.com --user2 user_to_be_migrated@domain.com ^
|
||||
--password2 XXXX --ssl2 --exclude "Shared Folders" ^
|
||||
--regextrans2 "s#Trash$#Papelera#" --regextrans2 "s#^Deleted Items$#Papelera#"
|
||||
|
||||
but previous in Office365 you must do something like that, using powershell:
|
||||
|
||||
Add-MailboxPermission -identity user_to_be_migrated@domain.com -user user_admin@domain.com -accessrights fullaccess -inheritancetype all
|
||||
|
||||
PLAIN authentication is the only way to go with --authuser1 for now.
|
||||
So don't use --authmech1 SOMETHING with --authuser1 admin_user,
|
||||
it will not work.
|
||||
Same behavior with the --authuser2 option.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. How to migrate from or to Exchange 2003 with an admin/authuser
|
||||
account?
|
||||
|
||||
R. Thomas Edgar wrote the following
|
||||
|
||||
In case you can glean something from this snippet which allowed us
|
||||
to migrate from Exchange 2003 t0 Cyrus Imap 2.4 (you would reverse
|
||||
the flow to go the other way):
|
||||
|
||||
imapsync --dry --host1 ExchangeServer.mycompany.com \
|
||||
--user1 Some.User@mycompany.com --authuser1 ExchangeAdminAccount \
|
||||
--proxyauth1 --password1 '$pass_with_dollars$' \
|
||||
--host2 cyrusimapbackend.mycompany.com \
|
||||
--user2 SameOrDiffererentUser@mycompany.com \
|
||||
--authuser2 CyrusAdminAccount --password2 CyrusAdminPassword
|
||||
|
||||
We also needed to:
|
||||
|
||||
- Ensure the Exchange Admin Acct had IMAP4 enabled in it's
|
||||
profile (it initially didn't!)
|
||||
- Ensure the Some.User Exchange Acct had IMAP4 enabled
|
||||
in it's profile (it initially didn't!)
|
||||
- Add the CyrusAdminAccount to admins line in /etc/imapd.conf
|
||||
- Give CyrusAdminAccount lrswipkxtecda to the Cyrus Imap account
|
||||
being migrated to (- or in your case, from)
|
||||
|
||||
In case you are not aware:
|
||||
|
||||
- It will prompt for a password if you don't supply it
|
||||
- the domain part of the fully-qualified email could be
|
||||
omitted in our case
|
||||
- Use --debugimap when testing initial connectivity, if necessary
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. Couldn't create folder [trash] from [INBOX.trash]:
|
||||
588 NO Mailbox already exists.
|
||||
|
||||
R. Some servers take care about character case in folder names,
|
||||
some servers do not, like Exchange. Since non-respecting case
|
||||
can merge two different folders into one then imapsync respects case.
|
||||
|
||||
For example, if a host1 server has a folder name called "trash"
|
||||
and the host2 server already has a folder "Trash" or "TRASH"
|
||||
then imapsync will try to create the folder "trash" on host2,
|
||||
because trash and Trash are different strings. But if host2
|
||||
does not respect character case it will consider folder "trash"
|
||||
already exists and will say it, that's the error message
|
||||
reported by imapsync: "Mailbox already exists", message coming
|
||||
from the server.
|
||||
|
||||
The folder creation fails but messages are well transferred in
|
||||
so take a look at this warning, understand why it happens
|
||||
and it should be fine most of the time.
|
||||
|
||||
To avoid this warning use --regextrans2 to map the folder names
|
||||
|
||||
imapsync ... --regextrans2 "s/^trash$/Trash/"
|
||||
|
||||
If there are two folders Trash and trash on host1 then both
|
||||
will be merge into only one Trash folder on host2.
|
||||
In case option --delete2 is used the regextans2 above becomes
|
||||
mandatory, otherwise imapsync will sync messages from the
|
||||
first Trash and then delete them when syncing trash.
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. Migrating to Exchange 201O, messages get date of the transfer,
|
||||
this is bad for sorting and listing.
|
||||
|
||||
R1. Be sure to have at least Exchange 2010 SP2 Rollup 5
|
||||
http://www.tribalchicken.com.au/15-technical/29-imapsync-exchange2010
|
||||
|
||||
R2. See also the Outlook side (thanks to Martin Hochreiter for this solution)
|
||||
http://www.howto-outlook.com/faq/archivenotworking.htm
|
||||
by changing Archive to sent/receive date
|
||||
|
||||
It's often shorter to change one server than thousands clients
|
||||
so R1 might be easier to do.
|
||||
|
||||
======================================================================
|
||||
Q. From any to Exchange2007
|
||||
|
||||
Several problems:
|
||||
- Big messages: increase the "send- and receive-connector"
|
||||
in exchange2007 to 40 MB.
|
||||
|
||||
R. 2 solutions
|
||||
|
||||
R1. With imapsync (only partial success)
|
||||
--skipheader 'Received' \
|
||||
--regexmess 's{\A(.*?(?!^$))^Date:(.*?)$}{$1Date:$2\nReceived: From; $2}gxms'
|
||||
Any user having time to spend to debug Exchange2007 with imapsync
|
||||
is welcome.
|
||||
|
||||
R2. Other solution
|
||||
Two users succeeded by using "MS Transporter Suite" (which is closed
|
||||
expensive non-free software).
|
||||
|
||||
======================================================================
|
||||
Q. From Microsoft Exchange 2000 IMAP4rev1 server version 6.0.6487.0.
|
||||
|
||||
R. imapsync ... \
|
||||
--prefix1 INBOX.
|
||||
|
||||
|
||||
=======================================================================
|
261
FAQ.d/FAQ.Gmail.txt
Executable file
261
FAQ.d/FAQ.Gmail.txt
Executable file
|
@ -0,0 +1,261 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.Gmail.txt,v 1.1 2015/03/26 08:12:20 gilles Exp gilles $
|
||||
|
||||
======================================================================
|
||||
Imapsync with Gmail
|
||||
======================================================================
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. Synchronizing from XXX to Gmail
|
||||
|
||||
R. There are some details to get the special [Gmail] sub-folders
|
||||
right. Here's an example of migrating an old "Sent" folder to
|
||||
Gmail's structure:
|
||||
|
||||
imapsync --host1 mail.oldhost.com \
|
||||
--user1 my_email@oldhost.com \
|
||||
--password1 password \
|
||||
--host2 imap.gmail.com \
|
||||
--user2 my_email@gmail.com \
|
||||
--password2 password \
|
||||
--ssl2 \
|
||||
--exitwhenover 500000000 \
|
||||
--maxsize 25000000 \
|
||||
--expunge1 \
|
||||
--addheader \
|
||||
--exclude "\[Gmail\]$" \
|
||||
--regextrans2 "s/[ ]+/_/g" \
|
||||
--regextrans2 "s/[\^]/_/g" \
|
||||
--regextrans2 "s/['\"\\\\]/_/g" \
|
||||
--regextrans2 "s,^Sent$,[Gmail]/Sent Mail,"
|
||||
|
||||
Explanations:
|
||||
|
||||
--ssl2 is mandatory since Gmail only supports imap ssl connections.
|
||||
|
||||
--exitwhenover 500000000 option is here to avoid locking when
|
||||
transfers exceed maximum limit.
|
||||
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
||||
--exitwhenover is not mandatory in the sense you may be able to
|
||||
use an upper value than 500 MB without disconnections; I don't
|
||||
know the hard value, it seems to vary, so just have some tries
|
||||
and report me what you discover in case you detect something.
|
||||
|
||||
--maxsize 25000000 is mandatory since Gmail limits messages size
|
||||
up to 25 MB. This value increases over time, it was 10 MB some
|
||||
years ago so you can try higher values. The Gmail page about
|
||||
this limit is https://support.google.com/mail/answer/6584
|
||||
|
||||
--expunge1 is optional. It deletes messages marked \Deleted on host1.
|
||||
Imapsync syncs messages with all their flags, Gmail takes the messages
|
||||
marked \Deleted but deletes or moves them just after.
|
||||
Option --expunge1 really removes messages marked \Deleted on host1
|
||||
so they are not synced at all.
|
||||
|
||||
|
||||
The --addheader option is there because "Sent" folder messages
|
||||
sometimes lack the "Message-Id:" and "Received:" headers needed
|
||||
by imapsync to identify messages (only when --useuid is not used).
|
||||
So option --addheader adds a "Message-Id" header consisting of
|
||||
the imap UID of the message on the host1 folder, like
|
||||
"Message-Id: 12345@imapsync".
|
||||
|
||||
--exclude "\[Gmail\]$" is there to avoid a small examine/select error:
|
||||
"Could not examine: 43 NO [NONEXISTENT] Unknown Mailbox: [Gmail]
|
||||
(now in authenticated state) (Failure)".
|
||||
|
||||
--regextrans2 "s/[ ]+/_/g" is there to convert blank characters not
|
||||
accepted by gmail to character _ underscore. In fact only leading
|
||||
and trailing blank characters are problems with gmail, and
|
||||
also successive blanks ending with the IMAP error
|
||||
"NO [CANNOT] Folder contains excess whitespace (Failure)"
|
||||
If you want to change only leading and trailing blank characters
|
||||
then use instead:
|
||||
--regextrans2 "s,(/|^) +,\$1,g" --regextrans2 "s, +(/|$),\$1,g"
|
||||
|
||||
On Windows, in the previous example containing \$1 you have to
|
||||
replace the two \$1 by $1 (remove the \ before $1).
|
||||
|
||||
--regextrans2 "s/[\^]/_/g" is mandatory. It converts, since
|
||||
not accepted by gmail, character ^ to character _ underscore.
|
||||
|
||||
--regextrans2 "s/['\"\\\\]/_/g" is optional. It converts
|
||||
characters ' or " or \ to character _ underscore.
|
||||
|
||||
--regextrans2 "s,^Sent$,[Gmail]/Sent Mail," is to transform the
|
||||
folder name "Sent" and adapt it to Gmail "Sent Mail" folder.
|
||||
If you're using a different language in Gmail you might adapt
|
||||
this example with the folder name translated, an example in French:
|
||||
|
||||
imapsync ...
|
||||
--regextrans2 "s,^Messages envoy&AOk-s$,[Gmail]/Messages envoy&AOk-s," \
|
||||
|
||||
|
||||
You can add --folder "INBOX.Sent" in the example in case
|
||||
you want to sync only the "Sent" folder.
|
||||
|
||||
You can select folders exported to imap within the gmail preferences,
|
||||
unselect some "System labels", depending on your needs.
|
||||
|
||||
The "All Mail" archive pseudo-folder should be updated automatically.
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. Some of the folders are getting created with [IMAP] prefix on Google
|
||||
side. How to stop creating folder with this prefix?
|
||||
Any switch we can use? e.g. [IMAP]/Archive
|
||||
|
||||
R. No switch in imapsync since [IMAP]/ prefix is done by Gmail,
|
||||
it might be configurable with Gmail parameters.
|
||||
|
||||
=======================================================================
|
||||
Q. Synchronizing from Gmail to XXX
|
||||
|
||||
R. Gmail needs SSL
|
||||
|
||||
./imapsync \
|
||||
--host1 imap.gmail.com \
|
||||
--user1 gilles.lamiral@gmail.com \
|
||||
--password1 gmailsecret \
|
||||
--host2 localhost
|
||||
--user2 tata \
|
||||
--password2 tatasecret \
|
||||
--ssl1 \
|
||||
--exitwhenover 2500000000 \
|
||||
--useheader="X-Gmail-Received" \
|
||||
--useheader "Message-Id" \
|
||||
--skipcrossduplicates \
|
||||
--folderfirst "Work" \
|
||||
--folderfirst "Friends" \
|
||||
--folderlast "CanWait" \
|
||||
--folderlast "[Gmail]/All Mail"
|
||||
|
||||
|
||||
Explanations:
|
||||
|
||||
--ssl1 is mandatory since Gmail only supports imap ssl connections.
|
||||
|
||||
--exitwhenover 2500000000 option is here to avoid locking when
|
||||
transfers exceed maximum limit.
|
||||
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
||||
--exitwhenover is not mandatory in the sense you may be able to
|
||||
use an upper value than 2.5 GB without disconnections; I don't
|
||||
know the hard value, it seems to vary, so just have some tries
|
||||
and report me what you discover in case you detect something.
|
||||
|
||||
--useheader="X-Gmail-Received" --useheader "Message-Id" are not
|
||||
mandatory. I use them because I found (several years ago, it may
|
||||
have changed) that Gmail always adds a different header
|
||||
"X-Gmail-Received:" to all messages it gets. So the identification
|
||||
by imapsync can not fail using this header. "Message-Id" is there
|
||||
for safety about this Gmail rule.
|
||||
|
||||
|
||||
If your destination imap server doesn't like "[Gmail]" name, just add
|
||||
option:
|
||||
--regextrans2 's/\[Gmail\]/Gmail/'
|
||||
|
||||
You can select folders exported to imap within the gmail preferences,
|
||||
for example you may unselect all "System labels".
|
||||
|
||||
--exitwhenover option is here to avoid locking when transfers
|
||||
exceed maximum limit.
|
||||
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
||||
|
||||
--skipcrossduplicates is optional but it can save Gigabytes of hard
|
||||
disk memory. Within imap protocol, Gmail presents Gmail labels as
|
||||
folders, so a message labeled "Work" "ProjectX" "Urgent" ends up
|
||||
in three different imap folders "Work" "ProjectX" and "Urgent"
|
||||
after an imap sync. --skipcrossduplicates prevent this behavior.
|
||||
|
||||
An issue with --skipcrossduplicates is that the first label synced
|
||||
by imapsync goes to its corresponding folder and other labels are
|
||||
ignored. This way, at least you can choose what labels have the
|
||||
priority by using the --folderfirst option. For example
|
||||
--folderfirst "Work" will sync messages labeled "Work" before
|
||||
messages labeled "CanWait" or "Urgent". By default imapsync
|
||||
syncs folders (Gmail labels) using the classical alphanumeric order.
|
||||
|
||||
--folderlast "CanWait" will sync only messages that have the
|
||||
label CanWait and only it.
|
||||
|
||||
--folderlast "[Gmail]/All Mail", in conjunction with option
|
||||
--skipcrossduplicates, will only put in "[Gmail]/All Mail"
|
||||
the messages that are not labeled at all.
|
||||
|
||||
=======================================================================
|
||||
Q. Gmail does not really delete messages in folder [Gmail]/All Mail
|
||||
What happens? What can I do?
|
||||
|
||||
R. It's true and explained in Gmail documentation at
|
||||
https://support.google.com/mail/answer/78755?hl=en
|
||||
|
||||
To really remove messages in folder "[Gmail]/All Mail", they have to
|
||||
be moved to the "Trash" folder and be deleted from "Trash".
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. Does imapsync have the capability to do 2 stage authentication for google.
|
||||
|
||||
R. No, imapsync doesn't support 2 stage authentication.
|
||||
Reading https://support.google.com/mail/answer/1173270?hl=en
|
||||
it looks like it can't because imapsync uses imap protocol.
|
||||
|
||||
So you have to follow the Google recommendation and generate an
|
||||
application-specific password or normal authentication or XOAUTH.
|
||||
|
||||
=======================================================================
|
||||
Q. Is XOAUTH2 authentication available with imapsync?
|
||||
|
||||
R. Yes but only on Unix systems and not really well documented. See
|
||||
* http://www.linux-france.org/prj/imapsync_list/msg02129.html
|
||||
* https://github.com/imapsync/imapsync/pull/25/files
|
||||
|
||||
=======================================================================
|
||||
Q. How to use XOAUTH to globally authenticate gmail users?
|
||||
The XOAUTH code and this FAQ item come from Eduardo Bortoluzzi
|
||||
Thanks Eduardo!
|
||||
|
||||
R. The goal of OAUTH is to migrate all users from/to Google Apps
|
||||
Premier Edition without knowing their passwords.
|
||||
|
||||
The global password is available at the Google Apps control panel,
|
||||
at Advanced Tools -> Manage OAuth domain key.
|
||||
|
||||
./imapsync \
|
||||
--host1 imap.gmail.com --ssl1 \
|
||||
--user1 foo@lab3.dedal.br \
|
||||
--password1 secret1 \
|
||||
--authmech1 XOAUTH \
|
||||
--host2 imap.gmail.com --ssl2 \
|
||||
--user2 bar@lab3.dedal.br \
|
||||
--password2 secret2 \
|
||||
--authmech2 XOAUTH
|
||||
|
||||
Google Apps is a paid service, but you can try it for 30 days without any cost.
|
||||
|
||||
Some notes about configuring the Google Apps XOAUTH:
|
||||
|
||||
On "Advanced Tools > Manage OAuth domain key > Two-legged OAuth access control"
|
||||
the "Allow access to all APIs" must be checked
|
||||
(https://support.google.com/a/bin/answer.py?answer=162105)
|
||||
|
||||
OR
|
||||
|
||||
On "Advanced Tools > Manage third party OAuth client access",
|
||||
the configured costumer key must have the scope
|
||||
"https://mail.google.com/" configured
|
||||
(https://support.google.com/a/bin/answer.py?answer=162106).
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. migrate email from gmail to google apps
|
||||
|
||||
R. Take a look at:
|
||||
http://www.linux-france.org/prj/imapsync_list/msg00639.html
|
||||
|
||||
http://biasecurities.com/blog/2009/migrate-email-from-gmail-to-google-apps/
|
||||
http://www.thamtech.com/blog/2008/03/29/gmail-to-google-apps-email-migration/
|
||||
|
98
FAQ.d/FAQ.Massive.txt
Executable file
98
FAQ.d/FAQ.Massive.txt
Executable file
|
@ -0,0 +1,98 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.Massive.txt,v 1.1 2015/03/26 05:06:27 gilles Exp gilles $
|
||||
|
||||
======================================================================
|
||||
Imapsync for massive migrations
|
||||
======================================================================
|
||||
|
||||
Questions answered here are:
|
||||
|
||||
Q. I need to migrate hundred accounts, how can I do?
|
||||
Q. I have to migrate 500k users using 400 TB of disk space.
|
||||
How do I proceed?
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. I need to migrate hundred accounts, how can I do?
|
||||
|
||||
R. If you have many mailboxes to migrate think about a little
|
||||
shell program. Write a file called file.txt (for example)
|
||||
containing users and passwords.
|
||||
The separator used in this example is ";"
|
||||
|
||||
The file.txt file contains:
|
||||
|
||||
user001_1;password001_1;user001_2;password001_2
|
||||
user002_1;password002_1;user002_2;password002_2
|
||||
user003_1;password003_1;user003_2;password003_2
|
||||
user004_1;password004_1;user004_2;password004_2
|
||||
user005_1;password005_1;user005_2;password005_2
|
||||
...
|
||||
|
||||
On Unix the shell program can be:
|
||||
|
||||
{ while IFS=';' read u1 p1 u2 p2; do
|
||||
imapsync --host1 imap.side1.org --user1 "$u1" --password1 "$p1" \
|
||||
--host2 imap.side2.org --user2 "$u2" --password2 "$p2" ...
|
||||
done ; } < file.txt
|
||||
|
||||
Here is a complete Unix example nearly ready to use:
|
||||
http://imapsync.lamiral.info/examples/sync_loop_unix.sh
|
||||
|
||||
|
||||
On Windows the batch program can be:
|
||||
|
||||
FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.txt) DO imapsync ^
|
||||
--host1 imap.side1.org --user1 %%G --password1 %%H ^
|
||||
--host2 imap.side2.org --user2 %%I --password2 %%J ...
|
||||
|
||||
The ... can be replaced by nothing or any supplementary imapsync option.
|
||||
|
||||
Here is a complete Windows example nearly ready to use:
|
||||
http://imapsync.lamiral.info/examples/sync_loop_windows.bat
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. I have to migrate 500k users using 400 TB of disk space.
|
||||
How do I proceed?
|
||||
|
||||
R. Solution to this issue is two words: parallelism and measurements.
|
||||
Since all 500k mailboxes are independent against each other,
|
||||
they can be processed independently.
|
||||
|
||||
500k on 400TB is 800 MB per account on average.
|
||||
|
||||
No one knows in advance what is the first bottleneck. The first
|
||||
bottleneck has to be determined, by measurements, not by guesses.
|
||||
Once this first bottleneck is known and overcome then the next
|
||||
bottleneck has to be determined and overcome too, if needed. Repeat
|
||||
the process of looking for the next bottleneck and its resolution
|
||||
until you estimate the transfer rates, money costs and final dates are
|
||||
good enough to proceed the whole 500k/400TB migration.
|
||||
|
||||
Possible bottlenecks:
|
||||
|
||||
- IMAP servers have artificial limits. For example Gmail and Office365
|
||||
have throttle limits.
|
||||
|
||||
- Bandwidth, on any side, especially on small Internet connexions. But
|
||||
usually bandwidth is not a bottleneck.
|
||||
|
||||
- Memory, on any side. Monitor your system doesn't swap on disk.
|
||||
|
||||
- CPU, on any side. When measuring that CPU is always 100% during a
|
||||
transfer then it's useless to add imapsync processus on that host.
|
||||
|
||||
- I/O on disks. A classical one always forgotten. Unlike CPU and RAM
|
||||
Input/Output performances don't improve very much as time goes on.
|
||||
|
||||
- Number of hosts available to run imapsync processes.
|
||||
- Imapsync itself.
|
||||
- Errors management.
|
||||
- MX domains, DNS.
|
||||
- Money.
|
||||
- Time.
|
||||
- Bad luck.
|
||||
- ...
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue