2011-03-12 03:44:35 +01:00
|
|
|
NAME
|
2016-09-19 17:17:24 +02:00
|
|
|
imapsync - Email IMAP tool for syncing, copying and migrating email
|
|
|
|
mailboxes.
|
|
|
|
|
|
|
|
The imapsync command synchronises mailboxes between two imap servers.
|
|
|
|
More than 69 different IMAP server softwares supported with success, few
|
2013-04-22 21:50:50 +02:00
|
|
|
failures.
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
$Revision: 1.727 $
|
2011-03-12 03:44:57 +01:00
|
|
|
|
|
|
|
SYNOPSIS
|
2016-09-19 17:17:24 +02:00
|
|
|
To synchronize the source imap account
|
|
|
|
"test1" on server "test1.lamiral.info" with password "secret1"
|
|
|
|
to the destination imap account
|
2016-01-22 17:52:28 +01:00
|
|
|
"test2" on server "test2.lamiral.info" with password "secret2"
|
|
|
|
do:
|
2011-03-12 03:44:57 +01:00
|
|
|
|
|
|
|
imapsync \
|
2016-01-22 17:52:28 +01:00
|
|
|
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
|
|
|
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
REQUIRED ARGUMENTS
|
|
|
|
The required argmuments are the six values, three on each sides, needed
|
|
|
|
to login into the IMAP servers, a host, a username, and a password, two
|
|
|
|
times.
|
|
|
|
|
2011-03-12 03:39:59 +01:00
|
|
|
INSTALL
|
2016-01-22 17:52:28 +01:00
|
|
|
Imapsync works under any Unix with perl.
|
2016-09-19 17:17:24 +02:00
|
|
|
Imapsync works under Windows (2000, XP, Vista, Seven)
|
2016-01-22 17:52:28 +01:00
|
|
|
as a standalone binary software called imapsync.exe
|
2016-09-19 17:17:24 +02:00
|
|
|
Imapsync works under OS X as a standalone binary
|
2016-01-22 17:52:28 +01:00
|
|
|
software called imapsync_bin_Darwin.
|
2011-03-12 03:44:32 +01:00
|
|
|
|
2012-04-17 00:27:13 +02:00
|
|
|
Purchase latest imapsync at
|
|
|
|
http://imapsync.lamiral.info/
|
2011-03-12 03:43:49 +01:00
|
|
|
|
2011-03-12 03:45:04 +01:00
|
|
|
You'll receive a link to a compressed tarball called imapsync-x.xx.tgz
|
2011-03-12 03:43:49 +01:00
|
|
|
where x.xx is the version number. Untar the tarball where
|
2011-03-12 03:44:35 +01:00
|
|
|
you want (on Unix):
|
2011-03-12 03:43:49 +01:00
|
|
|
|
2011-03-12 03:44:11 +01:00
|
|
|
tar xzvf imapsync-x.xx.tgz
|
2011-03-12 03:43:49 +01:00
|
|
|
|
2011-03-12 03:44:35 +01:00
|
|
|
Go into the directory imapsync-x.xx and read the INSTALL file.
|
2016-01-22 17:52:28 +01:00
|
|
|
As mentioned at http://imapsync.lamiral.info/#install
|
2016-09-19 17:17:24 +02:00
|
|
|
the INSTALL file can also be found at
|
2012-04-17 00:27:13 +02:00
|
|
|
http://imapsync.lamiral.info/INSTALL
|
2015-05-28 19:04:57 +02:00
|
|
|
It is now split in several files for each system
|
|
|
|
http://imapsync.lamiral.info/INSTALL.d/
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
CONFIGURATION
|
|
|
|
There is no specific configuration file for imapsync, everything is
|
|
|
|
specified by the command line parameteres and the default behavior.
|
|
|
|
|
2011-03-12 03:44:57 +01:00
|
|
|
USAGE
|
2016-01-22 17:52:28 +01:00
|
|
|
To get a description of each option just run imapsync with no argument,
|
|
|
|
like this:
|
2011-03-12 03:44:32 +01:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
imapsync
|
2015-05-28 19:04:57 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
This description of options is also available at
|
|
|
|
http://imapsync.lamiral.info/OPTIONS and is reproduced here:
|
2015-05-28 19:04:57 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
usage: ./imapsync [options]
|
2016-09-19 17:17:24 +02:00
|
|
|
|
|
|
|
Several options are mandatory.
|
2016-01-22 17:52:28 +01:00
|
|
|
str means string
|
|
|
|
int means integer
|
|
|
|
reg means regular expression
|
|
|
|
cmd means command
|
2016-09-19 17:17:24 +02:00
|
|
|
|
|
|
|
--dry : Makes imapsync doing nothing, just print what would
|
2016-01-22 17:52:28 +01:00
|
|
|
be done without --dry.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--host1 str : Source or "from" imap server. Mandatory.
|
|
|
|
--port1 int : Port to connect on host1. Default is 143, 993 if --ssl1
|
|
|
|
--user1 str : User to login on host1. Mandatory.
|
|
|
|
--showpasswords : Shows passwords on output instead of "MASKED".
|
|
|
|
Useful to restart a complete run by just reading the log.
|
|
|
|
--password1 str : Password for the user1.
|
|
|
|
--host2 str : "destination" imap server. Mandatory.
|
|
|
|
--port2 int : Port to connect on host2. Default is 143, 993 if --ssl2
|
|
|
|
--user2 str : User to login on host2. Mandatory.
|
|
|
|
--password2 str : Password for the user2.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
|
|
|
--passfile1 str : Password file for the user1. It must contain the
|
2016-01-22 17:52:28 +01:00
|
|
|
password on the first line. This option avoids to show
|
|
|
|
the password on the command line like --password1 does.
|
|
|
|
--passfile2 str : Password file for the user2. Contains the password.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--ssl1 : Use a SSL connection on host1.
|
|
|
|
--ssl2 : Use a SSL connection on host2.
|
|
|
|
--tls1 : Use a TLS connection on host1.
|
|
|
|
--tls2 : Use a TLS connection on host2.
|
|
|
|
--debugssl int : SSL debug mode from 0 to 4.
|
2016-09-19 17:15:41 +02:00
|
|
|
--sslargs1 str : Pass any ssl parameter for host1 ssl or tls connection. Example:
|
|
|
|
--sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3
|
|
|
|
See all possibilities in the new() method of IO::Socket::SSL
|
|
|
|
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
|
|
|
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
2016-09-19 17:17:24 +02:00
|
|
|
See --sslargs1
|
|
|
|
|
|
|
|
--timeout1 int : Connection timeout in seconds for host1.
|
2016-01-22 17:52:28 +01:00
|
|
|
Default is 120 and 0 means no timeout at all.
|
2016-09-19 17:17:24 +02:00
|
|
|
--timeout2 int : Connection timeout in seconds for host2.
|
2016-01-22 17:52:28 +01:00
|
|
|
Default is 120 and 0 means no timeout at all.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--authmech1 str : Auth mechanism to use with host1:
|
|
|
|
PLAIN, LOGIN, CRAM-MD5 etc. Use UPPERCASE.
|
|
|
|
--authmech2 str : Auth mechanism to use with host2. See --authmech1
|
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
--authuser1 str : User to auth with on host1 (admin user).
|
2016-01-22 17:52:28 +01:00
|
|
|
Avoid using --authmech1 SOMETHING with --authuser1.
|
|
|
|
--authuser2 str : User to auth with on host2 (admin user).
|
|
|
|
--proxyauth1 : Use proxyauth on host1. Requires --authuser1.
|
|
|
|
Required by Sun/iPlanet/Netscape IMAP servers to
|
|
|
|
be able to use an administrative user.
|
|
|
|
--proxyauth2 : Use proxyauth on host2. Requires --authuser2.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--authmd51 : Use MD5 authentification for host1.
|
|
|
|
--authmd52 : Use MD5 authentification for host2.
|
|
|
|
--domain1 str : Domain on host1 (NTLM authentication).
|
|
|
|
--domain2 str : Domain on host2 (NTLM authentication).
|
2016-09-19 17:17:24 +02:00
|
|
|
|
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--folder str : Sync this folder.
|
|
|
|
--folder str : and this one, etc.
|
|
|
|
--folderrec str : Sync this folder recursively.
|
|
|
|
--folderrec str : and this one, etc.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--folderfirst str : Sync this folder first. --folderfirst "Work"
|
|
|
|
--folderfirst str : then this one, etc.
|
|
|
|
--folderlast str : Sync this folder last. --folderlast "[Gmail]/All Mail"
|
|
|
|
--folderlast str : then this one, etc.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--nomixfolders : Do not merge folders when host1 is case sensitive
|
|
|
|
while host2 is not (like Exchange). Only the first
|
|
|
|
similar folder is synced (ex: Sent SENT sent -> Sent).
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--skipemptyfolders : Empty host1 folders are not created on host2.
|
|
|
|
|
|
|
|
--f1f2 str1=str2 : Force folder str1 to be synced to str2.
|
|
|
|
--include reg : Sync folders matching this regular expression
|
|
|
|
--include reg : or this one, etc.
|
|
|
|
in case both --include --exclude options are
|
|
|
|
use, include is done before.
|
|
|
|
--exclude reg : Skips folders matching this regular expression
|
|
|
|
Several folders to avoid:
|
|
|
|
--exclude 'fold1|fold2|f3' skips fold1, fold2 and f3.
|
|
|
|
--exclude reg : or this one, etc.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
|
|
|
--subfolder2 str : Move whole host1 folders hierarchy under this
|
2016-01-22 17:52:28 +01:00
|
|
|
host2 folder str .
|
|
|
|
It does it by adding two --regextrans2 options before
|
|
|
|
all others. Add --debug to see what's really going on.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--regextrans2 reg : Apply the whole regex to each destination folders.
|
|
|
|
--regextrans2 reg : and this one. etc.
|
|
|
|
When you play with the --regextrans2 option, first
|
|
|
|
add also the safe options --dry --justfolders
|
|
|
|
Then, when happy, remove --dry, remove --justfolders.
|
|
|
|
Have in mind that --regextrans2 is applied after prefix
|
|
|
|
and separator inversion.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--tmpdir str : Where to store temporary files and subdirectories.
|
|
|
|
Will be created if it doesn't exist.
|
|
|
|
Default is system specific, Unix is /tmp but
|
|
|
|
it's often small and deleted at reboot.
|
|
|
|
--tmpdir /var/tmp should be better.
|
|
|
|
--pidfile str : The file where imapsync pid is written.
|
2016-09-19 17:17:24 +02:00
|
|
|
--pidfilelocking : Abort if pidfile already exists. Usefull to avoid
|
2016-01-22 17:52:28 +01:00
|
|
|
concurrent transfers on the same mailbox.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--nolog : Turn off logging on file
|
|
|
|
--logfile str : Change the default log filename (can be dirname/filename).
|
|
|
|
--logdir str : Change the default log directory. Default is LOG_imapsync
|
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
--prefix1 str : Remove prefix to all destination folders
|
2016-01-22 17:52:28 +01:00
|
|
|
(usually INBOX. or INBOX/ or an empty string "")
|
|
|
|
you have to use --prefix1 if host1 imap server
|
|
|
|
does not have NAMESPACE capability, so imapsync
|
|
|
|
suggests to use it. All other cases are bad.
|
|
|
|
--prefix2 str : Add prefix to all host2 folders. See --prefix1
|
|
|
|
--sep1 str : Host1 separator in case NAMESPACE is not supported.
|
|
|
|
--sep2 str : Host2 separator in case NAMESPACE is not supported.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--skipmess reg : Skips messages maching the regex.
|
|
|
|
Example: 'm/[\x80-ff]/' # to avoid 8bits messages.
|
|
|
|
--skipmess is applied before --regexmess
|
|
|
|
--skipmess reg : or this one, etc.
|
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
--pipemess cmd : Apply this cmd command to each message content
|
2016-01-22 17:52:28 +01:00
|
|
|
before the copy.
|
|
|
|
--pipemess cmd : and this one, etc.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--disarmreadreceipts : Disarms read receipts (host2 Exchange issue)
|
|
|
|
|
|
|
|
--regexmess reg : Apply the whole regex to each message before transfer.
|
|
|
|
Example: 's/\000/ /g' # to replace null by space.
|
|
|
|
--regexmess reg : and this one, etc.
|
|
|
|
|
|
|
|
--regexflag reg : Apply the whole regex to each flags list.
|
|
|
|
Example: 's/"Junk"//g' # to remove "Junk" flag.
|
|
|
|
--regexflag reg : and this one, etc.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
|
|
|
--delete : Deletes messages on host1 server after a successful
|
|
|
|
transfer. Option --delete has the following behavior:
|
|
|
|
it marks messages as deleted with the IMAP flag
|
|
|
|
\Deleted, then messages are really deleted with an
|
2016-01-22 17:52:28 +01:00
|
|
|
EXPUNGE IMAP command.
|
|
|
|
|
|
|
|
--delete2 : Delete messages in host2 that are not in
|
|
|
|
host1 server. Useful for backup or pre-sync.
|
|
|
|
--delete2duplicates : Delete messages in host2 that are duplicates.
|
2016-09-19 17:17:24 +02:00
|
|
|
Works only without --useuid since duplicates are
|
2016-01-22 17:52:28 +01:00
|
|
|
detected with an header part of each message.
|
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
--delete2folders : Delete folders in host2 that are not in host1 server.
|
2016-01-22 17:52:28 +01:00
|
|
|
For safety, first try it like this (it is safe):
|
|
|
|
--delete2folders --dry --justfolders --nofoldersizes
|
|
|
|
--delete2foldersonly reg : Deleted only folders matching regex.
|
|
|
|
Example: --delete2foldersonly "/^Junk$|^INBOX.Junk$/"
|
|
|
|
--delete2foldersbutnot reg : Do not delete folders matching regex.
|
|
|
|
Example: --delete2foldersbutnot "/Tasks$|Contacts$|Foo$/"
|
|
|
|
--noexpunge : Do not expunge messages on host1.
|
|
|
|
Expunge really deletes messages marked deleted.
|
2016-09-19 17:17:24 +02:00
|
|
|
Expunge is made at the beginning, on host1 only.
|
|
|
|
Newly transferred messages are also expunged if
|
2016-01-22 17:52:28 +01:00
|
|
|
option --delete is given.
|
|
|
|
No expunge is done on host2 account (unless --expunge2)
|
|
|
|
--expunge1 : Expunge messages on host1 after messages transfer.
|
|
|
|
--expunge2 : Expunge messages on host2 after messages transfer.
|
|
|
|
--uidexpunge2 : uidexpunge messages on the host2 account
|
|
|
|
that are not on the host1 account, requires --delete2
|
|
|
|
--nomixfolders : Avoid merging folders that are considered different on
|
2016-09-19 17:17:24 +02:00
|
|
|
host1 but the same on destination host2 because of
|
2016-01-22 17:52:28 +01:00
|
|
|
case sensitivities and insensitivities.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--syncinternaldates : Sets the internal dates on host2 same as host1.
|
|
|
|
Turned on by default. Internal date is the date
|
|
|
|
a message arrived on a host (mtime).
|
2016-09-19 17:17:24 +02:00
|
|
|
--idatefromheader : Sets the internal dates on host2 same as the
|
2016-01-22 17:52:28 +01:00
|
|
|
"Date:" headers.
|
|
|
|
|
|
|
|
--maxsize int : Skip messages larger (or equal) than int bytes
|
|
|
|
--minsize int : Skip messages smaller (or equal) than int bytes
|
|
|
|
--maxage int : Skip messages older than int days.
|
|
|
|
final stats (skipped) don't count older messages
|
|
|
|
see also --minage
|
|
|
|
--minage int : Skip messages newer than int days.
|
|
|
|
final stats (skipped) don't count newer messages
|
|
|
|
You can do (+ are the messages selected):
|
|
|
|
past|----maxage+++++++++++++++>now
|
|
|
|
past|+++++++++++++++minage---->now
|
|
|
|
past|----maxage+++++minage---->now (intersection)
|
|
|
|
past|++++minage-----maxage++++>now (union)
|
2016-09-19 17:17:24 +02:00
|
|
|
|
|
|
|
--search str : Selects only messages returned by this IMAP SEARCH
|
2016-01-22 17:52:28 +01:00
|
|
|
command. Applied on both sides.
|
|
|
|
--search1 str : Same as --search for selecting host1 messages only.
|
|
|
|
--search2 str : Same as --search for selecting host2 messages only.
|
|
|
|
--search CRIT equals --search1 CRIT --search2 CRIT
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--exitwhenover int : Stop syncing when total bytes transferred reached.
|
2016-09-19 17:17:24 +02:00
|
|
|
Gmail per day allows
|
2016-01-22 17:52:28 +01:00
|
|
|
2500000000 = 2.5 GB downloaded from Gmail as host2
|
|
|
|
500000000 = 500 MB uploaded to Gmail as host1.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--maxlinelength int : skip messages with a line length longer than int bytes.
|
|
|
|
RFC 2822 says it must be no more than 1000 bytes.
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--useheader str : Use this header to compare messages on both sides.
|
|
|
|
Ex: Message-ID or Subject or Date.
|
|
|
|
--useheader str and this one, etc.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--subscribed : Transfers subscribed folders.
|
2016-09-19 17:17:24 +02:00
|
|
|
--subscribe : Subscribe to the folders transferred on the
|
2016-01-22 17:52:28 +01:00
|
|
|
host2 that are subscribed on host1. On by default.
|
2016-09-19 17:17:24 +02:00
|
|
|
--subscribeall : Subscribe to the folders transferred on the
|
2016-01-22 17:52:28 +01:00
|
|
|
host2 even if they are not subscribed on host1.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--nofoldersizes : Do not calculate the size of each folder in bytes
|
|
|
|
and message counts. Default is to calculate them.
|
|
|
|
--nofoldersizesatend: Do not calculate the size of each folder in bytes
|
|
|
|
and message counts at the end. Default is on.
|
|
|
|
--justfoldersizes : Exit after having printed the folder sizes.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--syncacls : Synchronises acls (Access Control Lists).
|
|
|
|
--nosyncacls : Does not synchronize acls. This is the default.
|
|
|
|
Acls in IMAP are not standardized, be careful.
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--usecache : Use cache to speedup.
|
|
|
|
--nousecache : Do not use cache. Caveat: --useuid --nousecache creates
|
|
|
|
duplicates on multiple runs.
|
2016-09-19 17:17:24 +02:00
|
|
|
--useuid : Use uid instead of header as a criterium to recognize
|
|
|
|
messages. Option --usecache is then implied unless
|
|
|
|
--nousecache is used.
|
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
--debug : Debug mode.
|
|
|
|
--debugfolders : Debug mode for the folders part only.
|
|
|
|
--debugcontent : Debug content of the messages transfered. Huge ouput.
|
|
|
|
--debugflags : Debug mode for flags.
|
|
|
|
--debugimap1 : IMAP debug mode for host1. Very verbose.
|
|
|
|
--debugimap2 : IMAP debug mode for host2. Very verbose.
|
|
|
|
--debugimap : IMAP debug mode for host1 and host2.
|
|
|
|
--debugmemory : Debug mode showing memory consumption after each copy.
|
|
|
|
|
|
|
|
--errorsmax int : Exit when int number of errors is reached. Default is 50.
|
|
|
|
|
|
|
|
--tests : Run local non-regression tests. Exit code 0 means all ok.
|
2016-09-19 17:17:24 +02:00
|
|
|
--testslive : Run a live test with test1.lamiral.info imap server.
|
2016-01-22 17:52:28 +01:00
|
|
|
Useful to check the basics. Needs internet connexion.
|
|
|
|
|
|
|
|
--version : Print only software version.
|
|
|
|
--noreleasecheck : Do not check for new imapsync release (a http request).
|
|
|
|
--releasecheck : Check for new imapsync release (a http request).
|
|
|
|
--noid : Do not send/receive ID command to imap servers.
|
|
|
|
--justconnect : Just connect to both servers and print useful
|
|
|
|
information. Need only --host1 and --host2 options.
|
2016-09-19 17:17:24 +02:00
|
|
|
--justlogin : Just login to both host1 and host2 with users
|
2016-01-22 17:52:28 +01:00
|
|
|
credentials, then exit.
|
|
|
|
--justfolders : Do only things about folders (ignore messages).
|
|
|
|
|
|
|
|
--help : print this help.
|
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
Example:
|
|
|
|
To synchronize the source imap account
|
|
|
|
"test1" on server "test1.lamiral.info" with password "secret1"
|
|
|
|
to the destination imap account
|
2016-01-22 17:52:28 +01:00
|
|
|
"test2" on server "test2.lamiral.info" with password "secret2"
|
|
|
|
do:
|
2016-09-19 17:17:24 +02:00
|
|
|
|
2016-01-22 17:52:28 +01:00
|
|
|
imapsync \
|
|
|
|
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
|
|
|
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
2011-03-12 03:45:01 +01:00
|
|
|
|
2011-03-12 03:39:59 +01:00
|
|
|
DESCRIPTION
|
2015-05-28 19:04:57 +02:00
|
|
|
Imapsync command is a tool allowing incremental and recursive imap
|
|
|
|
transfers from one mailbox to another.
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2013-04-22 21:50:50 +02:00
|
|
|
By default all folders are transferred, recursively, all possible flags
|
|
|
|
(\Seen \Answered \Flagged etc.) are synced too.
|
2011-03-12 03:44:32 +01:00
|
|
|
|
2011-03-12 03:39:59 +01:00
|
|
|
We sometimes need to transfer mailboxes from one imap server to another.
|
|
|
|
This is called migration.
|
|
|
|
|
2015-05-28 19:04:57 +02:00
|
|
|
Imapsync reduces the amount of data transferred by not transferring a
|
|
|
|
given message if it resides already on both sides. Same specific headers
|
|
|
|
and the transfer is done only once; taken into account are by default
|
|
|
|
Message-Id and Received header lines. All flags are preserved, unread
|
|
|
|
will stay unread, read will stay read, deleted will stay deleted. You
|
|
|
|
can stop the transfer at any time and restart it later, imapsync works
|
|
|
|
well with bad connections and interruptions.
|
2011-03-12 03:40:59 +01:00
|
|
|
|
|
|
|
You can decide to delete the messages from the source mailbox after a
|
2013-02-09 03:40:54 +01:00
|
|
|
successful transfer, it can be a good feature when migrating live
|
2013-04-22 21:50:50 +02:00
|
|
|
mailboxes since messages will be only on one side. In that case, use the
|
2013-02-09 03:40:54 +01:00
|
|
|
--delete option. Option --delete implies also option --expunge so all
|
|
|
|
messages marked deleted on host1 will be really deleted. (you can use
|
|
|
|
--noexpunge to avoid this but I don't see any good real world scenario
|
2015-05-28 19:04:57 +02:00
|
|
|
for the combination --delete --noexpunge).
|
2011-03-12 03:40:59 +01:00
|
|
|
|
2015-05-28 19:04:57 +02:00
|
|
|
A different scenario is synchronizing a mailbox B from another mailbox A
|
|
|
|
in case you just want to keep a "live" copy of A in B. In that case
|
|
|
|
--delete2 has to be used, it deletes messages in host2 folder B that are
|
|
|
|
not in host1 folder A. If you also need to destroy host2 folders that
|
|
|
|
are not in host1 then use --delete2folders (see also
|
|
|
|
--delete2foldersonly and --delete2foldersbutnot).
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2015-05-28 19:04:57 +02:00
|
|
|
Imapsync is not adequate for maintaining two active imap accounts in
|
|
|
|
synchronization when the user plays independently on both sides. Use
|
2012-04-17 00:28:48 +02:00
|
|
|
offlineimap (written by John Goerzen) or mbsync (written by Michael R.
|
|
|
|
Elkins) for 2 ways synchronizations.
|
|
|
|
|
2011-03-12 03:39:59 +01:00
|
|
|
OPTIONS
|
2011-03-12 03:44:32 +01:00
|
|
|
To get a description of each option just invoke:
|
|
|
|
|
2015-05-28 19:04:57 +02:00
|
|
|
imapsync
|
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
or read the previous section named USAGE,
|
|
|
|
|
2015-05-28 19:04:57 +02:00
|
|
|
or read http://imapsync.lamiral.info/OPTIONS
|
2011-03-12 03:39:59 +01:00
|
|
|
|
|
|
|
HISTORY
|
|
|
|
I wrote imapsync because an enterprise (basystemes) paid me to install a
|
2011-03-12 03:44:47 +01:00
|
|
|
new imap server without losing huge old mailboxes located on a far away
|
2011-03-12 03:44:53 +01:00
|
|
|
remote imap server accessible by a low bandwidth link. The tool imapcp
|
2011-03-12 03:39:59 +01:00
|
|
|
(written in python) could not help me because I had to verify every
|
2011-03-12 03:44:29 +01:00
|
|
|
mailbox was well transferred and delete it after a good transfer.
|
2015-05-28 19:04:57 +02:00
|
|
|
imapsync started its life as a copy_folder.pl patch. The tool
|
|
|
|
copy_folder.pl comes from the Mail-IMAPClient-2.1.3 perl module tarball
|
|
|
|
source (in the examples/ directory of the tarball).
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2011-03-12 03:44:21 +01:00
|
|
|
EXAMPLE
|
2011-03-12 03:39:59 +01:00
|
|
|
While working on imapsync parameters please run imapsync in dry mode (no
|
|
|
|
modification induced) with the --dry option. Nothing bad can be done
|
|
|
|
this way.
|
|
|
|
|
2011-03-12 03:44:55 +01:00
|
|
|
To synchronize the imap account "buddy" (with password "secret1") on
|
|
|
|
host "imap.src.fr" to the imap account "max" (with password "secret2")
|
|
|
|
on host "imap.dest.fr":
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2011-03-12 03:44:55 +01:00
|
|
|
imapsync --host1 imap.src.fr --user1 buddy --password1 secret1 \
|
|
|
|
--host2 imap.dest.fr --user2 max --password2 secret2
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2011-03-12 03:44:55 +01:00
|
|
|
Then you will have max's mailbox updated from buddy's mailbox.
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2011-03-12 03:43:48 +01:00
|
|
|
SECURITY
|
2011-03-12 03:44:55 +01:00
|
|
|
You can use --passfile1 instead of --password1 to give the password
|
|
|
|
since it is safer. With --password1 option any user on your host can see
|
|
|
|
the password by using the 'ps auxwwww' command. Using a variable (like
|
|
|
|
$PASSWORD1) is also dangerous because of the 'ps auxwwwwe' command. So,
|
|
|
|
saving the password in a well protected file (600 or rw-------) is the
|
|
|
|
best solution.
|
2011-03-12 03:43:48 +01:00
|
|
|
|
2011-03-12 03:44:23 +01:00
|
|
|
imasync is not totally protected against sniffers on the network since
|
2011-03-12 03:44:47 +01:00
|
|
|
passwords may be transferred in plain text if CRAM-MD5 is not supported
|
2011-03-12 03:44:51 +01:00
|
|
|
by your imap servers. Use --ssl1 (or --tls1) and --ssl2 (or --tls2) to
|
|
|
|
enable encryption on host1 and host2.
|
2011-03-12 03:44:23 +01:00
|
|
|
|
|
|
|
You may authenticate as one user (typically an admin user), but be
|
|
|
|
authorized as someone else, which means you don't need to know every
|
|
|
|
user's personal password. Specify --authuser1 "adminuser" to enable this
|
2011-03-12 03:44:35 +01:00
|
|
|
on host1. In this case, --authmech1 PLAIN will be used by default since
|
|
|
|
it is the only way to go for now. So don't use --authmech1 SOMETHING
|
|
|
|
with --authuser1 "adminuser", it will not work. Same behavior with the
|
2013-04-22 21:50:50 +02:00
|
|
|
--authuser2 option. Authenticate with an admin account must be supported
|
|
|
|
by your imap server to work with imapsync.
|
2011-03-12 03:43:48 +01:00
|
|
|
|
2011-03-12 03:45:04 +01:00
|
|
|
When working on Sun/iPlanet/Netscape IMAP servers you must use
|
|
|
|
--proxyauth1 to enable administrative user to masquerade as another
|
|
|
|
user. Can also be used on destination server with --proxyauth2
|
|
|
|
|
2013-05-21 00:04:57 +02:00
|
|
|
You can authenticate with OAUTH when transfering from Google Apps. The
|
|
|
|
consumer key will be the domain part of the --user, and the --password
|
|
|
|
will be used as the consumer secret. It does not work with Google Apps
|
|
|
|
free edition.
|
|
|
|
|
2011-03-12 03:39:59 +01:00
|
|
|
EXIT STATUS
|
|
|
|
imapsync will exit with a 0 status (return code) if everything went
|
|
|
|
good. Otherwise, it exits with a non-zero status.
|
|
|
|
|
2011-03-12 03:44:47 +01:00
|
|
|
So if you have an unreliable internet connection, you can use this loop
|
|
|
|
in a Bourne shell:
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
while ! imapsync ...; do
|
2011-03-12 03:39:59 +01:00
|
|
|
echo imapsync not complete
|
|
|
|
done
|
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
LICENSE AND COPYRIGHT
|
2013-02-09 03:40:54 +01:00
|
|
|
imapsync is free, open, public but not always gratis software cover by
|
|
|
|
the NOLIMIT Public License. See the LICENSE file included in the
|
2013-04-22 21:50:50 +02:00
|
|
|
distribution or just read this simple sentence as it is the licence
|
2016-09-19 17:17:24 +02:00
|
|
|
text:
|
|
|
|
|
|
|
|
"No limit to do anything with this work and this license."
|
|
|
|
|
|
|
|
In case it is not long enough I repeat:
|
|
|
|
|
|
|
|
"No limit to do anything with this work and this license."
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2011-03-12 03:44:37 +01:00
|
|
|
MAILING-LIST
|
2013-04-22 21:50:50 +02:00
|
|
|
The public mailing-list may be the best way to get free support.
|
2011-03-12 03:44:37 +01:00
|
|
|
|
2011-03-12 03:44:47 +01:00
|
|
|
To write on the mailing-list, the address is:
|
|
|
|
<imapsync@linux-france.org>
|
2011-03-12 03:44:37 +01:00
|
|
|
|
2011-03-12 03:45:02 +01:00
|
|
|
To subscribe, send any message (even empty) to:
|
|
|
|
<imapsync-subscribe@listes.linux-france.org> then just reply to the
|
|
|
|
confirmation message.
|
2011-03-12 03:44:37 +01:00
|
|
|
|
|
|
|
To unsubscribe, send a message to:
|
2011-03-12 03:44:47 +01:00
|
|
|
<imapsync-unsubscribe@listes.linux-france.org>
|
2011-03-12 03:44:37 +01:00
|
|
|
|
|
|
|
To contact the person in charge for the list:
|
2011-03-12 03:44:47 +01:00
|
|
|
<imapsync-request@listes.linux-france.org>
|
2011-03-12 03:44:37 +01:00
|
|
|
|
2013-04-22 21:50:50 +02:00
|
|
|
The list archives are available at:
|
2011-03-12 03:44:37 +01:00
|
|
|
http://www.linux-france.org/prj/imapsync_list/ So consider that the list
|
|
|
|
is public, anyone can see your post. Use a pseudonym or do not post to
|
|
|
|
this list if you want to stay private.
|
|
|
|
|
|
|
|
Thank you for your participation.
|
|
|
|
|
2011-03-12 03:44:47 +01:00
|
|
|
AUTHOR
|
2013-04-22 21:50:50 +02:00
|
|
|
Gilles LAMIRAL <gilles.lamiral@laposte.net>
|
2011-03-12 03:44:47 +01:00
|
|
|
|
2013-04-22 21:50:50 +02:00
|
|
|
Feedback good or bad is very often welcome.
|
2011-03-12 03:44:47 +01:00
|
|
|
|
2013-04-22 21:50:50 +02:00
|
|
|
Gilles LAMIRAL earns his living by writing, installing, configuring and
|
|
|
|
teaching free, open and often gratis softwares. It used to be "always
|
|
|
|
gratis" but now it is "often" because imapsync is sold by its author, a
|
|
|
|
good way to stay maintening and supporting free open public softwares
|
|
|
|
(see the license) over decades.
|
2011-03-12 03:44:47 +01:00
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
BUGS AND LIMITATIONS
|
2014-05-30 03:56:21 +02:00
|
|
|
Help me to help you: follow the following guidelines.
|
2011-03-12 03:43:46 +01:00
|
|
|
|
2011-03-12 03:44:57 +01:00
|
|
|
Report any bugs or feature requests to the public mailing-list or to the
|
|
|
|
author.
|
2011-03-12 03:44:51 +01:00
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
Before reporting bugs, read the FAQs, the README and the TODO files.
|
2012-04-17 00:27:13 +02:00
|
|
|
http://imapsync.lamiral.info/
|
2011-03-12 03:44:35 +01:00
|
|
|
|
2011-03-12 03:44:53 +01:00
|
|
|
Upgrade to last imapsync release, maybe the bug is already fixed.
|
|
|
|
|
|
|
|
Upgrade to last Mail-IMAPClient Perl module.
|
2011-03-12 03:44:57 +01:00
|
|
|
http://search.cpan.org/dist/Mail-IMAPClient/ maybe the bug is already
|
2014-05-30 03:56:21 +02:00
|
|
|
fixed there.
|
2011-03-12 03:44:53 +01:00
|
|
|
|
2015-05-28 19:04:57 +02:00
|
|
|
Make a good title with word "imapsync" in it (my spam filters won't
|
2014-05-30 03:56:21 +02:00
|
|
|
filter it), Try to write an email title with more words than just
|
|
|
|
"imapsync" or "problem", a good title is made of keywords summary, but
|
|
|
|
not too long (one visible line).
|
2011-03-12 03:44:39 +01:00
|
|
|
|
2011-03-12 03:44:47 +01:00
|
|
|
Help us to help you: in your report, please include:
|
2011-03-12 03:43:54 +01:00
|
|
|
|
2011-03-12 03:44:26 +01:00
|
|
|
- imapsync version.
|
2011-03-12 03:44:57 +01:00
|
|
|
|
2014-05-30 03:56:21 +02:00
|
|
|
- output near the first failures, a few lines before is good to get the context
|
2016-09-19 17:17:24 +02:00
|
|
|
of the issue. First failures messages are often more significant than
|
|
|
|
the last ones.
|
|
|
|
|
|
|
|
- if the issue is always related to the same messages, include the output
|
2014-05-30 03:56:21 +02:00
|
|
|
with --debug --debugimap, near the failure point. For example,
|
2016-09-19 17:17:24 +02:00
|
|
|
Isolate a buggy message or two in a folder 'BUG' and use
|
2011-03-12 03:44:57 +01:00
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
imapsync ... --folder 'BUG' --debug --debugimap
|
2011-03-12 03:44:57 +01:00
|
|
|
|
2014-05-30 03:56:21 +02:00
|
|
|
- imap server softwares on both sides and their version number.
|
2011-03-12 03:44:57 +01:00
|
|
|
|
|
|
|
- imapsync with all the options you use, the full command line
|
2016-09-19 17:17:24 +02:00
|
|
|
you use (except the passwords of course).
|
2011-03-12 03:44:57 +01:00
|
|
|
|
|
|
|
- IMAPClient.pm version.
|
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
- the run context. Do you run imapsync.exe, a unix binary
|
2013-04-22 21:50:50 +02:00
|
|
|
or the perl script imapsync.
|
2011-04-24 23:19:36 +02:00
|
|
|
|
2011-03-12 03:44:57 +01:00
|
|
|
- operating system running imapsync.
|
|
|
|
|
2011-04-24 23:19:36 +02:00
|
|
|
- virtual software context (vmware, xen etc.)
|
|
|
|
|
2011-03-12 03:44:57 +01:00
|
|
|
- operating systems on both sides and the third side in case
|
2011-03-12 03:44:32 +01:00
|
|
|
you run imapsync on a foreign host from the both.
|
2011-03-12 03:44:57 +01:00
|
|
|
|
2011-03-12 03:44:57 +01:00
|
|
|
Most of those values can be found as a copy/paste at the begining of the
|
2014-05-30 03:56:21 +02:00
|
|
|
output, so a carbon copy of the output is a very easy and very good
|
|
|
|
debug report for me.
|
2011-03-12 03:44:57 +01:00
|
|
|
|
|
|
|
One time in your life, read the paper "How To Ask Questions The Smart
|
2011-03-12 03:44:57 +01:00
|
|
|
Way" http://www.catb.org/~esr/faqs/smart-questions.html and then forget
|
|
|
|
it.
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2011-03-12 03:43:44 +01:00
|
|
|
IMAP SERVERS
|
2015-08-04 03:44:40 +02:00
|
|
|
See http://imapsync.lamiral.info/S/imapservers.shtml
|
2011-03-12 03:43:50 +01:00
|
|
|
|
2011-03-12 03:43:49 +01:00
|
|
|
HUGE MIGRATION
|
2011-03-12 03:44:47 +01:00
|
|
|
Pay special attention to options --subscribed --subscribe --delete
|
2013-02-09 03:40:54 +01:00
|
|
|
--delete2 --delete2folders --maxage --minage --maxsize --useuid
|
|
|
|
--usecache
|
2011-03-12 03:43:49 +01:00
|
|
|
|
2011-03-12 03:43:49 +01:00
|
|
|
If you have many mailboxes to migrate think about a little shell
|
2012-04-17 00:26:18 +02:00
|
|
|
program. Write a file called file.txt (for example) containing users and
|
2011-03-12 03:43:49 +01:00
|
|
|
passwords. The separator used in this example is ';'
|
|
|
|
|
2012-04-17 00:26:18 +02:00
|
|
|
The file.txt file contains:
|
2011-03-12 03:43:49 +01:00
|
|
|
|
2011-09-25 22:31:48 +02:00
|
|
|
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 ...
|
2011-03-12 03:43:49 +01:00
|
|
|
|
2011-09-25 22:31:48 +02:00
|
|
|
On Unix the shell program can be:
|
2011-03-12 03:43:49 +01:00
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
{ while IFS=';' read u1 p1 u2 p2; do
|
2011-09-25 22:31:48 +02:00
|
|
|
imapsync --host1 imap.side1.org --user1 "$u1" --password1 "$p1" \
|
|
|
|
--host2 imap.side2.org --user2 "$u2" --password2 "$p2" ...
|
2012-04-17 00:26:18 +02:00
|
|
|
done ; } < file.txt
|
2011-03-12 03:43:49 +01:00
|
|
|
|
2011-09-25 22:31:48 +02:00
|
|
|
On Windows the batch program can be:
|
|
|
|
|
2012-04-17 00:26:18 +02:00
|
|
|
FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.txt) DO imapsync ^
|
2011-09-25 22:31:48 +02:00
|
|
|
--host1 imap.side1.org --user1 %%G --password1 %%H ^
|
|
|
|
--host2 imap.side2.org --user2 %%I --password2 %%J ...
|
|
|
|
|
2014-05-30 03:56:21 +02:00
|
|
|
The ... have to be replaced by nothing or any imapsync option. Welcome
|
|
|
|
in shell programming !
|
2011-09-25 22:31:48 +02:00
|
|
|
|
2014-05-30 03:56:21 +02:00
|
|
|
You will find already written scripts at
|
|
|
|
http://imapsync.lamiral.info/examples/
|
2011-03-12 03:43:49 +01:00
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
HACKING
|
2013-02-09 03:40:54 +01:00
|
|
|
Feel free to hack imapsync as the NOLIMIT license permits it.
|
2011-03-12 03:43:51 +01:00
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
LINKS
|
2015-05-28 19:04:57 +02:00
|
|
|
Entries for imapsync:
|
|
|
|
https://web.archive.org/web/20070202005121/http://www.imap.org/products/
|
|
|
|
showall.php
|
2011-03-12 03:43:51 +01:00
|
|
|
|
2011-03-12 03:39:59 +01:00
|
|
|
SIMILAR SOFTWARES
|
2011-03-12 03:44:35 +01:00
|
|
|
imap_tools : http://www.athensfbc.com/imap_tools
|
2012-04-17 00:28:48 +02:00
|
|
|
offlineimap : https://github.com/nicolas33/offlineimap
|
|
|
|
mbsync : http://isync.sourceforge.net/
|
2011-03-12 03:44:35 +01:00
|
|
|
mailsync : http://mailsync.sourceforge.net/
|
2012-04-17 00:28:48 +02:00
|
|
|
mailutil : http://www.washington.edu/imap/
|
|
|
|
part of the UW IMAP tookit.
|
2011-03-12 03:44:35 +01:00
|
|
|
imaprepl : http://www.bl0rg.net/software/
|
2012-04-17 00:28:48 +02:00
|
|
|
http://freecode.com/projects/imap-repl/
|
2011-03-12 03:44:35 +01:00
|
|
|
imapcopy : http://home.arcor.de/armin.diehl/imapcopy/imapcopy.html
|
|
|
|
migrationtool : http://sourceforge.net/projects/migrationtool/
|
|
|
|
imapmigrate : http://sourceforge.net/projects/cyrus-utils/
|
2011-03-12 03:44:35 +01:00
|
|
|
wonko_imapsync: http://wonko.com/article/554
|
2012-04-17 00:28:48 +02:00
|
|
|
see also file W/tools/wonko_ruby_imapsync
|
|
|
|
exchange-away : http://exchange-away.sourceforge.net/
|
2011-03-12 03:44:35 +01:00
|
|
|
pop2imap : http://www.linux-france.org/prj/pop2imap/
|
2011-03-12 03:43:44 +01:00
|
|
|
|
2011-03-12 03:44:57 +01:00
|
|
|
Feedback (good or bad) will often be welcome.
|
2011-03-12 03:39:59 +01:00
|
|
|
|
2016-09-19 17:17:24 +02:00
|
|
|
$Id: imapsync,v 1.727 2016/08/19 10:30:36 gilles Exp gilles $
|
2011-03-12 03:39:59 +01:00
|
|
|
|