From 399651d088c477435e1bf507c6f482f0b44504c2 Mon Sep 17 00:00:00 2001
From: Nick Bebout
Date: Mon, 24 Oct 2022 21:20:30 -0500
Subject: [PATCH] 2.229
---
ChangeLog | 129 +-
FAQ.d/FAQ.Archiving.txt | 4 +-
FAQ.d/FAQ.Authentication_failure.txt | 24 +-
FAQ.d/FAQ.Big_Mailbox.txt | 2 +-
FAQ.d/FAQ.Capacity_Planning.txt | 56 +-
FAQ.d/FAQ.Contacts_Calendars.txt | 24 +-
FAQ.d/FAQ.Dovecot.txt | 16 +-
FAQ.d/FAQ.Emptying.txt | 25 +-
FAQ.d/FAQ.Flags.txt | 20 +-
FAQ.d/FAQ.Folders_Sizes.txt | 11 +-
FAQ.d/FAQ.General.txt | 16 +-
FAQ.d/FAQ.Gmail.txt | 85 +-
FAQ.d/FAQ.ISP.txt | 58 +-
FAQ.d/FAQ.Massive.txt | 106 +-
FAQ.d/FAQ.Office365.txt | 16 +-
FAQ.d/FAQ.OnlineUI.txt | 55 +-
FAQ.d/FAQ.Release_Checklist.txt | 24 +-
FAQ.d/FAQ.Two_Ways_Sync.txt | 67 +-
FAQ.d/FAQ.User_Concurrent_Access.txt | 21 +-
FAQ.d/FAQ.Yahoo.txt | 15 +-
FAQ.d/FAQ.iCloud.txt | 24 +
INSTALL.d/Dockerfile | 3 +-
INSTALL.d/INSTALL.AWS_EC2.txt | 6 +-
INSTALL.d/INSTALL.ArchLinux.txt | 5 +-
INSTALL.d/INSTALL.Centos.txt | 10 +-
INSTALL.d/INSTALL.Darwin.txt | 3 +-
INSTALL.d/INSTALL.Debian.txt | 3 +-
INSTALL.d/INSTALL.Docker_build.txt | 3 +-
INSTALL.d/INSTALL.FreeBSD.txt | 9 +-
INSTALL.d/INSTALL.OnlineUI.txt | 73 +-
INSTALL.d/INSTALL.Ubuntu.txt | 10 +-
INSTALL.d/INSTALL.webserver.txt | 18 +
INSTALL.d/prerequisites_imapsync | 3 +-
Makefile | 238 ++-
README | 17 +-
S/imapservers.shtml | 14 +-
S/news.shtml | 35 +-
S/paypal_return.shtml | 4 +-
TODO | 28 +-
VERSION | 2 +-
X/cgi_memo | 864 +++++++-
X/imapsync_form.js | 6 +-
X/imapsync_form_extra.html | 12 +-
X/imapsync_form_extra_free.html | 10 +-
X/imapsync_online_status_24h_1200x70.png | Bin 17612 -> 0 bytes
X/imapsync_online_status_2months_1200x70.png | Bin 19768 -> 0 bytes
X/imapsync_online_status_7d_1200x70.png | Bin 19746 -> 0 bytes
X/index.html | 2 +-
...psync_form_new.js => proximapsync_form.js} | 206 +-
X/proximapsync_form_extra.html | 476 +++++
X/proximapsync_form_extra_free.html | 536 +++++
X/stat_patterns.txt | 3 +-
X/u.html | 2 +-
aa | 1542 +++++++++++++++
imapsync | 1752 ++++++++++++-----
index.shtml | 249 ++-
oauth2/README_OAUTH2.txt | 5 +-
tests.sh | 62 +-
58 files changed, 5882 insertions(+), 1127 deletions(-)
create mode 100644 FAQ.d/FAQ.iCloud.txt
create mode 100644 INSTALL.d/INSTALL.webserver.txt
delete mode 100644 X/imapsync_online_status_24h_1200x70.png
delete mode 100644 X/imapsync_online_status_2months_1200x70.png
delete mode 100644 X/imapsync_online_status_7d_1200x70.png
rename X/{imapsync_form_new.js => proximapsync_form.js} (70%)
create mode 100644 X/proximapsync_form_extra.html
create mode 100644 X/proximapsync_form_extra_free.html
create mode 100644 aa
mode change 100755 => 100644 oauth2/README_OAUTH2.txt
diff --git a/ChangeLog b/ChangeLog
index 591d185..d1115f7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,17 +1,138 @@
RCS file: RCS/imapsync,v
Working file: imapsync
-head: 2.200
+head: 2.229
branch:
locks: strict
- gilles: 2.200
+ gilles: 2.229
access list:
symbolic names:
keyword substitution: kv
-total revisions: 1100; selected revisions: 1100
+total revisions: 1129; selected revisions: 1129
description:
----------------------------
-revision 2.200 locked by: gilles;
+revision 2.229 locked by: gilles;
+date: 2022/09/14 18:08:24; author: gilles; state: Exp; lines: +16 -16
+Make pass "make linuxtests win32tests win64tests mactests"
+----------------------------
+revision 2.228
+date: 2022/09/13 12:14:02; author: gilles; state: Exp; lines: +10 -9
+Doc. --oauthaccesstoken1 needs --password1 presence. This is a bug.
+----------------------------
+revision 2.227
+date: 2022/07/28 15:59:38; author: gilles; state: Exp; lines: +347 -112
+Bugfix. Fixed memory measurement on MacOS and Win32 Win64
+----------------------------
+revision 2.226
+date: 2022/07/15 12:02:47; author: gilles; state: Exp; lines: +30 -26
+1966 unit tests
+----------------------------
+revision 2.225
+date: 2022/07/14 16:56:11; author: gilles; state: Exp; lines: +14 -11
+*** empty log message ***
+----------------------------
+revision 2.224
+date: 2022/07/13 17:33:42; author: gilles; state: Exp; lines: +8 -8
+typo connexions connections
+----------------------------
+revision 2.223
+date: 2022/07/03 10:39:30; author: gilles; state: Exp; lines: +48 -11
+Default is now like --noemailreport1 --noemailreport2, no final email report. Popular demand.
+Added a stat value: memory footprint times time spent during the sync. Unity MiB * hour. Line "Memory consumption at the end".
+----------------------------
+revision 2.222
+date: 2022/06/29 12:13:58; author: gilles; state: Exp; lines: +9 -10
+Remove --memorystress from CGI options.
+----------------------------
+revision 2.221
+date: 2022/06/28 23:12:01; author: gilles; state: Exp; lines: +72 -63
+CGI context. Refuse to serve when the cpu load is greater than 1 per cpu. A load of 3.9 with 4 cores is ok.
+----------------------------
+revision 2.220
+date: 2022/06/28 19:01:18; author: gilles; state: Exp; lines: +8 -8
+CGI context. Refuse to server when memory left is less than 1 GB.
+----------------------------
+revision 2.219
+date: 2022/06/25 21:33:30; author: gilles; state: Exp; lines: +24 -19
+heavy load by cpu limit from 6 to 3. Because 6 is too big on ks6
+----------------------------
+revision 2.218
+date: 2022/06/25 06:38:24; author: gilles; state: Exp; lines: +12 -9
+Typo. memory_consumption_all_pids_percent with only 2 decimals.
+----------------------------
+revision 2.217
+date: 2022/06/25 06:16:42; author: gilles; state: Exp; lines: +148 -52
+CGI context. Bring back to exit on heavy load by cpu. limit is a load of 6 per core, roughly the number of processes running constantly per core.
+----------------------------
+revision 2.216
+date: 2022/06/22 18:49:55; author: gilles; state: Exp; lines: +9 -9
+typo seconde second
+----------------------------
+revision 2.215
+date: 2022/06/22 01:44:01; author: gilles; state: Exp; lines: +34 -21
+Added --exitonload option. Only available in CGI context for now.
+----------------------------
+revision 2.214
+date: 2022/06/08 21:28:34; author: gilles; state: Exp; lines: +11 -11
+load_percent_threshold is now room for two average imapsync processes.
+----------------------------
+revision 2.213
+date: 2022/05/20 11:57:22; author: gilles; state: Exp; lines: +48 -33
+Filtering buggy flags is now case insensitive. \Junk or \JUNK or \jUnK etc.
+Refactoring. Added sub tests_filterbuggyflags()
+----------------------------
+revision 2.212
+date: 2022/05/19 11:18:09; author: gilles; state: Exp; lines: +67 -16
+Bugfix. Do not crash when Proc::ProcessTable field pctmem does not exist.
+----------------------------
+revision 2.211
+date: 2022/05/19 08:37:14; author: gilles; state: Exp; lines: +10 -10
+Last commit 2.210 did not pass the unit tests. Fixed.
+----------------------------
+revision 2.210
+date: 2022/05/19 08:09:57; author: gilles; state: Exp; lines: +10 -10
+Added filtering \JUNK flag in cgi context or with --filterbuggyflags
+----------------------------
+revision 2.209
+date: 2022/05/15 11:03:02; author: gilles; state: Exp; lines: +37 -9
+Enhancement. heavy_load_percent_threshold now based on memory_footprint_average_bytes 300 MB
+----------------------------
+revision 2.208
+date: 2022/05/13 20:14:25; author: gilles; state: Exp; lines: +8 -8
+90%
+----------------------------
+revision 2.207
+date: 2022/05/12 16:31:10; author: gilles; state: Exp; lines: +21 -21
+memory limit to quit from 100% to 50%. Quick fix.
+----------------------------
+revision 2.206
+date: 2022/05/12 11:07:07; author: gilles; state: Exp; lines: +139 -54
+Added dependency. Perl module Proc::ProcessTable. Not mandatory anyway. For now.
+CGI context. Exit when 100% of RAM memory is used by processes. Exit with status value 69 and message "EX_UNAVAILABLE: service unavailable".
+Added the % of RAM used by all processes in the memory infi line.
+----------------------------
+revision 2.205
+date: 2022/05/09 21:29:07; author: gilles; state: Exp; lines: +264 -247
+perlcritic. Change all "= shift ;" to " = shift @ARG ;"
+----------------------------
+revision 2.204
+date: 2022/05/03 22:28:53; author: gilles; state: Exp; lines: +34 -9
+Do not report final emails when --dry or --justfolders
+----------------------------
+revision 2.203
+date: 2022/04/26 22:57:46; author: gilles; state: Exp; lines: +42 -17
+Bugfix. Allow quota like: QUOTA "user-defined quota (konsoleH)" (STORAGE 988 48829 MESSAGE 20 20)
+Enhancement. Added --memorystress to check memory crunching in normal run.
+----------------------------
+revision 2.202
+date: 2022/04/18 23:40:20; author: gilles; state: Exp; lines: +89 -20
+CGI context. Do not append the log file name to ../list_all_logs_auto.txt when there is no parameters.
+----------------------------
+revision 2.201
+date: 2022/04/09 08:45:27; author: gilles; state: Exp; lines: +12 -12
+Moved all getppid to mygetppid (it adds a comment on Windows, where ppid is too complicated to get.
+----------------------------
+revision 2.200
date: 2022/04/04 16:05:55; author: gilles; state: Exp; lines: +14 -10
typo. "check the certificate server" => "check the server certificate."
----------------------------
diff --git a/FAQ.d/FAQ.Archiving.txt b/FAQ.d/FAQ.Archiving.txt
index d4ce383..3317ec0 100644
--- a/FAQ.d/FAQ.Archiving.txt
+++ b/FAQ.d/FAQ.Archiving.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.Archiving.txt,v 1.26 2022/01/11 12:55:53 gilles Exp gilles $
+$Id: FAQ.Archiving.txt,v 1.27 2022/05/19 08:56:06 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -110,7 +110,7 @@ Q. How to move emails from one IMAP folder to another, either on the
R1. Solution:
- imapsync ... --minage 365 --folder Inbox --f1f2 INBOX=Archive --delete1 --noexpungeaftereach
+ imapsync ... --minage 365 --folder INBOX --f1f2 INBOX=Archive --delete1 --noexpungeaftereach
Use the option --noexpungeaftereach if speed is a concern.
Use the option --delete1 if you want to move messages, instead of just copy/sync them.
diff --git a/FAQ.d/FAQ.Authentication_failure.txt b/FAQ.d/FAQ.Authentication_failure.txt
index ec41351..262fe6d 100644
--- a/FAQ.d/FAQ.Authentication_failure.txt
+++ b/FAQ.d/FAQ.Authentication_failure.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.Authentication_failure.txt,v 1.15 2022/03/03 11:43:55 gilles Exp gilles $
+$Id: FAQ.Authentication_failure.txt,v 1.16 2022/08/17 09:18:17 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -25,17 +25,17 @@ Q. Imapsync fails with the following error, what can I do?
Host1 failure: Error login on [imap.example.com] with user [foo] auth [LOGIN]: 2 NO [AUTHENTICATIONFAILED] Authentication failed
-R. One over four imapsync syncs ends up quickly with the error message
+R. One over four imapsync synchronizations end up quickly with the error message
"Authentication failed" or "NO LOGIN failed" or a similar message.
Authentication failure is the primary failure with imapsync
and since nothing tangible can be done without authentication,
this stage must succeed to go further.
-Here are some advices to get you pass this difficult stage of authentication:
+Here is some advice to get you to pass this difficult stage of authentication:
- * Triple check each credential parameter. It's not always a password problem,
+ * Triple-check each credential parameter. It's not always a password problem,
it can be the wrong host or the wrong user.
- There are three parameters at each side:
+ There are three parameters on each side:
* triple check --host1
* triple check --user1
* triple check --password1
@@ -43,7 +43,7 @@ Here are some advices to get you pass this difficult stage of authentication:
* triple check --user2
* triple check --password2
- * If you can authenticate successfully with an other imap client software
+ * If you can authenticate successfully with another imap client software
like Thunderbird or Outlook or Sparrow then it is a very good sign to
authenticate successfully with imapsync. Examine the parameters of
this other imap client and copy them as is for imapsync.
@@ -52,7 +52,7 @@ Here are some advices to get you pass this difficult stage of authentication:
At the beginning of the output, imapsync dumps all its command
line parameters; it's the line after "Command line used:".
With --showpasswords, imapsync prints the passwords received
- instead of the string MASKED. It helps for debugging quoting issues.
+ instead of the string MASKED. It helps with debugging quoting issues.
Option --showpasswords shows passwords again when the IMAP dialog
is dumped by --debugimap option. Search for a line like
"Sending: 2 LOGIN test1 secret1" (secret1 is the password here).
@@ -64,18 +64,18 @@ Here are some advices to get you pass this difficult stage of authentication:
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Mac.txt
The quickest trick may be to change the password temporally
- with easy characters like the classical alphabet, a long
- string still ensure strong security.
+ with easy characters like the classical alphabet, one long
+ string still ensures strong security.
* Sometimes some servers announce they support LOGIN but it
- actually fails because the authentication mechanism
+ fails because the authentication mechanism
working is something else like CRAM-MD5 or PLAIN.
So:
* Try --authmech1 CRAM-MD5 (or --authmech2 CRAM-MD5)
* Try --authmech1 PLAIN (or --authmech2 PLAIN)
* Manually test a login via ssl.
- Use either ncat or telnet-ssl or openssl commands like in the
+ Use either ncat or telnet-ssl or openssl commands, like in the
following examples with imap.gmail.com server:
ncat --ssl -C imap.gmail.com 993
@@ -85,7 +85,7 @@ Here are some advices to get you pass this difficult stage of authentication:
Replace imap.gmail.com by your imap server.
The three commands do the same work here.
-Tipical dialog for an imap LOGIN command:
+Typical dialog for an imap LOGIN command:
* OK Gimap ready for requests from 78.196.254.58 q1mb175739668wix
a LOGIN "gilles.lamiral@gmail.com" "secret"
diff --git a/FAQ.d/FAQ.Big_Mailbox.txt b/FAQ.d/FAQ.Big_Mailbox.txt
index f2177a9..5a7a6c1 100644
--- a/FAQ.d/FAQ.Big_Mailbox.txt
+++ b/FAQ.d/FAQ.Big_Mailbox.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.Big_Mailbox.txt,v 1.7 2021/02/01 21:47:41 gilles Exp gilles $
+$Id: FAQ.Big_Mailbox.txt,v 1.8 2022/04/23 13:45:48 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
diff --git a/FAQ.d/FAQ.Capacity_Planning.txt b/FAQ.d/FAQ.Capacity_Planning.txt
index 54a8ad2..abc3d00 100644
--- a/FAQ.d/FAQ.Capacity_Planning.txt
+++ b/FAQ.d/FAQ.Capacity_Planning.txt
@@ -1,4 +1,4 @@
-$Id: FAQ.Capacity_Planning.txt,v 1.3 2022/03/22 11:12:25 gilles Exp gilles $
+$Id: FAQ.Capacity_Planning.txt,v 1.6 2022/04/23 13:45:59 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -19,18 +19,49 @@ My current question is: Shall I use
* N/2 4GB hosts
* N/4 8GB hosts
-Let's do some maths
+Let's do some observations and maths
+
+The observations are done on the standalone imapsync online which
+characteristics are:
+
+CPU: Intel i5-2300 with 4 cores
+
+RAM: 16 GB
+
+NET: 100 Mbps symetrical, 12.5 MBytes/s symetrical,
+ so 25 MBytes/s max for a global imapsync rate.
+
+Disks: I don't know.
+
+System: FreeBSD 11.4
+
+===== CPU =====
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.
+In the Intel i5-2300 4 cores, so far, the maximum number of imapsync
+processes has been 68, which is 3 times what the system should
+support in a standard imapsync workload. For this workload, the
+imapsync performamces were not good, the server could not handle the load
+and was even out of order for a while. For 40 imapsync processes, the
+the performances are ok.
+
+===== RAM =====
+
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.
+On the 16GB, so far, the maximum memory usage taken by imapsync processes was
+13 GB. For that value, the one minute load was 10 or more, the number of
+imapsync processes was around 40, the total bandwidth was around 19 MiB/s.
+
+===== LINK =====
+
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
@@ -43,13 +74,30 @@ 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)
+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.
+single imapsync process is at 103 Mbps (~13 MiB/s), the rx/tx link limit.
+===== DISKS =====
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.
+
+===== Repartition ======
+
+
+Let's consider we have a bunch of different hosts able to run imapsync
+processes. How should we distribute imapsync jobs among them?
+
+A simple rule is "do not add more load to a host when one of the ressources
+has reached its maximal. The ressources are memory, bandwidth, cpu, disk.
+I ignore the disk part for now.
+
+maximum number of imapsync processes for a host
+= min( 4 * RAM_in_GB, 10 * nb_cores, bandwidth_in_mbps / 3 )
+
+
+
diff --git a/FAQ.d/FAQ.Contacts_Calendars.txt b/FAQ.d/FAQ.Contacts_Calendars.txt
index 84e94c3..18424b3 100644
--- a/FAQ.d/FAQ.Contacts_Calendars.txt
+++ b/FAQ.d/FAQ.Contacts_Calendars.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.Contacts_Calendars.txt,v 1.16 2022/04/05 13:48:52 gilles Exp gilles $
+$Id: FAQ.Contacts_Calendars.txt,v 1.17 2022/05/31 22:21:55 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -21,10 +21,10 @@ Now the questions again with their answers.
Q. Can I copy or sync Contacts, Calendars, Tasks or Chat messages with imapsync?
R. No, Imapsync can't migrate Contacts, Calendars, Tasks nor Chat messages.
- It's because most IMAP servers don't get contacts and calendars
+ It's because most IMAP servers don't get Contacts and Calendar
events via IMAP. In other words, messages synced by imapsync from
Contacts/Calendars/Tasks/Chat folders are not used by email servers to set
- or get the contacts, calendars, tasks or chat messages.
+ or get the contacts, calendars, tasks, or chat messages.
No way via IMAP, no way via imapsync.
So it's a good idea to avoid syncing contacts and calendars when
@@ -55,20 +55,20 @@ b) From Gmail to Gmail, export and import calendars in ical format,
c) For Outlook, use caldavsynchronizer.
Homepage: http://caldavsynchronizer.org/
Outlook CalDav Synchronizer is a free Outlook Plugin, which synchronizes
- events, tasks and contacts between Outlook and Google, SOGo, Nextcloud or
+ events, tasks, and contacts between Outlook and Google, SOGo, Nextcloud or
any other CalDAV or CardDAV server.
- Supported Outlook versions are Office 365, 2019, 2016, 2013, 2010 and 2007.
+ Supported Outlook versions are Office 365, 2019, 2016, 2013, 2010, and 2007.
Free and Open Source software tool.
-d) Etc. Search the web. There's also specific tools and paid services.
+d) Etc. Search the web. There are also specific tools and paid services.
There's no silver bullet to migrate Calendars and Contacts,
if you find one, tell me!
- Also consider asking experts at Sumatra company
+ Also, consider asking experts at the Sumatra company
https://twitter.com/sumatra_dev
http://sumatra.com/
-e) I plan to make tools for that but so far nothing has began
+e) I plan to make tools for that but so far nothing has begun
more than this discussion:
http://linux-france.tk/prj/imapsync_list/msg01797.html
http://linux-france.tk/prj/imapsync_list/msg01811.html
@@ -77,10 +77,10 @@ http://linux-france.tk/prj/imapsync_list/msg01811.html
Q. How can I avoid copying Calendar or Contacts folders?
R. You can avoid synchronizing Calendar or Contacts folders with
- the --exclude option. First you have to search what is their
- exact name. The folders listing printed by imapsync at the
+ the --exclude option. First, you have to search what is their
+ exact name. The listing of folders printed by imapsync at the
beginning of a run will surely help to find their names.
- Assuming their names are "Calendars" and "Contacts" use then:
+ Assuming their names are "Calendars" and "Contacts", use:
imapsync ... --exclude "Calendar" --exclude "Contacts"
@@ -89,7 +89,7 @@ R. You can avoid synchronizing Calendar or Contacts folders with
like "MyCalendarZ" or "TheContactsImDoneWith".
Also, case matters: "calendar" does not match "Calendar".
- To stritly avoid only "Calendar" or "Contacts" use
+ To strictly avoid only "Calendar" or "Contacts" use
the following
On windows:
diff --git a/FAQ.d/FAQ.Dovecot.txt b/FAQ.d/FAQ.Dovecot.txt
index 74b02b5..fb2d2ea 100644
--- a/FAQ.d/FAQ.Dovecot.txt
+++ b/FAQ.d/FAQ.Dovecot.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.Dovecot.txt,v 1.13 2021/12/03 12:51:23 gilles Exp gilles $
+$Id: FAQ.Dovecot.txt,v 1.14 2022/06/16 09:06:34 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -15,6 +15,10 @@ Questions answered in this FAQ are:
Q. Is there imapsync specific options to deal with Dovecot?
+Q. The login fails with the error:
+ Err 1/1: Host2 failure: Error login on [...] with user [...] auth [LOGIN]: timeout waiting 120s for data from server (5x)
+ What can it be?
+
Q. Subfolders are not created by imapsync and the error is
"Mailbox doesn't allow inferior mailboxes"
@@ -34,7 +38,15 @@ Now the questions again with their answers.
Q. Is there imapsync specific options to deal with Dovecot?
R. Dovecot is ok with imapsync, nothing special is needed, just the
- basic option, the credentials, are needed.
+ basic options, ie, the credentials, are needed.
+
+=======================================================================
+Q. The login fails with the error:
+ Err 1/1: Host2 failure: Error login on [...] with user [...] auth [LOGIN]: timeout waiting 120s for data from server (5x)
+ What can it be?
+
+R. It can be special characters in the password. Change it with only
+ normal characters, characters from a-z A-Z 0-9
=======================================================================
Q. How to migrate to Dovecot with an admin/MasterUser account?
diff --git a/FAQ.d/FAQ.Emptying.txt b/FAQ.d/FAQ.Emptying.txt
index 014ef12..e57234e 100644
--- a/FAQ.d/FAQ.Emptying.txt
+++ b/FAQ.d/FAQ.Emptying.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.Emptying.txt,v 1.12 2021/09/09 11:53:53 gilles Exp gilles $
+$Id: FAQ.Emptying.txt,v 1.14 2022/06/08 11:08:39 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -7,7 +7,7 @@ https://imapsync.lamiral.info/FAQ.d/
https://imapsync.lamiral.info/FAQ.d/FAQ.Emptying.txt
=======================================================================
- Imapsync tip to empty an account.
+ Imapsync tips about deletions.
=======================================================================
Questions answered in this FAQ are:
@@ -24,6 +24,8 @@ Q. How to delete emails older than 90 days with imapsync?
Q. How to delete emails matching a certain criterium with imapsync?
+Q. Is there a way to delete the destination folders when the source
+ folders are no longer there?
Now the questions again with their answers.
@@ -128,5 +130,24 @@ Example:
--host2 test.lamiral.info --user2 foo --password2 secret \
--delete1 --noexpungeaftereach --search "SENTBEFORE 31-Dec-2010"
+======================================================================
+Q. Is there a way to delete the destination folders when the source
+ folders are no longer there?
+
+R. Yes, use --delete2folders
+
+ --delete2folders : Delete folders in host2 that are not in host1.
+ For safety, first try it like this, it is safe:
+ --delete2folders --dry --justfolders --nofoldersizes
+ and see what folders will be deleted.
+
+ --delete2foldersonly reg : Delete only folders matching the regex reg.
+ Example: --delete2foldersonly "/^Junk$|^INBOX.Junk$/"
+ This option activates --delete2folders
+
+ --delete2foldersbutnot reg : Do not delete folders matching the regex rex.
+ Example: --delete2foldersbutnot "/Tasks$|Contacts$|Foo$/"
+ This option activates --delete2folders
+
=======================================================================
=======================================================================
\ No newline at end of file
diff --git a/FAQ.d/FAQ.Flags.txt b/FAQ.d/FAQ.Flags.txt
index 0f39077..6c483d0 100644
--- a/FAQ.d/FAQ.Flags.txt
+++ b/FAQ.d/FAQ.Flags.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.Flags.txt,v 1.26 2021/04/25 20:47:05 gilles Exp gilles $
+$Id: FAQ.Flags.txt,v 1.28 2022/06/22 17:07:35 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -22,6 +22,9 @@ Q. Exchange sends an email to any sender whose email is deleted
without reading. It's called "unread notifications".
How to set the \Seen flag on host1 (source system) before syncing?
+Q. Every single mail synced to exchange online owns the
+ category $MDNSent after migration. How can I avoid this?
+
Q. Does imapsync retain the \Answered and $Forwarded flags?
Q. How to fix this error: BAD Invalid system flag \FORWARDED
@@ -174,6 +177,18 @@ https://translate.google.com/translate?sl=auto&tl=en&u=https%3A%2F%2Fwww.ci-solu
German original:
https://www.ci-solution.com/blog/artikel/ungelesen-geloescht-verhindern.html
(Link from Oliver B.)
+
+======================================================================
+Q. Every single mail synced to exchange online owns the
+ category $MDNSent after migration. How can I avoid this?
+
+R. To remove the flag $MDNSent from all messages, use:
+
+ imapsync ... --regexflag "s/\$MDNSent//g"
+
+See also the document
+https://imapsync.lamiral.info/FAQ.d/FAQ.Flags.txt
+
=======================================================================
Q. Does imapsync retain the \Answered and $Forwarded flags?
@@ -305,7 +320,8 @@ You can try --nofilterflags straightaway without the
"other thunderbird" proposal.
There is also the possibility to map flags across servers
-with --regexflags
+with the option --regexflag. See some --regexflag examples
+above.
=======================================================================
diff --git a/FAQ.d/FAQ.Folders_Sizes.txt b/FAQ.d/FAQ.Folders_Sizes.txt
index 14081c9..5128310 100644
--- a/FAQ.d/FAQ.Folders_Sizes.txt
+++ b/FAQ.d/FAQ.Folders_Sizes.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.Folders_Sizes.txt,v 1.5 2021/07/04 23:02:32 gilles Exp gilles $
+$Id: FAQ.Folders_Sizes.txt,v 1.7 2022/04/23 13:45:15 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -61,11 +61,16 @@ R. There are several reasons to explain the different counts between
found at the end on the line "Messages found duplicate on host1".
To sync duplicates, use the option --syncduplicates
-5) There are duplicate messages on host2 so host2 is
+5) There are cross-duplicate messages on host1, same messages in different
+ folders, and you use --gmail1 or --skipcrossduplicates, which avoid
+ copying cross-duplicate messages in more than one folder on host2.
+ Use --noskipcrossduplicates if you want imapsync to sync cross-duplicates.
+
+6) There are duplicate messages on host2 so host2 is
bigger than host1. Solution: use --delete2duplicates to delete
the host2 duplicates.
-6) Cosmic rays...
+7) Cosmic rays...
The important part to take into account for a good and well done sync
is the last lines of imapsync. A good sync is when you encounter the
diff --git a/FAQ.d/FAQ.General.txt b/FAQ.d/FAQ.General.txt
index df5b1b5..115f686 100644
--- a/FAQ.d/FAQ.General.txt
+++ b/FAQ.d/FAQ.General.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-# $Id: FAQ.General.txt,v 1.245 2022/04/05 13:55:47 gilles Exp gilles $
+# $Id: FAQ.General.txt,v 1.246 2022/06/08 10:57:52 gilles Exp gilles $
=======================================================================
General FAQ for imapsync
@@ -570,20 +570,6 @@ In imapsync, you can achieve this by using the following options:
--proxyauth1 \
--passfile admin.txt
-======================================================================
-Q. Is there a way to delete the destination folder when the source
- folder is no longer there?
-
-R. Yes, use --delete2folders
-
---delete2folders : Delete folders in host2 that are not in host1 server.
- For safety, first try it like this (it is safe):
- --delete2folders --dry --justfolders --nofoldersizes
---delete2foldersonly : Deleted only folders matching regex.
- Example: --delete2foldersonly "/^Junk$|^INBOX.Junk$/"
---delete2foldersbutnot : Do not delete folders matching regex.
- Example: --delete2foldersbutnot "/Tasks$|Contacts$|Foo$/"
-
=======================================================================
Q. I would love to have a function to inject lines in the header.
Things like "X-migrated-from-foo: 20100617"
diff --git a/FAQ.d/FAQ.Gmail.txt b/FAQ.d/FAQ.Gmail.txt
index 387eaa0..f5b905f 100644
--- a/FAQ.d/FAQ.Gmail.txt
+++ b/FAQ.d/FAQ.Gmail.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.Gmail.txt,v 1.87 2022/02/10 12:42:52 gilles Exp gilles $
+$Id: FAQ.Gmail.txt,v 1.92 2022/06/28 11:03:40 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -56,7 +56,9 @@ Q. What are the Gmail imap names of the folders
Q. Can I transfer Gmail "Chat" messages with imapsync?
-Q. Can I safely use --useuid for Gmail transfers?
+Q. Can I safely use --useuid or --usecache for Gmail transfers?
+
+Q. Can I use --syncduplicates Gmail transfers?
Q. Gmail does not really delete messages in folder [Gmail]/All Mail
What happens? What can I do?
@@ -95,77 +97,22 @@ it has to be allowed in the Gmail configuration part:
-> Click on the button "Save changes" at the bottom of the page.
That's not finished, there is also the authentication issue to consider.
-There are three different ways to authenticate to Gmail with Imapsync,
+There are two different ways to authenticate to Gmail with Imapsync,
either:
-1) "Access for less secure apps"
-2) "2-step verification"
-3) XOauth2 ready for groups on any OS or
+1) "App password with 2-step verification"
+
+or
+
+2) XOauth2 ready for groups on any OS or
for individual Gmail authentication on Linux.
-For the last one, XOauth2, see the document
+For the second one, XOauth2, see the document
https://imapsync.lamiral.info/FAQ.d/FAQ.XOAUTH2.txt
-1) "Access for less secure apps", the first way to authenticate
- to Gmail with Imapsync. This is the easiest way because
- you just have to turn one button on.
-
-Go to https://myaccount.google.com/
-Click on the Security tab on the left menu or go directly to
-https://myaccount.google.com/security?gar=1
-
- -> Verify 2-step verification is OFF
- https://myaccount.google.com/security?hl=en&pli=1&nlr=1#signin
-
-Near the end of the page,
- -> Turn ON "Access for less secure apps"
- https://www.google.com/settings/security/lesssecureapps
- https://support.google.com/accounts/answer/6010255?hl=en
-
-Here is what Google add on this "Access for less secure apps":
-"Some apps and devices use less secure sign-in technology, which makes your
-account vulnerable. You can turn off access for these apps, which we recommend,
-or turn it on if you want to use them despite the risks.
-Google will automatically turn this setting OFF if it’s not being used."
-
-So after a while, this button will be turned off again.
-I suggest to turn it off once the job with imapsync is finished.
-
-If you forgot to also enable imap you end up with login failure like this one:
-"Host failure: Error login on [imap.gmail.com] with user [xxxx@gmail.com] auth [LOGIN]:
-NO [ALERT] Your account is not enabled for IMAP use. Please visit your Gmail
-settings page and enable your account for IMAP access. (Failure)"
-
-After using imapsync on a Gmail account, sometimes you may encounter an email
-with the title "Critical security alert for your linked Google Account"
-and the body
-"Sign-in attempt was blocked for your linked Google Account
-xxxx@gmail.com
-Someone just used your password to try to sign in to your account from
-a non-Google app. Google blocked them, but you should check what happened.
-Review your account activity to make sure that no one else has access."
-Click on the button "Check Activity" and let Gmail know you were the author
-of the sign in.
-
-
-Sometimes, with Gsuite, the login for the users are ok with imapsync
-for a while then they become forbidden with
-"failure: Error login on [imap.gmail.com] with user [xxx] auth [LOGIN]:
-2 NO [AUTHENTICATIONFAILED] Invalid credentials (Failure)"
-
-In that case, use:
-https://admin.google.com/AdminHome?hl=fr#ServiceSettings/notab=1&service=securitysetting&subtab=lesssecureappsaccess
-to allow "Access for less secure apps to all users"
-(Thanks to Sébastien R. for this input)
-Remark: even if the user has enabled less secure apps at Super Admin
- and reseller level, it still needs amended at
- https://myaccount.google.com/security
- (Thanks Tony@gle for this last tip!)
-
-
-2) "2-step verification" the second way to authenticate
- to Gmail with Imapsync.
+1) "App password with 2-step verification" is the first way to
+ authenticate to Gmail with Imapsync.
Go to
https://myaccount.google.com/security
@@ -795,6 +742,12 @@ message, and Gmail will always accept and throw away the new copy. It
ends up with no duplicates on Gmail but a waste of bandwidth and time,
which is the opposite goal of --usecache implied by --useuid.
+=======================================================================
+Q. Can I use --syncduplicates Gmail transfers?
+
+R. Yes, but Gmail will accept the new duplicate message and
+throw away the new copy. It ends up with no duplicates on Gmail but
+a waste of bandwidth and time.
=======================================================================
Q. Gmail does not really delete messages in folder [Gmail]/All Mail
diff --git a/FAQ.d/FAQ.ISP.txt b/FAQ.d/FAQ.ISP.txt
index 1154751..ef21983 100644
--- a/FAQ.d/FAQ.ISP.txt
+++ b/FAQ.d/FAQ.ISP.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.ISP.txt,v 1.13 2021/12/06 20:02:39 gilles Exp gilles $
+$Id: FAQ.ISP.txt,v 1.14 2022/05/22 08:04:05 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -9,7 +9,8 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.ISP.txt
Imapsync tips for ISP. Specific issues and solutions.
=======================================================================
-* IMAPSync - usage scenario with ISP - by Flavio Zarur Lucarelli (https://www.lucanet.com.br)
+* IMAPSync - usage scenario with ISP - by Flavio Zarur Lucarelli
+ (https://www.lucanet.com.br)
I thought I had to write a quick step by step on my attempts to learn
the imapsync features that matter the most, so it works as we expected
@@ -20,9 +21,10 @@ Lamiral for all his help and hard work.
First of all, remember to use --dry to test things first always and
check the log file to see what would actually happen.
-This type of copy keeps destination exactly like source (except, it doesn't
-copy duplicates), so use it ONLY before changing your MX to the new server,
-as it will delete whatever is in destination which isn't in source.
+This type of copy keeps destination exactly like source (except, it
+doesn't copy duplicates), so use it ONLY before changing your MX to
+the new server, as it will delete whatever is in destination which
+isn't in source.
imapsync --host1 imap.myisp.com --user1 user@domain.com --password1 pwd \
--host2 imap.myisp.com --user2 user@domain.com --password2 pwd \
@@ -119,8 +121,9 @@ If your last full sync was 2 days ago, then use --maxage 2
Goal is to get all the new emails (2 last days) from source.
Another alternative for syncing after the MX change, which Lamiral
-suggests, involves deleting emails from source from the last day.
-I prefer the method explained above. Anyway, here is this other cenario...
+suggests, involves deleting emails from source from the last day. I
+prefer the method explained above. Anyway, here is this other
+scenario...
Something like this:
@@ -186,17 +189,50 @@ Option --automap is also good to do most of the translate job.
3) Folders to exclude, to speed up syncs, etc.
---exclude "^Backups" --exclude "(?i)spam" --exclude "(?i)junk" --exclude "(?i)trash" --exclude "(?i)lixeira" --exclude "(?i)Deleted Items"
+ imapsync ... --exclude "^Backups" --exclude "(?i)spam" --exclude "(?i)junk" --exclude "(?i)trash" --exclude "(?i)lixeira" --exclude "(?i)Deleted Items"
4) Delete older than 1 year from an account.
Use the account itself as source and destination and use:
---minage 365 --delete1
+ imapsync ... --minage 365 --delete1
-5) Check size of folders in an account. Use Imapsync with same account as source and destination, with this parameter:
+5) Check size of folders in an account. Use Imapsync with same account
+ as source and destination, with this parameter:
+
+ imapsync ... --justfoldersizes
+
+
+6) If you have problems copying messages that have labels which are
+ not supported, there are a few ways out.
+
+We use Dovecot and it doesn't support a series of labels, except the
+standard ones. By default, imapsync won't copy messages that have
+labels not supported by the recipient server. For that reason, I now
+always use --filterbuggyflags and tell customers that not all labels
+are copied.
+
+There are other alternatives, such as replacing problematic flags with
+other names or copying just standard flags, detailing which ones to
+copy, however, --filterbuggyflags was the easiest solution, which
+worked fine for us.
+
+7) Definitely worth reading about dupes, here
+https://imapsync.lamiral.info/FAQ.d/FAQ.Duplicates.txt, if you have
+problems. Always try to check, even if by sampling, if dupes
+occur. In a big migration, when you do several passes, try to check a
+few accounts.
+
+The one issue we had with many duplicated emals in the destinatio, was
+solved with the first solution in the above FAQ, using this syntax,
+when copying from source to the destination, hence effectively
+removing the dupes.
+
+ imapsync ... --useheader "Message-Id" --delete2duplicates
+
+Note that --delete2duplicates is on when --delete2 is used, unless
+--syncduplicates is used or --nodelete2duplicates is used.
---justfoldersizes
=======================================================================
=======================================================================
diff --git a/FAQ.d/FAQ.Massive.txt b/FAQ.d/FAQ.Massive.txt
index 095af1c..50d0d16 100644
--- a/FAQ.d/FAQ.Massive.txt
+++ b/FAQ.d/FAQ.Massive.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.Massive.txt,v 1.32 2021/11/01 11:30:48 gilles Exp gilles $
+$Id: FAQ.Massive.txt,v 1.34 2022/07/14 16:00:23 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -14,7 +14,7 @@ Questions answered here are:
Q. How long will take the whole migration?
-Q. I need to migrate hundred accounts, how can I do?
+Q. I need to migrate hundreds of accounts, how can I do that?
Q. I have to migrate 500k users using 400 TB of disk space.
How do I proceed? How about speed?
@@ -23,7 +23,7 @@ Q. How to determine where is the bottleneck in an imapsync process?
Q. Can I run several instances of imapsync in parallel on a Windows host?
-Q. I run multiple imapsync applications at the same time then get a
+Q. I run multiple imapsync applications at the same time and then get a
warning "imapsync.pid already exists, overwriting it".
Is this a potential problem when trying to sync multiple
IMAP account in parallel?
@@ -31,17 +31,18 @@ Q. I run multiple imapsync applications at the same time then get a
=======================================================================
Q. How long will take the whole migration?
-R1. First you have to consider several periods. There is the global
- period, from when the migration process is decided to the final end
+R1. First, you have to consider several periods. There is the global
+ period, from when the migration process is decided to the end,
where all mailboxes are migrated. This global period can be divided
into three smaller periods.
- The first period is the analyse period: you play with the tools
+ The first period is the analysis period: you play with the tools
available, you estimate the volume to be transferred, the number of
accounts, you measure how long it takes for one account under
your context.
- The second period is the presync period. The users are still using
+ The second period is what I call the presyncing period.
+ The users are still using
the old accounts but nothing prevents you from starting to sync
the old accounts, as they are, to the new accounts.
With tons of gigabytes to transfer, this period may be the longest one.
@@ -49,15 +50,15 @@ R1. First you have to consider several periods. There is the global
until the round is finished.
The last period is the final sync period where only the last
- changes of the mailboxes need to be synced in order to switch
+ mailboxes' changes need to be synced before switching
the users to their new mailboxes.
-R2. To estimate the presync period, consider the mean imapsync transfer
+R2. To estimate the presyncing period, consider the mean imapsync transfer
rate to be around 340 Kbytes/s, ie, 2.8 Mbps, no matter the local
link bandwidth.
- It's a mean, measured upon various different syncs, coming from
+ It's a mean, measured upon various syncs, coming from
the online service /X where the network card flow rate is 200 Mbps
- (Rx 100 Mps, Tx 100 Mps) and the provider bandwidth is also 200 Mbps.
+ (Rx 100 Mbps, Tx 100 Mbps) and the provider bandwidth is also 200 Mbps.
The maximum global rate seen is 22 MiB/s (176 Mbps).
At 340 Kbytes/s,
@@ -65,15 +66,15 @@ R2. To estimate the presync period, consider the mean imapsync transfer
At 10 transfers at a time, 1 TB will take 3.5 days.
At 100 transfers at a time, 1 TB will take 8 hours.
Double the time because the best scenario never happens.
- Triple the time because, well, real world is like that.
+ Triple the time because, well, the real world is like that.
-R3. An other way to better evaluate the end of the presync period can
+R3. Another way to better evaluate the end of the presyncing period can
be based on your actual data. Just apply a simple rule of three
on the mailboxes already migrated to estimate the global end.
If it took X hours to finish Y% of the mailboxes, then it
will take 100*X/Y hours to finish 100% of the mailboxes.
- Following the same idea but using matematical garbage,
+ Following the same idea but using mathematical garbage,
the ETA can be estimated like this:
t_0 = time of global start (the start of the first presync)
t_now = time of now.
@@ -90,11 +91,11 @@ R4. To estimate the last period, the final sync, just rerun a complete
the same amount of time.
=======================================================================
-Q. I need to migrate hundred accounts, how can I do?
+Q. I need to migrate hundreds of accounts, how can I do that?
R. If you have many mailboxes to migrate, think about a little
script program. Write a file called file.txt (for example)
-containing hosts, users and passwords on both sides.
+containing hosts, users, and passwords on both sides.
The separator used in this example is ";"
The file.txt file contains for example:
@@ -105,8 +106,8 @@ host003_1;user003_1;password003_1;host003_2;user003_2;password003_2;
host004_1;user004_1;password004_1;host004_2;user004_2;password004_2;
etc.
-Most of the times, the first column (host001_1, host002_1 ...) will
-contains the same value, the value of --host1 parameter. Same
+Most of the time, the first column (host001_1, host002_1 ...) will
+contain the same value, the value of --host1 parameter. Same
thing for the third column (host001_2, host002_2).
On Unix the shell script can be:
@@ -147,7 +148,7 @@ becomes
host001_1;user001_1;password001_1;host001_2;user001_2;password001_2; --automap --addheader
host002_1;user002_1;password002_1;host002_2;user002_2;password002_2; --automap --addheader
-With this solution, options can be added, changed or removed per account.
+With this solution, options can be added, changed, or removed per account.
Technically those options will go in %%M in the loop body
Here is a complete Windows example ready to use:
@@ -169,11 +170,11 @@ Q. I have to migrate 500k users using 400 TB of disk space.
R. A good solution to this issue is two words: parallelism and measurements.
-Since all mailboxes are functionnaly independent, they can be processed
+Since all mailboxes are functionally independent, they can be processed
independently, here comes the parallelism, ie, lunching several imapsync
processes in parallel.
-Meanwhile, mailboxes usually belong to the same server and the syncs
+Meanwhile, mailboxes usually belong to the same server, and the syncs
share the same imapsync host via the same bandwidth, here come
some limitations and bottlenecks.
@@ -184,7 +185,7 @@ Here comes some measurements.
Since adding this way is not so easy, just look at the overall
network rate of the imapsync host.
- On Linux and FreeBSD, nload is a good candidate to measure this overall
+ On Linux and FreeBSD, the command "nload" is a good candidate to measure this overall
network rate. For example, to measure the rate every 6 seconds (-t 6000),
on eth0 or em0 interface, with values in Kbytes (-u K), use:
@@ -195,24 +196,26 @@ Here comes some measurements.
dstat -n -N eth0 6 # Linux only (in 2018)
- Another excellent tool to measure the network trafic is iftop.
- The following command will monitor imap and imaps connexions
- on interfce eth0, only them, and sum them up:
+ Another excellent tool to measure the network traffic is iftop.
+ The following command will monitor imap and imaps connections
+ on interface eth0, only them, and sum them up:
iftop -i eth0 -f 'port imap or port imaps' -B # Linux
iftop -i em0 -f 'port imap or port imaps' -B # FreeBSD
During iftop, press the h to see the display commands available,
every single feature is useful! Press h again and try each one.
- My preferred display combination is by typing
+ My preferred display combination is by typing the keys
t p >
- meaning: one line per connection, show port numbers, sort by destination.
+ t means "one line per connection"
+ p means "show port numbers"
+ > means "sort by destination"
On Windows 8.1 Windows 10 Windows 2012 R2 Windows 2016,
get the overall network rate with the classical
task manager (Ctrl-Shift-Esc), there is a Performance tab
- in it where resides a Network grap monitor.
+ in it, where resides a Network monitor.
On Windows 7, get the overall network rate with the classical
task manager (Ctrl-Shift-Esc), there is a Network tab in it.
@@ -224,7 +227,7 @@ Here comes some measurements.
transfer rate increase.
3) When the total transfer rate starts to diminish, stop new launches.
- Note N as the number of parallel runs you got until then.
+ Note N as the number of runs in parallel you got until then.
4) Only keep N-2 parallel runs for the future.
@@ -234,15 +237,15 @@ Q. How to determine where is the bottleneck in an imapsync process?
R1. Divide and conquer.
-In order to detect whether host1/link1 is the bottleneck or
+To detect whether host1/link1 is the bottleneck or
host2/link2, we have several tests to explore:
-1) run a sync from host1 to host1, with a host1 test account as destination.
-This way, only host1+link1 are tested, host2 is not directly concerned.
+1) run a sync from host1 to host1, with a host1 test account as the destination.
+This way, only host1 and link1 are tested, host2 is not directly concerned.
If performances increase a lot then host2/link2 is the bottleneck.
-2) run a sync from host2 to host2, with a host2 test account as destination.
-This way, only host2+link2 are tested, host1 is not concerned.
+2) run a sync from host2 to host2, with a host2 test account as the destination.
+This way, only host2 and link2 are tested, host1 is not concerned.
If performances increase a lot then host1/link1 is the bottleneck.
If performances increase on both tests 1) and 2), I have no clue to explain that.
@@ -250,39 +253,39 @@ Same thing if they both decrease!
R2. Isolating and overcoming bottlenecks
-On any process involving several mechanisms, among all elements taking
-part on the process, there is always a bottleneck. No one knows in
+In any process involving several mechanisms, among all elements taking
+part in the process, there is always a bottleneck. No one knows in
advance what is the first bottleneck. The first bottleneck has to be
determined, by measurements, not by guesses. Once this first
bottleneck is known and overcome then the next bottleneck has to be
determined and overcome too, if needed. Repeat the process of looking
for the next bottleneck and its elimination until you estimate the
transfer rates, money costs, time spent on this, and final dates
-are good enough to proceed the whole huge migration.
+are good enough to proceed with the whole huge migration.
Possible bottlenecks:
- Throttles.
IMAP servers have artificial limits.
- For example Gmail, Office365, Exchange have throttle limits.
+ For example, Gmail, Office365, and Exchange have throttle limits.
- Bandwidth.
- Usually available bandwidth is NOT a bottleneck.
- Meanwhile, it can be a bottleneck on small Internet connexions.
+ Usually, the available bandwidth is not a bottleneck.
+ Meanwhile, it can be a bottleneck on small Internet connections.
Imapsync downloads messages from host1 and upload messages to host2,
- consider this in case the connexion are asymmetric.
+ consider this in case the connection is asymmetric.
-- I/O on disks.
- I/O are a classical bottleneck, almost always forgotten.
+- I/O, aka "Input/Output" on the disks of the imap servers.
+ The I/O on disks are a classical bottleneck, almost always forgotten.
Unlike CPU and RAM, Input/Output performances don't improve
very much as time goes on so it's often a bottleneck.
To measure and overcome an I/O disk bottleneck, you need
- usually a direct access to host1 and host2.
+ usually direct access to host1 and host2.
An I/O bottleneck where imapsync runs is possible if
--usecache or --useuid is used or with very big messages.
-- RAM memory.
+- RAM.
On all sides, monitor that your systems don't swap its
running processes on disk, because swapping running processes
on disks decreases performance by a factor of 20, at least.
@@ -291,9 +294,8 @@ Possible bottlenecks:
- CPU.
100% CPU during a whole transfer means the system is busy.
- Usually CPU is not a problem with imapsync but it can be a problem
- with one of the imap servers.
- Most often CPU is not the real bottleneck, I/O are.
+ CPU can be a problem with imapsync but it can also be a problem
+ with one or both of the imap servers.
Other possible bottlenecks:
- Number of hosts available to run imapsync processes.
@@ -312,10 +314,10 @@ Q. Can I run several instances of imapsync in parallel on a Windows host?
R. Yes!
-Q. Any performance issue?
+Q. Any performance issues?
You have to try and check the transfer rates, sum them up to
-have a uniq numeric criteria.
+have a unique numeric criterion.
There is always a limit, depending on remote imap servers
and the one running imapsync.
CPU, memory, Inputs/Outputs are the classical bottlenecks,
@@ -336,7 +338,7 @@ REM After that, just double-click on each batch file to launch each process
=======================================================================
-Q. I run multiple imapsync applications at the same time then get a
+Q. I run multiple imapsync applications at the same time and then get a
warning "imapsync.pid already exists, overwriting it".
Is this a potential problem when trying to sync multiple
IMAP account in parallel?
@@ -346,7 +348,7 @@ by yourself.
This file can help you to manage multiple runs by sending signals
to the processes (sigterm or sigkill) using their PID.
-Each run can have its own pid file with --pidfile option.
+Each run can have its pid file with --pidfile option.
The file imapsync.pid contains the PID of the current imapsync process.
This file is removed at the end of a normal run.
You can safely ignore the warning if you don't use imapsync.pid file
diff --git a/FAQ.d/FAQ.Office365.txt b/FAQ.d/FAQ.Office365.txt
index fcd6d37..6e3b9ee 100644
--- a/FAQ.d/FAQ.Office365.txt
+++ b/FAQ.d/FAQ.Office365.txt
@@ -1,5 +1,5 @@
-$Id: FAQ.Office365.txt,v 1.37 2022/04/06 09:58:39 gilles Exp gilles $
+$Id: FAQ.Office365.txt,v 1.38 2022/06/22 17:07:35 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -36,6 +36,9 @@ Q. Office365 fails with "User is authenticated but not connected".
Q. I see "NO Maximum size of appendable message has been exceeded"
What can I do with that?
+Q. Every single mail synced to exchange online owns the
+ category $MDNSent after migration. How can I avoid this?
+
Q. The imap connection to Office365 is not working very efficiently,
is there a solution to fix that?
@@ -334,6 +337,17 @@ values on the migration accounts in the source and target tenants.
Thanks to Sean McDougall, Ian Thomas & Matt Wilks from Toronto
for this FAQ item.
+======================================================================
+Q. Every single mail synced to exchange online owns the
+ category $MDNSent after migration. How can I avoid this?
+
+R. To remove the flag $MDNSent from all messages, use:
+
+ imapsync ... --regexflag "s/\$MDNSent//g"
+
+See also the document
+https://imapsync.lamiral.info/FAQ.d/FAQ.Flags.txt
+
======================================================================
Q. The imap connection to Office365 is not working very efficiently,
is there a solution to fix that?
diff --git a/FAQ.d/FAQ.OnlineUI.txt b/FAQ.d/FAQ.OnlineUI.txt
index d643d4d..26ed41a 100644
--- a/FAQ.d/FAQ.OnlineUI.txt
+++ b/FAQ.d/FAQ.OnlineUI.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.OnlineUI.txt,v 1.32 2022/03/23 11:00:27 gilles Exp gilles $
+$Id: FAQ.OnlineUI.txt,v 1.36 2022/09/14 11:18:05 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -35,23 +35,26 @@ 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?
+Q. The synchronization fails with the error message like:
+ Err 1/1: Host1 failure: Error login on [10.1.161.155] with user [webmaster@truc.com] auth [LOGIN]: 2 NO [ALERT] LOGIN DENIED -- COUNTRY IS BLACKLISTED
+
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
+A. 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?
-R0. Well, I don't know if asking the provider whether his online
+A0. Well, I don't know if asking the provider whether his online
service is secure or not would be of any interest.
Let's do it anyway, you'll be the judge.
-R1. Some figures
+A1. Some figures
Date of this report: 24 December 2021. Happy Christmas!
@@ -64,7 +67,7 @@ On average, /X has 51 users per day, each user lunches on average
The total volume /X transferred so far is around 240 TiB coming
from nearly 520 000 imap account migrations and 810 million email messages.
-R2. Pros & Cons
+A2. Pros & Cons
The online imapsync service /X runs on HTTPS only, with a letsencrypt
certificate, an up to date certificate overall rated "A+" at
@@ -148,7 +151,7 @@ Q. I want to switch from the visual interface /X to the
https://imapsync.lamiral.info/#DOC_BASIC
What should I know?
-R. Let's do some ascii art.
+A. Let's do some ascii art.
The visual interface looks roughly like this, for the textfields input part:
+------------------------------------------+------------------------------------------+
@@ -203,7 +206,7 @@ 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?
-R. A browser connection closed closes also the imapsync process,
+A. A browser connection closed closes also the imapsync process,
ie, the sync is ended right away.
Further comments on this behavior.
@@ -240,7 +243,7 @@ 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?
-R. If the webserver closes the connection then usually it also
+A. If the webserver closes the connection then usually it also
kills the imapsync process and the imap connections as well.
The current webserver timeout at
@@ -252,12 +255,46 @@ 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?
-R. I've seen this issue on /X with the imap server
+A. I've seen this issue on /X with the imap server
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.
+=====================================================================
+Q. The synchronization fails with the error message like:
+ Err 1/1: Host1 failure: Error login on [10.1.161.155] with user [webmaster@truc.com] auth [LOGIN]: 2 NO [ALERT] LOGIN DENIED -- COUNTRY IS BLACKLISTED
+
+A. The message "[ALERT] LOGIN DENIED -- COUNTRY IS BLACKLISTED" comes directly
+ from the IMAP server at 10.1.161.155
+
+It looks like that the 10.1.161.155 imap server filters incoming
+connexions based on their IPS. In that case, here are the current
+IPs of the imapsync online service (September 2022):
+
+ks5.lamiral.info has address 91.121.221.224
+ks5ipv6.lamiral.info has IPv6 address 2001:41d0:2:84e0::1
+ks6.lamiral.info has address 5.39.87.81
+ks6ipv6.lamiral.info has IPv6 address 2001:41d0:8:9951::1
+ks7.lamiral.info has address 5.135.177.225
+ks7ipv6.lamiral.info has IPv6 address 2001:41d0:8:b8e1::1
+i050.lamiral.info has address 213.32.72.139
+i050ipv6.lamiral.info has IPv6 address 2001:41d0:302:1000::155d
+vp3.lamiral.info has address 51.178.81.27
+vp3ipv6.lamiral.info has IPv6 address 2001:41d0:404:200::4d81
+vp4.lamiral.info has address 51.38.34.201
+vp4ipv6.lamiral.info has IPv6 address 2001:41d0:305:2100::4c46
+
+The imapsync online service may contact your imap server with one
+or more of those IP addresses.
+
+CPhulk of Cpannel has a buildin country block that can cause this behavior.
+Later on you may encountered issues with maximum sessions per ip.
+You can change that within cPannel.
+
+https://support.cpanel.net/hc/en-us/articles/4406663082519-What-is-cPHulk-
+https://docs.cpanel.net/whm/security-center/cphulk-brute-force-protection/
+
=====================================================================
=====================================================================
diff --git a/FAQ.d/FAQ.Release_Checklist.txt b/FAQ.d/FAQ.Release_Checklist.txt
index 4a55af5..211a143 100644
--- a/FAQ.d/FAQ.Release_Checklist.txt
+++ b/FAQ.d/FAQ.Release_Checklist.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.Release_Checklist.txt,v 1.22 2022/01/14 12:46:38 gilles Exp gilles $
+$Id: FAQ.Release_Checklist.txt,v 1.27 2022/09/16 05:35:27 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -17,14 +17,28 @@ Checklist before release a new release:
- Make "imapsync --tests" pass on Windows 32 bits
- Make "imapsync --tests" pass on Windows 64 bits
+make linuxtests
+make win32tests
+make win64tests
+make mactests
+
+or
+
+make -j linuxtests win32tests win64tests mactests
+
- Make "imapsync --testslive" pass on Linux
- Make "imapsync --testslive" pass on Mac
-- Make "imapsync --testslive" pass on Windows 32 bits
-- Make "imapsync --testslive" pass on Windows 64 bits
+
+
+make linuxtestslive mactestslive mactestslive6
+
- Add a new section in S/news.shtml reading "rlog imapsync"
- In case of a new dependency, add it to all the INSTALL/* files.
- Generate the README
+
+make doc
+
- Run a spell checker on the README
- Read the README again slowly. Fix all issues, all.
- Read the OPTIONS section of README and read it very slowly
@@ -38,8 +52,8 @@ Checklist before release a new release:
- Review the newsletter by running:
m4 -P W/ml_announce.in.txt
-- Update W/rsync_exclude_dist.txt
-- Update .gitignore
+- Update the file W/rsync_exclude_dist.txt
+- Update the file .gitignore
- Review the TODO file and mark done what is done.
- Review the general FAQ.d/FAQ.General.txt
diff --git a/FAQ.d/FAQ.Two_Ways_Sync.txt b/FAQ.d/FAQ.Two_Ways_Sync.txt
index 2650088..bc83151 100644
--- a/FAQ.d/FAQ.Two_Ways_Sync.txt
+++ b/FAQ.d/FAQ.Two_Ways_Sync.txt
@@ -1,4 +1,4 @@
-$Id: FAQ.Two_Ways_Sync.txt,v 1.6 2022/02/22 15:16:16 gilles Exp gilles $
+$Id: FAQ.Two_Ways_Sync.txt,v 1.8 2022/07/25 14:03:49 gilles Exp gilles $
This documentation is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -21,14 +21,15 @@ stateless.
Each time imapsync runs, it considers messages and folders as if it
were the first time it encounters them. Imapsync looks at messages,
flags, and folders as they are now, not considering what they were
-before. Imapsync has no memory outside the current running sync.
+before the current. Imapsync has no memory outside the current running
+sync.
So now, why a stateless behavior cannot handle well a two ways sync
between an account A and an account B?
The problem arises with deletions, messages deletions, folders
-deletions, or movings, messages movings across folders, folders
-movings, and also folders renamings. Deletions and moves are ambiguous
+deletions, or with moves, messages moves across folders, folders
+moves, and also folders renamings. Deletions and moves are ambiguous
changes when combined with creations on the opposite side.
For example, if a message is deleted from A by a user, then imapsync
@@ -38,18 +39,64 @@ that has to be copied from B.
But if you know the answer yourself, that missing messages on one side
A are deleted messages that have to be deleted on the other side then
-run a sync with the --delete2 option from A to B.
+run a sync with the --delete2 option from A to B. This assumes there
+is no new messages on B because --delete2 will delete them.
-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 that the missing messages on A are 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, 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.
+to A, put the two accounts in a synchronized state. The deletions of
+messages on either side get cancelled, deleted messages come back. A
+folder renaming on either side brings back the old folder. It's not a
+good two ways synchronization.
+
+
+My suggestion is:
+
+a) Use a single active imap account that fits all your needs,
+ available from anywhere, at any time. Access it from both your
+ laptop and your iphone.
+
+b) Feed this active account with foreign and passive accounts with any
+ tool that can handle the transfer, imapsync being one of them.
+
+c) Have a slave imap backup account of the active one, available also
+ from anywhere, at any time. Use it only as a failsafe account, when
+ the active one is broken or to bring back misguidely deleted
+ messages to the active account. Use any tool that can handle the
+ synchronization, imapsync being a good one of them.
+
+
+=======================================================================
+Q. What can I do instead of having two ways synchronizations?
+
+R. My suggestion is:
+
+a) Use only one single active imap account that fits all your needs,
+ available from anywhere, at any time. Access it from all your
+ devices, laptops, phones, tablets.
+
+b) Feed this active account with foreign and passive accounts with any
+ tool that can handle the transfer, imapsync being one of them.
+
+c) Have a slave imap backup account of the active one, available also
+ from anywhere, at any time. Use it only as a failsafe account, when
+ the active one is broken or to bring back misguidely deleted
+ messages to the active account. Use any tool that can handle the
+ synchronization, imapsync being a good one of them.
+
+
+=======================================================================
+Q. What tools can I use to handle two ways synchronizations?
+
+R. There are offlineimap and mbsync/isync tools:
+
+offlineimap is located at http://www.offlineimap.org/
+mbsync/isync is located at https://isync.sourceforge.io/
=======================================================================
diff --git a/FAQ.d/FAQ.User_Concurrent_Access.txt b/FAQ.d/FAQ.User_Concurrent_Access.txt
index 18e504c..00f7ee0 100644
--- a/FAQ.d/FAQ.User_Concurrent_Access.txt
+++ b/FAQ.d/FAQ.User_Concurrent_Access.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.User_Concurrent_Access.txt,v 1.5 2018/05/24 11:34:30 gilles Exp gilles $
+$Id: FAQ.User_Concurrent_Access.txt,v 1.6 2022/05/05 13:18:29 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -35,6 +35,23 @@ Details:
so --delete2 is needed to sync the deletion.
* message flag change => will need a resync
+Let's more precise about timing.
+Imapsync works per folder, one folder at a time.
+
+If imapsync has already synced a folder during a run,
+what happens to this folder now won't be synced by the current run.
+
+If imapsync has not already synced a folder during a run,
+what happens to this folder now will be synced by the current run.
+
+If imapsync is syncing a folder during a run,
+what happens to this folder now depends on when things happen.
+Imapsync starts by listing messages and getting meta data about them,
+Message-Id, Date, Size.
+A message deleted just after the listing, won't be synced.
+A new message arriving just after the listing, won't be synced.
+
+
* Writing at destination/host2:
* adding folder => no problem, unless --delete2folders is used
* deleting folder => will reappear by a new sync
@@ -42,5 +59,7 @@ Details:
* deleting message => might reappear by a new sync.
* message flag change => will be reseted by a new sync.
+
+
=======================================================================
=======================================================================
\ No newline at end of file
diff --git a/FAQ.d/FAQ.Yahoo.txt b/FAQ.d/FAQ.Yahoo.txt
index 24c3e1f..3d0ddf7 100644
--- a/FAQ.d/FAQ.Yahoo.txt
+++ b/FAQ.d/FAQ.Yahoo.txt
@@ -1,5 +1,5 @@
-$Id: FAQ.Yahoo.txt,v 1.13 2021/12/03 12:38:58 gilles Exp gilles $
+$Id: FAQ.Yahoo.txt,v 1.15 2022/05/05 14:17:22 gilles Exp gilles $
This document is also available online at
https://imapsync.lamiral.info/FAQ.d/
@@ -64,7 +64,18 @@ Q. Synchronizing from XXX to Yahoo
R. Example:
+On Linux:
./imapsync \
+ --host1 XXX \
+ --user1 Billy@other.com \
+ --password1 billysecreta \
+ --host2 imap.mail.yahoo.com \
+ --user2 Billy@yahoo.com \
+ --password2 billysecretb \
+ --regexmess 's{(?
@@ -191,7 +196,7 @@ stuff with the following commands:
a2enmod cgi
a2enconf serve-cgi-bin
- /etc/init.d/apache2 reload
+ /etc/init.d/apache2 restart
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
@@ -216,6 +221,9 @@ it will work under Apache with this command:
su -s /bin/sh -c 'SERVER_SOFTWARE=foo /usr/lib/cgi-bin/imapsync' www-data
+You should end with something like:
+Exiting with return value 0 (EX_OK: successful termination)
+
Test that imapsync is considered a cgi with:
wget -nv -S -O- http://localhost/cgi-bin/imapsync?testslive=1
@@ -223,8 +231,9 @@ Test that imapsync is considered a cgi with:
The last command should print something like:
Status: 200 OK to sync IMAP boxes. Load on bar is ...
...
+Exiting with return value 0 (EX_OK: successful termination)
-If you get a 404 here then review the cgi installation and
+If you get a 404 or a 5xx here then review the cgi installation and
configuration part.
@@ -264,6 +273,12 @@ Check
or the safer
https://yourhost/X/imapsync_form_extra.html
+Let's encrypt your site because crendentials should never travel in
+clear form. Go to https://certbot.eff.org/instructions
+
+See the Troubleshooting section to fix the systemd Apache
+PrivateTmp=true issue.
+
That's all for installing a /X service on a Debian family system.
=============================================================================
@@ -352,15 +367,19 @@ while maintaining SELinux in enforcing mode.
Quick solution:
- sestatus
- setenforce 0
- sestatus
+ getsebool httpd_can_network_connect # should show --> off
+ setsebool -P httpd_can_network_connect=1
+ getsebool httpd_can_network_connect # should show --> on
+ wget -nv -S -O- http://localhost/cgi-bin/imapsync?testslive=1 # no more "Permission denied"
+
+The -P option installs the rule permanently, even after a reboot
To go back to the previous state:
- setenforce 1
- sestatus
-
+ getsebool httpd_can_network_connect # should show --> on
+ setsebool -P httpd_can_network_connect=0
+ getsebool httpd_can_network_connect # should show --> off
+
Nota bene
=========
@@ -387,16 +406,18 @@ https://humdi.net/vnstat/
Vnstat is already available as a package in most Linux distros.
The images are generated by the following commands, every minute:
-vnstati -s -o /var/www/vnstat/vnstat_s.png
-vnstati -h -o /var/www/vnstat/vnstat_h.png
-vnstati -hg -o /var/www/vnstat/vnstat_hg.png
-vnstati -hs -o /var/www/vnstat/vnstat_hs.png
-vnstati -d -o /var/www/vnstat/vnstat_d.png
-vnstati -m -o /var/www/vnstat/vnstat_m.png
-vnstati -y -o /var/www/vnstat/vnstat_y.png
-vnstati -t -o /var/www/vnstat/vnstat_t.png
-vnstati -vs -o /var/www/vnstat/vnstat_vs.png
-vnstati -5 -o /var/www/vnstat/vnstat_5.png
+vnstati -s -o /var/www/html/vnstat/vnstat_s.png
+vnstati -h -o /var/www/html/vnstat/vnstat_h.png
+vnstati -hg -o /var/www/html/vnstat/vnstat_hg.png
+vnstati -hs -o /var/www/html/vnstat/vnstat_hs.png
+vnstati -d -o /var/www/html/vnstat/vnstat_d.png
+vnstati -m -o /var/www/html/vnstat/vnstat_m.png
+vnstati -y -o /var/www/html/vnstat/vnstat_y.png
+vnstati -t -o /var/www/html/vnstat/vnstat_t.png
+vnstati -vs -o /var/www/html/vnstat/vnstat_vs.png
+vnstati -5 -o /var/www/html/vnstat/vnstat_5.png
+
+
=======================================================================
@@ -441,14 +462,22 @@ be canceled the next time the apache package is updated.
Debian:
systemctl edit apache2
+
cat /etc/systemd/system/apache2.service.d/override.conf
+[Service]
+PrivateTmp=false
+
systemctl daemon-reload
systemctl restart apache2
systemctl status apache2
Centos:
systemctl edit httpd
+
cat /etc/systemd/system/httpd.service.d/override.conf
+[Service]
+PrivateTmp=false
+
systemctl daemon-reload
systemctl restart httpd
systemctl status httpd
diff --git a/INSTALL.d/INSTALL.Ubuntu.txt b/INSTALL.d/INSTALL.Ubuntu.txt
index a9df12d..1c1ca43 100644
--- a/INSTALL.d/INSTALL.Ubuntu.txt
+++ b/INSTALL.d/INSTALL.Ubuntu.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-# $Id: INSTALL.Ubuntu.txt,v 1.18 2021/07/30 15:06:43 gilles Exp gilles $
+# $Id: INSTALL.Ubuntu.txt,v 1.21 2022/06/03 16:58:47 gilles Exp gilles $
This documentation is also located online at
https://imapsync.lamiral.info/INSTALL.d/
@@ -17,6 +17,7 @@ This command installs standard Ubuntu packages:
sudo apt-get install \
libauthen-ntlm-perl \
libclass-load-perl \
+libcrypt-openssl-rsa-perl \
libcrypt-ssleay-perl \
libdata-uniqid-perl \
libdigest-hmac-perl \
@@ -28,11 +29,13 @@ libio-compress-perl \
libio-socket-inet6-perl \
libio-socket-ssl-perl \
libio-tee-perl \
+libjson-webtoken-perl \
libmail-imapclient-perl \
libmodule-scandeps-perl \
libnet-dbus-perl \
libnet-ssleay-perl \
libpar-packer-perl \
+libproc-processtable-perl \
libreadonly-perl \
libregexp-common-perl \
libsys-meminfo-perl \
@@ -58,11 +61,6 @@ the following command installs it "manually":
sudo cpanm Mail::IMAPClient
-In case you need to use XOAUTH2 authentication you have to install
-the module JSON::WebToken with the command:
-
- sudo cpanm JSON::WebToken
-
After installing the dependencies, imapsync should be working.
You don't have to be root to test and use imapsync.
diff --git a/INSTALL.d/INSTALL.webserver.txt b/INSTALL.d/INSTALL.webserver.txt
new file mode 100644
index 0000000..f02d4db
--- /dev/null
+++ b/INSTALL.d/INSTALL.webserver.txt
@@ -0,0 +1,18 @@
+#!/bin/cat
+# $Id: INSTALL.webserver.txt,v 1.6 2022/06/15 12:09:39 gilles Exp gilles $
+
+This documentation is also located online at
+https://imapsync.lamiral.info/INSTALL.d/
+https://imapsync.lamiral.info/INSTALL.d/INSTALL.webserver.txt
+
+
+The script named webserver in the top directory is a small web server
+dedicated to offer the visual interface. It is experimental and it is
+for now a plain text HTTP server (ie, not https).
+
+
+Dependencies to run webserver on Debian/Ubuntu distributions:
+
+ sudo apt install libnet-server-perl
+
+
diff --git a/INSTALL.d/prerequisites_imapsync b/INSTALL.d/prerequisites_imapsync
index bbac1f4..34be2dd 100755
--- a/INSTALL.d/prerequisites_imapsync
+++ b/INSTALL.d/prerequisites_imapsync
@@ -1,6 +1,6 @@
#!/bin/sh
-# $Id: prerequisites_imapsync,v 1.35 2019/11/27 15:58:46 gilles Exp gilles $
+# $Id: prerequisites_imapsync,v 1.36 2022/05/17 13:46:16 gilles Exp gilles $
MODULES_MANDATORY='
App::cpanminus
@@ -39,6 +39,7 @@ Package::Stash::XS
PAR::Packer
Parse::RecDescent
Pod::Usage
+Proc::ProcessTable
Readonly
Regexp::Common
Sys::MemInfo
diff --git a/Makefile b/Makefile
index d1e9edf..36a3919 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
-# $Id: Makefile,v 1.345 2022/04/06 10:00:39 gilles Exp gilles $
+# $Id: Makefile,v 1.349 2022/09/15 08:43:25 gilles Exp gilles $
.PHONY: help usage all doc
@@ -109,8 +109,6 @@ VERSION: imapsync
touch -r ./imapsync ./VERSION
-
-
doc/GOOD_PRACTICES.html: doc/GOOD_PRACTICES.t2t
txt2tags -i doc/GOOD_PRACTICES.t2t -t html --toc -o doc/GOOD_PRACTICES.html
./W/tools/validate_html4 doc/GOOD_PRACTICES.html
@@ -172,18 +170,32 @@ install: testp W/imapsync.1
install W/imapsync.1 $(DESTDIR)$(PREFIX)/share/man/man1/imapsync.1
chmod 644 $(DESTDIR)$(PREFIX)/share/man/man1/imapsync.1
-
-
-
###############
# Local goals
###############
-.PHONY: prereq test tests unitests testp testf test3xx perlcritic allcritic crit compok dev cover tidy nytprof functree
+.PHONY: dailybuild dailytests prereq test tests unitests testp testf test3xx perlcritic allcritic crit compok dev cover tidy nytprof functree
dev: test functree crit cover nytprof bin
+dailytests: linuxtests win32tests win64tests mactests
+
+dailybuild: linuxbuild win32build win64build macbuild
+
+linuxtests:
+ ./imapsync --tests
+
+linuxtestsdebug:
+ ./imapsync --testsdebug
+
+testsdebug: linuxtestsdebug win64testsdebug win32testsdebug mactestsdebug
+
+testslive: mactestslive
+
+
+
+
docker:
@echo "make docker_copy_to_vp3 # copy imapsync Dockerfile memo_docker to vp3"
@echo "make docker_build # build the imapsync docker image"
@@ -258,7 +270,7 @@ perlcritic: W/perlcritic_3.txt W/perlcritic_2.txt
allcritic: W/perlcritic_4.txt W/perlcritic_3.txt W/perlcritic_2.txt W/perlcritic_1.txt
W/perlcritic_1.txt: imapsync W/.compok
- perlcritic --statistics-only -1 imapsync > W/perlcritic_1.txt.tmp || :
+ perlcritic --statistics -1 imapsync > W/perlcritic_1.txt.tmp || :
mv W/perlcritic_1.txt.tmp W/perlcritic_1.txt
echo | ci -l W/perlcritic_1.txt
@@ -331,6 +343,7 @@ win32testsdebug:
./W/check_winerr test_testsdebug.bat
+
.PHONY: W/*.bat examples/*
@@ -451,35 +464,48 @@ imapsync_32bit.exe: imapsync
chmod a+r+x imapsync_32bit.exe
(date "+%s"| tr "\n" " "; echo -n "END 32bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
+win64tests: win64tests_p26
-
-win64tests:
+win64tests_p24:
unix2dos W/test_tests.bat
scp imapsync W/test_tests.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_tests.bat'
./W/check_win64err test_tests.bat
-win64testsdebug:
+win64testsdebug_p24:
unix2dos W/test_testsdebug.bat
scp imapsync W/test_testsdebug.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_testsdebug.bat'
./W/check_win64err test_testsdebug.bat
-
+win64testsdebug: win64testsdebug_p26
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'
+ scp imapsync W/test_testsdebug.bat gille@p26:'OneDrive\Bureau\imapsync_build'
+ ssh gille@p26 'OneDrive\Bureau\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'
+ scp imapsync W/test_tests.bat gille@p26:'OneDrive\Bureau\imapsync_build'
+ ssh gille@p26 'OneDrive\Bureau\imapsync_build\test_tests.bat'
./W/check_p26err test_tests.bat
+win64_test_exe_always_fail_p26:
+ unix2dos W/test_exe_always_fail.bat
+ scp W/test_exe_always_fail.bat gille@p26:'OneDrive\Bureau\imapsync_build'
+ ssh gille@p26 'OneDrive\Bureau\imapsync_build\test_exe_always_fail.bat'
+ ./W/check_p26err test_exe_always_fail.bat
+
+win64_test_always_fail_p26:
+ unix2dos W/test_exe_always_fail.bat
+ scp imapsync W/test_always_fail.bat gille@p26:'OneDrive\Bureau\imapsync_build'
+ ssh gille@p26 'OneDrive\Bureau\imapsync_build\test_always_fail.bat'
+ ./W/check_p26err test_always_fail.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'
@@ -543,19 +569,46 @@ win64prepa: winprepalocal
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/build_exe.bat'
./W/check_win64err build_exe.bat
-win64build: winprepalocal
+win64build_p24: winprepalocal
scp imapsync W/build_exe.bat W/install_modules.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/build_exe.bat'
./W/check_win64err build_exe.bat
imapsync.exe: imapsync_64bit.exe_p26
- cp -a imapsync_64bit.exe imapsync.exe
+ cp -a imapsync_64bit.exe_p26 imapsync.exe
+
+win64build: imapsync_64bit.exe_p26
+win64build_p26: winprepalocal
+ scp imapsync W/build_exe.bat W/install_modules.bat gille@p26:'OneDrive\Bureau\imapsync_build'
+ ssh gille@p26 'OneDrive\Bureau\imapsync_build\build_exe.bat'
+ ./W/check_win64err build_exe.bat
+
.PHONY: imapsync_64bit.exe_p24 imapsync_64bit.exe_p26
+64exe: imapsync_64bit.exe_p26
+
+imapsync_64bit.exe_p26: 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 OneDrive\Bureau\imapsync_build mkdir OneDrive\Bureau\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:'OneDrive\Bureau\imapsync_build'
+ ssh gille@p26 'OneDrive\Bureau\imapsync_build\build_exe.bat'
+ ./W/check_p26err build_exe.bat
+ scp ../../var/pass/secret.tata ../../var/pass/secret.titi gille@p26:'OneDrive\Bureau\imapsync_build'
+ ssh gille@p26 'OneDrive\Bureau\imapsync_build\test_exe.bat'
+ ./W/check_p26err test_exe.bat
+ rm -f imapsync_64bit.exe
+ scp -T gille@p26:'OneDrive\Bureau\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
+
imapsync_64bit.exe_p24: imapsync
(date "+%s"| tr "\n" " "; echo -n "BEGIN 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
@@ -573,26 +626,8 @@ imapsync_64bit.exe_p24: imapsync
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
+zip: dosify_bat cidone
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)/
@@ -614,9 +649,9 @@ zip: dosify_bat
mac: imapsync_bin_Darwin
macstadiumcopy:
- rsync -v imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync webserver administrator@macstadium.lamiral.info:
- rsync -v examples/file.txt examples/sync_loop_darwin.sh administrator@macstadium.lamiral.info:examples/
- rsync -v X/ administrator@macstadium.lamiral.info:X/
+ rsync -pv imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync webserver administrator@macstadium.lamiral.info:
+ rsync -pv examples/file.txt examples/sync_loop_darwin.sh administrator@macstadium.lamiral.info:examples/
+ rsync -pv X/ administrator@macstadium.lamiral.info:X/
maccopy:
rsync -v -p -e 'ssh -4 -p 995' imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync webserver \
@@ -648,6 +683,16 @@ mactestslive6:
rsync -p -e 'ssh -4 -p 995' imapsync gilleslamira@gate.polarhome.com:
ssh -4 -p 995 gilleslamira@gate.polarhome.com '. .bash_profile; perl imapsync --testslive6'
+macstests:
+ rsync -pv imapsync administrator@macstadium.lamiral.info:
+ ssh administrator@macstadium.lamiral.info '. .bash_profile; perl imapsync --tests'
+
+macstestsdebug:
+ rsync -pv imapsync administrator@macstadium.lamiral.info:
+ ssh administrator@macstadium.lamiral.info '. .bash_profile; perl imapsync --testsdebug'
+
+
+
.PHONY: bin win lin win32 win64
bin: mac win
@@ -660,6 +705,10 @@ win32: imapsync_32bit.exe
win64: imapsync_64bit.exe
+win32build: imapsync_32bit.exe
+
+linuxbuild: lin
+
$(BIN_NAME): imapsync
rcsdiff imapsync
@@ -893,15 +942,19 @@ upload_latest: unitests ci_imapsync bin
-.PHONY: upload_cgi upload_cgi_ks5 upload_cgi_memo upload_cgi_vp3 upload_cgi_vp4 upload_cgi_ks6
+.PHONY: upload_cgi upload_cgi_ks5 upload_cgi_memo upload_cgi_vp3 upload_cgi_vp4 upload_cgi_ks6 upload_tmphash_all
-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_proximapsync:
+ rcsdiff W/learn/proximapsync
+ W/learn/proximapsync --tests
+ W/learn/proximapsync --testslive | grep 'Exiting with return value 0'
+ rsync -P W/learn/proximapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/proximapsync_new
+ ssh root@ks5.lamiral.info '/home/www/apache24/cgi-bin/proximapsync_new --tests'
+ ssh root@ks5.lamiral.info '/home/www/apache24/cgi-bin/proximapsync_new --testslive' | grep 'Exiting with return value 0'
+ curl -v --data 'testslive=1' https://imapsync.lamiral.info/cgi-bin/proximapsync_new 2>/dev/null | grep 'Exiting with return value 0'
+ rsync -P W/learn/proximapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/proximapsync
+ curl -v --data 'testslive=1' https://imapsync.lamiral.info/cgi-bin/proximapsync 2>/dev/null | grep 'Exiting with return value 0'
upload_cgi_memo:
dos2unix X/stat_patterns.txt X/server_survey_patterns.txt
@@ -909,31 +962,73 @@ upload_cgi_memo:
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/
+ rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@ks5:/var/tmp/imapsync_cgi/
+ rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@ks6:/var/tmp/imapsync_cgi/
+ rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@ks7:/var/tmp/imapsync_cgi/
+ rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@vp3:/var/tmp/imapsync_cgi/
+ rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@vp4:/var/tmp/imapsync_cgi/
+ ! ping -c1 -W1 cl1 || rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@cl1:/var/tmp/imapsync_cgi/
+
+upload_tmphash_all:
+ scp /var/tmp/imapsync_hash root@ks5:/var/tmp/imapsync_hash && ssh root@ks5 chgrp www /var/tmp/imapsync_hash
+ scp /var/tmp/imapsync_hash root@ks6:/var/tmp/imapsync_hash && ssh root@ks6 chgrp www-data /var/tmp/imapsync_hash
+ scp /var/tmp/imapsync_hash root@vp3:/var/tmp/imapsync_hash && ssh root@vp3 chgrp www-data /var/tmp/imapsync_hash
+ scp /var/tmp/imapsync_hash root@vp4:/var/tmp/imapsync_hash && ssh root@vp4 chgrp apache /var/tmp/imapsync_hash
+ scp /var/tmp/imapsync_hash root@i050:/var/tmp/imapsync_hash && ssh root@i050 chgrp www-data /var/tmp/imapsync_hash
+
+test_cgi_all:
+ curl -v --data 'testslive=1;exitonload=0' https://imapsync.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0' # ks5
+ curl -v --data 'testslive=1;exitonload=0' https://i006.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
+ curl -v --data 'testslive=1;exitonload=0' https://i007.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
+ curl -v --data 'testslive=1;exitonload=0' https://i013.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
+ curl -v --data 'testslive=1;exitonload=0' https://i014.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
+
+upload_cgi: upload_cgi_ks5 upload_cgi_vp3 upload_cgi_vp4 upload_cgi_ks6 upload_cgi_ks7
+
+# FreeBSD
+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;exitonload=0' https://imapsync.lamiral.info/cgi-bin/imapsync_new 2>/dev/null | grep 'Exiting with return value 0'
+ rsync -P imapsync root@ks5.lamiral.info:/home/www/apache24/cgi-bin/imapsync
+ curl -v --data 'testslive=1;exitonload=0' https://imapsync.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
+
# 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'
+ curl -v --data 'testslive=1;exitonload=0' https://vp3.lamiral.info/cgi-bin/imapsync_new 2>/dev/null | 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'
+ curl -v --data 'testslive=1;exitonload=0' https://vp3.lamiral.info/cgi-bin/imapsync 2>/dev/null | 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'
+ curl -v --data 'testslive=1;exitonload=0' https://vp4.lamiral.info/cgi-bin/imapsync_new 2>/dev/null | 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'
+ curl -v --data 'testslive=1;exitonload=0' https://vp4.lamiral.info/cgi-bin/imapsync 2>/dev/null | 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'
+ curl -v --data 'testslive=1;exitonload=0' https://ks6.lamiral.info/cgi-bin/imapsync_new 2>/dev/null | 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'
+ curl -v --data 'testslive=1;exitonload=0' https://ks6.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
+
+# Promox/Debian
+upload_cgi_ks7: ci_imapsync ks7tests
+ rsync -P imapsync root@ks7.lamiral.info:/usr/lib/cgi-bin/imapsync_new
+ curl -v --data 'testslive=1;exitonload=0' https://ks7.lamiral.info/cgi-bin/imapsync_new 2>/dev/null | grep 'Exiting with return value 0'
+ rsync -P imapsync root@ks7.lamiral.info:/usr/lib/cgi-bin/imapsync
+ curl -v --data 'testslive=1;exitonload=0' https://ks7.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
+
+# Debian
+upload_cgi_cl1: ci_imapsync cl1tests
+ rsync -P imapsync root@cl1.lamiral.info:/usr/lib/cgi-bin/imapsync_new
+ curl -v --data 'testslive=1;exitonload=0' https://cl1.lamiral.info/cgi-bin/imapsync_new 2>/dev/null | grep 'Exiting with return value 0'
+ rsync -P imapsync root@cl1.lamiral.info:/usr/lib/cgi-bin/imapsync
+ curl -v --data 'testslive=1;exitonload=0' https://cl1.lamiral.info/cgi-bin/imapsync 2>/dev/null | grep 'Exiting with return value 0'
+
+
.PHONY: vp3tests vp4tests ks6tests
@@ -952,10 +1047,29 @@ ks6tests:
ssh root@ks6.lamiral.info ./imapsync --tests
ssh root@ks6.lamiral.info ./imapsync --testslive6
+ks7tests:
+ rsync -P imapsync root@ks7.lamiral.info:imapsync
+ ssh root@ks7.lamiral.info ./imapsync --tests
+ ssh root@ks7.lamiral.info ./imapsync --testslive6
+
+cl1tests:
+ rsync -P imapsync root@cl1.lamiral.info:imapsync
+ ssh root@cl1.lamiral.info ./imapsync --tests
+ ssh root@cl1.lamiral.info ./imapsync --testslive6
+
+
+upload_imapsync_all:
+ scp imapsync INSTALL.d/prerequisites_imapsync W/learn/processtable root@i005.lamiral.info:
+ scp imapsync INSTALL.d/prerequisites_imapsync W/learn/processtable root@i006.lamiral.info:
+ scp imapsync INSTALL.d/prerequisites_imapsync W/learn/processtable root@i013.lamiral.info:
+ scp imapsync INSTALL.d/prerequisites_imapsync W/learn/processtable root@i014.lamiral.info:
+
+
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
- rcsdiff X/imapsync_form.html X/imapsync_form_extra.html X/imapsync_form_extra_free.html X/imapsync_form_wrapper.html X/imapsync_form.css X/noscript.css
- rcsdiff X/imapsync_form.js X/imapsync_form_wrapper.js
+ ./W/tools/validate_xml_html5 X/imapsync_form.html X/imapsync_form_extra.html X/imapsync_form_extra_free.html X/imapsync_form_wrapper.html X/proximapsync_form_extra_free.html
+ rcsdiff X/imapsync_form.html X/imapsync_form_extra.html X/imapsync_form_extra_free.html X/imapsync_form_wrapper.html X/proximapsync_form_extra_free.html
+ rcsdiff X/imapsync_form.css X/noscript.css
+ rcsdiff X/imapsync_form.js X/imapsync_form_wrapper.js X/proximapsync_form.js
rcsdiff INSTALL.d/INSTALL.OnlineUI.txt
rsync -a ./INSTALL.d/INSTALL.OnlineUI.txt ../imapsync_website/INSTALL.d/INSTALL.OnlineUI.txt
rsync -av --delete X/ ../imapsync_website/X/
@@ -977,6 +1091,10 @@ upload_FAQ:
rsync -avH --delete ./doc/ ../imapsync_website/doc/
rsync -aHvz --delete ../imapsync_website/ root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/
+upload_oauth2:
+ rm -f oauth2/D_oauth2_*
+ rsync -aHv --delete ./oauth2/ ../imapsync_website/oauth2/
+ rsync -aHvz --delete ../imapsync_website/ root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/
upload_ks_W_memo:
rsync -av W/memo gilles@ks.lamiral.info:public_html/imapsync/W/memo
diff --git a/README b/README
index e463c5c..93e716b 100644
--- a/README
+++ b/README
@@ -6,7 +6,7 @@ NAME
VERSION
- This documentation refers to Imapsync $Revision: 2.200 $
+ This documentation refers to Imapsync $Revision: 2.229 $
USAGE
@@ -225,7 +225,7 @@ OPTIONS
It will be combined with the --user1 value to form the
string to pass with XOAUTH2 authentication.
The password given by --password1 or --passfile1
- is ignored.
+ is ignored but needed on the command line.
Instead of the access token itself, the value can be a
file containing the access token on the first line.
If the value is a file, imapsync reads its first line
@@ -239,7 +239,8 @@ OPTIONS
--oauthdirect1 str : The direct string to pass with XOAUTH2 authentication.
The password given by --password1 or --passfile1 and
- the user given by --user1 are ignored.
+ the user given by --user1 are ignored but they are
+ needed to be on the command line. Consider it a bug.
--oauthdirect2 str : same thing as oauthdirect1
@@ -368,7 +369,7 @@ OPTIONS
2019_12_22_23_57_59_532 is nearly the date of the start
YYYY_MM_DD_HH_MM_SS_mmm
- year_month_day_hour_minute_seconde_millisecond
+ year_month_day_hour_minute_second_millisecond
and user1 user2 are the --user1 --user2 values.
@@ -617,7 +618,7 @@ OPTIONS
Default is 120 and 0 means no timeout at all.
Caveat, under CGI context, you may encounter a timeout
- from the webserver, killing imapsync and the imap connexions.
+ from the webserver, killing imapsync and the imap connections.
See the document INSTALL.OnlineUI.txt and search
for "Timeout" for how to deal with this issue.
@@ -653,6 +654,12 @@ OPTIONS
it's an http request to
http://imapsync.lamiral.info/prj/imapsync/VERSION
+ --emailreport1 : Put the email final report in host1 INBOX
+ --emailreport2 : Put the email final report in host2 INBOX
+
+ --noemailreport1 : Do not put the email final report in host1 INBOX
+ --noemailreport2 : Do not put the email final report in host2 INBOX
+
--noid : Do not send/receive IMAP "ID" command to imap servers.
--justconnect : Just connect to both servers and print useful
diff --git a/S/imapservers.shtml b/S/imapservers.shtml
index 2040ad4..6cf4bd6 100644
--- a/S/imapservers.shtml
+++ b/S/imapservers.shtml
@@ -4,7 +4,7 @@
-Imapsync list of the 86 imap server software applications supported
+Imapsync list of the 88 imap server software applications supported
@@ -27,12 +27,13 @@
-
Imapsync list of the 86 imap server software applications supported (and the broken ones)
+
Imapsync list of the 88 imap server software applications supported (and the broken ones)
(back to menu)
UW-imap servers (imap-2000b) rijkkramer IMAP4rev1 2000.287
(RedHat uses UW like 2003.338rh), v12.264 Solaris 5.7 (OSI Approved)
(http://www.washington.edu/imap/)
@@ -246,7 +252,7 @@ alt="Viewable With Any Browser" />
This document last modified on
-($Id: imapservers.shtml,v 1.56 2021/06/08 09:56:54 gilles Exp gilles $)
+($Id: imapservers.shtml,v 1.59 2022/06/02 10:45:27 gilles Exp gilles $) Top of the page
diff --git a/S/news.shtml b/S/news.shtml
index e404725..43ed332 100644
--- a/S/news.shtml
+++ b/S/news.shtml
@@ -58,11 +58,11 @@ If you are very interrested in those projects, don't hesitate to solicit me!
+
+
2.229
+
General:
+
+
Dependencies added: Proc::ProcessTable
+
Dependencies removed: None
+
+
Enhancement: Added a stat value: memory footprint times time spent during the sync. The unity is MiB * hour. The stat line is "Memory consumption at the end".
+
Enhancement: Filtering buggy flags is now case insensitive. \Junk or \JUNK or \jUnK etc. (sub tests_filterbuggyflags)
+
Enhancement: Added --memorystress to check memory crunching in normal run.
+
+
Usability: Do not email final reports by default. Use --emailreport1 and --emailreport2 to add final emails reports in each INBOX.
+
+
CGI context:
+
+
Refuse to serve when the cpu load is greater than 1 per cpu. A load of 3.9 with 4 cores is ok, 4.1 is not. (sub heavy_load_reached_by_cpu)
+
Refuse to serve when the RAM memory available for imapsync processes is less than 1 GB, presented by percentage on the first line like "64.80% used by processes". (sub heavy_load_percent_threshold)
+
When refuse to serve, exits with value 69 EX_UNAVAILABLE
+
+
+
Testing: 1992 unit tests
+
+
+
2.200
Dependencies removed: None
@@ -1039,7 +1068,7 @@ by ignoring PERMANENTFLAGS (Exchange tests)
This document last modified on
-($Id: news.shtml,v 1.84 2022/04/04 16:11:25 gilles Exp gilles $)
+($Id: news.shtml,v 1.87 2022/09/15 08:42:40 gilles Exp gilles $) Top of the page
diff --git a/S/paypal_return.shtml b/S/paypal_return.shtml
index 2292a1c..daa135b 100644
--- a/S/paypal_return.shtml
+++ b/S/paypal_return.shtml
@@ -41,7 +41,7 @@ to view details of this transaction (if you have a Paypal account).
Now you have access to the full unlimited imapsync
-online service /X.
+online service /X.
This online imapsync service doesn't require any installation on your side, just use it as it is.
Also, in case you want to run imapsync by yourself, you will find imapsync
@@ -112,7 +112,7 @@ src="S/images/ab_jlh.png"
This document last modified on
-($Id: paypal_return.shtml,v 1.39 2020/10/13 16:25:09 gilles Exp gilles $)
+($Id: paypal_return.shtml,v 1.40 2022/05/04 10:23:52 gilles Exp gilles $)