1
0
mirror of https://github.com/imapsync/imapsync.git synced 2024-11-16 15:52:47 +01:00
This commit is contained in:
Nick Bebout 2020-04-10 18:15:57 -05:00
parent 93b917b12b
commit 1d08afaba6
139 changed files with 27179 additions and 6213 deletions

View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: CREDITS,v 1.192 2018/10/04 10:20:47 gilles Exp gilles $
# $Id: CREDITS,v 1.193 2019/07/31 23:05:10 gilles Exp gilles $
If you want to make a donation to me, imapsync author, Gilles LAMIRAL,
use any of the following ways:
@ -9,7 +9,7 @@ b) If you can read french, please use the following wishlist :
(books will be send with free postal cost)
c) my paypal account is gilles@lamiral.info
http://imapsync.lamiral.info/S/paypal.shtml
http://imapsync.lamiral.info/S/donate.shtml
My postal address is:
Gilles LAMIRAL

169
ChangeLog
View File

@ -1,17 +1,178 @@
RCS file: RCS/imapsync,v
Working file: imapsync
head: 1.945
head: 1.977
branch:
locks: strict
gilles: 1.945
gilles: 1.977
access list:
symbolic names:
keyword substitution: kv
total revisions: 945; selected revisions: 945
total revisions: 977; selected revisions: 977
description:
----------------------------
revision 1.945 locked by: gilles;
revision 1.977 locked by: gilles;
date: 2019/12/23 20:18:02; author: gilles; state: Exp; lines: +10 -10
No tests_resolv( ) since resolv is not really used and tests_resolv( ) fails on mac (I do not have write to /etc/hosts)
----------------------------
revision 1.976
date: 2019/12/19 15:37:33; author: gilles; state: Exp; lines: +16 -12
Moved tests tests_probe_imapssl tests_mailimapclient_connect tests_resolv at the end.
----------------------------
revision 1.975
date: 2019/12/19 10:44:23; author: gilles; state: Exp; lines: +21 -13
Commented the tests_kill* tests
Added a resolv petiteipv6.lamiral.info before check it (frequent failure)
----------------------------
revision 1.974
date: 2019/12/16 13:01:18; author: gilles; state: Exp; lines: +18 -9
Enhancement, internal. Use Debug_fh to set where go the --debugimap outputs.
----------------------------
revision 1.973
date: 2019/12/15 00:27:10; author: gilles; state: Exp; lines: +8 -8
Bugfix. Upgraded ks2 Dovecot and now logout in ssl does not cause failure
----------------------------
revision 1.972
date: 2019/12/14 23:45:12; author: gilles; state: Exp; lines: +9 -9
Added -utf8 when requiring CGI. Hope it will allow utf8 characters in passwords.
----------------------------
revision 1.971
date: 2019/12/14 23:41:41; author: gilles; state: Exp; lines: +8 -8
Bugfix. CGI context. charset was charset=ISO-8859-1 in header (CGI.pm default). Now "text/plain; charset=UTF-8"
----------------------------
revision 1.970
date: 2019/12/09 23:09:05; author: gilles; state: Exp; lines: +297 -259
Reread README part.
Change tests. ks2ipv6.lamiral.info replaced by petiteipv6.lamiral.info
1510 unit tests
----------------------------
revision 1.969
date: 2019/11/29 13:00:32; author: gilles; state: Exp; lines: +9 -9
1509 unit tests
----------------------------
revision 1.968
date: 2019/11/29 12:42:13; author: gilles; state: Exp; lines: +29 -19
Bugfix. binmode UTF-8 for log and output.
----------------------------
revision 1.967
date: 2019/11/27 20:41:34; author: gilles; state: Exp; lines: +9 -9
Bugfix. Bad tests count under docker
----------------------------
revision 1.966
date: 2019/11/27 20:23:08; author: gilles; state: Exp; lines: +10 -9
Commented test probe_imapssl: ks2ipv6.lamiral.info
----------------------------
revision 1.965
date: 2019/11/27 20:16:32; author: gilles; state: Exp; lines: +13 -11
Removed some tests that take time and sometimes fail (ipv6 related)
----------------------------
revision 1.964
date: 2019/11/27 15:50:39; author: gilles; state: Exp; lines: +52 -27
CGI context. Adaptation to a local http server webserver. pidfile and cgidir.
Added Encode Encode::IMAPUTF7 and MIME::Base64 modules versions.
Removed doublon "use MIME::Base64".
Bugfix. Make --tests pass on docker context and under root.
----------------------------
revision 1.963
date: 2019/11/25 12:38:44; author: gilles; state: Exp; lines: +52 -18
Skip tests under Win Win64 and Mac that fail. ipv6 related or fork ones.
----------------------------
revision 1.962
date: 2019/11/22 09:51:29; author: gilles; state: Exp; lines: +19 -9
Added dependencies:
* MIME::Base64
* Encode
Added test for Encode::find_encoding that fails with the binaries not cmpiled with perl -x
----------------------------
revision 1.961
date: 2019/11/19 19:45:02; author: gilles; state: Exp; lines: +117 -47
Added module dependency to Encode::IMAPUTF7
Bugfix. Folders names with + characters must stay as they are.
Bugfix. When using --subfolder2 SUB --delete2folders, do not delete the folder SUB.
----------------------------
revision 1.960
date: 2019/10/31 23:08:18; author: gilles; state: Exp; lines: +54 -7
Added test to remove header bad.
----------------------------
revision 1.959
date: 2019/10/07 21:21:45; author: gilles; state: Exp; lines: +318 -92
Added tests:
tests_kill_zero()
tests_killpid_by_parent()
tests_killpid_by_brother()
tests_abort()
cgidir is . when used by Net::Server::HTTP
Bugfix. Added SSL_cipher_list => 'DEFAULT:!DH' to tests with ssl
Bugfix. PIDs can be negative under Windows.
Bugfix. --resynclabels was not on with --gmail1 --gmail2
1502 unit tests under Unix
----------------------------
revision 1.958
date: 2019/09/11 21:16:40; author: gilles; state: Exp; lines: +40 -37
cgi context is now set on with env variables SERVER_SOFTWARE and SERVER_PORT
it is because Net::Server::HTTP does not set SERVER_SOFTWARE but SERVER_PORT
It is a preparation to a homemade web server to serve on imapsync as a cgi and
get free from Apache or a complicated web server stuff configuration.
----------------------------
revision 1.957
date: 2019/08/29 17:40:13; author: gilles; state: Exp; lines: +34 -25
Bugfix. Do not compute a folder size if the folder does not exist. Happened with --skipemptyfolders
----------------------------
revision 1.956
date: 2019/08/02 20:18:52; author: gilles; state: Exp; lines: +118 -55
Bugfix. Reviewed all exit_clean to include a final CR on the error message.
Bugfix. New foldersize tried to select non existent folder that caused a premature exit
when host2 account is mostly empty.
Bugfix. --justconnect did not show the line "IP address:"
----------------------------
revision 1.955
date: 2019/07/31 20:30:27; author: gilles; state: Exp; lines: +69 -36
Bugfix in docker context. killing myself in docker context doesn't seem to work well, as well as sending signals several times.
So just install catch_exit with INT (ctr-c on terminals) and exits if still alive after killing myself.
----------------------------
revision 1.954
date: 2019/07/29 18:04:07; author: gilles; state: Exp; lines: +19 -14
Bufix. In docker context, print "context detected" only with --debug. imapsync --version printed the release on the third line instead of the first.
----------------------------
revision 1.953
date: 2019/07/29 05:12:18; author: gilles; state: Exp; lines: +9 -9
Bugfix. tests_imapsync_context under Docker bugfix.
----------------------------
revision 1.952
date: 2019/07/29 04:52:52; author: gilles; state: Exp; lines: +8 -8
1477 regression tests
----------------------------
revision 1.951
date: 2019/07/29 04:40:48; author: gilles; state: Exp; lines: +66 -9
Added context in --releasecheck user_agent. CGI or Docker or Standard.
----------------------------
revision 1.950
date: 2019/07/28 02:24:17; author: gilles; state: Exp; lines: +604 -189
Folders sizes are now presented per folder from host1 and host2 as well as the differrences between them.
----------------------------
revision 1.949
date: 2019/07/18 03:44:00; author: gilles; state: Exp; lines: +59 -32
Refactor. timenext() deglobalized.
Added tests_timenext().
----------------------------
revision 1.948
date: 2019/07/17 16:51:50; author: gilles; state: Exp; lines: +153 -128
Refactor. Moved main instructions into sub single_sync(). Goal is to prepare multiple different syncs.
----------------------------
revision 1.947
date: 2019/07/15 01:10:05; author: gilles; state: Exp; lines: +119 -45
Bugfix. Count all fatal errors.
----------------------------
revision 1.946
date: 2019/07/09 18:01:42; author: gilles; state: Exp; lines: +136 -48
Usability. Added the number of errors and the max number of errors allowed at the final line "Exiting with return value xx"
Deglobalized $foldersizes to $sync->{ foldersizes }
Usability. Added ETA at the beginning of a folder process.
1467 regression tests
----------------------------
revision 1.945
date: 2019/06/26 19:30:56; author: gilles; state: Exp; lines: +151 -94
Proofread the documentation part, what will go to README.
The pod at the beginning.

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Admin_Authentication.txt,v 1.9 2019/06/26 22:16:43 gilles Exp gilles $
$Id: FAQ.Admin_Authentication.txt,v 1.10 2019/10/31 23:13:50 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -13,8 +13,9 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Admin_Authentication.txt
It can be useful to authenticate without knowing each user password.
Using an admin account to authenticate is not a standard feature
supported by all imap servers. Sometimes it is implemented via --authuser1
sometimes not. It depends on the imap software server and its configuration.
supported by all imap servers. Sometimes it is implemented via the
--authuser1 option, sometimes not. It depends on the imap software
server and its configuration.
You have to follow this road:
* Determine what is the imap software server

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Archiving.txt,v 1.14 2019/03/22 11:50:36 gilles Exp gilles $
$Id: FAQ.Archiving.txt,v 1.18 2019/10/23 17:56:28 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -11,49 +11,82 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Archiving.txt
Questions answered in this FAQ are:
Q. Can I archive different accounts on the same destination account,
Q. How can I archive different accounts on the same destination account,
each account on a separate folder?
Q. How can I restore a complete account archived in a subfolder, like
with the option --subfolder2?
Q. How to move emails from one IMAP folder to another either on the
same IMAP server or a different one?
For example, all messages older than 1 year, move from INBOX to Archive.
same IMAP server or a different one?
For example, all messages older than 1 year, move from INBOX to Archive.
Q. Can imapsync be used to maintain a local offline copy of a
mailbox from host1, eg for backup purposes, so that if the
server fails, then the mailbox could be reinstated,
ideally without requiring a second IMAP host?
Q. Can imapsync be used to maintain and restore a local offline copy
of a mailbox, eg for backup purposes, using Mbox or Maildir
format, so that if the server fails, then the mailbox could be
reinstated?
Q. How to archive a whole year in a subfolder?
Q. How to archive a whole year in subfolders but without subsubfolders?
https://imapsync.lamiral.info/FAQ.d/FAQ.Archiving.txt
=======================================================================
Q. Can I archive different accounts on the same destination account,
Q. How can I archive different accounts on the same destination account,
each account on a separate folder?
R. Yes. Use --subfolder2
R. Use --subfolder2
--subfolder2 str : Syncs the whole host1 folders hierarchy under the
host2 given folder str.
(It does it internally by adding two --regextrans2
options before all others.)
Example:
Examples:
imapsync ... --user1 Foo --subfolder2 FooArch
imapsync ... --user1 Foo --subfolder2 FooArchiv
imapsync ... --user1 Bar --subfolder2 BarArch
imapsync ... --user1 Bar --subfolder2 BarArchiv
In case you need a strict sync, add --delete2 --delete2foldersonly "FooArch"
(or "BarArch" for the second example); it will delete on account2
what is not on account1 but only in the right place, ie, the subfolder "foo".
Example:
imapsync ... --user1 Foo --subfolder2 FooArch --delete2 --delete2foldersonly "FooArch"
In case you need a very strict sync, add options
--delete2 --delete2foldersonly "FooArchiv"
(or "BarArchiv" for the second example).
It will delete on account2 what is not on account1 but only in the right place,
ie, the subfolder "FooArchiv".
Examples:
imapsync ... --user1 Foo --subfolder2 FooArchiv --delete2 --delete2foldersonly "FooArchiv"
imapsync ... --user1 Bar --subfolder2 BarArchiv --delete2 --delete2foldersonly "BarArchiv"
=======================================================================
Q. How can I restore a complete account archived in a subfolder, like
with the option --subfolder2?
R. Use --subfolder1
--subfolder1 str : Syncs the host1 folders hierarchy under folder str
to the root hierarchy of host2.
It's the couterpart of a sync done by --subfolder2
when doing it in the reverse order.
Backup/Restore scenario:
Use --subfolder2 str for a backup to the folder str
on host2. Then use --subfolder1 str for restoring
from the folder str, after inverting
host1/host2 user1/user2 values.
Examples:
imapsync ... --user2 Foo --subfolder1 FooArchiv
imapsync ... --user2 Bar --subfolder1 BarArchiv
=======================================================================
Q. How to move emails from one IMAP folder to another either on the
same IMAP server or a different one?
For example, move all messages older than 1 year from INBOX to Archive.
same IMAP server or a different one?
For example, all messages older than 1 year, move from INBOX to Archive.
R1. Solution:
@ -67,12 +100,12 @@ R2. See also file FAQ.Folders_Mapping.txt
https://imapsync.lamiral.info/FAQ.d/FAQ.Archiving.txt
=======================================================================
Q. Can imapsync be used to maintain a local offline copy of a
mailbox from host1, eg for backup purposes, so that if the
server fails, then the mailbox could be reinstated,
ideally without requiring a second IMAP host?
Q. Can imapsync be used to maintain and restore a local offline copy
of a mailbox, eg for backup purposes, using Mbox or Maildir
format, so that if the server fails, then the mailbox could be
reinstated?
R1. No. Imapsync plays with imap servers only.
R1. No. Imapsync plays with IMAP servers only.
R2. Imapsync can't but rick-sanders-imap-tools can!
See https://github.com/andrewnimmo/rick-sanders-imap-tools
@ -88,6 +121,23 @@ R2. Imapsync can't but rick-sanders-imap-tools can!
is more dangerous than doing no backups at all. No backups makes
people act in a safer way, well, usually...
=======================================================================
=======================================================================
R3. Use ImportExportTools for Mozilla Thunderbird by Paolo Kaosmos.
ImportExportTools does not do IMAP as a destination.
=======================================================================
Q. How to archive a whole year in a subfolder?
R.
imapsync ... --search "SENTSINCE 1-Jan-2018 SENTBEFORE 31-Dec-2018" \
--folder2 ARCHIVE_2018 --justfolders --dry
=======================================================================
Q. How to archive a whole year in subfolders but without subsubfolders?
imapsync ... --search "SENTSINCE 1-Jan-2018 SENTBEFORE 31-Dec-2018" \
--sep2 _ --regextrans2 's{(.*)}{Archive_$1_2018}' --justfolders --dry
=======================================================================
=======================================================================

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Big_Mailbox.txt,v 1.2 2018/07/25 10:37:30 gilles Exp gilles $
$Id: FAQ.Big_Mailbox.txt,v 1.4 2019/07/31 10:37:15 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -10,24 +10,36 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Big_Mailbox.txt
Imapsync tips to deal with huge mailboxes
=====================================================================
Questions answered in this FAQ are:
Q. How to deal with huge mailboxes, whose size is over dozens of GB?
Now the questions again with their answers.
=====================================================================
Q. How to deal with huge mailboxes, whose size is over dozens of GB?
R. It should be ok with imapsync. In case imapsync seems to stall
when sizing the folders or before syncing a huge folder and
you wander if it is doing something or just frozen, you can
add option --debugimap. Option --debugimap will show what is
currently done, it's quite a big output but it helps waiting,
saying to ourself
"ok it's long but it's working, let's wait a little more".
The real purpose of --debugimap is to show genuine IMAP
commands used and their responses.
R1. It should be ok with imapsync.
In case imapsync seems to stall when sizing the folders or before
syncing a huge folder and you wander wether it is doing something or
just frozen, you can add option --debugimap. Option --debugimap shows
what is currently done, it's quite a big output but it helps waiting,
saying to ourselves "ok it's long but it's working, let's wait a
little more". The real purpose of --debugimap is to show genuine IMAP
commands used and their responses. The problem with --debugimap is
that it is very verbose and so with a big mailbox it generates a very
BIG logfile.
R2. If it is not ok with imapsync then consider spliting the whole
sync into smaller chunks using --search
For example, select messages only for a given year:
...
..imapsync ... --search "SENTSINCE 1-Jan-2017 SENTBEFORE 31-Dec-2017"
imapsync ... --search "SENTSINCE 1-Jan-2018 SENTBEFORE 31-Dec-2018"
imapsync ... --search "SENTSINCE 1-Jan-2019 SENTBEFORE 31-Dec-2019"
=====================================================================
=====================================================================

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Dates.txt,v 1.10 2019/05/27 14:26:39 gilles Exp gilles $
$Id: FAQ.Dates.txt,v 1.11 2019/12/23 12:46:50 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -26,7 +26,11 @@ Q. We have found that the time and date displayed have been changed to
R. This is the case by default with some email readers like:
- Outlook 2003
- Ipad
- Iphone
- spark https://sparkmailapp.com/ (iphone app)
- Edison mail https://apps.apple.com/us/app/email-edison-mail/id922793622 (iphone app)
- ...
but not with:
- Mutt
@ -37,9 +41,9 @@ but not with:
First, a thing to keep in mind.
Imapsync does not touch any byte of messages unless told to do so by
special options like --regexmess or --pipemess. Messages on both
parts should be exactly identical because imapsync does a verbatim
sync of all messages, by default.
special and rarely used options like --regexmess or --pipemess.
Messages on both parts should be exactly identical because imapsync
does a verbatim sync of all messages, by default.
Now I explain the whole picture about dates of messages.

65
FAQ.d/FAQ.Docker.txt Normal file
View File

@ -0,0 +1,65 @@
#!/bin/cat
# $Id: FAQ.Docker.txt,v 1.6 2019/12/11 15:39:14 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
https://imapsync.lamiral.info/FAQ.d/FAQ.Docker.txt
=======================================================================
Installing and using imapsync docker image
=======================================================================
Questions answered in this FAQ are:
Q. How can I install and use the imapsync Docker image on my system?
Q. How can I install or update only the imapsync Docker image on my system?
Q. Where is the imapsync Docker hub location?
Q. Any tips for the Docker Mailcow distribution?
Now the questions again with their answers.
=======================================================================
Q. How can I install and use the imapsync Docker image on my system?
R. Install Docker on your system. Once Docker is installed on your system,
all you have to do in order to run imapsync is the command line:
docker run gilleslamiral/imapsync imapsync <usual imapsync arguments>
=======================================================================
Q. How can I install or update only the imapsync Docker image on my system?
R. To install or update the imapsync image, run:
docker pull gilleslamiral/imapsync
=======================================================================
Q. Where is the imapsync Docker hub location?
R. Here:
https://hub.docker.com/r/gilleslamiral/imapsync/
=======================================================================
Q. Any tips for the Docker Mailcow distribution?
R. With the Mailcow distribution, imapsync is running inside a Docker
container. Quoting Mathilde:
To make it work with Mailcow, options should be added like this:
--regexflag=s/\\Indexed//gi
Without spaces, without quotes.
See the original Mathilde's comment:
https://github.com/imapsync/imapsync/issues/201#issuecomment-559500077
=======================================================================
=======================================================================

View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: FAQ.Domino.txt,v 1.10 2018/05/24 11:34:30 gilles Exp gilles $
# $Id: FAQ.Domino.txt,v 1.12 2019/10/31 23:13:31 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -10,9 +10,23 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Domino.txt
Imapsync tips for Domino.
=======================================================================
Questions answered in this FAQ are:
Q. How to use imapsync from Domino Notes to XXX?
Q. How to use imapsync from XXX to Domino Notes?
Q. Whan I use --maxage imapsync sees no messages at all.
What can I do?
Q. My usual email software client like Thunderbird sees more messages
than imapsync. How can it be possible?
Now the questions again with their answers:
=======================================================================
Q. From Domino Notes to XXX
Q. How to use imapsync from Domino Notes to XXX?
R1. Use --domino1, like this:
@ -30,7 +44,7 @@ On Unix use:
imapsync ... --sep1 '\' --prefix1 '' --messageidnodomain
=======================================================================
Q. From XXX to Domino Notes
Q. How to use imapsync from XXX to Domino Notes
R1. Use --domino2, like this:
@ -89,6 +103,28 @@ For Domino 853FP6 on Linux, we used this command on Unix:
--prefix2 "" --sep2 "\/" --messageidnodomain \
--regexmess 's{\A(.*?(?! ^$))^Date:(.*?)$}{$1Migratedbyus:$2\nx-MailDate:$2}gxms'
=======================================================================
Q. Whan I use --maxage imapsync sees no messages at all.
What can I do?
R. Use --noabletosearch
imapsync ... --noabletosearch
Same thing with --minage
=======================================================================
Q. My usual email software client like Thunderbird sees more messages
than imapsync. How can it be possible?
R. (Issue given and solved by Falko Veith)
"As you might know, it is possible to replicate databases, aka mailboxes,
across domino servers. THAT is the explanation. Thunderbird and some Notes
clients may be connected to one server and imapsync to another.
As funny and simply the solution is, as mysterious is why those two
databases are not completely in sync - new emails are replicated but not
the old ones. One mystery solved - and a new one to go.
Thanks to Falko Veith for this question and the answer!
=======================================================================

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Dovecot.txt,v 1.6 2018/05/24 11:34:30 gilles Exp gilles $
$Id: FAQ.Dovecot.txt,v 1.7 2019/09/25 09:25:52 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -11,6 +11,15 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Dovecot.txt
=======================================================================
Questions answered in this FAQ are:
Q. Subfolders are not created by imapsync and the error is
"Mailbox doesn't allow inferior mailboxes"
Q. How to migrate to Dovecot with an admin/MasterUser account?
Now the questions again with their answers.
=======================================================================
Q. How to migrate to Dovecot with an admin/MasterUser account?
@ -21,5 +30,23 @@ R. Dovecot uses the same syntax as uw-imap
To setup a Dovecot MasterUser see
http://wiki2.dovecot.org/Authentication/MasterUsers
=======================================================================
Q. Subfolders are not created by imapsync and the error is
"Mailbox doesn't allow inferior mailboxes"
R. Dovecot usually supports subfolders with messages and subfolders,
it's a Dovecot configuration issue.
If you can change the Dovecot configuration dovecot.conf,
then try this:
mail_location = maildir:~/Maildir:LAYOUT=fs
See details at:
https://superuser.com/questions/813362/sub-folders-in-dovecot
https://wiki2.dovecot.org/MailLocation/Maildir
=======================================================================
=======================================================================

View File

@ -1,5 +1,5 @@
$Id: FAQ.Exchange.txt,v 1.50 2019/04/02 09:29:38 gilles Exp gilles $
$Id: FAQ.Exchange.txt,v 1.57 2019/12/04 18:26:28 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -52,10 +52,6 @@ Q. From XXX to Exchange 2010/2013 or Office365 I get this error message
Q. From XXX to Exchange 2010 or 2013 or Office365 the flag Flagged does
not seem to be well synced. What can I do?
Q. Exchange and Office365 have throttle mechanisms to limit any huge
usage. Sometimes imapsync transfers are too stressful for servers.
How to deal with that?
Q. How to migrate from or to Exchange 2007/2010/2013 with an
admin/authuser account?
@ -71,7 +67,10 @@ Q. Couldn't create folder [trash] "Mailbox already exists".
Q. Migrating to Exchange 201O, messages get date of the transfer,
this is bad for sorting and listing. What can I do?
Q. How to sync from any to Exchange2007?
Q. How to sync from any to Exchange 2007?
Q. Exchange 2007 folders ending with a space cause an imapsync crash.
"Could not select: socket closed while reading data from server"
Q. How to sync from Microsoft Exchange 2000 IMAP4rev1 server?
@ -104,33 +103,37 @@ On Windows, use:
imapsync.exe ... --exchange2
or use (before imapsync release 1.836):
which is equivalent in imapsync release 1.970 to:
imapsync.exe ... ^
--maxsize 10000000 ^
--maxsize 10_000_000 ^
--maxmessagespersecond 4 ^
--regexflag "s/\\Flagged//g" ^
--disarmreadreceipts ^
--regexmess "s,(.{9900}),$1\r\n,g"
--regexflag "s/\\Flagged//g" ^
--regexmess "s,(.{10239}),$1\r\n,g"
On Unix, use:
imapsync ... --exchange2
or use (before imapsync release 1.836):
which is equivalent in imapsync release 1.970 to:
imapsync ... \
--maxsize 10000000 \
--maxlinelength 9900 \
--maxsize 10_000_000 \
--maxmessagespersecond 4 \
--maxlinelength 10239 \
--regexflag 's/\\Flagged//g' \
--disarmreadreceipts \
--maxlinelengthcmd 'reformime -r7'
On Linux, to get the "reformime" command, install the "maildrop" package.
In case you don't have it you can still use
--regexmess 's,(.{9900}),$1\r\n,g'
instead of --maxlinelengthcmd 'reformime -r7'
--regexmess 's,(.{10239}),$1\r\n,g'
On Linux, you can also try the "reformime" command
that can be used like:
imapsync ... --maxlinelengthcmd "reformime -r7"
To get reformime, install the "maildrop" package.
=======================================================================
Q. How to sync from Office365 to XXX?
@ -143,7 +146,12 @@ On Unix, use:
imapsync ... --office1
Option --office1 is like (release 1.970):
imapsync ... --host1 outlook.office365.com \
--ssl1 \
--exclude "^Files$"
=======================================================================
Q. How to sync from XXX to Office365
@ -158,36 +166,27 @@ R. Here is a command line resume that solves most encountered issues when
next Q/R sections.
On Windows, use:
imapsync.exe ... --office2
or use (before imapsync release 1.836):
imapsync.exe ... ^
--maxsize 45000000 ^
--maxmessagespersecond 2 ^
--regexflag "s/\\Flagged//g" ^
--disarmreadreceipts ^
--regexmess "s,(.{10500}),$1\r\n,g"
On Unix, use:
imapsync ... --office2
or use (before imapsync release 1.836):
which is equivalent to (in imapsync release 1.870):
imapsync ... \
--host2 outlook.office365.com \
--ssl2 \
--maxsize 45000000 \
--maxlinelength 10500 \
--maxmessagespersecond 2 \
--regexflag 's/\\Flagged//g' \
--maxmessagespersecond 4 \
--disarmreadreceipts \
--maxlinelengthcmd 'reformime -r7'
On Linux, to get the "reformime" command, install the "maildrop" package.
In case you don't have it you can use
--regexmess 's,(.{10500}),$1\r\n,g'
instead of --maxlinelengthcmd 'reformime -r7'
--regexmess "s,(.{10239}),$1\r\n,g" \
--f1f2 "Files=Files_renamed_by_imapsync"
On Linux, you can also try the "reformime" command
that can be used like:
imapsync ... --maxlinelengthcmd "reformime -r7"
To get reformime, install the "maildrop" package.
=======================================================================
Q. For Office365 I have double and triple checked the username and
@ -288,13 +287,23 @@ Q. Office365 throttles the sync and says:
"Request is throttled. Suggested Backoff Time: 299961 milliseconds".
What can I do with that?
R. To solve the throttles issues from 0365, there's two solutions:
R. Exchange and Office365 have throttle mechanisms to limit any huge
usage. Sometimes imapsync transfers are too stressful for servers.
The message
"Request is throttled. Suggested Backoff Time: 299961 milliseconds"
comes from the imap Office365 server, imapsync just reports it
before being disconnected from it.
To solve the throttles issues from 0365, there are two solutions
at least:
R1. Call Microsoft Office365 and ask them to remove the limits on your
mailboxes. That's not a joke, they do it for 90 days usually,
sometimes only after you reach the second technician you call,
the first one been not enough competent to understand what you're
talking about.
the first one usually been not enough competent to understand
what you're talking about (I would be glad to remove this bad
fact).
R2. Play with options --maxbytespersecond or --maxmessagespersecond
or --exitwhenover
@ -308,6 +317,14 @@ R2. Play with options --maxbytespersecond or --maxmessagespersecond
I don't know the upper value that avoid the default throttling from 0365
and I guess it changes over time.
R3. For Exchange, in case throttle appears anyway, fix them with:
https://technet.microsoft.com/en-us/library/jj863577(v=exchg.150).aspx
See also:
http://www.linux-france.org/prj/imapsync_list/msg02072.html
Sometimes restarting the Exchange server is needed to take
into account the change in the configuration.
=======================================================================
Q. Office365 refuses to create the folder named "Files" with the error
"NO Folder name is reserved". What happens?
@ -323,6 +340,19 @@ R0. To fix this, add --exclude Files
imapsync ... --exclude Files
If you use --office1 then imapsync will add this exclusion
automatically like using the option:
imapsync ... --exclude "^Files$"
If you use --office2 then imapsync will add a renaming of any
"Files" folder on host1, like using the option:
imapsync ... --f1f2 "Files=Files_renamed_by_imapsync"
The host2 account ends up with a folder named
"Files_renamed_by_imapsync", but no complaining.
R1. This folder "Files" seems to be a standard folder in Exchange Online,
but it is not. The folder contains all attachments in every email
that is in the mailbox, but without any headers.
@ -455,7 +485,7 @@ 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.
If on Linux, there is a good Python script in the tarball that can
On Linux, there is a good Python script in the tarball that can
fix several things that Exchange or O365 have issues with.
Use it like this:
@ -486,24 +516,6 @@ With STORE it sets and gets the "\Flagged" flag everywhere.
Thanks to Dave Murray and Simon Savva for reporting and solving
this issue.
======================================================================
Q. Exchange and Office365 have throttle mechanisms to limit any huge
usage. Sometimes imapsync transfers are too stressful for servers.
How to deal with that?
R. It looks like limiting 4 messages per second is enough to avoid
the throttle limits.
imapsync ... --maxmessagespersecond 4
In case throttle appears anyway, fix them with:
https://technet.microsoft.com/en-us/library/jj863577(v=exchg.150).aspx
See also:
http://www.linux-france.org/prj/imapsync_list/msg02072.html
Sometimes restarting the Exchange server is needed to take
into account the change in the configuration.
======================================================================
Q. How to migrate from or to Exchange 2007/2010/2013 with an
admin/authuser account?
@ -580,6 +592,22 @@ and again - don't use administrator@domain.com - as that will never
work because IMAP LOGIN is disabled for that account apparently
under all circumstances.
Note from Noxyron
https://github.com/imapsync/imapsync/issues/136#issuecomment-543761463
Hi guys. For a long time I could not start synchronization, I use admin rights
and the --authuser2 switch when I migrated from Mdaemon to Exchange2016.
I always got the error:
"Host2 failure: Error login on [my.exchange.com] with user [mydomainuser] auth [PLAIN]: 2 NO AUTHENTICATE failed."
In order for ImapSync to login to the users mailbox using administrator rights,
you need to give for the administrator the permissions to the mailbox of this
user with the command:
“Add-MailboxPermission -Identity DomainUser -User DomainAdmin -AccessRights FullAccess -InheritanceType All -AutoMapping $false”
using Exchange Management Shell.
Without this, synchronization will not work.
Please, add this comment to the FAQ.Exchange.txt
(done!)
======================================================================
Q. How to migrate from or to Office 365 with an admin/authuser account?
@ -690,7 +718,7 @@ It's often shorter to change one server than thousands clients
so R1 might be easier to do.
======================================================================
Q. How to sync from any to Exchange2007?
Q. How to sync from any to Exchange 2007?
Several problems:
- Big messages: increase the "send- and receive-connector"
@ -701,13 +729,22 @@ 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
Any user having time to spend to debug Exchange 2007 with imapsync
is welcome.
R2. Other solution
Two users succeeded by using "MS Transporter Suite" (which is closed
expensive non-free software).
=======================================================================
Q. Exchange 2007 folders ending with a space cause an imapsync crash.
"Could not select: socket closed while reading data from server"
R. Using another imap tool like Thunderbird or Outlook, change the
folder name to exclude the trailing space.
See https://github.com/imapsync/imapsync/issues/154
======================================================================
Q. How to sync from Microsoft Exchange 2000 IMAP4rev1 server?

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Folders_Mapping.txt,v 1.19 2019/03/04 21:21:18 gilles Exp gilles $
$Id: FAQ.Folders_Mapping.txt,v 1.20 2019/07/27 20:04:57 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -11,10 +11,24 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt
Imapsync tips about changing folders names.
=======================================================================
Folders names are by default reproduced identical except for
the prefix and the separator which are automatically adapted
By default, imapsync syncs all folders, one by one, in alphanumeric order.
By default, folders names from host1 are reproduced identical on host2,
except for the prefix and the separator which are automatically adapted
for host2.
The IMAP protocol has a specific way to code folders names,
especially when these names use non-ascii 7bit characters.
This encoding is called utf7imap.
Imapsync uses the same encoding as IMAP: utf7imap.
In order to well specify folders names on the command line, imapsync
prints the complete folder list of both sides at the beginning of each run.
The left column is the encoding you have to use, without the first enclosing
square brackets [], the right column is the human utf8 view.
This document gives most examples with the powerful but complex
option --regextrans2. Before using --regextrans2 you should
consider using --automap and --f1f2 because they are simpler

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Folders_Selection.txt,v 1.7 2018/05/24 11:34:30 gilles Exp gilles $
$Id: FAQ.Folders_Selection.txt,v 1.8 2019/07/27 20:04:46 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -12,13 +12,17 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Selection.txt
By default, Imapsync syncs all folders, one by one, in alphanumeric order.
The IMAP protocol has a specific way to code folder names,
when these names use non-ascii 7bit characters.
Imapsync uses the same code as IMAP.
In order to well specify them on the command line you will be
helped by the complete folder list printed by imapsync at each run.
The left column is what you have to use without the first enclosing
square brackets, the right column is the human utf8 view.
The IMAP protocol has a specific way to code folders names,
especially when these names use non-ascii 7bit characters.
This encoding is called utf7imap.
Imapsync uses the same encoding as IMAP, utf7imap.
In order to well specify folders names on the command line, imapsync
prints the complete folder list of both sides at the beginning of each run.
The left column is the encoding you have to use, without the first enclosing
square brackets [], the right column is the human utf8 view.

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Folders_Sizes.txt,v 1.2 2018/05/24 11:34:30 gilles Exp gilles $
$Id: FAQ.Folders_Sizes.txt,v 1.3 2019/07/25 15:57:04 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -9,6 +9,15 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Sizes.txt
Imapsync tips to know folders sizes.
=======================================================================
Questions answered in this FAQ are:
Q. How can I know the size of all folders before launching a sync?
Q. The folders sizes and the number of messages don't match between
the source mailbox and the destination mailbox.
Why and what can I do?
Now the questions again with their answers.
=======================================================================
@ -16,11 +25,54 @@ Q. How can I know the size of all folders before launching a sync?
R. Use --justfoldersizes option.
With --justfoldersizes option, imapsync displays the folder size
part of a run and then exits without doing any transfer:
With the --justfoldersizes option, imapsync evaluates and displays the
folders sizes on both sides and then exits without doing any transfer.
Example:
imapsync ... --justfoldersizes
=======================================================================
Q. The folders sizes and the number of messages don't match between
the source mailbox on host1 and the destination mailbox on host2.
Why and what can I do?
R. There are several reasons to explain the different counts between
source and destination after a sync.
1) The sync ended prematurely, before syncing all wanted folders.
Solution: run new syncs until completion.
2) There are messages on host2 that are not on host1, so host2 is
bigger than host1. Imapsync doesn't delete any message by default.
Solution: use --delete2 to have a strict sync by folder, ie,
delete messages on host2 that are not on host1.
3) There are folders on host2 that are not on host1, so host2 is
bigger. Imapsync doesn't delete any folder by default.
Solution: use --delete2folders to have a strict sync, ie,
delete folders on host2 that are not on host1.
4) There are duplicate messages on host1. Imapsync doesn't sync
duplicates by default. But it counts them and presents the number
found at the end on the line "Messages found duplicate on host1".
To sync duplicates, use option --useuid
--useuid has some caveats. See the documant FAQ.Duplicates.txt
for details about it at
https://imapsync.lamiral.info/FAQ.d/FAQ.Duplicates.txt
5) There are duplicate messages on host2 so host2 is
bigger than host1. Solution: use --delete2duplicates to delete
the host2 duplicates.
6) Cosmic rays...
The important part to take into account is the last lines of imapsync
if you encounter the line:
"The sync looks good, all X identified messages in host1 are on host2."
and also no unidentified messages.
=======================================================================
=======================================================================

65
FAQ.d/FAQ.GDPR.txt Normal file
View File

@ -0,0 +1,65 @@
$Id: FAQ.GDPR.txt,v 1.4 2019/09/12 10:07:27 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
https://imapsync.lamiral.info/FAQ.d/FAQ.GDPR.txt
=======================================================================
Imapsync and the GDPR, General Data Protection Regulation UE 2016/679
=======================================================================
Questions answered in this FAQ are:
Q. Can you explain the compliance of imapsync with GDPR?
[General Data Protection Regulation UE 2016/679]
Now the questions again with their answers.
=======================================================================
Q. Can you explain the compliance of imapsync with GDPR?
[General Data Protection Regulation UE 2016/679]
R. 1) To know whether a newer imapsync exists or not,
imapsync does a http GET to the file VERSION at
http://imapsync.lamiral.info/VERSION
Via the HTTP User-agent header it also sends:
* the imapsync release
* the Perl version
* the Mail::IMAPClient version
* the Operating System
* the context ( Standard, CGI, or Docker )
You can remove this behavior by adding the option --noreleasecheck
on the command line or by setting $releasecheck = 0 in the source code.
Check also https://nvd.nist.gov/vuln/detail/CVE-2013-4279
See also https://imapsync.lamiral.info/#NUMBERS
2) Each imapsync run generates a logfile that corresponds exactly
to the output printed on the console during the run.
This log file contains data from the mailboxes,
not the content messages, not the passwords but
it contains the folders names and the login names.
Remove the log or use the option --nolog to avoid logging.
3) In case you purchase imapsync:
3.1) the data collected during the purchase,
Name, Company Name, Postal Address, VAT number, Price,
will be used to edit the invoice. I (Gilles LAMIRAL) keep a copy
of the invoice for accounting.
3.2) Once in a while, I send an email to the buyers announcing
a new imapsync is released and where to get it.
3.3) If the customer is a professional inside the EU,
I also use his company VAT number and the amount to declare it
to the Customs each month, before the 10th of the month, at
https://pro.douane.gouv.fr/
It's mandatory, it's the law inside EU and the fine is 750 EUR/month
when it is not done or not well done a month.
=======================================================================
=======================================================================

View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: FAQ.General.txt,v 1.240 2018/11/26 11:49:56 gilles Exp gilles $
# $Id: FAQ.General.txt,v 1.242 2019/12/11 20:28:33 gilles Exp gilles $
=======================================================================
General FAQ for imapsync
@ -57,8 +57,8 @@ Q. How to verify imapsync.exe I got is the right file bit per bit?
Q. Folders are not created on host2. What happens?
Q. I am interested in creating a local clone of the IMAP on a LAN
server for faster synchronizations, email will always be delivered
Q. I am interested in creating a local clone of the IMAP on a LAN
server for faster synchronizations, email will always be delivered
to the remote server and so the synchronization will be one way - from
remote to local. How suited is imapsync for continuous one-way
synchronization of mailboxes? Is there a better solution?
@ -288,11 +288,11 @@ R. Add also --nofoldersizes since the default behavior is to compute
useful to see what has to be done on each folder and guess when
the transfer will end (ETA).
R. Add also --noexpungeaftereach if you use --delete.
R. Add also --noexpungeaftereach if you use --delete1.
But be warn that an interrupted transfer can lose messages
on host2 in a second run if you use a (silly) combination like
on host2 in a second run if you use a (silly) combination like:
imapsync ... --delete --noexpunge --noexpungeaftereach --expunge2
imapsync ... --delete1 --noexpunge1 --noexpungeaftereach --expunge2
Notes about --useuid

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Gmail.txt,v 1.58 2019/04/25 10:41:12 gilles Exp gilles $
$Id: FAQ.Gmail.txt,v 1.65 2019/12/04 18:26:00 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -67,7 +67,18 @@ it has to be allowed in the Gmail configuration part:
-> IMAP Access
-> Enable IMAP
Also:
Also, there is the authentication issue to consider.
There are three different ways to authenticate to Gmail with Imapsync,
either:
* "Access for less secure apps"
* "2-step verification"
* XOauth
For the last one, XOauth, see the document
https://imapsync.lamiral.info/FAQ.d/FAQ.XOAUTH2.txt
1) "Access for less secure apps" is turned ON
-> Verify 2-step verification is OFF
https://myaccount.google.com/security?hl=en&pli=1&nlr=1#signin
@ -75,6 +86,24 @@ it has to be allowed in the Gmail configuration part:
https://www.google.com/settings/security/lesssecureapps
https://support.google.com/accounts/answer/6010255?hl=en
Sometimes, with Gsuite, the login for the users are ok with imapsync
for a while then they become forbidden with
"failure: Error login on [imap.gmail.com] with user [xxx] auth [LOGIN]:
2 NO [AUTHENTICATIONFAILED] Invalid credentials (Failure)"
In that case, use:
https://admin.google.com/AdminHome?hl=fr#ServiceSettings/notab=1&service=securitysetting&subtab=lesssecureappsaccess
to allow "Access for less secure apps to all users"
(Thanks to Sébastien R. for this input)
2) "2-step verification" is turned ON
Follow
https://support.google.com/accounts/answer/185833?hl=en
Even if Google says "Every App Password is only used once",
it's false and the password can be used many times.
=======================================================================
Q. Even after several syncs the number of messages differs
largely between imapsync and the Gmail web interface.
@ -91,7 +120,7 @@ multiple messages and it doesn't match what imapsync presents.
Q. How many days does it take to transfer X GB?
R. Basically it takes X days to transfer X GB per account.
Gmail has usage limits per day and use throttlers when
Gmail has usage limits per day and use throttles when
they are overtaken
http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
From the previous link:
@ -124,25 +153,30 @@ imapsync \
--password2 gmailsecret2 \
--gmail1 --gmail2
Or, replacing what does --gmail1 --gmail2 (values are from imapsync 1.882):
Or, replacing what does --gmail1 --gmail2 (values are from imapsync 1.970):
imapsync \
--host1 imap.gmail.com \
--ssl1 \
--user1 account1@gmail.com \
--password1 gmailsecret1 \
--host2 imap.gmail.com \
--ssl2 \
--user2 account2@gmail.com \
--password2 gmailsecret2 \
--maxbytespersecond 20_000 \
--maxbytesafter 1_000_000_000 \
--maxsleep 2 \
--automap \
--exclude "\[Gmail\]$"
--maxsleep 2 \
--synclabels \
--resynclabels \
--exclude "\[Gmail\]$" \
--folderlast "[Gmail]/All Mail"
With --gmail1 --gmail2 you can override the parameters
that are activated by them, for example:
imapsync ... --gmail1 --gmail2 --maxbytespersecond 50_000
imapsync ... --gmail1 --gmail2 --maxbytespersecond 50_000 --noautomap
Explanations:
@ -197,48 +231,40 @@ R. Use the following example:
imapsync --host1 mail.oldhost.com \
--user1 my_email@oldhost.com \
--password1 password \
--password1 passwordold \
--user2 my_email@gmail.com \
--password2 password \
--password2 gmailsecret \
--gmail2
Or, replacing what does --gmail2 (values are from imapsync 1.921):
Or, replacing what does --gmail2 (values are from imapsync 1.970):
(For Linux only because of the quotes)
imapsync --host1 mail.oldhost.com \
--user1 my_email@oldhost.com \
--password1 password \
--password1 passwordold \
--host2 imap.gmail.com \
--ssl2 \
--user2 my_email@gmail.com \
--password2 password \
--password2 gmailsecret \
--maxbytespersecond 20_000 \
--maxbytesafter 1_000_000_000 \
--automap \
--expunge1 \
--addheader \
--maxsleep 2 \
--maxsize 35_651_584 \
--automap \
--expunge1 \
--addheader \
--exclude "\[Gmail\]$" \
--regextrans2 "s/['\^\"\\\\]/_/g" \
--regextrans2 "s/[ ]+/_/g"
--regextrans2 's,\[Gmail\].,,' \
--regextrans2 's,^ +| +$,,g'
--regextrans2 's,/ +| +/,/,g'
--regextrans2 's/['"'"'\\^"]/_/g'
--folderlast "[Gmail]/All Mail"
Starting from imapsync 1.926 the last --regextrans2 replacing
all blanks, which was:
Starting from imapsync 1.926 a --regextrans2 replacing
all blanks, was:
--regextrans2 "s/[ ]+/_/g"
became
on Winwows, like:
imapsync.exe ... --regexflag "s,\\Seen,," --regexflag "s,,\\Seen ,"
on Linux, like:
imapsync ... --regexflag 's,\\Seen,,' --regexflag 's,,\\Seen ,'
With --gmail2 you can override the parameters
that are activated by them, for example:
@ -317,27 +343,30 @@ Q. How to synchronize from Gmail to XXX?
R. Use this example:
imapsync \
--user1 gilles.lamiral@gmail.com \
--user1 foo@gmail.com \
--password1 gmailsecret \
--host2 localhost \
--user2 tata \
--gmail1
Or, replacing what does --gmail1 (values are from imapsync 1.882):
Or, replacing what does --gmail1 (values are from imapsync 1.970):
imapsync \
--host1 imap.gmail.com \
--user1 gilles.lamiral@gmail.com \
--ssl1 \
--user1 foo@gmail.com \
--password1 gmailsecret \
--host2 localhost \
--user2 tata \
--password2 tatasecret \
--maxbytespersecond 20_000 \
--maxbytespersecond 40_000 \
--maxbytesafter 2_500_000_000
--automap \
--maxsleep 2 \
--skipcrossduplicates \
--useheader="X-Gmail-Received" \
--useheader "Message-Id" \
--automap \
--regextrans2 "s,\[Gmail\].,," \
--skipcrossduplicates \
--folderlast "[Gmail]/All Mail"
With --gmail1 you can override the parameters
@ -347,10 +376,10 @@ imapsync ... --gmail1 --maxbytespersecond 50_000 --noskipcrossduplicates --noaut
Explanations:
--maxbytespersecond 20_000 ( 20 kBytes/s ) option is here to avoid
--maxbytespersecond 40_000 ( 40 kBytes/s ) option is here to avoid
locking or errors when imap transfers exceed Gmail maximum limit.
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
--maxbytespersecond 20_000 is not mandatory in the sense Gmail may
--maxbytespersecond 40_000 is not mandatory in the sense Gmail may
allow you to use an upper value than 2 GBytes per 24h without
disconnections.
@ -475,7 +504,7 @@ duplicate message as a new message, giving imapsync a new UID for this
message, and throw it away because it already has it. Gmail
will do this at each run so imapsync will always try to copy the
message, and Gmail will always accept and throw away the new copy. It
ends up with no duplicates on Gmail but a waste of bandwith and time,
ends up with no duplicates on Gmail but a waste of bandwidth and time,
which is the opposite goal of --usecache implied by --useuid.

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Kerio.txt,v 1.1 2019/06/26 22:14:50 gilles Exp gilles $
$Id: FAQ.Kerio.txt,v 1.2 2019/11/15 11:33:14 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -37,4 +37,10 @@ Kerio at host2
See also:
https://github.com/imapsync/imapsync/pull/53
If you get the error
"Host failure: Error login on ... auth [X-MASTERAUTH]: 2 BAD AUTHENTICATE Unknown authentication method"
Then admin authentication may not be activated yet. See:
https://forums.gfi.com/index.php?t=msg&th=28458&goto=118447&#msg_118447
=======================================================================

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Massive.txt,v 1.29 2019/06/18 16:38:06 gilles Exp gilles $
$Id: FAQ.Massive.txt,v 1.30 2019/07/24 12:01:41 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -45,8 +45,8 @@ R1. First you have to consider several periods. There is the global
the old accounts but nothing prevents you from starting to sync
the old accounts, as they are, to the new accounts.
With tons of gigabytes to transfer, this period may be the longest one.
There is nothing more to launch the presyncs and watch until
the round is finished.
There is nothing more than launching the presyncs and monitoring them
until the round is finished.
The last period is the final sync period where only the last
changes of the mailboxes need to be synced in order to switch
@ -54,9 +54,11 @@ R1. First you have to consider several periods. There is the global
R2. To estimate the presync period, consider the mean imapsync transfer
rate to be around 340 Kbytes/s, ie, 2.8 Mbps, no matter the local
link bandwidth.
link bandwidth.
It's a mean, measured upon various different syncs, coming from
the online interface /X.
the online service /X where the network card flow rate is 100 Mbps
and the provider bandwidth is also 100 Mbps. Max seen is a transfer
at 21 Mbps.
At 340 Kbytes/s,
1 TB to transfer and one sync at a time will end in 35 days (1024^3/340/3600/24).
@ -184,6 +186,9 @@ Here comes some measurements.
During iftop, press the h to see the display commands available,
every single feature is useful! Press h again and try each one.
My preferred display combination is by typing
t p >
meaning: one line per connection, show port numbers, sort by destination.
On Windows 8.1 Windows 10 Windows 2012 R2 Windows 2016,

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Messages_Selection.txt,v 1.14 2018/05/24 11:34:30 gilles Exp gilles $
$Id: FAQ.Messages_Selection.txt,v 1.15 2019/07/24 12:02:11 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -172,10 +172,34 @@ Q. What are the selection criteria available with --search option?
R. The list of search criteria are listed below, an excerpt from RFC3501.
http://www.faqs.org/rfcs/rfc3501.html
6.4.4. SEARCH Command
https://tools.ietf.org/html/rfc3501#section-6.4.4
...
The SEARCH command searches the mailbox for messages that match
the given searching criteria. Searching criteria consist of one
or more search keys. The untagged SEARCH response from the server
contains a listing of message sequence numbers corresponding to
those messages that match the searching criteria.
When multiple keys are specified, the result is the intersection
(AND function) of all the messages that match those keys. For
example, the criteria DELETED FROM "SMITH" SINCE 1-Feb-1994 refers
to all deleted messages from Smith that were placed in the mailbox
since February 1, 1994. A search key can also be a parenthesized
list of one or more search keys (e.g., for use with the OR and NOT
keys).
In all search keys that use strings, a message matches the key if
the string is a substring of the field. The matching is
case-insensitive.
The defined search keys are as follows. Refer to the Formal
Syntax section for the precise syntactic definitions of the
arguments.
<sequence set>
Messages with message sequence numbers corresponding to the
specified message sequence number set.
ALL
All messages in the mailbox; the default initial key for
ANDing.
@ -306,6 +330,89 @@ http://www.faqs.org/rfcs/rfc3501.html
UNSEEN
Messages that do not have the \Seen flag set.
...
search = "SEARCH" [SP "CHARSET" SP astring] 1*(SP search-key)
; CHARSET argument to MUST be registered with IANA
...
search-key = "ALL" / "ANSWERED" / "BCC" SP astring /
"BEFORE" SP date / "BODY" SP astring /
"CC" SP astring / "DELETED" / "FLAGGED" /
"FROM" SP astring / "KEYWORD" SP flag-keyword /
"NEW" / "OLD" / "ON" SP date / "RECENT" / "SEEN" /
"SINCE" SP date / "SUBJECT" SP astring /
"TEXT" SP astring / "TO" SP astring /
"UNANSWERED" / "UNDELETED" / "UNFLAGGED" /
"UNKEYWORD" SP flag-keyword / "UNSEEN" /
; Above this line were in [IMAP2]
"DRAFT" / "HEADER" SP header-fld-name SP astring /
"LARGER" SP number / "NOT" SP search-key /
"OR" SP search-key SP search-key /
"SENTBEFORE" SP date / "SENTON" SP date /
"SENTSINCE" SP date / "SMALLER" SP number /
"UID" SP sequence-set / "UNDRAFT" / sequence-set /
"(" search-key *(SP search-key) ")"
seq-number = nz-number / "*"
; message sequence number (COPY, FETCH, STORE
; commands) or unique identifier (UID COPY,
; UID FETCH, UID STORE commands).
; * represents the largest number in use. In
; the case of message sequence numbers, it is
; the number of messages in a non-empty mailbox.
; In the case of unique identifiers, it is the
; unique identifier of the last message in the
; mailbox or, if the mailbox is empty, the
; mailbox's current UIDNEXT value.
; The server should respond with a tagged BAD
; response to a command that uses a message
; sequence number greater than the number of
; messages in the selected mailbox. This
; includes "*" if the selected mailbox is empty.
seq-range = seq-number ":" seq-number
; two seq-number values and all values between
; these two regardless of order.
; Example: 2:4 and 4:2 are equivalent and indicate
; values 2, 3, and 4.
; Example: a unique identifier sequence range of
; 3291:* includes the UID of the last message in
; the mailbox, even if that value is less than 3291.
sequence-set = (seq-number / seq-range) *("," sequence-set)
; set of seq-number values, regardless of order.
; Servers MAY coalesce overlaps and/or execute the
; sequence in any order.
; Example: a message sequence number set of
; 2,4:7,9,12:* for a mailbox with 15 messages is
; equivalent to 2,4,5,6,7,9,12,13,14,15
; Example: a message sequence number set of *:4,5:7
; for a mailbox with 10 messages is equivalent to
; 10,9,8,7,6,5,4,5,6,7 and MAY be reordered and
; overlap coalesced to be 4,5,6,7,8,9,10.
See also the excellent "Introduction to IMAP" by Nick Babcock
https://nbsoftsolutions.com/blog/introduction-to-imap
See also "WITHIN Search Extension to the IMAP Protocol"
https://tools.ietf.org/html/rfc5032
...
search-key =/ ( "OLDER" / "YOUNGER" ) SP nz-number
; search-key defined in RFC 3501
4. Example
C: a1 SEARCH UNSEEN YOUNGER 259200
S: a1 * SEARCH 4 8 15 16 23 42
Search for all unseen messages within the past 3 days, or 259200
seconds, according to the server's current time.
=======================================================================
=======================================================================

View File

@ -0,0 +1,56 @@
#!/bin/cat
$Id: FAQ.Old_Style_Web_Design.txt,v 1.4 2019/11/25 13:08:31 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
https://imapsync.lamiral.info/FAQ.d/FAQ.Old_Style_Web_Design.txt
=======================================================================
Imapsync tips for Gmail accounts.
=======================================================================
Questions answered in this FAQ are:
Q. Why the imapsync website looks so old fashion?
Now the questions again with their answers.
=======================================================================
Q. Why the imapsync website looks so old fashion?
R. Once in a while I receive messages from people complaining about
the website style, not that much about the content by the way,
as people don't read.
I know the imapsync website has a grandmother style,
I'm not offended by complaints about it.
Here are several reasons it stays like that for now:
* I like to do things myself
* I like static web
* I'm proud to be w3c compliant
https://validator.w3.org/check?uri=https%3A%2F%2Fimapsync.lamiral.info
Very very few sites are w3c compliant, it's because all CMS frameworks aren't.
* I prefer to spend more time on the product itself than the showcase
* The product is a command line, a fancy website to sell a command line
makes more disappointed buyers
I agree I could do some sort of A/B experiment and see whether during
a month I sell more imapsync on a brand new style B site than
the current A one.
Besides, don't misunderstand buyers. The surprising thing about complainers
is that all are web designers, none is a user not in the webdesign branch.
I even received some phone call from a buyer saying: "I saw your website
and I told to myself: this can't be a fake one, the product must be a good one".
Another folk like me:
http://keyhut.com/pos.htm
(well, not w3c compliant, since only mad people try to be w3c compliant)

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.OnlineUI.txt,v 1.19 2019/01/28 10:59:16 gilles Exp gilles $
$Id: FAQ.OnlineUI.txt,v 1.20 2019/12/06 14:51:03 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -30,17 +30,17 @@ R0. Well, I don't know if asking the provider whether his online
R1. Some figures
Date of this report: 26 December 2018.
Date of this report: 6 December 2019.
The online imapsync service /X started 9 January 2017
(716 days of service).
(1061 days of service).
In average, /X has 20 users per day lunching in mean 6
different migrations, from one launch to many (hundreds).
In average, /X has 50 users per day lunching in mean 6
different migrations, from just one launch to many (hundreds).
The total volume /X transferred is around 45 TiB in more
than 111 thousands email imap migrations,
157 millions email messages.
The total volume /X transferred is around 101 TiB in more
than 219 thousands email imap migrations,
340 millions email messages.
R2. Pros & Cons
@ -54,23 +54,24 @@ the imap logins and passwords, can't be eavesdropped on the network.
Imapsync itself takes care about encryption for the imap sessions,
if possible: It tries SSL first on port 993, then TLS on port 143
if the servers announces TLS, then no encryption at all.
What is done with the source imap server host1 is independent
of what is done with the destination imap server host2.
Concerning encryption, what is done with the source imap server host1
is independent of what is done with the destination imap server host2.
At the date of 26 December 2018, there is no security problem
At the date of 6 December 2019, there is no security problem
detected or reported to me (Gilles LAMIRAL), so far.
Feel free to attack the service and feel free to report any
hole encountered. Have in mind I can watch what you try
from the server side.
from the server side and take measure if the service suffers from
your acts.
As the owner of the service, it could have been 48 000 pairs of
credentials collected and nearly 17 terabytes of email messages.
As the owner of the service, it could have been 219 000 pairs of
credentials collected and nearly 101 terabytes of email messages.
I haven't kept them but I can't prove I haven't. It's just trust,
like nearly every online service in the universe.
The imap server certificates are not checked (by default)
because too many imap servers are crappy configured regarding
certificates.
The imap server certificates are not checked for authenticity
(by default) because too many imap servers are crappy configured
regarding certified certificates.
This default behavior is chosen like this because users of /X
want their emails transferred, instead of being not transferred
@ -90,7 +91,7 @@ imapsync is just one of them.
Last point, who could be sure that no cracker cracked the online
hosts and that he isn't currently sniffing the credentials?
No one, I'm not sure myself, even if I do take care of that
No one, I'm not sure myself, even if I do take care of that
possibility. So changing the imap accounts passwords after
a sync is a safe and recommended practice!
@ -109,8 +110,8 @@ connections (imapsync stuff).
If the Browser/WebServer connection is timeout or ended,
the imapsync sync is also ended immediately by the remote
Apache https server. Technically, Apache sends a TERM signal,
to the imapsync process then wait some seconds before
Apache https server. Technically, Apache sends a TERM signal
to the imapsync process, then wait some seconds before
sending a KILL signal if it is still alive.
You can relaunch a sync again with "Sync!" button, at any time.
@ -126,8 +127,9 @@ parameters, same credentials, or imapsync will ignore the demand.
In other words, you can try safely to launch several parallel
runs between the same mailboxes. Open a new tab/windows with /X,
and start a same sync, it's safe, the /X will say, if any, that
there is already a current sync running.
and start the exact same sync. It's safe, the /X will say, if any, that
there is already a current sync running on them and it will present
the logfile running the sync like a "tail -f" command (isn't that magic?).
=====================================================================

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.POP3.txt,v 1.3 2018/05/24 11:34:30 gilles Exp gilles $
$Id: FAQ.POP3.txt,v 1.5 2019/07/27 20:18:37 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -25,11 +25,12 @@ Q. Can I use imapsync to migrate emails from pop3 server to imap server?
R1. No, but you can migrate emails from a pop3 server to an imap server
with the command line tool pop2imap:
http://www.linux-france.org/prj/pop2imap/
http://www.linux-france.org/prj/pop2imap/README
R2. Yes, sometimes, because many pop3 servers runs in parallel
with an imap server on exactly the same mailboxes. They serve
the same INBOX (imap serves INBOX and several other folders,
pop3 serves only INBOX).
the same INBOX, ie, imap serves INBOX and several other folders,
pop3 serves only INBOX.
So have a try with imapsync on the same host1.
=======================================================================
@ -38,25 +39,80 @@ Q. How can I handle those terrible POP-leaving-a-copy users?
their emails after a migration, which is a big pain and
causes hundreds of support calls.
R1. Context and condition: you have access to the POP email client tool
and the user WILL STAY using POP.
R. A discussion about this issue
POP email client tools can leave or delete the messages after pulling
them. It's very often a configurable behavior. Configure the email client
tool to delete the messages already pulled and then they won't never
be pulled again from the server to the client.
If you can't access to the POP email client tool, see R2 below.
Problem in the future: INBOX will be seen as empty when the email client
go to IMAP (unless the email client tool allows then an upload
synchronization, but don't count on that...)
R2. Context and condition: you know which users use POP.
If the pop mailboxes are known then all the INBOX messages can be moved
in an subfolder called INBOX_backup for example. Ti help you do this,
the tool pop2imap transfers messages from POP to IMAP, without duplicates,
without deleting the messages transferred, by default, and can put them
in any subfolder you want to. It can also delete them and, that way,
do what the email client tool don't or can't do, for any reason.
We're here to do a good job with what we have, do we?
In case of Dovecot for example, the magic can be there since already
fetched messages via POP are seen as \Seen in IMAP but the new messages are
seen as new messages, thanks to the Dovecot developper Timo's cleverness!.
So it is possible to sync back only the new messages to INBOX,
with "imapsync ... --search UNSEEN ...", and then POP users won't see the old
messages come back but they will see the new messages and fetch them via POP.
R3. Context and condition: you know nothing
Do R2 without the sync back of UNSEEN messages. It can't hurt to have a backup
of INBOX in a subfolder for IMAP or POP users.
R4. Here are some points, an analyse that made me purpose the not
to bad but not very good R2 answer.
There was a discussion about this issue on the imapsync mailing-list:
http://www.linux-france.org/prj/imapsync_list/msg02622.html
http://www.linux-france.org/prj/imapsync_list/msg02623.html
My reply was not very good
http://www.linux-france.org/prj/imapsync_list/msg02624.html
It's because I wrote pop2imap and it uses a stateless
mechanism to avoid duplicates, I wasn't aware of UIDL.
Here is a better response to handle and fix this problem, I hope:
If the pop mailboxes are known and known to be regularly fetched, then
all the INBOX messages, or at least the "old" ones, can be moved in an
subfolder INBOX_back. It requires to have "access" to the POP
sessions. The POP server log file is usually enough to know which
account opened a pop connection, and when.
mechanism to avoid duplicates, I wasn't aware of UIDL when I wrote pop2imap,
and later when I entered the discussion.
See also Rick Sanders discussion about this issue:
https://www.emailquestions.com/threads/how-to-prevent-duplicate-emails-after-server-migration-for-pop3-users-with-leave-mail-on-server.8109/
Quoting Timo Sirainen on
https://wiki2.dovecot.org/Migration
"If a client already saw changed UIDLs and decided to start
re-downloading mails, it's unlikely there is anything you can do to
stop it. Even going back to your old server is unlikely to help at
that point."
"Some (many?) POP3 clients also require that the message ordering is
preserved."
"Some clients re-download all mails if you change the hostname in the
client configuration. Be aware of this when testing."
Quoting
https://wiki.dovecot.org/POP3Server
"Flag changes
By default when a message is RETRed, \Seen flag is added to it.
POP3 itself doesn't support flags, but if the mailbox is opened
with IMAP (eg. from webmail) it's shown as seen."
=======================================================================
=======================================================================

41
FAQ.d/FAQ.Principles.txt Normal file
View File

@ -0,0 +1,41 @@
$Id: FAQ.Principles.txt,v 1.5 2019/09/05 13:33:46 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
https://imapsync.lamiral.info/FAQ.d/FAQ.Principles.txt
=======================================================================
Imapsync principles and design ideas
=======================================================================
Questions answered in this FAQ are:
Q. What is the bandwidth used by imapsync?
Now the questions again with their answers.
=======================================================================
Q. What is the bandwidth used by imapsync?
R. From the host where imapsync runs, it opens two imap connections,
one with the source account at host1, one with the destination
account at host2.
So, the global bandwidth used is twice the volume of the source
account, one volume to download the messages from host1,
one volume to upload those messages to host2.
If the host2 is already filled with the messages, imapsync doesn't
transfer them and then the volume transferred is small, just the IMAP
commands to identify the messages on both sides.
There is no local cache of the email messages, except when a
message is very big, it is temporarly saved locally.
=======================================================================
=======================================================================

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Release_Checklist.txt,v 1.11 2019/05/27 14:26:57 gilles Exp gilles $
$Id: FAQ.Release_Checklist.txt,v 1.16 2020/01/04 09:35:36 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -13,6 +13,7 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Release_Checklist.txt
Checklist before release a new release:
- Add a new section in S/news.shtml reading "rlog imapsync"
- In case of a new dependency, add it to all the INSTALL/* files.
- Generate the README
- Run a spell checker on the README
- Read the README again slowly. Fix all issues, all.
@ -20,15 +21,24 @@ Checklist before release a new release:
- Read slowly README_Windows.txt
- Read slowly the TUTORIAL_Unix file in html
- Review the newsletter by running:
m4 -P W/ml_announce.in
m4 -P W/ml_announce.in.txt
- Review the TODO file and mark done what is done.
- Review the general FAQ.d/FAQ.General.txt
- Report values of --gmail1 --gmail2 to FAQ.Gmail.txt
- Report values of --exchange* --office* to FAQ.Exchange.txt
- /X verify direct cgi
- /X verify under noscript with firefox
- /X verify under private with chrome
- Check the binaries imapsync.exe imapsync_64bit.exe with
https://www.virustotal.com/
https://www.metadefender.com/
- make dist
- verify on Windows the zip extraction and simple execution of imapsync_example.bat
- make publish
- verify VERSION is uploaded

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.SSL_errors.txt,v 1.7 2019/04/05 20:04:38 gilles Exp gilles $
$Id: FAQ.SSL_errors.txt,v 1.9 2019/12/11 15:38:37 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -22,6 +22,9 @@ Q. What can I do to avoid those "SSL read/write errors"?
Q. SSL connect attempt failed SSL
routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Now the questions again with their answers.
=======================================================================
Q. What are the errors
DEBUG: .../IO/Socket/SSL.pm:1165: local error: SSL write error
@ -76,7 +79,7 @@ R1. Use:
depending on where the error occurs, host1 or host2 or both.
R2. If it doesn't work, I let you try other things,
I quote the § "SSL_version" section of
I quote the "SSL_version" section of
https://metacpan.org/pod/IO::Socket::SSL (Module version: 2.066)
imapsync ... --sslargs1 SSL_version=SSLv2

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.SmarterMail.txt,v 1.13 2019/06/20 10:11:21 gilles Exp gilles $
$Id: FAQ.SmarterMail.txt,v 1.14 2019/10/15 14:57:19 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -17,12 +17,12 @@ Q. Synchronizing from SmarterMail to XXX
On Unix:
imapsync --host1 imap.d1.org --user1 joe --password1 secret1 \
--host2 imap.d2.org --user2 joe --password2 secret2 \
--sep1 "/" --prefix1 "" --useheader Message-Id --noabletosearch1
--sep1 "/" --prefix1 "" --useheader Message-Id --noabletosearch
On Windows:
imapsync.exe --host1 imap.d1.org --user1 joe --password1 secret1 ^
--host2 imap.d2.org --user2 joe --password2 secret2 ^
--sep1 "/" --prefix1 "" --useheader Message-Id --noabletosearch1
--sep1 "/" --prefix1 "" --useheader Message-Id --noabletosearch
=======================================================================
@ -31,12 +31,12 @@ Q. Synchronizing from XXX to SmarterMail
On Unix:
imapsync --host1 imap.d1.org --user1 joe --password1 secret1 \
--host2 imap.d2.org --user2 joe --password2 secret2 \
--sep2 "/" --prefix2 "" --useheader Message-Id --noabletosearch2
--sep2 "/" --prefix2 "" --useheader Message-Id --noabletosearch
On Windows:
imapsync.exe --host1 imap.d1.org --user1 joe --password1 secret1 ^
--host2 imap.d2.org --user2 joe --password2 secret2 ^
--sep2 "/" --prefix2 "" --useheader Message-Id --noabletosearch2
--sep2 "/" --prefix2 "" --useheader Message-Id --noabletosearch
=======================================================================

View File

@ -1,5 +1,5 @@
$Id: FAQ.Use_cache.txt,v 1.8 2018/10/22 17:30:45 gilles Exp gilles $
$Id: FAQ.Use_cache.txt,v 1.9 2019/09/13 10:43:06 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -12,6 +12,10 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Use_cache.txt
Questions answered in this FAQ are:
Q. What is --usecache good for?
Q. What is the technical principle of --usecache?
Q. On Windows, with --useuid or --usecache a problem occurs with long
nested folder names. The error message is:
"No such file or directory; The filename or extension is too long"
@ -19,8 +23,33 @@ Q. On Windows, with --useuid or --usecache a problem occurs with long
Q. Inode problem with --usecache or --useuid on Linux
Questions and their answers:
Now the questions again and their answers
=======================================================================
Q. What is --usecache good for?
R. The option --usecache is useful to speed up next syncs with --usecache.
The first sync with --usecache between two imap accounts is as low
as the first sync without --usecache.
=======================================================================
Q. What is the technical principle of --usecache?
R. Option --usecache creates a empty file per email message
in order to keep the UIDs mapping between account1 and account2.
The cache is maintened at each run. Messages UIDs enregistred
in the cache are not fetched again to be identified. It really
speeds up the process of syncing.
The cache directory is
<tmpdir>/imapsync_cache/
where <tmpdir> is the temporary directory given by the --tmpdir option
or the one by default, /tmp on Unix, variable on Windows.
=======================================================================
Q. On Windows, with --useuid or --usecache a problem occurs with long
nested folder names. The error message is:

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.Various_Software_Servers.txt,v 1.12 2019/06/26 22:17:03 gilles Exp gilles $
$Id: FAQ.Various_Software_Servers.txt,v 1.13 2019/07/04 09:26:28 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -85,16 +85,6 @@ R. By Jamie Neil:
I eventually managed to get the mail to migrate without errors using the
following options:
--sep1 /
- doesn't report separator so has to be set explicitly.
--nosyncacls
- doesn't support ACLs.
--skipheader '^Content-Type'
- MIME separator IDs seem to change every time a mail is accessed so
this is required to stop duplicates.
--maxage 3650
- some messages just don't seem to want to transfer and produce the
perl errors I mentioned before. This prevents the errors, but the
@ -112,16 +102,10 @@ something funny about the reported dates/sizes).
It think this problem has been rectified in GW6.5.
2) The "skipheader '^Content-Type'" directive is required to stop
duplicate messages being created. GW seems to generate this field on
the fly for messages that have MIME separators and so it's different
every time.
3) Version 6.0.1 of the Groupwise Internet Connector sucks. I was
2) Version 6.0.1 of the Groupwise Internet Connector sucks. I was
getting server aborts when I pushed it a bit hard! I eventually had to
upgrade to 6.0.4 which seems to be a lot more stable.
=======================================================================
Q. Migrating from iPlanet Messaging Server
5.2 Patch 2 (built Jul 14 2004)) to Groupwise 7.0

View File

@ -1,5 +1,5 @@
$Id: FAQ.Virus.txt,v 1.5 2018/05/24 11:34:30 gilles Exp gilles $
$Id: FAQ.Virus.txt,v 1.6 2019/12/06 09:43:52 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -14,9 +14,9 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Virus.txt
Q. My virus scanner claims imapsync.exe is a virus/malware/trojan etc.
What the hell?
R1. Yes, I found the same. Two antivirus, Baidu and Jiangmin, report that
imapsync might have a trojan in it.
All others virus scanner say imapsync.exe is ok.
R1. Yes, I find the same sometimes with few antivirus, some report that
imapsync might have a trojan in it.
Most virus scanners say imapsync.exe and is ok.
I've done this test on imapsync.exe release 1.727 on the two following
meta-virus-scanners:
https://www.virustotal.com/
@ -35,12 +35,25 @@ R3. There is no virus alerts reported for the Perl script imapsync
itself. The binary imapsync.exe is just a compiled version of
the script imapsync, with perl interpreter itself and all modules
needed by imapsync in order to make imapsync.exe a standalone software.
R4. imapsync.exe release 1.836 is reported as totally clean by both
R4. Using online meta-virus-scanners
https://www.virustotal.com/
https://www.metadefender.com/
Release 1.945
imapsync.exe release 1.945 is reported as totally clean:
* https://www.virustotal.com/gui/file/c122fd3bc82c9c784e8b27504e1843f95b1dfd9beba05f50a2893853ad4a6c59/details
* https://metadefender.opswat.com/results#!/file/bzE5MTIwNVN5ZXNDa2NMVEhCeWJpQTFjVVRT/regular/overview
imapsync_64bit.exe release 1.945 is reported as totally clean:
* https://www.virustotal.com/gui/file/f561c6e457c3173f7b0379ee8cc267347feff1bc1991cf47fea7c513c81ccb0a/detection
* https://metadefender.opswat.com/results#!/file/bzE5MDkzMHJ5dk9qb2gxZEhIMXVkaWloeV9C/regular/multiscan
Release 1.836
imapsync.exe release 1.836 is reported as totally clean:
https://www.virustotal.com/#/file/2a33eb93198da77677a4013a5dfb4868cb6aa8f4513e2102a55884b258d19043/detection
and https://metadefender.opswat.com/
https://metadefender.opswat.com/results#!/file/ZTE4MDMxN1MxZTk4aGhxdEdCSlpxVTJoOVlN/regular/information

View File

@ -1,5 +1,5 @@
#!/bin/cat
$Id: FAQ.XOAUTH2.txt,v 1.15 2018/08/28 21:48:53 gilles Exp gilles $
$Id: FAQ.XOAUTH2.txt,v 1.16 2019/07/31 22:58:36 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@ -154,7 +154,8 @@ imapsync \
Use your own xoauth2 values.
See also
http://www.notearthday.org/nedtech/2016/05/creating-creating-oauth2-credentials-with-google-apps/
=======================================================================
Q. How to use a proxy with XOAUTH2 authentication?

26
FAQ.d/FAQ.Yandex.txt Normal file
View File

@ -0,0 +1,26 @@
#!/bin/cat
$Id: FAQ.Yandex.txt,v 1.1 2019/09/12 10:08:05 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
https://imapsync.lamiral.info/FAQ.d/FAQ.Kerio.txt
=======================================================================
Imapsync tips for Yandex accounts.
=======================================================================
=======================================================================
Q. How to migrate from or to Yandex
R. Use:
imapsync ... --useheader Message-Id --noabletosearch
The option --noabletosearch is needed only if options --maxage or --minage
are used. I don't know which --search commands could work, maybe none.
The imap server for --host1 or --host2 is usually imap.yandex.ru

View File

@ -1,55 +1,62 @@
# $Id: htaccess.txt,v 1.25 2019/05/17 10:16:00 gilles Exp gilles $
# $Id: htaccess.txt,v 1.27 2019/12/08 16:05:27 gilles Exp gilles $
AddDescription "<b>Back</b> to Imapsync main page." ..
AddDescription "<b>APPEND errors</b>." FAQ.Admin_Authentication.txt
AddDescription "<b>Authenticate via an admin account</b>." FAQ.APPEND_errors.txt
AddDescription "<b>Authentication failures</b>." FAQ.Authentication_failure.txt
AddDescription "<b>Archiving</b> tips." FAQ.Archiving.txt
AddDescription "<b>Big mailboxes</b> tips." FAQ.Big_Mailbox.txt
AddDescription "<b>Connection issues</b>." FAQ.Connection.txt
AddDescription "<b>Contacts & Calendars & Chat issues</b>." FAQ.Contacts_Calendars.txt
AddDescription "<b>Dates issues</b>." FAQ.Dates.txt
AddDescription "<b>David Tobit</b>." FAQ.David_Tobit.txt
AddDescription "<b>Domino</b>." FAQ.Domino.txt
AddDescription "<b>Dovecot</b>." FAQ.Dovecot.txt
AddDescription "<b>Duplicated</b> messages issues." FAQ.Duplicates.txt
AddDescription "<b>Emptying</b> an account." FAQ.Emptying.txt
AddDescription "<b>Exchange 20xx</b> and <b>Office365</b>." FAQ.Exchange.txt
AddDescription "<b>Changing folders names</b>." FAQ.Folders_Mapping.txt
AddDescription "<b>Selecting folders</b>." FAQ.Folders_Selection.txt
AddDescription "<b>Folders sizes with Imapsync</b>." FAQ.Folders_Sizes.txt
AddDescription "<b>Back</b> to Imapsync main page." ..
AddDescription "<b>Where this Description column comes from</b>." htaccess.txt
AddDescription "<b>APPEND errors</b>." FAQ.Admin_Authentication.txt
AddDescription "<b>Authenticate via an admin account</b>." FAQ.APPEND_errors.txt
AddDescription "<b>Archiving</b> tips." FAQ.Archiving.txt
AddDescription "<b>Authentication failures</b>." FAQ.Authentication_failure.txt
AddDescription "<b>Big mailboxes</b> tips." FAQ.Big_Mailbox.txt
AddDescription "<b>Changing folders names</b>." FAQ.Folders_Mapping.txt
AddDescription "<b>Connection issues</b>." FAQ.Connection.txt
AddDescription "<b>Contacts & Calendars & Chat issues</b>." FAQ.Contacts_Calendars.txt
AddDescription "<b>Dates issues</b>." FAQ.Dates.txt
AddDescription "<b>David Tobit</b> accounts." FAQ.David_Tobit.txt
AddDescription "<b>Domino</b> accounts." FAQ.Domino.txt
AddDescription "<b>Dovecot</b> accounts." FAQ.Dovecot.txt
AddDescription "<b>Duplicated</b> messages issues." FAQ.Duplicates.txt
AddDescription "<b>Emptying</b> an account." FAQ.Emptying.txt
AddDescription "<b>Exchange 20xx</b> and <b>Office365</b> accounts." FAQ.Exchange.txt
AddDescription "<b>Selecting folders</b>." FAQ.Folders_Selection.txt
AddDescription "<b>Folders sizes with Imapsync</b>." FAQ.Folders_Sizes.txt
AddDescription "<b>Flags</b>." FAQ.Flags.txt
AddDescription "<b>General</b> and <b>pot-pourri</b> issues" FAQ.General.txt
AddDescription "<b>Gmail</b> accounts." FAQ.Gmail.txt
AddDescription "<b>ISP tips</b>." FAQ.ISP.txt
AddDescription "<b>Massive/bulk migrations</b>." FAQ.Massive.txt
AddDescription "<b>Memory issues</b>." FAQ.Memory.txt
AddDescription "<b>Migration Plan</b>." FAQ.Migration_Plan.txt
AddDescription "<b>The Online UI service Q&R</b>." FAQ.OnlineUI.txt
AddDescription "<b>Password & special characters on Windows</b>." FAQ.Passwords_on_Windows.txt
AddDescription "<b>Password & special characters on Unix</b>." FAQ.Passwords_on_Unix.txt
AddDescription "<b>POP3 issues</b>." FAQ.POP3.txt
AddDescription "<b>Selecting messages</b>." FAQ.Messages_Selection.txt
AddDescription "<b>How to transfer too big messages</b>." FAQ.Messages_Too_Big.txt
AddDescription "<b>Oracle-UCS</b>." FAQ.Oracle-UCS.txt
AddDescription "<b>Checklist before release a new release</b>." FAQ.Release_Checklist.txt
AddDescription "<b>Guidelines to report bugs</b>." FAQ.Reporting_Bugs.txt
AddDescription "<b>Security</b>." FAQ.Security.txt
AddDescription "<b>SSL errors</b>." FAQ.SSL_errors.txt
AddDescription "<b>SmarterMail</b>." FAQ.SmarterMail.txt
AddDescription "<b>Flags tips and issues</b>." FAQ.Flags.txt
AddDescription "<b>General Data Protection Regulation</b> (GDPR)." FAQ.GDPR.txt
AddDescription "<b>General</b> and <b>pot-pourri</b> issues" FAQ.General.txt
AddDescription "<b>Gmail</b> accounts." FAQ.Gmail.txt
AddDescription "<b>ISP tips</b>." FAQ.ISP.txt
AddDescription "<b>Kerio</b> accounts." FAQ.Kerio.txt
AddDescription "<b>Massive/bulk migrations</b>." FAQ.Massive.txt
AddDescription "<b>Memory issues</b>." FAQ.Memory.txt
AddDescription "<b>Migration Plan</b>." FAQ.Migration_Plan.txt
AddDescription "<b>The Online UI service Q&R</b>." FAQ.OnlineUI.txt
AddDescription "<b>Password & special characters on Windows</b>." FAQ.Passwords_on_Windows.txt
AddDescription "<b>Password & special characters on Unix</b>." FAQ.Passwords_on_Unix.txt
AddDescription "<b>POP3 issues</b>." FAQ.POP3.txt
AddDescription "<b>Principles & design decisions</b>." FAQ.Principles.txt
AddDescription "<b>Selecting messages</b>." FAQ.Messages_Selection.txt
AddDescription "<b>How to transfer too big messages</b>." FAQ.Messages_Too_Big.txt
AddDescription "<b>Why the imapsync web site looks so old?</b>" FAQ.Old_Style_Web_Design.txt
AddDescription "<b>Oracle-UCS</b> accounts." FAQ.Oracle-UCS.txt
AddDescription "<b>TTL (Time To Live) delay in DNS configuration</b>." FAQ.TTL.txt
AddDescription "<b>Option --usecache and inodes</b>." FAQ.Use_cache.txt
AddDescription "<b>User concurrent access</b>." FAQ.User_Concurrent_Access.txt
AddDescription "<b>Virus scanners on Imapsync</b>." FAQ.Virus.txt
AddDescription "<b>Why use --addheader?</b>." FAQ.Use_addheader.txt
AddDescription "<b>Various imap software servers</b>." FAQ.Various_Software_Servers.txt
AddDescription "<b>XOAUTH2</b> (<b>Gmail</b>)." FAQ.XOAUTH2.txt
AddDescription "<b>Yahoo</b>." FAQ.Yahoo.txt
AddDescription "<b>Zimbra</b>." FAQ.Zimbra.txt
AddDescription "<b>Where this Description column comes from</b>." htaccess.txt
AddDescription "<b>Checklist before release a new release</b>." FAQ.Release_Checklist.txt
AddDescription "<b>Guidelines to report bugs</b>." FAQ.Reporting_Bugs.txt
AddDescription "<b>Security</b>." FAQ.Security.txt
AddDescription "<b>SSL errors</b>." FAQ.SSL_errors.txt
AddDescription "<b>SmarterMail</b> accounts." FAQ.SmarterMail.txt
AddDescription "<b>TTL (Time To Live) delay in DNS configuration</b>." FAQ.TTL.txt
AddDescription "<b>Option --usecache and inodes</b>." FAQ.Use_cache.txt
AddDescription "<b>User concurrent access</b>." FAQ.User_Concurrent_Access.txt
AddDescription "<b>Virus scanners on Imapsync</b>." FAQ.Virus.txt
AddDescription "<b>Why use --addheader?</b>." FAQ.Use_addheader.txt
AddDescription "<b>Various imap software servers</b>." FAQ.Various_Software_Servers.txt
AddDescription "<b>XOAUTH2</b> (<b>Gmail</b>)." FAQ.XOAUTH2.txt
AddDescription "<b>Yahoo</b> accounts." FAQ.Yahoo.txt
AddDescription "<b>Yandex</b> accounts." FAQ.Yandex.txt
AddDescription "<b>Zimbra</b> accounts." FAQ.Zimbra.txt

View File

@ -1,6 +1,6 @@
## Dockerfile for building a docker imapsync image
# $Id: Dockerfile,v 1.15 2019/02/26 11:39:31 gilles Exp gilles $
# $Id: Dockerfile,v 1.28 2019/12/02 13:19:41 gilles Exp gilles $
# I use the following command to build the image:
#
# docker build -t gilleslamiral/imapsync .
@ -10,27 +10,40 @@
# I like thanks
# I like stars
# I also like (and need) money
# I thank you very much in advance
# I thank you very much
# Number of imapsync images pulled so far (2019_12_02): 32732
# Command used:
# curl -s https://hub.docker.com/v2/repositories/gilleslamiral/imapsync/ | jq '.pull_count'
FROM debian:stretch
FROM debian:buster
LABEL maintainer "gilles@lamiral.info"
LABEL maintainer="Gilles LAMIRAL <gilles@lamiral.info>" \
description="Imapsync" \
documentation="https://imapsync.lamiral.info/#doc"
# Put a copy of the Dockerfile in the image itself
# It can help future maintenance, isn't it?
# Also put my last imapsync on / for testing purpose
COPY Dockerfile imapsync /
COPY Dockerfile /
RUN apt-get update \
# Also put my local imapsync on /usr/bin/ for testing purpose
# renamed imapsync_local since would be erased by the wget
COPY imapsync /usr/bin/imapsync_local
COPY prerequisites_imapsync /usr/bin/prerequisites_imapsync_local
RUN set -xe && \
apt-get update \
&& apt-get install -y \
libjson-webtoken-perl \
libauthen-ntlm-perl \
libcgi-pm-perl \
libcrypt-openssl-rsa-perl \
libdata-uniqid-perl \
libencode-imaputf7-perl \
libfile-copy-recursive-perl \
libfile-tail-perl \
libio-socket-ssl-perl \
libio-socket-inet6-perl \
libio-tee-perl \
@ -53,17 +66,25 @@ RUN apt-get update \
wget \
make \
cpanminus \
lsof \
&& rm -rf /var/lib/apt/lists/*
RUN wget -N https://imapsync.lamiral.info/imapsync \
https://imapsync.lamiral.info/prerequisites_imapsync \
&& cp imapsync /usr/bin/imapsync \
&& chmod +x /usr/bin/imapsync # just_a_comment_to_force_update 2018_09_13_14_44_03
RUN set -xe \
&& pwd \
&& wget -N https://imapsync.lamiral.info/imapsync \
https://imapsync.lamiral.info/prerequisites_imapsync \
&& mv imapsync /usr/bin/imapsync \
&& chmod +x /usr/bin/imapsync /usr/bin/imapsync_local # just_a_comment_to_force_update 2019_11_26_12_58_34
USER nobody
USER nobody:nogroup
ENV HOME /var/tmp/
WORKDIR /var/tmp/
STOPSIGNAL SIGINT
CMD ["/usr/bin/imapsync"]
#

View File

@ -1,4 +1,4 @@
# $Id: INSTALL.ANY.txt,v 1.58 2018/05/24 11:43:31 gilles Exp gilles $
# $Id: INSTALL.ANY.txt,v 1.60 2019/11/28 14:37:40 gilles Exp gilles $
#
# This is the main INSTALL file for imapsync.
# imapsync : IMAP sync and migrate tool.
@ -13,7 +13,8 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.ANY.txt
imapsync works fine under any operating system with Perl and Perl modules (listed below).
imapsync.exe works fine standalone under Windows XP, Vista, Seven, 20XX, either 32 or 64bit.
imapsync_64bit.exe works fine standalone under Seven, 20XX, but only 64bit.
=======================================================================
Installing imapsync on WINDOWS
=======================================================================
@ -37,9 +38,11 @@ Those documents are also available at https://imapsync.lamiral.info/INSTALL.d/
- Debian
- Ubuntu
- AWS EC2
- Arch Linux
- Docker
- Online UI like /X
If you are not on one of these systems then read the section
If you are not on one of these systems then read the last section
below called "Installing imapsync on other Unixes".
=======================================================================
@ -108,6 +111,15 @@ See the file INSTALL.d/INSTALL.AWS_EC2.txt
This document is also available at
https://imapsync.lamiral.info/INSTALL.d/INSTALL.AWS_EC2.txt
=======================================================================
Installing imapsync on ArchLinux
=======================================================================
Not so easy.
See the file INSTALL.d/INSTALL.ArchLinux.txt
This document is also available at
https://imapsync.lamiral.info/INSTALL.d/INSTALL.ArchLinux.txt
=======================================================================
Installing imapsync online like /X
=======================================================================
@ -163,7 +175,8 @@ Install make in case it is not already installed.
Run the "cpanm" command with the missing Perl modules as arguments.
For example it can be:
cpanm Authen::NTLM Data::Uniqid File::Copy::Recursive IO::Tee Mail::IMAPClient Unicode::String
cpanm Authen::NTLM Data::Uniqid File::Copy::Recursive IO::Tee \
Mail::IMAPClient Unicode::String Encode::IMAPUTF7
Once you've run the "cpanm" command, you can rerun "sh prerequisites_imapsync"
to verify everything is ok:

View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: INSTALL.AWS_EC2.txt,v 1.5 2018/05/24 11:43:31 gilles Exp gilles $
# $Id: INSTALL.AWS_EC2.txt,v 1.7 2019/11/28 14:37:23 gilles Exp gilles $
This documentation is also located online at
https://imapsync.lamiral.info/INSTALL.d/
@ -16,41 +16,45 @@ Amazon Linux AMI release 2017.03
sudo yum install \
perl-Class-Load \
perl-IO-Compress \
perl-Crypt-OpenSSL-RSA \
perl-Data-Dumper \
perl-Class-Load \
perl-IO-Compress \
perl-Crypt-OpenSSL-RSA \
perl-Data-Dumper \
perl-Dist-CheckConflicts \
perl-ExtUtils-Embed \
perl-File-Copy-Recursive \
perl-File-Tail \
perl-IO-Socket-INET6 \
perl-IO-Socket-SSL \
perl-JSON \
perl-HTML-Parser \
perl-libwww-perl \
perl-IO-Socket-SSL \
perl-JSON \
perl-HTML-Parser \
perl-libwww-perl \
perl-Mail-IMAPClient \
perl-Module-Implementation \
perl-Module-Runtime \
perl-Module-ScanDeps \
perl-Net-SSLeay \
perl-Package-Stash \
perl-Module-Runtime \
perl-Module-ScanDeps \
perl-Net-SSLeay \
perl-Package-Stash \
perl-Package-Stash-XS \
perl-Parse-RecDescent \
perl-Readonly \
perl-Regexp-Common \
perl-Sys-MemInfo \
perl-TermReadKey \
perl-Test-Fatal \
perl-Test-MockObject \
perl-Test-Simple \
perl-Test-Pod \
perl-Test-Requires \
perl-Try-Tiny \
perl-Unicode-String \
perl-URI \
perl-ExtUtils-Embed \
perl-Readonly \
perl-Regexp-Common \
perl-Sys-MemInfo \
perl-TermReadKey \
perl-Test-Fatal \
perl-Test-MockObject \
perl-Test-Simple \
perl-Test-Pod \
perl-Test-Requires \
perl-Try-Tiny \
perl-Unicode-String \
perl-URI \
cpanminus
sudo cpanm Authen::NTLM Data::Uniqid IO::Tee JSON::WebToken JSON::WebToken::Crypt::RSA Test::Mock::Guard
sudo cpanm Authen::NTLM Data::Uniqid IO::Tee \
JSON::WebToken JSON::WebToken::Crypt::RSA \
Test::Mock::Guard \
Encode::IMAPUTF7
wget -N https://imapsync.lamiral.info/imapsync

View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: INSTALL.ArchLinux.txt,v 1.3 2018/09/03 02:00:22 gilles Exp gilles $
# $Id: INSTALL.ArchLinux.txt,v 1.5 2019/11/28 14:37:59 gilles Exp gilles $
This documentation is also located online at
https://imapsync.lamiral.info/INSTALL.d/
@ -71,13 +71,15 @@ Commands to run:
community/perl-test-nowarnings \
community/perl-test-deep \
extra/perl-try-tiny \
extra/perl-uri
extra/perl-uri \
community/perl-file-tail
Mandatory Perl modules via cpanm:
cpanm Mail::IMAPClient \
Unicode::String \
Sys::MemInfo \
Encode::IMAPUTF7
Other Perl modules, needed sometimes:

View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: INSTALL.CPanel.txt,v 1.6 2018/05/24 11:43:31 gilles Exp gilles $
# $Id: INSTALL.CPanel.txt,v 1.7 2019/11/28 14:38:18 gilles Exp gilles $
This documentation is also located online at
https://imapsync.lamiral.info/INSTALL.d/
@ -26,5 +26,12 @@ A good test that shows also the basic example:
imapsync
If you want to update to the latest imapsync, then look at
the Centos installation document called INSTALL.Centos.txt
and also INSTALL.ANY.txt
You're on your own, I don't have access to a CPanel system.
=======================================================================
=======================================================================

View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: INSTALL.Centos.txt,v 1.12 2019/05/02 12:41:07 gilles Exp gilles $
# $Id: INSTALL.Centos.txt,v 1.14 2019/11/28 14:37:02 gilles Exp gilles $
This documentation is also located online at
https://imapsync.lamiral.info/INSTALL.d/
@ -66,15 +66,18 @@ Then:
perl-Test-Mock-Guard \
perl-Test-Requires \
perl-Test-Deep \
perl-File-Tail
perl-File-Tail \
perl-Unicode-String
cpanm Encode::IMAPUTF7 # this module is not available as a rpm package
wget -N https://imapsync.lamiral.info/imapsync
chmod +x imapsync
./imapsync --testslive
Now you should shave the latest imapsync locally working on Centos 7.
If you want to install it and replace the olf one:
If you want to install it and replace the old one:
mv /usr/bin/imapsync /usr/bin/imapsync_old
cp ./imapsync /usr/bin/imapsync
@ -82,7 +85,7 @@ If you want to install it and replace the olf one:
imapsync --version
should give the latest release number instead of 1.727
(1.937 at the time of this writing)
(It is 1.964 at the time of this writing)
If you want to install an online imapsync service
like /X then you also need a recent decent CGI.pm,
@ -145,7 +148,8 @@ Then:
perl-Test-Mock-Guard \
perl-Test-Requires \
perl-Test-Deep \
perl-File-Tail
perl-File-Tail \
perl-Unicode-String
wget https://imapsync.lamiral.info/imapsync

View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: INSTALL.Darwin.txt,v 1.19 2018/12/06 10:07:58 gilles Exp gilles $
# $Id: INSTALL.Darwin.txt,v 1.24 2019/11/28 14:42:52 gilles Exp gilles $
This documentation is also located online at
https://imapsync.lamiral.info/INSTALL.d/
@ -9,6 +9,21 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Darwin.txt
Installing imapsync binary on Darwin / Mac OS X
=======================================================================
Caveat Catalina: The binary imapsync_bin_Darwin is detected as a malware
or similar on the latest Mac OS X named Catalina.
It's Catalina new security policy. I'm working on it.
All other Mac OS X releases are ok.
So far I found
https://www.quora.com/What-does-Can-t-be-opened-because-it-s-integrity-cannot-be-verified-mean-on-OSX-Catalina
https://github.com/fastlane/fastlane/issues/15186#issuecomment-532047545
https://github.com/neovim/neovim/issues/11011#issuecomment-531369505
Other way, on the binary: Control + Right Click -> Open
(I don't know if it adds imapsync in the ok apps)
See also the last section of https://support.apple.com/en-us/HT202491
"How to open an app that hasnt been notarized or is from an unidentified developer"
Now, let's forget Catalina for the rest of this document
There is a standalone imapsync binary for Mac OS X
called "imapsync_bin_Darwin" (without the quotes),
available in the compressed tarball called imapsync-1.xxx.tgz
@ -42,8 +57,8 @@ real IMAP server accounts:
If this sync works fine then imapsync_bin_Darwin is ready for any
imap account synchronization.
When reading the documentation with imapsync command lines
examples, you have to replace the command "imapsync" by "imapsync_bin_Darwin"
When reading the documentation with imapsync command lines examples,
you have to replace the command "imapsync" by "imapsync_bin_Darwin"
For example, instead of the command:
./imapsync \
@ -56,6 +71,33 @@ you have to use:
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
--host2 test2.lamiral.info --user2 test2 --password2 secret2
You also may have to edit the examples you use, like
examples/imapsync_example.sh
and replace in there the command ./imapsync by ./imapsync_bin_Darwin
in case it is not already done.
Be careful the way you edit the files, use a text editor.
Do not use a word processor because word processors add
or use special formating characters that will break the shell
scripts. If you use TextEdit, use the text mode.
The script examples/imapsync_example_darwin.sh is ready to use,
it is a copy of examples/imapsync_example.sh adapted to Mac users.
The script examples/sync_loop_darwin.sh is also ready to use.
Try:
sh examples/sync_loop_darwin.sh
or
cp examples/sync_loop_darwin.sh mysync.sh
sh mysync.sh
Now read on the tutorial
https://imapsync.lamiral.info/doc/TUTORIAL_Unix.html
=======================================================================
Installing imapsync script on Darwin / Mac OS X with brew
=======================================================================

View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: INSTALL.Debian.txt,v 1.25 2018/11/20 10:28:33 gilles Exp gilles $
# $Id: INSTALL.Debian.txt,v 1.30 2019/11/28 14:36:18 gilles Exp gilles $
This documentation is also located online at
https://imapsync.lamiral.info/INSTALL.d/
@ -7,7 +7,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Debian.txt
There is three install sections in this document,
one for Debian 9 Stretch
one for Debian 9 Stretch and Debian 10 Buster
one for Debian 8 Jessie
one for Debian 7 Wheezy
@ -24,23 +24,31 @@ https://lists.debian.org/debian-user/2016/11/msg00849.html
=======================================================================
Installing imapsync on Debian 9 Stretch
Installing imapsync on Debian 9 Stretch or Debian 10 Buster
=======================================================================
Here is the command to install imapsync dependencies.
How to install imapsync dependencies on a Debian system?
The repositories are the classical ones, ie, a
/etc/apt/sources.list file with:
# Debian 9 Stretch
deb http://deb.debian.org/debian stretch main contrib
or
# Debian 10 Buster
deb http://deb.debian.org/debian buster main contrib
You need root privilege to run it, be root or use sudo.
apt install -y \
libjson-webtoken-perl \
libauthen-ntlm-perl \
libcgi-pm-perl \
libcrypt-openssl-rsa-perl \
libdata-uniqid-perl \
libencode-imaputf7-perl \
libfile-copy-recursive-perl \
libfile-tail-perl \
libio-socket-inet6-perl \
@ -75,8 +83,9 @@ go to the section "After installing the dependencies" below.
Installing imapsync on Debian 8 Jessie
=======================================================================
Here are the commands to install imapsync dependencies.
You need root priviledge to run them.
How to install imapsync dependencies on a Debian system?
You need root priviledge.
The first command installs standard Debian packages:
apt install \
@ -84,7 +93,9 @@ apt install \
libcgi-pm-perl \
libcrypt-openssl-rsa-perl \
libdata-uniqid-perl \
libencode-imaputf7-perl \
libfile-copy-recursive-perl \
libfile-tail-perl \
libio-socket-inet6-perl \
libio-socket-ssl-perl \
libio-tee-perl \
@ -144,38 +155,41 @@ go to the section "After installing the dependencies" below.
Installing imapsync on Debian 7 Wheezy
=======================================================================
Here are the two commands to install imapsync dependencies.
You need root priviledge to run them.
How to install imapsync dependencies on a Debian system?
You need root priviledge to run the commands.
The first command installs standard Debian packages:
apt-get install \
libauthen-ntlm-perl \
libclass-load-perl \
libcrypt-openssl-rsa-perl \
libdigest-hmac-perl \
libfile-copy-recursive-perl \
libio-compress-perl \
libio-socket-inet6-perl \
libio-socket-ssl-perl \
libio-tee-perl \
libmail-imapclient-perl \
libmodule-implementation-perl \
libmodule-runtime-perl \
libmodule-scandeps-perl \
libpackage-stash-perl \
libpackage-stash-xs-perl \
libpar-packer-perl \
libreadonly-perl \
libterm-readkey-perl \
libtest-fatal-perl \
libtest-pod-perl \
libtest-requires-perl \
libtest-simple-perl \
libunicode-string-perl \
liburi-perl \
make \
cpanminus
apt-get install \
libauthen-ntlm-perl \
libclass-load-perl \
libcrypt-openssl-rsa-perl \
libdigest-hmac-perl \
libencode-imaputf7-perl \
libfile-copy-recursive-perl \
libfile-tail-perl \
libio-compress-perl \
libio-socket-inet6-perl \
libio-socket-ssl-perl \
libio-tee-perl \
libmail-imapclient-perl \
libmodule-implementation-perl \
libmodule-runtime-perl \
libmodule-scandeps-perl \
libpackage-stash-perl \
libpackage-stash-xs-perl \
libpar-packer-perl \
libreadonly-perl \
libterm-readkey-perl \
libtest-fatal-perl \
libtest-pod-perl \
libtest-requires-perl \
libtest-simple-perl \
libunicode-string-perl \
liburi-perl \
make \
cpanminus
The following second command installs "manually" the Perl modules

View File

@ -1,34 +0,0 @@
#!/bin/cat
# $Id: INSTALL.Docker.txt,v 1.4 2018/09/13 17:50:06 gilles Exp gilles $
This documentation is also located online at
https://imapsync.lamiral.info/INSTALL.d/
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Docker.txt
=======================================================================
Installing imapsync docker image
=======================================================================
==========================
== Installation & usage ==
==========================
That's all you have to run:
docker run gilleslamiral/imapsync imapsync <usual imapsync arguments>
=========================
== Installation alone ==
==========================
To install or update the imapsync image, run:
docker pull gilleslamiral/imapsync
== Docker hub location ==
https://hub.docker.com/r/gilleslamiral/imapsync/
=======================================================================
=======================================================================

View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: INSTALL.Docker_build.txt,v 1.8 2018/05/24 11:43:31 gilles Exp gilles $
# $Id: INSTALL.Docker_build.txt,v 1.12 2019/11/28 14:43:48 gilles Exp gilles $
This documentation is also located online at
https://imapsync.lamiral.info/INSTALL.d/
@ -9,22 +9,53 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Docker_build.txt
Building an imapsync docker image from Debian
=======================================================================
Nearly verbatim copy from https://imapsync.lamiral.info/INSTALL.d/Dockerfile
(nearly but the Dockerfile rcs tag Id: removed, that would conflict)
# Dockerfile for building a docker imapsync image
## Dockerfile for building a docker imapsync image
FROM debian:stretch
# Dockerfile,v 1.26 2019/11/27 15:49:13 gilles Exp gilles $
# I use the following command to build the image:
#
# docker build -t gilleslamiral/imapsync .
#
# where this Dockerfile is in the current directory
#
# I like thanks
# I like stars
# I also like (and need) money
# I thank you very much in advance
LABEL maintainer "gilles@lamiral.info"
RUN apt-get update \
FROM debian:buster
LABEL maintainer="Gilles LAMIRAL <gilles@lamiral.info>" \
description="Imapsync" \
documentation="https://imapsync.lamiral.info/#doc"
# Put a copy of the Dockerfile in the image itself
# It can help future maintenance, isn't it?
COPY Dockerfile /
# Also put my local imapsync on /usr/bin/ for testing purpose
# renamed imapsync_local since would be erased by the wget
COPY imapsync /usr/bin/imapsync_local
COPY prerequisites_imapsync /usr/bin/prerequisites_imapsync_local
RUN set -xe && \
apt-get update \
&& apt-get install -y \
libjson-webtoken-perl \
libauthen-ntlm-perl \
libcgi-pm-perl \
libcrypt-openssl-rsa-perl \
libdata-uniqid-perl \
libencode-imaputf7-perl \
libfile-copy-recursive-perl \
libfile-tail-perl \
libio-socket-ssl-perl \
libio-socket-inet6-perl \
libio-tee-perl \
libhtml-parser-perl \
libjson-webtoken-perl \
@ -41,20 +72,36 @@ RUN apt-get update \
libunicode-string-perl \
liburi-perl \
libwww-perl \
libio-socket-inet6-perl \
procps \
wget \
make \
cpanminus \
lsof \
&& rm -rf /var/lib/apt/lists/*
RUN wget -N https://imapsync.lamiral.info/imapsync \
&& cp imapsync /usr/bin/imapsync \
&& chmod +x /usr/bin/imapsync
RUN set -xe \
&& pwd \
&& wget -N https://imapsync.lamiral.info/imapsync \
https://imapsync.lamiral.info/prerequisites_imapsync \
&& mv imapsync /usr/bin/imapsync \
&& chmod +x /usr/bin/imapsync /usr/bin/imapsync_local # just_a_comment_to_force_update 2019_11_26_12_58_34
USER nobody
USER nobody:nogroup
ENV HOME /var/tmp/
WORKDIR /var/tmp/
STOPSIGNAL SIGINT
CMD ["/usr/bin/imapsync"]
# End of Dockerfile
#
# End of imapsync Dockerfile
=======================================================================
=======================================================================

View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: INSTALL.FreeBSD.txt,v 1.10 2018/07/03 04:29:11 gilles Exp gilles $
# $Id: INSTALL.FreeBSD.txt,v 1.11 2019/11/28 14:38:42 gilles Exp gilles $
This documentation is also located online at
https://imapsync.lamiral.info/INSTALL.d/
@ -30,6 +30,7 @@ install also:
p5-Regexp-Common
p5-Test-MockObject
p5-CGI
p5-Encode-IMAPUTF7
Call to FreeBSD developer: It's also the new dependencies to add
for next the imapsync package 1.882

View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: INSTALL.OnlineUI.txt,v 1.30 2019/03/06 17:36:50 gilles Exp gilles $
# $Id: INSTALL.OnlineUI.txt,v 1.32 2019/11/28 14:42:17 gilles Exp gilles $
This documentation is also located online at
https://imapsync.lamiral.info/INSTALL.d/
@ -9,13 +9,12 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.OnlineUI.txt
Installing imapsync online
=======================================================================
Please consider this as relatively new and experimental.
Please consider this as relatively experimental.
However, to a certain extent, I'm now confident with /X
since the /X service is up and running quite well since January 2017.
=======================================================================
Hardware consideration
RAM used per imapsync process, mean value: 230 MB.
Average_bandwidth_rate: 345 KiB/s ~ 2.8 Mbps.
@ -23,24 +22,30 @@ Load mean: 0.8 on a CPU 4 cores "Intel(R) i5-2320 3.00GHz K8-class"
=======================================================================
Installation
You have to be a little familiar with what a CGI script is
and how to activate a CGI script on the Apache
HTTP server, or any other HTTP server. Linux is also a
preferred platform.
preferred platform (I run /X service on Linux and FreeBSD).
I haven't tested yet this visual interface on Windows nor Mac,
feedback is welcome from successes or failures on those platforms.
Like imapsync is written, it should fail on Windows because of
some hard coded Unix paths.
I have tested yet this visual interface on Mac. It works
but for now it demands some skills few Mac users have.
I have tested this visual interface on Windows,
it fails on Windows because of some hard coded Unix paths.
I'm working on it to be Windows ok but it's not done yet (october 2019).
Some users have successfully installed a /X visual interface
on Windows using a Linux VM machine.
The web visual user interface frontend /X is compounded in four
files: a html5 file, a css file, a javascript file and
a logo image:
* https://i005.lamiral.info/X/imapsync_form.html
* https://i005.lamiral.info/X/imapsync_form_extra.html
* https://i005.lamiral.info/X/imapsync_form.css
* https://i005.lamiral.info/X/imapsync_form.js
* https://i005.lamiral.info/X/logo_imapsync_Xn.png
@ -54,11 +59,11 @@ with wget.
Those four files can be put anywhere on a web server,
as long as they stand in the same directory. If you
want to put them in different directories, just change
the content of imapsync_form.html to reflect the change,
the content of imapsync_form_extra.html to reflect the change,
ie, change the two lines referencing imapsync_form.css and imapsync_form.js
href="imapsync_form.css" (near the beginning of imapsync_form.html)
src="imapsync_form.js" (near the end of imapsync_form.html)
I let you changing the image logo as an exercise.
href="imapsync_form.css" (near the beginning of imapsync_form_extra.html)
src="imapsync_form.js" (near the end of imapsync_form_extra.html)
I let you changing the image logo as an exercise, it's safe if you fail.
The actual imap syncing work is done by imapsync acting as a CGI,
the visual interface is only there to give imapsync the parameters
@ -78,7 +83,7 @@ If it is under release 4.08 (2014-10-18) then upgrade it with
cpanm CGI
It is a good thing to remove the old one if it was installed
by a distribution package, I let you this part as an exercise.
by a distribution package, I let you this part as an exercise too.
To check and fix the Perl modules dependencies, run:
@ -88,20 +93,21 @@ To check and fix the Perl modules dependencies, run:
In order to make imapsync work as a cgi, there is two conditions.
First, imapsync has to work by itself on the web host.
If imapsync doesn't work by itself, as a command line,
then it won't work as a cgi.
Second, imapsync has to work by itself on the web host using
the Unix user running the web server.
Detailed examples to verify that will be provided further
in this document.
The imapsync_form.html file in action calls the CGI location
Second, imapsync has to work by itself on the web host using
the Unix user running the web server. Detailed examples to
verify that will be provided further in this document.
The imapsync_form_extra.html file in action calls the CGI location
/cgi-bin/imapsync
which has to be imapsync itself, the file script (not the directory).
The very latest and relatively stable imapsync is at
https://imapsync.lamiral.info/imapsync
It is the program file used verbatim for the service given at
This file is the program file used verbatim for the service given at
https://i005.lamiral.info/X/
Copy the three files imapsync_form.* on a directory that is exported
@ -111,9 +117,14 @@ allowing CGIs and you'll have your own imapsync visual interface
and service. The cgi-bin/ directory is usually outside the
hierarchy exported to anybody by the HTTP server.
Now that I have explained the general context for any system,
I'll describe concrete examples on several systems,
Debian/Ubuntu and Centos. Feedbacks show that the Centos
process is easier in case you know just a little of the
linux distributions.
Concrete example on a Debian server with Apache:
=============================================================================
A) Concrete example on a Debian server with Apache:
Imapsync script place on the server disk:
/usr/lib/cgi-bin/imapsync
@ -165,18 +176,18 @@ ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
The UI front-end file place on the server disk in
this example is
/var/www/html/X/imapsync_form.html
/var/www/html/X/imapsync_form_extra.html
but it can be placed it anywhere on disk, the important
thing is that it has to be served by the web server.
mkdir /var/www/html/X/
cd /var/www/html/X/
wget -N \
https://i005.lamiral.info/X/imapsync_form.html \
https://i005.lamiral.info/X/imapsync_form_extra.html \
https://i005.lamiral.info/X/imapsync_form.css \
https://i005.lamiral.info/X/imapsync_form.js \
https://i005.lamiral.info/X/logo_imapsync_Xn.png
ln -s imapsync_form.html index.html
ln -s imapsync_form_extra.html index.html
The imapsync process working directory in cgi mode is
/var/tmp/imapsync_cgi/
@ -186,23 +197,23 @@ In this directory will go the log files and
the pid files.
Check
http://yourhost/X/imapsync_form.html
http://yourhost/X/imapsync_form_extra.html
or the safer
https://yourhost/X/imapsync_form.html
https://yourhost/X/imapsync_form_extra.html
That's all for installing a /X service on Debian.
Example on a Centos 7 server with httpd Apache:
=============================================================================
B) Concrete example on a Centos 7 server with httpd Apache:
mkdir /var/www/html/X/
cd /var/www/html/X/
wget -N \
https://i005.lamiral.info/X/imapsync_form.html \
https://i005.lamiral.info/X/imapsync_form_extra.html \
https://i005.lamiral.info/X/imapsync_form.css \
https://i005.lamiral.info/X/imapsync_form.js \
https://i005.lamiral.info/X/logo_imapsync_Xn.png
ln -s imapsync_form.html index.html
ln -s imapsync_form_extra.html index.html
cd
wget -N https://imapsync.lamiral.info/imapsync
@ -217,9 +228,9 @@ Example on a Centos 7 server with httpd Apache:
Check
http://yourhost/X/imapsync_form.html
http://yourhost/X/imapsync_form_extra.html
or the safer
https://yourhost/X/imapsync_form.html
https://yourhost/X/imapsync_form_extra.html
That's all for installing a /X service on Centos 7.

View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: INSTALL.Ubuntu.txt,v 1.15 2018/11/20 10:28:05 gilles Exp gilles $
# $Id: INSTALL.Ubuntu.txt,v 1.17 2019/11/28 14:35:43 gilles Exp gilles $
This documentation is also located online at
https://imapsync.lamiral.info/INSTALL.d/
@ -21,7 +21,9 @@ libcrypt-ssleay-perl \
libdata-uniqid-perl \
libdigest-hmac-perl \
libdist-checkconflicts-perl \
libencode-imaputf7-perl \
libfile-copy-recursive-perl \
libfile-tail-perl \
libio-compress-perl \
libio-socket-inet6-perl \
libio-socket-ssl-perl \

View File

@ -10,26 +10,42 @@ imapsync_docker_timestamp_dockerfile() {
echo imapsync_docker_build
imapsync_docker_build() {
docker build -t gilleslamiral/imapsync .
docker images
echo
docker build -t gilleslamiral/imapsync . \
&& imapsync_docker_add_tag_version && echo Build SUCCEEDED || echo Build FAILED
echo
#docker run gilleslamiral/imapsync imapsync --testslive
#docker run gilleslamiral/imapsync imapsync --testslive6
# docker run gilleslamiral/imapsync imapsync --testslive6 --nossl2
}
echo imapsync_docker_add_tag_version
imapsync_docker_add_tag_version() {
docker images gilleslamiral/imapsync
echo
version=`docker run gilleslamiral/imapsync imapsync --version`
echo $version
docker tag gilleslamiral/imapsync:latest gilleslamiral/imapsync:$version
docker images gilleslamiral/imapsync
}
echo imapsync_docker_testslive
imapsync_docker_testslive() {
echo docker run gilleslamiral/imapsync imapsync --testslive
docker run gilleslamiral/imapsync imapsync --testslive
}
echo imapsync_docker_testslive6
imapsync_docker_testslive6() {
echo docker run gilleslamiral/imapsync imapsync --testslive6 --ssl1 --ssl2
docker run gilleslamiral/imapsync imapsync --testslive6 --ssl1 --ssl2
}
echo imapsync_docker_tests
imapsync_docker_tests() {
echo docker run gilleslamiral/imapsync imapsync --tests
docker run gilleslamiral/imapsync imapsync --tests
}
@ -39,6 +55,12 @@ docker_delete_all_images() {
docker rmi `docker images -q`
}
echo docker_system_prune
docker_system_prune()
{
docker system prune
}
echo docker_delete_dandling_images
docker_delete_dandling_images() {
docker images
@ -59,8 +81,15 @@ imapsync_docker_rebuild_from_scratch() {
echo imapsync_docker_upload
imapsync_docker_upload() {
docker login --username=gilleslamiral --password=`cat $HOME/var/pass/secret.docker` \
&& docker push gilleslamiral/imapsync
# upload only after successful tests
set -x \
&& imapsync_docker_testslive \
&& imapsync_docker_tests \
&& docker run gilleslamiral/imapsync true \
&& docker login --username=gilleslamiral --password=`cat $HOME/var/pass/secret.docker` \
&& docker push gilleslamiral/imapsync:latest \
&& set +x && echo imapsync push SUCCEEDED || echo imapsync push FAILED
set +x
}

View File

@ -1,9 +1,8 @@
#!/bin/sh
# $Id: prerequisites_imapsync,v 1.32 2019/05/27 18:52:23 gilles Exp gilles $
# $Id: prerequisites_imapsync,v 1.35 2019/11/27 15:58:46 gilles Exp gilles $
MODULES_MANDATORY='
File::Tail
App::cpanminus
Authen::NTLM
CGI
@ -15,8 +14,11 @@ Digest::HMAC
Digest::HMAC_MD5
Digest::MD5
Dist::CheckConflicts
Encode
Encode::Byte
Encode::IMAPUTF7
File::Copy::Recursive
File::Tail
IO::Socket::INET
IO::Socket::INET6
IO::Socket::SSL
@ -27,6 +29,7 @@ JSON::WebToken::Crypt::RSA
HTML::Entities
LWP::UserAgent
Mail::IMAPClient
MIME::Base64
Module::Implementation
Module::Runtime
Module::ScanDeps
@ -47,6 +50,7 @@ Test::More
Test::Pod
Test::Requires
Test::Deep
Text::ParseWords
Try::Tiny
Unicode::String
URI::Escape
@ -128,7 +132,7 @@ search_modules_any() {
}
# Debian, Ubuntu & Co
apt-file -h > /dev/null 2>&1 && {
apt-cache -h > /dev/null 2>&1 && {
search_modules_apt "$@"
return
}
@ -212,7 +216,12 @@ search_modules_apt() {
echo "==== Searching deb package name for $M with: apt-file search /$F"
#echo apt-file search /$F
echo
apt-file search /$F
if apt-file -h > /dev/null 2>&1
then
apt-file search /$F
else
echo "apt-file is not installed. Suggestion: apt-get install apt-file; apt-file update"
fi
echo
echo "==== Searching deb package name for $M with: apt-cache search $M"
#apt-cache search "$M"
@ -259,7 +268,7 @@ test_unix() {
test_unix
#exit
test_perl || exit
test_perl || exit 1
test_make || exit
test_mandatory_modules
list_to_install
@ -268,6 +277,13 @@ EXIT=$?
# Help the user to install missing modules
search_modules_any $LIST_TO_INSTALL
test "$1" = "MODULES_MANDATORY" && search_modules_any $MODULES_MANDATORY
if test "$1" = "MODULES_MANDATORY"
then
search_modules_any $MODULES_MANDATORY
elif test -n "$1"
then
search_modules_any "$@"
fi
test_cpanm
exit $EXIT

241
Makefile
View File

@ -1,5 +1,5 @@
# $Id: Makefile,v 1.301 2019/05/28 14:25:35 gilles Exp gilles $
# $Id: Makefile,v 1.320 2020/01/03 22:50:27 gilles Exp gilles $
.PHONY: help usage all doc
@ -61,7 +61,6 @@ PREFIX ?= /usr
DIST_PATH := dist2/
VERSION := $(shell perl ./imapsync --version 2>/dev/null || cat VERSION)
VERSION_PREVIOUS := $(shell perl ./$(DIST_PATH)/imapsync --version 2>/dev/null || echo ERROR)
VERSION_EXE := $(shell cat ./VERSION_EXE)
IMAPClient_3xx := ./W/Mail-IMAPClient-3.42/lib
IMAPClient := $(IMAPClient_3xx)
@ -83,19 +82,18 @@ DISTRO_CODE := $(shell lsb_release -c -s || echo Unknown)
DISTRO := $(DISTRO_NAME)_$(DISTRO_RELEASE)_$(DISTRO_CODE)
hello:
@echo "$(VERSION)"
@echo "$(DIST_NAME)"
@echo "$(VERSION_PREVIOUS)"
@echo "$(VERSION_EXE)"
@echo "$(IMAPClient)"
@echo "$(HOSTNAME)"
@echo "$(ARCH)"
@echo "$(KERNEL)"
@echo "$(BIN_NAME)"
@echo "$(DISTRO)"
@echo "VERSION $(VERSION)"
@echo "DIST_NAME $(DIST_NAME)"
@echo "VERSION_PREVIOUS $(VERSION_PREVIOUS)"
@echo "IMAPClient $(IMAPClient)"
@echo "HOSTNAME $(HOSTNAME)"
@echo "ARCH $(ARCH)"
@echo "KERNEL $(KERNEL)"
@echo "BIN_NAME $(BIN_NAME)"
@echo "DISTRO $(DISTRO)"
all: doc VERSION biz prereq allcritic bin VERSION_EXE
all: doc VERSION biz prereq allcritic bin
testp :
sh INSTALL.d/prerequisites_imapsync
@ -106,16 +104,14 @@ ChangeLog: imapsync
README: imapsync
pod2text --loose imapsync > README
chmod -x README
VERSION: imapsync
rcsdiff imapsync
perl -I./$(IMAPClient) ./imapsync --version > ./VERSION
touch -r ./imapsync ./VERSION
VERSION_EXE: imapsync
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/imapsync.exe --version' > ./VERSION_EXE
dos2unix ./VERSION_EXE
touch -r ./imapsync ./VERSION_EXE
doc/GOOD_PRACTICES.html: doc/GOOD_PRACTICES.t2t
@ -184,7 +180,7 @@ install: testp W/imapsync.1
.PHONY: prereq test tests unitests testp testf test3xx testv3 perlcritic allcritic crit compok dev cover tidy nytprof
dev: test crit cover nytprof bin
dev: test functree crit cover nytprof bin
docker:
ssh ks3 'cd docker/imapsync && . memo_docker'
@ -193,11 +189,17 @@ docker:
docker_copy_to_ks3:
rsync -av imapsync INSTALL.d/Dockerfile INSTALL.d/memo_docker ks3:docker/imapsync/
rsync -av imapsync INSTALL.d/Dockerfile INSTALL.d/memo_docker INSTALL.d/prerequisites_imapsync ks3:docker/imapsync/
rsync -av RCS/imapsync,v INSTALL.d/RCS/Dockerfile,v INSTALL.d/RCS/memo_docker,v ks3:docker/imapsync/RCS/
docker_upload_docker_hub:
ssh ks3 'cd docker/imapsync && . memo_docker && imapsync_docker_upload'
functree:
perl ./W/learn/function_calls_ppi ./imapsync > W/imapsync_functions_tree_ppi.txt
perl ./W/learn/function_calls ./imapsync > W/imapsync_functions_tree.txt
nytprof:
sh tests.sh ll_nytprof
nytprofhtml
@ -315,6 +317,7 @@ W/test_testsdebug.bat:
.PHONY: W/*.bat examples/*
@ -409,31 +412,46 @@ W/uninstall_module_one.bat:
scp W/uninstall_module_one.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/uninstall_module_one.bat'
imapsync.exe: imapsync
imapsync_32bit.exe: imapsync
rcsdiff imapsync
ssh Admin@c 'perl -V'
(date "+%s"| tr "\n" " "; echo -n "BEGIN " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
(date "+%s"| tr "\n" " "; echo -n "BEGIN 32bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
unix2dos W/build_exe.bat W/test_exe.bat W/install_modules.bat
scp imapsync W/build_exe.bat W/test_exe.bat W/install_modules.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/build_exe.bat'
./W/check_winerr build_exe.bat
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_exe.bat'
./W/check_winerr test_exe.bat
rm -f imapsync.exe
scp Admin@c:'C:/msys/1.0/home/Admin/imapsync/imapsync.exe' .
chmod a+r+x imapsync.exe
(date "+%s"| tr "\n" " "; echo -n "END " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
rm -f imapsync_32bit.exe
scp Admin@c:'C:/msys/1.0/home/Admin/imapsync/imapsync_32bit.exe' .
chmod a+r+x imapsync_32bit.exe
(date "+%s"| tr "\n" " "; echo -n "END 32bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
exe: imapsync
(date "+%s"| tr "\n" " "; echo -n "BEGIN " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
32exe: imapsync
(date "+%s"| tr "\n" " "; echo -n "BEGIN 32bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
scp imapsync W/build_exe.bat W/install_modules.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/build_exe.bat'
./W/check_winerr build_exe.bat
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/imapsync.exe --justbanner'
rm -f imapsync.exe
scp Admin@c:'C:/msys/1.0/home/Admin/imapsync/imapsync.exe' .
chmod a+r+x imapsync.exe
(date "+%s"| tr "\n" " "; echo -n "END " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/imapsync_32bit.exe --justbanner'
rm -f imapsync_32bit.exe
scp Admin@c:'C:/msys/1.0/home/Admin/imapsync/imapsync_32bit.exe' .
chmod a+r+x imapsync_32bit.exe
(date "+%s"| tr "\n" " "; echo -n "END 32bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
p24tests:
unix2dos W/test_tests.bat
scp imapsync W/test_tests.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_tests.bat'
./W/check_win64err test_tests.bat
p24testsdebug:
unix2dos W/test_testsdebug.bat
scp imapsync W/test_testsdebug.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_testsdebug.bat'
./W/check_win64err test_testsdebug.bat
zzz:
unix2dos W/build_exe.bat W/install_module_one.bat
@ -449,6 +467,11 @@ zzz2:
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_exe_tests.bat'
./W/check_win64err test_exe_tests.bat
W/test_ipv6.bat:
unix2dos W/test_ipv6.bat
scp W/test_ipv6.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_ipv6.bat'
W/test4.bat:
unix2dos W/test4.bat
scp W/test4.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
@ -459,6 +482,43 @@ W/test5.bat:
scp W/test5.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test5.bat'
W/test6.bat:
unix2dos W/test6.bat
scp W/test6.bat imapsync pc_HP_DV7_p24:'Desktop/imapsync_build'
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test6.bat'
W/test_abort.bat:
unix2dos W/test_abort.bat
scp W/test_abort.bat imapsync pc_HP_DV7_p24:'Desktop/imapsync_build'
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_abort.bat'
W/test_tail.bat:
unix2dos W/test_tail.bat
scp W/test_tail.bat imapsync pc_HP_DV7_p24:'Desktop/imapsync_build'
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_tail.bat'
win64sshaccess:
ssh 'pc HP DV7'@p24 'perl -V'
win64prepa:
ssh 'pc HP DV7'@p24 'perl -V'
unix2dos W/build_exe.bat W/test_exe.bat W/install_modules.bat W/install_module_one.bat
scp imapsync W/build_exe.bat W/install_modules.bat W/install_module_one.bat \
W/test_exe_tests.bat W/test_exe_testsdebug.bat W/test_exe.bat \
pc_HP_DV7_p24:'Desktop/imapsync_build'
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/build_exe.bat'
./W/check_win64err build_exe.bat
win64build:
unix2dos W/build_exe.bat W/install_modules.bat
scp imapsync W/build_exe.bat W/install_modules.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/build_exe.bat'
./W/check_win64err build_exe.bat
imapsync.exe: imapsync_64bit.exe
cp imapsync_64bit.exe imapsync.exe
imapsync_64bit.exe: imapsync
(date "+%s"| tr "\n" " "; echo -n "BEGIN 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
@ -472,24 +532,24 @@ imapsync_64bit.exe: imapsync
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_exe.bat'
./W/check_win64err test_exe.bat
rm -f imapsync_64bit.exe
scp pc_HP_DV7_p24:'Desktop/imapsync_build/imapsync.exe' imapsync_64bit.exe
scp pc_HP_DV7_p24:'Desktop/imapsync_build/imapsync_64bit.exe' .
chmod a+r+x imapsync_64bit.exe
(date "+%s"| tr "\n" " "; echo -n "END 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
(date "+%s"| tr "\n" " "; echo -n "END 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
zip: dosify_bat
rm -rfv ../prepa_zip/imapsync_$(VERSION_EXE)/
mkdir -p ../prepa_zip/imapsync_$(VERSION_EXE)/FAQ.d/ ../prepa_zip/imapsync_$(VERSION_EXE)/Cook/
cp -av examples/imapsync_example.bat examples/sync_loop_windows.bat examples/file.txt ../prepa_zip/imapsync_$(VERSION_EXE)/
cp -av W/build_exe.bat W/install_modules.bat W/test_cook_exe.bat W/test_cook_src.bat imapsync ../prepa_zip/imapsync_$(VERSION_EXE)/Cook/
for f in README ; do cp -av $$f ../prepa_zip/imapsync_$(VERSION_EXE)/$$f.txt ; done
cp -av FAQ.d/*.txt ../prepa_zip/imapsync_$(VERSION_EXE)/FAQ.d/
cp -av imapsync.exe imapsync_64bit.exe README_Windows.txt ../prepa_zip/imapsync_$(VERSION_EXE)/
unix2dos ../prepa_zip/imapsync_$(VERSION_EXE)/*.txt
cd ../prepa_zip/ && rm -f ./imapsync_$(VERSION_EXE).zip && zip -r ./imapsync_$(VERSION_EXE).zip ./imapsync_$(VERSION_EXE)/
scp ../prepa_zip/imapsync_$(VERSION_EXE).zip Admin@c:'C:/msys/1.0/home/Admin/'
scp ../prepa_zip/imapsync_$(VERSION_EXE).zip pc_HP_DV7_p24:'Desktop/'
cp ../prepa_zip/imapsync_$(VERSION_EXE).zip /fe/imapsync/
rm -rfv ../prepa_zip/imapsync_$(VERSION)/
mkdir -p ../prepa_zip/imapsync_$(VERSION)/FAQ.d/ ../prepa_zip/imapsync_$(VERSION)/Cook/
cp -av examples/imapsync_example.bat examples/sync_loop_windows.bat examples/file.txt ../prepa_zip/imapsync_$(VERSION)/
cp -av W/build_exe.bat W/install_modules.bat W/test_cook_exe.bat W/test_cook_src.bat imapsync ../prepa_zip/imapsync_$(VERSION)/Cook/
for f in README ; do cp -av $$f ../prepa_zip/imapsync_$(VERSION)/$$f.txt ; done
cp -av FAQ.d/*.txt ../prepa_zip/imapsync_$(VERSION)/FAQ.d/
cp -av imapsync.exe imapsync_32bit.exe README_Windows.txt ../prepa_zip/imapsync_$(VERSION)/
unix2dos ../prepa_zip/imapsync_$(VERSION)/*.txt
cd ../prepa_zip/ && rm -f ./imapsync_$(VERSION).zip && zip -r ./imapsync_$(VERSION).zip ./imapsync_$(VERSION)/
scp ../prepa_zip/imapsync_$(VERSION).zip Admin@c:'C:/msys/1.0/home/Admin/'
scp ../prepa_zip/imapsync_$(VERSION).zip pc_HP_DV7_p24:'Desktop/'
cp ../prepa_zip/imapsync_$(VERSION).zip /fe/imapsync/
# C:\Users\mansour\Desktop\imapsync
@ -498,6 +558,16 @@ zip: dosify_bat
mac: imapsync_bin_Darwin
maccopy:
rsync -p -e 'ssh -4 -p 995' imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync webserver \
gilleslamira@gate.polarhome.com:
rsync -av -p -e 'ssh -4 -p 995' X/ gilleslamira@gate.polarhome.com:X/
macforce: maccopy
ssh -4 -p 995 gilleslamira@gate.polarhome.com 'sh -x build_mac.sh'
imapsync_bin_Darwin: imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync
rcsdiff imapsync
rsync -p -e 'ssh -4 -p 995' imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync gilleslamira@gate.polarhome.com:
@ -521,23 +591,28 @@ mactestslive6:
ssh -4 -p 995 gilleslamira@gate.polarhome.com '. .bash_profile; perl imapsync --testslive6'
bin: lin mac win win64
bin: mac win64 win32
lin: $(BIN_NAME)
win: imapsync.exe
win: win64 win32 imapsync.exe
win64: imapsync_64bit.exe
win32: imapsync_32bit.exe
$(BIN_NAME): imapsync
rcsdiff imapsync
{ pp -o $(BIN_NAME) -I $(IMAPClient_3xx) \
{ pp -x -o $(BIN_NAME) -I $(IMAPClient_3xx) \
-M Mail::IMAPClient \
-M Net::SSLeay -M IO::Socket -M IO::Socket::INET6 -M IO::Socket::SSL \
-M Digest::MD5 -M Digest::HMAC_MD5 -M Term::ReadKey \
-M Authen::NTLM -M HTML::Entities -M JSON::WebToken \
imapsync ; \
} || :
}
# Maybe add -M Test2::Event::Info \
#-M Net::SSLeay -M IO::Socket -M IO::Socket::INET6 -M IO::Socket::SSL \
#-M Digest::MD5 -M Digest::HMAC_MD5 -M Term::ReadKey \
#-M Authen::NTLM -M HTML::Entities -M JSON::WebToken \
#-M Test2::Event -M Test2::Formatter -M Test2::Formatter::TAP \
./$(BIN_NAME)
./$(BIN_NAME) --tests
./$(BIN_NAME) --testslive
@ -560,9 +635,8 @@ tarball: cidone
ci: cidone
cidone:
rcsdiff RCS/*
rcsdiff X/cgi_memo X/stat_patterns.txt X/imapsync_form.html X/imapsync_form.js X/imapsync_form.css X/noscript.css
cidone: auto_ci
rcsdiff X/cgi_memo X/*.txt X/imapsync_form.* X/noscript.css
rcsdiff W/*.bat W/*.sh W/*.txt W/*.txt W/*.htaccess
cd W && rcsdiff RCS/*
rcsdiff doc/*.t2t
@ -572,6 +646,7 @@ cidone:
cd examples && rcsdiff RCS/*
rcsdiff W/tools/backup_old_dist W/tools/gen_README_dist W/tools/validate_html4 W/tools/validate_xml_html5 W/tools/fix_email_for_exchange.py
rcsdiff S/*.txt S/*.shtml S/*.html
rcsdiff RCS/*
dist: cidone test clean all perlcritic dist_prepa dist_zip README_dist
@ -583,7 +658,7 @@ md5:
sha:
cd $(DIST_PATH)/ && sha512sum *
.PHONY: moveoldrelease ks2testsdebug ks2tests README_dist
.PHONY: moveoldrelease ks2testsdebug ks2tests README_dist docker_pull_count
moveoldrelease:
./W/tools/backup_old_dist $(DIST_PATH)
@ -600,22 +675,27 @@ dist_prepa: tarball moveoldrelease
dist_zip: zip
cp -a ../prepa_zip/imapsync_$(VERSION_EXE).zip $(DIST_PATH)/
cp -a ../prepa_zip/imapsync_$(VERSION).zip $(DIST_PATH)/
README_dist:
sh W/tools/gen_README_dist > $(DIST_PATH)/README.txt
unix2dos $(DIST_PATH)/README.txt
.PHONY: publish upload_ks ks valid_index biz ks2tests_gilles ks2tests_root
.PHONY: publish upload_ks ks valid_index biz ks2tests_gilles ks2tests_root auto_ci
biz: S/imapsync_sold_by_country.txt
biz: S/imapsync_sold_by_country.txt docker_pull_count
auto_ci: docker_pull_count
docker_pull_count:
cd W/ && rcsdiff docker_pull_count.txt || { echo | ci -l docker_pull_count.txt ; }
S/imapsync_sold_by_country.txt: imapsync
cd S/ && /g/bin/imapsync_by_country && echo | ci -l imapsync_sold_by_country.txt
ks:
rsync -avHz --delete --exclude imapsync.exe \
rsync -avHz --delete --exclude '*.exe' \
. gilles@ks.lamiral.info:public_html/imapsync/
ssh root@ks.lamiral.info 'apachectl configtest && /etc/init.d/apache2 reload'
@ -653,6 +733,11 @@ i005tests_root:
rsync -P imapsync INSTALL.d/prerequisites_imapsync root@i005.lamiral.info:
ssh root@i005.lamiral.info './imapsync --tests'
i005prerequisites:
rsync -P imapsync INSTALL.d/prerequisites_imapsync root@i005.lamiral.info:
ssh root@i005.lamiral.info 'sh prerequisites_imapsync'
ks2testslive:
rsync -aP imapsync gilles@ks.lamiral.info:public_html/imapsync/imapsync
ssh gilles@ks.lamiral.info 'public_html/imapsync/imapsync --testslive'
@ -672,13 +757,13 @@ centos:
PUBLIC = ./ChangeLog ./NOLIMIT ./LICENSE ./CREDITS ./FAQ \
./index.shtml ./INSTALL ./README_Windows.txt \
./VERSION ./VERSION_EXE ./imapsync \
./VERSION ./imapsync \
./README ./TODO ./vnstat
ml:
rcsdiff W/ml_announce.in
m4 -P W/ml_announce.in | mutt -H-
rcsdiff W/ml_announce.in.txt
m4 -P W/ml_announce.in.txt | mutt -H-
mailq
@ -716,9 +801,6 @@ W/.valid.index.shtml: index.shtml
.PHONY: upload_index upload_FAQ ci_imapsync upload_bin
upload_bin:
rsync -a imapsync.exe imapsync_64bit.exe imapsync_bin_Darwin imapsync_bin_Linux_i686 imapsync ../imapsync_website/
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
upload_index: W/.valid.index.shtml clean_permissions
rcsdiff index.shtml README_Windows.txt S/style.css S/*.shtml FAQ.d/*.txt LICENSE CREDITS TODO examples/*.bat examples/*.sh index.shtml INSTALL.d/*.txt
@ -737,24 +819,25 @@ ci_imapsync:
rcsdiff imapsync
upload_latest: unitests ci_imapsync bin
rsync -a imapsync imapsync_bin_Linux_i686 imapsync_bin_Darwin imapsync.exe imapsync_64bit.exe ./INSTALL.d/prerequisites_imapsync ../imapsync_website/
rsync -a imapsync imapsync_bin_Darwin imapsync.exe imapsync_32bit.exe ./INSTALL.d/prerequisites_imapsync ../imapsync_website/
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
ssh root@ks.lamiral.info 'apachectl configtest && /etc/init.d/apache2 reload'
upload_cgi: unitests ks2tests i005tests_root ci_imapsync
rsync -a imapsync ../imapsync_website/
rsync -a imapsync ./INSTALL.d/prerequisites_imapsync ../imapsync_website/
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
rsync -P imapsync root@i005.lamiral.info:/home/www/apache24/cgi-bin/imapsync
upload_cgi_memo:
rsync -av X/cgi_memo X/stat_patterns.txt root@ks2:/var/tmp/imapsync_cgi/
rsync -av X/cgi_memo X/stat_patterns.txt root@i005:/var/tmp/imapsync_cgi/
dos2unix X/stat_patterns.txt X/server_survey_patterns.txt
rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@ks2:/var/tmp/imapsync_cgi/
rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@i005:/var/tmp/imapsync_cgi/
upload_X:
./W/tools/validate_xml_html5 X/imapsync_form.html
rcsdiff X/imapsync_form.html
rcsdiff X/imapsync_form.js
./W/tools/validate_xml_html5 X/index.html X/imapsync_form.html X/imapsync_form_extra.html
rcsdiff X/imapsync_form.html X/imapsync_form_extra.html X/imapsync_form.css X/noscript.css
rcsdiff X/imapsync_form.js
rsync -av --delete X/ ../imapsync_website/X/
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
rsync -av --delete X/ root@i005:/home/www/apache24/data/X/
@ -784,3 +867,9 @@ upload_ks: ci tarball
ssh root@ks.lamiral.info 'apachectl configtest && /etc/init.d/apache2 reload'
upload_ks5:
rsync -aHvz --delete ../imapsync_website/ root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/

234
README
View File

@ -1,11 +1,12 @@
NAME
imapsync - Email IMAP tool for syncing, copying and migrating email
mailboxes between two imap servers, one way, and without duplicates.
imapsync - Email IMAP tool for syncing, copying, migrating and archiving
email mailboxes between two imap servers, one way, and without
duplicates.
VERSION
This documentation refers to Imapsync $Revision: 1.945 $
This documentation refers to Imapsync $Revision: 1.977 $
USAGE
@ -52,15 +53,15 @@ DESCRIPTION
servers.
A classical scenario is synchronizing a mailbox B from another mailbox A
in case you just want to keep a strict copy of A in B. Strict meaning
all messages in A will be in B but no more.
where you just want to keep a strict copy of A in B. Strict meaning all
messages in A will be in B but no more.
For this, option --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 to set up exceptions on
folders to destroy (INBOX will never be destroy, it's a mandatory folder
in IMAP).
folders to destroy. INBOX will never be destroy, it's a mandatory folder
in IMAP.
A different scenario is to delete the messages from the source mailbox
after a successful transfer, it can be a good feature when migrating
@ -88,11 +89,11 @@ OPTIONS
usage: imapsync [options]
Standard options are the six values forming the credentials, three on
each sides, needed to log in into the IMAP servers, ie, a host, a
username, and a password, two times.
The standard options are the six values forming the credentials. Three
values on each side are needed in order to log in into the IMAP servers.
These six values are a host, a username, and a password, two times.
Conventions used:
Conventions used in the following descriptions of the options:
str means string
int means integer
@ -106,8 +107,8 @@ OPTIONS
--host1 str : Source or "from" imap server.
--port1 int : Port to connect on host1.
Optional since default ports are the
well known ports 143 or 993.
Optional since default ports are the
well known ports imap/143 or imaps/993.
--user1 str : User to login on host1.
--password1 str : Password for the user1.
@ -117,10 +118,10 @@ OPTIONS
--password2 str : Password for the user2.
--showpasswords : Shows passwords on output instead of "MASKED".
Useful to restart a complete run by just reading
Useful to restart a complete run by just reading
the command line used in the log,
or to debug passwords.
It's not a secure practice.
It's not a secure practice at all.
--passfile1 str : Password file for the user1. It must contain the
password on the first line. This option avoids showing
@ -184,14 +185,14 @@ OPTIONS
--folderrec str : Sync this folder recursively.
--folderrec str : and this one, etc.
--folderfirst str : Sync this folder first. --folderfirst "Work"
--folderfirst str : Sync this folder first. Ex. --folderfirst "INBOX"
--folderfirst str : then this one, etc.
--folderlast str : Sync this folder last. --folderlast "[Gmail]/All Mail"
--folderlast str : then this one, etc.
--nomixfolders : Do not merge folders when host1 is case-sensitive
while host2 is not (like Exchange). Only the first
similar folder is synced (example: with folders
similar folder is synced (example: with folders
"Sent", "SENT" and "sent"
on host1 only "Sent" will be synced to host2).
@ -218,14 +219,14 @@ OPTIONS
--regextrans2 options before all others.
Add --debug to see what's really going on.
--subfolder1 str : Syncs the host1 folders hierarchy under str
to the root hierarchy of host2.
--subfolder1 str : Syncs the host1 folders hierarchy which is under folder
str to the root hierarchy of host2.
It's the couterpart of a sync done by --subfolder2
when doing it in the reverse order.
when doing it in the reverse order.
Backup/Restore scenario:
Use --subfolder2 str for a backup to the folder str
on host2. Then use --subfolder1 str for restoring
from the folder str, after inverting
on host2. Then use --subfolder1 str for restoring
from the folder str, after inverting
host1/host2 user1/user2 values.
@ -239,25 +240,26 @@ OPTIONS
usually "INBOX." or "INBOX/" or an empty string "".
imapsync guesses the prefix if host1 imap server
does not have NAMESPACE capability. So this option
should not be used, most of the time.
should not be used most of the time.
--prefix2 str : Add prefix to all host2 folders. See --prefix1
--sep1 str : Host1 separator. This option should not be used,
--sep1 str : Host1 separator. This option should not be used
most of the time.
Imapsync gets the separator from the server itself,
by using NAMESPACE, or it tries to guess it
from the folders listing (it counts
characters / . \\ \ in folder names and choose the
more frequent, or finally / if nothing is found.
--sep2 str : Host2 separator.
--sep2 str : Host2 separator. See --sep1
--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
the automatic prefix and separator inversion.
Then, when happy, remove --dry for a run, then
remove --justfolders for the next ones.
Have in mind that --regextrans2 is applied after
the automatic prefix and separator inversion.
For examples see:
https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt
@ -288,6 +290,18 @@ OPTIONS
--logfile str : Change the default log filename (can be dirname/filename).
--logdir str : Change the default log directory. Default is LOG_imapsync/
The default logfile name is for example
LOG_imapsync/2019_12_22_23_57_59_532_user1_user2.txt
where:
2019_12_22_23_57_59_532 is nearly the date of the start
YYYY_MM_DD_HH_MM_SS_mmm
year_month_day_hour_minute_seconde_millisecond
and user1 user2 are the --user1 --user2 values.
OPTIONS/messages
--skipmess reg : Skips messages matching the regex.
@ -295,13 +309,22 @@ OPTIONS
--skipmess is applied before --regexmess
--skipmess reg : or this one, etc.
--skipcrossduplicates : Avoid copying messages that are already copied
in another folder, good from Gmail to X when
X is not also Gmail.
Activated with --gmail1 unless --noskipcrossduplicates
--debugcrossduplicates : Prints which messages (UIDs) are skipped with
--skipcrossduplicates (and in what other folders
they are).
--pipemess cmd : Apply this cmd command to each message content
before the copy.
--pipemess cmd : and this one, etc.
--pipemess cmd : and this one, etc.
With several --pipemess, the output of each cmd
command (STDOUT) is given to the input (STDIN)
command (STDOUT) is given to the input (STDIN)
of the next command.
For example,
For example,
--pipemess cmd1 --pipemess cmd2 --pipemess cmd3
is like a Unix pipe:
"cat message | cmd1 | cmd2 | cmd3"
@ -312,6 +335,23 @@ OPTIONS
Example: 's/\000/ /g' # to replace null by space.
--regexmess reg : and this one, etc.
OPTIONS/labels
Gmail present labels as folders in imap. Imapsync can accelerate the
sync by syncing X-GM-LABELS, it will avoid to transfer messages when
they are already on host2.
--synclabels : Syncs also Gmail labels when a message is copied to host2.
Activated by default with --gmail1 --gmail2 unless
--nosynclabels is added.
--resynclabels : Resyncs Gmail labels when a message is already on host2.
Activated by default with --gmail1 --gmail2 unless
--noresynclabels is added.
For Gmail syncs, see also:
https://imapsync.lamiral.info/FAQ.d/FAQ.Gmail.txt
OPTIONS/flags
If you encounter flag problems see also:
@ -336,7 +376,7 @@ OPTIONS
EXPUNGE IMAP command. If expunging after each message
slows down too much the sync then use
--noexpungeaftereach to speed up, expunging will then be
done only twice per folder, one at the beginning and
done only twice per folder, one at the beginning and
one at the end of a folder sync.
--expunge1 : Expunge messages on host1 just before syncing a folder.
@ -362,12 +402,15 @@ OPTIONS
--delete2folders : Delete folders in host2 that are not in host1 server.
For safety, first try it like this (it is safe):
--delete2folders --dry --justfolders --nofoldersizes
and see what folders will be deleted.
--delete2foldersonly reg : Deleted only folders matching regex.
--delete2foldersonly reg : Delete only folders matching the regex reg.
Example: --delete2foldersonly "/^Junk$|^INBOX.Junk$/"
This option activates --delete2folders
--delete2foldersbutnot reg : Do not delete folders matching regex.
--delete2foldersbutnot reg : Do not delete folders matching the regex rex.
Example: --delete2foldersbutnot "/Tasks$|Contacts$|Foo$/"
This option activates --delete2folders
--noexpunge2 : Do not expunge messages on host2.
--nouidexpunge2 : Do not uidexpunge messages on the host2 account
@ -393,7 +436,7 @@ OPTIONS
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):
You can do (+ zone are the messages selected):
past|----maxage+++++++++++++++>now
past|+++++++++++++++minage---->now
past|----maxage+++++minage---->now (intersection)
@ -401,22 +444,23 @@ OPTIONS
--search str : Selects only messages returned by this IMAP SEARCH
command. Applied on both sides.
For a complete of what can be search see
For a complete set of what can be search see
https://imapsync.lamiral.info/FAQ.d/FAQ.Messages_Selection.txt
--search1 str : Same as --search but for selecting host1 messages only.
--search2 str : Same as --search but for selecting host2 messages only.
--search CRIT equals --search1 CRIT --search2 CRIT
So --search CRIT equals --search1 CRIT --search2 CRIT
--maxlinelength int : skip messages with a line length longer than int bytes.
RFC 2822 says it must be no more than 1000 bytes.
RFC 2822 says it must be no more than 1000 bytes but
real life servers and email clients do more.
--useheader str : Use this header to compare messages on both sides.
Ex: Message-ID or Subject or Date.
--useheader str and this one, etc.
--usecache : Use cache to speed up the sync.
--usecache : Use cache to speed up next syncs. Not set by default.
--nousecache : Do not use cache. Caveat: --useuid --nousecache creates
duplicates on multiple runs.
--useuid : Use UIDs instead of headers as a criterion to recognize
@ -426,10 +470,10 @@ OPTIONS
OPTIONS/miscellaneous
--syncacls : Synchronizes acls (Access Control Lists).
--nosyncacls : Does not synchronize acls. This is the default.
Acls in IMAP are not standardized, be careful
since one acl code on one side may signify something
else on the other one.
--nosyncacls : Does not synchronize acls. This is the default.
--addheader : When a message has no headers to be identified,
--addheader adds a "Message-Id" header,
@ -457,17 +501,17 @@ OPTIONS
OPTIONS/specific
--gmail1 : sets --host1 to Gmail and options from FAQ.Gmail.txt
--gmail2 : sets --host2 to Gmail and options from FAQ.Gmail.txt
--gmail1 : sets --host1 to Gmail and other options. See FAQ.Gmail.txt
--gmail2 : sets --host2 to Gmail and other options. See FAQ.Gmail.txt
--office1 : sets --host1 to Office365 options from FAQ.Exchange.txt
--office2 : sets --host2 to Office365 options from FAQ.Exchange.txt
--office1 : sets --host1 to Office365 and other options. See FAQ.Exchange.txt
--office2 : sets --host2 to Office365 and other options. See FAQ.Exchange.txt
--exchange1 : sets options from FAQ.Exchange.txt, account1 part
--exchange2 : sets options from FAQ.Exchange.txt, account2 part
--exchange1 : sets options for Exchange. See FAQ.Exchange.txt
--exchange2 : sets options for Exchange. See FAQ.Exchange.txt
--domino1 : sets options from FAQ.Domino.txt, account1 part
--domino2 : sets options from FAQ.Domino.txt, account2 part
--domino1 : sets options for Domino. See FAQ.Domino.txt
--domino2 : sets options for Domino. See FAQ.Domino.txt
OPTIONS/behavior
@ -483,11 +527,11 @@ OPTIONS
--abort : terminates a previous call still running.
It uses the pidfile to know what process to abort.
--exitwhenover int : Stop syncing and exits when int total bytes
--exitwhenover int : Stop syncing and exits when int total bytes
transferred is reached.
--version : Print only software version.
--noreleasecheck : Do not check for new imapsync release
--noreleasecheck : Do not check for any new imapsync release.
--releasecheck : Check for new imapsync release.
it's an http request to
http://imapsync.lamiral.info/prj/imapsync/VERSION
@ -498,7 +542,7 @@ OPTIONS
information. Need only --host1 and --host2 options.
Obsolete since "imapsync --host1 imaphost" alone
implies --justconnect
--justlogin : Just login to both host1 and host2 with users
credentials, then exit.
@ -534,8 +578,9 @@ SECURITY
CAPABILITY list of the servers. If TLS is supported then imapsync goes
to encryption.
If the automatic ssl/tls detection fails then imapsync will not protect
against sniffing activities on the network, especially for passwords.
If the automatic ssl and the tls detections fail then imapsync will not
protect against sniffing activities on the network, especially for
passwords.
If you want to force ssl or tls just use --ssl1 --ssl2 or --tls1 --tls2
@ -545,9 +590,9 @@ SECURITY
EXIT STATUS
Imapsync will exit with a 0 status (return code) if everything went
good. Otherwise, it exits with a non-zero status. Here is the list of
the exit code values (an integer between 0 and 255), the names reflects
their meaning:
good. Otherwise, it exits with a non-zero status. That's classical Unix
behavior. Here is the list of the exit code values (an integer between 0
and 255). The names reflect their meaning:
EX_OK => 0 ; #/* successful termination */
EX_USAGE => 64 ; #/* command line usage error */
@ -568,9 +613,9 @@ EXIT STATUS
LICENSE AND COPYRIGHT
Imapsync is free, open, public but not always gratis software cover by
the NOLIMIT Public License. See the LICENSE file included in the
distribution or just read this simple sentence as it IS the licence
text:
the NOLIMIT Public License, now called NLPL. See the LICENSE file
included in the distribution or just read this simple sentence as it IS
the licence text:
"No limits to do anything with this work and this license."
@ -584,8 +629,7 @@ AUTHOR
Gilles LAMIRAL <gilles@lamiral.info>
Good feedback good is always welcome. Bad feedback is very often
welcome.
Good feedback is always welcome. Bad feedback is very often welcome.
Gilles LAMIRAL earns his living by writing, installing, configuring and
teaching free, open and often gratis software. Imapsync used to be
@ -642,8 +686,8 @@ INSTALL
and all Server releases 2000, 2003, 2008 and R2, 2012 and R2, 2016)
as a standalone binary software called imapsync.exe,
usually launched from a batch file in order to avoid always typing
the options.
the options. There is also a 64bit binary called imapsync_64bit.exe
Imapsync works under OS X as a standalone binary
software called imapsync_bin_Darwin
@ -677,48 +721,46 @@ SIMILAR SOFTWARE
See also https://imapsync.lamiral.info/S/external.shtml
for a better up to date list.
Last updated and verified on Thu Apr 11, 2019.
Last updated and verified on Sun Dec 8, 2019.
imapsync : https://github.com/imapsync/imapsync
(this is an imapsync copy, sometimes delayed,
with --noreleasecheck by default since release 1.592, 2014/05/22)
imap_tools : https://web.archive.org/web/20161228145952/http://www.athensfbc.com/imap_tools/
The imap_tools code is now at
https://github.com/andrewnimmo/rick-sanders-imap-tools
imaputils : https://github.com/mtsatsenko/imaputils (very old imap_tools fork)
Doveadm-Sync : https://wiki2.dovecot.org/Tools/Doveadm/Sync ( Dovecot sync tool )
davmail : http://davmail.sourceforge.net/
offlineimap : http://offlineimap.org/
mbsync : http://isync.sourceforge.net/
mailsync : http://mailsync.sourceforge.net/
mailutil : http://www.washington.edu/imap/ part of the UW IMAP tookit.
imaprepl : https://bl0rg.net/software/ http://freecode.com/projects/imap-repl/
imapcopy (Pascal): http://www.ardiehl.de/imapcopy/
imapcopy (Java) : https://code.google.com/archive/p/imapcopy/
imapsize : http://www.broobles.com/imapsize/
migrationtool : http://sourceforge.net/projects/migrationtool/
imapmigrate : http://sourceforge.net/projects/cyrus-utils/
larch : https://github.com/rgrove/larch (derived from wonko_imapsync, good at Gmail)
wonko_imapsync : http://wonko.com/article/554 (superseded by larch)
pop2imap : http://www.linux-france.org/prj/pop2imap/ (I wrote that too)
exchange-away : http://exchange-away.sourceforge.net/
SyncBackPro : http://www.2brightsparks.com/syncback/sbpro.html
ImapSyncClient : https://github.com/ridaamirini/ImapSyncClient
MailStore : https://www.mailstore.com/en/products/mailstore-home/
mnIMAPSync : https://github.com/manusa/mnIMAPSync
imap-upload : http://imap-upload.sourceforge.net/
(a tool for uploading a local mbox file to IMAP4 server)
imapsync: https://github.com/imapsync/imapsync (this is an imapsync copy, sometimes delayed, with --noreleasecheck by default since release 1.592, 2014/05/22)
imap_tools: https://web.archive.org/web/20161228145952/http://www.athensfbc.com/imap_tools/. The imap_tools code is now at https://github.com/andrewnimmo/rick-sanders-imap-tools
imaputils: https://github.com/mtsatsenko/imaputils (very old imap_tools fork)
Doveadm-Sync: https://wiki2.dovecot.org/Tools/Doveadm/Sync ( Dovecot sync tool )
davmail: http://davmail.sourceforge.net/
offlineimap: http://offlineimap.org/
mbsync: http://isync.sourceforge.net/
mailsync: http://mailsync.sourceforge.net/
mailutil: https://www.washington.edu/imap/ part of the UW IMAP toolkit. (well, seems abandoned now)
imaprepl: https://bl0rg.net/software/ http://freecode.com/projects/imap-repl/
imapcopy (Pascal): http://www.ardiehl.de/imapcopy/
imapcopy (Java): https://code.google.com/archive/p/imapcopy/
imapsize: http://www.broobles.com/imapsize/
migrationtool: http://sourceforge.net/projects/migrationtool/
imapmigrate: http://sourceforge.net/projects/cyrus-utils/
larch: https://github.com/rgrove/larch (derived from wonko_imapsync, good at Gmail)
wonko_imapsync: http://wonko.com/article/554 (superseded by larch)
pop2imap: http://www.linux-france.org/prj/pop2imap/ (I wrote that too)
exchange-away: http://exchange-away.sourceforge.net/
SyncBackPro: http://www.2brightsparks.com/syncback/sbpro.html
ImapSyncClient: https://github.com/ridaamirini/ImapSyncClient
MailStore: https://www.mailstore.com/en/products/mailstore-home/
mnIMAPSync: https://github.com/manusa/mnIMAPSync
imap-upload: http://imap-upload.sourceforge.net/ (A tool for uploading a local mbox file to IMAP4 server)
imapbackup: https://github.com/rcarmo/imapbackup (A Python script for incremental backups of IMAP mailboxes)
BitRecover email-backup 99 USD, 299 USD https://www.bitrecover.com/email-backup/.
ImportExportTools: https://addons.thunderbird.net/en-us/thunderbird/addon/importexporttools/ ImportExportTools for Mozilla Thunderbird by Paolo Kaosmos. ImportExportTools does not do IMAP.
HISTORY
I initially wrote imapsync in July 2001 because an enterprise,
basystemes, paid me to install a new imap server without losing huge old
I initially wrote imapsync in July 2001 because an enterprise, called
BaSystemes, paid me to install a new imap server without losing huge old
mailboxes located in a far away remote imap server, accessible by an
often broken low-bandwidth ISDN link.
I had to verify every mailbox was well transferred, all folders, all
messages, without wasting bandwidth or creating duplicates upon resyncs.
The design was made with the beautiful rsync command in mind.
The imapsync design was made with the beautiful rsync command in mind.
Imapsync started its life as a patch of the copy_folder.pl script. The
script copy_folder.pl comes from the Mail-IMAPClient-2.1.3 perl module

238
README.md
View File

@ -3,8 +3,8 @@
You are a great imapsync user or perhaps a future one! I thank you for that, very much.
The paradox to get imapsync stay free and gratis for anyone is that the imapsync author needs to be paid for maintening and improving it.
In case you're using imapsync in a professional context,
then consider buying imapsync and support at https://imapsync.lamiral.info/#buy_all,
In case you're using imapsync in a professional context,
then consider buying imapsync and support at https://imapsync.lamiral.info/#buy_all,
you will get also a regular invoice for your company.
If it's too much, then consider a smaller donation:
@ -17,12 +17,13 @@ If it's too much, then consider a smaller donation:
````
NAME
imapsync - Email IMAP tool for syncing, copying and migrating email
mailboxes between two imap servers, one way, and without duplicates.
imapsync - Email IMAP tool for syncing, copying, migrating and archiving
email mailboxes between two imap servers, one way, and without
duplicates.
VERSION
This documentation refers to Imapsync $Revision: 1.945 $
This documentation refers to Imapsync $Revision: 1.977 $
USAGE
@ -69,15 +70,15 @@ DESCRIPTION
servers.
A classical scenario is synchronizing a mailbox B from another mailbox A
in case you just want to keep a strict copy of A in B. Strict meaning
all messages in A will be in B but no more.
where you just want to keep a strict copy of A in B. Strict meaning all
messages in A will be in B but no more.
For this, option --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 to set up exceptions on
folders to destroy (INBOX will never be destroy, it's a mandatory folder
in IMAP).
folders to destroy. INBOX will never be destroy, it's a mandatory folder
in IMAP.
A different scenario is to delete the messages from the source mailbox
after a successful transfer, it can be a good feature when migrating
@ -105,11 +106,11 @@ OPTIONS
usage: imapsync [options]
Standard options are the six values forming the credentials, three on
each sides, needed to log in into the IMAP servers, ie, a host, a
username, and a password, two times.
The standard options are the six values forming the credentials. Three
values on each side are needed in order to log in into the IMAP servers.
These six values are a host, a username, and a password, two times.
Conventions used:
Conventions used in the following descriptions of the options:
str means string
int means integer
@ -123,8 +124,8 @@ OPTIONS
--host1 str : Source or "from" imap server.
--port1 int : Port to connect on host1.
Optional since default ports are the
well known ports 143 or 993.
Optional since default ports are the
well known ports imap/143 or imaps/993.
--user1 str : User to login on host1.
--password1 str : Password for the user1.
@ -134,10 +135,10 @@ OPTIONS
--password2 str : Password for the user2.
--showpasswords : Shows passwords on output instead of "MASKED".
Useful to restart a complete run by just reading
Useful to restart a complete run by just reading
the command line used in the log,
or to debug passwords.
It's not a secure practice.
It's not a secure practice at all.
--passfile1 str : Password file for the user1. It must contain the
password on the first line. This option avoids showing
@ -201,14 +202,14 @@ OPTIONS
--folderrec str : Sync this folder recursively.
--folderrec str : and this one, etc.
--folderfirst str : Sync this folder first. --folderfirst "Work"
--folderfirst str : Sync this folder first. Ex. --folderfirst "INBOX"
--folderfirst str : then this one, etc.
--folderlast str : Sync this folder last. --folderlast "[Gmail]/All Mail"
--folderlast str : then this one, etc.
--nomixfolders : Do not merge folders when host1 is case-sensitive
while host2 is not (like Exchange). Only the first
similar folder is synced (example: with folders
similar folder is synced (example: with folders
"Sent", "SENT" and "sent"
on host1 only "Sent" will be synced to host2).
@ -235,14 +236,14 @@ OPTIONS
--regextrans2 options before all others.
Add --debug to see what's really going on.
--subfolder1 str : Syncs the host1 folders hierarchy under str
to the root hierarchy of host2.
--subfolder1 str : Syncs the host1 folders hierarchy which is under folder
str to the root hierarchy of host2.
It's the couterpart of a sync done by --subfolder2
when doing it in the reverse order.
when doing it in the reverse order.
Backup/Restore scenario:
Use --subfolder2 str for a backup to the folder str
on host2. Then use --subfolder1 str for restoring
from the folder str, after inverting
on host2. Then use --subfolder1 str for restoring
from the folder str, after inverting
host1/host2 user1/user2 values.
@ -256,25 +257,26 @@ OPTIONS
usually "INBOX." or "INBOX/" or an empty string "".
imapsync guesses the prefix if host1 imap server
does not have NAMESPACE capability. So this option
should not be used, most of the time.
should not be used most of the time.
--prefix2 str : Add prefix to all host2 folders. See --prefix1
--sep1 str : Host1 separator. This option should not be used,
--sep1 str : Host1 separator. This option should not be used
most of the time.
Imapsync gets the separator from the server itself,
by using NAMESPACE, or it tries to guess it
from the folders listing (it counts
characters / . \\ \ in folder names and choose the
more frequent, or finally / if nothing is found.
--sep2 str : Host2 separator.
--sep2 str : Host2 separator. See --sep1
--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
the automatic prefix and separator inversion.
Then, when happy, remove --dry for a run, then
remove --justfolders for the next ones.
Have in mind that --regextrans2 is applied after
the automatic prefix and separator inversion.
For examples see:
https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt
@ -305,6 +307,18 @@ OPTIONS
--logfile str : Change the default log filename (can be dirname/filename).
--logdir str : Change the default log directory. Default is LOG_imapsync/
The default logfile name is for example
LOG_imapsync/2019_12_22_23_57_59_532_user1_user2.txt
where:
2019_12_22_23_57_59_532 is nearly the date of the start
YYYY_MM_DD_HH_MM_SS_mmm
year_month_day_hour_minute_seconde_millisecond
and user1 user2 are the --user1 --user2 values.
OPTIONS/messages
--skipmess reg : Skips messages matching the regex.
@ -312,13 +326,22 @@ OPTIONS
--skipmess is applied before --regexmess
--skipmess reg : or this one, etc.
--skipcrossduplicates : Avoid copying messages that are already copied
in another folder, good from Gmail to X when
X is not also Gmail.
Activated with --gmail1 unless --noskipcrossduplicates
--debugcrossduplicates : Prints which messages (UIDs) are skipped with
--skipcrossduplicates (and in what other folders
they are).
--pipemess cmd : Apply this cmd command to each message content
before the copy.
--pipemess cmd : and this one, etc.
--pipemess cmd : and this one, etc.
With several --pipemess, the output of each cmd
command (STDOUT) is given to the input (STDIN)
command (STDOUT) is given to the input (STDIN)
of the next command.
For example,
For example,
--pipemess cmd1 --pipemess cmd2 --pipemess cmd3
is like a Unix pipe:
"cat message | cmd1 | cmd2 | cmd3"
@ -329,6 +352,23 @@ OPTIONS
Example: 's/\000/ /g' # to replace null by space.
--regexmess reg : and this one, etc.
OPTIONS/labels
Gmail present labels as folders in imap. Imapsync can accelerate the
sync by syncing X-GM-LABELS, it will avoid to transfer messages when
they are already on host2.
--synclabels : Syncs also Gmail labels when a message is copied to host2.
Activated by default with --gmail1 --gmail2 unless
--nosynclabels is added.
--resynclabels : Resyncs Gmail labels when a message is already on host2.
Activated by default with --gmail1 --gmail2 unless
--noresynclabels is added.
For Gmail syncs, see also:
https://imapsync.lamiral.info/FAQ.d/FAQ.Gmail.txt
OPTIONS/flags
If you encounter flag problems see also:
@ -353,7 +393,7 @@ OPTIONS
EXPUNGE IMAP command. If expunging after each message
slows down too much the sync then use
--noexpungeaftereach to speed up, expunging will then be
done only twice per folder, one at the beginning and
done only twice per folder, one at the beginning and
one at the end of a folder sync.
--expunge1 : Expunge messages on host1 just before syncing a folder.
@ -379,12 +419,15 @@ OPTIONS
--delete2folders : Delete folders in host2 that are not in host1 server.
For safety, first try it like this (it is safe):
--delete2folders --dry --justfolders --nofoldersizes
and see what folders will be deleted.
--delete2foldersonly reg : Deleted only folders matching regex.
--delete2foldersonly reg : Delete only folders matching the regex reg.
Example: --delete2foldersonly "/^Junk$|^INBOX.Junk$/"
This option activates --delete2folders
--delete2foldersbutnot reg : Do not delete folders matching regex.
--delete2foldersbutnot reg : Do not delete folders matching the regex rex.
Example: --delete2foldersbutnot "/Tasks$|Contacts$|Foo$/"
This option activates --delete2folders
--noexpunge2 : Do not expunge messages on host2.
--nouidexpunge2 : Do not uidexpunge messages on the host2 account
@ -410,7 +453,7 @@ OPTIONS
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):
You can do (+ zone are the messages selected):
past|----maxage+++++++++++++++>now
past|+++++++++++++++minage---->now
past|----maxage+++++minage---->now (intersection)
@ -418,22 +461,23 @@ OPTIONS
--search str : Selects only messages returned by this IMAP SEARCH
command. Applied on both sides.
For a complete of what can be search see
For a complete set of what can be search see
https://imapsync.lamiral.info/FAQ.d/FAQ.Messages_Selection.txt
--search1 str : Same as --search but for selecting host1 messages only.
--search2 str : Same as --search but for selecting host2 messages only.
--search CRIT equals --search1 CRIT --search2 CRIT
So --search CRIT equals --search1 CRIT --search2 CRIT
--maxlinelength int : skip messages with a line length longer than int bytes.
RFC 2822 says it must be no more than 1000 bytes.
RFC 2822 says it must be no more than 1000 bytes but
real life servers and email clients do more.
--useheader str : Use this header to compare messages on both sides.
Ex: Message-ID or Subject or Date.
--useheader str and this one, etc.
--usecache : Use cache to speed up the sync.
--usecache : Use cache to speed up next syncs. Not set by default.
--nousecache : Do not use cache. Caveat: --useuid --nousecache creates
duplicates on multiple runs.
--useuid : Use UIDs instead of headers as a criterion to recognize
@ -443,10 +487,10 @@ OPTIONS
OPTIONS/miscellaneous
--syncacls : Synchronizes acls (Access Control Lists).
--nosyncacls : Does not synchronize acls. This is the default.
Acls in IMAP are not standardized, be careful
since one acl code on one side may signify something
else on the other one.
--nosyncacls : Does not synchronize acls. This is the default.
--addheader : When a message has no headers to be identified,
--addheader adds a "Message-Id" header,
@ -474,17 +518,17 @@ OPTIONS
OPTIONS/specific
--gmail1 : sets --host1 to Gmail and options from FAQ.Gmail.txt
--gmail2 : sets --host2 to Gmail and options from FAQ.Gmail.txt
--gmail1 : sets --host1 to Gmail and other options. See FAQ.Gmail.txt
--gmail2 : sets --host2 to Gmail and other options. See FAQ.Gmail.txt
--office1 : sets --host1 to Office365 options from FAQ.Exchange.txt
--office2 : sets --host2 to Office365 options from FAQ.Exchange.txt
--office1 : sets --host1 to Office365 and other options. See FAQ.Exchange.txt
--office2 : sets --host2 to Office365 and other options. See FAQ.Exchange.txt
--exchange1 : sets options from FAQ.Exchange.txt, account1 part
--exchange2 : sets options from FAQ.Exchange.txt, account2 part
--exchange1 : sets options for Exchange. See FAQ.Exchange.txt
--exchange2 : sets options for Exchange. See FAQ.Exchange.txt
--domino1 : sets options from FAQ.Domino.txt, account1 part
--domino2 : sets options from FAQ.Domino.txt, account2 part
--domino1 : sets options for Domino. See FAQ.Domino.txt
--domino2 : sets options for Domino. See FAQ.Domino.txt
OPTIONS/behavior
@ -500,11 +544,11 @@ OPTIONS
--abort : terminates a previous call still running.
It uses the pidfile to know what process to abort.
--exitwhenover int : Stop syncing and exits when int total bytes
--exitwhenover int : Stop syncing and exits when int total bytes
transferred is reached.
--version : Print only software version.
--noreleasecheck : Do not check for new imapsync release
--noreleasecheck : Do not check for any new imapsync release.
--releasecheck : Check for new imapsync release.
it's an http request to
http://imapsync.lamiral.info/prj/imapsync/VERSION
@ -515,7 +559,7 @@ OPTIONS
information. Need only --host1 and --host2 options.
Obsolete since "imapsync --host1 imaphost" alone
implies --justconnect
--justlogin : Just login to both host1 and host2 with users
credentials, then exit.
@ -551,8 +595,9 @@ SECURITY
CAPABILITY list of the servers. If TLS is supported then imapsync goes
to encryption.
If the automatic ssl/tls detection fails then imapsync will not protect
against sniffing activities on the network, especially for passwords.
If the automatic ssl and the tls detections fail then imapsync will not
protect against sniffing activities on the network, especially for
passwords.
If you want to force ssl or tls just use --ssl1 --ssl2 or --tls1 --tls2
@ -562,9 +607,9 @@ SECURITY
EXIT STATUS
Imapsync will exit with a 0 status (return code) if everything went
good. Otherwise, it exits with a non-zero status. Here is the list of
the exit code values (an integer between 0 and 255), the names reflects
their meaning:
good. Otherwise, it exits with a non-zero status. That's classical Unix
behavior. Here is the list of the exit code values (an integer between 0
and 255). The names reflect their meaning:
EX_OK => 0 ; #/* successful termination */
EX_USAGE => 64 ; #/* command line usage error */
@ -585,9 +630,9 @@ EXIT STATUS
LICENSE AND COPYRIGHT
Imapsync is free, open, public but not always gratis software cover by
the NOLIMIT Public License. See the LICENSE file included in the
distribution or just read this simple sentence as it IS the licence
text:
the NOLIMIT Public License, now called NLPL. See the LICENSE file
included in the distribution or just read this simple sentence as it IS
the licence text:
"No limits to do anything with this work and this license."
@ -601,8 +646,7 @@ AUTHOR
Gilles LAMIRAL <gilles@lamiral.info>
Good feedback good is always welcome. Bad feedback is very often
welcome.
Good feedback is always welcome. Bad feedback is very often welcome.
Gilles LAMIRAL earns his living by writing, installing, configuring and
teaching free, open and often gratis software. Imapsync used to be
@ -659,8 +703,8 @@ INSTALL
and all Server releases 2000, 2003, 2008 and R2, 2012 and R2, 2016)
as a standalone binary software called imapsync.exe,
usually launched from a batch file in order to avoid always typing
the options.
the options. There is also a 64bit binary called imapsync_64bit.exe
Imapsync works under OS X as a standalone binary
software called imapsync_bin_Darwin
@ -694,48 +738,46 @@ SIMILAR SOFTWARE
See also https://imapsync.lamiral.info/S/external.shtml
for a better up to date list.
Last updated and verified on Thu Apr 11, 2019.
Last updated and verified on Sun Dec 8, 2019.
imapsync : https://github.com/imapsync/imapsync
(this is an imapsync copy, sometimes delayed,
with --noreleasecheck by default since release 1.592, 2014/05/22)
imap_tools : https://web.archive.org/web/20161228145952/http://www.athensfbc.com/imap_tools/
The imap_tools code is now at
https://github.com/andrewnimmo/rick-sanders-imap-tools
imaputils : https://github.com/mtsatsenko/imaputils (very old imap_tools fork)
Doveadm-Sync : https://wiki2.dovecot.org/Tools/Doveadm/Sync ( Dovecot sync tool )
davmail : http://davmail.sourceforge.net/
offlineimap : http://offlineimap.org/
mbsync : http://isync.sourceforge.net/
mailsync : http://mailsync.sourceforge.net/
mailutil : http://www.washington.edu/imap/ part of the UW IMAP tookit.
imaprepl : https://bl0rg.net/software/ http://freecode.com/projects/imap-repl/
imapcopy (Pascal): http://www.ardiehl.de/imapcopy/
imapcopy (Java) : https://code.google.com/archive/p/imapcopy/
imapsize : http://www.broobles.com/imapsize/
migrationtool : http://sourceforge.net/projects/migrationtool/
imapmigrate : http://sourceforge.net/projects/cyrus-utils/
larch : https://github.com/rgrove/larch (derived from wonko_imapsync, good at Gmail)
wonko_imapsync : http://wonko.com/article/554 (superseded by larch)
pop2imap : http://www.linux-france.org/prj/pop2imap/ (I wrote that too)
exchange-away : http://exchange-away.sourceforge.net/
SyncBackPro : http://www.2brightsparks.com/syncback/sbpro.html
ImapSyncClient : https://github.com/ridaamirini/ImapSyncClient
MailStore : https://www.mailstore.com/en/products/mailstore-home/
mnIMAPSync : https://github.com/manusa/mnIMAPSync
imap-upload : http://imap-upload.sourceforge.net/
(a tool for uploading a local mbox file to IMAP4 server)
imapsync: https://github.com/imapsync/imapsync (this is an imapsync copy, sometimes delayed, with --noreleasecheck by default since release 1.592, 2014/05/22)
imap_tools: https://web.archive.org/web/20161228145952/http://www.athensfbc.com/imap_tools/. The imap_tools code is now at https://github.com/andrewnimmo/rick-sanders-imap-tools
imaputils: https://github.com/mtsatsenko/imaputils (very old imap_tools fork)
Doveadm-Sync: https://wiki2.dovecot.org/Tools/Doveadm/Sync ( Dovecot sync tool )
davmail: http://davmail.sourceforge.net/
offlineimap: http://offlineimap.org/
mbsync: http://isync.sourceforge.net/
mailsync: http://mailsync.sourceforge.net/
mailutil: https://www.washington.edu/imap/ part of the UW IMAP toolkit. (well, seems abandoned now)
imaprepl: https://bl0rg.net/software/ http://freecode.com/projects/imap-repl/
imapcopy (Pascal): http://www.ardiehl.de/imapcopy/
imapcopy (Java): https://code.google.com/archive/p/imapcopy/
imapsize: http://www.broobles.com/imapsize/
migrationtool: http://sourceforge.net/projects/migrationtool/
imapmigrate: http://sourceforge.net/projects/cyrus-utils/
larch: https://github.com/rgrove/larch (derived from wonko_imapsync, good at Gmail)
wonko_imapsync: http://wonko.com/article/554 (superseded by larch)
pop2imap: http://www.linux-france.org/prj/pop2imap/ (I wrote that too)
exchange-away: http://exchange-away.sourceforge.net/
SyncBackPro: http://www.2brightsparks.com/syncback/sbpro.html
ImapSyncClient: https://github.com/ridaamirini/ImapSyncClient
MailStore: https://www.mailstore.com/en/products/mailstore-home/
mnIMAPSync: https://github.com/manusa/mnIMAPSync
imap-upload: http://imap-upload.sourceforge.net/ (A tool for uploading a local mbox file to IMAP4 server)
imapbackup: https://github.com/rcarmo/imapbackup (A Python script for incremental backups of IMAP mailboxes)
BitRecover email-backup 99 USD, 299 USD https://www.bitrecover.com/email-backup/.
ImportExportTools: https://addons.thunderbird.net/en-us/thunderbird/addon/importexporttools/ ImportExportTools for Mozilla Thunderbird by Paolo Kaosmos. ImportExportTools does not do IMAP.
HISTORY
I initially wrote imapsync in July 2001 because an enterprise,
basystemes, paid me to install a new imap server without losing huge old
I initially wrote imapsync in July 2001 because an enterprise, called
BaSystemes, paid me to install a new imap server without losing huge old
mailboxes located in a far away remote imap server, accessible by an
often broken low-bandwidth ISDN link.
I had to verify every mailbox was well transferred, all folders, all
messages, without wasting bandwidth or creating duplicates upon resyncs.
The design was made with the beautiful rsync command in mind.
The imapsync design was made with the beautiful rsync command in mind.
Imapsync started its life as a patch of the copy_folder.pl script. The
script copy_folder.pl comes from the Mail-IMAPClient-2.1.3 perl module

View File

@ -1,113 +1,157 @@
# $Id: README_Windows.txt,v 1.14 2019/06/26 22:32:28 gilles Exp gilles $
# $Id: README_Windows.txt,v 1.18 2019/12/11 18:52:16 gilles Exp gilles $
#
# This is the README_Windows.txt file for imapsync
# imapsync : IMAP sync and migrate tool.
# imapsync : IMAP syncing and migration tool.
WINDOWS
=======
=====================
Imapsync on Windows
=====================
There is two ways to install and use imapsync on Windows systems: A) or B).
There is two ways to install and use imapsync on Windows systems: A) or B).
Standard users should take the A) way, the simplest way.
Standard users should take the A) way, the simplest way.
Developers, or powerful users that want to build their own imapsync.exe
or modify it, have to consider the B) way, the complex but powerful way.
Developers, or powerful users that want to build their own imapsync.exe
or modify it, have to consider the B) way, the complex and powerful way.
---------------
A) Simplest way
---------------
A.0) Preamble for visual users looking for a visual tool.
Imapsync itself is not a visual tool. The visual tool is Notepad
or any text editor. Many pure visual users have succeeded using imapsync
to transfer their email accounts. Only the ones that tried have succeeded,
so don't give up before trying once. Another assumption is that visual
users can read. So let's go further.
A.1) Get imapsync.
Get imapsync at https://imapsync.lamiral.info/
You'll then have access to a zip archive file named imapsync_1.xxx.zip
where 1.xxx is the imapsync release number.
Get imapsync at https://imapsync.lamiral.info/
You'll then have access to a zip archive file named imapsync_1.xxx.zip
where 1.xxx is the imapsync release number.
A.2) Extract the zip file in a folder where you will work with imapsync.
You can work on the Desktop since the zip file extraction creates
a unique folder named imapsync_1.xxx (where 1.xxx is the imapsync
release number).
You can work on the Desktop since the zip file extraction creates
a unique folder named imapsync_1.xxx (where 1.xxx is the imapsync
release number).
A.3) Check the folder
In the folder extracted imapsync_1.xxx you see 6 files and 2 directories:
In the folder extracted imapsync_1.xxx you see 6 files and 2 directories:
* README_Windows.txt is the current file you are reading.
* README.txt is the imapsync general document.
* FAQ.d/* FAQs are a good read when something goes wrong.
* imapsync_example.bat is a simple batch file example you will copy and edit.
* sync_loop_windows.bat is a batch file example for syncing many accounts.
* file.txt is an input file example for syncing many accounts.
* imapsync.exe is the imapsync 32bit binary. You don't have to run it directly.
* imapsync_64bit.exe is the imapsync 64bit binary. You don't have to run it directly.
* Cook/ is the directory to build imapsync.exe from its source,
* README_Windows.txt is the current file you are reading.
* README.txt is the imapsync general document.
* FAQ.d/* FAQs are a good read when something goes wrong.
* imapsync_example.bat is a simple batch file example you will copy and edit.
* sync_loop_windows.bat is a batch file example for syncing many accounts.
* file.txt is an input file example for syncing many accounts.
* imapsync.exe is the imapsync 64bit binary. You don't have to run it directly.
* imapsync_32bit.exe is the imapsync 32bit binary. You don't have to run it directly.
* Cook/ is the directory to build imapsync.exe from its source,
for the B) way and expert users.
You can copy or rename the file imapsync_example.bat as you wish,
as long as its extension remains ".bat".
You can copy or rename the file imapsync_example.bat as you wish,
as long as its extension remains ".bat", for example mysync.bat
On Windows systems .bat extension means "I'm a batch script".
It's the same for sync_loop_windows.bat.
On Windows systems .bat extension means "I am a batch script".
A batch script is a file containing commands, it's a program.
Don't be afraid, a program can be simple or at least simple to
modify. Think it like a cook recipe.
The batch scripts have to stay in the same directory than
imapsync.exe because of the way they call imapsync.exe.
They use ".\imapsync.exe", so let them be in the same directory.
The batch scripts have to stay in the same directory than
imapsync.exe because of the way they call imapsync.exe.
They use ".\imapsync.exe", so let them be in the same directory.
Or you can change the path .\ to whatever you want if you understand what
you are doing (you have to use a pathname from the script point of view).
Or you can change the path .\ to whatever you want if you understand what
you are doing (you have to use a pathname from the script point of view).
For the rest of this documentation I assume you copied
imapsync_example.bat to a file named imapsync_stuff.bat
For the rest of this documentation I assume you copied
imapsync_example.bat to a file named imapsync_stuff.bat
If you don't know how to copy and rename a file then
use imapsync_example.bat itself.
A.4) Edit the batch file
Edit imapsync_stuff.bat and change the values with yours.
In order to edit it you have do a right click on it and select "modify"
in the list presented in the small window menu.
Notepad or Notepadd++ are very good editors to modify it.
Office Word or any powerful text processor are not good for that job,
don't use them!
Edit the file imapsync_stuff.bat and change the values with yours.
In order to edit it you have do a right click on it and select "modify"
in the list presented in the small window menu.
Files FAQ.txt and FAQ.d/* contain many tips and special options sometimes
needed by specific imap server softwares like Exchange or Gmail.
Notepad or Notepadd++ are very good editors to modify it.
Office Word or any powerful text processor are not good for that job.
Text processors transform files in a special format that
are wrong to make them stay a good batch file, so don't use them!
Files FAQ.txt and FAQ.d/* contain many tips and special options sometimes
needed by specific imap server softwares like Exchange or Gmail.
Those files are also available online at
https://imapsync.lamiral.info/FAQ.d/
A.5) Run the batch file
To run imapsync with your values just double-click on
the batch file imapsync_stuff.bat
To run imapsync with your values just double-click on
the batch file imapsync_stuff.bat
There is no need to have administrator privileges to run imapsync.
There is no need to have administrator privileges to run imapsync.
A.6) Loop on A.4) A.5) edit, run, edit, run etc.
The run happens in a DOS window.
Loop the process of editing and running imapsync until
you solve all issues and all values suit your needs.
A.6) Look the sync running.
A.7) Look the sync running. You can abort it at any time with a
quick double ctrl-c, hit ctrl-c twice within one second.
(a single ctrl-c will reconnect to both imap servers).
You can abort it at any time with a quick double ctrl-c,
hit ctrl-c twice within one second.
A single ctrl-c will reconnect to both imap servers.
You can also abort the sync by closing the DOS window.
A.8) When the sync is finished you can find the whole log file
of the output in the folder named "LOG_imapsync",
the logfile name is based on the launching date,
hour, minute, second, milliseconds and the user2 parameter.
What you see in this DOS terminal is also put in a logfile located
in the subdirectory LOG_imapsync/
There is one logfile per run.
A.7) Control what happened.
The logfile name is printed at the end of the imapsync run.
If you do not want logging to a file then use option --nolog
When the sync is finished you can find the whole log file
of the output in the folder named "LOG_imapsync".
the logfile name is based on the launching date,
hour, minute, second, milliseconds plus the user1 and user2 parameters.
For example a file name can be
LOG_imapsync\2019_11_29_14_49_36_514_tata_titi.txt
There is one logfile created at each run.
The logfile name is printed at the end of the imapsync run.
When there is a problem, the problem is very often described
at the end of the logfile.
B) Hard way. It is the hard way because it installs all software
dependencies. This is the way for modifying imapsync.exe if needed.
A.8) Loop on A.4 through A.7
* A.4) edit
* A.5) run
* A.6) look
* A.7) control
Loop on the process of editing, running and controlling imapsync
until you solve all issues and the sync is over.
Congratulations!
------------
B) Hard way
------------
It is the hard way because it installs all software dependencies.
This is the way for modifying imapsync.exe if needed.
B.1) Install Perl if it isn't already installed.
Strawberry Perl is a very good candidate
http://strawberryperl.com/
I use 5.26.0.1 (31 may 2017) but previous and later releases
should work (5.18 and 5.20 do) as well.
I use 5.30.1.1 (released 2019-11-22) but previous and later releases
should work as well (Perl 5.18 to 5.26 do).
B.2) Go into the Cook/ directory
B.3) Double-clic build_exe.bat

View File

@ -1,21 +0,0 @@
<!-- $Id: bc-payment.html,v 1.12 2018/02/07 01:03:31 gilles Exp gilles $ -->
<a
class="coinbase-button"
data-code="6a986b9f1386effacf76b350070c93ab"
href="https://www.coinbase.com/checkouts/6a986b9f1386effacf76b350070c93ab"
><img
alt="Pay with Bitcoins"
src="S/images/bitcoin_buy_now_large.png"
/></a>
<!--
<script
src="https://www.coinbase.com/assets/button.js"
>
</script>
-->

View File

@ -29,9 +29,12 @@
<body>
<h1>imapsync donation</h1>
<h1>Imapsync donation</h1>
<p>Help the author to maintain imapsync and its online services:</p>
<h2>Donate via Paypal</h2>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<p>
<input type="hidden" name="cmd" value="_s-xclick"/>
@ -43,11 +46,27 @@ value="-----BEGIN PKCS7-----MIIHRwYJKoZIhvcNAQcEoIIHODCCBzQCAQExggEwMIIBLAIBADCB
</p>
</form>
<h2>Donate with Crypto</h2>
<p>
This donate button will ask your email address and your name but don't hesitate
to give fake ones, like "Smith" and smith@example.com if you prefer to be anonymous.
</p>
<div>
<a class="donate-with-crypto"
href="https://commerce.coinbase.com/checkout/d757d82d-5f54-428e-9260-90c8b032d7ce">
<span>Donate with Crypto</span>
</a>
<script type="text/javascript" src="https://commerce.coinbase.com/v1/checkout.js?version=201807">
</script>
</div>
<p>Thanks in advance!</p>
<hr />
<p>
<a href="http://validator.w3.org/check?uri=referer">
<img width="88" height="31" alt="Valid XHTML 1.0 Strict" src="../S/images/valid-xhtml10" />
</a>
@ -64,7 +83,7 @@ value="-----BEGIN PKCS7-----MIIHRwYJKoZIhvcNAQcEoIIHODCCBzQCAQExggEwMIIBLAIBADCB
<!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" -->
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: paypal.shtml,v 1.13 2018/08/21 12:07:50 gilles Exp gilles $)
($Id: donate.shtml,v 1.16 2019/07/31 22:49:12 gilles Exp gilles $)
</p>
</body>

View File

@ -30,7 +30,7 @@
</h1>
<ul>
<ol>
<li> <b>imapsync</b>: <a href="https://github.com/imapsync/imapsync">https://github.com/imapsync/imapsync</a> (this is an imapsync copy, sometimes delayed, with --noreleasecheck by default since release 1.592, 2014/05/22)</li>
<li> imap_tools: <a href="https://web.archive.org/web/20161228145952/http://www.athensfbc.com/imap_tools/">https://web.archive.org/web/20161228145952/http://www.athensfbc.com/imap_tools/</a>.
The imap_tools code is now at <a href="https://github.com/andrewnimmo/rick-sanders-imap-tools">https://github.com/andrewnimmo/rick-sanders-imap-tools</a></li>
@ -40,8 +40,8 @@
<li> <b>offlineimap</b>: <a href="http://offlineimap.org/">http://offlineimap.org/</a></li>
<li> <b>mbsync</b>: <a href="http://isync.sourceforge.net/">http://isync.sourceforge.net/</a></li>
<li> mailsync: <a href="http://mailsync.sourceforge.net/">http://mailsync.sourceforge.net/</a></li>
<li> mailutil: <a href="http://www.washington.edu/imap/">http://www.washington.edu/imap/</a>
part of the UW IMAP tookit.</li>
<li> mailutil: <a href="https://web.archive.org/web/20191028114408/http://www.washington.edu/imap/">https://www.washington.edu/imap/</a>
part of the UW IMAP toolkit. (well, seems abandoned now)</li>
<li> imaprepl: <a href="https://bl0rg.net/software/">https://bl0rg.net/software/</a>
<a href="http://freecode.com/projects/imap-repl/">http://freecode.com/projects/imap-repl/</a></li>
<li> imapcopy (Pascal): <a href="http://www.ardiehl.de/imapcopy/">http://www.ardiehl.de/imapcopy/</a></li>
@ -63,7 +63,14 @@
(A tool for uploading a local mbox file to IMAP4 server)</li>
<li> imapbackup: <a href="https://github.com/rcarmo/imapbackup">https://github.com/rcarmo/imapbackup</a>
(A Python script for incremental backups of IMAP mailboxes)</li>
</ul>
<li> BitRecover email-backup <b>99 USD, 299 USD</b> <a href="https://www.bitrecover.com/email-backup/">https://www.bitrecover.com/email-backup/</a>.</li>
<li> ImportExportTools: <a href="https://addons.thunderbird.net/en-us/thunderbird/addon/importexporttools/">https://addons.thunderbird.net/en-us/thunderbird/addon/importexporttools/</a>
ImportExportTools for Mozilla Thunderbird by Paolo Kaosmos. ImportExportTools does not do IMAP.
</li>
</ol>
<h1>External online IMAP migration services <a id="ONLINE_OTHERS" href="../#TOP"><small>(back to menu)</small></a>
</h1>
@ -74,21 +81,23 @@ Prices are given par mailbox and may be outdated
(Last checked on Thu Apr 11, 2019).</p>
<ul>
<ol>
<li> Web Hosting Canada <b>0 USD</b>: <a href="https://imapsync.whc.ca/">https://imapsync.whc.ca/</a> (imapsync based)</li>
<li> BoomHost <b>0 USD</b>: <a href="https://imapsync.boomhost.com/">https://imapsync.boomhost.com/</a> (imapsync based)</li>
<li> French Ovh imapcopy <b>0 EUR</b>: <a href="https://mail.ovh.net/fr/imapcopy/">https://mail.ovh.net/fr/imapcopy/</a></li>
<li> <a href="https://tools.controlpanel.si/imapsync/">https://tools.controlpanel.si/imapsync/</a> (imapsync based)</li>
<li> <a href="https://www.cadeolink.com.br/">https://www.cadeolink.com.br/</a> (imapsync based)</li>
<li> Ovh migration <b>0 EUR</b>: <a href="https://omm.ovh.net/Migration/Create">https://omm.ovh.net/Migration/Create</a></li>
<li> Rackspace migration <b>0 USD</b>: <a href="http://www.rackspace.com/email-hosting/migrations">http://www.rackspace.com/email-hosting/migrations</a></li>
<li> Movemymail one free, 5 USD after: <a href="https://movemymail.net">https://movemymail.net/</a></li>
<li> TransferMyEmail 1.50 USD for a day pass: <a href="https://transfermyemail.ca/">https://transfermyemail.ca/</a></li>
<li> Migrationwiz 11.99 USD: <a href="https://www.bittitan.com/products/migrationwiz/">https://www.bittitan.com/products/migrationwiz/</a>
( See this remarkable comparison <a href="https://blog.bittitan.com/imapsync-vs-migrationwiz/">Imapsync vs Migrationwiz</a>! )</li>
<li> Migrationwiz 11.99 USD: <a href="https://www.bittitan.com/products/migrationwiz/">https://www.bittitan.com/products/migrationwiz/</a> </li>
<li> Audriga 11.90 EUR: <a href="https://www.groupware-migration.com/">https://www.groupware-migration.com/</a></li>
<li> Yippiemove 14.95 USD: <a href="http://www.yippiemove.com">http://www.yippiemove.com/</a>
( See <a href="https://www.yippiemove.com/help/faq_generic.html#imapsync">Yippiemove vs ImapSync</a> )</li>
<li> <del>Yippiemove 14.95 USD</del> (discontinued on April 2019): <a href="http://www.yippiemove.com">http://www.yippiemove.com/</a>
( See <a href="https://web.archive.org/web/20161027124328/https://www.yippiemove.com/help/faq_generic.html#imapsync">Yippiemove vs ImapSync</a> )</li>
<li> ShuttleCloud one free, 19.95 USD after <a href="https://www.shuttlecloud.com/">https://www.shuttlecloud.com/</a></li>
</ul>
</ol>
<hr/>
@ -117,7 +126,7 @@ alt="Viewable With Any Browser" />
<!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" -->
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: external.shtml,v 1.34 2019/05/27 16:18:54 gilles Exp gilles $)<br/>
($Id: external.shtml,v 1.45 2019/12/23 12:38:41 gilles Exp gilles $)<br/>
<a href="#TOP">Top of the page</a>
</p>

View File

@ -4,7 +4,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="TOP">
<head>
<title>Imapsync list of the 79 imap server software applications supported</title>
<title>Imapsync list of the 81 imap server software applications supported</title>
<meta name="generator" content="Bluefish 2.2.2" />
<meta name="author" content="Gilles LAMIRAL" />
<meta name="date" content="2016-04-10T00:24:15+0200" />
@ -27,12 +27,12 @@
<body>
<h1>Imapsync list of the 79 imap server software applications supported (and the broken ones) <a id="imap_server_success" href="../#TOP"><small>(back to menu)</small></a>
<h1>Imapsync list of the 81 imap server software applications supported (and the broken ones) <a id="imap_server_success" href="../#TOP"><small>(back to menu)</small></a>
</h1>
<p>To know whether your IMAP server is a widespread choice,
take a look at <a href="http://openemailsurvey.org/">http://openemailsurvey.org/</a>.
The quick answer is: if you're not using Dovecot then you're in a niche!
take a look at <a href="http://openemailsurvey.org/">http://openemailsurvey.org/</a><br/>
The short answer is that if you're not using the famous <b>Dovecot</b> then you're in a niche!
</p>
<p>Let's start with the long reported <b>success stories</b> list: <b>
@ -55,10 +55,12 @@ Example:
Host2 banner:* OK Courier-IMAP ready
</pre>
<p>You can use option --justconnect to get those lines.
Example:</p>
<p>You can use the following command to get those lines
Examples:</p>
<pre>
imapsync --host1 test1.lamiral.info --host2 test2.lamiral.info --justconnect
imapsync --host1 test1.lamiral.info
imapsync --host1 imap.gmail.com
</pre>
@ -74,6 +76,9 @@ imapsync --host1 test1.lamiral.info --host2 test2.lamiral.info --justconnect
<li>ArGoSoft IMAP Module Version 1.8 (1.8.8.2) <a href="http://www.argosoft.com/">http://www.argosoft.com/</a></li>
<li>Atmail 6.x [host1] <a href="https://www.atmail.com/">https://www.atmail.com/</a></li>
<li>Axigen Mail Server Version 8.0.0 (<a href="https://www.axigen.com/">https://www.axigen.com/</a>)</li>
<li>BigFoot 1.0 (Derek Snider)</li>
<li>BincImap 1.2.3 (GPL) (<a href="http://www.bincimap.org/">http://www.bincimap.org/</a>)</li>
<li>BlueMind <a href="https://www.bluemind.net/"></a>https://www.bluemind.net/</li>
<li>ClearOS <a href="https://www.clearos.com/">https://www.clearos.com/</a> uses Cyrus as IMAP backend server.</li>
@ -88,7 +93,7 @@ imapsync --host1 test1.lamiral.info --host2 test2.lamiral.info --justconnect
2.3-alpha (OSI Approved), 2.3.1, 2.3.7, 2.3.16, v2.4.16 [host1]
(<a href="https://www.cyrusimap.org/">https://www.cyrusimap.org/</a>)
</li>
<li>David Tobit V8. (<a href="http://de.tobit.com/">http://de.tobit.com/</a>) </li>
<li>David Tobit V8. (<a href="https://tobit.software/">https://tobit.software/</a>) </li>
<li>David.fx Mail Access Server MA-12.00a (0188) [host1] </li>
<li>DBMail 1.2.1, 2.0.4, 2.0.9, 2.2rc1 (GPL).
2.0.7 seems buggy. (<a href="http://www.dbmail.org/">http://www.dbmail.org/</a>) </li>
@ -100,6 +105,9 @@ imapsync --host1 test1.lamiral.info --host2 test2.lamiral.info --justconnect
(<a href="http://www-03.ibm.com/software/products/en/ibmnotes">http://www-03.ibm.com/software/products/en/ibmnotes</a>) </li>
<li><b>Dovecot</b> 0.99.10.4, 0.99.14, 0.99.14-8.fc4, 1.0-0.beta2.7,
1.0.0 [dest/source] (LGPL) (http://www.dovecot.org/) (<a href="http://www.dovecot.org/">http://www.dovecot.org/</a>) </li>
<li>Earthlink webhosting (<a href="https://www.earthlink.net/">https://www.earthlink.net/</a>) uses BigFoot imap server.</li>
<li>Eudora WorldMail v2 (<a href="http://www.eudora.com/worldmail/">http://www.eudora.com/worldmail/</a>) </li>
<li><b>Exchange Server</b> 5.5, 6.0.6249.0[host1], 6.0.6487.0[host1],
6.5.7638.1 [host2], 6.5 [host1], Exchange 2007 SP1 (with Update Rollup 2),
@ -116,7 +124,7 @@ imapsync --host1 test1.lamiral.info --host2 test2.lamiral.info --justconnect
<li><b>Gimap</b> (<b>Gmail</b> imap) [host1] [host2] (<a href="http://mail.google.com/">http://mail.google.com/</a>) </li>
<li>GMX IMAP4 StreamProxy. (<a href="http://www.gmx.com/">http://www.gmx.com/</a>) </li>
<li>Godaddy IMAP (since Godaddy runs Courier) (<a href="https://www.godaddy.com/">https://www.godaddy.com/</a>) </li>
<li>Groupwise IMAP (Novell) 6.x and 7.0. Buggy so see the FAQ.
<li>Groupwise IMAP (Novell) 6.x and 7.0. Buggy so see the <a href="../FAQ.d/FAQ.Various_Software_Servers.txt">FAQ item about Groupwise</a>
(<a href="http://www.novell.com/products/groupwise/">http://www.novell.com/products/groupwise/</a>) </li>
<li>hMailServer 5.40-B1950 [host12], 5.3.3 [host2], 4.4.1 [host1], 5.3.2-B1769 [host2], 5.6 [host2]
(<a href="https://www.hmailserver.com/">https://www.hmailserver.com/</a>) </li>
@ -152,7 +160,7 @@ imapsync --host1 test1.lamiral.info --host2 test2.lamiral.info --justconnect
<li>Pegasus Mail (by David Harris) [host1] (<a href="http://www.pmail.com/">http://www.pmail.com/</a></li>
<li>Perdition (<a href="http://horms.net/projects/perdition/">http://horms.net/projects/perdition/</a></li>
<li>Perdition (<a href="https://projects.horms.net/projects/perdition/">https://projects.horms.net/projects/perdition/</a></li>
<li>ProtoMail [host1] (<a href="https://protonmail.com/">https://protonmail.com/</a></li>
@ -192,7 +200,7 @@ I will help you and make efforts to switch them to the success list,
that's my job.
</p>
<ul>
<ol>
<li>DBMail 0.9, 2.0.7 (GPL). But most other DBMail releases are supported (see below).</li>
<li>Imail 7.04 (maybe).</li>
<li>MailEnable 1.54 (Proprietary) but MailEnable 4.23 is supported. </li>
@ -200,7 +208,7 @@ that's my job.
but MDaemon is <b>supported as host1</b>.
MDaemon is simply buggy with the APPEND IMAP command with any IMAP email client.
</li>
</ul>
</ol>
@ -230,7 +238,7 @@ alt="Viewable With Any Browser" />
<!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" -->
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: imapservers.shtml,v 1.41 2019/05/27 18:53:01 gilles Exp gilles $)<br/>
($Id: imapservers.shtml,v 1.44 2019/12/02 23:51:12 gilles Exp gilles $)<br/>
<a href="#TOP">Top of the page</a>
</p>

View File

@ -1,45 +1,45 @@
1 Albanie_________________ 0.01 % 100 % 0 % 98
1 Arabie_Saoudite_________ 0.01 % 100 % 0 % 97
1 Bahrein_________________ 0.01 % 100 % 0 % 96
1 Bolivie_________________ 0.01 % 100 % 0 % 95
1 Bosnie-Herzegovine______ 0.01 % 100 % 0 % 94
1 Burkina_Faso____________ 0.01 % 100 % 0 % 93
1 Cameroun________________ 0.01 % 100 % 0 % 92
1 Coree_du_Sud____________ 0.01 % 100 % 0 % 91
1 Grenade_________________ 0.01 % 100 % 0 % 90
1 Ile_Maurice_____________ 0.01 % 100 % 0 % 89
1 Iles_Feroe______________ 0.01 % 100 % 0 % 88
1 Iles_Vierges_britanniques__ 0.01 % 100 % 0 % 87
1 Jamaique________________ 0.01 % 100 % 0 % 86
1 Jordanie________________ 0.01 % 100 % 0 % 85
1 Koweit__________________ 0.01 % 100 % 0 % 84
1 Maldives________________ 0.01 % 100 % 0 % 83
1 Maroc___________________ 0.01 % 100 % 0 % 82
1 Moldavie________________ 0.01 % 100 % 0 % 81
1 Monaco__________________ 0.01 % 100 % 0 % 80
1 Mongolie________________ 0.01 % 100 % 0 % 79
1 Namibie_________________ 0.01 % 100 % 0 % 78
1 Panama__________________ 0.01 % 100 % 0 % 77
1 Qatar___________________ 0.01 % 100 % 0 % 76
1 Republique_d'Azerbaidjan__ 0.01 % 100 % 0 % 75
1 Saint_Christophe-Nevis-Anguilla__ 0.01 % 100 % 0 % 74
1 Senegal_________________ 0.01 % 100 % 0 % 73
1 Tanzanie________________ 0.01 % 100 % 0 % 72
1 Trinite-et-Tobago_______ 0.01 % 100 % 0 % 71
2 Antilles_neerlandaises__ 0.03 % 100 % 0 % 70
2 Colombie________________ 0.03 % 100 % 0 % 69
2 Costa_Rica______________ 0.03 % 100 % 0 % 68
2 Isra 0.03 % 100 % 0 % 67
1 Arabie_Saoudite_________ 0.01 % 100 % 0 % 98
1 Bahrein_________________ 0.01 % 100 % 0 % 97
1 Bolivie_________________ 0.01 % 100 % 0 % 96
1 Bosnie-Herzegovine______ 0.01 % 100 % 0 % 95
1 Burkina_Faso____________ 0.01 % 100 % 0 % 94
1 Cameroun________________ 0.01 % 100 % 0 % 93
1 Coree_du_Sud____________ 0.01 % 100 % 0 % 92
1 Grenade_________________ 0.01 % 100 % 0 % 91
1 Ile_Maurice_____________ 0.01 % 100 % 0 % 90
1 Iles_Feroe______________ 0.01 % 100 % 0 % 89
1 Iles_Vierges_britanniques__ 0.01 % 100 % 0 % 88
1 Jamaique________________ 0.01 % 100 % 0 % 87
1 Jordanie________________ 0.01 % 100 % 0 % 86
1 Koweit__________________ 0.01 % 100 % 0 % 85
1 Maldives________________ 0.01 % 100 % 0 % 84
1 Moldavie________________ 0.01 % 100 % 0 % 83
1 Monaco__________________ 0.01 % 100 % 0 % 82
1 Mongolie________________ 0.01 % 100 % 0 % 81
1 Namibie_________________ 0.01 % 100 % 0 % 80
1 Panama__________________ 0.01 % 100 % 0 % 79
1 Qatar___________________ 0.01 % 100 % 0 % 78
1 Republique_d'Azerbaidjan__ 0.01 % 100 % 0 % 77
1 Saint_Christophe-Nevis-Anguilla__ 0.01 % 100 % 0 % 76
1 Senegal_________________ 0.01 % 100 % 0 % 75
1 Tanzanie________________ 0.01 % 100 % 0 % 74
1 Trinite-et-Tobago_______ 0.01 % 100 % 0 % 73
2 Albanie_________________ 0.03 % 100 % 0 % 72
2 Antilles_neerlandaises__ 0.03 % 100 % 0 % 71
2 Colombie________________ 0.03 % 100 % 0 % 70
2 Costa_Rica______________ 0.03 % 100 % 0 % 69
2 Isra 0.03 % 100 % 0 % 68
2 Maroc___________________ 0.03 % 100 % 0 % 67
2 Nouvelle-Caledonie______ 0.03 % 99 % 1 % 66
2 Perou___________________ 0.03 % 99 % 1 % 65
2 Taiwan__________________ 0.03 % 99 % 1 % 64
2 Ukraine_________________ 0.03 % 99 % 1 % 63
3 Nigeria_________________ 0.04 % 99 % 1 % 62
3 Russie,_Federation______ 0.04 % 99 % 1 % 61
3 Uruguay_________________ 0.04 % 99 % 1 % 60
3 Venezuela_______________ 0.04 % 99 % 1 % 59
4 Indonesie_______________ 0.06 % 99 % 1 % 58
4 Philippines_____________ 0.06 % 99 % 1 % 57
3 Uruguay_________________ 0.04 % 99 % 1 % 61
3 Venezuela_______________ 0.04 % 99 % 1 % 60
4 Indonesie_______________ 0.06 % 99 % 1 % 59
4 Philippines_____________ 0.06 % 99 % 1 % 58
4 Russie,_Federation______ 0.06 % 99 % 1 % 57
4 Serbie__________________ 0.06 % 99 % 1 % 56
4 Turquie_________________ 0.06 % 99 % 1 % 55
4 Vietnam_________________ 0.06 % 99 % 1 % 54
@ -47,53 +47,53 @@
5 Egypte__________________ 0.07 % 99 % 1 % 52
5 Ireland_________________ 0.07 % 99 % 1 % 51
5 Lituanie________________ 0.07 % 99 % 1 % 50
6 Malte___________________ 0.09 % 99 % 1 % 49
6 Malte___________________ 0.08 % 99 % 1 % 49
7 Chypre__________________ 0.10 % 99 % 1 % 48
7 Estonie_________________ 0.10 % 98 % 2 % 47
7 Islande_________________ 0.10 % 98 % 2 % 46
8 Croatie_________________ 0.11 % 98 % 2 % 45
8 Thailande_______________ 0.11 % 98 % 2 % 44
10 Emirats_Arabes_Unis_____ 0.14 % 98 % 2 % 43
10 Lettonie________________ 0.14 % 98 % 2 % 42
13 Israel__________________ 0.19 % 98 % 2 % 41
15 Chine___________________ 0.21 % 98 % 2 % 40
15 Luxembourg______________ 0.21 % 97 % 3 % 39
16 Malaisie________________ 0.23 % 97 % 3 % 38
16 Singapour_______________ 0.23 % 97 % 3 % 37
17 Argentine_______________ 0.24 % 97 % 3 % 36
17 Chili___________________ 0.24 % 96 % 4 % 35
18 Slovenie________________ 0.26 % 96 % 4 % 34
19 Mexique_________________ 0.27 % 96 % 4 % 33
19 Slovaquie_______________ 0.27 % 96 % 4 % 32
21 Inde____________________ 0.30 % 95 % 5 % 31
23 Roumanie________________ 0.33 % 95 % 5 % 30
24 Hong-Kong_______________ 0.34 % 95 % 5 % 29
24 Irlande_________________ 0.34 % 94 % 6 % 28
25 Afrique_du_Sud__________ 0.36 % 94 % 6 % 27
25 Grece___________________ 0.36 % 94 % 6 % 26
31 Japon___________________ 0.44 % 93 % 7 % 25
31 Portugal________________ 0.44 % 93 % 7 % 24
31 Russie__________________ 0.44 % 92 % 8 % 23
32 Nouvelle-Zelande________ 0.46 % 92 % 8 % 22
35 Hongrie_________________ 0.50 % 92 % 8 % 21
37 ________________________ 0.53 % 91 % 9 % 20
48 Finlande________________ 0.69 % 91 % 9 % 19
50 Norvege_________________ 0.71 % 90 % 10 % 18
53 Republique_tcheque______ 0.76 % 89 % 11 % 17
66 Bresil__________________ 0.94 % 88 % 12 % 16
78 Pologne_________________ 1.11 % 87 % 13 % 15
96 Danemark________________ 1.37 % 86 % 14 % 14
108 Suede___________________ 1.54 % 85 % 15 % 13
115 Belgique________________ 1.64 % 83 % 17 % 12
149 Espagne_________________ 2.13 % 82 % 18 % 11
171 Autriche________________ 2.44 % 80 % 20 % 10
227 Australie_______________ 3.24 % 77 % 23 % 9
272 Suisse__________________ 3.89 % 74 % 26 % 8
287 Canada__________________ 4.10 % 70 % 30 % 7
299 Pays-Bas________________ 4.27 % 66 % 34 % 6
345 France__________________ 4.93 % 62 % 38 % 5
420 Italie__________________ 6.00 % 57 % 43 % 4
631 Royaume-Uni_____________ 9.02 % 51 % 49 % 3
1366 Allemagne_______________ 19.52 % 42 % 58 % 2
1553 Etats-Unis______________ 22.20 % 22 % 78 % 1
TOTAL = 6997 sales 342245 EUR over 98 countries on Thu Jun 27 01:16:49 CEST 2019
10 Croatie_________________ 0.14 % 98 % 2 % 45
10 Emirats_Arabes_Unis_____ 0.14 % 98 % 2 % 44
10 Lettonie________________ 0.14 % 98 % 2 % 43
10 Thailande_______________ 0.14 % 98 % 2 % 42
13 Israel__________________ 0.18 % 98 % 2 % 41
16 Chine___________________ 0.22 % 98 % 2 % 40
16 Luxembourg______________ 0.22 % 97 % 3 % 39
17 Argentine_______________ 0.23 % 97 % 3 % 38
17 Malaisie________________ 0.23 % 97 % 3 % 37
17 Singapour_______________ 0.23 % 97 % 3 % 36
18 Chili___________________ 0.25 % 96 % 4 % 35
19 Mexique_________________ 0.26 % 96 % 4 % 34
19 Slovenie________________ 0.26 % 96 % 4 % 33
21 Slovaquie_______________ 0.29 % 96 % 4 % 32
23 Inde____________________ 0.32 % 95 % 5 % 31
24 Irlande_________________ 0.33 % 95 % 5 % 30
24 Roumanie________________ 0.33 % 95 % 5 % 29
25 Grece___________________ 0.34 % 94 % 6 % 28
25 Hong-Kong_______________ 0.34 % 94 % 6 % 27
27 Afrique_du_Sud__________ 0.37 % 94 % 6 % 26
31 Russie__________________ 0.43 % 93 % 7 % 25
32 Japon___________________ 0.44 % 93 % 7 % 24
33 Nouvelle-Zelande________ 0.45 % 92 % 8 % 23
34 Portugal________________ 0.47 % 92 % 8 % 22
37 Hongrie_________________ 0.51 % 92 % 8 % 21
40 ________________________ 0.55 % 91 % 9 % 20
51 Finlande________________ 0.70 % 90 % 10 % 19
52 Norvege_________________ 0.72 % 90 % 10 % 18
54 Republique_tcheque______ 0.74 % 89 % 11 % 17
67 Bresil__________________ 0.92 % 88 % 12 % 16
86 Pologne_________________ 1.18 % 87 % 13 % 15
96 Danemark________________ 1.32 % 86 % 14 % 14
115 Suede___________________ 1.58 % 85 % 15 % 13
117 Belgique________________ 1.61 % 83 % 17 % 12
155 Espagne_________________ 2.13 % 82 % 18 % 11
175 Autriche________________ 2.41 % 80 % 20 % 10
233 Australie_______________ 3.21 % 77 % 23 % 9
280 Suisse__________________ 3.85 % 74 % 26 % 8
296 Canada__________________ 4.07 % 70 % 30 % 7
316 Pays-Bas________________ 4.35 % 66 % 34 % 6
362 France__________________ 4.98 % 62 % 38 % 5
445 Italie__________________ 6.12 % 57 % 43 % 4
654 Royaume-Uni_____________ 9.00 % 51 % 49 % 3
1427 Allemagne_______________ 19.63 % 42 % 58 % 2
1594 Etats-Unis______________ 21.93 % 22 % 78 % 1
TOTAL = 7269 sales 360271 EUR over 98 countries on Fri Jan 3 23:44:21 CET 2020

View File

@ -39,44 +39,47 @@ next and previous releases <a href="../#TOP" id="latest"><small>(back to menu)
<!--
<ul>
<li><b>1.930</b></li>
<li><b>Enhancement</b>: </li>
<li><b>Enhancement</b>: </li>
<li><b>Enhancement</b>: </li>
<li><b>Enhancement</b>: </li>
<li><b>Enhancement</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Refactoring</b>: </li>
<li><b>Refactoring</b>: </li>
<li><b>Refactoring</b>: </li>
<li><b>Refactoring</b>: </li>
<li><b>Security</b>: </li>
<li><b>Security</b>: </li>
<li><b>Portability</b>: </li>
<li><b>Portability</b>: </li>
<li><b>Dependency removed</b>: </li>
<li><b>Dependency added</b>: Perl module Text::ParseWords;</li>
<li><b>Roadmap</b>: </li>
</ul>
<ul>
<li><b>1.964</b></li>
<li><b>Dependencies removed</b>: </li>
<li><b>Dependencies added</b>: Perl modules </li>
<li><b>Enhancement</b>: </li>
<li><b>Enhancement</b>: </li>
<li><b>Enhancement</b>: </li>
<li><b>Enhancement</b>: </li>
<li><b>Enhancement</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Usability</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Bug fix</b>: </li>
<li><b>Refactoring</b>: </li>
<li><b>Refactoring</b>: </li>
<li><b>Refactoring</b>: </li>
<li><b>Refactoring</b>: </li>
<li><b>Security</b>: </li>
<li><b>Security</b>: </li>
<li><b>Portability</b>: </li>
<li><b>Portability</b>: </li>
</ul>
-->
@ -84,11 +87,65 @@ next and previous releases <a href="../#TOP" id="latest"><small>(back to menu)
<ul>
<li><b>Roadmap</b>: Build a docker image including everything, to have a complete online /X in a single command.</li>
<li><b>Roadmap</b>: Or better: Include a webserver in imapsync to have an online /X integrated.</li>
<li><b>Roadmap</b>: Add the sync of multiple accounts inside imapsync itself instead of via an external shell script doing the loop from a csv file.</li>
</ul>
<ul>
<li><b>1.977</b></li>
<li><b>Dependencies removed</b>: None.</li>
<li><b>Dependencies added</b>: Perl modules Encode::IMAPUTF7</li>
<li><b>Enhancement</b>: Folders sizes are now presented per folder for host1 and host2,
as well as the differrences between them.
Comparing folders is now easier</li>
<li><b>Enhancement</b>: cgidir is . when used by Net::Server::HTTP</li>
<li><b>Enhancement</b>: Added context in --releasecheck user_agent. CGI or Docker or Standard.</li>
<li><b>Usability</b>: Added ETA at the beginning of a folder process (it is also to improve the /X progress bar accuracy).</li>
<li><b>Usability</b>: Added the number of errors and the max number of errors allowed at the final line.
Example: "Exiting with return value 0 (EX_OK: successful termination) 0/50 nb_errors/max_errors"</li>
<li><b>Bug fix</b>: Folders names with + characters must keep their + as they are when prensenting them in uft8 (in folders listings [] = [], right part)</li>
<li><b>Bug fix</b>: PIDs can be negative under Windows.</li>
<li><b>Bug fix</b>: --resynclabels was not on with --gmail1 --gmail2</li>
<li><b>Bug fix</b>: Count a fatal error as a error before presenting the count errors when exiting.</li>
<li><b>Bug fix</b>: Docker context. Killing myself in docker context doesn't seem to work well,
as well as sending signals several times.
So just install catch_exit with INT (ctr-c on terminals)
and exits if still alive after killing myself.</li>
<li><b>Bug fix</b>: Option --justconnect did not show the line "IP address:"</li>
<li><b>Bug fix</b>: Reviewed all exit_clean to include a final CR on the error message.</li>
<li><b>Bug fix</b>: Added SSL_cipher_list => 'DEFAULT:!DH' to tests with ssl.</li>
<li><b>Bug fix</b>: When using --subfolder2 SUB and --delete2folders, do not delete the folder SUB (even it is not on host1).</li>
<li><b>Bug fix</b>: CGI context. charset was charset=ISO-8859-1 in header (CGI.pm default). Now "text/plain; charset=UTF-8"</li>
<li><b>Bug fix</b>: </li>
<li><b>Refactoring</b>: Moved main instructions into sub single_sync(). The goal is to prepare multiple different syncs in imapsync.</li>
<li><b>Refactoring</b>: Cgi context is now set on with env variables SERVER_SOFTWARE and SERVER_PORT (was only SERVER_SOFTWARE).
It is because Net::Server::HTTP does not set SERVER_SOFTWARE but SERVER_PORT.
It is a preparation to a homemade web server to serve on imapsync as a cgi and
get free from Apache or a complicated web server stuff configuration.
</li>
</ul>
<ul>
<li><b>1.944</b> (2019/06/25) </li>
<li><b>1.945</b> (2019/06/25) </li>
<li><b>Dependency added</b>: Perl modules Text::ParseWords and File::Tail </li>
<li><b>Enhancement</b>: A new /X including:
<ul>
<li>Options like <tt>--dry --justlogin --justfolders --justfoldersizes</tt>,</li>
@ -97,9 +154,11 @@ next and previous releases <a href="../#TOP" id="latest"><small>(back to menu)
</ul>
</li>
<li><b>Usability</b>: Added the error message text after "Exiting with return value xx".
Example: Exiting with return value 16 (EXIT_AUTHENTICATION_FAILURE)</li>
<li><b>Usability</b>: Now "imapsync --host1 imap.lamiral.info" or "imapsync --host2 127.0.0.1" is ok and do like a --justconnect on servers.
Useful to check rapidely an imap server.
<li><b>Usability</b>: Now "imapsync --host1 imap.lamiral.info" or "imapsync --host2 127.0.0.1" or both do like a --justconnect on servers.
Useful to check rapidely an imap server. Caveat: no longer a command line error.
</li>
<li><b>Usability</b>: Added some error message texts explaining the exit numbers. Example: "Exiting with return value 16 (EXIT_AUTHENTICATION_FAILURE)"</li>
@ -192,9 +251,6 @@ next and previous releases <a href="../#TOP" id="latest"><small>(back to menu)
<li><b>Portability</b>: Upgraded Mac binary to handle TLSv1.2</li>
<li><b>Dependency added</b>: Perl modules Text::ParseWords and File::Tail
</li>
<li><b>Roadmap</b>: Will add <tt>--subfolder1</tt> and <tt>--subfolder2</tt> parameters to /X in order to make backup/restore syncs.</li>
@ -821,7 +877,7 @@ by ignoring PERMANENTFLAGS (Exchange tests)</li>
<!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" -->
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: news.shtml,v 1.67 2019/06/25 21:33:09 gilles Exp gilles $)<br />
($Id: news.shtml,v 1.74 2020/01/01 21:07:13 gilles Exp gilles $)<br />
<a href="#TOP">Top of the page</a>
</p>
</body></html>

1
S/paypal.shtml_ Symbolic link
View File

@ -0,0 +1 @@
donate.shtml

341
S/privacy_policy.shtml Normal file
View File

@ -0,0 +1,341 @@
<!DOCTYPE html>
<html lang="en" id="TOP">
<head>
<meta charset="utf-8" >
<title>Imapsync Privacy Policy</title>
<meta name="author" content="Gilles LAMIRAL" >
<meta name="copyright" content="None">
<link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" >
<link href="../S/style.css" rel="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!--
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
-->
<!--
The link to the HTML5Shiv must be placed in the <head> element, after any stylesheets
http://www.w3schools.com/html/html5_browsers.asp
-->
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<section>
<h1>
Privacy Policy
<a id="Privacy_Policy" href="../#TOP"><small>(back to menu)</small></a>
</h1>
<p>Effective date: November 1, 2010</p>
<p>
Gilles LAMIRAL (I) operates the
<a href="https://imapsync.lamiral.info/X">
Imapsync Online Service</a> (the "Service").
</p>
<p>
This page informs you of our policies regarding the collection, use,
and disclosure of personal data when you use our Service
and the choices you have associated with that data.
</p>
<p>
We use your data to provide and improve the Service.
By using the Service, you agree to the collection
and use of information in accordance with this policy.
Unless otherwise defined in this Privacy Policy,
terms used in this Privacy Policy have the same meanings
as in our Terms and Conditions,
accessible from https://imapsync.lamiral.info</p>
<h2>Information Collection And Use</h2>
<p>We collect several different types of information
for various purposes to provide and improve our Service to you.</p>
<h3>Types of Data Collected</h3>
<h4>Personal Data</h4>
<p>While using our Service, we may ask you to provide us with
certain personally identifiable information that can be used to
contact or identify you ("Personal Data").
Personally identifiable information may include, but is not limited to:</p>
<ul>
<li>Email address</li>
<li>Cookies and Usage Data</li>
</ul>
<h4>Usage Data</h4>
<p>
We may also collect information how the Service is
accessed and used ("Usage Data").
This Usage Data may include information such as your
computer's Internet Protocol address (e.g. IP address),
browser type, browser version,
the pages of our Service that you visit, the time and date of your visit,
the time spent on those pages, unique device identifiers
and other diagnostic data.</p>
<h4>Tracking & Cookies Data</h4>
<p>
We use cookies and similar tracking technologies to track the activity
on our Service and hold certain information.
</p>
<p>
Cookies are files with small amount of data which may include an
anonymous unique identifier.
Cookies are sent to your browser from a website and stored on your device.
Tracking technologies also used are beacons, tags, and scripts to collect
and track information and to improve and analyze our Service.
</p>
<p>
You can instruct your browser to refuse all cookies or to indicate
when a cookie is being sent.
If you do not accept cookies, it should be ok to use our Service.
</p>
<p>Examples of Cookies we use:</p>
<ul>
<li><strong>Session Cookies.</strong> We use Session Cookies to operate our Service.</li>
<li><strong>Preference Cookies.</strong> We use Preference Cookies to remember your preferences and various settings.</li>
<li><strong>Security Cookies.</strong> We use Security Cookies for security purposes.</li>
</ul>
<h2>Use of Data</h2>
<p>imapsync uses the collected data for various purposes:
</p>
<ul>
<li>To provide and maintain the Service</li>
<li>To notify you about changes to our Service</li>
<li>To allow you to participate in interactive features of our Service when you choose to do so</li>
<li>To provide customer care and support</li>
<li>To provide analysis or valuable information so that we can improve the Service</li>
<li>To monitor the usage of the Service</li>
<li>To detect, prevent and address technical issues</li>
</ul>
<h2>Transfer Of Data</h2>
<p>
Your information, including Personal Data, may be transferred to
— and maintained on — computers located outside of your state,
province, country or other governmental jurisdiction where the
data protection laws may differ than those from your jurisdiction.
</p>
<p>
If you are located outside France and choose to provide information to us,
please note that we transfer the data, including Personal Data,
to France and process it there.
</p>
<p>
Your consent to this Privacy Policy followed by your submission of
such information represents your agreement to that transfer.
</p>
<p>
imapsync will take all steps reasonably necessary to ensure that your
data is treated securely and in accordance with this Privacy Policy and
no transfer of your Personal Data will take place to an organization or
a country unless there are adequate controls in place including the
security of your data and other personal information.
</p>
<h2>Disclosure Of Data</h2>
<h3>Legal Requirements</h3>
<p>imapsync may disclose your Personal Data in the
good faith belief that such action is necessary to:
</p>
<ul>
<li>To comply with a legal obligation</li>
<li>To protect and defend the rights or property of imapsync</li>
<li>
To prevent or investigate possible wrongdoing in
connection with the Service
</li>
<li>
To protect the personal safety of users of
the Service or the public
</li>
<li>To protect against legal liability</li>
</ul>
<h2>Security Of Data</h2>
<p>The security of your data is important to us, but remember that
no method of transmission over the Internet,
or method of electronic storage is 100% secure.
While we strive to use commercially acceptable means
to protect your Personal Data, we cannot guarantee
its absolute security.
</p>
<h2>Service Providers</h2>
<p>We may employ third party companies and individuals
to facilitate our Service ("Service Providers"),
to provide the Service on our behalf,
to perform Service-related services
or to assist us in analyzing how our Service is used.
</p>
<p>
These third parties have access to your Personal Data only
to perform these tasks on our behalf and are obligated
not to disclose or use it for any other purpose.
</p>
<h2>Links To Other Sites</h2>
<p>
Our Service may contain links to other sites that are not operated by us.
If you click on a third party link, you will be directed to
that third party's site.
We strongly advise you to review the Privacy Policy of every site you visit.
</p>
<p>
We have no control over and assume no responsibility for the content,
privacy policies or practices of any third party sites or services.
</p>
<h2>Children's Privacy</h2>
<p>Our Service does not address anyone under the age of 18 ("Children").
</p>
<p>
We do not knowingly collect personally identifiable information
from anyone under the age of 18.
If you are a parent or guardian and you are aware
that your Children has provided us with Personal Data,
please contact us.
If we become aware that we have collected Personal Data
from children without verification of parental consent,
we take steps to remove that information from our servers.
</p>
<h2>Changes To This Privacy Policy</h2>
<p>
We may update our Privacy Policy from time to time.
We will notify you of any changes by posting the
new Privacy Policy on this page.
</p>
<p>
We will let you know via email and/or a prominent notice
on our Service, prior to the change becoming effective and
update the "effective date" at the top of this Privacy Policy.
</p>
<p>
You are advised to review this Privacy Policy periodically
for any changes.
Changes to this Privacy Policy are effective when
they are posted on this page.
</p>
<h2>Contact Us</h2>
<p>If you have any questions about this Privacy Policy, please contact us:
</p>
<ul>
<li>By email: gilles@lamiral.info</li>
<li>By visiting this page on our website:
<a href="https://imapsync.lamiral.info">https://imapsync.lamiral.info
</a>
</li>
<li>By phone number: +33619220354</li>
<li>By mail: Gilles LAMIRAL, 22 La Billais, 35580 Baulon, France</li>
</ul>
<p>
Our Privacy Policy for imapsync was created with the help of the
<a href="https://www.freeprivacypolicy.com/free-privacy-policy-generator.php">
Free Privacy Policy Generator</a>.
</p>
</section>
<footer>
<hr>
<a href="http://validator.w3.org/check?uri=referer">
<img
src="../S/images/valid-W3C-html5.png"
alt="Valid HTML5" height="31" width="88" >
</a>
<a href="http://jigsaw.w3.org/css-validator/check/referer">
<img style="border:0;width:88px;height:31px"
src="../S/images/vcss-blue"
alt="CSS Valide !" >
</a>
<a href="http://www.anybrowser.org/campaign/">
<img style="border:0;width:88px;height:31px"
src="../S/images/ab_jlh.png"
alt="Viewable With Any Browser" >
</a>
<hr>
<p>
<!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" -->
<b>This document was last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: privacy_policy.shtml,v 1.3 2019/12/23 15:57:00 gilles Exp gilles $)<br>
<a href="#TOP">Top of the page</a>
</p>
</footer>
</body>
</html>

View File

@ -0,0 +1,409 @@
<!DOCTYPE html>
<html lang="en" id="TOP">
<head>
<meta charset="utf-8" >
<title>Imapsync Terms and Conditions</title>
<meta name="author" content="Gilles LAMIRAL" >
<meta name="copyright" content="None">
<link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" >
<link href="../S/style.css" rel="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!--
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
-->
<!--
The link to the HTML5Shiv must be placed in the <head> element, after any stylesheets
http://www.w3schools.com/html/html5_browsers.asp
-->
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<section>
<h1>Imapsync Terms and Conditions
<a id="Terms_and_Conditions" href="../#TOP"><small>(back to menu)</small></a>
</h1>
<p>Please read these terms and conditions carefully before using Our Service.
</p>
<h1>Interpretation and Definitions</h1>
<h2>Interpretation</h2>
<p>
The words of which the initial letter is capitalized
have meanings defined under the following conditions.
</p>
<p>
The following definitions shall have the same meaning
regardless of whether they appear in singular or in plural.
</p>
<h2>Definitions</h2>
<p>For the purposes of these Terms and Conditions:
</p>
<ul>
<li><strong>Affiliate</strong> means an entity that controls,
is controlled by or is under common control with a party,
where "control" means ownership of 50% or more of the shares,
equity interest or other securities entitled to vote for election
of directors or other managing authority.
</li>
<li><strong>Company</strong> (referred to as either "the Company",
"We", "Us" or "Our" in this Agreement) refers to Gilles LAMIRAL.
</li>
<li><strong>Country</strong> refers to: France</li>
<li><strong>Service</strong> refers to the Website.</li>
<li><strong>Terms and Conditions</strong> (also referred as "Terms")
mean these Terms and Conditions that form the entire agreement
between You and the Company regarding the use of the Service.
</li>
<li><strong>Third-party Social Media Service</strong> means
any services or content
(including data, information, products or services)
provided by a third-party that may be displayed,
included or made available by the Service.
</li>
<li><strong>Website</strong> refers to Imapsync,
accessible from https://imapsync.lamiral.info
</li>
<li><strong>You</strong> means the individual
accessing or using the Service, or the company,
or other legal entity on behalf of which
such individual is accessing or using the Service,
as applicable.</li>
</ul>
<h1>Acknowledgement</h1>
<p>
These are the Terms and Conditions governing the use of this Service
and the agreement that operates between You and the Company.
These Terms and Conditions set out the rights and obligations
of all users regarding the use of the Service.
</p>
<p>Your access to and use of the Service is conditioned on
Your acceptance of and compliance with these Terms and Conditions.
These Terms and Conditions apply to all visitors,
users and others who access or use the Service.
</p>
<p>
By accessing or using the Service
You agree to be bound by these Terms and Conditions.
If You disagree with any part of these Terms and Conditions then
You may not access the Service.
</p>
<p>
Your access to and use of the Service is also conditioned on Your
acceptance of and compliance with the Privacy Policy of the Company.
Our Privacy Policy describes Our policies and procedures on the collection,
use and disclosure of Your personal information when You
use the Application or the Website and tells You
about Your privacy rights and how the law protects You.
Please read Our <a href="privacy_policy.shtml">Privacy Policy</a>
carefully before using Our Service.
</p>
<h1>Links to Other Websites</h1>
<p>
Our Service may contain links to third-party web sites or services
that are not owned or controlled by the Company.
</p>
<p>
The Company has no control over, and assumes no responsibility for,
the content, privacy policies, or practices of any third
party web sites or services.
You further acknowledge and agree that the Company shall not
be responsible or liable, directly or indirectly,
for any damage or loss caused or alleged to be caused by or
in connection with the use of or reliance on any such content,
goods or services available on or through any such web sites or services.
</p>
<p>
We strongly advise You to read the terms and conditions and
privacy policies of any third-party web sites or services that You visit.
</p>
<h1>Termination</h1>
<p>
We may terminate or suspend Your access immediately,
without prior notice or liability,
for any reason whatsoever,
including without limitation if You breach these Terms and Conditions.
</p>
<p>
Upon termination, Your right to use the Service will cease immediately.
</p>
<h1>Limitation of Liability</h1>
<p>
Notwithstanding any damages that You might incur,
the entire liability of the Company and any of its suppliers under
any provision of this Terms and Your exclusive remedy for all of
the foregoing shall be limited to the amount actually paid by You through
the Service or nothing if You haven't purchased anything through the Service.
</p>
<p>
To the maximum extent permitted by applicable law,
in no event shall the Company or its suppliers be liable for any
special, incidental, indirect, or consequential
damages whatsoever (including, but not limited to,
damages for loss of profits, loss of data or other information,
for business interruption, for personal injury,
loss of privacy arising out of or in any way related
to the use of or inability to use the Service,
third-party software and/or third-party hardware used with
the Service, or otherwise in connection with any
provision of this Terms), even if the Company or any supplier has been
advised of the possibility of such damages and
even if the remedy fails of its essential purpose.
</p>
<p>
Some states do not allow the exclusion of implied warranties or
limitation of liability for incidental or consequential damages, which
means that some of the above limitations may not apply.
In these states, each party's liability will be limited to
the greatest extent permitted by law.
</p>
<h1>"AS IS" and "AS AVAILABLE" Disclaimer</h1>
<p>The Service is provided to You "AS IS" and "AS AVAILABLE" and with
all faults and defects without warranty of any kind.
To the maximum extent permitted under applicable law, the Company, on its
own behalf and on behalf of its Affiliates and its and their
respective licensors and service providers, expressly disclaims
all warranties, whether express, implied, statutory or otherwise,
with respect to the Service, including all implied warranties of
merchantability, fitness for a particular purpose, title and
non-infringement, and warranties that may arise out of course of
dealing, course of performance, usage or trade practice.
Without limitation to the foregoing, the Company provides no
warranty or undertaking, and makes no representation of any
kind that the Service will meet Your requirements, achieve any
intended results, be compatible or work with any other
software, applications, systems or services, operate without
interruption, meet any performance or reliability standards or
be error free or that any errors or defects can or will be corrected.
</p>
<p>
Without limiting the foregoing, neither the Company nor any of
the company's provider makes any representation or warranty of any
kind, express or implied:
(i) as to the operation or availability of the Service,
or the information, content, and materials
or products included thereon;
(ii) that the Service will be uninterrupted or error-free;
(iii) as to the accuracy, reliability, or currency of any information or
content provided through the Service; or
(iv) that the Service, its servers, the content, or e-mails sent from or
on behalf of the Company are free of viruses, scripts, trojan horses,
worms, malware, timebombs or other harmful components.
</p>
<p>
Some jurisdictions do not allow the exclusion of certain types of
warranties or limitations on applicable statutory rights of
a consumer, so some or all of the above exclusions and
limitations may not apply to You.
But in such a case the exclusions and limitations set forth in
this section shall be applied to the greatest extent enforceable
under applicable law.
</p>
<h1>Governing Law</h1>
<p>
The laws of the Country, excluding its conflicts of law rules, shall
govern this Terms and Your use of the Service.
Your use of the Application may also be subject to other
local, state, national, or international laws.
</p>
<h1>Disputes Resolution</h1>
<p>
If You have any concern or dispute about the Service, You
agree to first try to resolve the dispute informally by
contacting the Company.
</p>
<h1>For European Union (EU) Users</h1>
<p>
If You are a European Union consumer, you will benefit from
any mandatory provisions of the law of the country in which you
are resident in.
</p>
<h1>United States Legal Compliance</h1>
<p>
You represent and warrant that
(i) You are not located in a country that is subject to the
United States government embargo, or that has been designated by
the United States government as a “terrorist supporting” country, and
(ii) You are not listed on any United States government list of
prohibited or restricted parties.
</p>
<h1>Severability and Waiver</h1>
<h2>Severability</h2>
<p>
If any provision of these Terms is held to be unenforceable or invalid,
such provision will be changed and interpreted to accomplish the
objectives of such provision to the greatest extent possible under
applicable law and the remaining provisions will continue in full
force and effect.
</p>
<h2>Waiver</h2>
<p>
Except as provided herein, the failure to exercise a right or
to require performance of an obligation under this Terms shall not
effect a party's ability to exercise such right or require such
performance at any time thereafter nor shall be the waiver of
a breach constitute a waiver of any subsequent breach.
</p>
<h1>Translation Interpretation</h1>
<p>
These Terms and Conditions may have been translated
if We have made them available to You on our Service.
</p>
<p>
You agree that the original English text shall prevail
in the case of a dispute.
</p>
<h1>Changes to These Terms and Conditions</h1>
<p>
We reserve the right, at Our sole discretion,
to modify or replace these Terms at any time.
If a revision is material We will make reasonable efforts
to provide at least 30 days' notice prior to any new terms taking effect.
What constitutes a material change will be determined at Our sole discretion.
</p>
<p>
By continuing to access or use Our Service
after those revisions become effective,
You agree to be bound by the revised terms.
If You do not agree to the new terms,
in whole or in part,
please stop using the website and the Service.
</p>
<h1>Contact Us</h1>
<p>
If you have any questions about these Terms and Conditions,
You can contact us:
</p>
<ul>
<li>By email: gilles@lamiral.info</li>
<li>By visiting this page on our website:
<a href="https://imapsync.lamiral.info">https://imapsync.lamiral.info</a>
</li>
<li>By phone number: +33619220354</li>
<li>By mail: Gilles LAMIRAL, 22 La Billais, 35580 Baulon, France</li>
</ul>
<p>
Our Terms and Conditions agreement was created with the help of the
<a href="https://www.freeprivacypolicy.com/free-terms-conditions-generator/">
Free Terms and Conditions Generator
</a>.
</p>
</section>
<footer>
<hr>
<a href="http://validator.w3.org/check?uri=referer">
<img
src="../S/images/valid-W3C-html5.png"
alt="Valid HTML5" height="31" width="88" >
</a>
<a href="http://jigsaw.w3.org/css-validator/check/referer">
<img style="border:0;width:88px;height:31px"
src="../S/images/vcss-blue"
alt="CSS Valide !" >
</a>
<a href="http://www.anybrowser.org/campaign/">
<img style="border:0;width:88px;height:31px"
src="../S/images/ab_jlh.png"
alt="Viewable With Any Browser" >
</a>
<hr>
<p>
<!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" -->
<b>This document was last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: terms_and_conditions.shtml,v 1.2 2019/12/23 15:57:00 gilles Exp gilles $)<br>
<a href="#TOP">Top of the page</a>
</p>
</footer>
</body>
</html>

View File

@ -42,6 +42,19 @@ I'm not sure I deserve such great quotes for my work on Imapsync, anyway here th
</p>
<!--#include file="S/tw-mention.html" -->
<blockquote class="twitter-tweet">
<p lang="en" dir="ltr">Whats your favorite IMAP migration/sync tool? I made the best experiences with
<a href="https://twitter.com/imapsync?ref_src=twsrc%5Etfw">@imapsync</a>.
Thanks a lot, you saved my day!</p>&mdash; petRockBlog (@petrockblog)
<a href="https://twitter.com/petrockblog/status/1176558954291314688?ref_src=twsrc%5Etfw">September 24, 2019</a>
</blockquote>
<hr>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">
<a href="https://twitter.com/imapsync?ref_src=twsrc%5Etfw">@imapsync</a> is awesome !</p>&mdash; Eusener Castilho (@eusener)
<a href="https://twitter.com/eusener/status/1172514511082938368?ref_src=twsrc%5Etfw">September 13, 2019</a>
</blockquote>
<hr>
<blockquote class="twitter-tweet" data-cards="hidden" data-lang="en">
<p lang="en" dir="ltr">For me, this is still the most useful tool anyone has ever created</p>
@ -49,6 +62,21 @@ I'm not sure I deserve such great quotes for my work on Imapsync, anyway here th
</blockquote>
<hr>
<blockquote class="twitter-tweet">
<p lang="en" dir="ltr">You rocks! I&#39;m using IMAPsync since the early days and it resolved soo much problems
that some &quot;Enterprise solutions&quot; didn&#39;t manage :)))</p>&mdash; Manuel Serrenti (@meksone)
<a href="https://twitter.com/meksone/status/1149295492133773312?ref_src=twsrc%5Etfw">July 11, 2019</a>
</blockquote>
<hr>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">merci beaucoup for the fantastic
<a href="https://twitter.com/imapsync?ref_src=twsrc%5Etfw">@imapsync</a>
- well documented, feature filled, great bit of work, thanks loads. donated.
</p>&mdash; George Wright (@georgie)
<a href="https://twitter.com/georgie/status/1164249987435380736?ref_src=twsrc%5Etfw">August 21, 2019</a>
</blockquote>
<hr>
<blockquote class="twitter-tweet" data-lang="en">
<p lang="en" dir="ltr">Right next to chocolate, imapsync is humankinds best invention.</p>
&mdash; Mathias Maul (@dontcallmedarth)
@ -56,6 +84,15 @@ I'm not sure I deserve such great quotes for my work on Imapsync, anyway here th
</blockquote>
<hr>
<blockquote class="twitter-tweet">
<p lang="en" dir="ltr">Finally shifting my mail archives from my scratch-built
emails server in Singapore to my new MailCow server in Sydney...
imapsync is crucial! And
<a href="https://twitter.com/hashtag/PerlLives?src=hash&amp;ref_src=twsrc%5Etfw">#PerlLives</a>!
</p>&mdash; Dave Lane (@lightweight)
<a href="https://twitter.com/lightweight/status/1160484070046031881?ref_src=twsrc%5Etfw">August 11, 2019</a>
</blockquote>
<hr>
<blockquote class="twitter-tweet" data-lang="en">
<p lang="en" dir="ltr">Imapsync was the best investment I've ever done.</p> &mdash; Uwe Keim
@ -63,6 +100,15 @@ I'm not sure I deserve such great quotes for my work on Imapsync, anyway here th
</blockquote>
<hr>
<blockquote class="twitter-tweet">
<p lang="fr" dir="ltr">Bonjour, on recommande d&#39;utiliser l&#39;excellent
<a href="https://twitter.com/imapsync?ref_src=twsrc%5Etfw">@imapsync</a>
pour ça, il existe même une version en ligne :
<a href="https://t.co/ZCNAwjRzby">https://t.co/ZCNAwjRzby</a>
</p>&mdash; o2switch - Alexis 🐯 (@o2switch_alexis)
<a href="https://twitter.com/o2switch_alexis/status/1154349052529664000?ref_src=twsrc%5Etfw">July 25, 2019</a>
</blockquote>
<hr>
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">My life right now. Would be 10x worse without <a href="https://twitter.com/imapsync">@imapsync</a>
</p>&mdash; G.C. (@its_gc)
@ -81,7 +127,7 @@ I'm not sure I deserve such great quotes for my work on Imapsync, anyway here th
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Hi Gilles! If every tool just fracking worked like this, my life would be sooo much easier. Thanks a ton for this simple to use yet extremely powerfull tool! I&#39;m glad you made it easy to (get) support as well ;)</p>&mdash; Jeroen (@Planet_Jeroen) <a href="https://twitter.com/Planet_Jeroen/status/946080311661776896?ref_src=twsrc%5Etfw">December 27, 2017</a></blockquote>
<hr>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<script async src="//platform.twitter.com/widgets.js"></script>
</section>
@ -111,7 +157,7 @@ alt="Viewable With Any Browser" >
<!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" -->
<b>This document was last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: testimonial.shtml,v 1.5 2018/06/10 20:03:54 gilles Exp gilles $)<br>
($Id: testimonial.shtml,v 1.8 2019/11/15 11:35:16 gilles Exp gilles $)<br>
<a href="#TOP">Top of the page</a>
</p>
</footer>

265
TODO
View File

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: TODO,v 1.215 2019/06/20 10:12:00 gilles Exp gilles $
# $Id: TODO,v 1.230 2020/01/03 22:39:22 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
@ -8,6 +8,141 @@ TODO file for imapsync
----------------------
SUGGESTED 2020_01_03 by Gilles
Bugfix. When running ./imapsync --tests --testslive
Host Nb folders are 0, which is false.
SUGGESTED 2020_01_03 by Gilles
https://lamiral.info/~gilles/imapsync/cover_db/imapsync.html
is result of ./imapsync --tests --testslive
Increase the subroutine coverage to 100% by
removing unused ones or add a test call for the remaining.
SUGGESTED 2019_12_26 by Gilles
For /X Look at
https://en.wikipedia.org/wiki/ModSecurity
SUGGESTED 2019_12_26 by Gilles
Look at
https://metacpan.org/pod/Test::Warnings
SUGGESTED 2019_12_26 by https://github.com/masbaehr
Add the "throttle" word in the README about
--maxmessagespersecond --maxbytespersecond
See https://github.com/imapsync/imapsync/issues/204
SUGGESTED 2016_07_12 by Fronik
With --automap apply the mapping to subfolders of mapped folders.
If
Sent => Envoyes
then
Sent.Foo => Envoyes.Foo
Sent.Foo.Bar => Envoyes.Foo.bar
SUGGESTED 2019_10_22 by Gilles
Add the download link in imapsync itself, with --releasecheck
SUGGESTED 2019_10_20 by Olav Seyfarth
One suggestion/request regarding INSTALL.OnlineUI.txt: Please add a
typical NGINX setup since NGINX is used very often now and requires a
quite different setup: one has to set up a fcgi service.
SUGGESTED 2019_10_02 by Joel from Blue Net Box
Fix this issue:
“imapsync_bin_Darwin” cant be opened because its integrity cannot be verified.
This software needs to be updated. Contact the developer for more information.
MacOS 10.15 is the new macOS Catalina (in the last beta phase)
This error message happens in a shell window.
Same imapsync_bin_Darwin in macOS 10.14 works fine.
SUGGESTED 2019_10_02 by Gilles
Look at Traefik to automatic ssl services (webserver).
RE_SUGGESTED 2019_09_26 by Andre Adrian (rotlaus)
Allow @ in subfolder names #195
https://github.com/imapsync/imapsync/issues/195
Allow also & (imap_utf7 character)
Or add a --nosanetizesubfolder option.
SUGGESTED 2019_07_01 by Jeffrey Thatplayer
https://github.com/imapsync/imapsync/issues/181
Make sanitizing an option for --subfolder1 --subfolder2
Two options? --nosanitize1 --nosanitize2
Reflecting more I wonder if sanitizing for --subfolder1 is just stupid.
It's not, it's good from the usage point of view, same string to point out
the destination backup/restore folder
SUGGESTED 2019_09_23 by Celko Michal.
My proposal is to create a status file.
it would be a command line option, ex.
imapsync ... --status-file /var/www/hosting/tmp/xyz.json
When I start imapsync process with this option, it would generate
and update this status file every few seconds, so any application
can access it and see what's going on with this process without
parsing logs or keeping up with the log format when it changes.
Example of such status file would be:
In progress
{
"status": "In progress",
"progress": "245/5000",
"Message": "",
"Debug": "",
"Process ID": "pid123456"
}
On error example
{
"status": "Fail",
"progress": "245/5000",
"Message": "ERRCODE:123",
"Debug": "LOG_imapsync/2019_09_22_09_01_42_058_abc@example.com_JDoe@example.com.txt",
"Process ID": "pid123456"
}
On complete example*
{
"status": "Completed",
"progress": "5000/5000",
"Message": "",
"Debug": "LOG_imapsync/2019_09_22_09_01_42_058_abc@example.com_JDoe@example.com.txt",
"Process ID": ""
}
SUGGESTED 2019_07_30 by Gilles
Only since imapsync 1.774 the release check is done with
\r\n to end lines, instead of the not RFC compliant \n.
If I upgrade Apache on imapsync.lamiral.info
ii apache2-mpm-worker 2.2.22-13+deb7u7 amd64 Apache HTTP Server - high speed threaded model
then any imapsync prior to 1.774 will fail to GET the VERSION file.
Release check life with names:
PeerAddr "linux-france.org" in release 1.350
"Host: www.linux-france.org\n\n" in release 1.350 to 1.466
PeerAddr "imapsync.lamiral.info" in release 1.374 and upper
"Host: www.linux-france.org\n\n" in release 1.464 but not after
"Host: ks.lamiral.info\n\n" in release 1.467 and upper
"Host: ks.lamiral.info\r\n\r\n" in release 1.836 and upper
Solution to test: Use the directive
HttpProtocolOptions Unsafe # available from 2.2.32 or 2.4.24
http://httpd.apache.org/docs/2.4/mod/core.html#httpprotocoloptions
ks5 should be ok: Server Version: Apache/2.4.33 (FreeBSD)
SUGGESTED on 31 Jan 2017 by tibbsbrookside
Try this code XOAUTH2
https://github.com/imapsync/imapsync/issues/87#issuecomment-276298841
SUGGESTED 2019_06_18 by Konrad Wawryn
Add NTLMv2 support
It shouldn't be that hard to support NTLMv2 because
@ -63,11 +198,6 @@ Take a look at
Test::NoWarnings
Test::Warn
SUGGESTED 2018_05_15 by Massimo Maggi
https://github.com/imapsync/imapsync/issues/141
Document --skipcrossduplicates and --debugcrossduplicates in imapsync --help
Document all other useful missing options.
SUGGESTED 2018_05_08 by James B. Byrne
Sync also the quota with SETQUOTA
https://tools.ietf.org/html/rfc2087
@ -76,10 +206,6 @@ SUGGESTED 2017_12_19 by Gilles
In foldersizes, add info about the oldest message found: INTERNALDATE EPOCH DAYS_FROM_NOW
See draft in sub info_date_from_uid
SUGGESTED 2017_09_04 by Gilles
STDOUT instead of STDERR with Mail::IMAPClient output.
Shoul be easy using $imap->Debug_fh($fileHandle);
SUGGESTED 2017_08_31 by Gilles
Makefile. Add a "make docker" goal that build, test and publish the
@ -108,16 +234,6 @@ Review the "make install" in Makefile
SUGGESTED 2017_04_26 by Franco Fassio
--usecache with trailing dots foo... in folder name breaks on NTFS.
SUGGESTED 2017_04_26 by Franco Fassio
Check that --maxbyteperseconds does not interfer with --timeout
by sleeping too long.
DONE by Gilles revision 1.795 date: 2017/04/22
SUGGESTED 2016_12_01 by Gilles
When working under with webmin and virtualmin imapsync
acts as a cgi, it should not. Find a way to avoid cgi mode
even under a web server. Solution: edit the sub under_cgi_context()
SUGGESTED 2016_11_16 by Flávio Zarur Lucarelli LucaNet Sistemas
Getting subjects of messages for duplicates and print them.
@ -158,29 +274,12 @@ Exchange Online errors that need a relogin:
SUGGESTED 2016_08_31 by Gilles
Rename $expungeaftereach $expungeaftereach1 or $expunge1aftereach
SUGGESTED 2016_08_31 by Gilles & David Carter
Detect equivalent folders by upper/lower case on host1
and add a way to not merge them when host2 is case insensitive.
SUGGESTED 2016_08_19 by Gilles
Go back to SSL_VERIFY_PEER but include
SSL_ca_file inside imapsync or near.
SUGGESTED 2016_08_07 by Gilles
Add a meaningful exit value to all die:
* fatal software dependency, Perl modules
* fatal parameter issue
* fatal connect issue
* fatal login issue
* fatal permission file issue (open)
* fatal IMAP issue
* fatal IMAP disconnection
Maybe replace all die by exit
Add a meaningful exit value to all exit
* exit at end but with errors
* exit at middle because of errormax
* exit by signal
SUGGESTED 2016_07_29 by Gilles from CSS3 Coursera course
Take a look at
@ -190,14 +289,6 @@ SUGGESTED 2016_07_29 by Gilles
Move website to HTML5
https://about.validator.nu/
SUGGESTED 2016_07_12 by Fronik
With --automap apply the mapping to subfolders of mapped folders.
If
Sent => Envoyes
then
Sent.Foo => Envoyes.Foo
Sent.Foo.Bar => Envoyes.Foo.bar
SUGGESTED 2016_07_07 by Jean-Dominique Delyon.
Add a way to know easily which account transfers went wrong.
Générer un fichier des comptes qui ont rencontré des problèmes
@ -245,10 +336,6 @@ no header found so adding our own [Message-Id: <151648@imapsync>]
SUGGESTED 2016_04_17 by Gilles
Add a --passfile to allow user=>password style file.
WANTED 2016_03_11
Add a FAQ about Authentication failures and quoting.
WANTED 2016_02_10
Add stats about "Messages found crossduplicate on host1"
@ -449,6 +536,41 @@ http://asg.web.cmu.edu/cyrus/download/imapd/altnamespace.html
Now the TODO done! (or not)
===========================================================================
DONE 2019/12/16 revision 1.974 by Gilles
Use Debug_fh to set where go the --debugimap outputs.
SUGGESTED 2017_09_04 by Gilles
STDOUT + logfile instead of STDERR with Mail::IMAPClient output.
Should be easy using $imap->Debug_fh( $fileHandle ) ;
DONE 2019_12_11 by Gilles
SUGGESTED 2019_11_28 by Gilles
Find a place to add this advice:
https://github.com/imapsync/imapsync/issues/201#issuecomment-559500077
Place: https://imapsync.lamiral.info/FAQ.d/FAQ.Docker.txt
DONE 2019_11_27 by Gilles
SUGGESTED 2019_09_30 by Gilles
Update the docker build
Mail::IMAPClient 3.38 to latest
Ok Mail::IMAPClient 3.42 in docker gilleslamiral/imapsync 1.967 a82b5d5ff2f0
DONE 2019_11_19 by Gilles revision 1.961
SUGGESTED 2019_11_13 by Flavio
Are --delete2foldersonly or --delete2folders or --delete2foldersbutnot
compatible with --subfolder2 ?
Yes but fix this
--delete2foldersonly SUB --subfolder SUB deletes SUB
while
--delete2foldersonly SUB. --subfolder SUB does not delete SUB
(seen the dot?)
DONE 2019_07_30 by Gilles release 1.955
SUGGESTED 2018_05_15 by Massimo Maggi
https://github.com/imapsync/imapsync/issues/141
Document --skipcrossduplicates and --debugcrossduplicates in imapsync --help
DONE 2019_04_28 by Gilles
SUGGESTED 2016_10_03 by Gilles
Do like tail -F on logfile when
@ -461,6 +583,43 @@ SUGGESTED 2019_04_25 by Gilles
Add length of $cache_dir to
Local cache directory: $cache_dir
DONE 2019/04/11 by Gilles revision 1.930
SUGGESTED 2016_08_07 by Gilles
Add a meaningful exit value to all die:
* fatal software dependency, Perl modules
* fatal parameter issue
* fatal connect issue
* fatal login issue
* fatal permission file issue (open)
* fatal IMAP issue
* fatal IMAP disconnection
Maybe replace all die by exit
Add a meaningful exit value to all exit
* exit at end but with errors
* exit at middle because of errormax
* exit by signal
DONE 2017_07_13
SUGGESTED 2016_03_11
Add a FAQ about Authentication failures and quoting.
FAQ.d/FAQ.Authentication_failure.txt
FAQ.d/FAQ.Passwords_on_Unix.txt
FAQ.d/FAQ.Passwords_on_Windows.txt
DONE 2017/05/24 by Gilles revision 1.813
SUGGESTED 2017_04_26 by Franco Fassio
Check that --maxbyteperseconds does not interfer with --timeout
by sleeping too long.
DONE by Gilles revision 1.795 date: 2017/04/22
SUGGESTED 2016_12_01 by Gilles
When working under with webmin and virtualmin imapsync
acts as a cgi, it should not. Find a way to avoid cgi mode
even under a web server. Solution: edit the sub under_cgi_context()
DONE 2019_04_08 by Gilles
SUGGESTED 2019_03_06 by Gilles
when exit by signal, exit by sending a signal to itself:
@ -584,6 +743,12 @@ DONE 2015_08_03. WANTED 2015_07_21
Fix W/learn/imap_utf7_encode
--regextrans2 "s,El&AOk-ments,&AMk-l&AOk-ments,"
DONE 2014/10/06 by Gilles revision 1.597
SUGGESTED 2016_08_31 by Gilles & David Carter
(I don't know why the DONE date older than the SUGGESTED date)
Detect equivalent folders by upper/lower case on host1
and add a way to not merge them when host2 is case insensitive.
DONE. Add a FAQ entry about long path over than 260 character on Win32.
DONE. Build and distribute a standalone Darwin Mac OS X binary.

View File

@ -1 +1 @@
1.945
1.977

View File

@ -697,3 +697,63 @@
1561592446 END 1.945 : jeudi 27 juin 2019, 01:40:46 (UTC+0200)
1561592446 BEGIN 64bit 1.945 : jeudi 27 juin 2019, 01:40:46 (UTC+0200)
1561592761 END 64bit 1.945 : jeudi 27 juin 2019, 01:46:01 (UTC+0200)
1563247231 BEGIN 1.947 : mardi 16 juillet 2019, 05:20:31 (UTC+0200)
1563271510 BEGIN 1.947 : mardi 16 juillet 2019, 12:05:10 (UTC+0200)
1563272943 END 1.947 : mardi 16 juillet 2019, 12:29:03 (UTC+0200)
1564388334 BEGIN 1.953 : lundi 29 juillet 2019, 10:18:54 (UTC+0200)
1564627935 BEGIN 1.955 : jeudi 1 août 2019, 04:52:15 (UTC+0200)
1564629209 END 1.955 : jeudi 1 août 2019, 05:13:29 (UTC+0200)
1564629209 BEGIN 64bit 1.955 : jeudi 1 août 2019, 05:13:29 (UTC+0200)
1564659229 BEGIN 64bit 1.955 : jeudi 1 août 2019, 13:33:49 (UTC+0200)
1564659589 END 64bit 1.955 : jeudi 1 août 2019, 13:39:49 (UTC+0200)
1564795411 BEGIN 1.956 : samedi 3 août 2019, 03:23:31 (UTC+0200)
1564796657 END 1.956 : samedi 3 août 2019, 03:44:17 (UTC+0200)
1564796657 BEGIN 64bit 1.956 : samedi 3 août 2019, 03:44:17 (UTC+0200)
1564823546 BEGIN 64bit 1.956 : samedi 3 août 2019, 11:12:26 (UTC+0200)
1564823894 END 64bit 1.956 : samedi 3 août 2019, 11:18:14 (UTC+0200)
1574416593 BEGIN 1.962 : vendredi 22 novembre 2019, 10:56:34 (UTC+0100)
1574419847 BEGIN 1.962 : vendredi 22 novembre 2019, 11:50:47 (UTC+0100)
1574429786 BEGIN 64bit 1.962 : vendredi 22 novembre 2019, 14:36:26 (UTC+0100)
1574433224 BEGIN 64bit 1.962 : vendredi 22 novembre 2019, 15:33:44 (UTC+0100)
1574433927 BEGIN 1.962 : vendredi 22 novembre 2019, 15:45:27 (UTC+0100)
1574434278 BEGIN 64bit 1.962 : vendredi 22 novembre 2019, 15:51:18 (UTC+0100)
1574434980 BEGIN 64bit 1.962 : vendredi 22 novembre 2019, 16:03:00 (UTC+0100)
1574435270 BEGIN 64bit 1.962 : vendredi 22 novembre 2019, 16:07:50 (UTC+0100)
1574450028 BEGIN 1.962 : vendredi 22 novembre 2019, 20:13:48 (UTC+0100)
1574450399 END 1.962 : vendredi 22 novembre 2019, 20:19:59 (UTC+0100)
1574452231 BEGIN 1.962 : vendredi 22 novembre 2019, 20:50:32 (UTC+0100)
1574452286 BEGIN 1.962 : vendredi 22 novembre 2019, 20:51:26 (UTC+0100)
1574452715 END 1.962 : vendredi 22 novembre 2019, 20:58:36 (UTC+0100)
1574681848 BEGIN 64bit 1.962 : lundi 25 novembre 2019, 12:37:28 (UTC+0100)
1574692336 BEGIN 1.963 : lundi 25 novembre 2019, 15:32:16 (UTC+0100)
1574693629 END 1.963 : lundi 25 novembre 2019, 15:53:49 (UTC+0100)
1574693629 BEGIN 64bit 1.963 : lundi 25 novembre 2019, 15:53:49 (UTC+0100)
1574693945 END 64bit 1.963 : lundi 25 novembre 2019, 15:59:05 (UTC+0100)
1574953419 BEGIN 1.967 : jeudi 28 novembre 2019, 16:03:39 (UTC+0100)
1574954698 END 1.967 : jeudi 28 novembre 2019, 16:24:58 (UTC+0100)
1574954698 BEGIN 64bit 1.967 : jeudi 28 novembre 2019, 16:24:58 (UTC+0100)
1574955031 END 64bit 1.967 : jeudi 28 novembre 2019, 16:30:31 (UTC+0100)
1575033978 BEGIN 1.969 : vendredi 29 novembre 2019, 14:26:18 (UTC+0100)
1575035212 END 1.969 : vendredi 29 novembre 2019, 14:46:52 (UTC+0100)
1575035212 BEGIN 64bit 1.969 : vendredi 29 novembre 2019, 14:46:52 (UTC+0100)
1575035732 END 64bit 1.969 : vendredi 29 novembre 2019, 14:55:32 (UTC+0100)
1575911925 BEGIN 1.969 : lundi 9 décembre 2019, 18:18:45 (UTC+0100)
1575916737 BEGIN 1.969 : lundi 9 décembre 2019, 19:38:57 (UTC+0100)
1575924912 END 1.969 : lundi 9 décembre 2019, 21:55:12 (UTC+0100)
1575931824 BEGIN 64bit 1.969 : lundi 9 décembre 2019, 23:50:24 (UTC+0100)
1575932149 END 64bit 1.969 : lundi 9 décembre 2019, 23:55:49 (UTC+0100)
1575933203 BEGIN 1.970 : mardi 10 décembre 2019, 00:13:23 (UTC+0100)
1575973632 BEGIN 1.970 : mardi 10 décembre 2019, 11:27:12 (UTC+0100)
1575973801 BEGIN 1.970 : mardi 10 décembre 2019, 11:30:01 (UTC+0100)
1575973972 BEGIN 1.970 : mardi 10 décembre 2019, 11:32:52 (UTC+0100)
1575974574 BEGIN 1.970 : mardi 10 décembre 2019, 11:42:54 (UTC+0100)
1575975909 END 1.970 : mardi 10 décembre 2019, 12:05:09 (UTC+0100)
1575977906 BEGIN 64bit 1.970 : mardi 10 décembre 2019, 12:38:26 (UTC+0100)
1575978279 END 64bit 1.970 : mardi 10 décembre 2019, 12:44:39 (UTC+0100)
1575978283 BEGIN 32bit 1.970 : mardi 10 décembre 2019, 12:44:43 (UTC+0100)
1575979537 END 32bit 1.970 : mardi 10 décembre 2019, 13:05:37 (UTC+0100)
1577132428 BEGIN 64bit 1.977 : lundi 23 décembre 2019, 21:20:28 (UTC+0100)
1577133568 BEGIN 64bit 1.977 : lundi 23 décembre 2019, 21:39:28 (UTC+0100)
1577134322 END 64bit 1.977 : lundi 23 décembre 2019, 21:52:02 (UTC+0100)
1577134327 BEGIN 32bit 1.977 : lundi 23 décembre 2019, 21:52:07 (UTC+0100)
1577135607 END 32bit 1.977 : lundi 23 décembre 2019, 22:13:27 (UTC+0100)

View File

@ -114,3 +114,24 @@ mardi 25 juin 2019, 10:46:03 (UTC+0200)
mardi 25 juin 2019, 18:52:01 (UTC+0200)
mercredi 26 juin 2019, 17:34:23 (UTC+0200)
mercredi 26 juin 2019, 21:32:34 (UTC+0200)
mardi 16 juillet 2019, 03:57:32 (UTC+0200)
mercredi 17 juillet 2019, 17:45:33 (UTC+0200)
mercredi 17 juillet 2019, 18:35:58 (UTC+0200)
mercredi 17 juillet 2019, 18:40:36 (UTC+0200)
mercredi 17 juillet 2019, 18:49:36 (UTC+0200)
dimanche 21 juillet 2019, 02:47:49 (UTC+0200)
jeudi 25 juillet 2019, 19:10:43 (UTC+0200)
jeudi 25 juillet 2019, 20:30:32 (UTC+0200)
jeudi 25 juillet 2019, 22:46:56 (UTC+0200)
vendredi 26 juillet 2019, 12:13:40 (UTC+0200)
lundi 29 juillet 2019, 09:26:31 (UTC+0200)
jeudi 1 août 2019, 04:03:35 (UTC+0200)
samedi 3 août 2019, 02:31:37 (UTC+0200)
mercredi 20 novembre 2019, 14:59:11 (UTC+0100)
lundi 25 novembre 2019, 15:18:38 (UTC+0100)
lundi 2 décembre 2019, 15:59:44 (UTC+0100)
mercredi 4 décembre 2019, 19:41:38 (UTC+0100)
mercredi 11 décembre 2019, 22:12:49 (UTC+0100)
jeudi 19 décembre 2019, 10:52:31 (UTC+0100)
vendredi 20 décembre 2019, 18:00:28 (UTC+0100)
mardi 24 décembre 2019, 22:25:29 (UTC+0100)

View File

@ -3942,3 +3942,994 @@
2019_06_27_00_22_07 : ALL 1 TESTS SUCCESSFUL
2019_06_27_00_35_49 : ALL 1 TESTS SUCCESSFUL
2019_06_27_01_15_17 : ALL 157 TESTS SUCCESSFUL
2019_06_28_20_24_14 : FAILED 1/1 TESTS: perl_syntax
2019_06_28_20_24_38 : ALL 1 TESTS SUCCESSFUL
2019_06_28_20_25_22 : FAILED 1/2 TESTS: ll_with_errors
2019_06_28_21_11_02 : ALL 1 TESTS SUCCESSFUL
2019_06_28_21_11_12 : FAILED 1/2 TESTS: ll_with_errors
2019_06_30_21_14_13 : ALL 1 TESTS SUCCESSFUL
2019_06_30_21_15_23 : ALL 1 TESTS SUCCESSFUL
2019_06_30_21_15_31 : ALL 2 TESTS SUCCESSFUL
2019_06_30_21_18_02 : ALL 1 TESTS SUCCESSFUL
2019_06_30_21_18_09 : ALL 2 TESTS SUCCESSFUL
2019_06_30_21_26_15 : ALL 1 TESTS SUCCESSFUL
2019_06_30_23_03_07 : ALL 1 TESTS SUCCESSFUL
2019_06_30_23_32_55 : ALL 1 TESTS SUCCESSFUL
2019_06_30_23_33_02 : ALL 2 TESTS SUCCESSFUL
2019_06_30_23_34_34 : ALL 1 TESTS SUCCESSFUL
2019_06_30_23_34_41 : ALL 2 TESTS SUCCESSFUL
2019_06_30_23_41_17 : ALL 1 TESTS SUCCESSFUL
2019_06_30_23_41_24 : ALL 2 TESTS SUCCESSFUL
2019_06_30_23_52_35 : ALL 1 TESTS SUCCESSFUL
2019_06_30_23_52_42 : ALL 2 TESTS SUCCESSFUL
2019_07_01_00_12_45 : ALL 1 TESTS SUCCESSFUL
2019_07_01_00_12_53 : ALL 2 TESTS SUCCESSFUL
2019_07_01_00_41_17 : ALL 1 TESTS SUCCESSFUL
2019_07_01_00_41_26 : ALL 2 TESTS SUCCESSFUL
2019_07_01_15_17_23 : ALL 1 TESTS SUCCESSFUL
2019_07_01_15_17_34 : ALL 2 TESTS SUCCESSFUL
2019_07_01_16_14_26 : ALL 1 TESTS SUCCESSFUL
2019_07_01_16_14_33 : ALL 2 TESTS SUCCESSFUL
2019_07_01_16_14_51 : ALL 1 TESTS SUCCESSFUL
2019_07_01_16_15_31 : ALL 2 TESTS SUCCESSFUL
2019_07_01_16_30_47 : ALL 1 TESTS SUCCESSFUL
2019_07_01_16_31_53 : ALL 2 TESTS SUCCESSFUL
2019_07_01_18_12_37 : ALL 1 TESTS SUCCESSFUL
2019_07_01_18_13_43 : ALL 2 TESTS SUCCESSFUL
2019_07_01_18_16_24 : ALL 1 TESTS SUCCESSFUL
2019_07_01_18_16_40 : ALL 2 TESTS SUCCESSFUL
2019_07_01_18_17_10 : ALL 1 TESTS SUCCESSFUL
2019_07_01_18_17_19 : ALL 2 TESTS SUCCESSFUL
2019_07_01_18_32_44 : ALL 1 TESTS SUCCESSFUL
2019_07_01_18_32_52 : ALL 2 TESTS SUCCESSFUL
2019_07_01_18_41_58 : ALL 1 TESTS SUCCESSFUL
2019_07_01_18_43_09 : ALL 1 TESTS SUCCESSFUL
2019_07_01_18_43_33 : ALL 1 TESTS SUCCESSFUL
2019_07_01_18_43_50 : ALL 2 TESTS SUCCESSFUL
2019_07_01_18_44_22 : ALL 1 TESTS SUCCESSFUL
2019_07_01_18_45_02 : ALL 2 TESTS SUCCESSFUL
2019_07_01_18_45_21 : ALL 1 TESTS SUCCESSFUL
2019_07_01_18_45_29 : ALL 1 TESTS SUCCESSFUL
2019_07_01_18_45_38 : ALL 2 TESTS SUCCESSFUL
2019_07_01_18_46_20 : ALL 2 TESTS SUCCESSFUL
2019_07_01_18_48_42 : ALL 1 TESTS SUCCESSFUL
2019_07_01_18_49_32 : ALL 2 TESTS SUCCESSFUL
2019_07_01_20_18_11 : ALL 1 TESTS SUCCESSFUL
2019_07_01_20_18_53 : ALL 2 TESTS SUCCESSFUL
2019_07_01_22_01_40 : ALL 1 TESTS SUCCESSFUL
2019_07_01_22_01_48 : ALL 2 TESTS SUCCESSFUL
2019_07_01_22_05_59 : ALL 1 TESTS SUCCESSFUL
2019_07_01_22_06_07 : ALL 2 TESTS SUCCESSFUL
2019_07_02_21_25_57 : ALL 1 TESTS SUCCESSFUL
2019_07_02_21_26_13 : ALL 2 TESTS SUCCESSFUL
2019_07_02_21_28_46 : ALL 1 TESTS SUCCESSFUL
2019_07_02_21_28_51 : ALL 2 TESTS SUCCESSFUL
2019_07_02_21_30_00 : ALL 1 TESTS SUCCESSFUL
2019_07_02_21_30_08 : ALL 2 TESTS SUCCESSFUL
2019_07_02_21_30_24 : ALL 1 TESTS SUCCESSFUL
2019_07_02_21_30_29 : ALL 2 TESTS SUCCESSFUL
2019_07_03_14_53_16 : ALL 1 TESTS SUCCESSFUL
2019_07_03_14_53_16 : FAILED 1/2 TESTS: ll_empty_test2
2019_07_03_14_55_17 : ALL 1 TESTS SUCCESSFUL
2019_07_03_14_55_30 : ALL 2 TESTS SUCCESSFUL
2019_07_04_01_07_34 : ALL 1 TESTS SUCCESSFUL
2019_07_04_01_07_45 : ALL 2 TESTS SUCCESSFUL
2019_07_04_04_26_45 : ALL 1 TESTS SUCCESSFUL
2019_07_04_04_26_53 : ALL 2 TESTS SUCCESSFUL
2019_07_04_04_32_26 : ALL 1 TESTS SUCCESSFUL
2019_07_04_04_32_34 : ALL 2 TESTS SUCCESSFUL
2019_07_04_04_43_15 : ALL 1 TESTS SUCCESSFUL
2019_07_04_04_43_23 : ALL 2 TESTS SUCCESSFUL
2019_07_04_13_45_18 : ALL 1 TESTS SUCCESSFUL
2019_07_04_13_45_29 : ALL 2 TESTS SUCCESSFUL
2019_07_04_13_58_57 : ALL 1 TESTS SUCCESSFUL
2019_07_04_13_59_06 : ALL 2 TESTS SUCCESSFUL
2019_07_04_14_08_34 : ALL 1 TESTS SUCCESSFUL
2019_07_04_14_08_42 : ALL 2 TESTS SUCCESSFUL
2019_07_04_14_44_20 : ALL 1 TESTS SUCCESSFUL
2019_07_04_14_44_28 : ALL 2 TESTS SUCCESSFUL
2019_07_04_17_21_37 : ALL 1 TESTS SUCCESSFUL
2019_07_04_17_21_45 : ALL 2 TESTS SUCCESSFUL
2019_07_05_14_26_43 : ALL 1 TESTS SUCCESSFUL
2019_07_05_14_26_53 : ALL 2 TESTS SUCCESSFUL
2019_07_05_14_27_44 : ALL 1 TESTS SUCCESSFUL
2019_07_05_14_29_16 : ALL 2 TESTS SUCCESSFUL
2019_07_05_14_42_18 : ALL 1 TESTS SUCCESSFUL
2019_07_05_14_42_27 : ALL 2 TESTS SUCCESSFUL
2019_07_05_14_46_50 : ALL 1 TESTS SUCCESSFUL
2019_07_05_14_46_59 : ALL 2 TESTS SUCCESSFUL
2019_07_05_15_45_23 : ALL 1 TESTS SUCCESSFUL
2019_07_05_15_45_31 : ALL 2 TESTS SUCCESSFUL
2019_07_05_15_51_25 : ALL 1 TESTS SUCCESSFUL
2019_07_05_15_52_08 : ALL 2 TESTS SUCCESSFUL
2019_07_05_15_52_20 : ALL 1 TESTS SUCCESSFUL
2019_07_05_15_52_27 : ALL 2 TESTS SUCCESSFUL
2019_07_05_16_03_13 : ALL 1 TESTS SUCCESSFUL
2019_07_05_16_03_22 : ALL 2 TESTS SUCCESSFUL
2019_07_05_16_19_18 : ALL 1 TESTS SUCCESSFUL
2019_07_05_16_19_27 : ALL 2 TESTS SUCCESSFUL
2019_07_05_16_24_15 : ALL 1 TESTS SUCCESSFUL
2019_07_05_16_24_23 : ALL 2 TESTS SUCCESSFUL
2019_07_05_23_12_34 : ALL 1 TESTS SUCCESSFUL
2019_07_05_23_12_43 : ALL 2 TESTS SUCCESSFUL
2019_07_05_23_28_24 : ALL 1 TESTS SUCCESSFUL
2019_07_05_23_28_33 : ALL 2 TESTS SUCCESSFUL
2019_07_05_23_35_41 : ALL 1 TESTS SUCCESSFUL
2019_07_05_23_35_51 : ALL 2 TESTS SUCCESSFUL
2019_07_06_13_09_49 : ALL 1 TESTS SUCCESSFUL
2019_07_06_13_09_58 : ALL 2 TESTS SUCCESSFUL
2019_07_06_17_00_33 : ALL 1 TESTS SUCCESSFUL
2019_07_06_17_00_42 : ALL 2 TESTS SUCCESSFUL
2019_07_07_23_09_55 : ALL 1 TESTS SUCCESSFUL
2019_07_07_23_10_06 : ALL 2 TESTS SUCCESSFUL
2019_07_07_23_34_14 : ALL 1 TESTS SUCCESSFUL
2019_07_07_23_34_22 : ALL 2 TESTS SUCCESSFUL
2019_07_07_23_39_28 : ALL 1 TESTS SUCCESSFUL
2019_07_07_23_39_36 : ALL 2 TESTS SUCCESSFUL
2019_07_07_23_41_44 : ALL 1 TESTS SUCCESSFUL
2019_07_07_23_41_50 : ALL 2 TESTS SUCCESSFUL
2019_07_09_16_01_49 : ALL 1 TESTS SUCCESSFUL
2019_07_09_16_02_10 : ALL 2 TESTS SUCCESSFUL
2019_07_09_19_34_54 : ALL 1 TESTS SUCCESSFUL
2019_07_09_19_35_34 : ALL 2 TESTS SUCCESSFUL
2019_07_09_20_11_00 : ALL 1 TESTS SUCCESSFUL
2019_07_09_20_11_08 : ALL 2 TESTS SUCCESSFUL
2019_07_09_20_23_41 : ALL 1 TESTS SUCCESSFUL
2019_07_09_20_23_48 : ALL 2 TESTS SUCCESSFUL
2019_07_09_22_46_24 : ALL 1 TESTS SUCCESSFUL
2019_07_09_22_46_32 : ALL 2 TESTS SUCCESSFUL
2019_07_10_22_02_28 : ALL 1 TESTS SUCCESSFUL
2019_07_10_22_02_37 : ALL 2 TESTS SUCCESSFUL
2019_07_11_00_52_03 : ALL 1 TESTS SUCCESSFUL
2019_07_11_00_53_46 : ALL 2 TESTS SUCCESSFUL
2019_07_14_19_55_10 : FAILED 1/1 TESTS: perl_syntax
2019_07_14_19_55_55 : ALL 1 TESTS SUCCESSFUL
2019_07_14_19_56_35 : ALL 1 TESTS SUCCESSFUL
2019_07_14_19_56_44 : ALL 2 TESTS SUCCESSFUL
2019_07_15_00_11_52 : ALL 1 TESTS SUCCESSFUL
2019_07_15_00_11_57 : ALL 2 TESTS SUCCESSFUL
2019_07_15_00_12_57 : ALL 1 TESTS SUCCESSFUL
2019_07_15_00_13_00 : ALL 2 TESTS SUCCESSFUL
2019_07_15_00_13_34 : ALL 1 TESTS SUCCESSFUL
2019_07_15_00_13_38 : ALL 2 TESTS SUCCESSFUL
2019_07_15_00_19_14 : ALL 1 TESTS SUCCESSFUL
2019_07_15_00_19_18 : ALL 2 TESTS SUCCESSFUL
2019_07_15_00_23_12 : ALL 1 TESTS SUCCESSFUL
2019_07_15_00_23_16 : ALL 2 TESTS SUCCESSFUL
2019_07_15_00_35_20 : ALL 1 TESTS SUCCESSFUL
2019_07_15_00_35_25 : ALL 2 TESTS SUCCESSFUL
2019_07_15_00_39_09 : ALL 1 TESTS SUCCESSFUL
2019_07_15_00_39_20 : ALL 2 TESTS SUCCESSFUL
2019_07_15_00_41_37 : ALL 1 TESTS SUCCESSFUL
2019_07_15_00_41_42 : ALL 2 TESTS SUCCESSFUL
2019_07_15_01_59_07 : ALL 1 TESTS SUCCESSFUL
2019_07_15_01_59_12 : ALL 2 TESTS SUCCESSFUL
2019_07_15_01_59_24 : ALL 1 TESTS SUCCESSFUL
2019_07_15_01_59_28 : ALL 2 TESTS SUCCESSFUL
2019_07_15_02_06_29 : ALL 1 TESTS SUCCESSFUL
2019_07_15_02_14_29 : ALL 1 TESTS SUCCESSFUL
2019_07_15_02_14_33 : FAILED 1/2 TESTS: ll_authmech_X_MASTERAUTH
2019_07_15_02_47_31 : ALL 157 TESTS SUCCESSFUL
2019_07_15_03_06_00 : ALL 1 TESTS SUCCESSFUL
2019_07_15_03_06_16 : ALL 2 TESTS SUCCESSFUL
2019_07_15_03_07_37 : ALL 1 TESTS SUCCESSFUL
2019_07_15_03_07_41 : ALL 2 TESTS SUCCESSFUL
2019_07_15_03_12_22 : ALL 1 TESTS SUCCESSFUL
2019_07_15_03_57_01 : ALL 157 TESTS SUCCESSFUL
2019_07_16_05_12_39 : ALL 1 TESTS SUCCESSFUL
2019_07_16_05_15_56 : ALL 2 TESTS SUCCESSFUL
2019_07_17_02_48_07 : ALL 1 TESTS SUCCESSFUL
2019_07_17_02_49_25 : ALL 2 TESTS SUCCESSFUL
2019_07_17_02_49_31 : ALL 1 TESTS SUCCESSFUL
2019_07_17_02_49_59 : ALL 2 TESTS SUCCESSFUL
2019_07_17_02_51_34 : ALL 1 TESTS SUCCESSFUL
2019_07_17_02_51_42 : ALL 2 TESTS SUCCESSFUL
2019_07_17_02_55_58 : ALL 1 TESTS SUCCESSFUL
2019_07_17_02_56_06 : ALL 2 TESTS SUCCESSFUL
2019_07_17_05_57_51 : ALL 1 TESTS SUCCESSFUL
2019_07_17_06_38_11 : FAILED 1/157 TESTS: ll_subscribed
2019_07_17_17_05_15 : ALL 1 TESTS SUCCESSFUL
2019_07_17_17_07_11 : ALL 2 TESTS SUCCESSFUL
2019_07_17_17_44_05 : ALL 1 TESTS SUCCESSFUL
2019_07_17_17_44_10 : ALL 2 TESTS SUCCESSFUL
2019_07_17_19_56_23 : ALL 1 TESTS SUCCESSFUL
2019_07_17_20_10_34 : ALL 1 TESTS SUCCESSFUL
2019_07_17_20_11_31 : ALL 2 TESTS SUCCESSFUL
2019_07_17_20_17_00 : ALL 1 TESTS SUCCESSFUL
2019_07_17_20_17_59 : ALL 2 TESTS SUCCESSFUL
2019_07_17_20_19_49 : ALL 1 TESTS SUCCESSFUL
2019_07_17_20_20_46 : ALL 2 TESTS SUCCESSFUL
2019_07_17_20_28_08 : ALL 1 TESTS SUCCESSFUL
2019_07_17_20_29_14 : ALL 2 TESTS SUCCESSFUL
2019_07_18_05_05_08 : ALL 1 TESTS SUCCESSFUL
2019_07_18_05_05_18 : ALL 2 TESTS SUCCESSFUL
2019_07_18_05_08_08 : ALL 1 TESTS SUCCESSFUL
2019_07_18_05_08_16 : ALL 2 TESTS SUCCESSFUL
2019_07_18_05_37_25 : ALL 1 TESTS SUCCESSFUL
2019_07_18_05_37_33 : ALL 2 TESTS SUCCESSFUL
2019_07_18_05_46_37 : ALL 1 TESTS SUCCESSFUL
2019_07_18_17_20_24 : ALL 1 TESTS SUCCESSFUL
2019_07_18_17_20_33 : ALL 2 TESTS SUCCESSFUL
2019_07_21_02_06_10 : ALL 1 TESTS SUCCESSFUL
2019_07_21_02_47_37 : ALL 157 TESTS SUCCESSFUL
2019_07_21_03_24_36 : ALL 1 TESTS SUCCESSFUL
2019_07_21_03_30_23 : ALL 2 TESTS SUCCESSFUL
2019_07_21_10_57_49 : ALL 1 TESTS SUCCESSFUL
2019_07_21_10_58_56 : ALL 2 TESTS SUCCESSFUL
2019_07_21_10_59_15 : ALL 1 TESTS SUCCESSFUL
2019_07_21_10_59_29 : ALL 2 TESTS SUCCESSFUL
2019_07_21_11_00_47 : ALL 1 TESTS SUCCESSFUL
2019_07_21_11_00_54 : ALL 2 TESTS SUCCESSFUL
2019_07_21_11_07_41 : ALL 1 TESTS SUCCESSFUL
2019_07_21_11_07_48 : ALL 2 TESTS SUCCESSFUL
2019_07_21_11_13_51 : FAILED 1/1 TESTS: perl_syntax
2019_07_21_11_16_19 : ALL 1 TESTS SUCCESSFUL
2019_07_21_11_16_26 : ALL 2 TESTS SUCCESSFUL
2019_07_21_11_40_16 : ALL 1 TESTS SUCCESSFUL
2019_07_21_11_40_24 : ALL 2 TESTS SUCCESSFUL
2019_07_21_11_40_45 : ALL 1 TESTS SUCCESSFUL
2019_07_21_11_40_52 : ALL 2 TESTS SUCCESSFUL
2019_07_21_11_41_16 : ALL 1 TESTS SUCCESSFUL
2019_07_21_11_41_26 : ALL 2 TESTS SUCCESSFUL
2019_07_21_11_49_34 : FAILED 1/1 TESTS: perl_syntax
2019_07_21_11_50_36 : ALL 1 TESTS SUCCESSFUL
2019_07_21_11_50_46 : ALL 2 TESTS SUCCESSFUL
2019_07_21_11_51_56 : ALL 1 TESTS SUCCESSFUL
2019_07_21_11_52_06 : ALL 2 TESTS SUCCESSFUL
2019_07_21_11_53_28 : FAILED 1/1 TESTS: perl_syntax
2019_07_21_11_54_28 : ALL 1 TESTS SUCCESSFUL
2019_07_21_11_54_35 : ALL 2 TESTS SUCCESSFUL
2019_07_21_12_00_04 : ALL 1 TESTS SUCCESSFUL
2019_07_21_12_00_11 : ALL 2 TESTS SUCCESSFUL
2019_07_21_12_01_37 : ALL 1 TESTS SUCCESSFUL
2019_07_21_12_01_44 : ALL 2 TESTS SUCCESSFUL
2019_07_22_15_33_24 : ALL 1 TESTS SUCCESSFUL
2019_07_22_15_33_39 : ALL 2 TESTS SUCCESSFUL
2019_07_22_15_34_05 : ALL 1 TESTS SUCCESSFUL
2019_07_22_15_34_11 : ALL 2 TESTS SUCCESSFUL
2019_07_22_15_36_35 : ALL 1 TESTS SUCCESSFUL
2019_07_22_15_36_43 : ALL 2 TESTS SUCCESSFUL
2019_07_22_15_37_43 : ALL 1 TESTS SUCCESSFUL
2019_07_22_15_37_48 : ALL 2 TESTS SUCCESSFUL
2019_07_22_15_40_45 : FAILED 1/1 TESTS: perl_syntax
2019_07_22_15_43_00 : ALL 1 TESTS SUCCESSFUL
2019_07_22_15_43_06 : ALL 2 TESTS SUCCESSFUL
2019_07_22_15_44_17 : ALL 1 TESTS SUCCESSFUL
2019_07_22_15_44_25 : ALL 2 TESTS SUCCESSFUL
2019_07_22_21_03_28 : ALL 1 TESTS SUCCESSFUL
2019_07_22_21_03_33 : ALL 2 TESTS SUCCESSFUL
2019_07_22_21_05_45 : ALL 1 TESTS SUCCESSFUL
2019_07_22_21_05_50 : ALL 2 TESTS SUCCESSFUL
2019_07_22_21_10_19 : ALL 1 TESTS SUCCESSFUL
2019_07_22_21_10_24 : ALL 2 TESTS SUCCESSFUL
2019_07_22_21_16_30 : ALL 1 TESTS SUCCESSFUL
2019_07_22_21_16_35 : ALL 2 TESTS SUCCESSFUL
2019_07_22_21_17_50 : ALL 1 TESTS SUCCESSFUL
2019_07_22_21_17_55 : ALL 2 TESTS SUCCESSFUL
2019_07_22_21_28_22 : ALL 1 TESTS SUCCESSFUL
2019_07_22_21_28_27 : ALL 2 TESTS SUCCESSFUL
2019_07_22_21_28_46 : ALL 1 TESTS SUCCESSFUL
2019_07_22_21_29_36 : ALL 1 TESTS SUCCESSFUL
2019_07_22_21_29_40 : ALL 2 TESTS SUCCESSFUL
2019_07_22_21_32_38 : ALL 1 TESTS SUCCESSFUL
2019_07_22_21_32_47 : ALL 2 TESTS SUCCESSFUL
2019_07_22_21_32_53 : ALL 1 TESTS SUCCESSFUL
2019_07_22_21_33_58 : ALL 2 TESTS SUCCESSFUL
2019_07_24_20_38_24 : ALL 1 TESTS SUCCESSFUL
2019_07_24_20_39_08 : ALL 2 TESTS SUCCESSFUL
2019_07_24_20_39_45 : ALL 1 TESTS SUCCESSFUL
2019_07_24_20_39_52 : ALL 2 TESTS SUCCESSFUL
2019_07_24_20_39_58 : ALL 1 TESTS SUCCESSFUL
2019_07_24_20_41_08 : ALL 2 TESTS SUCCESSFUL
2019_07_24_20_44_44 : ALL 1 TESTS SUCCESSFUL
2019_07_24_20_44_51 : ALL 2 TESTS SUCCESSFUL
2019_07_24_20_47_16 : ALL 1 TESTS SUCCESSFUL
2019_07_24_20_47_25 : ALL 2 TESTS SUCCESSFUL
2019_07_24_20_48_31 : ALL 1 TESTS SUCCESSFUL
2019_07_24_20_49_19 : ALL 1 TESTS SUCCESSFUL
2019_07_24_20_49_19 : FAILED 1/2 TESTS: ll_search2_NOT_OR_OR_UID
2019_07_24_20_49_53 : ALL 1 TESTS SUCCESSFUL
2019_07_24_20_51_17 : ALL 1 TESTS SUCCESSFUL
2019_07_24_20_51_34 : ALL 2 TESTS SUCCESSFUL
2019_07_24_20_51_49 : ALL 1 TESTS SUCCESSFUL
2019_07_24_20_52_03 : ALL 2 TESTS SUCCESSFUL
2019_07_24_20_52_22 : ALL 1 TESTS SUCCESSFUL
2019_07_24_20_52_36 : ALL 2 TESTS SUCCESSFUL
2019_07_24_20_53_19 : ALL 1 TESTS SUCCESSFUL
2019_07_24_20_53_34 : ALL 2 TESTS SUCCESSFUL
2019_07_24_20_53_50 : ALL 1 TESTS SUCCESSFUL
2019_07_24_20_54_05 : ALL 2 TESTS SUCCESSFUL
2019_07_24_21_09_40 : ALL 1 TESTS SUCCESSFUL
2019_07_24_21_09_54 : ALL 2 TESTS SUCCESSFUL
2019_07_24_21_12_21 : FAILED 1/1 TESTS: perl_syntax
2019_07_24_21_12_41 : FAILED 1/1 TESTS: perl_syntax
2019_07_24_21_12_54 : FAILED 1/1 TESTS: perl_syntax
2019_07_24_21_13_19 : FAILED 1/1 TESTS: perl_syntax
2019_07_24_21_13_34 : ALL 1 TESTS SUCCESSFUL
2019_07_24_21_13_48 : ALL 2 TESTS SUCCESSFUL
2019_07_24_21_13_53 : ALL 1 TESTS SUCCESSFUL
2019_07_24_21_14_08 : ALL 2 TESTS SUCCESSFUL
2019_07_24_21_14_46 : ALL 1 TESTS SUCCESSFUL
2019_07_24_21_15_01 : ALL 2 TESTS SUCCESSFUL
2019_07_24_21_24_54 : ALL 1 TESTS SUCCESSFUL
2019_07_24_21_25_15 : ALL 2 TESTS SUCCESSFUL
2019_07_24_21_32_32 : FAILED 1/1 TESTS: perl_syntax
2019_07_24_21_33_02 : ALL 1 TESTS SUCCESSFUL
2019_07_24_21_33_15 : ALL 2 TESTS SUCCESSFUL
2019_07_24_21_42_22 : ALL 1 TESTS SUCCESSFUL
2019_07_24_21_42_34 : ALL 2 TESTS SUCCESSFUL
2019_07_25_00_23_03 : ALL 1 TESTS SUCCESSFUL
2019_07_25_00_23_16 : ALL 2 TESTS SUCCESSFUL
2019_07_25_14_27_42 : ALL 1 TESTS SUCCESSFUL
2019_07_25_14_29_23 : ALL 2 TESTS SUCCESSFUL
2019_07_25_14_38_17 : ALL 1 TESTS SUCCESSFUL
2019_07_25_14_38_19 : FAILED 1/3 TESTS: titi
2019_07_25_14_38_23 : ALL 1 TESTS SUCCESSFUL
2019_07_25_14_38_23 : FAILED 1/3 TESTS: titi
2019_07_25_14_40_21 : ALL 1 TESTS SUCCESSFUL
2019_07_25_14_40_21 : ALL 2 TESTS SUCCESSFUL
2019_07_25_14_40_26 : ALL 1 TESTS SUCCESSFUL
2019_07_25_14_40_26 : ALL 2 TESTS SUCCESSFUL
2019_07_25_14_40_29 : ALL 1 TESTS SUCCESSFUL
2019_07_25_14_40_30 : ALL 2 TESTS SUCCESSFUL
2019_07_25_14_40_37 : ALL 1 TESTS SUCCESSFUL
2019_07_25_14_41_21 : ALL 2 TESTS SUCCESSFUL
2019_07_25_14_45_43 : ALL 1 TESTS SUCCESSFUL
2019_07_25_14_46_24 : ALL 2 TESTS SUCCESSFUL
2019_07_25_14_50_51 : ALL 1 TESTS SUCCESSFUL
2019_07_25_14_51_33 : ALL 2 TESTS SUCCESSFUL
2019_07_25_14_58_33 : ALL 1 TESTS SUCCESSFUL
2019_07_25_14_58_49 : ALL 2 TESTS SUCCESSFUL
2019_07_25_15_01_29 : ALL 1 TESTS SUCCESSFUL
2019_07_25_15_01_34 : ALL 2 TESTS SUCCESSFUL
2019_07_25_15_03_07 : ALL 1 TESTS SUCCESSFUL
2019_07_25_15_03_49 : ALL 2 TESTS SUCCESSFUL
2019_07_25_15_04_32 : ALL 1 TESTS SUCCESSFUL
2019_07_25_15_04_33 : ALL 2 TESTS SUCCESSFUL
2019_07_25_15_04_36 : ALL 1 TESTS SUCCESSFUL
2019_07_25_15_04_36 : ALL 2 TESTS SUCCESSFUL
2019_07_25_15_17_41 : ALL 1 TESTS SUCCESSFUL
2019_07_25_15_18_23 : ALL 2 TESTS SUCCESSFUL
2019_07_25_16_59_13 : ALL 1 TESTS SUCCESSFUL
2019_07_25_17_00_02 : ALL 2 TESTS SUCCESSFUL
2019_07_25_17_51_42 : ALL 1 TESTS SUCCESSFUL
2019_07_25_17_51_57 : ALL 2 TESTS SUCCESSFUL
2019_07_25_18_03_44 : ALL 1 TESTS SUCCESSFUL
2019_07_25_18_04_55 : ALL 1 TESTS SUCCESSFUL
2019_07_25_18_05_20 : ALL 2 TESTS SUCCESSFUL
2019_07_25_18_29_33 : ALL 1 TESTS SUCCESSFUL
2019_07_25_19_10_24 : FAILED 3/157 TESTS: option_tests option_tests_in_var_tmp option_tests_in_var_tmp_sub
2019_07_26_00_53_21 : ALL 1 TESTS SUCCESSFUL
2019_07_26_00_54_27 : ALL 1 TESTS SUCCESSFUL
2019_07_26_00_54_56 : ALL 2 TESTS SUCCESSFUL
2019_07_26_00_56_07 : ALL 1 TESTS SUCCESSFUL
2019_07_26_00_56_14 : ALL 2 TESTS SUCCESSFUL
2019_07_26_00_57_35 : ALL 1 TESTS SUCCESSFUL
2019_07_26_00_57_42 : ALL 2 TESTS SUCCESSFUL
2019_07_26_01_02_18 : ALL 1 TESTS SUCCESSFUL
2019_07_26_01_02_25 : ALL 2 TESTS SUCCESSFUL
2019_07_26_01_03_16 : ALL 1 TESTS SUCCESSFUL
2019_07_26_01_03_21 : ALL 2 TESTS SUCCESSFUL
2019_07_26_01_05_40 : ALL 1 TESTS SUCCESSFUL
2019_07_26_01_05_44 : ALL 2 TESTS SUCCESSFUL
2019_07_26_01_08_05 : ALL 1 TESTS SUCCESSFUL
2019_07_26_01_08_10 : ALL 2 TESTS SUCCESSFUL
2019_07_26_01_16_36 : ALL 1 TESTS SUCCESSFUL
2019_07_26_01_17_00 : ALL 2 TESTS SUCCESSFUL
2019_07_26_01_19_59 : ALL 1 TESTS SUCCESSFUL
2019_07_26_01_20_18 : ALL 2 TESTS SUCCESSFUL
2019_07_26_01_22_14 : ALL 1 TESTS SUCCESSFUL
2019_07_26_01_22_27 : ALL 2 TESTS SUCCESSFUL
2019_07_26_01_27_55 : ALL 1 TESTS SUCCESSFUL
2019_07_26_01_28_09 : ALL 2 TESTS SUCCESSFUL
2019_07_26_01_31_29 : ALL 1 TESTS SUCCESSFUL
2019_07_26_01_31_42 : ALL 2 TESTS SUCCESSFUL
2019_07_26_01_34_01 : ALL 1 TESTS SUCCESSFUL
2019_07_26_01_34_14 : ALL 2 TESTS SUCCESSFUL
2019_07_26_09_29_41 : ALL 1 TESTS SUCCESSFUL
2019_07_26_09_30_48 : ALL 2 TESTS SUCCESSFUL
2019_07_26_09_55_25 : ALL 1 TESTS SUCCESSFUL
2019_07_26_09_55_30 : ALL 2 TESTS SUCCESSFUL
2019_07_26_10_34_48 : FAILED 1/1 TESTS: perl_syntax
2019_07_26_10_36_46 : ALL 1 TESTS SUCCESSFUL
2019_07_26_10_36_51 : ALL 2 TESTS SUCCESSFUL
2019_07_26_10_38_35 : ALL 1 TESTS SUCCESSFUL
2019_07_26_10_40_19 : ALL 1 TESTS SUCCESSFUL
2019_07_26_10_40_26 : ALL 2 TESTS SUCCESSFUL
2019_07_26_10_41_38 : ALL 1 TESTS SUCCESSFUL
2019_07_26_10_43_20 : ALL 1 TESTS SUCCESSFUL
2019_07_26_10_44_17 : ALL 1 TESTS SUCCESSFUL
2019_07_26_10_45_20 : ALL 1 TESTS SUCCESSFUL
2019_07_26_11_24_51 : ALL 1 TESTS SUCCESSFUL
2019_07_26_11_27_32 : ALL 1 TESTS SUCCESSFUL
2019_07_26_11_27_43 : ALL 2 TESTS SUCCESSFUL
2019_07_26_11_30_21 : ALL 1 TESTS SUCCESSFUL
2019_07_26_11_30_33 : ALL 2 TESTS SUCCESSFUL
2019_07_26_11_32_28 : ALL 1 TESTS SUCCESSFUL
2019_07_26_12_13_31 : FAILED 5/157 TESTS: first_sync_dry first_sync yahoo_all ll_justfolders_delete1emptyfolders ll_sep2
2019_07_26_12_54_45 : ALL 1 TESTS SUCCESSFUL
2019_07_26_13_01_33 : ALL 2 TESTS SUCCESSFUL
2019_07_26_21_21_20 : ALL 1 TESTS SUCCESSFUL
2019_07_26_21_21_32 : ALL 2 TESTS SUCCESSFUL
2019_07_27_05_27_08 : FAILED 1/1 TESTS: perl_syntax
2019_07_27_05_52_36 : FAILED 1/1 TESTS: perl_syntax
2019_07_27_06_01_38 : ALL 1 TESTS SUCCESSFUL
2019_07_27_06_01_49 : ALL 2 TESTS SUCCESSFUL
2019_07_27_06_03_37 : ALL 1 TESTS SUCCESSFUL
2019_07_27_06_03_49 : ALL 2 TESTS SUCCESSFUL
2019_07_27_06_05_23 : ALL 1 TESTS SUCCESSFUL
2019_07_27_06_05_35 : ALL 2 TESTS SUCCESSFUL
2019_07_27_06_06_31 : ALL 1 TESTS SUCCESSFUL
2019_07_27_06_06_41 : ALL 2 TESTS SUCCESSFUL
2019_07_27_06_09_44 : ALL 1 TESTS SUCCESSFUL
2019_07_27_06_10_02 : ALL 2 TESTS SUCCESSFUL
2019_07_27_06_10_57 : ALL 1 TESTS SUCCESSFUL
2019_07_27_06_11_14 : ALL 2 TESTS SUCCESSFUL
2019_07_27_06_11_49 : ALL 1 TESTS SUCCESSFUL
2019_07_27_06_12_12 : ALL 2 TESTS SUCCESSFUL
2019_07_27_06_12_40 : ALL 1 TESTS SUCCESSFUL
2019_07_27_06_12_54 : ALL 2 TESTS SUCCESSFUL
2019_07_27_06_29_57 : ALL 1 TESTS SUCCESSFUL
2019_07_27_06_30_07 : ALL 2 TESTS SUCCESSFUL
2019_07_27_06_31_06 : ALL 1 TESTS SUCCESSFUL
2019_07_27_06_31_16 : ALL 2 TESTS SUCCESSFUL
2019_07_27_06_33_18 : ALL 1 TESTS SUCCESSFUL
2019_07_27_06_33_25 : ALL 2 TESTS SUCCESSFUL
2019_07_27_06_34_21 : ALL 1 TESTS SUCCESSFUL
2019_07_27_06_41_25 : ALL 2 TESTS SUCCESSFUL
2019_07_27_06_43_55 : ALL 1 TESTS SUCCESSFUL
2019_07_27_06_44_03 : ALL 2 TESTS SUCCESSFUL
2019_07_27_10_02_44 : ALL 1 TESTS SUCCESSFUL
2019_07_27_10_03_23 : ALL 2 TESTS SUCCESSFUL
2019_07_27_10_08_07 : ALL 1 TESTS SUCCESSFUL
2019_07_27_10_08_14 : ALL 2 TESTS SUCCESSFUL
2019_07_27_10_09_30 : ALL 1 TESTS SUCCESSFUL
2019_07_27_10_09_30 : FAILED 1/2 TESTS: ll_justfoldersizes_noexist!
2019_07_27_10_09_45 : ALL 1 TESTS SUCCESSFUL
2019_07_27_10_09_52 : ALL 2 TESTS SUCCESSFUL
2019_07_27_10_10_55 : ALL 1 TESTS SUCCESSFUL
2019_07_27_10_11_03 : ALL 2 TESTS SUCCESSFUL
2019_07_27_10_13_59 : ALL 1 TESTS SUCCESSFUL
2019_07_27_10_14_06 : ALL 2 TESTS SUCCESSFUL
2019_07_27_10_15_05 : ALL 1 TESTS SUCCESSFUL
2019_07_27_10_15_16 : ALL 2 TESTS SUCCESSFUL
2019_07_27_11_08_43 : ALL 1 TESTS SUCCESSFUL
2019_07_27_11_08_52 : ALL 2 TESTS SUCCESSFUL
2019_07_27_11_19_02 : ALL 1 TESTS SUCCESSFUL
2019_07_27_11_19_09 : ALL 2 TESTS SUCCESSFUL
2019_07_27_11_21_26 : ALL 1 TESTS SUCCESSFUL
2019_07_27_11_21_33 : ALL 2 TESTS SUCCESSFUL
2019_07_27_11_34_40 : ALL 1 TESTS SUCCESSFUL
2019_07_27_11_34_47 : ALL 2 TESTS SUCCESSFUL
2019_07_27_11_35_32 : ALL 1 TESTS SUCCESSFUL
2019_07_27_11_36_10 : ALL 2 TESTS SUCCESSFUL
2019_07_27_11_36_23 : ALL 1 TESTS SUCCESSFUL
2019_07_27_11_36_37 : ALL 2 TESTS SUCCESSFUL
2019_07_27_11_36_47 : ALL 1 TESTS SUCCESSFUL
2019_07_27_11_36_57 : ALL 2 TESTS SUCCESSFUL
2019_07_27_11_37_06 : ALL 1 TESTS SUCCESSFUL
2019_07_27_11_37_17 : ALL 2 TESTS SUCCESSFUL
2019_07_27_11_37_26 : ALL 1 TESTS SUCCESSFUL
2019_07_27_11_37_42 : ALL 2 TESTS SUCCESSFUL
2019_07_27_11_38_20 : ALL 1 TESTS SUCCESSFUL
2019_07_27_11_39_03 : ALL 2 TESTS SUCCESSFUL
2019_07_27_11_41_04 : ALL 1 TESTS SUCCESSFUL
2019_07_27_11_41_15 : ALL 2 TESTS SUCCESSFUL
2019_07_28_02_51_54 : ALL 1 TESTS SUCCESSFUL
2019_07_28_02_52_19 : ALL 2 TESTS SUCCESSFUL
2019_07_28_02_53_54 : ALL 1 TESTS SUCCESSFUL
2019_07_28_02_54_15 : ALL 2 TESTS SUCCESSFUL
2019_07_28_02_57_40 : ALL 1 TESTS SUCCESSFUL
2019_07_28_02_58_20 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_00_34 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_01_18 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_07_42 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_08_24 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_10_55 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_11_37 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_14_08 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_14_17 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_18_39 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_18_46 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_18_54 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_19_26 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_24_14 : FAILED 1/1 TESTS: perl_syntax
2019_07_28_03_25_17 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_25_52 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_27_22 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_27_52 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_32_34 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_32_35 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_32_38 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_32_39 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_32_55 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_33_07 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_35_24 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_35_24 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_35_36 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_36_07 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_37_57 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_37_57 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_38_01 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_38_01 : ALL 2 TESTS SUCCESSFUL
2019_07_28_03_38_08 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_38_09 : ALL 4 TESTS SUCCESSFUL
2019_07_28_03_38_16 : ALL 1 TESTS SUCCESSFUL
2019_07_28_03_38_28 : ALL 2 TESTS SUCCESSFUL
2019_07_28_04_17_19 : ALL 1 TESTS SUCCESSFUL
2019_07_28_04_17_20 : ALL 4 TESTS SUCCESSFUL
2019_07_28_04_17_23 : ALL 1 TESTS SUCCESSFUL
2019_07_28_04_17_23 : ALL 4 TESTS SUCCESSFUL
2019_07_28_04_17_27 : ALL 1 TESTS SUCCESSFUL
2019_07_28_04_17_42 : ALL 2 TESTS SUCCESSFUL
2019_07_29_08_42_09 : ALL 1 TESTS SUCCESSFUL
2019_07_29_09_26_18 : FAILED 7/157 TESTS: first_sync_dry first_sync yahoo_all ll_justfolders_delete1emptyfolders ll_sep2 ll_domino1_domino2 ll_domino2
2019_07_29_10_11_07 : ALL 1 TESTS SUCCESSFUL
2019_07_29_10_14_23 : ALL 2 TESTS SUCCESSFUL
2019_07_30_00_39_42 : ALL 1 TESTS SUCCESSFUL
2019_07_30_00_39_51 : ALL 2 TESTS SUCCESSFUL
2019_07_30_11_17_17 : ALL 1 TESTS SUCCESSFUL
2019_07_31_15_02_48 : ALL 1 TESTS SUCCESSFUL
2019_07_31_15_02_55 : ALL 2 TESTS SUCCESSFUL
2019_07_31_17_57_02 : ALL 1 TESTS SUCCESSFUL
2019_07_31_17_57_09 : ALL 2 TESTS SUCCESSFUL
2019_07_31_19_05_39 : ALL 1 TESTS SUCCESSFUL
2019_08_01_03_19_29 : ALL 1 TESTS SUCCESSFUL
2019_08_01_04_03_21 : FAILED 7/157 TESTS: first_sync_dry first_sync yahoo_all ll_justfolders_delete1emptyfolders ll_sep2 ll_domino1_domino2 ll_domino2
2019_08_01_04_43_05 : ALL 1 TESTS SUCCESSFUL
2019_08_01_04_47_48 : ALL 2 TESTS SUCCESSFUL
2019_08_01_18_46_50 : ALL 1 TESTS SUCCESSFUL
2019_08_01_18_47_21 : FAILED 1/2 TESTS: ll_regexmess_add_header
2019_08_01_18_47_40 : ALL 1 TESTS SUCCESSFUL
2019_08_01_18_48_02 : ALL 1 TESTS SUCCESSFUL
2019_08_01_18_49_31 : ALL 1 TESTS SUCCESSFUL
2019_08_01_18_54_01 : ALL 1 TESTS SUCCESSFUL
2019_08_01_18_54_07 : FAILED 1/2 TESTS: ll_regexmess_add_header
2019_08_01_18_54_37 : ALL 1 TESTS SUCCESSFUL
2019_08_01_18_54_43 : FAILED 1/2 TESTS: ll_regexmess_add_header
2019_08_01_18_55_35 : ALL 1 TESTS SUCCESSFUL
2019_08_01_18_55_41 : FAILED 1/2 TESTS: ll_regexmess_add_header
2019_08_01_18_59_33 : ALL 1 TESTS SUCCESSFUL
2019_08_01_18_59_38 : FAILED 1/2 TESTS: ll_regexmess_add_header
2019_08_01_19_00_46 : ALL 1 TESTS SUCCESSFUL
2019_08_01_19_00_52 : ALL 2 TESTS SUCCESSFUL
2019_08_01_19_04_07 : ALL 1 TESTS SUCCESSFUL
2019_08_01_19_04_12 : FAILED 1/2 TESTS: ll_regexmess_add_header_path
2019_08_01_19_07_02 : ALL 1 TESTS SUCCESSFUL
2019_08_01_19_07_06 : FAILED 1/2 TESTS: ll_regexmess_add_header_path
2019_08_01_20_35_48 : ALL 1 TESTS SUCCESSFUL
2019_08_01_20_35_54 : FAILED 1/2 TESTS: ll_regexmess_add_header_path
2019_08_01_20_40_38 : ALL 1 TESTS SUCCESSFUL
2019_08_01_20_40_44 : FAILED 1/2 TESTS: ll_regexmess_add_header_path
2019_08_01_20_44_20 : ALL 1 TESTS SUCCESSFUL
2019_08_01_20_44_29 : ALL 2 TESTS SUCCESSFUL
2019_08_01_20_45_23 : ALL 1 TESTS SUCCESSFUL
2019_08_01_20_45_27 : ALL 2 TESTS SUCCESSFUL
2019_08_01_20_46_51 : ALL 1 TESTS SUCCESSFUL
2019_08_01_20_46_55 : ALL 2 TESTS SUCCESSFUL
2019_08_01_20_47_02 : ALL 1 TESTS SUCCESSFUL
2019_08_01_20_47_08 : FAILED 1/2 TESTS: ll_regexmess_add_header_path
2019_08_01_20_49_16 : ALL 1 TESTS SUCCESSFUL
2019_08_01_20_49_19 : ALL 2 TESTS SUCCESSFUL
2019_08_01_20_51_11 : ALL 1 TESTS SUCCESSFUL
2019_08_01_20_51_15 : ALL 2 TESTS SUCCESSFUL
2019_08_01_20_52_35 : ALL 1 TESTS SUCCESSFUL
2019_08_01_20_52_40 : ALL 2 TESTS SUCCESSFUL
2019_08_01_20_53_17 : ALL 1 TESTS SUCCESSFUL
2019_08_01_20_53_21 : ALL 2 TESTS SUCCESSFUL
2019_08_01_20_53_44 : ALL 1 TESTS SUCCESSFUL
2019_08_01_20_53_48 : ALL 2 TESTS SUCCESSFUL
2019_08_01_21_16_30 : ALL 1 TESTS SUCCESSFUL
2019_08_01_21_16_35 : ALL 2 TESTS SUCCESSFUL
2019_08_01_21_23_45 : ALL 1 TESTS SUCCESSFUL
2019_08_01_21_23_49 : ALL 2 TESTS SUCCESSFUL
2019_08_01_21_31_26 : ALL 1 TESTS SUCCESSFUL
2019_08_01_21_31_30 : ALL 2 TESTS SUCCESSFUL
2019_08_01_21_31_41 : ALL 1 TESTS SUCCESSFUL
2019_08_01_21_31_46 : FAILED 1/2 TESTS: ll_regexmess_add_header_path
2019_08_01_21_34_26 : ALL 1 TESTS SUCCESSFUL
2019_08_01_21_34_31 : ALL 2 TESTS SUCCESSFUL
2019_08_01_21_37_45 : ALL 1 TESTS SUCCESSFUL
2019_08_01_21_37_51 : ALL 2 TESTS SUCCESSFUL
2019_08_01_21_39_00 : ALL 1 TESTS SUCCESSFUL
2019_08_01_21_39_07 : FAILED 1/2 TESTS: ll_regexmess_add_header_path
2019_08_01_21_39_35 : ALL 1 TESTS SUCCESSFUL
2019_08_01_21_39_41 : ALL 2 TESTS SUCCESSFUL
2019_08_01_21_41_42 : ALL 1 TESTS SUCCESSFUL
2019_08_01_22_24_04 : FAILED 7/159 TESTS: first_sync_dry first_sync yahoo_all ll_justfolders_delete1emptyfolders ll_sep2 ll_domino1_domino2 ll_domino2
2019_08_01_22_36_10 : ALL 1 TESTS SUCCESSFUL
2019_08_01_22_39_03 : FAILED 7/8 TESTS: first_sync_dry first_sync yahoo_all ll_justfolders_delete1emptyfolders ll_sep2 ll_domino1_domino2 ll_domino2
2019_08_01_22_39_18 : ALL 1 TESTS SUCCESSFUL
2019_08_01_22_39_24 : FAILED 1/2 TESTS: ll_domino2
2019_08_02_13_58_44 : ALL 1 TESTS SUCCESSFUL
2019_08_02_13_59_03 : ALL 2 TESTS SUCCESSFUL
2019_08_02_14_00_38 : ALL 1 TESTS SUCCESSFUL
2019_08_02_14_00_44 : ALL 2 TESTS SUCCESSFUL
2019_08_02_14_01_40 : ALL 1 TESTS SUCCESSFUL
2019_08_02_14_01_45 : ALL 2 TESTS SUCCESSFUL
2019_08_02_14_03_56 : ALL 1 TESTS SUCCESSFUL
2019_08_02_14_04_02 : ALL 2 TESTS SUCCESSFUL
2019_08_02_14_04_33 : ALL 1 TESTS SUCCESSFUL
2019_08_02_14_04_40 : ALL 2 TESTS SUCCESSFUL
2019_08_02_14_06_14 : ALL 1 TESTS SUCCESSFUL
2019_08_02_14_06_27 : ALL 2 TESTS SUCCESSFUL
2019_08_02_14_17_30 : ALL 1 TESTS SUCCESSFUL
2019_08_02_14_17_36 : FAILED 1/2 TESTS: ll_regexmess_add_header_path
2019_08_02_14_25_00 : ALL 1 TESTS SUCCESSFUL
2019_08_02_14_25_16 : FAILED 1/2 TESTS: ll_regexmess_add_header_path
2019_08_02_14_25_57 : ALL 1 TESTS SUCCESSFUL
2019_08_02_14_26_05 : FAILED 1/2 TESTS: ll_regexmess_add_header_path
2019_08_02_15_51_14 : ALL 1 TESTS SUCCESSFUL
2019_08_02_15_51_28 : ALL 2 TESTS SUCCESSFUL
2019_08_02_15_52_54 : ALL 1 TESTS SUCCESSFUL
2019_08_02_15_53_04 : FAILED 1/2 TESTS: ll_regexmess_add_header_path
2019_08_02_15_54_40 : ALL 1 TESTS SUCCESSFUL
2019_08_02_15_54_52 : ALL 2 TESTS SUCCESSFUL
2019_08_02_15_55_09 : ALL 1 TESTS SUCCESSFUL
2019_08_02_15_55_29 : ALL 2 TESTS SUCCESSFUL
2019_08_02_15_55_49 : ALL 1 TESTS SUCCESSFUL
2019_08_02_15_55_56 : ALL 2 TESTS SUCCESSFUL
2019_08_02_15_57_55 : ALL 1 TESTS SUCCESSFUL
2019_08_02_15_58_03 : ALL 2 TESTS SUCCESSFUL
2019_08_02_15_59_16 : ALL 1 TESTS SUCCESSFUL
2019_08_02_15_59_22 : ALL 2 TESTS SUCCESSFUL
2019_08_02_15_59_56 : ALL 1 TESTS SUCCESSFUL
2019_08_02_16_00_12 : ALL 2 TESTS SUCCESSFUL
2019_08_02_16_02_10 : ALL 1 TESTS SUCCESSFUL
2019_08_02_16_02_21 : ALL 2 TESTS SUCCESSFUL
2019_08_02_20_59_29 : ALL 1 TESTS SUCCESSFUL
2019_08_02_20_59_55 : ALL 2 TESTS SUCCESSFUL
2019_08_02_21_01_38 : ALL 1 TESTS SUCCESSFUL
2019_08_02_21_01_42 : ALL 2 TESTS SUCCESSFUL
2019_08_02_21_03_00 : ALL 1 TESTS SUCCESSFUL
2019_08_02_21_03_05 : FAILED 1/2 TESTS: ll_justfoldersizes_noexist
2019_08_02_21_12_13 : FAILED 1/1 TESTS: perl_syntax
2019_08_02_21_12_52 : ALL 1 TESTS SUCCESSFUL
2019_08_02_21_12_56 : FAILED 1/2 TESTS: ll_justfoldersizes_noexist
2019_08_02_21_14_24 : ALL 1 TESTS SUCCESSFUL
2019_08_02_21_14_28 : FAILED 1/2 TESTS: ll_justfoldersizes_noexist
2019_08_02_21_15_46 : ALL 1 TESTS SUCCESSFUL
2019_08_02_21_15_51 : FAILED 1/2 TESTS: ll_justfoldersizes_noexist
2019_08_02_21_17_48 : ALL 1 TESTS SUCCESSFUL
2019_08_02_21_17_53 : FAILED 1/2 TESTS: ll_justfoldersizes_noexist
2019_08_02_21_18_39 : ALL 1 TESTS SUCCESSFUL
2019_08_02_21_18_44 : ALL 2 TESTS SUCCESSFUL
2019_08_02_21_19_58 : ALL 1 TESTS SUCCESSFUL
2019_08_02_22_18_53 : FAILED 4/160 TESTS: yahoo_all ll_sep2 ll_domino1_domino2 ll_domino2
2019_08_02_22_22_43 : ALL 1 TESTS SUCCESSFUL
2019_08_02_22_22_52 : ALL 2 TESTS SUCCESSFUL
2019_08_02_22_34_41 : ALL 1 TESTS SUCCESSFUL
2019_08_02_23_18_10 : FAILED 4/160 TESTS: first_sync_dry ll_sep2 ll_domino1_domino2 ll_domino2
2019_08_03_01_48_18 : ALL 1 TESTS SUCCESSFUL
2019_08_03_02_31_26 : FAILED 4/160 TESTS: first_sync_dry ll_sep2 ll_domino1_domino2 ll_domino2
2019_08_03_03_13_59 : ALL 1 TESTS SUCCESSFUL
2019_08_03_03_19_02 : ALL 2 TESTS SUCCESSFUL
2019_08_10_12_36_15 : ALL 1 TESTS SUCCESSFUL
2019_08_10_12_36_24 : ALL 2 TESTS SUCCESSFUL
2019_08_10_12_37_08 : ALL 1 TESTS SUCCESSFUL
2019_08_10_12_37_15 : ALL 2 TESTS SUCCESSFUL
2019_08_10_12_38_09 : ALL 1 TESTS SUCCESSFUL
2019_08_10_12_38_17 : ALL 2 TESTS SUCCESSFUL
2019_08_10_12_39_26 : ALL 1 TESTS SUCCESSFUL
2019_08_10_12_39_30 : FAILED 1/2 TESTS: firstclass
2019_08_10_12_40_08 : ALL 1 TESTS SUCCESSFUL
2019_08_10_12_40_33 : ALL 2 TESTS SUCCESSFUL
2019_08_10_12_43_38 : ALL 1 TESTS SUCCESSFUL
2019_08_10_12_44_01 : ALL 2 TESTS SUCCESSFUL
2019_08_10_12_47_48 : ALL 1 TESTS SUCCESSFUL
2019_08_10_12_48_12 : ALL 2 TESTS SUCCESSFUL
2019_08_10_12_50_18 : ALL 1 TESTS SUCCESSFUL
2019_08_10_12_50_43 : ALL 2 TESTS SUCCESSFUL
2019_08_10_12_59_50 : ALL 1 TESTS SUCCESSFUL
2019_08_10_12_59_52 : FAILED 1/2 TESTS: firstclass_fullfill
2019_08_10_13_02_25 : ALL 1 TESTS SUCCESSFUL
2019_08_10_13_02_42 : ALL 2 TESTS SUCCESSFUL
2019_08_10_13_03_15 : ALL 1 TESTS SUCCESSFUL
2019_08_10_13_03_43 : ALL 1 TESTS SUCCESSFUL
2019_08_10_13_04_01 : ALL 2 TESTS SUCCESSFUL
2019_08_10_13_04_07 : ALL 1 TESTS SUCCESSFUL
2019_08_10_13_04_33 : ALL 2 TESTS SUCCESSFUL
2019_08_10_13_05_29 : ALL 1 TESTS SUCCESSFUL
2019_08_10_13_05_46 : ALL 2 TESTS SUCCESSFUL
2019_08_10_13_06_36 : ALL 1 TESTS SUCCESSFUL
2019_08_10_13_07_02 : ALL 2 TESTS SUCCESSFUL
2019_08_29_11_40_36 : ALL 1 TESTS SUCCESSFUL
2019_08_29_11_40_51 : ALL 2 TESTS SUCCESSFUL
2019_08_29_11_42_54 : ALL 1 TESTS SUCCESSFUL
2019_08_29_11_42_59 : ALL 2 TESTS SUCCESSFUL
2019_08_29_11_47_58 : ALL 1 TESTS SUCCESSFUL
2019_08_29_11_48_03 : ALL 2 TESTS SUCCESSFUL
2019_08_29_11_49_05 : ALL 1 TESTS SUCCESSFUL
2019_08_29_11_49_10 : FAILED 1/2 TESTS: ll_justfolders_skipemptyfolders
2019_08_29_11_55_17 : FAILED 1/1 TESTS: perl_syntax
2019_08_29_11_58_33 : ALL 1 TESTS SUCCESSFUL
2019_08_29_11_58_38 : FAILED 1/2 TESTS: ll_justfolders_skipemptyfolders
2019_08_29_19_10_36 : ALL 1 TESTS SUCCESSFUL
2019_08_29_19_10_45 : FAILED 1/2 TESTS: ll_justfolders_skipemptyfolders
2019_08_29_19_12_06 : ALL 1 TESTS SUCCESSFUL
2019_08_29_19_12_45 : FAILED 1/2 TESTS: ll_delete1_delete1emptyfolders
2019_08_29_19_15_03 : ALL 1 TESTS SUCCESSFUL
2019_08_29_19_15_26 : ALL 2 TESTS SUCCESSFUL
2019_08_29_19_21_00 : ALL 1 TESTS SUCCESSFUL
2019_08_29_19_21_17 : ALL 2 TESTS SUCCESSFUL
2019_08_29_19_21_58 : ALL 1 TESTS SUCCESSFUL
2019_08_29_19_22_03 : FAILED 1/2 TESTS: ll_justfolders_skipemptyfolders
2019_08_29_19_23_46 : ALL 1 TESTS SUCCESSFUL
2019_08_29_19_23_51 : ALL 2 TESTS SUCCESSFUL
2019_08_29_19_30_05 : ALL 1 TESTS SUCCESSFUL
2019_08_29_19_30_12 : ALL 2 TESTS SUCCESSFUL
2019_08_29_19_30_24 : ALL 1 TESTS SUCCESSFUL
2019_08_29_19_30_44 : ALL 2 TESTS SUCCESSFUL
2019_08_29_19_34_30 : ALL 1 TESTS SUCCESSFUL
2019_08_29_19_34_47 : ALL 2 TESTS SUCCESSFUL
2019_08_29_19_35_33 : ALL 1 TESTS SUCCESSFUL
2019_08_29_19_39_14 : ALL 1 TESTS SUCCESSFUL
2019_08_29_19_39_19 : ALL 2 TESTS SUCCESSFUL
2019_08_29_19_41_34 : ALL 1 TESTS SUCCESSFUL
2019_08_29_20_27_41 : FAILED 2/160 TESTS: yahoo_all ll_justfolders_delete1emptyfolders
2019_08_29_22_20_12 : ALL 1 TESTS SUCCESSFUL
2019_08_29_22_22_12 : FAILED 1/3 TESTS: ll_justfolders_delete1emptyfolders
2019_08_29_22_23_10 : ALL 1 TESTS SUCCESSFUL
2019_08_29_22_23_27 : FAILED 1/2 TESTS: ll_justfolders_delete1emptyfolders
2019_08_29_22_26_52 : ALL 1 TESTS SUCCESSFUL
2019_08_29_22_27_09 : FAILED 1/2 TESTS: ll_justfolders_delete1emptyfolders
2019_08_29_22_40_17 : ALL 1 TESTS SUCCESSFUL
2019_08_29_22_40_38 : FAILED 1/2 TESTS: ll_justfolders_delete1emptyfolders
2019_08_29_22_40_55 : ALL 1 TESTS SUCCESSFUL
2019_08_29_22_41_06 : FAILED 1/2 TESTS: ll_justfolders_delete1emptyfolders
2019_08_29_22_41_10 : ALL 1 TESTS SUCCESSFUL
2019_08_29_22_41_21 : FAILED 1/2 TESTS: ll_justfolders_delete1emptyfolders
2019_08_29_22_43_49 : ALL 1 TESTS SUCCESSFUL
2019_08_29_22_44_06 : FAILED 1/2 TESTS: ll_justfolders_delete1emptyfolders
2019_08_29_22_48_28 : ALL 1 TESTS SUCCESSFUL
2019_08_29_22_48_51 : ALL 2 TESTS SUCCESSFUL
2019_08_29_22_48_58 : ALL 1 TESTS SUCCESSFUL
2019_08_29_22_49_16 : ALL 2 TESTS SUCCESSFUL
2019_09_11_11_12_28 : ALL 1 TESTS SUCCESSFUL
2019_09_11_11_12_29 : FAILED 1/2 TESTS: abort_tests
2019_09_11_13_56_05 : ALL 1 TESTS SUCCESSFUL
2019_09_11_13_56_23 : ALL 2 TESTS SUCCESSFUL
2019_09_11_14_05_29 : ALL 1 TESTS SUCCESSFUL
2019_09_11_14_05_47 : ALL 2 TESTS SUCCESSFUL
2019_09_11_14_15_14 : ALL 1 TESTS SUCCESSFUL
2019_09_11_14_15_24 : ALL 2 TESTS SUCCESSFUL
2019_09_11_14_19_16 : ALL 1 TESTS SUCCESSFUL
2019_09_11_14_19_22 : ALL 2 TESTS SUCCESSFUL
2019_09_11_17_06_50 : ALL 1 TESTS SUCCESSFUL
2019_09_11_17_06_56 : ALL 2 TESTS SUCCESSFUL
2019_09_11_23_13_46 : ALL 1 TESTS SUCCESSFUL
2019_09_11_23_13_53 : ALL 2 TESTS SUCCESSFUL
2019_09_12_02_50_23 : ALL 1 TESTS SUCCESSFUL
2019_09_12_02_50_32 : ALL 2 TESTS SUCCESSFUL
2019_09_12_02_58_26 : ALL 1 TESTS SUCCESSFUL
2019_09_12_02_58_33 : ALL 2 TESTS SUCCESSFUL
2019_09_12_02_59_21 : ALL 1 TESTS SUCCESSFUL
2019_09_12_02_59_27 : ALL 2 TESTS SUCCESSFUL
2019_09_12_03_15_52 : ALL 1 TESTS SUCCESSFUL
2019_09_12_03_15_59 : ALL 2 TESTS SUCCESSFUL
2019_09_16_21_56_34 : ALL 1 TESTS SUCCESSFUL
2019_09_16_21_56_59 : ALL 2 TESTS SUCCESSFUL
2019_09_17_00_22_50 : ALL 1 TESTS SUCCESSFUL
2019_09_17_00_22_55 : FAILED 1/2 TESTS: abort_tests
2019_09_17_00_26_25 : ALL 1 TESTS SUCCESSFUL
2019_09_17_00_26_28 : FAILED 1/2 TESTS: ll_abort_noprocess
2019_09_18_01_06_12 : ALL 1 TESTS SUCCESSFUL
2019_09_18_01_06_17 : FAILED 1/2 TESTS: abort_tests
2019_09_18_01_07_13 : ALL 1 TESTS SUCCESSFUL
2019_09_18_01_07_26 : FAILED 1/2 TESTS: abort_tests
2019_09_18_01_24_21 : ALL 1 TESTS SUCCESSFUL
2019_09_18_01_24_33 : FAILED 1/2 TESTS: abort_tests
2019_09_18_01_35_25 : ALL 1 TESTS SUCCESSFUL
2019_09_18_01_35_40 : FAILED 1/2 TESTS: abort_tests
2019_09_18_01_44_20 : ALL 1 TESTS SUCCESSFUL
2019_09_18_01_44_32 : FAILED 1/2 TESTS: abort_tests
2019_09_18_01_45_58 : ALL 1 TESTS SUCCESSFUL
2019_09_18_01_46_07 : FAILED 1/2 TESTS: ll_abort
2019_09_18_01_47_41 : ALL 1 TESTS SUCCESSFUL
2019_09_18_01_47_47 : ALL 2 TESTS SUCCESSFUL
2019_09_18_01_51_02 : ALL 1 TESTS SUCCESSFUL
2019_09_18_01_51_08 : ALL 2 TESTS SUCCESSFUL
2019_09_18_01_51_20 : ALL 1 TESTS SUCCESSFUL
2019_09_18_01_51_28 : FAILED 1/2 TESTS: ll_abort
2019_09_18_01_56_26 : ALL 1 TESTS SUCCESSFUL
2019_09_18_01_56_34 : FAILED 1/2 TESTS: ll_abort_no_pidfile_option
2019_09_18_01_57_51 : ALL 1 TESTS SUCCESSFUL
2019_09_18_01_57_57 : ALL 2 TESTS SUCCESSFUL
2019_09_18_02_05_31 : ALL 1 TESTS SUCCESSFUL
2019_09_18_02_05_38 : ALL 2 TESTS SUCCESSFUL
2019_09_18_02_05_49 : ALL 1 TESTS SUCCESSFUL
2019_09_18_02_05_55 : ALL 2 TESTS SUCCESSFUL
2019_09_18_02_07_53 : ALL 1 TESTS SUCCESSFUL
2019_09_18_02_07_59 : ALL 2 TESTS SUCCESSFUL
2019_09_18_02_08_49 : ALL 1 TESTS SUCCESSFUL
2019_09_18_02_08_55 : ALL 2 TESTS SUCCESSFUL
2019_09_18_08_45_27 : ALL 1 TESTS SUCCESSFUL
2019_09_18_08_45_39 : ALL 2 TESTS SUCCESSFUL
2019_09_18_09_21_21 : ALL 1 TESTS SUCCESSFUL
2019_09_18_09_21_28 : FAILED 1/2 TESTS: ll_abort
2019_09_18_09_24_42 : ALL 1 TESTS SUCCESSFUL
2019_09_18_09_24_49 : FAILED 1/2 TESTS: ll_abort
2019_09_18_09_27_49 : ALL 1 TESTS SUCCESSFUL
2019_09_18_09_27_55 : FAILED 1/2 TESTS: ll_abort
2019_09_18_09_29_12 : ALL 1 TESTS SUCCESSFUL
2019_09_18_09_29_19 : ALL 2 TESTS SUCCESSFUL
2019_09_18_09_30_23 : ALL 1 TESTS SUCCESSFUL
2019_09_18_09_30_50 : ALL 2 TESTS SUCCESSFUL
2019_09_18_23_48_12 : ALL 1 TESTS SUCCESSFUL
2019_09_18_23_48_22 : ALL 2 TESTS SUCCESSFUL
2019_09_19_09_40_54 : ALL 1 TESTS SUCCESSFUL
2019_09_19_10_27_06 : FAILED 1/161 TESTS: option_tests
2019_09_19_10_31_06 : ALL 1 TESTS SUCCESSFUL
2019_09_19_10_31_37 : FAILED 1/2 TESTS: option_tests
2019_09_19_10_33_14 : ALL 1 TESTS SUCCESSFUL
2019_09_19_10_33_50 : FAILED 1/2 TESTS: option_tests
2019_09_19_15_37_26 : ALL 1 TESTS SUCCESSFUL
2019_09_19_15_37_53 : ALL 2 TESTS SUCCESSFUL
2019_10_18_15_29_40 : ALL 1 TESTS SUCCESSFUL
2019_10_18_15_30_11 : ALL 2 TESTS SUCCESSFUL
2019_10_18_15_30_48 : ALL 1 TESTS SUCCESSFUL
2019_10_18_15_31_05 : ALL 2 TESTS SUCCESSFUL
2019_10_22_13_27_05 : ALL 1 TESTS SUCCESSFUL
2019_10_22_13_27_22 : FAILED 1/2 TESTS: ll_regextrans2_archive_per_year_flat_hard_year
2019_10_22_13_29_36 : ALL 1 TESTS SUCCESSFUL
2019_11_13_23_47_26 : ALL 1 TESTS SUCCESSFUL
2019_11_13_23_48_08 : ALL 2 TESTS SUCCESSFUL
2019_11_13_23_49_06 : ALL 1 TESTS SUCCESSFUL
2019_11_13_23_49_22 : ALL 2 TESTS SUCCESSFUL
2019_11_13_23_50_00 : ALL 1 TESTS SUCCESSFUL
2019_11_13_23_50_14 : ALL 2 TESTS SUCCESSFUL
2019_11_13_23_51_57 : ALL 1 TESTS SUCCESSFUL
2019_11_13_23_52_05 : ALL 2 TESTS SUCCESSFUL
2019_11_14_12_33_13 : ALL 1 TESTS SUCCESSFUL
2019_11_14_12_33_54 : ALL 2 TESTS SUCCESSFUL
2019_11_14_12_34_47 : ALL 1 TESTS SUCCESSFUL
2019_11_14_12_34_55 : ALL 2 TESTS SUCCESSFUL
2019_11_14_12_38_16 : ALL 1 TESTS SUCCESSFUL
2019_11_14_12_43_50 : ALL 2 TESTS SUCCESSFUL
2019_11_15_12_39_18 : ALL 1 TESTS SUCCESSFUL
2019_11_15_12_39_19 : FAILED 5/6 TESTS: ./W/learn/create_folder localhost titi HUwtEd INBOX.NEW_2
2019_11_15_12_39_41 : ALL 1 TESTS SUCCESSFUL
2019_11_15_12_40_35 : ALL 2 TESTS SUCCESSFUL
2019_11_15_12_40_50 : ALL 1 TESTS SUCCESSFUL
2019_11_15_12_41_07 : ALL 2 TESTS SUCCESSFUL
2019_11_15_12_41_38 : ALL 1 TESTS SUCCESSFUL
2019_11_15_12_41_49 : ALL 2 TESTS SUCCESSFUL
2019_11_15_12_44_45 : ALL 1 TESTS SUCCESSFUL
2019_11_15_12_44_54 : ALL 2 TESTS SUCCESSFUL
2019_11_15_12_57_36 : FAILED 1/1 TESTS: perl_syntax
2019_11_15_12_58_08 : FAILED 1/1 TESTS: perl_syntax
2019_11_15_12_58_45 : ALL 1 TESTS SUCCESSFUL
2019_11_15_12_58_56 : ALL 2 TESTS SUCCESSFUL
2019_11_15_13_00_44 : ALL 1 TESTS SUCCESSFUL
2019_11_15_13_00_59 : ALL 2 TESTS SUCCESSFUL
2019_11_15_13_04_21 : ALL 1 TESTS SUCCESSFUL
2019_11_15_13_04_32 : ALL 2 TESTS SUCCESSFUL
2019_11_15_13_05_40 : ALL 1 TESTS SUCCESSFUL
2019_11_15_13_05_55 : ALL 2 TESTS SUCCESSFUL
2019_11_15_13_11_51 : FAILED 1/1 TESTS: perl_syntax
2019_11_15_13_13_02 : ALL 1 TESTS SUCCESSFUL
2019_11_15_13_13_11 : ALL 2 TESTS SUCCESSFUL
2019_11_15_13_15_02 : ALL 1 TESTS SUCCESSFUL
2019_11_15_13_15_18 : ALL 2 TESTS SUCCESSFUL
2019_11_15_13_18_24 : ALL 1 TESTS SUCCESSFUL
2019_11_15_13_18_33 : ALL 2 TESTS SUCCESSFUL
2019_11_15_13_19_05 : ALL 1 TESTS SUCCESSFUL
2019_11_15_13_19_18 : FAILED 1/2 TESTS: ll_delete2foldersonly_tmp
2019_11_15_13_19_26 : ALL 1 TESTS SUCCESSFUL
2019_11_15_13_19_37 : FAILED 1/2 TESTS: ll_delete2foldersonly_tmp
2019_11_19_20_42_08 : ALL 1 TESTS SUCCESSFUL
2019_11_19_20_42_44 : FAILED 1/2 TESTS: ll_delete2foldersonly_tmp
2019_11_19_20_44_01 : ALL 1 TESTS SUCCESSFUL
2019_11_19_20_44_07 : ALL 2 TESTS SUCCESSFUL
2019_11_19_20_44_13 : ALL 1 TESTS SUCCESSFUL
2019_11_19_21_32_57 : ALL 161 TESTS SUCCESSFUL
2019_11_24_18_28_57 : ALL 1 TESTS SUCCESSFUL
2019_11_24_18_29_21 : ALL 2 TESTS SUCCESSFUL
2019_11_25_22_52_47 : ALL 1 TESTS SUCCESSFUL
2019_11_25_22_53_03 : ALL 1 TESTS SUCCESSFUL
2019_11_25_22_53_15 : ALL 2 TESTS SUCCESSFUL
2019_11_25_23_15_06 : ALL 1 TESTS SUCCESSFUL
2019_11_25_23_15_16 : ALL 2 TESTS SUCCESSFUL
2019_11_25_23_27_46 : ALL 1 TESTS SUCCESSFUL
2019_11_25_23_27_54 : ALL 2 TESTS SUCCESSFUL
2019_11_28_12_38_36 : ALL 1 TESTS SUCCESSFUL
2019_11_28_12_38_56 : ALL 2 TESTS SUCCESSFUL
2019_11_28_15_56_07 : ALL 1 TESTS SUCCESSFUL
2019_11_28_16_47_06 : FAILED 3/161 TESTS: ks_justconnect_ipv6 ks_justconnect_ipv6_nossl testslive6
2019_11_28_16_55_34 : ALL 1 TESTS SUCCESSFUL
2019_11_28_17_05_35 : FAILED 2/4 TESTS: ks_justconnect_ipv6 ks_justconnect_ipv6_nossl
2019_11_29_10_00_15 : ALL 1 TESTS SUCCESSFUL
2019_11_29_10_00_15 : FAILED 1/2 TESTS: tests_mailimapclient_connect
2019_11_29_10_01_12 : ALL 1 TESTS SUCCESSFUL
2019_11_29_10_01_42 : ALL 4 TESTS SUCCESSFUL
2019_11_29_12_40_34 : ALL 1 TESTS SUCCESSFUL
2019_11_29_14_25_16 : ALL 1 TESTS SUCCESSFUL
2019_11_29_15_09_06 : FAILED 3/161 TESTS: yahoo_all ks_justconnect_ipv6_nossl testslive6
2019_11_29_15_19_59 : ALL 1 TESTS SUCCESSFUL
2019_11_29_15_24_29 : ALL 4 TESTS SUCCESSFUL
2019_11_29_15_25_29 : ALL 1 TESTS SUCCESSFUL
2019_11_29_15_28_32 : ALL 2 TESTS SUCCESSFUL
2019_12_01_21_34_37 : ALL 1 TESTS SUCCESSFUL
2019_12_01_21_38_48 : FAILED 1/4 TESTS: ks_justconnect_ipv6_nossl
2019_12_01_22_25_15 : ALL 1 TESTS SUCCESSFUL
2019_12_01_22_28_34 : ALL 4 TESTS SUCCESSFUL
2019_12_02_11_28_25 : ALL 1 TESTS SUCCESSFUL
2019_12_02_11_34_33 : FAILED 2/4 TESTS: ks_justconnect_ipv6_nossl testslive6
2019_12_02_19_23_38 : ALL 1 TESTS SUCCESSFUL
2019_12_02_20_08_53 : FAILED 3/159 TESTS: option_tests_in_var_tmp option_tests_in_var_tmp_sub ks_justconnect_ipv6
2019_12_03_00_14_54 : ALL 1 TESTS SUCCESSFUL
2019_12_03_00_16_15 : FAILED 2/4 TESTS: option_tests_in_var_tmp_sub ks_justconnect_ipv6
2019_12_03_00_17_36 : ALL 1 TESTS SUCCESSFUL
2019_12_03_00_18_06 : ALL 2 TESTS SUCCESSFUL
2019_12_03_00_18_15 : ALL 1 TESTS SUCCESSFUL
2019_12_03_00_18_29 : ALL 1 TESTS SUCCESSFUL
2019_12_03_00_23_53 : FAILED 3/4 TESTS: option_tests_in_var_tmp option_tests_in_var_tmp_sub ks_justconnect_ipv6
2019_12_06_10_45_32 : ALL 1 TESTS SUCCESSFUL
2019_12_06_11_28_39 : FAILED 2/159 TESTS: option_tests_in_var_tmp ks_justconnect_ipv6
2019_12_06_11_32_47 : ALL 1 TESTS SUCCESSFUL
2019_12_06_12_19_04 : FAILED 3/158 TESTS: option_tests option_tests_in_var_tmp option_tests_in_var_tmp_sub
2019_12_06_15_21_08 : ALL 1 TESTS SUCCESSFUL
2019_12_06_15_22_30 : ALL 4 TESTS SUCCESSFUL
2019_12_06_15_28_25 : ALL 1 TESTS SUCCESSFUL
2019_12_06_15_31_58 : FAILED 1/4 TESTS: option_tests_in_var_tmp
2019_12_11_20_06_54 : ALL 1 TESTS SUCCESSFUL
2019_12_11_21_28_55 : ALL 1 TESTS SUCCESSFUL
2019_12_11_22_10_46 : FAILED 1/158 TESTS: option_tests
2019_12_12_15_15_00 : ALL 1 TESTS SUCCESSFUL
2019_12_12_16_04_53 : FAILED 1/158 TESTS: option_tests_in_var_tmp_sub
2019_12_12_16_35_25 : ALL 1 TESTS SUCCESSFUL
2019_12_12_16_45_10 : ALL 1 TESTS SUCCESSFUL
2019_12_12_17_40_39 : FAILED 1/158 TESTS: option_tests
2019_12_12_19_55_25 : ALL 1 TESTS SUCCESSFUL
2019_12_12_19_56_04 : ALL 2 TESTS SUCCESSFUL
2019_12_12_19_56_27 : ALL 1 TESTS SUCCESSFUL
2019_12_12_20_00_08 : FAILED 1/8 TESTS: option_tests
2019_12_12_20_08_10 : ALL 1 TESTS SUCCESSFUL
2019_12_12_20_11_59 : ALL 8 TESTS SUCCESSFUL
2019_12_12_20_28_44 : ALL 1 TESTS SUCCESSFUL
2019_12_12_21_24_43 : FAILED 1/158 TESTS: yahoo_all
2019_12_12_21_29_30 : ALL 1 TESTS SUCCESSFUL
2019_12_12_22_21_51 : FAILED 2/158 TESTS: option_tests ll_abort_cgi_context_tail
2019_12_12_22_22_22 : ALL 1 TESTS SUCCESSFUL
2019_12_12_23_12_40 : ALL 158 TESTS SUCCESSFUL
2019_12_12_23_12_55 : ALL 1 TESTS SUCCESSFUL
2019_12_13_00_04_24 : ALL 158 TESTS SUCCESSFUL
2019_12_13_00_04_39 : ALL 1 TESTS SUCCESSFUL
2019_12_13_00_58_38 : ALL 158 TESTS SUCCESSFUL
2019_12_15_02_00_45 : ALL 1 TESTS SUCCESSFUL
2019_12_15_02_01_28 : ALL 1 TESTS SUCCESSFUL
2019_12_15_02_17_41 : ALL 1 TESTS SUCCESSFUL
2019_12_15_02_18_28 : ALL 1 TESTS SUCCESSFUL
2019_12_15_02_18_43 : ALL 2 TESTS SUCCESSFUL
2019_12_15_02_18_56 : ALL 1 TESTS SUCCESSFUL
2019_12_15_02_57_38 : ALL 158 TESTS SUCCESSFUL
2019_12_15_23_49_50 : ALL 1 TESTS SUCCESSFUL
2019_12_15_23_49_59 : FAILED 1/2 TESTS: ll_justlogin_dollar_char
2019_12_15_23_56_02 : ALL 1 TESTS SUCCESSFUL
2019_12_15_23_56_07 : ALL 2 TESTS SUCCESSFUL
2019_12_15_23_56_41 : ALL 1 TESTS SUCCESSFUL
2019_12_15_23_56_50 : FAILED 1/2 TESTS: ll_justlogin_dollar_char
2019_12_15_23_57_15 : ALL 1 TESTS SUCCESSFUL
2019_12_15_23_57_19 : ALL 2 TESTS SUCCESSFUL
2019_12_17_22_20_49 : ALL 1 TESTS SUCCESSFUL
2019_12_17_22_21_01 : FAILED 1/2 TESTS: ll_authmech_xoauth2_json_gmail_app
2019_12_20_17_21_15 : ALL 1 TESTS SUCCESSFUL
2019_12_20_17_59_52 : ALL 158 TESTS SUCCESSFUL
2019_12_20_18_50_27 : ALL 1 TESTS SUCCESSFUL
2019_12_20_18_55_47 : ALL 2 TESTS SUCCESSFUL
2019_12_21_12_36_50 : ALL 1 TESTS SUCCESSFUL
2019_12_21_12_42_18 : ALL 2 TESTS SUCCESSFUL
2020_01_01_22_19_08 : ALL 1 TESTS SUCCESSFUL
2020_01_01_22_59_11 : ALL 158 TESTS SUCCESSFUL
2020_01_01_23_08_57 : ALL 1 TESTS SUCCESSFUL
2020_01_01_23_18_28 : ALL 2 TESTS SUCCESSFUL
2020_01_02_12_54_08 : ALL 1 TESTS SUCCESSFUL
2020_01_02_12_58_26 : ALL 2 TESTS SUCCESSFUL
2020_01_02_13_35_45 : ALL 1 TESTS SUCCESSFUL
2020_01_02_13_38_50 : ALL 2 TESTS SUCCESSFUL
2020_01_03_00_48_36 : ALL 1 TESTS SUCCESSFUL
2020_01_03_00_53_07 : ALL 2 TESTS SUCCESSFUL
2020_01_03_14_40_29 : ALL 1 TESTS SUCCESSFUL
2020_01_03_14_45_00 : ALL 2 TESTS SUCCESSFUL
2020_01_03_23_42_20 : ALL 1 TESTS SUCCESSFUL
2020_01_04_00_20_39 : ALL 158 TESTS SUCCESSFUL

View File

@ -0,0 +1 @@
Failure running .\imapsync.exe --tests

60
W/build_exe.bat Normal file → Executable file
View File

@ -1,5 +1,5 @@
REM $Id: build_exe.bat,v 1.54 2019/05/28 13:20:08 gilles Exp gilles $
REM $Id: build_exe.bat,v 1.56 2019/12/11 18:57:20 gilles Exp gilles $
@SETLOCAL
@ECHO Currently running through %0 %*
@ -19,9 +19,9 @@ CALL :handle_error CALL :rename_to_old
CALL :handle_error CALL :pp_exe
CALL :handle_error CALL :copy_with_architecture_name
@ENDLOCAL
@REM Do a PAUSE if run by double-click, aka, explorer (then ). No PAUSE in a DOS window or via ssh.
IF %0 EQU "%~dpnx0" IF "%SSH_CLIENT%"=="" PAUSE
@ENDLOCAL
EXIT /B
@ -42,8 +42,7 @@ EXIT /B
@REM 32 bits
@REM Do not add command after this one since it will anihilate the %ERRORLEVEL% of pp
ECHO Building 32 bits binary PROCESSOR_ARCHITECTURE = %PROCESSOR_ARCHITECTURE%
CALL pp -o imapsync.exe -M Test2::Formatter -M Test2::Formatter::TAP -M Test2::Event ^
-M Test2::Event::Info ^
CALL pp -u -x -o imapsync.exe -M Test2::Formatter -M Test2::Formatter::TAP -M Test2::Event ^
--link zlib1_.dll ^
--link libcrypto-1_1_.dll ^
--link libssl-1_1_.dll ^
@ -52,8 +51,8 @@ EXIT /B
@REM 64 bits
@REM Do not add command after this one since it will anihilate the %ERRORLEVEL% of pp
ECHO Building 64 bits binary PROCESSOR_ARCHITECTURE = %PROCESSOR_ARCHITECTURE%
CALL pp -o imapsync.exe -M Test2::Formatter -M Test2::Formatter::TAP -M Test2::Event ^
-M Test2::Event::Info -M Test2::EventFacet -M Test2::Event::Pass ^
CALL pp -u -x -o imapsync.exe -M Test2::Formatter -M Test2::Formatter::TAP -M Test2::Event ^
-M Test2::EventFacet -M Test2::Event::Pass ^
-M Test2::Event::Fail -M Test2::Event::V2 ^
--link libcrypto-1_1-x64__.dll ^
--link zlib1__.dll ^
@ -63,6 +62,8 @@ EXIT /B
@ENDLOCAL
EXIT /B
@REM -M Test2::Event::Info
::------------------------------------------------------
::--------------- Copy with architecture name ----------
@ -84,7 +85,7 @@ EXIT /B
:rename_to_old
@SETLOCAL
IF EXIST imapsync_old.exe DEL imapsync_old.exe
RENAME imapsync.exe imapsync_old.exe
IF EXIST imapsync.exe RENAME imapsync.exe imapsync_old.exe
@ENDLOCAL
EXIT /B
::------------------------------------------------------
@ -106,6 +107,7 @@ EXIT /B
:check_modules
@SETLOCAL
perl ^
-mApp::cpanminus ^
-mTest::MockObject ^
-mPAR::Packer ^
-mReadonly ^
@ -135,8 +137,47 @@ perl ^
-mCrypt::OpenSSL::RSA ^
-mEncode::Byte ^
-mFile::Tail ^
-mEncode ^
-mEncode::IMAPUTF7 ^
-mMIME::Base64 ^
-e ''
IF ERRORLEVEL 1 CALL .\install_modules.bat
@ECHO Calling a second time to check all modules are now installed
perl ^
-mApp::cpanminus ^
-mTest::MockObject ^
-mPAR::Packer ^
-mReadonly ^
-mAuthen::NTLM ^
-mData::Dumper ^
-mData::Uniqid ^
-mDigest::HMAC_MD5 ^
-mDigest::HMAC_SHA1 ^
-mDigest::MD5 ^
-mFile::Copy::Recursive ^
-mFile::Spec ^
-mIO::Socket ^
-mIO::Socket::INET ^
-mIO::Socket::IP ^
-mIO::Socket::SSL ^
-mIO::Tee ^
-mMail::IMAPClient ^
-mRegexp::Common ^
-mTerm::ReadKey ^
-mTime::Local ^
-mUnicode::String ^
-mURI::Escape ^
-mJSON::WebToken ^
-mLWP::UserAgent ^
-mHTML::Entities ^
-mJSON ^
-mCrypt::OpenSSL::RSA ^
-mEncode::Byte ^
-mFile::Tail ^
-mEncode ^
-mEncode::IMAPUTF7 ^
-mMIME::Base64 ^
-e ''
@ENDLOCAL
EXIT /B
::------------------------------------------------------
@ -144,10 +185,11 @@ EXIT /B
::------------------------------------------------------
::--------------- Handle error -------------------------
:handle_error
SETLOCAL
@SETLOCAL
ECHO IN %0 with parameters %*
%*
SET CMD_RETURN=%ERRORLEVEL%
@ -159,6 +201,6 @@ IF %CMD_RETURN% EQU 0 (
IF NOT EXIST LOG_bat MKDIR LOG_bat
ECHO Failure calling: %* >> LOG_bat\%~nx0.txt
)
ENDLOCAL
@ENDLOCAL
EXIT /B
::------------------------------------------------------

View File

@ -1,6 +1,6 @@
#!/bin/sh
# $Id: build_mac.sh,v 1.12 2019/04/13 22:16:04 gilles Exp gilles $
# $Id: build_mac.sh,v 1.15 2019/11/25 12:46:48 gilles Exp gilles $
# exit on any failure
set -e
@ -23,12 +23,13 @@ VERSION=`./imapsync --version`
# Update important Perl modules
OPENSSL_PREFIX=/sw cpanm Mail::IMAPClient IO::Socket::SSL Net::SSLeay PAR::Packer
pp -o $BIN_NAME \
pp -u -x -o $BIN_NAME \
-M Mail::IMAPClient -M IO::Socket -M IO::Socket::SSL \
-M Digest::MD5 -M Digest::HMAC_MD5 -M Term::ReadKey \
-M Authen::NTLM \
-M Crypt::OpenSSL::RSA -M JSON -M JSON::WebToken -M LWP -M HTML::Entities \
-M Sys::MemInfo -M Net::SSLeay \
-M Encode -M MIME::Base64 -M Encode::IMAPUTF7 \
--link /sw/lib/libssl.1.0.0.dylib \
--link /sw/lib/libcrypto.1.0.0.dylib \
imapsync
@ -36,5 +37,6 @@ pp -o $BIN_NAME \
./imapsync_bin_Darwin
./imapsync_bin_Darwin --tests
./imapsync_bin_Darwin --testslive
./imapsync_bin_Darwin --testslive6
# Do not work anymore on polarhome at 2019_11_24
#./imapsync_bin_Darwin --testslive6

View File

@ -5,6 +5,14 @@ Processing https://lamiral.info/~gilles/imapsync/S/external.shtml
List of broken links and other issues:
http://www.washington.edu/imap/
-> https://www.washington.edu/imap/
Line: 43
Code: 301 -> 404 Not Found
To do: The link is broken. Double-check that you have not made any typo,
or mistake in copy-pasting. If the link points to a resource that
no longer exists, you may want to remove or fix the link.
https://wiki2.dovecot.org/Tools/Doveadm/Sync
Line: 38
Code: 403 FORBIDDEN
@ -17,15 +25,28 @@ Processing https://lamiral.info/~gilles/imapsync/S/imapservers.shtml
List of broken links and other issues:
https://en.mail.qq.com/
Line: 157
Code: 405 Method Not Allowed
To do: The server does not allow HTTP HEAD requests, which prevents the
Link Checker to check the link automatically. Check the link
manually.
http://www.washington.edu/imap/
-> https://www.washington.edu/imap/
Line: 183
Code: 301 -> 404 Not Found
To do: The link is broken. Double-check that you have not made any typo,
or mistake in copy-pasting. If the link points to a resource that
no longer exists, you may want to remove or fix the link.
https://www.fusemail.com/
-> https://global.vipre.com/
Line: 123
Code: 301 -> 403 Forbidden
To do: The link is forbidden! This needs fixing. Usual suspects: a missing
index.html or Overview.html, or a missing ACL.
http://de.tobit.com/
Line: 96
Code: 308 Permanent Redirect
http://outlook.com/
-> https://outlook.live.com/owa/
Line: 150
Line: 157
Code: 301 -> 440 Login Timeout

10
W/docker_pull_count Executable file
View File

@ -0,0 +1,10 @@
#!/bin/sh
docker_pull_count()
{
curl -s https://hub.docker.com/v2/repositories/gilleslamiral/imapsync/ | jq '.pull_count'
}
docker_pull_count >> /home/gilles/public_html/imapsync/W/docker_pull_count.txt

33
W/docker_pull_count.txt Normal file
View File

@ -0,0 +1,33 @@
32753
32780
32804
32828
32858
32880
32938
33246
33348
33570
33796
33818
33836
33855
33880
33901
33926
33956
33977
33997
34016
34046
34273
34301
34324
34344
34367
34448
34500
34531
34561
34590
34769

View File

@ -133,18 +133,18 @@
.\" ========================================================================
.\"
.IX Title "IMAPSYNC 1"
.TH IMAPSYNC 1 "2019-06-26" "perl v5.22.1" "User Contributed Perl Documentation"
.TH IMAPSYNC 1 "2019-12-23" "perl v5.22.1" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
imapsync \- Email IMAP tool for syncing, copying and migrating
email mailboxes between two imap servers, one way,
imapsync \- Email IMAP tool for syncing, copying, migrating
and archiving email mailboxes between two imap servers, one way,
and without duplicates.
.SH "VERSION"
.IX Header "VERSION"
This documentation refers to Imapsync \f(CW$Revision:\fR 1.945 $
This documentation refers to Imapsync \f(CW$Revision:\fR 1.977 $
.SH "USAGE"
.IX Header "USAGE"
.Vb 5
@ -175,8 +175,8 @@ are synced too.
.PP
Imapsync reduces the amount of data transferred by not transferring
a given message if it already resides on the destination side.
Messages that are on the destination side but not on the
source side stay as they are (see the \-\-delete2
Messages that are on the destination side but not on the
source side stay as they are (see the \-\-delete2
option to have a strict sync).
.PP
How imapsync knows a message is already on both sides?
@ -191,19 +191,19 @@ read ones will stay read, deleted will stay deleted.
You can abort the transfer at any time and restart it later,
imapsync works well with bad connections and interruptions,
by design. On a terminal hit Ctr-c twice within two seconds
in order to abort the program. Hit Ctr-c just once makes
in order to abort the program. Hit Ctr-c just once makes
imapsync reconnect to both imap servers.
.PP
A classical scenario is synchronizing a mailbox B from another mailbox A
in case you just want to keep a strict copy of A in B. Strict meaning
where you just want to keep a strict copy of A in B. Strict meaning
all messages in A will be in B but no more.
.PP
For this, option \-\-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 to set up exceptions
on folders to destroy (\s-1INBOX\s0 will never be destroy, it's a mandatory
folder in \s-1IMAP\s0).
on folders to destroy. \s-1INBOX\s0 will never be destroy, it's a mandatory
folder in \s-1IMAP.\s0
.PP
A different scenario is to delete the messages from the source mailbox
after a successful transfer, it can be a good feature when migrating
@ -232,11 +232,11 @@ Michael R. Elkins) for a 2 ways synchronization.
\& usage: imapsync [options]
.Ve
.PP
Standard options are the six values forming the credentials,
three on each sides, needed to log in into the \s-1IMAP\s0 servers, ie,
a host, a username, and a password, two times.
The standard options are the six values forming the credentials.
Three values on each side are needed in order to log in into the \s-1IMAP \s0
servers. These six values are a host, a username, and a password, two times.
.PP
Conventions used:
Conventions used in the following descriptions of the options:
.PP
.Vb 4
\& str means string
@ -252,8 +252,8 @@ Conventions used:
.Vb 6
\& \-\-host1 str : Source or "from" imap server.
\& \-\-port1 int : Port to connect on host1.
\& Optional since default ports are the
\& well known ports 143 or 993.
\& Optional since default ports are the
\& well known ports imap/143 or imaps/993.
\& \-\-user1 str : User to login on host1.
\& \-\-password1 str : Password for the user1.
\&
@ -263,10 +263,10 @@ Conventions used:
\& \-\-password2 str : Password for the user2.
\&
\& \-\-showpasswords : Shows passwords on output instead of "MASKED".
\& Useful to restart a complete run by just reading
\& Useful to restart a complete run by just reading
\& the command line used in the log,
\& or to debug passwords.
\& It\*(Aqs not a secure practice.
\& It\*(Aqs not a secure practice at all.
\&
\& \-\-passfile1 str : Password file for the user1. It must contain the
\& password on the first line. This option avoids showing
@ -333,14 +333,14 @@ You can also pass the passwords in the environment variables
\& \-\-folderrec str : Sync this folder recursively.
\& \-\-folderrec str : and this one, etc.
\&
\& \-\-folderfirst str : Sync this folder first. \-\-folderfirst "Work"
\& \-\-folderfirst str : Sync this folder first. Ex. \-\-folderfirst "INBOX"
\& \-\-folderfirst str : then this one, etc.
\& \-\-folderlast str : Sync this folder last. \-\-folderlast "[Gmail]/All Mail"
\& \-\-folderlast str : then this one, etc.
\&
\& \-\-nomixfolders : Do not merge folders when host1 is case\-sensitive
\& while host2 is not (like Exchange). Only the first
\& similar folder is synced (example: with folders
\& similar folder is synced (example: with folders
\& "Sent", "SENT" and "sent"
\& on host1 only "Sent" will be synced to host2).
\&
@ -367,14 +367,14 @@ You can also pass the passwords in the environment variables
\& \-\-regextrans2 options before all others.
\& Add \-\-debug to see what\*(Aqs really going on.
\&
\& \-\-subfolder1 str : Syncs the host1 folders hierarchy under str
\& to the root hierarchy of host2.
\& \-\-subfolder1 str : Syncs the host1 folders hierarchy which is under folder
\& str to the root hierarchy of host2.
\& It\*(Aqs the couterpart of a sync done by \-\-subfolder2
\& when doing it in the reverse order.
\& when doing it in the reverse order.
\& Backup/Restore scenario:
\& Use \-\-subfolder2 str for a backup to the folder str
\& on host2. Then use \-\-subfolder1 str for restoring
\& from the folder str, after inverting
\& on host2. Then use \-\-subfolder1 str for restoring
\& from the folder str, after inverting
\& host1/host2 user1/user2 values.
\&
\&
@ -388,25 +388,26 @@ You can also pass the passwords in the environment variables
\& usually "INBOX." or "INBOX/" or an empty string "".
\& imapsync guesses the prefix if host1 imap server
\& does not have NAMESPACE capability. So this option
\& should not be used, most of the time.
\& should not be used most of the time.
\& \-\-prefix2 str : Add prefix to all host2 folders. See \-\-prefix1
\&
\& \-\-sep1 str : Host1 separator. This option should not be used,
\& \-\-sep1 str : Host1 separator. This option should not be used
\& most of the time.
\& Imapsync gets the separator from the server itself,
\& by using NAMESPACE, or it tries to guess it
\& from the folders listing (it counts
\& characters / . \e\e \e in folder names and choose the
\& more frequent, or finally / if nothing is found.
\& \-\-sep2 str : Host2 separator.
\& \-\-sep2 str : Host2 separator. See \-\-sep1
\&
\& \-\-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
\& the automatic prefix and separator inversion.
\& Then, when happy, remove \-\-dry for a run, then
\& remove \-\-justfolders for the next ones.
\& Have in mind that \-\-regextrans2 is applied after
\& the automatic prefix and separator inversion.
\& For examples see:
\& https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt
.Ve
@ -440,6 +441,22 @@ You can also pass the passwords in the environment variables
\& \-\-logfile str : Change the default log filename (can be dirname/filename).
\& \-\-logdir str : Change the default log directory. Default is LOG_imapsync/
.Ve
.PP
The default logfile name is for example
.PP
.Vb 1
\& LOG_imapsync/2019_12_22_23_57_59_532_user1_user2.txt
.Ve
.PP
where:
.PP
.Vb 3
\& 2019_12_22_23_57_59_532 is nearly the date of the start
\& YYYY_MM_DD_HH_MM_SS_mmm
\& year_month_day_hour_minute_seconde_millisecond
.Ve
.PP
and user1 user2 are the \-\-user1 \-\-user2 values.
.SS "OPTIONS/messages"
.IX Subsection "OPTIONS/messages"
.Vb 4
@ -448,13 +465,22 @@ You can also pass the passwords in the environment variables
\& \-\-skipmess is applied before \-\-regexmess
\& \-\-skipmess reg : or this one, etc.
\&
\& \-\-skipcrossduplicates : Avoid copying messages that are already copied
\& in another folder, good from Gmail to X when
\& X is not also Gmail.
\& Activated with \-\-gmail1 unless \-\-noskipcrossduplicates
\&
\& \-\-debugcrossduplicates : Prints which messages (UIDs) are skipped with
\& \-\-skipcrossduplicates (and in what other folders
\& they are).
\&
\& \-\-pipemess cmd : Apply this cmd command to each message content
\& before the copy.
\& \-\-pipemess cmd : and this one, etc.
\& \-\-pipemess cmd : and this one, etc.
\& With several \-\-pipemess, the output of each cmd
\& command (STDOUT) is given to the input (STDIN)
\& command (STDOUT) is given to the input (STDIN)
\& of the next command.
\& For example,
\& For example,
\& \-\-pipemess cmd1 \-\-pipemess cmd2 \-\-pipemess cmd3
\& is like a Unix pipe:
\& "cat message | cmd1 | cmd2 | cmd3"
@ -465,6 +491,24 @@ You can also pass the passwords in the environment variables
\& Example: \*(Aqs/\e000/ /g\*(Aq # to replace null by space.
\& \-\-regexmess reg : and this one, etc.
.Ve
.SS "OPTIONS/labels"
.IX Subsection "OPTIONS/labels"
Gmail present labels as folders in imap. Imapsync can accelerate the sync
by syncing X\-GM-LABELS, it will avoid to transfer messages when they are
already on host2.
.PP
.Vb 3
\& \-\-synclabels : Syncs also Gmail labels when a message is copied to host2.
\& Activated by default with \-\-gmail1 \-\-gmail2 unless
\& \-\-nosynclabels is added.
\&
\& \-\-resynclabels : Resyncs Gmail labels when a message is already on host2.
\& Activated by default with \-\-gmail1 \-\-gmail2 unless
\& \-\-noresynclabels is added.
.Ve
.PP
For Gmail syncs, see also:
https://imapsync.lamiral.info/FAQ.d/FAQ.Gmail.txt
.SS "OPTIONS/flags"
.IX Subsection "OPTIONS/flags"
.Vb 2
@ -491,7 +535,7 @@ You can also pass the passwords in the environment variables
\& EXPUNGE IMAP command. If expunging after each message
\& slows down too much the sync then use
\& \-\-noexpungeaftereach to speed up, expunging will then be
\& done only twice per folder, one at the beginning and
\& done only twice per folder, one at the beginning and
\& one at the end of a folder sync.
\&
\& \-\-expunge1 : Expunge messages on host1 just before syncing a folder.
@ -517,12 +561,15 @@ You can also pass the passwords in the environment variables
\& \-\-delete2folders : Delete folders in host2 that are not in host1 server.
\& For safety, first try it like this (it is safe):
\& \-\-delete2folders \-\-dry \-\-justfolders \-\-nofoldersizes
\& and see what folders will be deleted.
\&
\& \-\-delete2foldersonly reg : Deleted only folders matching regex.
\& \-\-delete2foldersonly reg : Delete only folders matching the regex reg.
\& Example: \-\-delete2foldersonly "/^Junk$|^INBOX.Junk$/"
\& This option activates \-\-delete2folders
\&
\& \-\-delete2foldersbutnot reg : Do not delete folders matching regex.
\& \-\-delete2foldersbutnot reg : Do not delete folders matching the regex rex.
\& Example: \-\-delete2foldersbutnot "/Tasks$|Contacts$|Foo$/"
\& This option activates \-\-delete2folders
\&
\& \-\-noexpunge2 : Do not expunge messages on host2.
\& \-\-nouidexpunge2 : Do not uidexpunge messages on the host2 account
@ -550,7 +597,7 @@ You can also pass the passwords in the environment variables
\& see also \-\-minage
\& \-\-minage int : Skip messages newer than int days.
\& final stats (skipped) don\*(Aqt count newer messages
\& You can do (+ are the messages selected):
\& You can do (+ zone are the messages selected):
\& past|\-\-\-\-maxage+++++++++++++++>now
\& past|+++++++++++++++minage\-\-\-\->now
\& past|\-\-\-\-maxage+++++minage\-\-\-\->now (intersection)
@ -558,22 +605,23 @@ You can also pass the passwords in the environment variables
\&
\& \-\-search str : Selects only messages returned by this IMAP SEARCH
\& command. Applied on both sides.
\& For a complete of what can be search see
\& For a complete set of what can be search see
\& https://imapsync.lamiral.info/FAQ.d/FAQ.Messages_Selection.txt
\&
\& \-\-search1 str : Same as \-\-search but for selecting host1 messages only.
\& \-\-search2 str : Same as \-\-search but for selecting host2 messages only.
\& \-\-search CRIT equals \-\-search1 CRIT \-\-search2 CRIT
\& So \-\-search CRIT equals \-\-search1 CRIT \-\-search2 CRIT
\&
\& \-\-maxlinelength int : skip messages with a line length longer than int bytes.
\& RFC 2822 says it must be no more than 1000 bytes.
\& RFC 2822 says it must be no more than 1000 bytes but
\& real life servers and email clients do more.
\&
\&
\& \-\-useheader str : Use this header to compare messages on both sides.
\& Ex: Message\-ID or Subject or Date.
\& \-\-useheader str and this one, etc.
\&
\& \-\-usecache : Use cache to speed up the sync.
\& \-\-usecache : Use cache to speed up next syncs. Not set by default.
\& \-\-nousecache : Do not use cache. Caveat: \-\-useuid \-\-nousecache creates
\& duplicates on multiple runs.
\& \-\-useuid : Use UIDs instead of headers as a criterion to recognize
@ -584,10 +632,10 @@ You can also pass the passwords in the environment variables
.IX Subsection "OPTIONS/miscellaneous"
.Vb 5
\& \-\-syncacls : Synchronizes acls (Access Control Lists).
\& \-\-nosyncacls : Does not synchronize acls. This is the default.
\& Acls in IMAP are not standardized, be careful
\& since one acl code on one side may signify something
\& else on the other one.
\& \-\-nosyncacls : Does not synchronize acls. This is the default.
\&
\& \-\-addheader : When a message has no headers to be identified,
\& \-\-addheader adds a "Message\-Id" header,
@ -617,17 +665,17 @@ You can also pass the passwords in the environment variables
.SS "OPTIONS/specific"
.IX Subsection "OPTIONS/specific"
.Vb 2
\& \-\-gmail1 : sets \-\-host1 to Gmail and options from FAQ.Gmail.txt
\& \-\-gmail2 : sets \-\-host2 to Gmail and options from FAQ.Gmail.txt
\& \-\-gmail1 : sets \-\-host1 to Gmail and other options. See FAQ.Gmail.txt
\& \-\-gmail2 : sets \-\-host2 to Gmail and other options. See FAQ.Gmail.txt
\&
\& \-\-office1 : sets \-\-host1 to Office365 options from FAQ.Exchange.txt
\& \-\-office2 : sets \-\-host2 to Office365 options from FAQ.Exchange.txt
\& \-\-office1 : sets \-\-host1 to Office365 and other options. See FAQ.Exchange.txt
\& \-\-office2 : sets \-\-host2 to Office365 and other options. See FAQ.Exchange.txt
\&
\& \-\-exchange1 : sets options from FAQ.Exchange.txt, account1 part
\& \-\-exchange2 : sets options from FAQ.Exchange.txt, account2 part
\& \-\-exchange1 : sets options for Exchange. See FAQ.Exchange.txt
\& \-\-exchange2 : sets options for Exchange. See FAQ.Exchange.txt
\&
\& \-\-domino1 : sets options from FAQ.Domino.txt, account1 part
\& \-\-domino2 : sets options from FAQ.Domino.txt, account2 part
\& \-\-domino1 : sets options for Domino. See FAQ.Domino.txt
\& \-\-domino2 : sets options for Domino. See FAQ.Domino.txt
.Ve
.SS "OPTIONS/behavior"
.IX Subsection "OPTIONS/behavior"
@ -644,11 +692,11 @@ You can also pass the passwords in the environment variables
\& \-\-abort : terminates a previous call still running.
\& It uses the pidfile to know what process to abort.
\&
\& \-\-exitwhenover int : Stop syncing and exits when int total bytes
\& \-\-exitwhenover int : Stop syncing and exits when int total bytes
\& transferred is reached.
\&
\& \-\-version : Print only software version.
\& \-\-noreleasecheck : Do not check for new imapsync release
\& \-\-noreleasecheck : Do not check for any new imapsync release.
\& \-\-releasecheck : Check for new imapsync release.
\& it\*(Aqs an http request to
\& http://imapsync.lamiral.info/prj/imapsync/VERSION
@ -659,7 +707,7 @@ You can also pass the passwords in the environment variables
\& information. Need only \-\-host1 and \-\-host2 options.
\& Obsolete since "imapsync \-\-host1 imaphost" alone
\& implies \-\-justconnect
\&
\&
\& \-\-justlogin : Just login to both host1 and host2 with users
\& credentials, then exit.
\&
@ -696,9 +744,9 @@ normal (clear) connection on port 143 but it looks for \s-1TLS\s0 support
in the \s-1CAPABILITY\s0 list of the servers. If \s-1TLS\s0 is supported
then imapsync goes to encryption.
.PP
If the automatic ssl/tls detection fails then imapsync will
not protect against sniffing activities on the
network, especially for passwords.
If the automatic ssl and the tls detections fail then imapsync will
not protect against sniffing activities on the network, especially
for passwords.
.PP
If you want to force ssl or tls just use \-\-ssl1 \-\-ssl2 or \-\-tls1 \-\-tls2
.PP
@ -707,9 +755,9 @@ or at https://imapsync.lamiral.info/FAQ.d/FAQ.Security.txt
.SH "EXIT STATUS"
.IX Header "EXIT STATUS"
Imapsync will exit with a 0 status (return code) if everything went good.
Otherwise, it exits with a non-zero status.
Here is the list of the exit code values (an integer between 0 and 255),
the names reflects their meaning:
Otherwise, it exits with a non-zero status. That's classical Unix behavior.
Here is the list of the exit code values (an integer between 0 and 255).
The names reflect their meaning:
.PP
.Vb 10
\& EX_OK => 0 ; #/* successful termination */
@ -731,7 +779,7 @@ the names reflects their meaning:
.SH "LICENSE AND COPYRIGHT"
.IX Header "LICENSE AND COPYRIGHT"
Imapsync is free, open, public but not always gratis software
cover by the \s-1NOLIMIT\s0 Public License.
cover by the \s-1NOLIMIT\s0 Public License, now called \s-1NLPL.\s0
See the \s-1LICENSE\s0 file included in the distribution or just read this
simple sentence as it \s-1IS\s0 the licence text:
.PP
@ -750,7 +798,7 @@ Look at https://imapsync.lamiral.info/LICENSE
.IX Header "AUTHOR"
Gilles \s-1LAMIRAL\s0 <gilles@lamiral.info>
.PP
Good feedback good is always welcome.
Good feedback is always welcome.
Bad feedback is very often welcome.
.PP
Gilles \s-1LAMIRAL\s0 earns his living by writing, installing,
@ -812,8 +860,8 @@ https://imapsync.lamiral.info/examples/
\& and all Server releases 2000, 2003, 2008 and R2, 2012 and R2, 2016)
\& as a standalone binary software called imapsync.exe,
\& usually launched from a batch file in order to avoid always typing
\& the options.
\&
\& the options. There is also a 64bit binary called imapsync_64bit.exe
\&
\& Imapsync works under OS X as a standalone binary
\& software called imapsync_bin_Darwin
\&
@ -848,50 +896,48 @@ Feel free to hack imapsync as the \s-1NOLIMIT\s0 license permits it.
\& for a better up to date list.
.Ve
.PP
Last updated and verified on Thu Apr 11, 2019.
Last updated and verified on Sun Dec 8, 2019.
.PP
.Vb 10
\& imapsync : https://github.com/imapsync/imapsync
\& (this is an imapsync copy, sometimes delayed,
\& with \-\-noreleasecheck by default since release 1.592, 2014/05/22)
\& imap_tools : https://web.archive.org/web/20161228145952/http://www.athensfbc.com/imap_tools/
\& The imap_tools code is now at
\& https://github.com/andrewnimmo/rick\-sanders\-imap\-tools
\& imaputils : https://github.com/mtsatsenko/imaputils (very old imap_tools fork)
\& Doveadm\-Sync : https://wiki2.dovecot.org/Tools/Doveadm/Sync ( Dovecot sync tool )
\& davmail : http://davmail.sourceforge.net/
\& offlineimap : http://offlineimap.org/
\& mbsync : http://isync.sourceforge.net/
\& mailsync : http://mailsync.sourceforge.net/
\& mailutil : http://www.washington.edu/imap/ part of the UW IMAP tookit.
\& imaprepl : https://bl0rg.net/software/ http://freecode.com/projects/imap\-repl/
\& imapcopy (Pascal): http://www.ardiehl.de/imapcopy/
\& imapcopy (Java) : https://code.google.com/archive/p/imapcopy/
\& imapsize : http://www.broobles.com/imapsize/
\& migrationtool : http://sourceforge.net/projects/migrationtool/
\& imapmigrate : http://sourceforge.net/projects/cyrus\-utils/
\& larch : https://github.com/rgrove/larch (derived from wonko_imapsync, good at Gmail)
\& wonko_imapsync : http://wonko.com/article/554 (superseded by larch)
\& pop2imap : http://www.linux\-france.org/prj/pop2imap/ (I wrote that too)
\& exchange\-away : http://exchange\-away.sourceforge.net/
\& SyncBackPro : http://www.2brightsparks.com/syncback/sbpro.html
\& ImapSyncClient : https://github.com/ridaamirini/ImapSyncClient
\& MailStore : https://www.mailstore.com/en/products/mailstore\-home/
\& mnIMAPSync : https://github.com/manusa/mnIMAPSync
\& imap\-upload : http://imap\-upload.sourceforge.net/
\& (a tool for uploading a local mbox file to IMAP4 server)
\& imapsync: https://github.com/imapsync/imapsync (this is an imapsync copy, sometimes delayed, with \-\-noreleasecheck by default since release 1.592, 2014/05/22)
\& imap_tools: https://web.archive.org/web/20161228145952/http://www.athensfbc.com/imap_tools/. The imap_tools code is now at https://github.com/andrewnimmo/rick\-sanders\-imap\-tools
\& imaputils: https://github.com/mtsatsenko/imaputils (very old imap_tools fork)
\& Doveadm\-Sync: https://wiki2.dovecot.org/Tools/Doveadm/Sync ( Dovecot sync tool )
\& davmail: http://davmail.sourceforge.net/
\& offlineimap: http://offlineimap.org/
\& mbsync: http://isync.sourceforge.net/
\& mailsync: http://mailsync.sourceforge.net/
\& mailutil: https://www.washington.edu/imap/ part of the UW IMAP toolkit. (well, seems abandoned now)
\& imaprepl: https://bl0rg.net/software/ http://freecode.com/projects/imap\-repl/
\& imapcopy (Pascal): http://www.ardiehl.de/imapcopy/
\& imapcopy (Java): https://code.google.com/archive/p/imapcopy/
\& imapsize: http://www.broobles.com/imapsize/
\& migrationtool: http://sourceforge.net/projects/migrationtool/
\& imapmigrate: http://sourceforge.net/projects/cyrus\-utils/
\& larch: https://github.com/rgrove/larch (derived from wonko_imapsync, good at Gmail)
\& wonko_imapsync: http://wonko.com/article/554 (superseded by larch)
\& pop2imap: http://www.linux\-france.org/prj/pop2imap/ (I wrote that too)
\& exchange\-away: http://exchange\-away.sourceforge.net/
\& SyncBackPro: http://www.2brightsparks.com/syncback/sbpro.html
\& ImapSyncClient: https://github.com/ridaamirini/ImapSyncClient
\& MailStore: https://www.mailstore.com/en/products/mailstore\-home/
\& mnIMAPSync: https://github.com/manusa/mnIMAPSync
\& imap\-upload: http://imap\-upload.sourceforge.net/ (A tool for uploading a local mbox file to IMAP4 server)
\& imapbackup: https://github.com/rcarmo/imapbackup (A Python script for incremental backups of IMAP mailboxes)
\& BitRecover email\-backup 99 USD, 299 USD https://www.bitrecover.com/email\-backup/.
\& ImportExportTools: https://addons.thunderbird.net/en\-us/thunderbird/addon/importexporttools/ ImportExportTools for Mozilla Thunderbird by Paolo Kaosmos. ImportExportTools does not do IMAP.
.Ve
.SH "HISTORY"
.IX Header "HISTORY"
I initially wrote imapsync in July 2001 because an enterprise,
basystemes, paid me to install a new imap server
I initially wrote imapsync in July 2001 because an enterprise,
called BaSystemes, paid me to install a new imap server
without losing huge old mailboxes located in a far
away remote imap server, accessible by an
away remote imap server, accessible by an
often broken low-bandwidth \s-1ISDN\s0 link.
.PP
I had to verify every mailbox was well transferred, all folders, all messages,
without wasting bandwidth or creating duplicates upon resyncs. The design was
made with the beautiful rsync command in mind.
without wasting bandwidth or creating duplicates upon resyncs. The imapsync
design was made with the beautiful rsync command in mind.
.PP
Imapsync started its life as a patch of the copy_folder.pl
script. The script copy_folder.pl comes from the Mail\-IMAPClient\-2.1.3 perl
@ -899,5 +945,5 @@ module tarball source (more precisely in the examples/ directory of the
Mail-IMAPClient tarball).
.PP
So many happened since then that I wonder
if it remains any lines of the original
if it remains any lines of the original
copy_folder.pl in imapsync source code.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

7
W/install_module_one.bat Normal file → Executable file
View File

@ -1,5 +1,5 @@
@REM $Id: install_module_one.bat,v 1.9 2019/05/28 13:20:08 gilles Exp gilles $
@REM $Id: install_module_one.bat,v 1.11 2019/12/11 18:57:04 gilles Exp gilles $
@SETLOCAL
@ECHO OFF
@ -18,11 +18,12 @@ IF ERRORLEVEL 1 ECHO Perl needed. Install Strawberry Perl. Get it at http://stra
@REM PAUSE
@REM EXIT
FOR %%M in (
Crypt::OpenSSL::RSA ^
IO::Tee ^
) DO perl -m%%M -e "print qq{Updating %%M $%%M::VERSION \n}" ^
& cpanm --force %%M
REM IO::Socket::SSL Net::SSLeay PAR::Packer IO::Tee Crypt::OpenSSL::RSA
REM & cpanm --force %%M
REM IO::Socket::SSL Net::SSLeay PAR::Packer IO::Tee Crypt::OpenSSL::RSA Encode::IMAPUTF7 IO::Socket::IP
@ECHO Perl modules for imapsync installed
@REM Do a PAUSE if run by double-click, aka, explorer (then ). No PAUSE in a DOS window or via ssh.

0
W/install_module_ssl.bat Normal file → Executable file
View File

11
W/install_modules.bat Normal file → Executable file
View File

@ -1,4 +1,4 @@
REM $Id: install_modules.bat,v 1.37 2019/05/28 13:20:08 gilles Exp gilles $
REM $Id: install_modules.bat,v 1.39 2019/12/11 18:56:54 gilles Exp gilles $
::------------------------------------------------------
::--------------- Main of install_modules.bat ----------
@ -16,9 +16,9 @@ CD /D %~dp0
CALL :handle_error CALL :detect_perl
CALL :handle_error CALL :update_modules
@ENDLOCAL
@REM Do a PAUSE if run by double-click, aka, explorer (then ). No PAUSE in a DOS window or via ssh.
IF %0 EQU "%~dpnx0" IF "%SSH_CLIENT%"=="" PAUSE
@ENDLOCAL
EXIT /B
@ -43,6 +43,10 @@ EXIT /B
:update_modules
@SETLOCAL
FOR %%M in ( ^
App::cpanminus ^
MIME::Base64 ^
Encode ^
Encode::IMAPUTF7 ^
File::Tail ^
Regexp::Common ^
Sys::MemInfo ^
@ -58,6 +62,7 @@ FOR %%M in ( ^
Getopt::ArgvFile ^
Socket6 ^
Net::SSLeay ^
IO::Socket::IP ^
IO::Socket::INET ^
IO::Socket::INET6 ^
IO::Socket::SSL ^
@ -77,7 +82,7 @@ FOR %%M in ( ^
HTML::Entities ^
Encode::Byte ^
) DO @perl -m%%M -e "print qq{Updating %%M $%%M::VERSION \n}" ^
& cpanm %%M
& ECHO DOING cpanm %%M & cpanm %%M & ECHO DONE cpanm %%M
ECHO Perl modules for imapsync updated
REM PAUSE

7
W/learn/bibmail_1GB Normal file
View File

@ -0,0 +1,7 @@
# A big file 714MB
dd if=/dev/zero of=pate714M bs=1M count=714
# post it to big1 user
echo Aie aie aie | mutt -s '1 GB dans ta face !' -a pate714M -- big1
# ok ?

View File

@ -0,0 +1,27 @@
#!/usr/bin/perl
use strict ;
use warnings ;
use Encode::IMAPUTF7 ;
sub imap_utf7_decode_new
{
use utf8 ;
my ( $s ) = shift ;
return( Encode::IMAPUTF7::decode("IMAP-UTF-7", $s ) ) ;
}
sub imap_utf7_encode_new
{
use utf8 ;
my ( $s ) = shift ;
return( Encode::IMAPUTF7::encode("IMAP-UTF-7", $s ) ) ;
}
#use utf8 ;
while ( <> )
{
chomp ;
#print( Encode::IMAPUTF7::encode('IMAP-UTF-7', $_ ), "\n" ) ;
print( Encode::IMAPUTF7::decode('IMAP-UTF-7', $_ ), "\n" ) ;
}

View File

@ -0,0 +1,30 @@
#!/usr/bin/perl
use strict ;
use warnings ;
use Encode::IMAPUTF7 ;
sub imap_utf7_decode_new
{
use utf8 ;
my ( $s ) = shift ;
return( Encode::IMAPUTF7::decode("IMAP-UTF-7", $s ) ) ;
}
sub imap_utf7_encode_new
{
use utf8 ;
my ( $s ) = shift ;
return( Encode::IMAPUTF7::encode("IMAP-UTF-7", $s ) ) ;
}
#use utf8 ;
no utf8 ;
while ( <> )
{
chomp ;
print( Encode::IMAPUTF7::encode('IMAP-UTF-7', $_ ), "\n" ) ;
#print( Encode::IMAPUTF7::decode('IMAP-UTF-7', $_ ), "\n" ) ;
}

View File

@ -0,0 +1,24 @@
#!/usr/bin/perl
use strict ;
use warnings ;
use Encode::IMAPUTF7 ;
sub imap_utf7_decode_new
{
use utf8 ;
my ( $s ) = shift ;
return( Encode::IMAPUTF7::decode("IMAP-UTF-7", $s ) ) ;
}
sub imap_utf7_encode_new
{
use utf8 ;
my ( $s ) = shift ;
return( Encode::IMAPUTF7::encode("IMAP-UTF-7", $s ) ) ;
}
use utf8 ;
#no utf8 ;
print( Encode::IMAPUTF7::encode('IMAP-UTF-7', 'Répertoire' ), "\n" );
print( Encode::IMAPUTF7::decode('IMAP-UTF-7', 'R&AOk-pertoire' ), "\n" );

32
W/learn/xoauth2_gmail Executable file
View File

@ -0,0 +1,32 @@
#!/usr/bin/perl
use strict ;
use warnings ;
use LWP::Authen::OAuth2;
my $dbh ;
my $token_string ;
# Constructor
my $oauth2 = LWP::Authen::OAuth2->new(
client_id => "108687549524-86sjq07f3ch8otl9fnr56mjnniltdrvn.apps.googleusercontent.com",
client_secret => "zAJO4PLxzeJ4yOaiJRk6f69k",
service_provider => "Google",
redirect_uri => "https://imapsync.lamiral.info/",
# Optional hook, but recommended.
#save_tokens => \&save_tokens,
#save_tokens_args => [ $dbh ],
# This is for when you have tokens from last time.
token_string => $token_string,
scope => 'https://mail.google.com/',
login_hint => 'gilles.lamiral@gmail.com',
);
# URL for user to go to to start the process.
my $url = $oauth2->authorization_url();
print "url: $url\ntoken_string: $token_string\n" ;

0
W/learn_func.bat Normal file → Executable file
View File

24
W/memo
View File

@ -1,6 +1,6 @@
#!/bin/sh
# $Id: memo,v 1.70 2019/04/28 03:11:49 gilles Exp gilles $
# $Id: memo,v 1.73 2019/09/05 13:32:57 gilles Exp gilles $
if test -n "$1"; then
echoq() { echo "$@" ; } # not quiet mode
@ -68,7 +68,7 @@ date
statistics_ks_frequency() {
cat <<EOFF
tail -f /var/log/apache2/access.log |cat -n|grep prj/imapsync/VERSION|cat -n |grep VERSION # ks frequency
tail -F /var/log/apache2/access.log |cat -n|grep prj/imapsync/VERSION|cat -n |grep VERSION # ks frequency
EOFF
}
@ -292,9 +292,9 @@ verify_month_year() {
test -f "$fmy" || { echo "No $fmy" ; return 0 ; }
fmy_YYYYmm=`date -r "$fmy" +%Y%m`
diff_month=`expr $fmy_YYYYmm - ${year}${month}` || :
echo -n $diff_month
test "$diff_month" -ge 1 && echo " is enough" && return 0
echo " is not enough"
#echo -n $diff_month
test "$diff_month" -ge 1 && return 0
echo "$fmy_YYYYmm - ${year}${month} = $diff_month is not enough"
statistics_VERSION_monthly $month $year
)
}
@ -430,6 +430,20 @@ sudo mv GeoIP.dat GeoIPASNum.dat GeoLiteCity.dat /usr/share/GeoIP/
EOF
}
maxmind_update2() {
cat << 'EOF'
wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz \
https://geolite.maxmind.com/download/geoip/database/GeoLite2-City-CSV.zip \
https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz \
https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip \
https://geolite.maxmind.com/download/geoip/database/GeoLite2-ASN.tar.gz \
https://geolite.maxmind.com/download/geoip/database/GeoLite2-ASN-CSV.zip
EOF
}
echoq "statistics_VERSION_yearly_ip_geo 2015 # long"
statistics_VERSION_yearly_ip_geo() {
year=${1:-`date '+%Y'`}

View File

@ -1,4 +1,4 @@
m4_dnl $Id: ml_announce.in,v 1.21 2019/02/16 22:31:06 gilles Exp gilles $
m4_dnl $Id: ml_announce.in.txt,v 1.23 2019/12/02 15:19:06 gilles Exp gilles $
m4_dnl
m4_define(`M4_imapsync_VERSION',m4_esyscmd(cat VERSION|tr -d '\n'))m4_dnl
m4_dnl
@ -9,6 +9,14 @@ To: imapsync_update@lists.lamiral.info
Dear imapsync user,
This newsletter announces imapsync new releases and services,
once or two times per year at most.
Send me a note if you don't want to receive those announces anymore,
I will unsubscribe you from this imapsync newsletter.
Now the news!
You will find imapsync release M4_imapsync_VERSION at
the following link:
@ -33,11 +41,9 @@ Feedback is welcome!
Web site: https://imapsync.lamiral.info/
This newsletter announces imapsync new releases and services.
Send me a note if you don't want to receive those announces anymore.
--
Au revoir.
Gilles Lamiral, 22 La Billais, 35580 Baulon, France
tel +33 951 84 42 42
mob +33 619 22 03 54
tel +33 951 84 42 42

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,105 +1,111 @@
Main code has high complexity score (420) at line 1, column 1. Consider refactoring. (Severity: 3)
Regular expression without "/x" flag at line 1759, column 47. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 1768, column 47. See page 236 of PBP. (Severity: 3)
Code structure is deeply nested at line 2332, column 41. Consider refactoring. (Severity: 3)
Regular expression without "/x" flag at line 3221, column 23. See page 236 of PBP. (Severity: 3)
Too many arguments at line 4226, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 4245, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 4266, column 1. See page 182 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 4425, column 23. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 5096, column 42. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 5097, column 33. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 5106, column 42. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 5126, column 42. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 5159, column 50. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 5263, column 64. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 5264, column 64. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 5267, column 56. See page 236 of PBP. (Severity: 3)
Too many arguments at line 5295, column 1. See page 182 of PBP. (Severity: 3)
Subroutine "authenticate_imap" with high complexity score (23) at line 5377, column 1. Consider refactoring. (Severity: 3)
Too many arguments at line 5377, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 5529, column 1. See page 182 of PBP. (Severity: 3)
Use "local $/ = undef" or Path::Tiny instead of joined readline at line 5626, column 43. See page 213 of PBP. (Severity: 3)
Backtick operator used at line 5644, column 20. Use IPC::Open3 instead. (Severity: 3)
Regular expression without "/x" flag at line 5782, column 26. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 6975, column 23. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 7284, column 29. See page 236 of PBP. (Severity: 3)
Expression form of "eval" at line 7477, column 27. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 7718, column 27. See page 161 of PBP. (Severity: 5)
Subroutine "copy_message" with high complexity score (22) at line 8149, column 1. Consider refactoring. (Severity: 3)
Too many arguments at line 8149, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 8223, column 1. See page 182 of PBP. (Severity: 3)
Subroutine "message_for_host2" with high complexity score (25) at line 8257, column 1. Consider refactoring. (Severity: 3)
Too many arguments at line 8257, column 1. See page 182 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 8535, column 35. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 8540, column 43. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 8589, column 32. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 8684, column 32. See page 236 of PBP. (Severity: 3)
Reused variable name in lexical scope: $uid1 at line 8807, column 9. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $uid2 at line 8807, column 9. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $uid1 at line 8887, column 9. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $uid2 at line 8887, column 9. Invent unique variable names. (Severity: 3)
Too many arguments at line 9087, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 9326, column 1. See page 182 of PBP. (Severity: 3)
Expression form of "eval" at line 10687, column 27. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 10928, column 27. See page 161 of PBP. (Severity: 5)
Too many arguments at line 11239, column 1. See page 182 of PBP. (Severity: 3)
Backtick operator used at line 11612, column 17. Use IPC::Open3 instead. (Severity: 3)
Split long regexps into smaller qr// chunks at line 11701, column 32. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 11705, column 32. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 11724, column 33. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 11735, column 24. See page 261 of PBP. (Severity: 3)
Cascading if-elsif chain at line 11999, column 2. See pages 117,118 of PBP. (Severity: 3)
Return value of eval not tested at line 12153, column 3. You can't depend upon the value of $@/$EVAL_ERROR to tell whether an eval failed. (Severity: 3)
Backtick operator used at line 12154, column 15. Use IPC::Open3 instead. (Severity: 3)
Split long regexps into smaller qr// chunks at line 12163, column 16. See page 261 of PBP. (Severity: 3)
Return value of eval not tested at line 12176, column 3. You can't depend upon the value of $@/$EVAL_ERROR to tell whether an eval failed. (Severity: 3)
Backtick operator used at line 12177, column 15. Use IPC::Open3 instead. (Severity: 3)
Split long regexps into smaller qr// chunks at line 12186, column 16. See page 261 of PBP. (Severity: 3)
Return value of eval not tested at line 12200, column 3. You can't depend upon the value of $@/$EVAL_ERROR to tell whether an eval failed. (Severity: 3)
Capture variable used outside conditional at line 12211, column 12. See page 253 of PBP. (Severity: 3)
Backtick operator used at line 12379, column 26. Use IPC::Open3 instead. (Severity: 3)
Backtick operator used at line 12408, column 18. Use IPC::Open3 instead. (Severity: 3)
Regular expression without "/x" flag at line 12542, column 42. See page 236 of PBP. (Severity: 3)
Backtick operator used at line 12595, column 16. Use IPC::Open3 instead. (Severity: 3)
Split long regexps into smaller qr// chunks at line 12703, column 19. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 12729, column 19. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 12770, column 19. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 12782, column 19. See page 261 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 13075, column 22. See page 236 of PBP. (Severity: 3)
Expression form of "eval" at line 13146, column 56. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 13150, column 58. See page 161 of PBP. (Severity: 5)
Split long regexps into smaller qr// chunks at line 13617, column 20. See page 261 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 14118, column 20. See page 236 of PBP. (Severity: 3)
Reused variable name in lexical scope: $err at line 14511, column 3. Invent unique variable names. (Severity: 3)
"warn" used instead of "carp" at line 14975, column 25. See page 283 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 14992, column 40. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 14994, column 23. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 14995, column 23. See page 236 of PBP. (Severity: 3)
Literal line breaks in a string at line 15021, column 19. See pages 60,61 of PBP. (Severity: 3)
Subroutine "myGetOptions" with high complexity score (31) at line 15057, column 1. Consider refactoring. (Severity: 3)
Capture variable used outside conditional at line 15089, column 41. See page 253 of PBP. (Severity: 3)
Subroutine "single_sync" with high complexity score (414) at line 1119, column 1. Consider refactoring. (Severity: 3)
Literal line breaks in a string at line 1651, column 18. See pages 60,61 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 1846, column 47. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 1857, column 47. See page 236 of PBP. (Severity: 3)
Code structure is deeply nested at line 2448, column 41. Consider refactoring. (Severity: 3)
Regular expression without "/x" flag at line 2787, column 83. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 3344, column 83. See page 236 of PBP. (Severity: 3)
Too many arguments at line 3491, column 1. See page 182 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 4109, column 23. See page 236 of PBP. (Severity: 3)
Too many arguments at line 5096, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 5115, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 5136, column 1. See page 182 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 5309, column 23. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 6030, column 42. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 6031, column 33. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 6040, column 42. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 6041, column 33. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 6071, column 42. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 6073, column 41. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 6108, column 50. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 6225, column 56. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 6227, column 56. See page 236 of PBP. (Severity: 3)
Too many arguments at line 6258, column 1. See page 182 of PBP. (Severity: 3)
Subroutine "authenticate_imap" with high complexity score (23) at line 6371, column 1. Consider refactoring. (Severity: 3)
Too many arguments at line 6371, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 6539, column 1. See page 182 of PBP. (Severity: 3)
Use "local $/ = undef" or Path::Tiny instead of joined readline at line 6651, column 47. See page 213 of PBP. (Severity: 3)
Backtick operator used at line 6670, column 20. Use IPC::Open3 instead. (Severity: 3)
Regular expression without "/x" flag at line 6815, column 26. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 8109, column 23. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 8418, column 29. See page 236 of PBP. (Severity: 3)
Expression form of "eval" at line 8611, column 27. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 8813, column 27. See page 161 of PBP. (Severity: 5)
Subroutine "copy_message" with high complexity score (22) at line 9244, column 1. Consider refactoring. (Severity: 3)
Too many arguments at line 9244, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 9319, column 1. See page 182 of PBP. (Severity: 3)
Subroutine "message_for_host2" with high complexity score (25) at line 9353, column 1. Consider refactoring. (Severity: 3)
Too many arguments at line 9353, column 1. See page 182 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 9631, column 35. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 9636, column 43. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 9685, column 32. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 9780, column 32. See page 236 of PBP. (Severity: 3)
Reused variable name in lexical scope: $uid1 at line 9903, column 9. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $uid2 at line 9903, column 9. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $uid1 at line 9983, column 9. Invent unique variable names. (Severity: 3)
Reused variable name in lexical scope: $uid2 at line 9983, column 9. Invent unique variable names. (Severity: 3)
Too many arguments at line 10183, column 1. See page 182 of PBP. (Severity: 3)
Too many arguments at line 10422, column 1. See page 182 of PBP. (Severity: 3)
Expression form of "eval" at line 11892, column 27. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 12133, column 27. See page 161 of PBP. (Severity: 5)
Too many arguments at line 12444, column 1. See page 182 of PBP. (Severity: 3)
Backtick operator used at line 12817, column 17. Use IPC::Open3 instead. (Severity: 3)
Split long regexps into smaller qr// chunks at line 12906, column 32. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 12910, column 32. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 12929, column 33. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 12940, column 24. See page 261 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 13113, column 37. See page 236 of PBP. (Severity: 3)
Cascading if-elsif chain at line 13242, column 2. See pages 117,118 of PBP. (Severity: 3)
Return value of eval not tested at line 13396, column 3. You can't depend upon the value of $@/$EVAL_ERROR to tell whether an eval failed. (Severity: 3)
Backtick operator used at line 13397, column 15. Use IPC::Open3 instead. (Severity: 3)
Split long regexps into smaller qr// chunks at line 13406, column 16. See page 261 of PBP. (Severity: 3)
Return value of eval not tested at line 13419, column 3. You can't depend upon the value of $@/$EVAL_ERROR to tell whether an eval failed. (Severity: 3)
Backtick operator used at line 13420, column 15. Use IPC::Open3 instead. (Severity: 3)
Split long regexps into smaller qr// chunks at line 13429, column 16. See page 261 of PBP. (Severity: 3)
Return value of eval not tested at line 13443, column 3. You can't depend upon the value of $@/$EVAL_ERROR to tell whether an eval failed. (Severity: 3)
Capture variable used outside conditional at line 13454, column 12. See page 253 of PBP. (Severity: 3)
Backtick operator used at line 13622, column 26. Use IPC::Open3 instead. (Severity: 3)
Backtick operator used at line 13651, column 18. Use IPC::Open3 instead. (Severity: 3)
Regular expression without "/x" flag at line 13785, column 42. See page 236 of PBP. (Severity: 3)
Backtick operator used at line 13839, column 16. Use IPC::Open3 instead. (Severity: 3)
Split long regexps into smaller qr// chunks at line 13947, column 19. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 13973, column 19. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 14014, column 19. See page 261 of PBP. (Severity: 3)
Split long regexps into smaller qr// chunks at line 14026, column 19. See page 261 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 14338, column 22. See page 236 of PBP. (Severity: 3)
Expression form of "eval" at line 14409, column 56. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 14413, column 58. See page 161 of PBP. (Severity: 5)
Split long regexps into smaller qr// chunks at line 14880, column 20. See page 261 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 15382, column 20. See page 236 of PBP. (Severity: 3)
Reused variable name in lexical scope: $err at line 15775, column 3. Invent unique variable names. (Severity: 3)
"warn" used instead of "carp" at line 16239, column 25. See page 283 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 16256, column 40. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 16258, column 23. See page 236 of PBP. (Severity: 3)
Regular expression without "/x" flag at line 16259, column 23. See page 236 of PBP. (Severity: 3)
Literal line breaks in a string at line 16285, column 19. See pages 60,61 of PBP. (Severity: 3)
Subroutine "myGetOptions" with high complexity score (31) at line 16321, column 1. Consider refactoring. (Severity: 3)
Capture variable used outside conditional at line 16353, column 41. See page 253 of PBP. (Severity: 3)
1 files.
476 subroutines/methods.
15,905 statements.
505 subroutines/methods.
17,023 statements.
15,974 lines, consisting of:
2,987 blank lines.
967 comment lines.
17,259 lines, consisting of:
3,228 blank lines.
1,071 comment lines.
0 data lines.
11,242 lines of Perl code.
778 lines of POD.
12,138 lines of Perl code.
822 lines of POD.
Average McCabe score of subroutines was 4.05.
Average McCabe score of subroutines was 4.91.
81 violations.
Violations per file was 81.000.
87 violations.
Violations per file was 87.000.
Violations per statement was 0.005.
Violations per line of code was 0.005.
6 severity 5 violations.
75 severity 3 violations.
81 severity 3 violations.
6 violations of BuiltinFunctions::ProhibitStringyEval.
1 violations of ControlStructures::ProhibitCascadingIfElse.
@ -108,11 +114,10 @@ Violations per line of code was 0.005.
3 violations of ErrorHandling::RequireCheckingReturnValueOfEval.
7 violations of InputOutput::ProhibitBacktickOperators.
1 violations of InputOutput::ProhibitJoinedReadline.
1 violations of Modules::ProhibitExcessMainComplexity.
2 violations of RegularExpressions::ProhibitCaptureWithoutTest.
11 violations of RegularExpressions::ProhibitComplexRegexes.
25 violations of RegularExpressions::RequireExtendedFormatting.
4 violations of Subroutines::ProhibitExcessComplexity.
12 violations of Subroutines::ProhibitManyArgs.
1 violations of ValuesAndExpressions::ProhibitImplicitNewlines.
29 violations of RegularExpressions::RequireExtendedFormatting.
5 violations of Subroutines::ProhibitExcessComplexity.
13 violations of Subroutines::ProhibitManyArgs.
2 violations of ValuesAndExpressions::ProhibitImplicitNewlines.
5 violations of Variables::ProhibitReusedNames.

View File

@ -1,22 +1,22 @@
Expression form of "eval" at line 7477, column 27. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 7718, column 27. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 10687, column 27. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 10928, column 27. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 13146, column 56. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 13150, column 58. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 8611, column 27. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 8813, column 27. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 11892, column 27. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 12133, column 27. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 14409, column 56. See page 161 of PBP. (Severity: 5)
Expression form of "eval" at line 14413, column 58. See page 161 of PBP. (Severity: 5)
1 files.
476 subroutines/methods.
15,905 statements.
505 subroutines/methods.
17,023 statements.
15,974 lines, consisting of:
2,987 blank lines.
967 comment lines.
17,259 lines, consisting of:
3,228 blank lines.
1,071 comment lines.
0 data lines.
11,242 lines of Perl code.
778 lines of POD.
12,138 lines of Perl code.
822 lines of POD.
Average McCabe score of subroutines was 4.05.
Average McCabe score of subroutines was 4.91.
6 violations.
Violations per file was 6.000.

View File

@ -1,17 +1,16 @@
$SHELL says /bin/bash
$0 gives ./INSTALL.d/prerequisites_imapsync
ps -ef gives gilles 2386 2385 0 01:17 pts/2 00:00:00 /bin/sh ./INSTALL.d/prerequisites_imapsync
ps -ef gives gilles 1184 1183 0 23:44 pts/21 00:00:00 /bin/sh ./INSTALL.d/prerequisites_imapsync
Distributor ID: Ubuntu
Description: Ubuntu 16.04.6 LTS
Release: 16.04
Codename: xenial
Linux petite 4.4.0-148-generic #174-Ubuntu SMP Tue May 7 12:19:28 UTC 2019 i686 i686 i686 GNU/Linux
Linux petite 4.4.0-166-generic #195-Ubuntu SMP Tue Oct 1 09:36:25 UTC 2019 i686 i686 i686 GNU/Linux
Ok: Found Perl 5.22.1
make[1] : on entre dans le répertoire « /home/gilles/public_html/imapsync »
make[1]: rien à faire pour « foo ».
make[1] : on quitte le répertoire « /home/gilles/public_html/imapsync »
Ok: Found make GNU Make 4.1
Ok: Found Perl module File::Tail
Ok: Found Perl module App::cpanminus
Ok: Found Perl module Authen::NTLM
Ok: Found Perl module CGI
@ -23,8 +22,11 @@ Ok: Found Perl module Digest::HMAC
Ok: Found Perl module Digest::HMAC_MD5
Ok: Found Perl module Digest::MD5
Ok: Found Perl module Dist::CheckConflicts
Ok: Found Perl module Encode
Ok: Found Perl module Encode::Byte
Ok: Found Perl module Encode::IMAPUTF7
Ok: Found Perl module File::Copy::Recursive
Ok: Found Perl module File::Tail
Ok: Found Perl module IO::Socket::INET
Ok: Found Perl module IO::Socket::INET6
Ok: Found Perl module IO::Socket::SSL
@ -35,6 +37,7 @@ Ok: Found Perl module JSON::WebToken::Crypt::RSA
Ok: Found Perl module HTML::Entities
Ok: Found Perl module LWP::UserAgent
Ok: Found Perl module Mail::IMAPClient
Ok: Found Perl module MIME::Base64
Ok: Found Perl module Module::Implementation
Ok: Found Perl module Module::Runtime
Ok: Found Perl module Module::ScanDeps
@ -55,6 +58,7 @@ Ok: Found Perl module Test::More
Ok: Found Perl module Test::Pod
Ok: Found Perl module Test::Requires
Ok: Found Perl module Test::Deep
Ok: Found Perl module Text::ParseWords
Ok: Found Perl module Try::Tiny
Ok: Found Perl module Unicode::String
Ok: Found Perl module URI::Escape

View File

@ -1,11 +1,11 @@
Name:
imapsync - Email IMAP tool for syncing, copying and migrating email
mailboxes between two imap servers, one way, and without duplicates.
imapsync - Email IMAP tool for syncing, copying, migrating and archiving
email mailboxes between two imap servers, one way, and without duplicates.
Version:
This documentation refers to Imapsync $Revision: 1.5 $
This documentation refers to Imapsync $Revision: 1.7 $
Usage:
@ -23,11 +23,11 @@ Options:
usage: imapsync [options]
Standard options are the six values forming the credentials, three on each
sides, needed to log in into the IMAP servers, ie, a host, a username, and
a password, two times.
The standard options are the six values forming the credentials. Three
values on each side are needed in order to log in into the IMAP servers.
These six values are a host, a username, and a password, two times.
Conventions used:
Conventions used in the following descriptions of the options:
str means string
int means integer
@ -41,8 +41,8 @@ Options/credentials:
--host1 str : Source or "from" imap server.
--port1 int : Port to connect on host1.
Optional since default ports are the
well known ports 143 or 993.
Optional since default ports are the
well known ports imap/143 or imaps/993.
--user1 str : User to login on host1.
--password1 str : Password for the user1.
@ -52,10 +52,10 @@ Options/credentials:
--password2 str : Password for the user2.
--showpasswords : Shows passwords on output instead of "MASKED".
Useful to restart a complete run by just reading
Useful to restart a complete run by just reading
the command line used in the log,
or to debug passwords.
It's not a secure practice.
It's not a secure practice at all.
--passfile1 str : Password file for the user1. It must contain the
password on the first line. This option avoids showing
@ -119,14 +119,14 @@ Options/folders:
--folderrec str : Sync this folder recursively.
--folderrec str : and this one, etc.
--folderfirst str : Sync this folder first. --folderfirst "Work"
--folderfirst str : Sync this folder first. Ex. --folderfirst "INBOX"
--folderfirst str : then this one, etc.
--folderlast str : Sync this folder last. --folderlast "[Gmail]/All Mail"
--folderlast str : then this one, etc.
--nomixfolders : Do not merge folders when host1 is case-sensitive
while host2 is not (like Exchange). Only the first
similar folder is synced (example: with folders
similar folder is synced (example: with folders
"Sent", "SENT" and "sent"
on host1 only "Sent" will be synced to host2).
@ -153,14 +153,14 @@ Options/folders:
--regextrans2 options before all others.
Add --debug to see what's really going on.
--subfolder1 str : Syncs the host1 folders hierarchy under str
to the root hierarchy of host2.
--subfolder1 str : Syncs the host1 folders hierarchy which is under folder
str to the root hierarchy of host2.
It's the couterpart of a sync done by --subfolder2
when doing it in the reverse order.
when doing it in the reverse order.
Backup/Restore scenario:
Use --subfolder2 str for a backup to the folder str
on host2. Then use --subfolder1 str for restoring
from the folder str, after inverting
on host2. Then use --subfolder1 str for restoring
from the folder str, after inverting
host1/host2 user1/user2 values.
@ -174,25 +174,26 @@ Options/folders:
usually "INBOX." or "INBOX/" or an empty string "".
imapsync guesses the prefix if host1 imap server
does not have NAMESPACE capability. So this option
should not be used, most of the time.
should not be used most of the time.
--prefix2 str : Add prefix to all host2 folders. See --prefix1
--sep1 str : Host1 separator. This option should not be used,
--sep1 str : Host1 separator. This option should not be used
most of the time.
Imapsync gets the separator from the server itself,
by using NAMESPACE, or it tries to guess it
from the folders listing (it counts
characters / . \\ \ in folder names and choose the
more frequent, or finally / if nothing is found.
--sep2 str : Host2 separator.
--sep2 str : Host2 separator. See --sep1
--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
the automatic prefix and separator inversion.
Then, when happy, remove --dry for a run, then
remove --justfolders for the next ones.
Have in mind that --regextrans2 is applied after
the automatic prefix and separator inversion.
For examples see:
https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt
@ -223,6 +224,18 @@ Options/log:
--logfile str : Change the default log filename (can be dirname/filename).
--logdir str : Change the default log directory. Default is LOG_imapsync/
The default logfile name is for example
LOG_imapsync/2019_12_22_23_57_59_532_user1_user2.txt
where:
2019_12_22_23_57_59_532 is nearly the date of the start
YYYY_MM_DD_HH_MM_SS_mmm
year_month_day_hour_minute_seconde_millisecond
and user1 user2 are the --user1 --user2 values.
Options/messages:
--skipmess reg : Skips messages matching the regex.
@ -230,13 +243,22 @@ Options/messages:
--skipmess is applied before --regexmess
--skipmess reg : or this one, etc.
--skipcrossduplicates : Avoid copying messages that are already copied
in another folder, good from Gmail to X when
X is not also Gmail.
Activated with --gmail1 unless --noskipcrossduplicates
--debugcrossduplicates : Prints which messages (UIDs) are skipped with
--skipcrossduplicates (and in what other folders
they are).
--pipemess cmd : Apply this cmd command to each message content
before the copy.
--pipemess cmd : and this one, etc.
--pipemess cmd : and this one, etc.
With several --pipemess, the output of each cmd
command (STDOUT) is given to the input (STDIN)
command (STDOUT) is given to the input (STDIN)
of the next command.
For example,
For example,
--pipemess cmd1 --pipemess cmd2 --pipemess cmd3
is like a Unix pipe:
"cat message | cmd1 | cmd2 | cmd3"
@ -247,6 +269,23 @@ Options/messages:
Example: 's/\000/ /g' # to replace null by space.
--regexmess reg : and this one, etc.
Options/labels:
Gmail present labels as folders in imap. Imapsync can accelerate the sync
by syncing X-GM-LABELS, it will avoid to transfer messages when they are
already on host2.
--synclabels : Syncs also Gmail labels when a message is copied to host2.
Activated by default with --gmail1 --gmail2 unless
--nosynclabels is added.
--resynclabels : Resyncs Gmail labels when a message is already on host2.
Activated by default with --gmail1 --gmail2 unless
--noresynclabels is added.
For Gmail syncs, see also:
https://imapsync.lamiral.info/FAQ.d/FAQ.Gmail.txt
Options/flags:
If you encounter flag problems see also:
@ -271,7 +310,7 @@ Options/deletions:
EXPUNGE IMAP command. If expunging after each message
slows down too much the sync then use
--noexpungeaftereach to speed up, expunging will then be
done only twice per folder, one at the beginning and
done only twice per folder, one at the beginning and
one at the end of a folder sync.
--expunge1 : Expunge messages on host1 just before syncing a folder.
@ -297,12 +336,15 @@ Options/deletions:
--delete2folders : Delete folders in host2 that are not in host1 server.
For safety, first try it like this (it is safe):
--delete2folders --dry --justfolders --nofoldersizes
and see what folders will be deleted.
--delete2foldersonly reg : Deleted only folders matching regex.
--delete2foldersonly reg : Delete only folders matching the regex reg.
Example: --delete2foldersonly "/^Junk$|^INBOX.Junk$/"
This option activates --delete2folders
--delete2foldersbutnot reg : Do not delete folders matching regex.
--delete2foldersbutnot reg : Do not delete folders matching the regex rex.
Example: --delete2foldersbutnot "/Tasks$|Contacts$|Foo$/"
This option activates --delete2folders
--noexpunge2 : Do not expunge messages on host2.
--nouidexpunge2 : Do not uidexpunge messages on the host2 account
@ -328,7 +370,7 @@ Options/message selection:
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):
You can do (+ zone are the messages selected):
past|----maxage+++++++++++++++>now
past|+++++++++++++++minage---->now
past|----maxage+++++minage---->now (intersection)
@ -336,22 +378,23 @@ Options/message selection:
--search str : Selects only messages returned by this IMAP SEARCH
command. Applied on both sides.
For a complete of what can be search see
For a complete set of what can be search see
https://imapsync.lamiral.info/FAQ.d/FAQ.Messages_Selection.txt
--search1 str : Same as --search but for selecting host1 messages only.
--search2 str : Same as --search but for selecting host2 messages only.
--search CRIT equals --search1 CRIT --search2 CRIT
So --search CRIT equals --search1 CRIT --search2 CRIT
--maxlinelength int : skip messages with a line length longer than int bytes.
RFC 2822 says it must be no more than 1000 bytes.
RFC 2822 says it must be no more than 1000 bytes but
real life servers and email clients do more.
--useheader str : Use this header to compare messages on both sides.
Ex: Message-ID or Subject or Date.
--useheader str and this one, etc.
--usecache : Use cache to speed up the sync.
--usecache : Use cache to speed up next syncs. Not set by default.
--nousecache : Do not use cache. Caveat: --useuid --nousecache creates
duplicates on multiple runs.
--useuid : Use UIDs instead of headers as a criterion to recognize
@ -361,10 +404,10 @@ Options/message selection:
Options/miscellaneous:
--syncacls : Synchronizes acls (Access Control Lists).
--nosyncacls : Does not synchronize acls. This is the default.
Acls in IMAP are not standardized, be careful
since one acl code on one side may signify something
else on the other one.
--nosyncacls : Does not synchronize acls. This is the default.
--addheader : When a message has no headers to be identified,
--addheader adds a "Message-Id" header,
@ -392,17 +435,17 @@ Options/debugging:
Options/specific:
--gmail1 : sets --host1 to Gmail and options from FAQ.Gmail.txt
--gmail2 : sets --host2 to Gmail and options from FAQ.Gmail.txt
--gmail1 : sets --host1 to Gmail and other options. See FAQ.Gmail.txt
--gmail2 : sets --host2 to Gmail and other options. See FAQ.Gmail.txt
--office1 : sets --host1 to Office365 options from FAQ.Exchange.txt
--office2 : sets --host2 to Office365 options from FAQ.Exchange.txt
--office1 : sets --host1 to Office365 and other options. See FAQ.Exchange.txt
--office2 : sets --host2 to Office365 and other options. See FAQ.Exchange.txt
--exchange1 : sets options from FAQ.Exchange.txt, account1 part
--exchange2 : sets options from FAQ.Exchange.txt, account2 part
--exchange1 : sets options for Exchange. See FAQ.Exchange.txt
--exchange2 : sets options for Exchange. See FAQ.Exchange.txt
--domino1 : sets options from FAQ.Domino.txt, account1 part
--domino2 : sets options from FAQ.Domino.txt, account2 part
--domino1 : sets options for Domino. See FAQ.Domino.txt
--domino2 : sets options for Domino. See FAQ.Domino.txt
Options/behavior:
@ -418,11 +461,11 @@ Options/behavior:
--abort : terminates a previous call still running.
It uses the pidfile to know what process to abort.
--exitwhenover int : Stop syncing and exits when int total bytes
--exitwhenover int : Stop syncing and exits when int total bytes
transferred is reached.
--version : Print only software version.
--noreleasecheck : Do not check for new imapsync release
--noreleasecheck : Do not check for any new imapsync release.
--releasecheck : Check for new imapsync release.
it's an http request to
http://imapsync.lamiral.info/prj/imapsync/VERSION
@ -433,7 +476,7 @@ Options/behavior:
information. Need only --host1 and --host2 options.
Obsolete since "imapsync --host1 imaphost" alone
implies --justconnect
--justlogin : Just login to both host1 and host2 with users
credentials, then exit.
@ -450,271 +493,284 @@ Options/behavior:
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
--host2 test2.lamiral.info --user2 test2 --password2 secret2
Here is imapsync 1.945 on host petite, a linux system with 1.1/2.0 free GiB of RAM
Here is imapsync 1.977 on host petite, a linux system with 0.2/2.0 free GiB of RAM
with Perl 5.22.1 and Mail::IMAPClient 3.38
$Id: prereq.scandeps.Ubuntu_16.04_xenial.txt,v 1.5 2019/06/26 23:17:16 gilles Exp gilles $
This imapsync is up to date. ( local 1.945 >= official 1.921 )( Use --noreleasecheck to avoid this release check. )
$Id: prereq.scandeps.Ubuntu_16.04_xenial.txt,v 1.7 2020/01/03 22:44:51 gilles Exp gilles $
This imapsync is up to date. ( local 1.977 >= official 1.945 )( Use --noreleasecheck to avoid this release check. )
Homepage: https://imapsync.lamiral.info/
'Tie::Hash::NamedCapture' => '0.09',
'APR' => '0.009000',
'APR::XSLoader' => 'undef',
'Apache2::XSLoader' => 'undef',
'Authen::NTLM::DES' => '1.02',
'Authen::NTLM::MD4' => '1.02',
'GSSAPI' => '0.28',
'Crypt::Random::Seed' => '0.03',
'Math::Random::ISAAC' => '1.003',
'CGI::Cookie' => '4.26',
'CGI::File::Temp' => '4.26',
'APR::Pool' => '0.009000',
'Apache2::RequestIO' => '2.000009',
'Apache2::RequestRec' => '2.000009',
'Apache2::Response' => '2.000009',
'Apache2::RequestUtil' => '2.000009',
'CGI::Util' => '4.26',
'ModPerl::Util' => '2.000009',
'APR::Table' => '0.009000',
'Fh' => '4.26',
'Convert::ASN1::IO' => '0.27',
'Convert::ASN1::_decode' => '0.27',
'Convert::ASN1::_encode' => '0.27',
'Convert::ASN1::parser' => '0.27',
'Bytes::Random::Secure' => '0.28',
'Crypt::SSLeay::X509' => 'undef',
'Crypt::SSLeay::CTX' => 'undef',
'Digest::HMAC' => '1.03',
'Digest::Perl::MD5' => '1.9',
'Encode::HanExtra' => '0.23',
'HTML::Parser' => '3.72',
'HTTP::Headers' => '6.11',
'HTTP::Cookies::Netscape' => '6.00',
'IO::Compress::Bzip2' => '2.069',
'IO::Compress::Deflate' => '2.069',
'IO::Compress::Gzip' => '2.069',
'IO::HTML' => '1.001',
'IO::Uncompress::Bunzip2' => '2.069',
'IO::Uncompress::Inflate' => '2.069',
'IO::Uncompress::RawInflate' => '2.069',
'IO::Uncompress::Gunzip' => '2.069',
'HTTP::Message' => '6.11',
'Compress::Raw::Bzip2' => '2.069',
'File::GlobMapper' => '1.000',
'IO::Compress::Adapter::Bzip2' => '2.069',
'IO::Compress::Base' => '2.069',
'IO::Compress::RawDeflate' => '2.069',
'IO::Compress::Adapter::Deflate' => '2.069',
'IO::Compress::Base::Common' => '2.069',
'IO::Compress::Zlib::Constants' => '2.069',
'IO::Compress::Zlib::Extra' => '2.069',
'IO::Compress::Gzip::Constants' => '2.069',
'IO::Socket::SSL::PublicSuffix' => 'undef',
'Net::SSLeay' => '1.72',
'Socket6' => '0.25',
'IO::Uncompress::Adapter::Bunzip2' => '2.069',
'IO::Uncompress::Base' => '2.069',
'IO::Uncompress::Adapter::Inflate' => '2.069',
'JSON::WebToken::Constants' => 'undef',
'JSON::WebToken::Exception' => 'undef',
'Module::Runtime' => '0.014',
'JSON::WebToken::Crypt' => 'undef',
'Types::Serialiser' => '1.0',
'common::sense' => '3.74',
'CPAN::Config' => 'undef',
'URI::_foreign' => '1.71',
'URI::mailto' => '1.71',
'URI::data' => '1.71',
'URI::_query' => '1.71',
'URI' => '1.71',
'URI::QueryParam' => '1.71',
'URI::Split' => '1.71',
'URI::_segment' => '1.71',
'URI::file::FAT' => '1.71',
'URI::file::Mac' => '1.71',
'URI::file::OS2' => '1.71',
'URI::file::QNX' => '1.71',
'URI::ftp' => '1.71',
'URI::gopher' => '1.71',
'URI::https' => '1.71',
'URI::ldapi' => '1.71',
'URI::ldaps' => '1.71',
'URI::mms' => '1.71',
'URI::nntp' => '1.71',
'URI::pop' => '1.71',
'URI::rlogin' => '1.71',
'URI::rsync' => '1.71',
'URI::rtspu' => '1.71',
'URI::sftp' => '1.71',
'URI::sips' => '1.71',
'URI::snews' => '1.71',
'URI::telnet' => '1.71',
'URI::tn3270' => '1.71',
'URI::_punycode' => '1.71',
'URI::file::Win32' => '1.71',
'URI::file::Unix' => '1.71',
'URI::file::Base' => '1.71',
'URI::_ldap' => '1.71',
'URI::ldap' => '1.71',
'URI::rtsp' => '1.71',
'URI::ssh' => '1.71',
'URI::sip' => '1.71',
'URI::news' => '1.71',
'URI::IRI' => '1.71',
'URI::Heuristic' => '4.20',
'URI::_generic' => '1.71',
'URI::_login' => '1.71',
'URI::_idna' => '1.71',
'URI::_userpass' => '1.71',
'LWP::MediaTypes' => '6.02',
'File::Listing' => '6.04',
'HTTP::Negotiate' => '6.00',
'Net::HTTP' => '6.09',
'HTTP::Status' => '6.11',
'Net::HTTPS' => '6.09',
'Net::SSL' => '2.88',
'Net::LDAP::DSML' => '0.16',
'Net::LDAP' => '0.65',
'Net::LDAP::LDIF' => '0.26',
'Mail::Internet' => '2.13',
'HTML::HeadParser' => '3.71',
'HTTP::Config' => '6.11',
'HTTP::Request::Common' => '6.11',
'LWP::ConnCache' => '6.15',
'HTTP::Cookies' => '6.01',
'Encode::Locale' => '1.05',
'HTTP::Headers::Util' => '6.11',
'LWP::MemberMixin' => 'undef',
'LWP' => '6.15',
'HTTP::Date' => '6.02',
'HTTP::Request' => '6.11',
'LWP::Protocol' => '6.15',
'HTTP::Response' => '6.11',
'Mail::IMAPClient::MessageSet' => 'undef',
'Digest::HMAC_MD5' => '1.01',
'Authen::NTLM' => '1.09',
'Authen::SASL' => '2.16',
'Authen::SASL::CRAM_MD5' => '2.14',
'Authen::SASL::EXTERNAL' => '2.14',
'Authen::SASL::Perl' => '2.14',
'Authen::SASL::Perl::ANONYMOUS' => '2.14',
'Authen::SASL::Perl::CRAM_MD5' => '2.14',
'Authen::SASL::Perl::DIGEST_MD5' => '2.14',
'Authen::SASL::Perl::EXTERNAL' => '2.14',
'Authen::SASL::Perl::GSSAPI' => '0.05',
'Authen::SASL::Perl::LOGIN' => '2.14',
'Authen::SASL::Perl::PLAIN' => '2.14',
'Mail::Address' => '2.13',
'Mail::Header' => '2.13',
'Mail::Mailer' => '2.13',
'Mail::Util' => '2.13',
'Math::Random::ISAAC::PP' => '1.003',
'Math::Random::ISAAC::XS' => '1.004',
'Net::HTTP::Methods' => '6.09',
'Compress::Raw::Zlib' => '2.069',
'Net::LDAP::Bind' => '1.05',
'Net::LDAP::Extension' => '1.04',
'Net::LDAP::RootDSE' => '0.02',
'Net::LDAP::Search' => '0.14',
'Convert::ASN1::Debug' => '0.27',
'Convert::ASN1' => '0.27',
'Net::LDAP::Message' => '1.12',
'Net::LDAP::ASN' => '0.12',
'Net::LDAP::Constant' => '0.23',
'Net::LDAP::Filter' => '0.20',
'XML::SAX::Base' => '1.07',
'Net::LDAP::Schema' => '0.9908',
'Net::LDAP::Entry' => '0.27',
'Net::LDAP::Control' => '0.18',
'Net::LDAP::Util' => '0.19',
'Net::LDAP::Intermediate' => '0.04',
'Crypt::SSLeay::MainContext' => 'undef',
'Crypt::SSLeay' => '0.73_04',
'Email::Address' => '1.908',
'Test::Builder::IO::Scalar' => '2.113',
'UNIVERSAL::can' => '1.20140328',
'UNIVERSAL::isa' => '1.20150614',
'Test::Builder' => '1.001014',
'Test::Builder::Module' => '1.001014',
'URI::WithBase' => '2.20',
'URI::file' => '4.21',
'URI::_server' => '1.71',
'Unicode::CharName' => '1.07',
'XML::SAX::Exception' => '1.07',
'CGI::Carp' => '4.26',
'Data::Uniqid' => '0.12',
'Digest::HMAC_SHA1' => '1.03',
'File::Copy::Recursive' => '0.38',
'File::Tail' => '1.3',
'IO::Tee' => '0.64',
'JSON::WebToken' => '0.10',
'JSON::WebToken::Crypt::RSA' => 'undef',
'Mail::IMAPClient' => '3.38',
'Readonly' => '2.00',
'Sys::MemInfo' => '0.98',
'Term::ReadKey' => '2.33',
'Test::MockObject' => '1.20150527',
'Test::More' => '1.001014',
'Unicode::String' => '2.09',
'HTML::Entities' => '3.69',
'CGI' => '4.26',
'LWP::Authen::Digest' => 'undef',
'LWP::Authen::Ntlm' => '6.15',
'LWP::Protocol::GHTTP' => 'undef',
'LWP::Protocol::cpan' => 'undef',
'LWP::Protocol::data' => 'undef',
'LWP::Protocol::file' => 'undef',
'LWP::Protocol::ftp' => 'undef',
'LWP::Protocol::gopher' => 'undef',
'LWP::Protocol::https' => '6.06',
'LWP::Protocol::ldapi' => 'undef',
'LWP::Protocol::ldaps' => 'undef',
'LWP::Protocol::loopback' => 'undef',
'LWP::Protocol::mailto' => 'undef',
'LWP::Protocol::nntp' => 'undef',
'LWP::UserAgent' => '6.15',
'JSON::XS' => '3.01',
'JSON' => '2.90',
'JSON::XS::Boolean' => 'undef',
'Crypt::OpenSSL::RSA' => '0.28',
'LWP::Authen::Basic' => 'undef',
'URI::URL' => '5.04',
'URI::http' => '1.71',
'URI::Escape' => '3.31',
'LWP::Protocol::http' => 'undef',
'IO::Socket::SSL' => '2.047',
'LWP::Protocol::ldap' => '1.25',
'LWP::Protocol::nogo' => 'undef',
'IO::Socket::INET6' => '2.72',
'Regexp::Common::comment' => '2016020301',
'Regexp::Common::lingua' => '2016020301',
'Regexp::Common::zip' => '2016020301',
'Regexp::Common::net' => '2016020301',
'Regexp::Common::list' => '2016020301',
'Regexp::Common::URI::news' => '2016020301',
'Regexp::Common::URI::pop' => '2016020301',
'Regexp::Common::URI::tel' => '2016020301',
'Regexp::Common::profanity' => '2016020301',
'Regexp::Common::URI::ftp' => '2016020301',
'Regexp::Common::URI::fax' => '2016020301',
'Regexp::Common::URI::wais' => '2016020301',
'Regexp::Common::URI::RFC2396' => '2016020301',
'Regexp::Common::URI::prospero' => '2016020301',
'Regexp::Common::URI::tv' => '2016020301',
'Regexp::Common::URI::telnet' => '2016020301',
'Regexp::Common::Email::Address' => '1.01',
'Regexp::Common' => '2016020301',
'Regexp::Common::URI::RFC1808' => '2016020301',
'Regexp::Common::URI::RFC2806' => '2016020301',
'Regexp::Common::_support' => '2016020301',
'Regexp::Common::URI::gopher' => '2016020301',
'Regexp::Common::URI::RFC2384' => '2016020301',
'Regexp::Common::URI::RFC1738' => '2016020301',
'Regexp::Common::URI::RFC1035' => '2016020301',
'Regexp::Common::URI::file' => '2016020301',
'Regexp::Common::URI::http' => '2016020301',
'Regexp::Common::delimited' => '2016020301',
'Regexp::Common::SEN' => '2016020301',
'Regexp::Common::whitespace' => '2016020301',
'Regexp::Common::number' => '2016020301',
'Regexp::Common::balanced' => '2016020301',
'Regexp::Common::CC' => '2016020301',
'Regexp::Common::URI' => '2016020301',
'Encode::Unicode' => '2.09',
'Tie::Hash::NamedCapture' => '0.09',
'APR' => '0.009000',
'APR::XSLoader' => 'undef',
'Apache2::XSLoader' => 'undef',
'Authen::NTLM::DES' => '1.02',
'Authen::NTLM::MD4' => '1.02',
'GSSAPI' => '0.28',
'Crypt::Random::Seed' => '0.03',
'Math::Random::ISAAC' => '1.003',
'CGI::Cookie' => '4.26',
'CGI::File::Temp' => '4.26',
'APR::Pool' => '0.009000',
'Apache2::RequestIO' => '2.000009',
'Apache2::RequestRec' => '2.000009',
'Apache2::Response' => '2.000009',
'Apache2::RequestUtil' => '2.000009',
'CGI::Util' => '4.26',
'ModPerl::Util' => '2.000009',
'APR::Table' => '0.009000',
'Fh' => '4.26',
'Convert::ASN1::IO' => '0.27',
'Convert::ASN1::_decode' => '0.27',
'Convert::ASN1::_encode' => '0.27',
'Convert::ASN1::parser' => '0.27',
'Bytes::Random::Secure' => '0.28',
'Crypt::SSLeay::X509' => 'undef',
'Crypt::SSLeay::CTX' => 'undef',
'Digest::HMAC' => '1.03',
'Digest::Perl::MD5' => '1.9',
'Encode::HanExtra' => '0.23',
'HTML::Parser' => '3.72',
'HTTP::Cookies::Netscape' => '6.00',
'IO::Compress::Bzip2' => '2.069',
'IO::Compress::Deflate' => '2.069',
'IO::Compress::Gzip' => '2.069',
'IO::HTML' => '1.001',
'IO::Uncompress::Bunzip2' => '2.069',
'IO::Uncompress::Inflate' => '2.069',
'IO::Uncompress::RawInflate' => '2.069',
'IO::Uncompress::Gunzip' => '2.069',
'HTTP::Headers' => '6.11',
'HTTP::Message' => '6.11',
'Compress::Raw::Bzip2' => '2.069',
'File::GlobMapper' => '1.000',
'IO::Compress::Adapter::Bzip2' => '2.069',
'IO::Compress::Base' => '2.069',
'IO::Compress::RawDeflate' => '2.069',
'IO::Compress::Adapter::Deflate' => '2.069',
'IO::Compress::Zlib::Constants' => '2.069',
'Socket6' => '0.25',
'IO::Socket::SSL::PublicSuffix' => 'undef',
'Net::SSLeay' => '1.72',
'IO::Uncompress::Adapter::Bunzip2' => '2.069',
'IO::Compress::Zlib::Extra' => '2.069',
'IO::Compress::Gzip::Constants' => '2.069',
'IO::Compress::Base::Common' => '2.069',
'IO::Uncompress::Adapter::Inflate' => '2.069',
'IO::Uncompress::Base' => '2.069',
'JSON::WebToken::Constants' => 'undef',
'JSON::WebToken::Exception' => 'undef',
'Module::Runtime' => '0.014',
'JSON::WebToken::Crypt' => 'undef',
'Types::Serialiser' => '1.0',
'common::sense' => '3.74',
'Authen::NTLM' => '1.09',
'HTTP::Request::Common' => '6.11',
'URI::data' => '1.71',
'URI::_idna' => '1.71',
'URI::_foreign' => '1.71',
'URI::mailto' => '1.71',
'URI::_query' => '1.71',
'URI' => '1.71',
'URI::QueryParam' => '1.71',
'URI::Split' => '1.71',
'URI::_segment' => '1.71',
'URI::file::FAT' => '1.71',
'URI::file::Mac' => '1.71',
'URI::file::OS2' => '1.71',
'URI::file::QNX' => '1.71',
'URI::ftp' => '1.71',
'URI::gopher' => '1.71',
'URI::https' => '1.71',
'URI::ldapi' => '1.71',
'URI::ldaps' => '1.71',
'URI::mms' => '1.71',
'URI::nntp' => '1.71',
'URI::pop' => '1.71',
'URI::rlogin' => '1.71',
'URI::rsync' => '1.71',
'URI::rtspu' => '1.71',
'URI::sftp' => '1.71',
'URI::sips' => '1.71',
'URI::snews' => '1.71',
'URI::telnet' => '1.71',
'URI::tn3270' => '1.71',
'URI::file::Win32' => '1.71',
'URI::file::Unix' => '1.71',
'URI::file::Base' => '1.71',
'URI::_punycode' => '1.71',
'URI::IRI' => '1.71',
'URI::ldap' => '1.71',
'URI::news' => '1.71',
'URI::ssh' => '1.71',
'URI::rtsp' => '1.71',
'URI::sip' => '1.71',
'URI::_userpass' => '1.71',
'URI::_login' => '1.71',
'URI::Heuristic' => '4.20',
'URI::_ldap' => '1.71',
'URI::_generic' => '1.71',
'URI::_server' => '1.71',
'HTTP::Status' => '6.11',
'LWP::Protocol' => '6.15',
'HTTP::Response' => '6.11',
'CPAN::Config' => 'undef',
'HTTP::Date' => '6.02',
'LWP' => '6.15',
'LWP::MediaTypes' => '6.02',
'HTTP::Request' => '6.11',
'File::Listing' => '6.04',
'HTTP::Negotiate' => '6.00',
'Net::HTTP' => '6.09',
'Net::HTTPS' => '6.09',
'Net::SSL' => '2.88',
'Net::LDAP::DSML' => '0.16',
'Net::LDAP' => '0.65',
'Net::LDAP::LDIF' => '0.26',
'Mail::Internet' => '2.13',
'HTML::HeadParser' => '3.71',
'HTTP::Config' => '6.11',
'LWP::ConnCache' => '6.15',
'HTTP::Cookies' => '6.01',
'Encode::Locale' => '1.05',
'HTTP::Headers::Util' => '6.11',
'LWP::MemberMixin' => 'undef',
'Mail::IMAPClient::MessageSet' => 'undef',
'Digest::HMAC_MD5' => '1.01',
'Authen::SASL' => '2.16',
'Authen::SASL::CRAM_MD5' => '2.14',
'Authen::SASL::EXTERNAL' => '2.14',
'Authen::SASL::Perl' => '2.14',
'Authen::SASL::Perl::ANONYMOUS' => '2.14',
'Authen::SASL::Perl::CRAM_MD5' => '2.14',
'Authen::SASL::Perl::DIGEST_MD5' => '2.14',
'Authen::SASL::Perl::EXTERNAL' => '2.14',
'Authen::SASL::Perl::GSSAPI' => '0.05',
'Authen::SASL::Perl::LOGIN' => '2.14',
'Authen::SASL::Perl::PLAIN' => '2.14',
'Mail::Address' => '2.13',
'Mail::Header' => '2.13',
'Mail::Mailer' => '2.13',
'Mail::Util' => '2.13',
'Math::Random::ISAAC::PP' => '1.003',
'Math::Random::ISAAC::XS' => '1.004',
'Compress::Raw::Zlib' => '2.069',
'Net::HTTP::Methods' => '6.09',
'Net::LDAP::Bind' => '1.05',
'Net::LDAP::Extension' => '1.04',
'Net::LDAP::RootDSE' => '0.02',
'Net::LDAP::Search' => '0.14',
'Convert::ASN1::Debug' => '0.27',
'Convert::ASN1' => '0.27',
'Net::LDAP::Schema' => '0.9908',
'Net::LDAP::ASN' => '0.12',
'Net::LDAP::Entry' => '0.27',
'Net::LDAP::Filter' => '0.20',
'Net::LDAP::Message' => '1.12',
'Net::LDAP::Constant' => '0.23',
'XML::SAX::Base' => '1.07',
'Net::LDAP::Control' => '0.18',
'Net::LDAP::Util' => '0.19',
'Net::LDAP::Intermediate' => '0.04',
'Crypt::SSLeay::MainContext' => 'undef',
'Crypt::SSLeay' => '0.73_04',
'Email::Address' => '1.908',
'Test::Builder::IO::Scalar' => '2.113',
'UNIVERSAL::can' => '1.20140328',
'UNIVERSAL::isa' => '1.20150614',
'Test::Builder' => '1.001014',
'Test::Builder::Module' => '1.001014',
'URI::file' => '4.21',
'URI::WithBase' => '2.20',
'Unicode::CharName' => '1.07',
'XML::SAX::Exception' => '1.07',
'CGI::Carp' => '4.26',
'Data::Uniqid' => '0.12',
'Digest::HMAC_SHA1' => '1.03',
'Encode::IMAPUTF7' => '1.05',
'File::Copy::Recursive' => '0.38',
'File::Tail' => '1.3',
'IO::Tee' => '0.64',
'JSON::WebToken' => '0.10',
'JSON::WebToken::Crypt::RSA' => 'undef',
'Mail::IMAPClient' => '3.38',
'Readonly' => '2.00',
'Sys::MemInfo' => '0.98',
'Term::ReadKey' => '2.33',
'Test::MockObject' => '1.20150527',
'Test::More' => '1.001014',
'Unicode::String' => '2.09',
'HTML::Entities' => '3.69',
'CGI' => '4.26',
'Crypt::OpenSSL::RSA' => '0.28',
'LWP::Authen::OAuth2' => '0.16',
'LWP::Authen::Basic' => 'undef',
'LWP::Authen::Digest' => 'undef',
'LWP::Authen::Ntlm' => '6.15',
'LWP::Authen::OAuth2::ServiceProvider::Dwolla' => 'undef',
'LWP::Authen::OAuth2::ServiceProvider::Google' => '0.02',
'LWP::Authen::OAuth2::ServiceProvider::Line' => 'undef',
'LWP::Authen::OAuth2::ServiceProvider::Line::AccessToken' => 'undef',
'LWP::Authen::OAuth2::ServiceProvider::Strava' => '0.02',
'LWP::Authen::OAuth2::ServiceProvider::Yahoo' => '0.01',
'LWP::Protocol::GHTTP' => 'undef',
'LWP::Protocol::cpan' => 'undef',
'LWP::Protocol::data' => 'undef',
'LWP::Protocol::file' => 'undef',
'LWP::Protocol::ftp' => 'undef',
'LWP::Protocol::gopher' => 'undef',
'LWP::Protocol::https' => '6.06',
'LWP::Protocol::ldapi' => 'undef',
'LWP::Protocol::ldaps' => 'undef',
'LWP::Protocol::loopback' => 'undef',
'LWP::Protocol::mailto' => 'undef',
'LWP::Protocol::nntp' => 'undef',
'LWP::UserAgent' => '6.15',
'LWP::Protocol::nogo' => 'undef',
'LWP::Authen::OAuth2::AccessToken' => '0.02',
'LWP::Authen::OAuth2::Args' => 'undef',
'JSON::XS' => '3.01',
'JSON' => '2.90',
'JSON::XS::Boolean' => 'undef',
'URI::URL' => '5.04',
'URI::http' => '1.71',
'LWP::Authen::OAuth2::ServiceProvider' => '0.02',
'LWP::Authen::OAuth2::AccessToken::Bearer' => '0.02',
'LWP::Protocol::http' => 'undef',
'IO::Socket::SSL' => '2.047',
'LWP::Protocol::ldap' => '1.25',
'IO::Socket::INET6' => '2.72',
'Regexp::Common::URI::pop' => '2016020301',
'Regexp::Common::URI::tel' => '2016020301',
'Regexp::Common::URI::ftp' => '2016020301',
'Regexp::Common::URI::fax' => '2016020301',
'Regexp::Common::URI::wais' => '2016020301',
'Regexp::Common::URI::RFC2396' => '2016020301',
'Regexp::Common::URI::prospero' => '2016020301',
'Regexp::Common::URI::tv' => '2016020301',
'Regexp::Common::URI::telnet' => '2016020301',
'Regexp::Common::profanity' => '2016020301',
'Regexp::Common::comment' => '2016020301',
'Regexp::Common::lingua' => '2016020301',
'Regexp::Common::zip' => '2016020301',
'Regexp::Common::net' => '2016020301',
'Regexp::Common::list' => '2016020301',
'Regexp::Common::URI::news' => '2016020301',
'Regexp::Common::URI::http' => '2016020301',
'Regexp::Common' => '2016020301',
'Regexp::Common::URI::RFC1808' => '2016020301',
'Regexp::Common::URI::RFC2806' => '2016020301',
'Regexp::Common::_support' => '2016020301',
'Regexp::Common::delimited' => '2016020301',
'Regexp::Common::SEN' => '2016020301',
'Regexp::Common::whitespace' => '2016020301',
'Regexp::Common::number' => '2016020301',
'Regexp::Common::balanced' => '2016020301',
'Regexp::Common::CC' => '2016020301',
'Regexp::Common::URI' => '2016020301',
'Regexp::Common::Email::Address' => '1.01',
'Regexp::Common::URI::gopher' => '2016020301',
'Regexp::Common::URI::RFC2384' => '2016020301',
'Regexp::Common::URI::RFC1738' => '2016020301',
'Regexp::Common::URI::RFC1035' => '2016020301',
'Regexp::Common::URI::file' => '2016020301',
'URI::Escape' => '3.31',

View File

@ -0,0 +1,38 @@
X-migrated-from-foo: 20100617
Delivered-To: gilles.lamiral@gmail.com
Received: by 10.216.17.5 with SMTP id i5cs170544wei;
Fri, 4 Sep 2009 21:56:09 -0700 (PDT)
Received: by 10.220.79.140 with SMTP id p12mr1652453vck.57.1252126565558;
Fri, 04 Sep 2009 21:56:05 -0700 (PDT)
Return-Path: <nicomonkey118@frontiernet.net>
Received: from mx09.roch.ny.frontiernet.net (mx09.roch.ny.frontiernet.net [66.133.183.226])
by mx.google.com with ESMTP id 7si2214072vws.26.2009.09.04.21.55.33;
Fri, 04 Sep 2009 21:56:05 -0700 (PDT)
Received-SPF: pass (google.com: domain of nicomonkey118@frontiernet.net designates 66.133.183.226 as permitted sender) client-ip=66.133.183.226;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of nicomonkey118@frontiernet.net designates 66.133.183.226 as permitted sender) smtp.mail=nicomonkey118@frontiernet.net
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AhOoAIyLoUpChbqH/2dsb2JhbACBNIpzBIQMiSaCWoYGqDWEEIpdhBYFgVeJEQI
X-Header: [4]
Received: from relay03.roch.ny.frontiernet.net ([66.133.182.166])
by mx09.roch.ny.frontiernet.net with ESMTP; 05 Sep 2009 04:55:13 +0000
Received: from cl05-zms04.roch.ny.frontiernet.net (cl05-host04.roch.ny.frontiernet.net [66.133.186.135])
by relay03.roch.ny.frontiernet.net (Postfix) with ESMTP id AC7CC10056;
Sat, 5 Sep 2009 04:55:11 +0000 (UTC)
Date: Sat, 5 Sep 2009 04:55:11 +0000 (UTC)
From: Toyota Awards <nicomonkey118@frontiernet.net>
Reply-To: Toyota Awards <toyota3@9.cn>
Message-ID: <165391284.448761252126511648.JavaMail.root@cl05-host04.roch.ny.frontiernet.net>
Subject: add_some_header_please
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-Originating-IP: [65.120.56.2]
X-Mailer: Zimbra 5.0.13_GA_2791.UBUNTU8_64 (zclient/5.0.13_GA_2791.UBUNTU8_64)
X-Authenticated-User: nicomonkey118@frontiernet.net
To: undisclosed-recipients:;
X-Virus-Scanned: ClamAV 0.94.2/9777/Fri Sep 4 22:17:01 2009 on relay03.roch.ny.frontiernet.net
X-Virus-Status: Clean
You were given 750,000.00 Pounds by the toyota global company, send Name,Address,Occupation

View File

@ -0,0 +1,38 @@
X-ImapSync-OriginalPath-tata: INBOX.yop.blanc blanc
Delivered-To: gilles.lamiral@gmail.com
Received: by 10.216.17.5 with SMTP id i5cs170544wei;
Fri, 4 Sep 2009 21:56:09 -0700 (PDT)
Received: by 10.220.79.140 with SMTP id p12mr1652453vck.57.1252126565558;
Fri, 04 Sep 2009 21:56:05 -0700 (PDT)
Return-Path: <nicomonkey118@frontiernet.net>
Received: from mx09.roch.ny.frontiernet.net (mx09.roch.ny.frontiernet.net [66.133.183.226])
by mx.google.com with ESMTP id 7si2214072vws.26.2009.09.04.21.55.33;
Fri, 04 Sep 2009 21:56:05 -0700 (PDT)
Received-SPF: pass (google.com: domain of nicomonkey118@frontiernet.net designates 66.133.183.226 as permitted sender) client-ip=66.133.183.226;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of nicomonkey118@frontiernet.net designates 66.133.183.226 as permitted sender) smtp.mail=nicomonkey118@frontiernet.net
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AhOoAIyLoUpChbqH/2dsb2JhbACBNIpzBIQMiSaCWoYGqDWEEIpdhBYFgVeJEQI
X-Header: [4]
Received: from relay03.roch.ny.frontiernet.net ([66.133.182.166])
by mx09.roch.ny.frontiernet.net with ESMTP; 05 Sep 2009 04:55:13 +0000
Received: from cl05-zms04.roch.ny.frontiernet.net (cl05-host04.roch.ny.frontiernet.net [66.133.186.135])
by relay03.roch.ny.frontiernet.net (Postfix) with ESMTP id AC7CC10056;
Sat, 5 Sep 2009 04:55:11 +0000 (UTC)
Date: Sat, 5 Sep 2009 04:55:11 +0000 (UTC)
From: Toyota Awards <nicomonkey118@frontiernet.net>
Reply-To: Toyota Awards <toyota3@9.cn>
Message-ID: <165391284.448761252126511648.JavaMail.root@cl05-host04.roch.ny.frontiernet.net>
Subject: add_some_header_please
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-Originating-IP: [65.120.56.2]
X-Mailer: Zimbra 5.0.13_GA_2791.UBUNTU8_64 (zclient/5.0.13_GA_2791.UBUNTU8_64)
X-Authenticated-User: nicomonkey118@frontiernet.net
To: undisclosed-recipients:;
X-Virus-Scanned: ClamAV 0.94.2/9777/Fri Sep 4 22:17:01 2009 on relay03.roch.ny.frontiernet.net
X-Virus-Status: Clean
You were given 750,000.00 Pounds by the toyota global company, send Name,Address,Occupation

0
W/test.bat Normal file → Executable file
View File

0
W/test2.bat Normal file → Executable file
View File

0
W/test3.bat Normal file → Executable file
View File

0
W/test3_boxon.bat Normal file → Executable file
View File

0
W/test3_gmail.bat Normal file → Executable file
View File

0
W/test3_longdir.bat Normal file → Executable file
View File

Some files were not shown because too many files have changed in this diff Show More