mirror of
https://github.com/imapsync/imapsync.git
synced 2025-06-04 19:57:21 +02:00
2.200
This commit is contained in:
parent
8e4211e86d
commit
42dd32ab62
46 changed files with 2600 additions and 1114 deletions
101
ChangeLog
101
ChangeLog
|
@ -1,17 +1,110 @@
|
|||
|
||||
RCS file: RCS/imapsync,v
|
||||
Working file: imapsync
|
||||
head: 2.178
|
||||
head: 2.200
|
||||
branch:
|
||||
locks: strict
|
||||
gilles: 2.178
|
||||
gilles: 2.200
|
||||
access list:
|
||||
symbolic names:
|
||||
keyword substitution: kv
|
||||
total revisions: 1078; selected revisions: 1078
|
||||
total revisions: 1100; selected revisions: 1100
|
||||
description:
|
||||
----------------------------
|
||||
revision 2.178 locked by: gilles;
|
||||
revision 2.200 locked by: gilles;
|
||||
date: 2022/04/04 16:05:55; author: gilles; state: Exp; lines: +14 -10
|
||||
typo. "check the certificate server" => "check the server certificate."
|
||||
----------------------------
|
||||
revision 2.199
|
||||
date: 2022/04/01 19:45:33; author: gilles; state: Exp; lines: +15 -14
|
||||
Enhancement. Added the local ip address for the imap connexions. It can help configuring firewalls to allow the imap source IP.
|
||||
----------------------------
|
||||
revision 2.198
|
||||
date: 2022/04/01 11:13:01; author: gilles; state: Exp; lines: +10 -12
|
||||
Added SERVER_NAME SERVER_ADDR SERVER_ADMIN variables and values to the output.
|
||||
----------------------------
|
||||
revision 2.197
|
||||
date: 2022/03/30 10:43:22; author: gilles; state: Exp; lines: +29 -28
|
||||
Bugfix. --tests --testslive was listing 0 folders.
|
||||
Added message "Use --noemailreport1 to avoid it" after putting the email final report in INBOX.
|
||||
----------------------------
|
||||
revision 2.196
|
||||
date: 2022/03/25 20:35:59; author: gilles; state: Exp; lines: +120 -67
|
||||
Bugfix. Dates were not displayed under Windows because POSIX::strftime %e is not portable.
|
||||
Bugfix. Several other places where dates were wrong on Windows.
|
||||
----------------------------
|
||||
revision 2.195
|
||||
date: 2022/03/24 10:00:09; author: gilles; state: Exp; lines: +26 -29
|
||||
Added warning "parsing headers of folder ... It can take time for huge folders. Be patient."
|
||||
----------------------------
|
||||
revision 2.194
|
||||
date: 2022/03/17 11:04:16; author: gilles; state: Exp; lines: +16 -15
|
||||
Bugfix. --var HTTP_COOKIE=proximapsync_runs=31 was not working because of the second =
|
||||
----------------------------
|
||||
revision 2.193
|
||||
date: 2022/03/15 11:30:02; author: gilles; state: Exp; lines: +101 -105
|
||||
Refactor. Deglobalized $debuglist $debugflags
|
||||
Refactor. Added sync->{ permanentflags2 }
|
||||
----------------------------
|
||||
revision 2.192
|
||||
date: 2022/03/11 18:26:06; author: gilles; state: Exp; lines: +88 -46
|
||||
Bugfix. Do not allow --skipcrossduplicates and --usecache. Exit EX_USAGE 64
|
||||
----------------------------
|
||||
revision 2.191
|
||||
date: 2022/03/08 10:55:21; author: gilles; state: Exp; lines: +131 -48
|
||||
Added --var to pass values from proximapsync for variables REMOTE_ADDR REMOTE_HOST HTTP_REFERER HTTP_USER_AGENT SERVER_SOFTWARE SERVER_PORT HTTP_COOKIE
|
||||
----------------------------
|
||||
revision 2.190
|
||||
date: 2022/03/01 21:48:11; author: gilles; state: Exp; lines: +31 -8
|
||||
Bugfix. Do not turn on --delete2duplicates when --syncduplicates is on, unless --delete2duplicates is given.
|
||||
----------------------------
|
||||
revision 2.189
|
||||
date: 2022/02/28 18:10:10; author: gilles; state: Exp; lines: +9 -11
|
||||
Upped ERRORS_MAX_CGI from 20 to 500
|
||||
----------------------------
|
||||
revision 2.188
|
||||
date: 2022/02/26 22:43:55; author: gilles; state: Exp; lines: +182 -100
|
||||
Refactor. Changed setlogfile() to be usable for different logs by proximapsync.
|
||||
----------------------------
|
||||
revision 2.187
|
||||
date: 2022/02/23 12:01:25; author: gilles; state: Exp; lines: +26 -7
|
||||
Documented why total sizes can differ even when the sync is perfect.
|
||||
----------------------------
|
||||
revision 2.186
|
||||
date: 2022/02/22 22:39:50; author: gilles; state: Exp; lines: +27 -21
|
||||
Bugfix. Redirect STDERR to STDOUT in all cases, --log or --nolog
|
||||
----------------------------
|
||||
revision 2.185
|
||||
date: 2022/02/11 21:36:18; author: gilles; state: Exp; lines: +19 -11
|
||||
Added option --emailreport1 and --emailreport2. On by default. Use --noemailreport1 and --noemailreport2 to avoid final emails reports in each INBOX.
|
||||
----------------------------
|
||||
revision 2.184
|
||||
date: 2022/02/10 17:37:57; author: gilles; state: Exp; lines: +91 -31
|
||||
Added final report to source account also.
|
||||
----------------------------
|
||||
revision 2.183
|
||||
date: 2022/02/06 13:14:33; author: gilles; state: Exp; lines: +29 -29
|
||||
Added folder name in the debug output of header identificators
|
||||
----------------------------
|
||||
revision 2.182
|
||||
date: 2022/02/01 20:49:51; author: gilles; state: Exp; lines: +10 -10
|
||||
Bugfix. GMT is good but the tests had to be changed also...
|
||||
----------------------------
|
||||
revision 2.181
|
||||
date: 2022/02/01 20:19:22; author: gilles; state: Exp; lines: +23 -10
|
||||
Bugfix. Use GMT in tests_email_report_message_id
|
||||
Bugfix. Make the email report w3c validated. Crazy man!
|
||||
----------------------------
|
||||
revision 2.180
|
||||
date: 2022/02/01 15:14:51; author: gilles; state: Exp; lines: +373 -30
|
||||
Enhancement. Append a final email report on account2 at the end of the synchronization. Will be optionnal soon.
|
||||
----------------------------
|
||||
revision 2.179
|
||||
date: 2022/01/26 14:32:19; author: gilles; state: Exp; lines: +134 -139
|
||||
README reread, grammarly on it.
|
||||
Added "Posta inviata" so \Sent with --automap
|
||||
----------------------------
|
||||
revision 2.178
|
||||
date: 2022/01/12 21:28:37; author: gilles; state: Exp; lines: +75 -13
|
||||
Added tests_compress_ssl()
|
||||
----------------------------
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.Admin_Authentication.txt,v 1.12 2021/02/19 13:44:18 gilles Exp gilles $
|
||||
$Id: FAQ.Admin_Authentication.txt,v 1.13 2022/04/06 10:27:52 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
|
@ -42,6 +42,7 @@ Known imap software servers supporting imap admin authentication:
|
|||
* Zimbra. See the file FAQ.Zimbra.txt
|
||||
* Kerio See the file FAQ.Kerio.txt
|
||||
* Cyrus-imap. See the file FAQ.Cyrus.txt
|
||||
* James. See the file FAQ.James.txt
|
||||
* UW-imap. See the file FAQ.General.txt
|
||||
* Sun Java Enterprise System/SunOne/iPlanet. See the file FAQ.General.txt
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.Authentication_failure.txt,v 1.14 2021/11/05 11:35:07 gilles Exp gilles $
|
||||
$Id: FAQ.Authentication_failure.txt,v 1.15 2022/03/03 11:43:55 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Admin_Authentication.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Authentication_failure.txt
|
||||
|
||||
=======================================================================
|
||||
Imapsync authentication issues
|
||||
|
|
55
FAQ.d/FAQ.Capacity_Planning.txt
Normal file
55
FAQ.d/FAQ.Capacity_Planning.txt
Normal file
|
@ -0,0 +1,55 @@
|
|||
$Id: FAQ.Capacity_Planning.txt,v 1.3 2022/03/22 11:12:25 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Capacity_Planning.txt
|
||||
|
||||
|
||||
======================================================================
|
||||
Imapsync tips for Capacity Planning.
|
||||
======================================================================
|
||||
|
||||
|
||||
I plan to go to a distributed architecture for the online service. I'm
|
||||
doing some capacity planning. Imapsync takes memory, cpu and bandwidth
|
||||
in a relatively deterministic values.
|
||||
|
||||
My current question is: Shall I use
|
||||
* N 2GB hosts
|
||||
* N/2 4GB hosts
|
||||
* N/4 8GB hosts
|
||||
|
||||
Let's do some maths
|
||||
|
||||
The CPU can be an issue. On average, an imapsync run takes 5% of the
|
||||
overall cpu time for a Intel i5-2300 with 4 cores. It implies 20
|
||||
imapsync runs is ok on the current online host before the cpus become
|
||||
the bottleneck. As a rule of thumb, imapsync takes 20% of a cpu core.
|
||||
|
||||
The RAM can be an issue. On average, an imapsync run takes 250 MB. So
|
||||
4 imapsync processes per GB is the limit before swapping to disk,
|
||||
which is a known phenomenum telling when memory becomes the bottleneck.
|
||||
16 GB allows 64 imapsync processes.
|
||||
|
||||
The Bandwidth I/O can be an issue. The "Average bandwidth rate" value
|
||||
given by imapsync at the end of a transfer, and also the bandwidth
|
||||
rate given during the sync on the ETA line, is the total size of all
|
||||
messages copied divided by the time passed. If imapsync is run between
|
||||
two foreign imap servers then the total size transferred on the
|
||||
network link is twice this value, one time when getting the message
|
||||
from host1, rx, and one time sending the message to host2, tx.
|
||||
|
||||
On average, an imapsync runs at 3 Mbps both ways, rx and tx, so 6 Mbps
|
||||
in total. So a 100 Mbps symetric link allows 33 imapsync processes
|
||||
before the link becomes the bottleneck.
|
||||
|
||||
The best minutes observed so far are a global 187 Mpbs rate (23 MiB/s)
|
||||
on a 100 Mbps symetrical link done by 28 imapsync processes in parallel,
|
||||
6.7 Mbps per process at that minute. But the best minutes observed for a
|
||||
single imapsync process is at 103 Mbps, the rx/tx link limit.
|
||||
|
||||
|
||||
The harddisk I/O can be an issue. I don't measure it yet because
|
||||
imapsync doesn't perform heavy I/0 where it runs. Well, I don't know,
|
||||
no measure is no knowledge, just guesses.
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.Contacts_Calendars.txt,v 1.15 2021/09/06 14:32:19 gilles Exp gilles $
|
||||
$Id: FAQ.Contacts_Calendars.txt,v 1.16 2022/04/05 13:48:52 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
|
@ -70,8 +70,8 @@ d) Etc. Search the web. There's also specific tools and paid services.
|
|||
|
||||
e) I plan to make tools for that but so far nothing has began
|
||||
more than this discussion:
|
||||
http://www.linux-france.org/prj/imapsync_list/msg01797.html
|
||||
http://www.linux-france.org/prj/imapsync_list/msg01811.html
|
||||
http://linux-france.tk/prj/imapsync_list/msg01797.html
|
||||
http://linux-france.tk/prj/imapsync_list/msg01811.html
|
||||
|
||||
=======================================================================
|
||||
Q. How can I avoid copying Calendar or Contacts folders?
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.David_Tobit.txt,v 1.4 2019/03/28 17:58:53 gilles Exp gilles $
|
||||
$Id: FAQ.David_Tobit.txt,v 1.5 2022/04/05 13:48:52 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
|
@ -47,8 +47,8 @@ First try above V10 solution since improvments have been made
|
|||
to support Tobit.
|
||||
|
||||
R. Look at the discussion:
|
||||
http://www.linux-france.org/prj/imapsync_list/msg00583.html
|
||||
http://www.linux-france.org/prj/imapsync_list/threads.html#00583
|
||||
http://linux-france.tk/prj/imapsync_list/msg00583.html
|
||||
http://linux-france.tk/prj/imapsync_list/threads.html#00583
|
||||
patch saved in ./patches/imapsync-1.337_tobit_V6.patch
|
||||
|
||||
=======================================================================
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
$Id: FAQ.Exchange.txt,v 1.79 2021/12/17 11:59:48 gilles Exp gilles $
|
||||
$Id: FAQ.Exchange.txt,v 1.80 2022/04/05 13:48:52 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
|
@ -288,7 +288,7 @@ and I guess it changes over time.
|
|||
R2. For Exchange, in case throttle appears anyway, fix them with:
|
||||
https://docs.microsoft.com/en-us/exchange/change-user-throttling-settings-for-specific-users-exchange-2013-help
|
||||
See also:
|
||||
http://www.linux-france.org/prj/imapsync_list/msg02072.html
|
||||
http://linux-france.tk/prj/imapsync_list/msg02072.html
|
||||
(Subject: Re: [imapsync] From Exchange to Dovecot. Speed
|
||||
Date: Mon, 03 Nov 2014 00:14:59 +0100)
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.Folders_Selection.txt,v 1.11 2020/12/31 11:41:46 gilles Exp gilles $
|
||||
$Id: FAQ.Folders_Selection.txt,v 1.12 2022/03/22 11:12:32 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
|
@ -72,9 +72,9 @@ R. From https://imapsync.lamiral.info/README
|
|||
|
||||
--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
|
||||
"Sent", "SENT" and "sent"
|
||||
on host1 only "Sent" will be synced to host2).
|
||||
similar folder is synced. Example: with folders
|
||||
"Sent", "SENT" and "sent" on host1, only "Sent"
|
||||
will be synced to host2.
|
||||
|
||||
--skipemptyfolders : Empty host1 folders are not created on host2.
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
# $Id: FAQ.General.txt,v 1.244 2021/02/19 13:38:39 gilles Exp gilles $
|
||||
# $Id: FAQ.General.txt,v 1.245 2022/04/05 13:55:47 gilles Exp gilles $
|
||||
|
||||
=======================================================================
|
||||
General FAQ for imapsync
|
||||
|
@ -372,13 +372,7 @@ Use --useuid then imapsync will avoid dealing with headers.
|
|||
=======================================================================
|
||||
Q. How can I try imapsync with latest Mail::IMAPClient 3.xx perl module?
|
||||
|
||||
Three solutions at least.
|
||||
|
||||
R1 - Look at the script named "i3" in the tarball, it can be used to
|
||||
run imapsync with the included Mail-IMAPClient-3.39/ wherever you
|
||||
unpacked the imapsync tarball
|
||||
|
||||
R2 Run:
|
||||
R1 Run:
|
||||
|
||||
cpanm Mail::IMAPClient # this uses cpanminus
|
||||
|
||||
|
@ -391,7 +385,7 @@ R2 Run:
|
|||
perl -MCPAN -e "install Mail::IMAPClient"
|
||||
|
||||
|
||||
R3 If you want to install the Perl module locally in a directory
|
||||
R2 If you want to install the Perl module locally in a directory
|
||||
|
||||
- Download latest Mail::IMAPClient 3.xx at
|
||||
http://search.cpan.org/dist/Mail-IMAPClient/
|
||||
|
@ -409,7 +403,6 @@ R3 If you want to install the Perl module locally in a directory
|
|||
or if imapsync is in directory /path/
|
||||
perl -I./Mail-IMAPClient-3.39/lib /path/imapsync ...
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How can I use imapsync with Mail::IMAPClient 2.2.9 perl module?
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.Gmail.txt,v 1.81 2021/10/06 20:21:26 gilles Exp gilles $
|
||||
$Id: FAQ.Gmail.txt,v 1.87 2022/02/10 12:42:52 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
|
@ -41,11 +41,16 @@ Q. Can not open imap connection on [imap.gmail.com]
|
|||
|
||||
Q. I want to sync the Sent folder only, what is it on Gmail?
|
||||
|
||||
Q. From Gmail to Gmail, I want to keep Categories. What can I do?
|
||||
|
||||
Q. The context is a Gmail account at the source, but not Gmail at the
|
||||
destination. I want cross-duplicates, different Gmail folders/labels
|
||||
generating duplicate messages across folders on the destination,
|
||||
except for the "All Mail" folder.
|
||||
|
||||
Q. I can't sync more than 1000 messages in each Gmail folder.
|
||||
What can I do?
|
||||
|
||||
Q. What are the Gmail imap names of the folders
|
||||
"Sent" "Trash" "Drafts" "Junk" "Flagged" and "All"?
|
||||
|
||||
|
@ -236,7 +241,7 @@ imapsync \
|
|||
--password2 gmailsecret2 \
|
||||
--gmail1 --gmail2
|
||||
|
||||
Or, replacing what does --gmail1 --gmail2 (values are from imapsync 2.155):
|
||||
Or, replacing what does --gmail1 --gmail2 (values are from imapsync 2.178):
|
||||
|
||||
imapsync \
|
||||
--host1 imap.gmail.com \
|
||||
|
@ -320,7 +325,7 @@ imapsync --host1 mail.oldhost.com \
|
|||
--password2 gmailsecret \
|
||||
--gmail2
|
||||
|
||||
Or, replacing what does --gmail2 (values are from imapsync 1.970):
|
||||
Or, replacing what does --gmail2 (values are from imapsync 2.178):
|
||||
(For Linux only because of the quotes)
|
||||
|
||||
imapsync --host1 mail.oldhost.com \
|
||||
|
@ -429,19 +434,19 @@ R. Use this example:
|
|||
imapsync \
|
||||
--user1 foo@gmail.com \
|
||||
--password1 gmailsecret \
|
||||
--host2 localhost \
|
||||
--host2 imap.example.org \
|
||||
--user2 tata \
|
||||
--password2 tatasecret \
|
||||
--gmail1
|
||||
|
||||
Or, replacing what does --gmail1 (values are from imapsync 1.970):
|
||||
Or, replacing what does --gmail1 (values are from imapsync 2.178):
|
||||
|
||||
imapsync \
|
||||
--host1 imap.gmail.com \
|
||||
--ssl1 \
|
||||
--user1 foo@gmail.com \
|
||||
--password1 gmailsecret \
|
||||
--host2 localhost \
|
||||
--host2 imap.example.org \
|
||||
--user2 tata \
|
||||
--password2 tatasecret \
|
||||
--maxbytespersecond 40_000 \
|
||||
|
@ -627,6 +632,73 @@ R2. In fact, by configuration from the user, it can be another folder
|
|||
name presented in IMAP. Use --automap --dry to see this mapping.
|
||||
See below
|
||||
|
||||
=======================================================================
|
||||
Q. From Gmail to Gmail, I want to keep Categories. What can I do?
|
||||
|
||||
R. First, read a document to learn how to play with Gmail Categories:
|
||||
https://support.google.com/mail/answer/3094499
|
||||
|
||||
Categories are not presented in IMAP in Gmail, so synchronizing them
|
||||
with imapsync requires some work.
|
||||
|
||||
Let's say I want to synchronize the category named "Updates".
|
||||
|
||||
1. Create a label "Updates_L", or name it as you want. You can't
|
||||
create a label named "Updates" like the category name because
|
||||
Gmail will refuse to create it, saying it's a reserved name.
|
||||
|
||||
2. Select all messages in the category "Updates".
|
||||
To do so, you can use the string "category:updates" in the
|
||||
search input text located at the top of the Gmail page.
|
||||
Notice the case is irrelevant to the search,
|
||||
"category:updates" equals "Category:Updates".
|
||||
|
||||
Gmail then announces "All 100 messages on this page are selected."
|
||||
It's not enough, I want all the "Updates" category messages.
|
||||
So, on the right of this statement, click on the text
|
||||
"Select all messages that match this search".
|
||||
Now Gmail announces "All messages in this search are selected."
|
||||
|
||||
3. Apply label "Updates_L" created at step 1 to all the selected
|
||||
messages. Gmail will present a warning and a
|
||||
"Confirm bulk action" button. Press "Ok".
|
||||
|
||||
4. Repeat steps 1 to 3 for each category you want to synchronize.
|
||||
|
||||
5. Transfer your mailbox to the new account with imapsync using the
|
||||
options --gmail1 --gmail2, the labels will be synchronized.
|
||||
|
||||
6. For each of the labels you made for categories, do the steps 7 to 9.
|
||||
As an example, I take the label "Updates_L" previously used.
|
||||
|
||||
7. Select all messages with the label "Updates_L".
|
||||
You can use the string "label:Updates_L" in the search input
|
||||
text located at the top of the Gmail page.
|
||||
Gmail then announces "All 100 messages on this page are selected."
|
||||
It's not enough, I want all the "updates_l" labeled messages.
|
||||
So, on the right of this statement, click on the text
|
||||
"Select all messages that match this search".
|
||||
Now Gmail announces "All messages in this search are selected."
|
||||
(does it sound similar to a previous §?)
|
||||
|
||||
8. Apply the category "Updates" to all the selected
|
||||
messages. Gmail will present a warning and a
|
||||
"Confirm bulk action" button. Press "Ok".
|
||||
If you search where are the categories: the categories are
|
||||
located with the labels, as if they were labels.
|
||||
|
||||
9. Delete the temporary label. That part is optional.
|
||||
|
||||
Maybe one day Google will make categories optionally available
|
||||
in IMAP, like any other label and this trick will be obsolete.
|
||||
Labels can be "Show in IMAP" at
|
||||
https://mail.google.com/mail/u/0/#settings/labels
|
||||
Categories are listed there but not possibly "Show in IMAP", not yet :-)
|
||||
|
||||
Thanks to Michael Leggett https://twitter.com/leggett for this
|
||||
trick. See the story at
|
||||
https://twitter.com/leggett/status/1484632316697739267?s=20
|
||||
|
||||
=======================================================================
|
||||
Q. The context is a Gmail account at the source, but not Gmail at the
|
||||
destination. I want cross-duplicates, different Gmail folders/labels
|
||||
|
@ -658,6 +730,16 @@ See https://github.com/imapsync/imapsync/pull/266
|
|||
(I refused it because well maintaining it will be very hard for me
|
||||
and I have other priorities).
|
||||
|
||||
=======================================================================
|
||||
Q. I can't sync more than 1000 messages in each Gmail folder.
|
||||
What can I do?
|
||||
|
||||
R. It's a Gmail configuration feature that someone set for your
|
||||
Gmail account. Go to
|
||||
https://mail.google.com/mail/u/0/?tab=wm#settings/fwdandpop
|
||||
and select
|
||||
"Do not limit the number of messages in an IMAP folder (default)"
|
||||
|
||||
=======================================================================
|
||||
Q. What are the Gmail imap names of the folders
|
||||
"Sent" "Trash" "Drafts" "Junk" "Flagged" and "All"?
|
||||
|
@ -715,28 +797,33 @@ which is the opposite goal of --usecache implied by --useuid.
|
|||
|
||||
|
||||
=======================================================================
|
||||
Q. Gmail does not really delete messages in folder [Gmail]/All Mail
|
||||
What happens? What can I do?
|
||||
Q. Gmail does not really delete messages in folder [Gmail]/All Mail
|
||||
What happens? What can I do?
|
||||
|
||||
R. It's true and explained in Gmail documentation at
|
||||
https://support.google.com/mail/answer/7401?hl=en
|
||||
https://support.google.com/mail/answer/7401?hl=en#zippy=%2Cempty-your-trash
|
||||
|
||||
To really remove messages in folder "[Gmail]/All Mail", they have to
|
||||
be moved to the "Trash" folder and be deleted from "Trash".
|
||||
|
||||
Quoting the link above (25 december 2018, happy christmas by the way!)
|
||||
Quoting the link above (4 february 2022)
|
||||
...
|
||||
Empty your Trash
|
||||
If you don't want a message to stay in your Trash for 30 days,
|
||||
you can permanently delete it.
|
||||
* On your computer, go to Gmail.
|
||||
* On the left side of the page, scroll down,
|
||||
then click More and then Trash.
|
||||
* Check the box next to messages you want to permanently delete,
|
||||
then click Delete forever.
|
||||
|
||||
* Note: The Delete forever option is only available in the Trash.
|
||||
You won’t be able to delete items forever from the Search result view.
|
||||
If you don't want a message to stay in your trash for 30 days,
|
||||
you can permanently delete it.
|
||||
|
||||
* On your computer, go to Gmail.
|
||||
|
||||
* On the left side of the page, click More.
|
||||
|
||||
* Scroll to Trash.
|
||||
|
||||
* Check the box next to messages you want to permanently delete.
|
||||
Then click Delete forever.
|
||||
|
||||
* Tip: The "Delete forever" option is only available in the trash.
|
||||
You won’t be able to delete items permanently from the Search result view.
|
||||
To delete all messages in your trash, click Empty Trash now.
|
||||
|
||||
|
||||
|
|
34
FAQ.d/FAQ.James.txt
Normal file
34
FAQ.d/FAQ.James.txt
Normal file
|
@ -0,0 +1,34 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.James.txt,v 1.2 2022/04/06 10:28:16 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.James.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Imapsync tips for James. Specific issues and solutions.
|
||||
=======================================================================
|
||||
|
||||
James: JAVA Apache Mail Enterprise Server
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. How to migrate to Dovecot with an admin/MasterUser account?
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to migrate to James with an admin/MasterUser account?
|
||||
|
||||
R. James supports impersonation and is setup via the administratoId key
|
||||
field stored in <install>/conf/usersrepository.conf
|
||||
|
||||
There are multiple user repository definitions, each using
|
||||
a different key:value pair to define administratorId
|
||||
|
||||
https://james.apache.org/server/config-users.html
|
||||
|
||||
(Thanks to From Rob Davis for this Q/R)
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.Kerio.txt,v 1.2 2019/11/15 11:33:14 gilles Exp gilles $
|
||||
$Id: FAQ.Kerio.txt,v 1.3 2022/04/05 13:48:52 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
|
@ -17,7 +17,7 @@ Q. How to migrate from Kerio Connect to XXX
|
|||
|
||||
R. No special options required.
|
||||
See also:
|
||||
http://www.linux-france.org/prj/imapsync_list/msg01756.html
|
||||
http://linux-france.tk/prj/imapsync_list/msg01756.html
|
||||
http://web.archive.org/web/20140224041102/https://www.safetynet-it.com/it-support/mac-kerio-server-to-microsoft-exchange-2010-migration-1/
|
||||
http://web.archive.org/web/20121125074756/http://www.safetynet-it.com/it-support/mac-kerio-server-to-microsoft-exchange-2010-migration-2/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
$Id: FAQ.Office365.txt,v 1.33 2022/01/05 11:17:21 gilles Exp gilles $
|
||||
$Id: FAQ.Office365.txt,v 1.37 2022/04/06 09:58:39 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
|
@ -112,7 +112,27 @@ d) Delete this app password when the job with imapsync is finished.
|
|||
|
||||
R3. Also, check a license is assigned to that account in Office365.
|
||||
|
||||
R4. Microsoft introduced something called "security defaults" which is enabled
|
||||
R4. From Dave Pusey
|
||||
https://github.com/imapsync/imapsync/issues/317#issuecomment-1027776418
|
||||
|
||||
I quote Dave nearly verbatim:
|
||||
|
||||
"I had created an app password, and security defaults are already off.
|
||||
|
||||
I have now figured out the issue.
|
||||
|
||||
Despite the MS365 and EXO admin centers showing that IMAP and Basic
|
||||
Auth were all enabled, it turns out that in Oct 2021, Microsoft began
|
||||
disabling basic auth for all tenants that had have never used it by
|
||||
that point. There was an item in my Message Center from that date
|
||||
saying my tenant was being done.
|
||||
|
||||
You can re-enable it for specific protocols (IMAP in this case) using
|
||||
the diagnostic process detailed at
|
||||
https://techcommunity.microsoft.com/t5/exchange-team-blog/basic-authentication-and-exchange-online-september-2021-update/bc-p/2782230
|
||||
(see the section "Limited Opt Out")
|
||||
|
||||
R5. Microsoft introduced something called "security defaults" which is enabled
|
||||
by default for new tenants. One of the rules blocks IMAP access as of imapsync.
|
||||
|
||||
The funny thing is that you can't disable a single rule of this
|
||||
|
@ -122,15 +142,15 @@ Switching the whole thing off allows the IMAP login.
|
|||
Also, disable double-step authentication on the Azure/Active Directory portal.
|
||||
See here:
|
||||
https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/concept-fundamentals-security-defaults
|
||||
Thanks to Stephan Buhre for this R4 answer.
|
||||
Thanks to Stephan Buhre for this R5 answer.
|
||||
|
||||
R5. Are there special characters in the password?
|
||||
R6. Are there special characters in the password?
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Authentication_failure.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Windows.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Unix.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Mac.txt
|
||||
|
||||
R6. Triple check the hostname then. Try all of these:
|
||||
R7. Triple check the hostname then. Try all of these:
|
||||
* outlook.office365.com
|
||||
* imap-mail.outlook.com
|
||||
* imap.outlook.com
|
||||
|
@ -570,7 +590,7 @@ Note from Yago Torres Fernandez:
|
|||
(a working command using admin/authuser on host2 Office 365)
|
||||
|
||||
imapsync ... --authuser2 user_admin@domain.com --user2 user_to_be_migrated@domain.com ^
|
||||
--password2 XXXX --ssl2 ^
|
||||
--password2 XXXX --ssl2
|
||||
|
||||
but previously in Office365, you must do something like the following, using Powershell:
|
||||
|
||||
|
@ -581,6 +601,10 @@ Note from Betsy Lawlor: You can use global modern authentication with two factor
|
|||
on Exchange Online (M365) but you must have "AllowBasicAuthImap" on
|
||||
the admin account you are using to migrate the mail.
|
||||
|
||||
Note from Guido (5 April 2022):The way I fixed it was by turning off security defaults
|
||||
https://docs.microsoft.com/nl-nl/azure/active-directory/fundamentals/concept-fundamentals-security-defaults.
|
||||
You still need to check IMAP access on an account-basis though.
|
||||
|
||||
Remark: PLAIN authentication is the only way to go with --authuser1 for now.
|
||||
So don't use --authmech1 SOMETHING with --authuser1 admin_user,
|
||||
it will not work.
|
||||
|
@ -606,7 +630,7 @@ but not for the admin. Example:
|
|||
imapsync ... --authuser2 user_admin@domain.com --user2 user_to_be_migrated
|
||||
|
||||
See also:
|
||||
http://www.linux-france.org/prj/imapsync_list/msg02203.html
|
||||
http://linux-france.tk/prj/imapsync_list/msg02203.html
|
||||
Subject: RE: [imapsync] Office 365 - 'Master User'?
|
||||
Date: Mon, 1 Jun 2015 17:53:54 +0000
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.OnlineUI.txt,v 1.31 2021/12/24 21:02:52 gilles Exp gilles $
|
||||
$Id: FAQ.OnlineUI.txt,v 1.32 2022/03/23 11:00:27 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
|
@ -12,23 +12,38 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.OnlineUI.txt
|
|||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. Can I launch several imap synchronizations on the visual
|
||||
user interface /X?
|
||||
|
||||
Q. How secure is the online visual user interface /X?
|
||||
|
||||
Q. Does the online service store any sensitive information
|
||||
like my passwords?
|
||||
like my passwords?
|
||||
|
||||
Q. I want to switch from the visual interface /X to the
|
||||
imapsync command line or to the script examples
|
||||
https://imapsync.lamiral.info/#DOC_BASIC
|
||||
What should I know?
|
||||
|
||||
Q. Shall I have issues when the browser times out?
|
||||
What happens if the browser connection is closed for whatever reason?
|
||||
What happens if the browser connection is closed for whatever reason?
|
||||
|
||||
Q. Shall I have issues when the webserver times out? What happens
|
||||
if the web server closes the connection for whatever reason?
|
||||
if the web server closes the connection for whatever reason?
|
||||
|
||||
Q. The sync stalls at the beginning, just after a line like:
|
||||
"Host1: xxx says it has CAPABILITY for AUTHENTICATE LOGIN"
|
||||
What is the problem?
|
||||
"Host1: xxx says it has CAPABILITY for AUTHENTICATE LOGIN"
|
||||
What is the problem?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
=====================================================================
|
||||
Q. Can I launch several imap synchronizations on the visual
|
||||
user interface /X?
|
||||
|
||||
R. Yes. Open several tabs/windows on your browser and fill each one
|
||||
with different credentials.
|
||||
|
||||
=====================================================================
|
||||
Q. How secure is the online visual user interface /X?
|
||||
|
||||
|
@ -114,7 +129,7 @@ started its job.
|
|||
|
||||
=====================================================================
|
||||
Q. Does the online service store any sensitive information
|
||||
like my passwords?
|
||||
like my passwords?
|
||||
|
||||
No.
|
||||
|
||||
|
@ -125,14 +140,71 @@ you click on the "Sync or resync" green button. So, if you don't want
|
|||
your browser to keep your password, enter a wrong one or empty the
|
||||
password field and click on the "Sync or resync" green button, the
|
||||
wrong password will be saved in your browser and no sync will be done,
|
||||
since a good login is mandatory to do anything on your mailboxes.
|
||||
since a correct login is mandatory to do anything on your mailboxes.
|
||||
|
||||
=====================================================================
|
||||
Q. I want to switch from the visual interface /X to the
|
||||
imapsync command line or to the script examples
|
||||
https://imapsync.lamiral.info/#DOC_BASIC
|
||||
What should I know?
|
||||
|
||||
R. Let's do some ascii art.
|
||||
The visual interface looks roughly like this, for the textfields input part:
|
||||
|
||||
+------------------------------------------+------------------------------------------+
|
||||
| IMAP source Mailbox | IMAP destination Mailbox |
|
||||
| | |
|
||||
| Login (usually an email address) | Login (usually an email address) |
|
||||
| | |
|
||||
| test1 | test2 |
|
||||
| | |
|
||||
| Password | Password |
|
||||
| | |
|
||||
| secret1 | secret2 |
|
||||
| | |
|
||||
| IMAP Server hostname (or its IP address) | IMAP Server hostname (or its IP address) |
|
||||
| | |
|
||||
| test1.lamiral.info | test2.lamiral.info |
|
||||
| | |
|
||||
+------------------------------------------+------------------------------------------+
|
||||
|
||||
Notice the 6 examples values I put in the previous "picture":
|
||||
|
||||
* test1
|
||||
* secret1
|
||||
* test1.lamiral.info
|
||||
|
||||
* test2
|
||||
* secret2
|
||||
* test2.lamiral.info
|
||||
|
||||
|
||||
The corresponding imapsync command line on Windows is:
|
||||
|
||||
imapsync.exe --host1 "test1.lamiral.info" --user1 "test1" --password1 "secret1" ^
|
||||
--host2 "test2.lamiral.info" --user2 "test2" --password2 "secret2"
|
||||
|
||||
The order of the parameters is whatever you want as long as you respect each pair
|
||||
like: --optionname "value"
|
||||
|
||||
There is no need to type this in a command prompt window, just use the example script
|
||||
https://imapsync.lamiral.info/examples/imapsync_example.bat
|
||||
|
||||
|
||||
The corresponding imapsync command line on Linux is:
|
||||
|
||||
imapsync --host1 "test1.lamiral.info" --user1 "test1" --password1 "secret1" \
|
||||
--host2 "test2.lamiral.info" --user2 "test2" --password2 "secret2"
|
||||
|
||||
There is no need to type this in a command prompt window, just use the example script
|
||||
https://imapsync.lamiral.info/examples/imapsync_example.sh
|
||||
|
||||
=====================================================================
|
||||
Q. Shall I have issues with the browser timing out?
|
||||
What happens if the browser connection is closed for whatever reason?
|
||||
What happens if the browser connection is closed for whatever reason?
|
||||
|
||||
R. A browser connection closed closes also the imapsync process,
|
||||
ie, the sync is ended right away.
|
||||
ie, the sync is ended right away.
|
||||
|
||||
Further comments on this behavior.
|
||||
|
||||
|
@ -145,7 +217,7 @@ If the Browser/WebServer connection timeouts or ends,
|
|||
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
|
||||
sending a KILL signal if it is still alive.
|
||||
sending a KILL signal if the imapsync process is still alive.
|
||||
|
||||
You can relaunch the sync with the "Sync!" button, at any time.
|
||||
If the "Sync!" button is gray/inactive then just reload
|
||||
|
@ -166,26 +238,23 @@ the logfile running the sync like a "tail -f" command (isn't that magic?).
|
|||
|
||||
=====================================================================
|
||||
Q. Shall I have issues when the webserver times out? What happens
|
||||
if the web server closes the connection for whatever reason?
|
||||
if the web server closes the connection for whatever reason?
|
||||
|
||||
R. If the webserver closes the connection then usually it also
|
||||
kills the imapsync process and the imap connections as well.
|
||||
kills the imapsync process and the imap connections as well.
|
||||
|
||||
To fix this issue, see the document INSTALL.OnlineUI.txt
|
||||
and search for "Timeout" in it.
|
||||
|
||||
Tip: If the connections close for huge folders and always after
|
||||
300 seconds or 60 seconds then it looks like a web server timeout.
|
||||
Apache 2.2 timeout is 300 seconds.
|
||||
Apache 2.4 timeout is 60 seconds.
|
||||
The current webserver timeout at
|
||||
https://imapsync.lamiral.info/X/
|
||||
is 3600 secondes, one hour.
|
||||
|
||||
=====================================================================
|
||||
Q. The sync stalls at the beginning, just after a line like:
|
||||
"Host1: xxx says it has CAPABILITY for AUTHENTICATE LOGIN"
|
||||
What is the problem?
|
||||
"Host1: xxx says it has CAPABILITY for AUTHENTICATE LOGIN"
|
||||
What is the problem?
|
||||
|
||||
R. I've seen this issue on /X with the imap server
|
||||
CommuniGate Pro IMAP Server 6.0.11
|
||||
CommuniGate Pro IMAP Server 6.0.11
|
||||
|
||||
The issue looks related to special characters in the password.
|
||||
Solution for now: change the password, keep only standard (ASCII)
|
||||
alphanumeric characters ABC-YZ abc-yz 012-89.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.POP3.txt,v 1.5 2019/07/27 20:18:37 gilles Exp gilles $
|
||||
$Id: FAQ.POP3.txt,v 1.6 2022/04/05 13:48:52 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
|
@ -24,8 +24,8 @@ 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
|
||||
http://linux-france.tk/prj/pop2imap/
|
||||
http://linux-france.tk/prj/pop2imap/README
|
||||
|
||||
R2. Yes, sometimes, because many pop3 servers runs in parallel
|
||||
with an imap server on exactly the same mailboxes. They serve
|
||||
|
@ -81,10 +81,10 @@ 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
|
||||
http://linux-france.tk/prj/imapsync_list/msg02622.html
|
||||
http://linux-france.tk/prj/imapsync_list/msg02623.html
|
||||
My reply was not very good
|
||||
http://www.linux-france.org/prj/imapsync_list/msg02624.html
|
||||
http://linux-france.tk/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 when I wrote pop2imap,
|
||||
and later when I entered the discussion.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.SSL_errors.txt,v 1.17 2021/08/01 12:49:00 gilles Exp gilles $
|
||||
$Id: FAQ.SSL_errors.txt,v 1.18 2022/01/14 21:20:37 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
|
@ -12,31 +12,52 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.SSL_errors.txt
|
|||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. What is the error
|
||||
DEBUG: .../IO/Socket/SSL.pm:1177: global error: Undefined SSL object
|
||||
|
||||
Q. What are the errors
|
||||
DEBUG: .../IO/Socket/SSL.pm:1165: local error: SSL write error
|
||||
or
|
||||
DEBUG: .../IO/Socket/SSL.pm:1088: local error: SSL read error
|
||||
DEBUG: .../IO/Socket/SSL.pm:1165: local error: SSL write error
|
||||
or
|
||||
DEBUG: .../IO/Socket/SSL.pm:1088: local error: SSL read error
|
||||
|
||||
Q. What can I do to avoid those "SSL read/write errors"?
|
||||
|
||||
Q. SSL connect attempt failed SSL
|
||||
Q. What are the errors
|
||||
SSL connect attempt failed SSL
|
||||
routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
or
|
||||
SSL connect attempt failed SSL
|
||||
SSL routines:ssl_choose_client_version:unsupported protocol
|
||||
|
||||
Q. fatal SSL error: SSL connect attempt failed with unknown error
|
||||
Q. What is the error
|
||||
fatal SSL error: SSL connect attempt failed with unknown error
|
||||
SSL wants a read first
|
||||
|
||||
Q. How to see the certificate and identify problems in it?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
======================================================================
|
||||
Q. What is the error
|
||||
DEBUG: .../IO/Socket/SSL.pm:1177: global error: Undefined SSL object
|
||||
|
||||
R. It's a fake error from the Perl Module IO::Socket::SSL
|
||||
Imapsync works well despite this fake warning but it's disturbing
|
||||
when you encounter errors due to something else, you believe it's
|
||||
the issue but no, it's something else to deal with.
|
||||
|
||||
This fake error is fixed in IO::Socket::SSL release 2.073
|
||||
https://metacpan.org/dist/IO-Socket-SSL/changes
|
||||
"fix #110 - prevent internal error warning in some cases"
|
||||
https://github.com/noxxi/p5-io-socket-ssl/issues/110
|
||||
|
||||
imapsync.exe release 2.178 uses this fixed 2.073 IO::Socket::SSL
|
||||
|
||||
======================================================================
|
||||
Q. What are the errors
|
||||
DEBUG: .../IO/Socket/SSL.pm:1165: local error: SSL write error
|
||||
or
|
||||
DEBUG: .../IO/Socket/SSL.pm:1088: local error: SSL read error
|
||||
DEBUG: .../IO/Socket/SSL.pm:1165: local error: SSL write error
|
||||
or
|
||||
DEBUG: .../IO/Socket/SSL.pm:1088: local error: SSL read error
|
||||
|
||||
|
||||
R1. As they claim, those errors are SSL errors. SSL is not directly
|
||||
|
@ -74,7 +95,8 @@ R5. Set up a ssltunnel proxy to the host.
|
|||
a ssltunnel proxy.
|
||||
|
||||
======================================================================
|
||||
Q. SSL connect attempt failed SSL
|
||||
Q. What are the errors
|
||||
SSL connect attempt failed SSL
|
||||
routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
or
|
||||
SSL connect attempt failed SSL
|
||||
|
@ -149,7 +171,8 @@ In this case setting the version
|
|||
to 'SSLv23:!SSLv2:!SSLv3:!TLSv1_1:!TLSv1_2' might help.
|
||||
|
||||
======================================================================
|
||||
Q. fatal SSL error: SSL connect attempt failed with unknown error
|
||||
Q. What is the error
|
||||
fatal SSL error: SSL connect attempt failed with unknown error
|
||||
SSL wants a read first
|
||||
|
||||
R. If you're using --ssl1 or --ssl2, try instead --tls1 or --tls2
|
||||
|
@ -201,7 +224,6 @@ ggEBAMUTJVdrTl86nDI2yO6Vz5l1qxMMPqJylQcgi9vDHpwsnUq5HGPv+qZNhM69
|
|||
...
|
||||
|
||||
|
||||
|
||||
After an complete server update ("apt update && apt upgrade && /etc/init.d/dovecot restart"):
|
||||
|
||||
echo | openssl s_client -crlf -connect test1.lamiral.info:993
|
||||
|
@ -228,6 +250,7 @@ EnRlc3QxLmxhbWlyYWwuaW5mbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
|||
ggEBANuPNbYLPMZ4vPa9NBoHAUdIXqpi0eqdXMXd2sT+qRmqxS5ihr999BHOROcr
|
||||
...
|
||||
|
||||
Champagne!
|
||||
|
||||
======================================================================
|
||||
======================================================================
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
$Id: FAQ.Two_Ways_Sync.txt,v 1.5 2021/06/10 11:21:09 gilles Exp gilles $
|
||||
$Id: FAQ.Two_Ways_Sync.txt,v 1.6 2022/02/22 15:16:16 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
|
@ -6,18 +6,9 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Two_Ways_Sync.txt
|
|||
|
||||
|
||||
=======================================================================
|
||||
Two ways sync with Imapsync
|
||||
================ Two ways sync with Imapsync =========================
|
||||
=======================================================================
|
||||
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. Can Imapsync do a good "two ways" sync?
|
||||
Short answer: no, not a good one. Why?
|
||||
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
=======================================================================
|
||||
Q. Can Imapsync do a good "two ways" sync?
|
||||
Short answer: no, not a good one. Why?
|
||||
|
@ -52,16 +43,14 @@ run a sync with the --delete2 option from A to B.
|
|||
If you know that the missing messages on A are missing messages from B
|
||||
that has to be copied to A then run a sync from B to A.
|
||||
|
||||
If you know it's a mixed scenario, some deletions/moves on A,
|
||||
and some deletions/moves on B, but not the same, then you are in
|
||||
trouble and so you end up with a not very good "two ways" sync.
|
||||
I suggest to avoid imapsync to do deletions in that case, which is
|
||||
the default imapsync behavior.
|
||||
If you know it's a mixed scenario, that there are some deletions/moves
|
||||
on A, and there are some deletions/moves on B, but not the same, then
|
||||
you are in trouble and it ends up with a not very good "two ways"
|
||||
sync. In that case, two runs of imapsync, one from A to B, one from B
|
||||
to A, put the two accounts in a synchronized state. But deletions on
|
||||
either side get cancelled and folder renamings on either side bring
|
||||
messages duplicates.
|
||||
|
||||
With a two ways sync, the account user is very surprised and
|
||||
disapointed when his actions (deletions, renamings, or movings) come
|
||||
back: the deletions are cancelled, the renamings and movings end up
|
||||
with duplicates.
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
$Id: FAQ.XOAUTH2.txt,v 1.17 2021/01/21 13:25:02 gilles Exp gilles $
|
||||
$Id: FAQ.XOAUTH2.txt,v 1.18 2022/04/05 13:48:52 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
|
@ -154,7 +154,7 @@ also called cpanminus.
|
|||
|
||||
The code and first explanation comes from Joaquin Lopez at
|
||||
https://github.com/imapsync/imapsync/pull/25
|
||||
http://www.linux-france.org/prj/imapsync_list/msg02129.html
|
||||
http://linux-france.tk/prj/imapsync_list/msg02129.html
|
||||
|
||||
Also, the binary command "openssl" is needed since it is used to
|
||||
convert the pk12 file.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
# $Id: htaccess.txt,v 1.32 2021/07/23 12:38:19 gilles Exp gilles $
|
||||
# $Id: htaccess.txt,v 1.33 2022/04/06 10:27:52 gilles Exp gilles $
|
||||
|
||||
|
||||
AddDescription "<b>Back</b> to Imapsync main page." ..
|
||||
|
@ -43,6 +43,7 @@ AddDescription "<b>Gmail</b> accounts." FAQ.Gmai
|
|||
AddDescription "<b>GoDaddy</b> accounts." FAQ.GoDaddy.txt
|
||||
AddDescription "<b>IceWarp</b> accounts." FAQ.IceWarp.txt
|
||||
AddDescription "<b>ISP tips</b>." FAQ.ISP.txt
|
||||
AddDescription "<b>James</b> accounts." FAQ.James.txt
|
||||
AddDescription "<b>Kerio</b> accounts." FAQ.Kerio.txt
|
||||
AddDescription "<b>MailEnable</b> accounts." FAQ.MailEnable.txt
|
||||
AddDescription "<b>Massive and bulk</b> migrations." FAQ.Massive.txt
|
||||
|
|
|
@ -1,24 +1,38 @@
|
|||
## Dockerfile for building a docker imapsync image
|
||||
|
||||
# $Id: Dockerfile,v 1.38 2021/11/29 10:20:56 gilles Exp gilles $
|
||||
# $Id: Dockerfile,v 1.42 2022/04/04 19:16:50 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
|
||||
#
|
||||
# This Dockerfile build an image with two imapsync
|
||||
# 1) One comes from https://imapsync.lamiral.info/imapsync
|
||||
# and goes to /usr/bin/imapsync in the Docker image
|
||||
# It is used with the command:
|
||||
#
|
||||
# docker run gilleslamiral/imapsync imapsync ...
|
||||
#
|
||||
# 2) One comes from the local file ./imapsync
|
||||
# and goes to /imapsync in the Docker image
|
||||
# It is used with the command:
|
||||
#
|
||||
# docker run gilleslamiral/imapsync /imapsync ...
|
||||
|
||||
|
||||
# I thank you very much
|
||||
# I like thanks
|
||||
# I like stars
|
||||
# I also need money to keep on doing this stuff
|
||||
# I like money to keep on doing this stuff
|
||||
|
||||
# Number of imapsync images pulled so far (2021_11_29): 608326
|
||||
# Number of imapsync images pulled so far (2022_04_04): 673551
|
||||
# Command used:
|
||||
# curl -s https://hub.docker.com/v2/repositories/gilleslamiral/imapsync/ | jq '.pull_count'
|
||||
|
||||
# Debian Buster is Debian 10
|
||||
# Debian Bullseye is Debian 11
|
||||
|
||||
FROM debian:buster
|
||||
FROM debian:bullseye
|
||||
|
||||
LABEL maintainer="Gilles LAMIRAL <gilles@lamiral.info>" \
|
||||
description="Imapsync" \
|
||||
|
@ -30,8 +44,6 @@ LABEL maintainer="Gilles LAMIRAL <gilles@lamiral.info>" \
|
|||
|
||||
COPY Dockerfile imapsyn[c] prerequisites_imapsyn[c] /
|
||||
|
||||
|
||||
|
||||
RUN set -xe && \
|
||||
apt-get update \
|
||||
&& apt-get install -y \
|
||||
|
@ -69,7 +81,11 @@ RUN set -xe && \
|
|||
ncat \
|
||||
openssl \
|
||||
ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& cpanm IO::Socket::SSL
|
||||
|
||||
# I added the IO::Socket::SSL update to avoid the annoying, confusing and useless warning
|
||||
# DEBUG: .../IO/Socket/SSL.pm:1177: global error: Undefined SSL object
|
||||
|
||||
RUN set -xe \
|
||||
&& cd /usr/bin/ \
|
||||
|
@ -78,7 +94,7 @@ RUN set -xe \
|
|||
https://imapsync.lamiral.info/prerequisites_imapsync \
|
||||
https://raw.githubusercontent.com/google/gmail-oauth2-tools/master/python/oauth2.py \
|
||||
&& chmod +x imapsync oauth2.py \
|
||||
&& /usr/bin/imapsync --testslive && /usr/bin/imapsync --tests # just_a_comment_to_force_update 2021_11_29_11_20_56
|
||||
&& /usr/bin/imapsync --testslive && /usr/bin/imapsync --tests # just_a_comment_to_force_update 2022_04_04_21_16_50
|
||||
|
||||
USER nobody:nogroup
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
# $Id: INSTALL.Centos.txt,v 1.29 2021/12/17 14:52:20 gilles Exp gilles $
|
||||
# $Id: INSTALL.Centos.txt,v 1.31 2022/02/19 20:28:13 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
|
@ -24,6 +24,29 @@ How to install imapsync on AlmaLinux and Centos 8:
|
|||
imapsync --testslive
|
||||
|
||||
|
||||
For Centos 8 End Of Life fix:
|
||||
https://www.centos.org/centos-linux-eol/
|
||||
|
||||
If you encounter the error
|
||||
"Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist"
|
||||
|
||||
Do this:
|
||||
|
||||
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-*
|
||||
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-*
|
||||
dnf update
|
||||
|
||||
To upgrade to CentOS stream:
|
||||
|
||||
dnf install centos-release-stream
|
||||
dnf swap centos-{linux,stream}-repos
|
||||
dnf distro-sync
|
||||
|
||||
Taken from
|
||||
https://stackoverflow.com/questions/70926799/centos-through-vm-no-urls-in-mirrorlist
|
||||
|
||||
and tested successfuly on one of my hosts, an ex-Centos8/CentOS-stream now.
|
||||
|
||||
=======================================================================
|
||||
AlmaLinux and Centos 8 and latest imapsync
|
||||
=======================================================================
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
# $Id: INSTALL.Darwin.txt,v 1.36 2021/12/24 21:08:13 gilles Exp gilles $
|
||||
# $Id: INSTALL.Darwin.txt,v 1.38 2022/04/05 19:44:30 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
|
@ -20,21 +20,20 @@ E) Building imapsync binary on Darwin / Mac OS X
|
|||
A) Installing imapsync binary on Darwin / Mac OS X
|
||||
=======================================================================
|
||||
|
||||
|
||||
There is a standalone imapsync binary for Mac OS X
|
||||
called "imapsync_bin_Darwin" (without the quotes),
|
||||
available in the compressed tarball called imapsync-2.140.tgz
|
||||
where 2.140 is the imapsync version number.
|
||||
available in the compressed tarball called imapsync-2.200.tgz
|
||||
where 2.200 is the imapsync version number.
|
||||
|
||||
In case you haven't buy it yet or forgot where the download link is,
|
||||
check https://imapsync.lamiral.info/dist/
|
||||
|
||||
Download the tarball imapsync-2.140.tgz, not the binary imapsync_bin_Darwin
|
||||
Download the tarball imapsync-2.200.tgz, not the binary imapsync_bin_Darwin
|
||||
because the binary is also in the tarball and there are other useful files
|
||||
in the tarball. The binary present in /dist/ is just there for a fast upgrade
|
||||
when you need one.
|
||||
|
||||
I suppose this tarball imapsync-2.140.tgz is downloaded under your $HOME directory,
|
||||
I suppose this tarball imapsync-2.200.tgz is downloaded under your $HOME directory,
|
||||
let say /Users/gilles/, but you can put it anywhere. In real, your $HOME directory
|
||||
is not /Users/gilles/, it maybe /Users/john/ or /Users/zoey/ where John or Zoey
|
||||
is you login name.
|
||||
|
@ -45,19 +44,19 @@ Untar the tarball:
|
|||
|
||||
cd
|
||||
pwd
|
||||
tar xzvf imapsync-2.140.tgz
|
||||
tar xzvf imapsync-2.200.tgz
|
||||
|
||||
In case the previous command fails, it means the tarball file called imapsync-2.140.tgz
|
||||
In case the previous command fails, it means the tarball file called imapsync-2.200.tgz
|
||||
is not in your $HOME directory, you may have downloaded it elsewhere on the file system.
|
||||
A way to find it is the command:
|
||||
|
||||
find / | grep imapsync
|
||||
|
||||
|
||||
Now that the tarball is extracted, it created a directory called imapsync-2.140/
|
||||
Go into the directory imapsync-2.140 with the command:
|
||||
Now that the tarball is extracted, it created a directory called imapsync-2.200/
|
||||
Go into the directory imapsync-2.200 with the command:
|
||||
|
||||
cd imapsync-2.140
|
||||
cd imapsync-2.200
|
||||
|
||||
|
||||
First let's have a simple run to see if imapsync_bin_Darwin works.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
# $Id: INSTALL.Debian.txt,v 1.35 2021/12/17 20:30:33 gilles Exp gilles $
|
||||
# $Id: INSTALL.Debian.txt,v 1.37 2022/03/29 11:03:55 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
|
@ -8,7 +8,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Debian.txt
|
|||
|
||||
There is four install sections in this document,
|
||||
1) one for Debian 9 Stretch, Debian 10 Buster, Debian 11 Bullseye
|
||||
2) one for all the Debian called "After installing the dependencies"
|
||||
2) one for all the Debian, called "After installing the dependencies".
|
||||
3) one for Debian 8 Jessie (obsolete)
|
||||
4) one for Debian 7 Wheezy (even more obsolete)
|
||||
|
||||
|
@ -110,7 +110,7 @@ You don't have to be root to test and use imapsync.
|
|||
|
||||
Take imapsync either on github:
|
||||
|
||||
wget -N https://github.com/imapsync/imapsync/blob/master/imapsync
|
||||
wget -N https://raw.githubusercontent.com/imapsync/imapsync/master/imapsync
|
||||
|
||||
or be on the cutting edge with the upstream site:
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
# $Id: INSTALL.Docker_build.txt,v 1.15 2021/11/29 11:56:11 gilles Exp gilles $
|
||||
# $Id: INSTALL.Docker_build.txt,v 1.16 2022/04/05 13:20:24 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
|
@ -14,25 +14,39 @@ Nearly verbatim copy from https://imapsync.lamiral.info/INSTALL.d/Dockerfile
|
|||
|
||||
## Dockerfile for building a docker imapsync image
|
||||
|
||||
# Id: Dockerfile,v 1.38 2021/11/29 10:20:56 gilles Exp gilles $
|
||||
# Id: Dockerfile,v 1.42 2022/04/04 19:16:50 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
|
||||
#
|
||||
# This Dockerfile build an image with two imapsync
|
||||
# 1) One comes from https://imapsync.lamiral.info/imapsync
|
||||
# and goes to /usr/bin/imapsync in the Docker image
|
||||
# It is used with the command:
|
||||
#
|
||||
# docker run gilleslamiral/imapsync imapsync ...
|
||||
#
|
||||
# 2) One comes from the local file ./imapsync
|
||||
# and goes to /imapsync in the Docker image
|
||||
# It is used with the command:
|
||||
#
|
||||
# docker run gilleslamiral/imapsync /imapsync ...
|
||||
|
||||
|
||||
# I thank you very much
|
||||
# I like thanks
|
||||
# I like stars
|
||||
# I also need money to keep on doing this stuff
|
||||
# I like money to keep on doing this stuff
|
||||
|
||||
# Number of imapsync images pulled so far (2021_11_29): 608326
|
||||
# Number of imapsync images pulled so far (2022_04_04): 673551
|
||||
# Command used:
|
||||
# curl -s https://hub.docker.com/v2/repositories/gilleslamiral/imapsync/ | jq '.pull_count'
|
||||
|
||||
# Debian Buster is Debian 10
|
||||
# Debian Bullseye is Debian 11
|
||||
|
||||
FROM debian:buster
|
||||
FROM debian:bullseye
|
||||
|
||||
LABEL maintainer="Gilles LAMIRAL <gilles@lamiral.info>" \
|
||||
description="Imapsync" \
|
||||
|
@ -44,8 +58,6 @@ LABEL maintainer="Gilles LAMIRAL <gilles@lamiral.info>" \
|
|||
|
||||
COPY Dockerfile imapsyn[c] prerequisites_imapsyn[c] /
|
||||
|
||||
|
||||
|
||||
RUN set -xe && \
|
||||
apt-get update \
|
||||
&& apt-get install -y \
|
||||
|
@ -83,7 +95,11 @@ RUN set -xe && \
|
|||
ncat \
|
||||
openssl \
|
||||
ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& cpanm IO::Socket::SSL
|
||||
|
||||
# I added the IO::Socket::SSL update to avoid the annoying, confusing and useless warning
|
||||
# DEBUG: .../IO/Socket/SSL.pm:1177: global error: Undefined SSL object
|
||||
|
||||
RUN set -xe \
|
||||
&& cd /usr/bin/ \
|
||||
|
@ -92,7 +108,7 @@ RUN set -xe \
|
|||
https://imapsync.lamiral.info/prerequisites_imapsync \
|
||||
https://raw.githubusercontent.com/google/gmail-oauth2-tools/master/python/oauth2.py \
|
||||
&& chmod +x imapsync oauth2.py \
|
||||
&& /usr/bin/imapsync --testslive && /usr/bin/imapsync --tests # just_a_comment_to_force_update 2021_11_29_11_20_56
|
||||
&& /usr/bin/imapsync --testslive && /usr/bin/imapsync --tests # just_a_comment_to_force_update 2022_04_04_21_16_50
|
||||
|
||||
USER nobody:nogroup
|
||||
|
||||
|
@ -107,7 +123,5 @@ CMD ["/usr/bin/imapsync"]
|
|||
#
|
||||
# End of imapsync Dockerfile
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
# $Id: INSTALL.OnlineUI.txt,v 1.50 2021/09/20 13:47:20 gilles Exp gilles $
|
||||
# $Id: INSTALL.OnlineUI.txt,v 1.52 2022/03/23 11:02:05 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
|
@ -26,26 +26,25 @@ 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. I have received demands
|
||||
to run it on the Ngnix HTTP server but I haven't played with it yet.
|
||||
Linux is also a preferred platform (I run /X service on Linux and FreeBSD).
|
||||
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. I have received demands to run it on the Ngnix HTTP server but
|
||||
I haven't played with it yet. Linux is also a preferred platform (I
|
||||
run /X service on Linux and FreeBSD).
|
||||
|
||||
I have tested this visual interface on Mac. It works.
|
||||
For now, it demands some skills few Mac users have.
|
||||
Drop me a note in case you want to do that.
|
||||
I have tested this visual interface on Mac. It works. For now, it
|
||||
demands some skills few Mac users have. Drop me a note in case you
|
||||
want to do that.
|
||||
|
||||
I have tested this visual interface on Windows,
|
||||
it fails on Windows because of some hardcoded Unix paths.
|
||||
I'm working on it to be Windows ok but it's not done yet (May 2020).
|
||||
I have tested this visual interface on Windows, it fails on Windows
|
||||
because of some hardcoded Unix paths. I'm working on it to be Windows
|
||||
ok but it's not done yet (May 2020).
|
||||
|
||||
Some users have successfully installed a /X visual interface
|
||||
on Windows using a Linux VM machine.
|
||||
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:
|
||||
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://imapsync.lamiral.info/X/imapsync_form_extra.html
|
||||
* https://imapsync.lamiral.info/X/imapsync_form.css
|
||||
|
@ -53,29 +52,28 @@ a logo image:
|
|||
* https://imapsync.lamiral.info/X/logo_imapsync_Xn.png
|
||||
|
||||
|
||||
You can do a "view source" to see the HTML file as
|
||||
it is written, and a "save" to get it locally.
|
||||
The three other files can be saved the same way or
|
||||
with a command named "wget". I suggest using wget,
|
||||
see below the ready-to-use command lines.
|
||||
You can do a "view source" to see the HTML file as it is written, and
|
||||
a "save" to get it locally. The three other files can be saved the
|
||||
same way or with a command named "wget". I strongly suggest using
|
||||
wget, see below the ready-to-use command lines.
|
||||
|
||||
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_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_extra.html)
|
||||
src="imapsync_form.js" (near the end of imapsync_form_extra.html)
|
||||
I let you change the image logo as an exercise, it's safe if you fail.
|
||||
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_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_extra.html) src="imapsync_form.js"
|
||||
(near the end of imapsync_form_extra.html) I let you change 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
|
||||
needed for the sync.
|
||||
The actual imap syncing work is done by imapsync acting as a CGI, the
|
||||
visual interface is only there to give imapsync the parameters needed
|
||||
for the sync.
|
||||
|
||||
Use at least Perl module CGI.pm release 4.08 (2014-10-18)
|
||||
to avoid the bug "Undefined subroutine CGI::multi_param".
|
||||
You can use the command named cpanm to upgrade CGI.pm to
|
||||
its last version, it's the easiest way.
|
||||
Use at least Perl module CGI.pm release 4.08 (2014-10-18) to avoid the
|
||||
bug "Undefined subroutine CGI::multi_param". You can use the command
|
||||
named cpanm to upgrade CGI.pm to its last version, it's the easiest
|
||||
way.
|
||||
|
||||
Print the CGI.pm release with:
|
||||
|
||||
|
@ -85,8 +83,12 @@ 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 too.
|
||||
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 too. Ok, here
|
||||
is a way:
|
||||
|
||||
apt remove libcgi-pm-perl # for the Debian family
|
||||
dnf remove perl-CGI # for the Centos family
|
||||
|
||||
To check and fix the Perl modules dependencies, run:
|
||||
|
||||
|
@ -94,50 +96,59 @@ To check and fix the Perl modules dependencies, run:
|
|||
wget -N https://imapsync.lamiral.info/prerequisites_imapsync
|
||||
sh prerequisites_imapsync
|
||||
|
||||
To make imapsync work as a CGI script, there are two conditions.
|
||||
First, imapsync has to work by itself on the web host.
|
||||
To make imapsync work as a CGI script, there are three conditions.
|
||||
|
||||
If imapsync doesn't work by itself, as a command line,
|
||||
then it won't work as a CGI script.
|
||||
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
|
||||
script.
|
||||
|
||||
Second, imapsync has to work by itself on the web host using
|
||||
the Unix user running the webserver. Detailed examples to
|
||||
verify that will be provided further in this document.
|
||||
Second, imapsync has to work by itself on the web host using the Unix
|
||||
user running the webserver.
|
||||
|
||||
Third, the file imapsync has to be considered as a cgi script.
|
||||
|
||||
Command lines to provide and verify those three conditions will be
|
||||
provided further in this document, for the Debian family systems and
|
||||
for the Centos family systems. You are strongly advised to follow this
|
||||
commands if need and want help from me because I will first ask you to
|
||||
run them before searching what you did wrong.
|
||||
|
||||
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
|
||||
The very latest and relatively stable imapsync is
|
||||
https://imapsync.lamiral.info/imapsync
|
||||
This file is the program file used verbatim for the service given at
|
||||
https://imapsync.lamiral.info/X/
|
||||
|
||||
Copy the three files imapsync_form.* on a directory that is exported
|
||||
Copy the three files imapsync_form.* on a directory that is exported
|
||||
by your HTTP server.
|
||||
|
||||
Copy the imapsync script on the cgi-bin/ directory
|
||||
allowing CGIs and you'll have your imapsync visual interface
|
||||
and service. The cgi-bin/ directory is usually outside the
|
||||
hierarchy exported to anybody by the HTTP server.
|
||||
|
||||
The default Apache 2.4 timeout is 60 seconds, one minute, 300 for older Apache.
|
||||
The default Apache 2.4 timeout is 60 seconds, one minute, and 300
|
||||
secondes for older Apache, 5 minutes. See
|
||||
https://httpd.apache.org/docs/2.4/mod/core.html#timeout
|
||||
Mine is now "Timeout 3600", 3600 seconds, an hour. I chose this huge
|
||||
timeout value because imapsync can spend a long time without talking while
|
||||
getting the headers of huge folders of 100k messages.
|
||||
If you intend to offer this service for huge mailboxes or for a long
|
||||
time, I strongly recommand you to set this "Timeout 3600" in
|
||||
the Apache configuration right now because you will sure end up with this
|
||||
timeout issue in a few months.
|
||||
Search for timeouts in the Apache error log to see if you have timeout issues.
|
||||
|
||||
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 don't know very much any of the
|
||||
Linux distributions. I add that if you don't know very much any
|
||||
of the Linux distributions then you shouldn't install this
|
||||
imapsync service at all.
|
||||
I use "Timeout 3600", 3600 seconds, an hour. I chose this huge timeout
|
||||
value because imapsync can spend a long time without talking while
|
||||
getting the headers of huge folders of 100k messages. If you intend
|
||||
to offer this service for huge mailboxes or for a long time, I
|
||||
strongly recommand you to set this "Timeout 3600" in the Apache
|
||||
configuration right now because you will sure end up with this timeout
|
||||
issue in a few months. You can search for timeouts in the Apache error
|
||||
log to see if you have timeout issues.
|
||||
|
||||
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
|
||||
don't know very much any Linux distribution. But I have to add that if
|
||||
you don't know very much the Linux distribution you use, then you
|
||||
shouldn't install this imapsync service at all.
|
||||
|
||||
|
||||
=============================================================================
|
||||
|
@ -175,7 +186,18 @@ ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
|
|||
Require all granted
|
||||
</Directory>
|
||||
|
||||
That's all for the Apache configuration side.
|
||||
In recent Debian distributions you can activate this cgi
|
||||
stuff with the following commands:
|
||||
|
||||
a2enmod cgi
|
||||
a2enconf serve-cgi-bin
|
||||
/etc/init.d/apache2 reload
|
||||
|
||||
If the cgi mode and the cgi-bin configuration are not activated then
|
||||
you may encounter a 404 error when, later, you will run the command
|
||||
wget -nv -S -O- http://localhost/cgi-bin/imapsync?testslive=1
|
||||
|
||||
That's all for the Apache Debian family configuration side.
|
||||
|
||||
Now get, test, and install the latest imapsync:
|
||||
|
||||
|
@ -189,33 +211,38 @@ Now get, test, and install the latest imapsync:
|
|||
|
||||
cp imapsync /usr/lib/cgi-bin/
|
||||
|
||||
Assuming that the Unix account running Apache is www-data,
|
||||
check that it will work under Apache with this command:
|
||||
Assuming that the Unix account running Apache is www-data, check that
|
||||
it will work under Apache with this command:
|
||||
|
||||
su -s /bin/sh -c 'SERVER_SOFTWARE=foo /usr/lib/cgi-bin/imapsync' www-data
|
||||
|
||||
Test that imapsync is considered a cgi with:
|
||||
|
||||
wget -nv -S -O- http://localhost/cgi-bin/imapsync?testslive=1
|
||||
|
||||
The last command should print something like:
|
||||
Status: 200 OK to sync IMAP boxes. Load on bar is ...
|
||||
...
|
||||
|
||||
If you get a 404 here then review the cgi installation and
|
||||
configuration part.
|
||||
|
||||
|
||||
You can also verify that the webserver is not buffering its output with the
|
||||
command:
|
||||
|
||||
wget -nv -S -O- 'http://localhost/cgi-bin/imapsync?testslive=1&simulong=10'
|
||||
|
||||
You should get the output as time goes on. If you don't get the
|
||||
output as time goes on, ie you see no output then all output
|
||||
at once, it means the webserver is buffering. Fix it with
|
||||
the "SetEnv no-gzip 1" described above.
|
||||
You should get the output as time goes on. If you don't get the output
|
||||
as time goes on, ie you see no output then all output at once, it
|
||||
means the webserver is buffering. Fix it with the "SetEnv no-gzip 1"
|
||||
described above.
|
||||
|
||||
|
||||
The UI front-end file place on the server disk in
|
||||
this example is
|
||||
The UI front-end file place on the server disk in this example is
|
||||
/var/www/html/X/imapsync_form_extra.html
|
||||
but it can be placed anywhere on the disk, the important
|
||||
thing is that it has to be served by the webserver.
|
||||
but it can be placed anywhere on the disk, the important thing is that
|
||||
it has to be served by the webserver.
|
||||
|
||||
mkdir /var/www/html/X/
|
||||
cd /var/www/html/X/
|
||||
|
@ -228,9 +255,8 @@ thing is that it has to be served by the webserver.
|
|||
|
||||
The imapsync process working directory in cgi mode is
|
||||
/var/tmp/imapsync_cgi/
|
||||
it is not configurable unless changing it in
|
||||
imapsync directly, it is hard-coded in imapsync.
|
||||
In this directory will go the log files and
|
||||
it is not configurable unless changing it in imapsync directly, it is
|
||||
hard-coded in imapsync. In this directory will go the log files and
|
||||
the pid files.
|
||||
|
||||
Check
|
||||
|
@ -238,14 +264,14 @@ Check
|
|||
or the safer
|
||||
https://yourhost/X/imapsync_form_extra.html
|
||||
|
||||
That's all for installing a /X service on Debian.
|
||||
That's all for installing a /X service on a Debian family system.
|
||||
|
||||
=============================================================================
|
||||
B) Here is a concrete example on a Centos 7 server with the Apache
|
||||
webserver httpd:
|
||||
|
||||
First, follow and apply the section "Centos 7 and latest imapsync"
|
||||
at https://imapsync.lamiral.info/INSTALL.d/INSTALL.Centos.txt
|
||||
First, follow and apply the section "Centos 7 and latest imapsync" at
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Centos.txt
|
||||
|
||||
Then:
|
||||
|
||||
|
@ -291,14 +317,14 @@ The last command should print something like:
|
|||
Status: 200 OK to sync IMAP boxes. Load on bar is ...
|
||||
...
|
||||
|
||||
You can also verify that the webserver is not buffering its output with the
|
||||
command:
|
||||
You can also verify that the webserver is not buffering its output
|
||||
with the command:
|
||||
|
||||
wget -nv -S -O- 'http://localhost/cgi-bin/imapsync?testslive=1&simulong=10'
|
||||
|
||||
You should get the output as time goes on. If you don't, no output then all
|
||||
output at once, it means the webserver is buffering. Fix it with
|
||||
the "SetEnv no-gzip 1" described above.
|
||||
You should get the output as time goes on. If you don't, no output
|
||||
then all output at once, it means the webserver is buffering. Fix it
|
||||
with the "SetEnv no-gzip 1" described above.
|
||||
|
||||
Now check
|
||||
http://yourhost/X/imapsync_form_extra.html
|
||||
|
@ -310,17 +336,19 @@ That's all for installing a /X service on Centos 7.
|
|||
|
||||
B bis) How about Centos 8?
|
||||
|
||||
Follow the procedure for Centos 7. While imapsync is ok on the command line,
|
||||
you will encounter some permission denied in the CGI context. Something like:
|
||||
Follow the procedure for Centos 7. While imapsync is ok on the command
|
||||
line, you will encounter some permission denied in the CGI
|
||||
context. Something like:
|
||||
|
||||
wget -nv -S -O- http://localhost/cgi-bin/imapsync?testslive=1
|
||||
...
|
||||
Host1 failure: can not open imap connection on host1 [test1.lamiral.info]
|
||||
with user [test1]: Unable to connect to test1.lamiral.info: Permission denied
|
||||
Host1 failure: can not open imap connection on host1
|
||||
[test1.lamiral.info] with user [test1]: Unable to connect to
|
||||
test1.lamiral.info: Permission denied
|
||||
|
||||
The issue might come from SELinux. I haven't dig into SELinux enough to give
|
||||
you the commands that will allow imapsync online and only it while maintaining
|
||||
SELinux in enforcing mode.
|
||||
The issue might come from SELinux. I haven't dig into SELinux enough
|
||||
to give you the commands that will allow imapsync online and only it
|
||||
while maintaining SELinux in enforcing mode.
|
||||
|
||||
Quick solution:
|
||||
|
||||
|
@ -336,36 +364,21 @@ To go back to the previous state:
|
|||
|
||||
Nota bene
|
||||
=========
|
||||
You may also want to avoid being placed by systemd in
|
||||
a directory like (where xxx are crypto hash characters):
|
||||
|
||||
You may also want to avoid being placed by systemd in a directory like
|
||||
(where xxx are crypto hash characters):
|
||||
|
||||
/var/tmp/systemd-private-xxx-httpd.service-xxx/tmp/
|
||||
|
||||
In that case, edit the file
|
||||
In that case, see the Troubleshooting section below.
|
||||
|
||||
/usr/lib/systemd/system/httpd.service
|
||||
|
||||
and in it, replace the line
|
||||
|
||||
PrivateTmp=true
|
||||
|
||||
by the line
|
||||
|
||||
PrivateTmp=false
|
||||
|
||||
then reload systemd and restart httpd with the commands:
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl restart httpd
|
||||
systemctl status httpd
|
||||
|
||||
|
||||
=======================================================================
|
||||
=================== Bandwidth statistics ==========================
|
||||
=======================================================================
|
||||
|
||||
If you want the bandwidth statistics like the ones at the bottom
|
||||
of the page and following the image link, more detailed at
|
||||
If you want the bandwidth statistics like the ones at the bottom of
|
||||
the page and following the image link, more detailed at
|
||||
https://imapsync.lamiral.info/vnstat/vnstati.html
|
||||
|
||||
Those stats are generated by vnstat
|
||||
|
@ -392,39 +405,50 @@ vnstati -5 -o /var/www/vnstat/vnstat_5.png
|
|||
|
||||
The log says the temporary directory is
|
||||
/var/tmp/imapsync_cgi/
|
||||
but it is not in the system.
|
||||
but this directory is not in the system. What a mystery!
|
||||
|
||||
It may be that the apache or httpd service is run by systemd with a jailed
|
||||
temporary directory.
|
||||
It may be that the apache or httpd service is run by systemd with a
|
||||
jailed temporary directory.
|
||||
|
||||
Solution:
|
||||
|
||||
find /etc/systemd/ /usr/lib/systemd/ |xargs grep -s PrivateTmp
|
||||
find /etc/systemd/ /usr/lib/systemd/ | xargs grep -s PrivateTmp
|
||||
|
||||
If systemd jails Apache then you'll find a line like:
|
||||
If systemd jails Apache, then you'll find a line like:
|
||||
/etc/systemd/system/multi-user.target.wants/apache2.service:PrivateTmp=true
|
||||
(Debian/Ubuntu)
|
||||
or
|
||||
/usr/lib/systemd/system/httpd.service:PrivateTmp=true
|
||||
(Centos)
|
||||
|
||||
Replace this line "PrivateTmp=true"
|
||||
in /etc/systemd/system/multi-user.target.wants/apache2.service
|
||||
The goal is to override the line
|
||||
|
||||
PrivateTmp=true
|
||||
|
||||
found in /etc/systemd/system/multi-user.target.wants/apache2.service
|
||||
or
|
||||
/usr/lib/systemd/system/httpd.service
|
||||
|
||||
with:
|
||||
with the line:
|
||||
|
||||
PrivateTmp=false
|
||||
|
||||
Then reload the systemd daemon and restart the apache2 service
|
||||
The right way to do it is by using the "systemctl edit ..." command
|
||||
and then reload the systemd daemon and restart the apache2 service.
|
||||
You can also edit directly the file override.conf if you know where
|
||||
to do it. If you don't use the override.conf mechanism then your change will
|
||||
be canceled the next time the apache package is updated.
|
||||
|
||||
Debian:
|
||||
systemctl edit apache2
|
||||
cat /etc/systemd/system/apache2.service.d/override.conf
|
||||
systemctl daemon-reload
|
||||
systemctl restart apache2
|
||||
systemctl status apache2
|
||||
|
||||
Centos:
|
||||
systemctl edit httpd
|
||||
cat /etc/systemd/system/httpd.service.d/override.conf
|
||||
systemctl daemon-reload
|
||||
systemctl restart httpd
|
||||
systemctl status httpd
|
||||
|
@ -461,6 +485,7 @@ So if your https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js
|
|||
is not what it should be, your access looks compromised.
|
||||
|
||||
Thanks to Dominik Ulrich for this insight!
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
|
@ -487,11 +512,11 @@ Debian:
|
|||
chmod +x imapsync_shell_wrapper
|
||||
cp imapsync_shell_wrapper /usr/lib/cgi-bin/
|
||||
|
||||
Normally, you only have to change the script imapsync_shell_wrapper
|
||||
to suit your needs.
|
||||
Normally, you only have to change the script imapsync_shell_wrapper to
|
||||
suit your needs.
|
||||
|
||||
Have in mind that the abort button will kill only one imapsync so
|
||||
it is not a working button in case of successive imapsync runs.
|
||||
Have in mind that the abort button will kill only one imapsync so it
|
||||
is not a working button in case of successive imapsync runs.
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
@ -500,13 +525,12 @@ it is not a working button in case of successive imapsync runs.
|
|||
====== mod_perl failure ======
|
||||
|
||||
This part is for mod_perl experts only.
|
||||
The script imapsync doesn't work under Modperl::Registry
|
||||
nor under ModPerl::PerlRun. So read on if you think you
|
||||
are better than me.
|
||||
|
||||
I tried the standard way, telling how any cgi Perl script
|
||||
can be run under mod_perl perlrun, but it fails with imapsync.
|
||||
Any hint welcome!
|
||||
The script imapsync doesn't work under Modperl::Registry nor under
|
||||
ModPerl::PerlRun. So read on if you think you are better than me.
|
||||
|
||||
I tried the standard way, telling how any cgi Perl script can be run
|
||||
under mod_perl perlrun, but it fails with imapsync. Any hint welcome!
|
||||
|
||||
# This is a Debian example
|
||||
|
||||
|
@ -545,6 +569,5 @@ Any hint welcome!
|
|||
|
||||
curl http://localhost/perl-run/imapsync
|
||||
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
# $Id: memo_docker,v 1.15 2021/11/20 20:52:55 gilles Exp gilles $
|
||||
# $Id: memo_docker,v 1.17 2022/04/04 14:46:21 gilles Exp gilles $
|
||||
|
||||
echo imapsync_docker_timestamp_dockerfile
|
||||
imapsync_docker_timestamp_dockerfile()
|
||||
|
@ -16,11 +16,6 @@ imapsync_docker_build()
|
|||
{
|
||||
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_version
|
||||
|
@ -32,7 +27,7 @@ imapsync_docker_version()
|
|||
echo imapsync_local_docker_version
|
||||
imapsync_local_docker_version()
|
||||
{
|
||||
docker run gilleslamiral/imapsync imapsync_local --version
|
||||
docker run gilleslamiral/imapsync /imapsync --version
|
||||
}
|
||||
|
||||
echo imapsync_docker_add_tag_version
|
||||
|
@ -51,15 +46,15 @@ imapsync_docker_add_tag_version()
|
|||
echo imapsync_docker_testslive
|
||||
imapsync_docker_testslive()
|
||||
{
|
||||
echo docker run gilleslamiral/imapsync imapsync --testslive
|
||||
docker run gilleslamiral/imapsync imapsync --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 docker run gilleslamiral/imapsync imapsync --testslive6 "$@"
|
||||
docker run gilleslamiral/imapsync imapsync --testslive6 "$@"
|
||||
}
|
||||
|
||||
echo imapsync_docker_tests
|
||||
|
@ -121,13 +116,18 @@ echo imapsync_docker_upload
|
|||
imapsync_docker_upload()
|
||||
{
|
||||
version=`imapsync_docker_version`
|
||||
version_local=`imapsync_local_docker_version`
|
||||
|
||||
# upload only after successful tests
|
||||
set -x \
|
||||
&& is_release_number "$version" \
|
||||
&& is_release_number "$version_local" \
|
||||
&& test "$version" = "$version_local" \
|
||||
&& rcsdiff imapsync Dockerfile memo_docker \
|
||||
&& imapsync_docker_testslive \
|
||||
&& imapsync_docker_tests \
|
||||
&& docker run gilleslamiral/imapsync true \
|
||||
&& docker run gilleslamiral/imapsync diff /imapsync /usr/bin/imapsync \
|
||||
&& docker login --username=gilleslamiral --password=`cat $HOME/var/pass/secret.docker` \
|
||||
&& docker push gilleslamiral/imapsync:latest \
|
||||
&& docker push gilleslamiral/imapsync:$version \
|
||||
|
|
122
Makefile
122
Makefile
|
@ -1,5 +1,5 @@
|
|||
|
||||
# $Id: Makefile,v 1.339 2022/01/14 14:28:38 gilles Exp gilles $
|
||||
# $Id: Makefile,v 1.345 2022/04/06 10:00:39 gilles Exp gilles $
|
||||
|
||||
.PHONY: help usage all doc
|
||||
|
||||
|
@ -194,7 +194,6 @@ docker_build: docker_copy_to_vp3
|
|||
ssh vp3 'cd docker/imapsync && . memo_docker && imapsync_docker_build'
|
||||
|
||||
|
||||
|
||||
docker_copy_to_vp3:
|
||||
ssh vp3 'mkdir -p docker/imapsync/ var/pass/'
|
||||
rsync -av /g/var/pass/secret.docker vp3:var/pass/secret.docker
|
||||
|
@ -287,10 +286,10 @@ testv: imapsync tests.sh
|
|||
|
||||
tests: test
|
||||
|
||||
test: .test_3xx
|
||||
test: .tests_passed
|
||||
|
||||
# .test_3xx is created by tests.sh with success at all mandatory tests
|
||||
.test_3xx: imapsync tests.sh
|
||||
# .tests_passed is created by tests.sh with success at all mandatory tests
|
||||
.tests_passed: imapsync
|
||||
/usr/bin/time sh tests.sh 1>/dev/null
|
||||
|
||||
unitests:
|
||||
|
@ -467,6 +466,20 @@ win64testsdebug:
|
|||
./W/check_win64err test_testsdebug.bat
|
||||
|
||||
|
||||
|
||||
win64testsdebug_p26:
|
||||
unix2dos W/test_testsdebug.bat
|
||||
scp imapsync W/test_testsdebug.bat gille@p26:'Desktop\imapsync_build'
|
||||
ssh gille@p26 'Desktop\imapsync_build\test_testsdebug.bat'
|
||||
./W/check_p26err test_testsdebug.bat
|
||||
|
||||
win64tests_p26:
|
||||
unix2dos W/test_tests.bat
|
||||
scp imapsync W/test_tests.bat gille@p26:'Desktop\imapsync_build'
|
||||
ssh gille@p26 'Desktop\imapsync_build\test_tests.bat'
|
||||
./W/check_p26err test_tests.bat
|
||||
|
||||
|
||||
zzz:
|
||||
unix2dos W/build_exe.bat W/install_module_one.bat
|
||||
scp imapsync W/build_exe.bat W/install_module_one.bat W/test_exe_testsdebug.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||
|
@ -535,12 +548,18 @@ win64build: winprepalocal
|
|||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/build_exe.bat'
|
||||
./W/check_win64err build_exe.bat
|
||||
|
||||
imapsync.exe: imapsync_64bit.exe
|
||||
imapsync.exe: imapsync_64bit.exe_p26
|
||||
cp -a imapsync_64bit.exe imapsync.exe
|
||||
|
||||
|
||||
imapsync_64bit.exe: imapsync winprepalocal
|
||||
|
||||
|
||||
.PHONY: imapsync_64bit.exe_p24 imapsync_64bit.exe_p26
|
||||
|
||||
|
||||
imapsync_64bit.exe_p24: imapsync
|
||||
(date "+%s"| tr "\n" " "; echo -n "BEGIN 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||
unix2dos W/build_exe.bat W/test_exe.bat W/install_modules.bat W/install_module_one.bat
|
||||
ssh 'pc HP DV7'@p24 'perl -V'
|
||||
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 \
|
||||
|
@ -554,13 +573,31 @@ imapsync_64bit.exe: imapsync winprepalocal
|
|||
chmod a+r+x imapsync_64bit.exe
|
||||
(date "+%s"| tr "\n" " "; echo -n "END 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||
|
||||
imapsync_64bit.exe: imapsync
|
||||
(date "+%s"| tr "\n" " "; echo -n "BEGIN 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||
unix2dos W/build_exe.bat W/test_exe.bat W/install_modules.bat W/install_module_one.bat
|
||||
ssh gille@p26 'perl -V'
|
||||
ssh gille@p26 'if not exist Desktop\imapsync_build mkdir Desktop\imapsync_build'
|
||||
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 \
|
||||
gille@p26:'Desktop\imapsync_build'
|
||||
ssh gille@p26 'Desktop\imapsync_build\build_exe.bat'
|
||||
./W/check_p26err build_exe.bat
|
||||
scp ../../var/pass/secret.tata ../../var/pass/secret.titi gille@p26:'Desktop\imapsync_build'
|
||||
ssh gille@p26 'Desktop\imapsync_build\test_exe.bat'
|
||||
./W/check_p26err test_exe.bat
|
||||
rm -f imapsync_64bit.exe
|
||||
scp -T gille@p26:'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
|
||||
|
||||
|
||||
zip: dosify_bat
|
||||
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 README.txt ../prepa_zip/imapsync_$(VERSION)/
|
||||
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
|
||||
|
@ -572,7 +609,7 @@ zip: dosify_bat
|
|||
|
||||
# C:\Users\mansour\Desktop\imapsync
|
||||
|
||||
.PHONY: mac maccopy macforce mactests mactestsdebug mactestslive mactestslive6 bin win lin win64
|
||||
.PHONY: mac macstadiumcopy maccopy macforce mactests mactestsdebug mactestslive mactestslive6 bin win lin win64
|
||||
|
||||
mac: imapsync_bin_Darwin
|
||||
|
||||
|
@ -590,7 +627,7 @@ maccopy:
|
|||
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 maccopy
|
||||
imapsync_bin_Darwin: maccopy imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync
|
||||
rcsdiff imapsync
|
||||
ssh -4 -p 995 gilleslamira@gate.polarhome.com 'sh -x build_mac.sh'
|
||||
rsync -P -e 'ssh -4 -p 995' gilleslamira@gate.polarhome.com:imapsync_bin_Darwin .
|
||||
|
@ -617,7 +654,7 @@ bin: mac win
|
|||
|
||||
lin: $(BIN_NAME)
|
||||
|
||||
win: win64 win32 imapsync.exe
|
||||
win: win32 win64 imapsync.exe
|
||||
|
||||
win32: imapsync_32bit.exe
|
||||
|
||||
|
@ -709,10 +746,10 @@ 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 ; }
|
||||
rcsdiff W/docker_pull_count.txt || { echo | ci -l W/docker_pull_count.txt ; }
|
||||
|
||||
S/imapsync_sold_by_country.txt: /g/bin/imapsync_by_country
|
||||
cd S/ && /g/bin/imapsync_by_country && echo | ci -l imapsync_sold_by_country.txt
|
||||
cd S/ && /g/bin/imapsync_by_country && { echo | ci -l imapsync_sold_by_country.txt ; }
|
||||
|
||||
|
||||
ks:
|
||||
|
@ -828,7 +865,7 @@ W/.valid.index.shtml: index.shtml S/*.shtml
|
|||
S/template_xhtml1.shtml
|
||||
touch W/.valid.index.shtml
|
||||
|
||||
.PHONY: upload_index upload_FAQ ci_imapsync upload_bin
|
||||
.PHONY: upload_index ci_imapsync upload_latest upload_FAQ upload_bin
|
||||
|
||||
|
||||
upload_index: valid_index clean_permissions
|
||||
|
@ -855,16 +892,65 @@ upload_latest: unitests ci_imapsync bin
|
|||
rsync -aHvzP --delete ../imapsync_website/ root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/
|
||||
|
||||
|
||||
upload_cgi: unitests ks5tests ks5tests_root ci_imapsync
|
||||
rsync -a imapsync ./INSTALL.d/prerequisites_imapsync ../imapsync_website/
|
||||
rsync -aHvz --delete ../imapsync_website/ root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/
|
||||
rsync -P imapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/
|
||||
|
||||
.PHONY: upload_cgi upload_cgi_ks5 upload_cgi_memo upload_cgi_vp3 upload_cgi_vp4 upload_cgi_ks6
|
||||
|
||||
upload_cgi: upload_cgi_ks5 upload_cgi_vp3 upload_cgi_vp4 upload_cgi_ks6
|
||||
|
||||
upload_cgi_ks5: ci_imapsync unitests ks5tests
|
||||
rsync -P imapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/imapsync_new
|
||||
curl -v --data 'testslive=1' https://imapsync.lamiral.info/cgi-bin/imapsync_new | grep 'Exiting with return value 0'
|
||||
rsync -P imapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/imapsync
|
||||
curl -v --data 'testslive=1' https://imapsync.lamiral.info/cgi-bin/imapsync | grep 'Exiting with return value 0'
|
||||
|
||||
upload_cgi_memo:
|
||||
dos2unix X/stat_patterns.txt X/server_survey_patterns.txt
|
||||
sed -i".bak" '/^[[:space:]]*$$/d' X/stat_patterns.txt X/server_survey_patterns.txt
|
||||
rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@ks5:/var/tmp/imapsync_cgi/
|
||||
|
||||
upload_cgi_memo_all:
|
||||
rsync -av X/cgi_memo root@ks5:/var/tmp/imapsync_cgi/
|
||||
rsync -av X/cgi_memo root@ks6:/var/tmp/imapsync_cgi/
|
||||
rsync -av X/cgi_memo root@vp3:/var/tmp/imapsync_cgi/
|
||||
rsync -av X/cgi_memo root@vp4:/var/tmp/imapsync_cgi/
|
||||
|
||||
# Debian
|
||||
upload_cgi_vp3: ci_imapsync vp3tests
|
||||
rsync -P imapsync root@vp3.lamiral.info:/usr/lib/cgi-bin/imapsync_new
|
||||
curl -v --data 'testslive=1' https://vp3.lamiral.info/cgi-bin/imapsync_new | grep 'Exiting with return value 0'
|
||||
rsync -P imapsync root@vp3.lamiral.info:/usr/lib/cgi-bin/imapsync
|
||||
curl -v --data 'testslive=1' https://vp3.lamiral.info/cgi-bin/imapsync | grep 'Exiting with return value 0'
|
||||
|
||||
# Centos
|
||||
upload_cgi_vp4: ci_imapsync vp4tests
|
||||
rsync -P imapsync root@vp4.lamiral.info:/var/www/cgi-bin/imapsync_new
|
||||
curl -v --data 'testslive=1' https://vp4.lamiral.info/cgi-bin/imapsync_new | grep 'Exiting with return value 0'
|
||||
rsync -P imapsync root@vp4.lamiral.info:/var/www/cgi-bin/imapsync
|
||||
curl -v --data 'testslive=1' https://vp4.lamiral.info/cgi-bin/imapsync | grep 'Exiting with return value 0'
|
||||
|
||||
# Debian
|
||||
upload_cgi_ks6: ci_imapsync ks6tests
|
||||
rsync -P imapsync root@ks6.lamiral.info:/usr/lib/cgi-bin/imapsync_new
|
||||
curl -v --data 'testslive=1' https://ks6.lamiral.info/cgi-bin/imapsync_new | grep 'Exiting with return value 0'
|
||||
rsync -P imapsync root@ks6.lamiral.info:/usr/lib/cgi-bin/imapsync
|
||||
curl -v --data 'testslive=1' https://ks6.lamiral.info/cgi-bin/imapsync | grep 'Exiting with return value 0'
|
||||
|
||||
.PHONY: vp3tests vp4tests ks6tests
|
||||
|
||||
vp3tests:
|
||||
rsync -P imapsync root@vp3.lamiral.info:imapsync
|
||||
ssh root@vp3.lamiral.info ./imapsync --tests
|
||||
ssh root@vp3.lamiral.info ./imapsync --testslive6
|
||||
|
||||
vp4tests:
|
||||
rsync -P imapsync root@vp4.lamiral.info:imapsync
|
||||
ssh root@vp4.lamiral.info ./imapsync --tests
|
||||
ssh root@vp4.lamiral.info ./imapsync --testslive6
|
||||
|
||||
ks6tests:
|
||||
rsync -P imapsync root@ks6.lamiral.info:imapsync
|
||||
ssh root@ks6.lamiral.info ./imapsync --tests
|
||||
ssh root@ks6.lamiral.info ./imapsync --testslive6
|
||||
|
||||
upload_X:
|
||||
./W/tools/validate_xml_html5 X/index.html X/imapsync_form.html X/imapsync_form_extra.html X/imapsync_form_extra_free.html X/imapsync_form_wrapper.html
|
||||
|
|
86
README
86
README
|
@ -6,7 +6,7 @@ NAME
|
|||
|
||||
VERSION
|
||||
|
||||
This documentation refers to Imapsync $Revision: 2.178 $
|
||||
This documentation refers to Imapsync $Revision: 2.200 $
|
||||
|
||||
USAGE
|
||||
|
||||
|
@ -38,7 +38,7 @@ DESCRIPTION
|
|||
that are on the destination side but not on the source side stay as they
|
||||
are. See the --delete2 option to have strict sync and delete them.
|
||||
|
||||
How imapsync know a message is already on both sides? Same specific
|
||||
How does imapsync know a message is already on both sides? Same specific
|
||||
headers and the transfer is done only once. By default, the
|
||||
identification headers are "Message-Id:" and "Received:" lines but this
|
||||
choice can be changed with the --useheader option, most often a
|
||||
|
@ -46,8 +46,8 @@ DESCRIPTION
|
|||
|
||||
All flags are preserved, unread messages will stay unread, read ones
|
||||
will stay read, deleted will stay deleted. In the IMAP protocol, a
|
||||
deleted message is not really deleted, it is marked \Deleted and can be
|
||||
undelete. Real destruction comes with the EXPUNGE or UIDEXPUNGE IMAP
|
||||
deleted message is not deleted, it is marked \Deleted and can be
|
||||
undeleted. Real destruction comes with the EXPUNGE or UIDEXPUNGE IMAP
|
||||
commands.
|
||||
|
||||
You can abort the transfer at any time and restart it later, imapsync
|
||||
|
@ -76,16 +76,35 @@ DESCRIPTION
|
|||
There is no unidentified message on host1.
|
||||
Detected 0 errors
|
||||
|
||||
Imapsync mentions the total sizes of both accounts at the beginning of
|
||||
the sync and also at the end. Sometimes, even with a strict sync, those
|
||||
total sizes differ, and sometimes they differ a lot. The difference is
|
||||
not a good criterion to conclude the sync went wrong.
|
||||
|
||||
Why? That's because message sizes given by the imap servers are not
|
||||
always accurate, they are not always the same as the actual message
|
||||
sizes of the messages transferred by imapsync. Imapsync use the sizes
|
||||
given by the imap servers to calculate the big total size. They can
|
||||
differ. In the early days, Imapsync used the sizes of the messages as
|
||||
one of the criteria to identify the messages, different sizes implied
|
||||
different messages; but it was a mistake, the same message had different
|
||||
sizes on both sides sometimes, depending on the imap servers.
|
||||
|
||||
Another explanation for a big total size difference is that Gmail
|
||||
doesn't count the size of duplicate messages across folders twice, while
|
||||
imapsync does.
|
||||
|
||||
A classical scenario is synchronizing a mailbox B from another mailbox A
|
||||
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 can be used, it deletes messages in the host2
|
||||
folder B that are not in the 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 destroyed, it's a mandatory
|
||||
folder in IMAP so imapsync doesn't even try to remove it.
|
||||
For a strict synchronization, use the option --delete2. The option
|
||||
--delete2 deletes the messages in the host2 folder B that are not in the
|
||||
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 destroyed, it's a mandatory folder in IMAP so imapsync
|
||||
doesn't even try to remove it.
|
||||
|
||||
A different scenario is to delete the messages from the source mailbox
|
||||
after a successful transfer, it can be a good feature when migrating
|
||||
|
@ -114,18 +133,19 @@ OPTIONS
|
|||
usage: imapsync [options]
|
||||
|
||||
The standard options are the six values forming the credentials. Three
|
||||
values on each side are needed in order to login into the IMAP servers.
|
||||
These six values are a hostname, a username, and a password, two times.
|
||||
values on each side are needed to login into the IMAP servers. These six
|
||||
values are a hostname, a username, and a password, two times.
|
||||
|
||||
Conventions used in the following descriptions of the options:
|
||||
Here are the conventions used in the following descriptions of the
|
||||
options:
|
||||
|
||||
str means string
|
||||
int means integer number
|
||||
flo means float number
|
||||
reg means regular expression
|
||||
cmd means command
|
||||
str means a string
|
||||
int means an integer number
|
||||
flo means a float number
|
||||
reg means a regular expression
|
||||
cmd means a command
|
||||
|
||||
--dry : Makes imapsync doing nothing for real; it just print what
|
||||
--dry : Makes imapsync do nothing for real; it just prints what
|
||||
would be done without --dry.
|
||||
|
||||
OPTIONS/credentials
|
||||
|
@ -237,9 +257,9 @@ OPTIONS
|
|||
|
||||
--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
|
||||
"Sent", "SENT" and "sent"
|
||||
on host1 only "Sent" will be synced to host2).
|
||||
similar folder is synced. Example: with folders
|
||||
"Sent", "SENT" and "sent" on host1, only "Sent"
|
||||
will be synced to host2.
|
||||
|
||||
--skipemptyfolders : Empty host1 folders are not created on host2.
|
||||
|
||||
|
@ -726,8 +746,8 @@ LICENSE AND COPYRIGHT
|
|||
|
||||
Imapsync is free, open, public but not always gratis software cover by
|
||||
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:
|
||||
included in the distribution or just read the following simple sentence
|
||||
as it IS the license text:
|
||||
|
||||
"No limits to do anything with this work and this license."
|
||||
|
||||
|
@ -744,7 +764,7 @@ AUTHOR
|
|||
Good feedback is always welcome. Bad feedback is very often welcome.
|
||||
|
||||
Gilles LAMIRAL earns his living by writing, installing, configuring and
|
||||
sometimes teaching free, open and often gratis software. Imapsync used
|
||||
sometimes teaching free, open, and often gratis software. Imapsync used
|
||||
to be "always gratis" but now it is only "often gratis" because imapsync
|
||||
is sold by its author, your servitor, a good way to maintain and support
|
||||
free open public software tools over decades.
|
||||
|
@ -796,19 +816,19 @@ INSTALL
|
|||
|
||||
Imapsync works under most Windows (2000, XP, Vista, Seven, Eight, Ten
|
||||
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. There is also a 32bit binary called imapsync_32bit.exe
|
||||
as a standalone binary software called imapsync.exe, usually launched
|
||||
from a batch file in order to avoid always typing the options. There
|
||||
is also a 32bit binary called imapsync_32bit.exe
|
||||
|
||||
Imapsync works under OS X as a standalone binary
|
||||
software called imapsync_bin_Darwin
|
||||
Imapsync works under OS X as a standalone binary software called
|
||||
imapsync_bin_Darwin
|
||||
|
||||
Purchase latest imapsync at
|
||||
https://imapsync.lamiral.info/
|
||||
|
||||
You'll receive a link to a compressed tarball called imapsync-x.xx.tgz
|
||||
where x.xx is the version number. Untar the tarball where
|
||||
you want (on Unix):
|
||||
You'll receive a link to a compressed tarball called
|
||||
imapsync-x.xx.tgz where x.xx is the version number.
|
||||
Untar the tarball where you want (on Unix):
|
||||
|
||||
tar xzvf imapsync-x.xx.tgz
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: README_Windows.txt,v 1.26 2022/01/14 11:54:28 gilles Exp gilles $
|
||||
# $Id: README_Windows.txt,v 1.27 2022/04/05 19:45:21 gilles Exp gilles $
|
||||
#
|
||||
# This is the README_Windows.txt file for imapsync
|
||||
# imapsync: IMAP syncing and migration tool.
|
||||
|
@ -43,13 +43,13 @@ A.0) Preamble for visual users looking for a visual tool.
|
|||
A.1) Get imapsync.
|
||||
|
||||
Get imapsync at https://imapsync.lamiral.info/
|
||||
You'll then have access to a zip archive file named imapsync_2.178.zip
|
||||
where 2.178 is the imapsync release number.
|
||||
You'll then have access to a zip archive file named imapsync_2.200.zip
|
||||
where 2.200 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_2.178/
|
||||
a unique folder named imapsync_2.200/
|
||||
|
||||
Do not unzip the archive in what is called a "system" directory since
|
||||
you may encounter permission issues.
|
||||
|
@ -62,7 +62,7 @@ In short, any user on your system can use imapsync.
|
|||
|
||||
A.3) Check the folder
|
||||
|
||||
In the folder extracted and called imapsync_2.178, you see 7 files
|
||||
In the folder extracted and called imapsync_2.200, you see 7 files
|
||||
and 2 directories. Those files and directories may be presented in a
|
||||
different order than the following, the order is not important
|
||||
anyway. There are only two important files to get your mailbox
|
||||
|
|
|
@ -91,12 +91,11 @@
|
|||
</h1>
|
||||
|
||||
<p>These services are similar to the
|
||||
<a href="https://imapsync.lamiral.info/X/" title="Free online service under 1 GB">imapsync <b>online service</b></a>
|
||||
<a href="https://imapsync.lamiral.info/X/" title="Free online service under 3 GB">imapsync <b>online service</b></a>
|
||||
I call /X. Some are an exact copy of /X, some are not, some use Imapsync, some don't.<br/>
|
||||
|
||||
I have no share in these free or paid services.
|
||||
Prices are given par mailbox and may be outdated
|
||||
(Last checked on Tuesday 10th November 2020).
|
||||
Prices are given par mailbox and may be outdated (Last checked on Saturday 19 February 2022).
|
||||
</p>
|
||||
|
||||
<h2>Imapsync based</h2>
|
||||
|
@ -122,29 +121,28 @@ this is a better choice to avoid duplicates with some imap servers.
|
|||
</p>
|
||||
|
||||
<ol>
|
||||
<li> NameHero <b>0 USD</b>: <a href="https://imapsync.net/">https://imapsync.net/</a> (imapsync 2.140)</li>
|
||||
<li> Slovenia Control Panel <b>0 USD</b>: <a href="https://tools.controlpanel.si/imapsync/">https://tools.controlpanel.si/imapsync/</a> (imapsync 1.810)</li>
|
||||
<li> Intertune Cloud <b>0 USD</b>: <a href="https://tools.intertune.io/imapsync/X/" >https://tools.intertune.io/imapsync/X/</a> (imapsync 1.882)</li>
|
||||
<li> Web Hosting Canada <b>0 USD</b>: <a href="https://imapsync.whc.ca/" >https://imapsync.whc.ca/</a> (imapsync 1.882)</li>
|
||||
<li> BoomHost <b>0 USD</b>: <a href="https://imapsync.boomhost.com/" >https://imapsync.boomhost.com/</a> (imapsync 1.925)</li>
|
||||
<li> WebHosting|4u (greek) <b>0 USD</b>: <a href="https://imapcopy.webhosting4u.gr/" >https://imapcopy.webhosting4u.gr/</a> (imapsync 1.977)</li>
|
||||
<li> WebHosting|4u (greek) <b>0 USD</b>: <a href="https://imapcopy.webhosting4u.gr/" >https://imapcopy.webhosting4u.gr/</a> (imapsync 2.178)</li>
|
||||
<li> Vimexx <b>0 USD</b>: <a href="https://imapsync.nl/" >https://imapsync.nl/</a> (imapsync 1.991)</li>
|
||||
<li> Timetakernet <b>0 USD</b>: <a href="https://mailsync.timetakernet.info/" >https://mailsync.timetakernet.info/</a> (imapsync 1.998)</li>
|
||||
<li> KeurigOnline <b>0 USD</b>: <a href="https://imapsync.keurigonline.nl/" >https://imapsync.keurigonline.nl/</a> (imapsync 1.998)</li>
|
||||
|
||||
<li> UK Migration Wizard <b>0 USD</b>: <a href="https://app.migrationwizard.co.uk/" >https://app.migrationwizard.co.uk/</a> (imapsync ?.???)</li>
|
||||
</ol>
|
||||
|
||||
<h2>Not Imapsync based</h2>
|
||||
<ol>
|
||||
<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> </li>
|
||||
<li> Audriga 11.90 EUR: <a href="https://www.groupware-migration.com/">https://www.groupware-migration.com/</a></li>
|
||||
<li> Movemymail one free, <a href="https://movemymail.net/faq.php">5 USD</a> after: <a href="https://movemymail.net">https://movemymail.net/</a></li>
|
||||
<li> TransferMyEmail <a href="https://transfermyemail.ca/shop/">1.50 USD</a> for a day pass: <a href="https://transfermyemail.ca/">https://transfermyemail.ca/</a></li>
|
||||
<li> Migrationwiz <a href="https://www.bittitan.com/pricing/">12 USD</a>: <a href="https://www.bittitan.com/products/migrationwiz/">https://www.bittitan.com/products/migrationwiz/</a> </li>
|
||||
<li> Audriga <a href="https://www.audriga.com/en/Self-service_migration/Pricing">11.90 EUR</a>: <a href="https://www.audriga.com/">https://www.audriga.com/</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>
|
||||
<li> Cloudasta ??? USD: <a href="https://cloudasta.com/">https://cloudasta.com/</a></li>
|
||||
</ol>
|
||||
|
||||
<h2>Imap to files services</h2>
|
||||
|
@ -186,7 +184,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.59 2022/01/08 19:54:26 gilles Exp gilles $)<br/>
|
||||
($Id: external.shtml,v 1.61 2022/02/19 20:26:25 gilles Exp gilles $)<br/>
|
||||
<a href="#TOP">Top of the page</a>
|
||||
</p>
|
||||
|
||||
|
|
BIN
S/images/logo_imapsync_s1.png
Normal file
BIN
S/images/logo_imapsync_s1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
BIN
S/images/logo_imapsync_s2.png
Normal file
BIN
S/images/logo_imapsync_s2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
|
@ -1,100 +1,108 @@
|
|||
1 Bahrein_________________ 0.01 % 100 % 0 % 99
|
||||
1 Bolivie_________________ 0.01 % 100 % 0 % 98
|
||||
1 Burkina_Faso____________ 0.01 % 100 % 0 % 97
|
||||
1 Cameroun________________ 0.01 % 100 % 0 % 96
|
||||
1 Coree_du_Sud____________ 0.01 % 100 % 0 % 95
|
||||
1 Grenade_________________ 0.01 % 100 % 0 % 94
|
||||
1 Iles_Feroe______________ 0.01 % 100 % 0 % 93
|
||||
1 Iles_Vierges_britanniques__ 0.01 % 100 % 0 % 92
|
||||
1 Jamaique________________ 0.01 % 100 % 0 % 91
|
||||
1 Jordanie________________ 0.01 % 100 % 0 % 90
|
||||
1 Kenya___________________ 0.01 % 100 % 0 % 89
|
||||
1 Koweit__________________ 0.01 % 100 % 0 % 88
|
||||
1 Maldives________________ 0.01 % 100 % 0 % 87
|
||||
1 Monaco__________________ 0.01 % 100 % 0 % 86
|
||||
1 Mongolie________________ 0.01 % 100 % 0 % 85
|
||||
1 Namibie_________________ 0.01 % 100 % 0 % 84
|
||||
1 Oman____________________ 0.01 % 100 % 0 % 83
|
||||
1 Panama__________________ 0.01 % 100 % 0 % 82
|
||||
1 Qatar___________________ 0.01 % 100 % 0 % 81
|
||||
1 Republique_d'Azerbaidjan__ 0.01 % 100 % 0 % 80
|
||||
1 Saint_Christophe-Nevis-Anguilla__ 0.01 % 100 % 0 % 79
|
||||
1 Senegal_________________ 0.01 % 100 % 0 % 78
|
||||
1 Tanzanie________________ 0.01 % 100 % 0 % 77
|
||||
1 Trinite-et-Tobago_______ 0.01 % 100 % 0 % 76
|
||||
2 Albanie_________________ 0.03 % 100 % 0 % 75
|
||||
2 Antilles_neerlandaises__ 0.03 % 100 % 0 % 74
|
||||
2 Arabie_Saoudite_________ 0.03 % 100 % 0 % 73
|
||||
2 Bosnie-Herzegovine______ 0.03 % 100 % 0 % 72
|
||||
2 Colombie________________ 0.03 % 100 % 0 % 71
|
||||
2 Ile_Maurice_____________ 0.03 % 100 % 0 % 70
|
||||
2 Moldavie________________ 0.03 % 100 % 0 % 69
|
||||
2 Nouvelle-Caledonie______ 0.03 % 100 % 0 % 68
|
||||
2 Perou___________________ 0.03 % 99 % 1 % 67
|
||||
3 Costa_Rica______________ 0.04 % 99 % 1 % 66
|
||||
3 Maroc___________________ 0.04 % 99 % 1 % 65
|
||||
3 Nigeria_________________ 0.04 % 99 % 1 % 64
|
||||
3 Taiwan__________________ 0.04 % 99 % 1 % 63
|
||||
3 Ukraine_________________ 0.04 % 99 % 1 % 62
|
||||
3 Venezuela_______________ 0.04 % 99 % 1 % 61
|
||||
4 Indonesie_______________ 0.05 % 99 % 1 % 60
|
||||
4 Serbie__________________ 0.05 % 99 % 1 % 59
|
||||
4 Turquie_________________ 0.05 % 99 % 1 % 58
|
||||
4 Uruguay_________________ 0.05 % 99 % 1 % 57
|
||||
4 Vietnam_________________ 0.05 % 99 % 1 % 56
|
||||
5 Ireland_________________ 0.06 % 99 % 1 % 55
|
||||
5 Philippines_____________ 0.06 % 99 % 1 % 54
|
||||
6 Egypte__________________ 0.08 % 99 % 1 % 53
|
||||
6 Lituanie________________ 0.08 % 99 % 1 % 52
|
||||
7 Islande_________________ 0.09 % 99 % 1 % 51
|
||||
7 Malte___________________ 0.09 % 99 % 1 % 50
|
||||
7 Russie,_Federation______ 0.09 % 99 % 1 % 49
|
||||
8 Bulgarie________________ 0.10 % 98 % 2 % 48
|
||||
8 Estonie_________________ 0.10 % 98 % 2 % 47
|
||||
10 Chypre__________________ 0.13 % 98 % 2 % 46
|
||||
10 Lettonie________________ 0.13 % 98 % 2 % 45
|
||||
11 Croatie_________________ 0.14 % 98 % 2 % 44
|
||||
11 Emirats_Arabes_Unis_____ 0.14 % 98 % 2 % 43
|
||||
12 Thailande_______________ 0.15 % 98 % 2 % 42
|
||||
15 Israel__________________ 0.19 % 98 % 2 % 41
|
||||
16 Chine___________________ 0.20 % 97 % 3 % 40
|
||||
18 Malaisie________________ 0.23 % 97 % 3 % 39
|
||||
18 Singapour_______________ 0.23 % 97 % 3 % 38
|
||||
20 Argentine_______________ 0.25 % 97 % 3 % 37
|
||||
20 Chili___________________ 0.25 % 96 % 4 % 36
|
||||
20 Luxembourg______________ 0.25 % 96 % 4 % 35
|
||||
20 Slovenie________________ 0.25 % 96 % 4 % 34
|
||||
23 Mexique_________________ 0.29 % 96 % 4 % 33
|
||||
24 Slovaquie_______________ 0.30 % 95 % 5 % 32
|
||||
26 Hong-Kong_______________ 0.33 % 95 % 5 % 31
|
||||
27 Inde____________________ 0.34 % 95 % 5 % 30
|
||||
27 Irlande_________________ 0.34 % 94 % 6 % 29
|
||||
28 Grece___________________ 0.35 % 94 % 6 % 28
|
||||
29 Afrique_du_Sud__________ 0.36 % 94 % 6 % 27
|
||||
30 Roumanie________________ 0.38 % 93 % 7 % 26
|
||||
31 Russie__________________ 0.39 % 93 % 7 % 25
|
||||
32 Japon___________________ 0.40 % 93 % 7 % 24
|
||||
36 Nouvelle-Zelande________ 0.45 % 92 % 8 % 23
|
||||
40 ________________________ 0.50 % 92 % 8 % 22
|
||||
41 Hongrie_________________ 0.52 % 91 % 9 % 21
|
||||
45 Portugal________________ 0.57 % 91 % 9 % 20
|
||||
55 Finlande________________ 0.69 % 90 % 10 % 19
|
||||
56 Norvege_________________ 0.70 % 90 % 10 % 18
|
||||
61 Republique_tcheque______ 0.77 % 89 % 11 % 17
|
||||
85 Bresil__________________ 1.07 % 88 % 12 % 16
|
||||
105 Danemark________________ 1.32 % 87 % 13 % 15
|
||||
107 Pologne_________________ 1.35 % 86 % 14 % 14
|
||||
122 Suede___________________ 1.53 % 84 % 16 % 13
|
||||
135 Belgique________________ 1.70 % 83 % 17 % 12
|
||||
170 Espagne_________________ 2.14 % 81 % 19 % 11
|
||||
186 Autriche________________ 2.34 % 79 % 21 % 10
|
||||
249 Australie_______________ 3.13 % 77 % 23 % 9
|
||||
301 Suisse__________________ 3.79 % 73 % 27 % 8
|
||||
317 Canada__________________ 3.99 % 70 % 30 % 7
|
||||
354 Pays-Bas________________ 4.45 % 66 % 34 % 6
|
||||
407 France__________________ 5.12 % 61 % 39 % 5
|
||||
498 Italie__________________ 6.26 % 56 % 44 % 4
|
||||
703 Royaume-Uni_____________ 8.84 % 50 % 50 % 3
|
||||
1568 Allemagne_______________ 19.72 % 41 % 59 % 2
|
||||
1693 Etats-Unis______________ 21.29 % 21 % 79 % 1
|
||||
TOTAL = 7951 sales 407161 EUR over 99 countries on Wed Dec 2 12:24:33 CET 2020
|
||||
1 Bahrein_________________ 0.01 % 100 % 0 % 107
|
||||
1 Bolivie_________________ 0.01 % 100 % 0 % 106
|
||||
1 Botswana________________ 0.01 % 100 % 0 % 105
|
||||
1 Burkina_Faso____________ 0.01 % 100 % 0 % 104
|
||||
1 Cameroun________________ 0.01 % 100 % 0 % 103
|
||||
1 Coree_du_Sud____________ 0.01 % 100 % 0 % 102
|
||||
1 Equateur________________ 0.01 % 100 % 0 % 101
|
||||
1 Grenade_________________ 0.01 % 100 % 0 % 100
|
||||
1 Guatemala_______________ 0.01 % 100 % 0 % 99
|
||||
1 Honduras________________ 0.01 % 100 % 0 % 98
|
||||
1 Iles_Feroe______________ 0.01 % 100 % 0 % 97
|
||||
1 Iles_Vierges_britanniques__ 0.01 % 100 % 0 % 96
|
||||
1 Jamaique________________ 0.01 % 100 % 0 % 95
|
||||
1 Jordanie________________ 0.01 % 100 % 0 % 94
|
||||
1 Koweit__________________ 0.01 % 100 % 0 % 93
|
||||
1 Madagascar______________ 0.01 % 100 % 0 % 92
|
||||
1 Maldives________________ 0.01 % 100 % 0 % 91
|
||||
1 Monaco__________________ 0.01 % 100 % 0 % 90
|
||||
1 Mongolie________________ 0.01 % 100 % 0 % 89
|
||||
1 Mozambique______________ 0.01 % 100 % 0 % 88
|
||||
1 Namibie_________________ 0.01 % 100 % 0 % 87
|
||||
1 Polynesie_francaise_____ 0.01 % 100 % 0 % 86
|
||||
1 Qatar___________________ 0.01 % 100 % 0 % 85
|
||||
1 Republique_d'Azerbaidjan__ 0.01 % 100 % 0 % 84
|
||||
1 Saint_Christophe-Nevis-Anguilla__ 0.01 % 100 % 0 % 83
|
||||
1 Salvador________________ 0.01 % 100 % 0 % 82
|
||||
1 Trinite-et-Tobago_______ 0.01 % 100 % 0 % 81
|
||||
2 Albanie_________________ 0.02 % 100 % 0 % 80
|
||||
2 Antilles_neerlandaises__ 0.02 % 100 % 0 % 79
|
||||
2 Arabie_Saoudite_________ 0.02 % 100 % 0 % 78
|
||||
2 Bosnie-Herzegovine______ 0.02 % 100 % 0 % 77
|
||||
2 Ile_Maurice_____________ 0.02 % 100 % 0 % 76
|
||||
2 Moldavie________________ 0.02 % 100 % 0 % 75
|
||||
2 Nouvelle-Caledonie______ 0.02 % 100 % 0 % 74
|
||||
2 Oman____________________ 0.02 % 100 % 0 % 73
|
||||
2 Panama__________________ 0.02 % 100 % 0 % 72
|
||||
2 Senegal_________________ 0.02 % 99 % 1 % 71
|
||||
2 Tanzanie________________ 0.02 % 99 % 1 % 70
|
||||
3 Colombie________________ 0.03 % 99 % 1 % 69
|
||||
3 Kenya___________________ 0.03 % 99 % 1 % 68
|
||||
3 Maroc___________________ 0.03 % 99 % 1 % 67
|
||||
3 Taiwan__________________ 0.03 % 99 % 1 % 66
|
||||
3 Ukraine_________________ 0.03 % 99 % 1 % 65
|
||||
4 Costa_Rica______________ 0.04 % 99 % 1 % 64
|
||||
4 Nigeria_________________ 0.04 % 99 % 1 % 63
|
||||
4 Perou___________________ 0.04 % 99 % 1 % 62
|
||||
4 Serbie__________________ 0.04 % 99 % 1 % 61
|
||||
4 Turquie_________________ 0.04 % 99 % 1 % 60
|
||||
4 Venezuela_______________ 0.04 % 99 % 1 % 59
|
||||
4 Vietnam_________________ 0.04 % 99 % 1 % 58
|
||||
5 Indonesie_______________ 0.06 % 99 % 1 % 57
|
||||
5 Ireland_________________ 0.06 % 99 % 1 % 56
|
||||
5 Uruguay_________________ 0.06 % 99 % 1 % 55
|
||||
6 Egypte__________________ 0.07 % 99 % 1 % 54
|
||||
6 Philippines_____________ 0.07 % 99 % 1 % 53
|
||||
8 Islande_________________ 0.09 % 99 % 1 % 52
|
||||
8 Malte___________________ 0.09 % 99 % 1 % 51
|
||||
9 Lituanie________________ 0.10 % 98 % 2 % 50
|
||||
10 Bulgarie________________ 0.11 % 98 % 2 % 49
|
||||
10 Estonie_________________ 0.11 % 98 % 2 % 48
|
||||
10 Russie,_Federation______ 0.11 % 98 % 2 % 47
|
||||
11 Lettonie________________ 0.12 % 98 % 2 % 46
|
||||
12 Croatie_________________ 0.13 % 98 % 2 % 45
|
||||
12 Emirats_Arabes_Unis_____ 0.13 % 98 % 2 % 44
|
||||
12 Thailande_______________ 0.13 % 98 % 2 % 43
|
||||
15 Chypre__________________ 0.17 % 98 % 2 % 42
|
||||
15 Israel__________________ 0.17 % 97 % 3 % 41
|
||||
16 Chine___________________ 0.18 % 97 % 3 % 40
|
||||
19 Singapour_______________ 0.21 % 97 % 3 % 39
|
||||
21 Argentine_______________ 0.23 % 97 % 3 % 38
|
||||
22 Luxembourg______________ 0.24 % 97 % 3 % 37
|
||||
24 Chili___________________ 0.27 % 96 % 4 % 36
|
||||
24 Malaisie________________ 0.27 % 96 % 4 % 35
|
||||
27 Hong-Kong_______________ 0.30 % 96 % 4 % 34
|
||||
27 Slovenie________________ 0.30 % 96 % 4 % 33
|
||||
28 Slovaquie_______________ 0.31 % 95 % 5 % 32
|
||||
30 Inde____________________ 0.33 % 95 % 5 % 31
|
||||
30 Mexique_________________ 0.33 % 95 % 5 % 30
|
||||
31 Russie__________________ 0.34 % 94 % 6 % 29
|
||||
32 Irlande_________________ 0.36 % 94 % 6 % 28
|
||||
33 Japon___________________ 0.37 % 94 % 6 % 27
|
||||
34 Roumanie________________ 0.38 % 93 % 7 % 26
|
||||
39 Afrique_du_Sud__________ 0.43 % 93 % 7 % 25
|
||||
39 Grece___________________ 0.43 % 92 % 8 % 24
|
||||
41 Nouvelle-Zelande________ 0.46 % 92 % 8 % 23
|
||||
49 Hongrie_________________ 0.55 % 91 % 9 % 22
|
||||
58 Finlande________________ 0.65 % 91 % 9 % 21
|
||||
60 Portugal________________ 0.67 % 90 % 10 % 20
|
||||
61 Norvege_________________ 0.68 % 90 % 10 % 19
|
||||
65 ________________________ 0.72 % 89 % 11 % 18
|
||||
69 Republique_tcheque______ 0.77 % 88 % 12 % 17
|
||||
102 Bresil__________________ 1.13 % 87 % 13 % 16
|
||||
116 Danemark________________ 1.29 % 86 % 14 % 15
|
||||
127 Suede___________________ 1.41 % 85 % 15 % 14
|
||||
148 Belgique________________ 1.65 % 84 % 16 % 13
|
||||
150 Pologne_________________ 1.67 % 82 % 18 % 12
|
||||
206 Autriche________________ 2.29 % 80 % 20 % 11
|
||||
210 Espagne_________________ 2.34 % 78 % 22 % 10
|
||||
275 Australie_______________ 3.06 % 76 % 24 % 9
|
||||
319 Suisse__________________ 3.55 % 73 % 27 % 8
|
||||
347 Canada__________________ 3.86 % 69 % 31 % 7
|
||||
404 Pays-Bas________________ 4.50 % 65 % 35 % 6
|
||||
511 France__________________ 5.69 % 61 % 39 % 5
|
||||
592 Italie__________________ 6.59 % 55 % 45 % 4
|
||||
793 Royaume-Uni_____________ 8.82 % 48 % 52 % 3
|
||||
1720 Allemagne_______________ 19.14 % 40 % 60 % 2
|
||||
1837 Etats-Unis______________ 20.44 % 20 % 80 % 1
|
||||
TOTAL = 8987 sales 467605 EUR over 107 countries on Mon Mar 28 11:40:45 CEST 2022
|
||||
|
|
43
S/news.shtml
43
S/news.shtml
|
@ -85,10 +85,39 @@ If you are very interrested in those projects, don't hesitate to solicit me!
|
|||
</ul>
|
||||
-->
|
||||
|
||||
<ul>
|
||||
<li><b>2.200</b></li>
|
||||
<li><b>Dependencies removed</b>: None </li>
|
||||
<li><b>Dependencies added</b>: None </li>
|
||||
|
||||
<li><b>Enhancement</b>: Append a final email report on each account at the end of the synchronization. Use --noemailreport1 and --noemailreport2 to avoid final emails reports in each INBOX.</li>
|
||||
<li><b>Enhancement</b>: Documented why total sizes can differ even when the sync is perfect.</li>
|
||||
<li><b>Enhancement</b>: Added SERVER_NAME SERVER_ADDR SERVER_ADMIN variables and values to the output.</li>
|
||||
<li><b>Enhancement</b>: Added the local ip address for the imap connexions. It can help configuring firewalls to allow the imap source IP.</li>
|
||||
<li><b>Enhancement</b>: Added "Posta inviata" for \Sent with --automap</li>
|
||||
|
||||
|
||||
<li><b>CGI context</b>: Upped ERRORS_MAX_CGI from 20 to 500.</li>
|
||||
<li><b>CGI context</b>: Added --var to get values from proximapsync for variables REMOTE_ADDR REMOTE_HOST HTTP_REFERER HTTP_USER_AGENT SERVER_SOFTWARE SERVER_PORT HTTP_COOKIE</li>
|
||||
|
||||
<li><b>Usability</b>: Added warning "parsing headers of folder ... It can take time for huge folders. Be patient."</li>
|
||||
|
||||
<li><b>Bug fix</b>: Do not turn on --delete2duplicates when --syncduplicates is on, unless --delete2duplicates is given.</li>
|
||||
<li><b>Bug fix</b>: Redirect STDERR to STDOUT in all cases, --log or --nolog</li>
|
||||
<li><b>Bug fix</b>: Do not allow --skipcrossduplicates and --usecache. Exit EX_USAGE 64</li>
|
||||
<li><b>Bug fix</b>: Dates were not displayed under Windows because POSIX::strftime %e is not portable. Fixed several other places where dates were wrong on Windows.</li>
|
||||
<li><b>Bug fix</b>: --tests --testslive was listing 0 folders.</li>
|
||||
|
||||
|
||||
<li><b>Refactoring</b>: Deglobalized $debuglist $debugflags </li>
|
||||
<li><b>Refactoring</b>: Added sync->{ permanentflags2 }</li>
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<ul>
|
||||
<li><b>2.178</b></li>
|
||||
<li><b>General</b>: </li>
|
||||
|
||||
<li><b>Dependencies removed</b>: None </li>
|
||||
<li><b>Dependencies added</b>: Perl module Compress::Zlib</li>
|
||||
|
@ -107,10 +136,9 @@ If you are very interrested in those projects, don't hesitate to solicit me!
|
|||
--keepalive1 is on by default since imapsync release 2.169
|
||||
Use --nokeepalive1 to disable it. Same thing for --keepalive2 but for --host2. See <a href="https://metacpan.org/pod/Mail::IMAPClient#Keepalive">https://metacpan.org/pod/Mail::IMAPClient#Keepalive</a></li>
|
||||
|
||||
<li><b>Enhancement</b>: </li>
|
||||
<li><b>Enhancement</b>: </li>
|
||||
|
||||
<li><b>Usability</b>: Removed --fast option. It didn't do anything anyway, it was a fake option.</li>
|
||||
|
||||
<li><b>Usability</b>: Added advice inline advice on errors
|
||||
<ul>
|
||||
<li>ERR_OVERQUOTA. "The destination mailbox is 100% full, get free space on it and then resume the sync."</li>
|
||||
|
@ -125,10 +153,6 @@ If you are very interrested in those projects, don't hesitate to solicit me!
|
|||
|
||||
<li><b>Usability</b>: Bytes sizes human readable are now presented in KB MB GB TB PB (1000 base) instead of KiB MiB GiB TiB PiB (1024 base)</li>
|
||||
<li><b>Usability</b>: Added README help for --truncmess</li>
|
||||
<li><b>Usability</b>: </li>
|
||||
<li><b>Usability</b>: </li>
|
||||
<li><b>Usability</b>: </li>
|
||||
<li><b>Usability</b>: </li>
|
||||
|
||||
|
||||
<li><b>CGI context</b>: Experimental loaddelay forced to 0 (no delay at all). So far a huge load is rarely a problem.</li>
|
||||
|
@ -141,13 +165,10 @@ If you are very interrested in those projects, don't hesitate to solicit me!
|
|||
<li><b>Bug fix</b>: Load average on Mac was sometimes buggy. locale float 3,14 instead of 3.14</li>
|
||||
<li><b>Bug fix</b>: errors_incr() exited with CATCH_ALL</li>
|
||||
<li><b>Bug fix</b>: Memory consumption on Mac was not relevant. Use RSS instead of VSZ, on Mac only. Linux stays with VSZ.</li>
|
||||
<li><b>Bug fix</b>: </li>
|
||||
<li><b>Bug fix</b>: </li>
|
||||
|
||||
|
||||
<li><b>Docker context</b>: Current working directory changed from /var/tmp to /var/tmp/uid_$EFFECTIVE_USER_ID</li>
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -1018,7 +1039,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.83 2022/01/13 18:36:12 gilles Exp gilles $)<br />
|
||||
($Id: news.shtml,v 1.84 2022/04/04 16:11:25 gilles Exp gilles $)<br />
|
||||
<a href="#TOP">Top of the page</a>
|
||||
</p>
|
||||
</body></html>
|
||||
|
|
18
TODO
18
TODO
|
@ -1,5 +1,5 @@
|
|||
#!/bin/cat
|
||||
# $Id: TODO,v 1.262 2022/01/11 12:56:18 gilles Exp gilles $
|
||||
# $Id: TODO,v 1.265 2022/02/22 15:16:48 gilles Exp gilles $
|
||||
|
||||
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||
|
||||
|
@ -9,9 +9,23 @@ TODO file for imapsync
|
|||
|
||||
https://imapsync.lamiral.info/TODO
|
||||
|
||||
|
||||
SUGGESTED 2022_02_19
|
||||
Talk about size discrepencies.
|
||||
Gmail doesn't count duplicates sizes twice.
|
||||
Servers reported message sizes are always not the actual messages sizes.
|
||||
Where put that information?
|
||||
|
||||
SUGGESTED 2022_01_26 by Kuch/Mitchell/D.
|
||||
Make --delete1 be optionally "Move to Trash folder"
|
||||
Use MOVE if possible
|
||||
https://datatracker.ietf.org/doc/html/rfc6851
|
||||
|
||||
SUGGESTED 2022_01_09 by Neustradamus
|
||||
Add SCRAM-SHA* support
|
||||
https://github.com/imapsync/imapsync/issues/313
|
||||
https://perldoc.perl.org/Digest::SHA
|
||||
|
||||
|
||||
SUGGESTED 2021_06_13 by rotemes
|
||||
https://github.com/imapsync/imapsync/issues/288
|
||||
|
@ -530,7 +544,7 @@ Write a Windows tutorial, TUTORIAL_Windows.html.
|
|||
|
||||
Write a good practices migration tips document, GOOD_PRACTICES.html
|
||||
|
||||
Add uidexpunge with --delete if possible (like with --delete2).
|
||||
Add uidexpunge with --delete1 if possible (like with --delete2).
|
||||
|
||||
Add the possibility to specify a unity with --maxsize and --minsize
|
||||
Example --maxsize 10MB --minsize 10KB
|
||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
|||
2.178
|
||||
2.200
|
||||
|
|
218
X/cgi_memo
218
X/cgi_memo
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
# $Id: cgi_memo,v 1.74 2021/11/25 11:25:13 gilles Exp gilles $
|
||||
# $Id: cgi_memo,v 1.78 2022/03/28 09:24:08 gilles Exp gilles $
|
||||
|
||||
if test -n "$1"; then
|
||||
echoq() { echo "$@" ; } # not quiet mode
|
||||
|
@ -154,10 +154,10 @@ longest_transfer()
|
|||
LC_ALL=C printf "%.0f\n" `datamash_file_op_index "$statsfile" max 4`
|
||||
}
|
||||
|
||||
echoq number_and_pids_of_imapsync_running
|
||||
number_and_pids_of_imapsync_running()
|
||||
{
|
||||
echo "`number_of_imapsync_running` : `pids_of_imapsync_running`"
|
||||
|
||||
echoq pids_of_imapsync_running
|
||||
pids_of_imapsync_running() {
|
||||
pgrep -d ' ' -f cgi-bin/imapsync
|
||||
: # always return true
|
||||
}
|
||||
|
||||
|
@ -168,12 +168,25 @@ number_of_imapsync_running()
|
|||
: # always return true
|
||||
}
|
||||
|
||||
echoq pids_of_imapsync_running
|
||||
pids_of_imapsync_running() {
|
||||
pgrep -d ' ' -f cgi-bin/imapsync
|
||||
echoq number_and_pids_of_imapsync_running
|
||||
number_and_pids_of_imapsync_running()
|
||||
{
|
||||
echo "`number_of_imapsync_running` : `pids_of_imapsync_running`"
|
||||
: # always return true
|
||||
}
|
||||
|
||||
echoq memory_used_by_all_imapsync_KiB
|
||||
memory_used_by_all_imapsync_KiB()
|
||||
{
|
||||
# Sum up all memory taken by imapsync runs, in KiB.
|
||||
pids_of_imapsync_running=`pids_of_imapsync_running`
|
||||
if test -n "$pids_of_imapsync_running" ; then
|
||||
ps -o vsz -p $pids_of_imapsync_running | sed 1,1d | datamash sum 1
|
||||
else
|
||||
echo 0
|
||||
fi
|
||||
}
|
||||
|
||||
echoq oom_immune_imapsync_running
|
||||
oom_immune_imapsync_running() {
|
||||
for pid in `pids_of_imapsync_running`
|
||||
|
@ -335,43 +348,41 @@ grep_all_stat_from_patterns_list() {
|
|||
|
||||
sum_first_column_G_HTTP_USER_AGENT_sorted()
|
||||
{
|
||||
awk '{sum += $1} END {print sum}' G_HTTP_USER_AGENT_sorted.txt
|
||||
awk '{sum += $1} END {print sum}' G_HTTP_USER_AGENT_${1}_sorted.txt
|
||||
}
|
||||
|
||||
stat_useragent_X()
|
||||
{
|
||||
grep -o 'HTTP_USER_AGENT.*' G_HTTP_USER_AGENT.txt \
|
||||
grep -o 'HTTP_USER_AGENT.*' G_HTTP_USER_AGENT_$1.txt \
|
||||
| tail -10000000 | sort | egrep -o -w 'Mozilla/5.0 \([^;]+' \
|
||||
| sort | egrep -o '\([a-zA-Z]+' | sort | uniq -c | sort -g \
|
||||
| grep -v KHTML | tr -d '(' > G_HTTP_USER_AGENT_sorted.txt
|
||||
|
||||
|
||||
| grep -v KHTML | tr -d '(' > G_HTTP_USER_AGENT_${1}_sorted.txt
|
||||
}
|
||||
|
||||
echoq 'percent_stat_useragent_X'
|
||||
percent_stat_useragent_X()
|
||||
{
|
||||
stat_useragent_X
|
||||
sum_first_column_G_HTTP_USER_AGENT=`sum_first_column_G_HTTP_USER_AGENT_sorted`
|
||||
stat_useragent_X "$1"
|
||||
sum_first_column_G_HTTP_USER_AGENT=`sum_first_column_G_HTTP_USER_AGENT_sorted $1`
|
||||
{ while read num_useragent useragent ; do
|
||||
#echo KK $num_useragent $useragent
|
||||
PerCent=`echo "scale=2; 100*$num_useragent/$sum_first_column_G_HTTP_USER_AGENT" | bc -l`
|
||||
echo "$useragent $PerCent % ( $num_useragent / $sum_first_column_G_HTTP_USER_AGENT )"
|
||||
done
|
||||
} < G_HTTP_USER_AGENT_sorted.txt
|
||||
} < G_HTTP_USER_AGENT_${1}_sorted.txt
|
||||
|
||||
}
|
||||
|
||||
|
||||
stat_load()
|
||||
{
|
||||
echo -n 'Load 1 min 5 min 15 min ' ; grep -o 'on.*cores' G_Load.txt|uniq
|
||||
echo -n 'Load min: ' ; datamash --format=%3.1f -W min 3 min 4 min 5 < G_Load.txt
|
||||
echo -n 'Load q1: ' ; datamash --format=%3.1f -W q1 3 q1 4 q1 5 < G_Load.txt
|
||||
echo -n 'Load median: ' ; datamash --format=%3.1f -W median 3 median 4 median 5 < G_Load.txt
|
||||
echo -n 'Load mean: ' ; datamash --format=%3.1f -W mean 3 mean 4 mean 5 < G_Load.txt
|
||||
echo -n 'Load q3: ' ; datamash --format=%3.1f -W q3 3 q3 4 q3 5 < G_Load.txt
|
||||
echo -n 'Load max: ' ; datamash --format=%3.1f -W max 3 max 4 max 5 < G_Load.txt
|
||||
echo -n 'Load 1 min 5 min 15 min ' ; grep -o 'on.*cores' G_Load_$1.txt | uniq
|
||||
echo -n 'Load min: ' ; datamash --format=%3.1f -W min 3 min 4 min 5 < G_Load_$1.txt
|
||||
echo -n 'Load q1: ' ; datamash --format=%3.1f -W q1 3 q1 4 q1 5 < G_Load_$1.txt
|
||||
echo -n 'Load median: ' ; datamash --format=%3.1f -W median 3 median 4 median 5 < G_Load_$1.txt
|
||||
echo -n 'Load mean: ' ; datamash --format=%3.1f -W mean 3 mean 4 mean 5 < G_Load_$1.txt
|
||||
echo -n 'Load q3: ' ; datamash --format=%3.1f -W q3 3 q3 4 q3 5 < G_Load_$1.txt
|
||||
echo -n 'Load max: ' ; datamash --format=%3.1f -W max 3 max 4 max 5 < G_Load_$1.txt
|
||||
}
|
||||
|
||||
echoq stat_exit_value
|
||||
|
@ -432,49 +443,82 @@ stat_any() {
|
|||
echoq stat_all
|
||||
stat_all()
|
||||
{
|
||||
stat_load ; echo
|
||||
stat_load "$1" ; echo
|
||||
|
||||
# stat_any G_REMOTE_ADDR.txt
|
||||
# stat_any G_REMOTE_HOST.txt
|
||||
# stat_any G_HTTP_COOKIE.txt
|
||||
# stat_any G_HTTP_REFERER.txt
|
||||
|
||||
# See various_usefull()
|
||||
# stat_any G_Host1_IMAP_server.txt
|
||||
# stat_any G_Host2_IMAP_server.txt
|
||||
echo G_REMOTE_ADDR_$1.txt
|
||||
egrep -o 'REMOTE_ADDR is .*' G_REMOTE_ADDR_$1.txt | sort -g | uniq -c | sort -g | tail -5
|
||||
|
||||
# stat_any G_Host1_banner.txt
|
||||
# stat_any G_Host2_banner.txt
|
||||
echo
|
||||
echo G_REMOTE_HOST_$1.txt
|
||||
egrep -o 'REMOTE_HOST is .*' G_REMOTE_HOST_$1.txt | sort -g | uniq -c | sort -g | tail -5
|
||||
|
||||
stat_any G_Host1_Nb_messages.txt
|
||||
stat_any G_Host2_Nb_messages.txt
|
||||
stat_any G_Messages_transferred.txt
|
||||
stat_any G_Messages_skipped.txt
|
||||
stat_any G_Messages_found_in_host1_not_in_host2.txt 9
|
||||
stat_any G_Messages_found_in_host2_not_in_host1.txt 9
|
||||
echo
|
||||
echo G_HTTP_COOKIE_$1.txt
|
||||
egrep -o 'imapsync_runs=[0-9]+' G_HTTP_COOKIE_$1.txt | egrep -o '[0-9]+' | sort -n | tail -1
|
||||
|
||||
# stat_any G_HTTP_REFERER.txt
|
||||
echo
|
||||
echo G_HTTP_REFERER_$1.txt
|
||||
egrep -o 'HTTP_REFERER is .*' G_HTTP_REFERER_$1.txt | sort -g | uniq -c | sort -g
|
||||
|
||||
echo
|
||||
echo G_Host1_IMAP_server_$1.txt
|
||||
cat G_Host1_IMAP_server_$1.txt | datamash -s -W -g 4 count 4 | awk '{ print $2 " " $1 }' | sort -g | tail -5
|
||||
|
||||
echo
|
||||
echo G_Host2_IMAP_server_$1.txt
|
||||
cat G_Host2_IMAP_server_$1.txt | datamash -s -W -g 4 count 4 | awk '{ print $2 " " $1 }' | sort -g | tail -5
|
||||
|
||||
|
||||
echo
|
||||
stat_any G_Host1_Nb_messages_$1.txt
|
||||
stat_any G_Host2_Nb_messages_$1.txt
|
||||
stat_any G_Messages_transferred_$1.txt
|
||||
stat_any G_Messages_skipped_$1.txt
|
||||
stat_any G_Messages_found_in_host1_not_in_host2_$1.txt 9
|
||||
stat_any G_Messages_found_in_host2_not_in_host1_$1.txt 9
|
||||
|
||||
# stat_any G_Folders_synced.txt
|
||||
egrep -o '[0-9]+/[0-9]+ synced' G_Folders_synced.txt | egrep -o '^[0-9]+' > G_Folders_synced_.txt
|
||||
egrep -o '[0-9]+/[0-9]+ synced' G_Folders_synced.txt | egrep -o '[0-9]+/[0-9]+' | egrep -o '[0-9]+$' > G_Folders_total_seen.txt
|
||||
stat_any G_Folders_synced_.txt 1
|
||||
stat_any G_Folders_total_seen.txt 1
|
||||
egrep -o '[0-9]+/[0-9]+ synced' G_Folders_synced_$1.txt | egrep -o '^[0-9]+' > G_Folders_synced__$1.txt
|
||||
egrep -o '[0-9]+/[0-9]+ synced' G_Folders_synced_$1.txt | egrep -o '[0-9]+/[0-9]+' | egrep -o '[0-9]+$' > G_Folders_total_seen_$1.txt
|
||||
stat_any G_Folders_synced__$1.txt 1
|
||||
stat_any G_Folders_total_seen_$1.txt 1
|
||||
|
||||
#
|
||||
stat_any G_Transfer_time.txt
|
||||
stat_any G_Host1_Total_size.txt
|
||||
stat_any G_Host2_Total_size.txt
|
||||
stat_any G_Total_bytes_transferred.txt 5
|
||||
stat_any G_Message_rate.txt
|
||||
stat_any G_Average_bandwidth_rate.txt 5
|
||||
stat_any G_Biggest_message.txt
|
||||
stat_any G_Detected_errors.txt 2
|
||||
stat_any G_Transfer_time_$1.txt
|
||||
stat_any G_Host1_Total_size_$1.txt
|
||||
stat_any G_Host2_Total_size_$1.txt
|
||||
stat_any G_Total_bytes_transferred_$1.txt 5
|
||||
stat_any G_Message_rate_$1.txt
|
||||
stat_any G_Average_bandwidth_rate_$1.txt 5
|
||||
stat_any G_Biggest_message_$1.txt
|
||||
stat_any G_Detected_errors_$1.txt 2
|
||||
#stat_any G_Exiting_with_return_value.txt 5 # GROUP
|
||||
stat_any G_Memory_consumption_at_the_end.txt 7
|
||||
stat_any G_Memory_consumption_at_the_end_$1.txt 7
|
||||
#stat_any G_failure_Error_login.txt
|
||||
percent_stat_useragent_X ; echo
|
||||
stat_exit_value
|
||||
|
||||
echo "Data made at" `date -r grep_stats.txt`
|
||||
echo cpu time
|
||||
stat_any G_CPU_time_and_cpu_$1.txt 6
|
||||
echo '%allcpus'
|
||||
stat_any G_CPU_time_and_cpu_$1.txt 10
|
||||
|
||||
echo G_Host1_banner_$1.txt
|
||||
server_survey_percent G_Host1_banner_$1.txt | tail -6
|
||||
|
||||
echo
|
||||
echo G_Host2_banner_$1.txt
|
||||
server_survey_percent G_Host2_banner_$1.txt | tail -6
|
||||
|
||||
echo
|
||||
echo USER_AGENT
|
||||
percent_stat_useragent_X $1 ;
|
||||
|
||||
echo
|
||||
echo EXIT values
|
||||
stat_exit_value $1
|
||||
|
||||
echo
|
||||
echo "Data made at" `date -r grep_stats_$1.txt`
|
||||
}
|
||||
|
||||
stat_transfer_time_mean()
|
||||
|
@ -1217,20 +1261,49 @@ div_1_by_2_or_zero()
|
|||
fi
|
||||
}
|
||||
|
||||
|
||||
load_1m_linux()
|
||||
{
|
||||
cat /proc/loadavg | cut -d' ' -f1
|
||||
}
|
||||
|
||||
load_1m_freebsd()
|
||||
{
|
||||
/sbin/sysctl vm.loadavg | egrep -o '[0-9]+\.[0-9]++' | head -1
|
||||
}
|
||||
|
||||
load_1m()
|
||||
{
|
||||
here_is_linux && load_1m_linux
|
||||
here_is_freebsd && load_1m_freebsd
|
||||
}
|
||||
|
||||
KiBytes_to_Bytes()
|
||||
{
|
||||
expr 1024 \* $1
|
||||
}
|
||||
|
||||
echoq number_of_imapsync_running_bandwidth
|
||||
number_of_imapsync_running_bandwidth()
|
||||
{
|
||||
# Maybe I could do two number_of_imapsync_running one before
|
||||
# one after and average the two.
|
||||
nir=`number_of_imapsync_running`
|
||||
load_1m=`load_1m`
|
||||
nbsr=`number_of_bytes_sent_received_per_second_during ${1:-1}`
|
||||
mubaiKiB=`memory_used_by_all_imapsync_KiB`
|
||||
mubaiB=`KiBytes_to_Bytes $mubaiKiB`
|
||||
mubai_human=`bytestohuman $mubaiB`
|
||||
ratio=`div_1_by_2_or_zero $nbsr $nir`
|
||||
date=`date_ymdhms`
|
||||
date_u=`LANG= date -u`
|
||||
nbsr_human=`bytestohuman $nbsr`
|
||||
ratio_human=`bytestohuman $ratio`
|
||||
echo "$date $nir $nbsr $ratio $nbsr_human$ratio_human"
|
||||
echo "Current number of syncs: $nir; Current total bandwidth: $nbsr_human/s; Current bandwidth per sync: $ratio_human/s; Current date/time: $date_u; ">/var/tmp/imapsync_current.txt
|
||||
echo "$date $nir $nbsr $ratio $nbsr_human $ratio_human $load_1m $mubaiKiB"
|
||||
echo "Load: $load_1m; Mem: $mubai_human; Number of syncs: $nir; Total bandwidth: $nbsr_human/s; Bandwidth per sync: $ratio_human/s; Date/time: $date_u; ">/var/tmp/imapsync_current.txt
|
||||
}
|
||||
|
||||
|
||||
echoq loop_number_of_imapsync_running_bandwidth
|
||||
loop_number_of_imapsync_running_bandwidth()
|
||||
{
|
||||
|
@ -1249,35 +1322,30 @@ echoq various_usefull
|
|||
various_usefull() {
|
||||
cat <<'EOF'
|
||||
strace -e trace=signal -f `pgrep /usr/sbin/apach | xargs -n1 echo -n " -p "` 2>&1
|
||||
egrep -o '[0-9]+/[0-9]+' G_Folders_synced.txt | sort -g
|
||||
egrep -o '[0-9]+/[0-9]+' G_Folders_synced.txt | sort -t/ -g -k2 | uniq -c
|
||||
egrep -o '* ID .*' G_Read___ID.txt | sort | uniq -c | sort -n
|
||||
egrep -o 'imapsync_runs=[0-9]+' G_HTTP_COOKIE.txt | egrep -o '[0-9]+' | sort -n | uniq -c | sort -g -k1,2
|
||||
egrep -o 'HTTP_REFERER is .*' G_HTTP_REFERER.txt | sort -g | uniq -c | sort -g
|
||||
egrep -o 'REMOTE_HOST is .*' G_REMOTE_HOST.txt | sort -g | uniq -c | sort -g
|
||||
egrep -o 'REMOTE_ADDR is .*' G_REMOTE_ADDR.txt | sort -g | uniq -c | sort -g
|
||||
datamash -s -W -g 4 count 4 < G_Host1_IMAP_server.txt | awk '{ print $2 " " $1 }' | sort -g | tail -22
|
||||
datamash -s -W -g 4 count 4 < G_Host2_IMAP_server.txt | awk '{ print $2 " " $1 }' | sort -g | tail -22
|
||||
egrep -o '* ID .*' G_Read___ID.txt | sort | awk '{ print $1 " " $2 " " $3 " NIL" }' | datamash -s -W -g 3 count 3 | awk '{ print $2 " " $1 }' | sort -g
|
||||
|
||||
locate perl.core | xargs -n 1 gdb -q -x /tmp/gdb_quit.txt -c
|
||||
|
||||
zcat /var/log/apache/httpd-access.log.*.gz|egrep -o -w 'Mozilla/5.0 \([^;]+' | sort | egrep -o '\([a-zA-Z]+' | sort | uniq -c | sort -g | grep -v KHTML
|
||||
zcat /var/log/apache/httpd-access.log.*.gz|grep 'POST /cgi-bin/imapsync' | egrep -o -w 'Mozilla/5.0 \([^;]+' | sort | egrep -o '\([a-zA-Z]+' | sort | uniq -c | sort -g | grep -v KHTML
|
||||
|
||||
egrep -o '\[.+@[^]]+]' G_success_login.txt |head -222222 | sort | uniq -c | sort -g
|
||||
cat G_success_login_on.txt | ./domains_servers_map | sort | uniq -c | sort -g
|
||||
|
||||
list_all_logs |tail -9999 | xargs grep -i 'Exiting with return value 112' | tee Error_112_last_9999_syncs.txt
|
||||
cut -d: -f1 Error_112_last_30_days.txt | xargs grep -oih 'Invalid system flag.*' | sort | uniq -c
|
||||
|
||||
list_all_logs | xargs grep -i 'Exiting with return value 112' | tee Error_112_all_syncs.txt
|
||||
cut -d: -f1 Error_112_all_syncs.txt | tail -100 | xargs egrep -oih 'Invalid system flag [^(]+' | sort | uniq -c
|
||||
cat G_success_login_on.txt | ./domains_servers_map | sort | uniq -c | sort -g
|
||||
|
||||
logfiles_finished_recently -300| xargs grep -i 'Exiting with return value 10 ' | grep -v 'return value 0 ' | cut -d: -f1 | xargs tail -11 | grep 'failure: can not open imap connection on' | uniq -c | sort -g | grep http | tee ../http_host_failures.txt
|
||||
|
||||
# Searching big messages copied over 500 MB
|
||||
list_all_logs|tail -50000 | xargs egrep '{.?[56789]........} copied'
|
||||
|
||||
# online processes stats
|
||||
cat /var/tmp/number_of_imapsync_running.txt | datamash -W min 2 max 2 mean 2 median 2 q1 2 q3 2
|
||||
cat /var/tmp/number_of_imapsync_running_every_60s.txt | datamash -W min 2 max 2 mean 2 median 2 q1 2 q3 2
|
||||
for v in 2 3 4; do cat /var/tmp/number_of_imapsync_running_every_6s.txt | datamash --format=%10.0f -W min $v max $v mean $v median $v q1 $v q3 $v ; done
|
||||
netstat -I em0 -b -n -w 6 -q 1
|
||||
while :; do ssh root@ks5 'cd /var/tmp/imapsync_cgi/ ; . cgi_memo ; loop_number_of_imapsync_running_bandwidth 6' ; echo $?; done
|
||||
|
@ -1289,6 +1357,20 @@ cat G_Host1_Nb_messages.txt | sort -g -k4 | grep 202[01] |tail -100 | cut -f1 -
|
|||
|
||||
# Best bandwidth moments
|
||||
cat /var/tmp/number_of_imapsync_running_every_60s.txt | sort -k3 -g| tail -66
|
||||
|
||||
# Sort by number of parallel runs and by load in case of equality
|
||||
cat /var/tmp/number_of_imapsync_running_every_60s.txt | grep ^2022_ | sort -k2 -k9 -g | tail -666
|
||||
|
||||
# Sort by number of parallel runs and by bandwidth in case of equality
|
||||
cat /var/tmp/number_of_imapsync_running_every_60s.txt | grep ^2022_ | sort -k2 -k3 -g | tail -666
|
||||
|
||||
|
||||
# getrusage on FreeBSD, espacially disk i/o
|
||||
procstat -r `pgrep -f cgi-bin/imapsync`
|
||||
|
||||
# Sum up all memory taken by imapsync runs, in KiB.
|
||||
ps -o vsz -p `pgrep -f cgi-bin/imapsync` | sed 1,1d | datamash sum 1
|
||||
memory_used_by_all_imapsync_KiB
|
||||
EOF
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
// $Id: imapsync_form.js,v 1.26 2021/12/18 19:01:52 gilles Exp gilles $
|
||||
// $Id: imapsync_form.js,v 1.27 2022/01/30 20:57:46 gilles Exp gilles $
|
||||
|
||||
/*jslint browser: true*/ /*global $*/
|
||||
|
||||
|
@ -751,9 +751,9 @@ $(document).ready(
|
|||
|
||||
if ( "imapsync.lamiral.info" === location.hostname )
|
||||
{
|
||||
$( "#status_24h" ).attr('src', 'https://lstu.fr/imapsync_online_status_24h_1200x70') ;
|
||||
$( "#status_7d" ).attr('src', 'https://lstu.fr/imapsync_online_status_7d') ;
|
||||
$( "#status_2m" ).attr('src', 'https://lstu.fr/imapsync_online_status_2months_1200x70') ;
|
||||
// $( "#status_24h" ).attr('src', 'https://lstu.fr/imapsync_online_status_24h_1200x70') ;
|
||||
// $( "#status_7d" ).attr('src', 'https://lstu.fr/imapsync_online_status_7d') ;
|
||||
// $( "#status_2m" ).attr('src', 'https://lstu.fr/imapsync_online_status_2months_1200x70') ;
|
||||
$( "#local_bandwidth" ).collapse( "show" ) ;
|
||||
$( "#local_status_dbmon" ).collapse( "show" ) ;
|
||||
$( "#local_status_hetrix" ).collapse( "show" ) ;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<!-- $Id: imapsync_form_extra.html,v 1.22 2021/12/18 19:03:46 gilles Exp gilles $ -->
|
||||
<!-- $Id: imapsync_form_extra.html,v 1.25 2022/02/18 17:06:24 gilles Exp gilles $ -->
|
||||
|
||||
<html lang="en" id="top">
|
||||
|
||||
|
@ -103,6 +103,9 @@
|
|||
<datalist id="servers1">
|
||||
<option value="imap.gmail.com">
|
||||
<option value="outlook.office365.com">
|
||||
<option value="imap.hostinger.com">
|
||||
<option value="ssl0.ovh.net">
|
||||
<option value="email-ssl.com.br">
|
||||
<option value="imap.mail.yahoo.com">
|
||||
</datalist>
|
||||
</div>
|
||||
|
@ -231,6 +234,9 @@
|
|||
<datalist id="servers2">
|
||||
<option value="imap.gmail.com">
|
||||
<option value="outlook.office365.com">
|
||||
<option value="imap.hostinger.com">
|
||||
<option value="ssl0.ovh.net">
|
||||
<option value="email-ssl.com.br">
|
||||
<option value="imap.mail.yahoo.com">
|
||||
</datalist>
|
||||
</div>
|
||||
|
@ -401,36 +407,9 @@
|
|||
<hr>
|
||||
<p class="text-center">
|
||||
Imapsync <b>Online Status</b> over the <b>last 24h</b><br>
|
||||
<img id="status_24h" class="img-responsive center-block" alt="Imapsync Online Status" src="imapsync_online_status_24h_1200x70.png">
|
||||
<a href="imapsync_online_status.html"><img id="status_24h" class="img-responsive center-block" alt="Imapsync Online Status over the last 24h" src="https://sup.lamiral.info/dbmon/cgi-bin/rrdview.cgi?child=yes&rrdfile=%2Fvar%2Ftmp%2Fdbmon%2Ftests%2Frrdbases%2Flocalhost~2583~LAMIRAL~Imapsync_Online~LAMIRAL%2CImapsync_Online~opstatus~300~.rrd;interval_vue=p86400;date_given_by=now;date_means=end;dsname=opstatus;width=1200;hight=70;lower=0;upper=100;rigid=on;Beautiful%20Image%21.x=128;Beautiful%20Image%21.y=30;title=Service%20Status;owner=Imapsync_Online;caption=Status%20in%20%25;monitor=https.rrdrt.monitor%20--rrdrt%20imapsync.lamiral.info%2Fcgi-bin%2Fimapsync%20%3B%3B">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p class="text-center">
|
||||
Imapsync <b>Online Status</b> over the <b>last week</b><br>
|
||||
<img id="status_7d" class="img-responsive center-block" alt="Imapsync Online Status" src="imapsync_online_status_7d_1200x70.png">
|
||||
</p>
|
||||
|
||||
<p class="text-center">
|
||||
Imapsync <b>Online Status</b> over the <b>last two months</b><br>
|
||||
<img id="status_2m" class="img-responsive center-block" alt="Imapsync Online Status" src="imapsync_online_status_2months_1200x70.png"><br>
|
||||
</p>
|
||||
|
||||
|
||||
<!--
|
||||
Uncomment the following when the data are available
|
||||
-->
|
||||
<!--
|
||||
|
||||
<p class="text-center">
|
||||
Imapsync <b>Online Status</b> over the <b>last year</b><br>
|
||||
<img id="status_1y" class="img-responsive center-block" alt="Imapsync Online Status" src="https://lstu.fr/imapsync_online_status_1year_1200x70"><br>
|
||||
</p>
|
||||
|
||||
<p class="text-center">
|
||||
Imapsync <b>Online Status</b> over the <b>last 10 years</b><br>
|
||||
<img id="status_10y" class="img-responsive center-block" alt="Imapsync Online Status" src="https://lstu.fr/imapsync_online_status_10years_1200x70-2"><br>
|
||||
</p>
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -463,7 +442,7 @@ monitor page powered by the <a href="https://hetrixtools.com/uptime-monitor/4143
|
|||
<!-- <a href="#buttons" class="btn btn-info scripton" role="button">Consoles</a> -->
|
||||
<a href="#bottom" title="Bottom of the page" class="btn btn-info active" role="button">Bottom</a>
|
||||
<br>
|
||||
<small> ($Id: imapsync_form_extra.html,v 1.22 2021/12/18 19:03:46 gilles Exp gilles $) </small><br>
|
||||
<small> ($Id: imapsync_form_extra.html,v 1.25 2022/02/18 17:06:24 gilles Exp gilles $) </small><br>
|
||||
Terms and conditions for anything: <a href="https://imapsync.lamiral.info/LICENSE">No limits to do anything with this work and this license!</a><br>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<!-- $Id: imapsync_form_extra_free.html,v 1.23 2021/12/18 19:03:46 gilles Exp gilles $ -->
|
||||
<!-- $Id: imapsync_form_extra_free.html,v 1.27 2022/02/20 09:37:45 gilles Exp gilles $ -->
|
||||
|
||||
<html lang="en" id="top">
|
||||
|
||||
|
@ -161,6 +161,9 @@ It's <b>ok</b> if you <b>don't</b> have a VAT number.<br />
|
|||
<datalist id="servers1">
|
||||
<option value="imap.gmail.com">
|
||||
<option value="outlook.office365.com">
|
||||
<option value="imap.hostinger.com">
|
||||
<option value="ssl0.ovh.net">
|
||||
<option value="email-ssl.com.br">
|
||||
<option value="imap.mail.yahoo.com">
|
||||
</datalist>
|
||||
</div>
|
||||
|
@ -289,6 +292,9 @@ It's <b>ok</b> if you <b>don't</b> have a VAT number.<br />
|
|||
<datalist id="servers2">
|
||||
<option value="imap.gmail.com">
|
||||
<option value="outlook.office365.com">
|
||||
<option value="imap.hostinger.com">
|
||||
<option value="ssl0.ovh.net">
|
||||
<option value="email-ssl.com.br">
|
||||
<option value="imap.mail.yahoo.com">
|
||||
</datalist>
|
||||
</div>
|
||||
|
@ -460,36 +466,9 @@ It's <b>ok</b> if you <b>don't</b> have a VAT number.<br />
|
|||
<hr>
|
||||
<p class="text-center">
|
||||
Imapsync <b>Online Status</b> over the <b>last 24h</b><br>
|
||||
<img id="status_24h" class="img-responsive center-block" alt="Imapsync Online Status" src="imapsync_online_status_24h_1200x70.png">
|
||||
<a href="imapsync_online_status.html"><img id="status_24h" class="img-responsive center-block" alt="Imapsync Online Status over the last 24h" src="https://sup.lamiral.info/dbmon/cgi-bin/rrdview.cgi?child=yes&rrdfile=%2Fvar%2Ftmp%2Fdbmon%2Ftests%2Frrdbases%2Flocalhost~2583~LAMIRAL~Imapsync_Online~LAMIRAL%2CImapsync_Online~opstatus~300~.rrd;interval_vue=p86400;date_given_by=now;date_means=end;dsname=opstatus;width=1200;hight=70;lower=0;upper=100;rigid=on;Beautiful%20Image%21.x=128;Beautiful%20Image%21.y=30;title=Service%20Status;owner=Imapsync_Online;caption=Status%20in%20%25;monitor=https.rrdrt.monitor%20--rrdrt%20imapsync.lamiral.info%2Fcgi-bin%2Fimapsync%20%3B%3B">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p class="text-center">
|
||||
Imapsync <b>Online Status</b> over the <b>last week</b><br>
|
||||
<img id="status_7d" class="img-responsive center-block" alt="Imapsync Online Status" src="imapsync_online_status_7d_1200x70.png">
|
||||
</p>
|
||||
|
||||
<p class="text-center">
|
||||
Imapsync <b>Online Status</b> over the <b>last two months</b><br>
|
||||
<img id="status_2m" class="img-responsive center-block" alt="Imapsync Online Status" src="imapsync_online_status_2months_1200x70.png"><br>
|
||||
</p>
|
||||
|
||||
|
||||
<!--
|
||||
Uncomment the following when the data are available
|
||||
-->
|
||||
<!--
|
||||
|
||||
<p class="text-center">
|
||||
Imapsync <b>Online Status</b> over the <b>last year</b><br>
|
||||
<img id="status_1y" class="img-responsive center-block" alt="Imapsync Online Status" src="https://lstu.fr/imapsync_online_status_1year_1200x70"><br>
|
||||
</p>
|
||||
|
||||
<p class="text-center">
|
||||
Imapsync <b>Online Status</b> over the <b>last 10 years</b><br>
|
||||
<img id="status_10y" class="img-responsive center-block" alt="Imapsync Online Status" src="https://lstu.fr/imapsync_online_status_10years_1200x70-2"><br>
|
||||
</p>
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -522,7 +501,7 @@ monitor page powered by the <a href="https://hetrixtools.com/uptime-monitor/4143
|
|||
<!-- <a href="#buttons" class="btn btn-info scripton" role="button">Consoles</a> -->
|
||||
<a href="#bottom" title="Bottom of the page" class="btn btn-info active" role="button">Bottom</a>
|
||||
<br>
|
||||
<small> ($Id: imapsync_form_extra_free.html,v 1.23 2021/12/18 19:03:46 gilles Exp gilles $) </small><br>
|
||||
<small> ($Id: imapsync_form_extra_free.html,v 1.27 2022/02/20 09:37:45 gilles Exp gilles $) </small><br>
|
||||
Terms and conditions for anything: <a href="https://imapsync.lamiral.info/LICENSE">No limits to do anything with this work and this license!</a><br>
|
||||
</div>
|
||||
</div>
|
||||
|
|
50
X/imapsync_online_status.html
Normal file
50
X/imapsync_online_status.html
Normal file
|
@ -0,0 +1,50 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<!-- $Id: imapsync_online_status.html,v 1.1 2022/02/18 17:07:03 gilles Exp gilles $ -->
|
||||
|
||||
<html lang="en" id="top">
|
||||
|
||||
<head>
|
||||
<title>Imapsync Online Status</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Imapsync Online Status over the last 24h</h2>
|
||||
<p>
|
||||
<img id="status_24h" class="img-responsive center-block" alt="Imapsync Online Status over the last 24h" src="https://sup.lamiral.info/dbmon/cgi-bin/rrdview.cgi?child=yes&rrdfile=%2Fvar%2Ftmp%2Fdbmon%2Ftests%2Frrdbases%2Flocalhost~2583~LAMIRAL~Imapsync_Online~LAMIRAL%2CImapsync_Online~opstatus~300~.rrd;interval_vue=p86400;date_given_by=now;date_means=end;dsname=opstatus;width=1200;hight=70;lower=0;upper=100;rigid=on;Beautiful%20Image%21.x=128;Beautiful%20Image%21.y=30;title=Service%20Status;owner=Imapsync%20Online;caption=Status%20in%20%25;monitor=https.rrdrt.monitor%20--rrdrt%20imapsync.lamiral.info%2Fcgi-bin%2Fimapsync%20%3B%3B">
|
||||
</p>
|
||||
|
||||
<h2>Imapsync Online Status over the last week</h2>
|
||||
<p>
|
||||
<img id="status_7d" class="img-responsive center-block" alt="Imapsync Online Status over the last week" src="https://sup.lamiral.info/dbmon/cgi-bin/rrdview.cgi?child=yes&rrdfile=%2Fvar%2Ftmp%2Fdbmon%2Ftests%2Frrdbases%2Flocalhost~2583~LAMIRAL~Imapsync_Online~LAMIRAL%2CImapsync_Online~opstatus~300~.rrd;interval_vue=p604800;year=2021;mon=%205;mday=%209;hour=13;min=15;date_given_by=now;date_means=end;dsname=opstatus;width=1200;hight=70;lower=0;upper=100;rigid=on;Beautiful%20Image%21.x=571;Beautiful%20Image%21.y=67;title=Service%20Status;owner=Imapsync%20Online;caption=Status%20in%20%25;start=1619954142;end=1620558942;width_old=1200;hight_old=70;monitor=https.rrdrt.monitor%20--rrdrt%20imapsync.lamiral.info%2Fcgi-bin%2Fimapsync%20%3B%3B">
|
||||
</p>
|
||||
|
||||
<h2>Imapsync Online Status over the last two months</h2>
|
||||
<p>
|
||||
<img id="status_2m" class="img-responsive center-block" alt="Imapsync Online Status over the last two months" src="https://sup.lamiral.info/dbmon/cgi-bin/rrdview.cgi?child=yes&rrdfile=%2Fvar%2Ftmp%2Fdbmon%2Ftests%2Frrdbases%2Flocalhost~2583~LAMIRAL~Imapsync_Online~LAMIRAL%2CImapsync_Online~opstatus~300~.rrd;interval_vue=p5270400;year=2021;mon=%205;mday=%209;hour=15;min=47;date_given_by=now;date_means=end;dsname=opstatus;width=1200;hight=70;lower=0;upper=100;rigid=on;Beautiful%20Image%21.x=156;Beautiful%20Image%21.y=83;title=Service%20Status;owner=Imapsync%20Online;caption=Status%20in%20%25;start=1615297666;end=1620568066;width_old=1200;hight_old=70;monitor=https.rrdrt.monitor%20--rrdrt%20imapsync.lamiral.info%2Fcgi-bin%2Fimapsync%20%3B%3B"><br>
|
||||
</p>
|
||||
|
||||
<h2>Imapsync Online Status over the last year</h2>
|
||||
<p>
|
||||
<img id="status_1y" class="img-responsive center-block" alt="Imapsync Online Status" src="https://sup.lamiral.info/dbmon/cgi-bin/rrdview.cgi?child=yes&rrdfile=%2Fvar%2Ftmp%2Fdbmon%2Ftests%2Frrdbases%2Flocalhost~2583~LAMIRAL~Imapsync_Online~LAMIRAL%2CImapsync_Online~opstatus~300~.rrd;interval_vue=p31622400;year=2021;mon=%205;mday=%209;hour=15;min=50;date_given_by=now;date_means=end;dsname=opstatus;width=1200;hight=70;lower=0;upper=100;rigid=on;Beautiful%20Image%21.x=212;Beautiful%20Image%21.y=59;title=Service%20Status;owner=Imapsync%20Online;caption=Status%20in%20%25;start=1588945852;end=1620568252;width_old=1200;hight_old=70;monitor=https.rrdrt.monitor%20--rrdrt%20imapsync.lamiral.info%2Fcgi-bin%2Fimapsync%20%3B%3B"><br>
|
||||
</p>
|
||||
|
||||
<!--
|
||||
Uncomment the following when the data are available
|
||||
-->
|
||||
|
||||
<!--
|
||||
|
||||
<p class="text-center">
|
||||
Imapsync <b>Online Status</b> over the <b>last 10 years</b><br>
|
||||
<img id="status_10y" class="img-responsive center-block" alt="Imapsync Online Status" src="https://lstu.fr/imapsync_online_status_10years_1200x70-2"><br>
|
||||
</p>
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -1,48 +1,51 @@
|
|||
@REM $Id: imapsync_example.bat,v 1.11 2020/01/07 00:45:36 gilles Exp gilles $
|
||||
@REM $Id: imapsync_example.bat,v 1.12 2022/02/12 11:00:09 gilles Exp gilles $
|
||||
|
||||
@REM imapsync example batch for Windows users
|
||||
@REM lines beginning with @REM are just comments
|
||||
@REM Please read them, they are written for you, human folk.
|
||||
@REM Here is an imapsync example batch for Windows users.
|
||||
@REM Lines beginning with @REM are just comments.
|
||||
@REM Please read the comments, they are written for you, human folk.
|
||||
|
||||
@REM Read also https://imapsync.lamiral.info/README_Windows.txt
|
||||
@REM for more details on how to use imapsync on Windows.
|
||||
|
||||
@REM Now let us enter the real work to fit your needs
|
||||
@REM Replace below the 6 parameters
|
||||
@REM Now let us enter the real work to fit your needs.
|
||||
@REM Replace below the 6 parameters
|
||||
@REM "test1.lamiral.info" "test1" "secret1" "test2.lamiral.info" "test2" "secret2"
|
||||
@REM with your own values
|
||||
@REM Double quotes are necessary if a value contain one or more blanks.
|
||||
@REM with your values.
|
||||
@REM Double quotes are necessary if a value contains one or more blanks.
|
||||
|
||||
@REM value "test1.lamiral.info" for --host1 is the IMAP source server hostname or IP address
|
||||
@REM value "test1" for --user1 is the IMAP source user login
|
||||
@REM value "secret1" for --password1 is the IMAP source user password
|
||||
@REM Value "test1.lamiral.info" for --host1 is the IMAP source server hostname or IP address.
|
||||
@REM Value "test1" for --user1 is the IMAP source user login.
|
||||
@REM Value "secret1" for --password1 is the IMAP source user password.
|
||||
|
||||
@REM value "test2.lamiral.info" for --host2 is the IMAP destination server hostname or IP address
|
||||
@REM value "test2" for --user2 is the IMAP destination user login
|
||||
@REM value "secret2" for --password2 is the IMAP destination user password
|
||||
@REM Value "test2.lamiral.info" for --host2 is the IMAP destination server hostname or IP address.
|
||||
@REM Value "test2" for --user2 is the IMAP destination user login.
|
||||
@REM Value "secret2" for --password2 is the IMAP destination user password.
|
||||
|
||||
@REM Character ^ at the end of the first line is essential and means
|
||||
@REM "this command continues on the next line". You can add other lines
|
||||
@REM but don't forget ^ character lasting each line, except the last one.
|
||||
@REM Also, there must be no other character after each lasting character ^
|
||||
@REM not even a blank invisible character, or you'll end up with an
|
||||
@REM error "Unknown command" with what you added.
|
||||
|
||||
@REM That is not all, keep on reading!
|
||||
|
||||
@REM Three other options are in this example because they are good to start with
|
||||
@REM
|
||||
@REM --dry makes imapsync doing nothing, just print what would be done without --dry.
|
||||
@REM so if you leave --dry then imapsync will not sync your data.
|
||||
@REM So, if you keep --dry then imapsync will not sync your data.
|
||||
|
||||
@REM --justfolders does only folders creations, it ignores messages.
|
||||
@REM This option is good to verify the folder mapping is good for you
|
||||
@REM without starting to copy/pollute folders with messages.
|
||||
@REM
|
||||
@REM --automap guesses folders mapping, it wors for folders like
|
||||
@REM "Sent", "Junk", "Drafts", "All", "Archive", "Flagged".
|
||||
@REM --automap guesses folders mapping, it works for folders like
|
||||
@REM "Sent", "Junk", "Drafts", "All", "Archive", "Flagged".
|
||||
@REM
|
||||
@REM I suggest/impose to start with --automap --justfolders --dry.
|
||||
@REM If the folder mapping you see in the output is not good then add
|
||||
@REM some options --f1f2 "folder1=folder2"
|
||||
@REM in oder to fix it.
|
||||
@REM to fix the mapping.
|
||||
|
||||
@REM Once you are happy with the folder names on the destination,
|
||||
@REM remove --dry and have a run to create folders on host2.
|
||||
|
|
7
i3
7
i3
|
@ -1,7 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# $Id: i3,v 1.20 2021/07/02 11:34:25 gilles Exp gilles $
|
||||
|
||||
BASE=`dirname $0`
|
||||
perl -I${BASE}/W/Mail-IMAPClient-3.43/lib ${BASE}/imapsync "$@"
|
||||
|
|
@ -74,7 +74,8 @@
|
|||
</h1>
|
||||
<h2>Afraid of losing all your precious emails?<br/>
|
||||
It's time to copy all of them elsewhere!<br/>
|
||||
Safely.
|
||||
Safely.<br/>
|
||||
And welcome to ex-Free Google Workspace people!
|
||||
</h2>
|
||||
|
||||
<!-- I use SSI here only to pass a strict xhtml validation that facebook/twitter/coinbase can't pass -->
|
||||
|
@ -880,6 +881,7 @@ you some struggling hours later</b>, believe me. So read the three columns main
|
|||
<li> <a href="FAQ.d/FAQ.IceWarp.txt">IceWarp</a>. </li>
|
||||
<li> <a href="FAQ.d/FAQ.DBmail.txt">DBmail</a>. </li>
|
||||
<li> <a href="FAQ.d/FAQ.FirstClass.txt">FirstClass</a>. </li>
|
||||
<li> <a href="FAQ.d/FAQ.James.txt">James</a>. </li>
|
||||
<li> <a href="FAQ.d/FAQ.Various_Software_Servers.txt">Other various imap software servers</a>. </li>
|
||||
|
||||
</ul>
|
||||
|
@ -987,7 +989,7 @@ like written in the <a href="LICENSE">https://imapsync.lamiral.info/LICENSE</a>
|
|||
<!--#config timefmt="%D" -->
|
||||
<!--#config timefmt="%A %B %d, %Y" -->
|
||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||
($Id: index.shtml,v 1.508 2021/12/20 17:49:51 gilles Exp gilles $)<br />
|
||||
($Id: index.shtml,v 1.511 2022/04/06 10:38:35 gilles Exp gilles $)<br />
|
||||
<a href="#TOP">Top of the page</a>
|
||||
</p>
|
||||
|
||||
|
|
114
tests.sh
114
tests.sh
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
# $Id: tests.sh,v 1.367 2022/01/13 12:59:05 gilles Exp gilles $
|
||||
# $Id: tests.sh,v 1.372 2022/04/06 10:07:32 gilles Exp gilles $
|
||||
|
||||
# To run these tests, you need a running imap server somewhere
|
||||
# with several accounts. And be on Linux or Unix.
|
||||
|
@ -239,14 +239,14 @@ option_tests_in_var_tmp_sub() {
|
|||
(
|
||||
mkdir -p /var/tmp/imapsync_tests
|
||||
cd /var/tmp/imapsync_tests
|
||||
/g/public_html/imapsync/i3 --tests
|
||||
/g/public_html/imapsync/imapsync --tests
|
||||
)
|
||||
}
|
||||
|
||||
option_tests_in_var_tmp() {
|
||||
(
|
||||
cd /var/tmp/
|
||||
/g/public_html/imapsync/i3 --tests
|
||||
/g/public_html/imapsync/imapsync --tests
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -420,6 +420,21 @@ ll() {
|
|||
--passfile2 ../../var/pass/secret.titi
|
||||
}
|
||||
|
||||
ll_diff_log_stdout_debugssl() {
|
||||
$CMD_PERL ./imapsync \
|
||||
--host1 $HOST1 --user1 tata \
|
||||
--passfile1 ../../var/pass/secret.tata \
|
||||
--host2 $HOST2 --user2 titi \
|
||||
--passfile2 ../../var/pass/secret.titi \
|
||||
--justlogin --debugssl 4 \
|
||||
--logfile ll_diff_log_stdout_debugssl_1.txt 2>&1 \
|
||||
| tee LOG_imapsync/ll_diff_log_stdout_debugssl_2.txt
|
||||
echo
|
||||
diff LOG_imapsync/ll_diff_log_stdout_debugssl_1.txt LOG_imapsync/ll_diff_log_stdout_debugssl_2.txt
|
||||
}
|
||||
|
||||
|
||||
|
||||
ll_INBOX() {
|
||||
$CMD_PERL ./imapsync \
|
||||
--host1 $HOST1 --user1 tata \
|
||||
|
@ -552,6 +567,17 @@ ll_search_larger() {
|
|||
--search 'LARGER 1000' --folder INBOX
|
||||
}
|
||||
|
||||
ll_search_keyword() {
|
||||
$CMD_PERL ./imapsync \
|
||||
--host1 $HOST1 --user1 tata \
|
||||
--passfile1 ../../var/pass/secret.tata \
|
||||
--host2 $HOST2 --user2 titi \
|
||||
--passfile2 ../../var/pass/secret.titi \
|
||||
--search 'KEYWORD NonJunk' --folder INBOX.flagsetSeen --debugflags --debugimap1
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
ll_maxsize() {
|
||||
$CMD_PERL ./imapsync \
|
||||
|
@ -1087,6 +1113,19 @@ pidfile_bad() {
|
|||
test "$?" = "$EXIT_PID_FILE_ERROR"
|
||||
}
|
||||
|
||||
|
||||
ll_skipcrossduplicates_usecache() {
|
||||
$CMD_PERL ./imapsync \
|
||||
--host1 $HOST1 --user1 tata \
|
||||
--passfile1 ../../var/pass/secret.tata \
|
||||
--host2 $HOST2 --user2 titi \
|
||||
--passfile2 ../../var/pass/secret.titi \
|
||||
--skipcrossduplicates --usecache
|
||||
test "$?" = "$EX_USAGE"
|
||||
}
|
||||
|
||||
|
||||
|
||||
test_tail() {
|
||||
$CMD_PERL ./imapsync \
|
||||
--justbanner --simulong 15 \
|
||||
|
@ -3145,7 +3184,7 @@ ll_f1f2_01()
|
|||
--passfile2 ../../var/pass/secret.titi \
|
||||
--justfolders \
|
||||
--folder 'INBOX.yop.yap' --f1f2 'INBOX.yop.yap=INBOX/rha/lovely' --f1f2 'lalala=lululu' --debugfolders
|
||||
|
||||
test "$EXIT_ERR_CREATE" = "$?"
|
||||
}
|
||||
|
||||
ll_regextrans2()
|
||||
|
@ -4855,6 +4894,8 @@ ll_duplicates_across_folders() {
|
|||
--skipcrossduplicates --debugcrossduplicates
|
||||
}
|
||||
|
||||
|
||||
|
||||
ll_delete2_dev() {
|
||||
can_send && sendtestmessage titi
|
||||
can_send && sendtestmessage
|
||||
|
@ -4995,6 +5036,26 @@ ll_syncduplicates() {
|
|||
--folder INBOX.duplicates --debug --syncduplicates # --dry
|
||||
}
|
||||
|
||||
ll_syncduplicates_delete2() {
|
||||
$CMD_PERL ./imapsync \
|
||||
--host1 $HOST1 --user1 tata \
|
||||
--passfile1 ../../var/pass/secret.tata \
|
||||
--host2 $HOST1 --user2 titi \
|
||||
--passfile2 ../../var/pass/secret.titi \
|
||||
--folder INBOX.duplicates --syncduplicates --delete2 # --dry
|
||||
}
|
||||
|
||||
ll_syncduplicates_delete2_delete2duplicates() {
|
||||
$CMD_PERL ./imapsync \
|
||||
--host1 $HOST1 --user1 tata \
|
||||
--passfile1 ../../var/pass/secret.tata \
|
||||
--host2 $HOST1 --user2 titi \
|
||||
--passfile2 ../../var/pass/secret.titi \
|
||||
--folder INBOX.duplicates --syncduplicates --delete2 --delete2duplicates # --dry
|
||||
}
|
||||
|
||||
|
||||
|
||||
ll_syncduplicates_noskipsize() {
|
||||
$CMD_PERL ./imapsync \
|
||||
--host1 $HOST1 --user1 tata \
|
||||
|
@ -5858,6 +5919,19 @@ gmail_gmail_9_search_X_GM_LABELS() {
|
|||
--search 'X-GM-LABELS "Important"'
|
||||
}
|
||||
|
||||
gmail_gmail_10_search_drafts() {
|
||||
! ping -c1 imap.gmail.com || $CMD_PERL ./imapsync \
|
||||
--gmail1 \
|
||||
--user1 gilles.lamiral@gmail.com \
|
||||
--passfile1 ../../var/pass/secret.gilles_gmail \
|
||||
--gmail2 \
|
||||
--user2 imapsync.gl@gmail.com \
|
||||
--passfile2 ../../var/pass/secret.imapsync.gl_gmail \
|
||||
--nofoldersizes \
|
||||
--folderfirst '[Gmail]/Drafts' --debuglabels --dry \
|
||||
--folder Test --folder '[Gmail]/Drafts'
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -5911,7 +5985,7 @@ gmail_gl1_gl2_labels()
|
|||
--user2 imapsync.gl2@gmail.com \
|
||||
--passfile2 ../../var/pass/secret.imapsync.gl2_gmail \
|
||||
--exclude "\[Gmail\]" \
|
||||
--synclabels --resynclabels --debuglabels --dry
|
||||
--synclabels --resynclabels --debug --debuglabels # --dry
|
||||
}
|
||||
|
||||
gmail_gl1_gl2_labels_subfolder2()
|
||||
|
@ -6921,7 +6995,7 @@ huge_folder()
|
|||
--host2 $HOST2 --user2 tete@est.belle \
|
||||
--passfile2 ../../var/pass/secret.tete \
|
||||
--include INBOX.Junk.2010 \
|
||||
--nousecache --tmpdir /var/tmp --debugmemory || \
|
||||
--tmpdir /var/tmp --debugmemory || \
|
||||
true
|
||||
}
|
||||
date2=`date`
|
||||
|
@ -7263,31 +7337,38 @@ dprof2_bigmail()
|
|||
|
||||
curl_online_args()
|
||||
{
|
||||
curl -v -d 'host1=test1.lamiral.info;user1=test1;password1=secret1;host2=test2.lamiral.info;user2=test2;password2=secret2;simulong=2' \
|
||||
curl -v --data 'host1=test1.lamiral.info;user1=test1;password1=secret1;host2=test2.lamiral.info;user2=test2;password2=secret2;simulong=2' \
|
||||
https://imapsync.lamiral.info/cgi-bin/imapsync
|
||||
}
|
||||
|
||||
curl_online_testslive()
|
||||
{
|
||||
curl -v --data 'testslive=1;simulong=2' https://imapsync.lamiral.info/cgi-bin/imapsync
|
||||
}
|
||||
|
||||
|
||||
|
||||
curl_online_args_pidfile()
|
||||
{
|
||||
curl -v -d "host1=test1.lamiral.info;user1=test1;password1=secret1;host2=test2.lamiral.info;user2=test2;password2=secret2;pidfile=/tmp/curl_online_args_pidfile_$$.txt" \
|
||||
curl -v --data"host1=test1.lamiral.info;user1=test1;password1=secret1;host2=test2.lamiral.info;user2=test2;password2=secret2;pidfile=/tmp/curl_online_args_pidfile_$$.txt" \
|
||||
https://imapsync.lamiral.info/cgi-bin/imapsync
|
||||
}
|
||||
|
||||
curl_online_args_nolog()
|
||||
{
|
||||
curl -v -d 'host1=test1.lamiral.info;user1=test1;password1=secret1;host2=test2.lamiral.info;user2=test2;password2=secret2;justbanner=1;log=' \
|
||||
curl -v --data 'host1=test1.lamiral.info;user1=test1;password1=secret1;host2=test2.lamiral.info;user2=test2;password2=secret2;justbanner=1;log=' \
|
||||
https://lamiral.info/cgi-bin/imapsync
|
||||
}
|
||||
|
||||
curl_online_args_nolog_2()
|
||||
{
|
||||
curl -v -d 'host1=test1.lamiral.info;user1=test1;password1=secret1;host2=test2.lamiral.info;user2=test2;password2=secret2;justbanner=1;log=0' \
|
||||
curl -v --data 'host1=test1.lamiral.info;user1=test1;password1=secret1;host2=test2.lamiral.info;user2=test2;password2=secret2;justbanner=1;log=0' \
|
||||
https://lamiral.info/cgi-bin/imapsync
|
||||
}
|
||||
|
||||
curl_online_justbanner()
|
||||
{
|
||||
curl -v -d 'host1=test1.lamiral.info;user1=test1;password1=secret1;host2=test2.lamiral.info;user2=test2;password2=secret2;simulong=0.7;justbanner=1' \
|
||||
curl -v --data 'host1=test1.lamiral.info;user1=test1;password1=secret1;host2=test2.lamiral.info;user2=test2;password2=secret2;simulong=0.7;justbanner=1' \
|
||||
https://lamiral.info/cgi-bin/imapsync
|
||||
}
|
||||
|
||||
|
@ -7305,14 +7386,14 @@ simulong=2;
|
|||
dry=1;
|
||||
|
||||
EOF
|
||||
curl -v -d '@W/tmp/cred.txt' \
|
||||
curl -v --data '@W/tmp/cred.txt' \
|
||||
https://imapsync.lamiral.info/cgi-bin/imapsync
|
||||
}
|
||||
|
||||
curl_online_args_json()
|
||||
{
|
||||
# DO NOT WORK AT ALL
|
||||
! curl -v -d '{ "testslive":"1" }' -H "Content-Type: application/json" \
|
||||
! curl -v --data '{ "testslive":"1" }' -H "Content-Type: application/json" \
|
||||
https://imapsync.lamiral.info/cgi-bin/imapsync
|
||||
}
|
||||
|
||||
|
@ -7357,7 +7438,7 @@ curl_online_external()
|
|||
https://web-tools.na.icb.cnr.it/cgi-bin/imapsync \
|
||||
https://140.164.23.4/cgi-bin/imapsync \
|
||||
; do
|
||||
curl -k -s -d 'justconnect=1;host1=mail.unionstrategiesinc.com;user1=a;user2=a;host2=mail5.unionstrategiesinc.com;simulong=2' \
|
||||
curl -k -s --data 'justconnect=1;host1=mail.unionstrategiesinc.com;user1=a;user2=a;host2=mail5.unionstrategiesinc.com;simulong=2' \
|
||||
$imapsync
|
||||
#sleep 2
|
||||
done
|
||||
|
@ -7416,6 +7497,7 @@ ll_unknow_option
|
|||
ll_ask_password
|
||||
ll_env_password
|
||||
ll_bug_folder_name_with_blank
|
||||
ll_skipcrossduplicates_usecache
|
||||
ll_timeout
|
||||
ll_timeout1_timeout2
|
||||
ll_timeout_very_small
|
||||
|
@ -7436,6 +7518,7 @@ ll_buffersize
|
|||
ll_justfolders
|
||||
ll_justfolders_delete1emptyfolders
|
||||
ll_justfolders_skipemptyfolders
|
||||
ll_f1f2_01
|
||||
ll_prefix12
|
||||
ll_nosyncinternaldates
|
||||
ll_idatefromheader
|
||||
|
@ -7558,6 +7641,7 @@ ll_abort_byfile_hand_made
|
|||
ll_abort_byfile_imapsync_made
|
||||
ll_abort_byfile_normal_run
|
||||
ll_sigreconnect_INT
|
||||
ll_diff_log_stdout_debugssl
|
||||
curl_online_args
|
||||
curl_online_file
|
||||
ksks_reset_test1
|
||||
|
@ -7590,7 +7674,7 @@ set_return_code_variables
|
|||
if test $# -eq 0; then
|
||||
# mandatory tests
|
||||
if run_tests $mandatory_tests; then
|
||||
./i3 --version >> .test_3xx
|
||||
./imapsync --version >> .tests_passed
|
||||
return 0
|
||||
fi
|
||||
else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue