Compare commits
No commits in common. "master" and "1.977" have entirely different histories.
21
.github/workflows/docker-image.yml
vendored
21
.github/workflows/docker-image.yml
vendored
@ -1,21 +0,0 @@
|
||||
name: Docker Image CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
branches: [master]
|
||||
|
||||
jobs:
|
||||
buildx:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
- name: Available platforms
|
||||
run: echo ${{ steps.buildx.outputs.platforms }}
|
||||
2
CREDITS
2
CREDITS
@ -124,7 +124,7 @@ Suggested default --useheader 'Message-ID' --useheader 'Received'
|
||||
|
||||
Ameir Abdeldayem
|
||||
Gave a patch to sync messages lacking Message-ID
|
||||
https://web.archive.org/web/20160913193638/http://www.linux-france.org/prj/imapsync_list/msg01151.html
|
||||
http://www.linux-france.org/prj/imapsync_list/msg01151.html
|
||||
|
||||
Yousaf Shah
|
||||
Contributed by giving the book
|
||||
|
||||
707
ChangeLog
707
ChangeLog
@ -1,716 +1,17 @@
|
||||
|
||||
RCS file: RCS/imapsync,v
|
||||
Working file: imapsync
|
||||
head: 2.229
|
||||
head: 1.977
|
||||
branch:
|
||||
locks: strict
|
||||
gilles: 2.229
|
||||
gilles: 1.977
|
||||
access list:
|
||||
symbolic names:
|
||||
keyword substitution: kv
|
||||
total revisions: 1129; selected revisions: 1129
|
||||
total revisions: 977; selected revisions: 977
|
||||
description:
|
||||
----------------------------
|
||||
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."
|
||||
----------------------------
|
||||
revision 2.199
|
||||
date: 2022/04/01 19:45:33; author: gilles; state: Exp; lines: +15 -14
|
||||
Enhancement. Added the local ip address for the imap connexions. It can help configuring firewalls to allow the imap source IP.
|
||||
----------------------------
|
||||
revision 2.198
|
||||
date: 2022/04/01 11:13:01; author: gilles; state: Exp; lines: +10 -12
|
||||
Added SERVER_NAME SERVER_ADDR SERVER_ADMIN variables and values to the output.
|
||||
----------------------------
|
||||
revision 2.197
|
||||
date: 2022/03/30 10:43:22; author: gilles; state: Exp; lines: +29 -28
|
||||
Bugfix. --tests --testslive was listing 0 folders.
|
||||
Added message "Use --noemailreport1 to avoid it" after putting the email final report in INBOX.
|
||||
----------------------------
|
||||
revision 2.196
|
||||
date: 2022/03/25 20:35:59; author: gilles; state: Exp; lines: +120 -67
|
||||
Bugfix. Dates were not displayed under Windows because POSIX::strftime %e is not portable.
|
||||
Bugfix. Several other places where dates were wrong on Windows.
|
||||
----------------------------
|
||||
revision 2.195
|
||||
date: 2022/03/24 10:00:09; author: gilles; state: Exp; lines: +26 -29
|
||||
Added warning "parsing headers of folder ... It can take time for huge folders. Be patient."
|
||||
----------------------------
|
||||
revision 2.194
|
||||
date: 2022/03/17 11:04:16; author: gilles; state: Exp; lines: +16 -15
|
||||
Bugfix. --var HTTP_COOKIE=proximapsync_runs=31 was not working because of the second =
|
||||
----------------------------
|
||||
revision 2.193
|
||||
date: 2022/03/15 11:30:02; author: gilles; state: Exp; lines: +101 -105
|
||||
Refactor. Deglobalized $debuglist $debugflags
|
||||
Refactor. Added sync->{ permanentflags2 }
|
||||
----------------------------
|
||||
revision 2.192
|
||||
date: 2022/03/11 18:26:06; author: gilles; state: Exp; lines: +88 -46
|
||||
Bugfix. Do not allow --skipcrossduplicates and --usecache. Exit EX_USAGE 64
|
||||
----------------------------
|
||||
revision 2.191
|
||||
date: 2022/03/08 10:55:21; author: gilles; state: Exp; lines: +131 -48
|
||||
Added --var to pass values from proximapsync for variables REMOTE_ADDR REMOTE_HOST HTTP_REFERER HTTP_USER_AGENT SERVER_SOFTWARE SERVER_PORT HTTP_COOKIE
|
||||
----------------------------
|
||||
revision 2.190
|
||||
date: 2022/03/01 21:48:11; author: gilles; state: Exp; lines: +31 -8
|
||||
Bugfix. Do not turn on --delete2duplicates when --syncduplicates is on, unless --delete2duplicates is given.
|
||||
----------------------------
|
||||
revision 2.189
|
||||
date: 2022/02/28 18:10:10; author: gilles; state: Exp; lines: +9 -11
|
||||
Upped ERRORS_MAX_CGI from 20 to 500
|
||||
----------------------------
|
||||
revision 2.188
|
||||
date: 2022/02/26 22:43:55; author: gilles; state: Exp; lines: +182 -100
|
||||
Refactor. Changed setlogfile() to be usable for different logs by proximapsync.
|
||||
----------------------------
|
||||
revision 2.187
|
||||
date: 2022/02/23 12:01:25; author: gilles; state: Exp; lines: +26 -7
|
||||
Documented why total sizes can differ even when the sync is perfect.
|
||||
----------------------------
|
||||
revision 2.186
|
||||
date: 2022/02/22 22:39:50; author: gilles; state: Exp; lines: +27 -21
|
||||
Bugfix. Redirect STDERR to STDOUT in all cases, --log or --nolog
|
||||
----------------------------
|
||||
revision 2.185
|
||||
date: 2022/02/11 21:36:18; author: gilles; state: Exp; lines: +19 -11
|
||||
Added option --emailreport1 and --emailreport2. On by default. Use --noemailreport1 and --noemailreport2 to avoid final emails reports in each INBOX.
|
||||
----------------------------
|
||||
revision 2.184
|
||||
date: 2022/02/10 17:37:57; author: gilles; state: Exp; lines: +91 -31
|
||||
Added final report to source account also.
|
||||
----------------------------
|
||||
revision 2.183
|
||||
date: 2022/02/06 13:14:33; author: gilles; state: Exp; lines: +29 -29
|
||||
Added folder name in the debug output of header identificators
|
||||
----------------------------
|
||||
revision 2.182
|
||||
date: 2022/02/01 20:49:51; author: gilles; state: Exp; lines: +10 -10
|
||||
Bugfix. GMT is good but the tests had to be changed also...
|
||||
----------------------------
|
||||
revision 2.181
|
||||
date: 2022/02/01 20:19:22; author: gilles; state: Exp; lines: +23 -10
|
||||
Bugfix. Use GMT in tests_email_report_message_id
|
||||
Bugfix. Make the email report w3c validated. Crazy man!
|
||||
----------------------------
|
||||
revision 2.180
|
||||
date: 2022/02/01 15:14:51; author: gilles; state: Exp; lines: +373 -30
|
||||
Enhancement. Append a final email report on account2 at the end of the synchronization. Will be optionnal soon.
|
||||
----------------------------
|
||||
revision 2.179
|
||||
date: 2022/01/26 14:32:19; author: gilles; state: Exp; lines: +134 -139
|
||||
README reread, grammarly on it.
|
||||
Added "Posta inviata" so \Sent with --automap
|
||||
----------------------------
|
||||
revision 2.178
|
||||
date: 2022/01/12 21:28:37; author: gilles; state: Exp; lines: +75 -13
|
||||
Added tests_compress_ssl()
|
||||
----------------------------
|
||||
revision 2.177
|
||||
date: 2021/12/23 20:38:44; author: gilles; state: Exp; lines: +8 -8
|
||||
Bugfix. 1849 -> 1848 unit tests
|
||||
----------------------------
|
||||
revision 2.176
|
||||
date: 2021/12/23 20:19:04; author: gilles; state: Exp; lines: +35 -23
|
||||
Bugfix. memory consumption on Mac was not relevant. Use RSS instead of VSZ, on Mac only. Linux stays with VSZ.
|
||||
----------------------------
|
||||
revision 2.175
|
||||
date: 2021/12/21 17:46:14; author: gilles; state: Exp; lines: +23 -21
|
||||
Bugix. Darwin, fixed loadavg tests, no more W/t/loadavg.out needed.
|
||||
----------------------------
|
||||
revision 2.174
|
||||
date: 2021/12/14 15:51:58; author: gilles; state: Exp; lines: +62 -17
|
||||
Added advice for:
|
||||
ERR_APPEND_SIZE
|
||||
ERR_CONNECTION_FAILURE_HOST1
|
||||
ERR_CONNECTION_FAILURE_HOST2
|
||||
ERR_AUTHENTICATION_FAILURE_USER1
|
||||
ERR_AUTHENTICATION_FAILURE_USER2
|
||||
----------------------------
|
||||
revision 2.173
|
||||
date: 2021/12/09 18:30:34; author: gilles; state: Exp; lines: +61 -40
|
||||
Bugfix. Made reconnect mechanism works with --oauthdirect1 --oauthdirect2 --oauthaccesstoken1 --oauthaccesstoken2
|
||||
----------------------------
|
||||
revision 2.172
|
||||
date: 2021/12/07 18:19:42; author: gilles; state: Exp; lines: +27 -17
|
||||
Added some tests to tests_get_options_from_string() and tests_get_options_extra()
|
||||
I can not have the unknown options back with Getopt::Long::GetOptionsFromString(), just the unknown values, ie, caca but not --caca
|
||||
----------------------------
|
||||
revision 2.171
|
||||
date: 2021/12/07 17:50:12; author: gilles; state: Exp; lines: +14 -8
|
||||
Added --ssl1 --ssl2 --tls1 --tls2 --compress1 --compress2 to get_options_from_string()
|
||||
----------------------------
|
||||
revision 2.170
|
||||
date: 2021/12/07 17:19:44; author: gilles; state: Exp; lines: +12 -8
|
||||
Added --keepalive1 --keepalive2 --reconnectretry1 --reconnectretry2 in get_options_from_string()
|
||||
----------------------------
|
||||
revision 2.169
|
||||
date: 2021/12/07 17:13:44; author: gilles; state: Exp; lines: +101 -36
|
||||
Added --keepalive1 and --keepalive2 options. On by default.
|
||||
See https://metacpan.org/pod/Mail::IMAPClient#Keepalive
|
||||
Use --nokeepalive1 and --nokeepalive2 to disable Keepalive.
|
||||
----------------------------
|
||||
revision 2.168
|
||||
date: 2021/12/05 23:27:27; author: gilles; state: Exp; lines: +29 -11
|
||||
Added --debugflags --errorsmax --folder --timeout in options from file
|
||||
----------------------------
|
||||
revision 2.167
|
||||
date: 2021/12/02 16:59:51; author: gilles; state: Exp; lines: +9 -9
|
||||
Moved the call to extra options after the chdir of the CGI context.
|
||||
----------------------------
|
||||
revision 2.166
|
||||
date: 2021/12/02 15:23:37; author: gilles; state: Exp; lines: +107 -9
|
||||
Now read extra options on the first line of the file ./options_extra.txt if it is present and readable.
|
||||
----------------------------
|
||||
revision 2.165
|
||||
date: 2021/11/30 20:27:38; author: gilles; state: Exp; lines: +30 -11
|
||||
cpu_time rounded with 2 decimals.
|
||||
Added 4 tests when no compression is on.
|
||||
----------------------------
|
||||
revision 2.164
|
||||
date: 2021/11/24 21:26:46; author: gilles; state: Exp; lines: +12 -11
|
||||
Compression no more on by default. Just to see.
|
||||
----------------------------
|
||||
revision 2.163
|
||||
date: 2021/11/20 20:11:46; author: gilles; state: Exp; lines: +8 -7
|
||||
Bugfix. imapsync --version was buggy in docker context.
|
||||
----------------------------
|
||||
revision 2.162
|
||||
date: 2021/11/20 10:16:33; author: gilles; state: Exp; lines: +14 -12
|
||||
Docker. Current working directory changed from /var/tmp to /var/tmp/uid_$EFFECTIVE_USER_ID
|
||||
----------------------------
|
||||
revision 2.161
|
||||
date: 2021/11/19 18:17:48; author: gilles; state: Exp; lines: +8 -8
|
||||
Bugfix. inline doc mentioned always --nocompress1
|
||||
----------------------------
|
||||
revision 2.160
|
||||
date: 2021/11/19 14:40:58; author: gilles; state: Exp; lines: +10 -7
|
||||
Added inline documentation about --nocompress1 and --nocompress2
|
||||
----------------------------
|
||||
revision 2.159
|
||||
date: 2021/11/19 14:29:31; author: gilles; state: Exp; lines: +113 -12
|
||||
Dependency. Added use Compress::Zlib
|
||||
Enhancement. Added compression in imap. On by default no matter the capability announced. Use --nocompress1 and --nocompress2 to turn it off.
|
||||
----------------------------
|
||||
revision 2.158
|
||||
date: 2021/11/13 20:01:35; author: gilles; state: Exp; lines: +13 -7
|
||||
Added README help for --truncmess
|
||||
----------------------------
|
||||
revision 2.157
|
||||
date: 2021/10/23 21:51:43; author: gilles; state: Exp; lines: +61 -16
|
||||
Refactor. Deglobalized $debugcontent. Added debugcontent() function.
|
||||
1800 unit tests.
|
||||
----------------------------
|
||||
revision 2.156
|
||||
date: 2021/10/12 13:36:36; author: gilles; state: Exp; lines: +72 -71
|
||||
Added comment for ERR_FLAGS "Many STORE errors with FLAGS. Retry with the option --noresyncflags"
|
||||
Refactored errors_incr() and errors_listing()
|
||||
Bugfix. errors_incr() existed with CATCH_ALL
|
||||
----------------------------
|
||||
revision 2.155
|
||||
date: 2021/10/01 07:46:55; author: gilles; state: Exp; lines: +9 -8
|
||||
Like --useheader X-Gmail-Received --useheader Message-Id when --gmail1 --gmail2
|
||||
----------------------------
|
||||
revision 2.154
|
||||
date: 2021/09/29 20:38:04; author: gilles; state: Exp; lines: +8 -8
|
||||
Bugfix. Added 'E&AwE-le&AwE-ments envoye&AwE-s' in possible_special
|
||||
----------------------------
|
||||
revision 2.153
|
||||
date: 2021/09/29 13:56:15; author: gilles; state: Exp; lines: +34 -12
|
||||
Does not checknoabletosearch if --justfolders
|
||||
When creating folder check if selectable and consider ok if selectable
|
||||
----------------------------
|
||||
revision 2.152
|
||||
date: 2021/09/29 12:03:12; author: gilles; state: Exp; lines: +362 -58
|
||||
Added inline advice on error ERR_OVERQUOTA
|
||||
Added inline advice on error ERR_TRANSFER_EXCEEDED
|
||||
Renamed function bytes_display_string() bytes_display_string_bin()
|
||||
bytes_display_string_bin converts bytes to human KiB MiB GiB TiB PiB
|
||||
Added function bytes_display_string_dec() to convert bytes to human decimal KB MB GB TB PB (1000 base)
|
||||
----------------------------
|
||||
revision 2.151
|
||||
date: 2021/09/08 10:34:25; author: gilles; state: Exp; lines: +23 -18
|
||||
Bugfix. load average on macosx was sometimes buggy. locale float 3,14 instead of 3.14
|
||||
----------------------------
|
||||
revision 2.150
|
||||
date: 2021/08/08 12:10:51; author: gilles; state: Exp; lines: +9 -10
|
||||
Refactor. Deglobalized warn_release variable
|
||||
----------------------------
|
||||
revision 2.149
|
||||
date: 2021/07/31 11:24:24; author: gilles; state: Exp; lines: +7 -26
|
||||
Removed --fast option.
|
||||
----------------------------
|
||||
revision 2.148
|
||||
date: 2021/07/22 14:21:09; author: gilles; state: Exp; lines: +10 -10
|
||||
Bugfix. abort didn't do charset=UTF-8; same for heavy load 503 Service Unavailable
|
||||
----------------------------
|
||||
revision 2.147
|
||||
date: 2021/07/22 13:13:50; author: gilles; state: Exp; lines: +12 -12
|
||||
Bugfix. The maximum number a pid can be is 2^22, not 2^32.
|
||||
----------------------------
|
||||
revision 2.146
|
||||
date: 2021/07/22 12:48:21; author: gilles; state: Exp; lines: +8 -8
|
||||
1742 unit tests.
|
||||
----------------------------
|
||||
revision 2.145
|
||||
date: 2021/07/22 12:45:31; author: gilles; state: Exp; lines: +16 -13
|
||||
Bugfix. Up the maximum number a pid can be. From 99999 to 2^32. See https://unix.stackexchange.com/questions/16883/what-is-the-maximum-value-of-the-process-id
|
||||
----------------------------
|
||||
revision 2.144
|
||||
date: 2021/07/17 18:07:59; author: gilles; state: Exp; lines: +13 -10
|
||||
Just an experimental loaddelay forced to 0.
|
||||
----------------------------
|
||||
revision 2.143
|
||||
date: 2021/07/12 19:45:44; author: gilles; state: Exp; lines: +111 -15
|
||||
Bugfix. Under docker context --version was buggy, too verbose.
|
||||
----------------------------
|
||||
revision 2.142
|
||||
date: 2021/07/12 14:04:01; author: gilles; state: Exp; lines: +17 -19
|
||||
Removed that hard limit --maxsize 35_651_584 set by --gmail2 since CAPABILITY is used and good.
|
||||
----------------------------
|
||||
revision 2.141
|
||||
date: 2021/07/06 02:59:19; author: gilles; state: Exp; lines: +8 -8
|
||||
cpu_time param
|
||||
----------------------------
|
||||
revision 2.140
|
||||
date: 2021/07/05 20:14:18; author: gilles; state: Exp; lines: +14 -10
|
||||
Fixed perlcrit 4 severity 4 violations.
|
||||
----------------------------
|
||||
revision 2.139
|
||||
date: 2021/07/04 21:03:28; author: gilles; state: Exp; lines: +14 -14
|
||||
Adapted to oauth2/generate_gmail_token
|
||||
----------------------------
|
||||
revision 2.138
|
||||
date: 2021/07/01 08:40:50; author: gilles; state: Exp; lines: +13 -10
|
||||
Moved oauthgenerateaccess() call.
|
||||
----------------------------
|
||||
revision 2.137
|
||||
date: 2021/07/01 08:13:52; author: gilles; state: Exp; lines: +32 -10
|
||||
Bugfix. imapsync did nothing with the previous change.
|
||||
----------------------------
|
||||
revision 2.136
|
||||
date: 2021/06/30 23:16:13; author: gilles; state: Exp; lines: +295 -176
|
||||
Review the README part.
|
||||
Added option --filterbuggyflags to filter the well known buggy flags that generate errors "BAD Invalid system flag" or "NO APPEND Invalid flag list".
|
||||
1734 unit tests.
|
||||
Some refactoring.
|
||||
----------------------------
|
||||
revision 2.135
|
||||
date: 2021/06/29 20:38:40; author: gilles; state: Exp; lines: +58 -46
|
||||
Reviewed README section until flags options.
|
||||
----------------------------
|
||||
revision 2.134
|
||||
date: 2021/06/29 12:14:49; author: gilles; state: Exp; lines: +40 -14
|
||||
Avoid unit tests on polarhome macosx where "ssl3_get_server_certificate:certificate verify failed". No clue to fix that.
|
||||
----------------------------
|
||||
revision 2.133
|
||||
date: 2021/06/28 08:07:25; author: gilles; state: Exp; lines: +13 -12
|
||||
Fixed some unit tests for polarhome macosx
|
||||
----------------------------
|
||||
revision 2.132
|
||||
date: 2021/06/26 23:19:40; author: gilles; state: Exp; lines: +40 -17
|
||||
Added tests to test cpu_number() on Windows MacOS
|
||||
----------------------------
|
||||
revision 2.131
|
||||
date: 2021/06/25 16:20:38; author: gilles; state: Exp; lines: +57 -13
|
||||
Bugfix. cpu_number was accurate only on Linux. Added Freebsd
|
||||
----------------------------
|
||||
revision 2.130
|
||||
date: 2021/06/25 11:11:03; author: gilles; state: Exp; lines: +108 -36
|
||||
Added percentage of all cpu in stats
|
||||
----------------------------
|
||||
revision 2.129
|
||||
date: 2021/06/24 16:59:49; author: gilles; state: Exp; lines: +8 -8
|
||||
Removed a debug print
|
||||
----------------------------
|
||||
revision 2.128
|
||||
date: 2021/06/24 16:54:00; author: gilles; state: Exp; lines: +8 -8
|
||||
1702 tests
|
||||
----------------------------
|
||||
revision 2.127
|
||||
date: 2021/06/24 15:42:11; author: gilles; state: Exp; lines: +46 -16
|
||||
Added statistic line "CPU time and %cpu"
|
||||
----------------------------
|
||||
revision 2.126
|
||||
date: 2021/06/24 09:37:47; author: gilles; state: Exp; lines: +87 -33
|
||||
Added --loglogfile option. Append ../list_all_logs_auto.txt with the logfile name. On by default in CGI context.
|
||||
Some refactoring, file_to_array file_to_string functions.
|
||||
----------------------------
|
||||
revision 2.125
|
||||
date: 2021/06/20 16:50:46; author: gilles; state: Exp; lines: +66 -25
|
||||
Do not check selectable folders for huge accounts with more than 152 folders. 98percentile of /X
|
||||
----------------------------
|
||||
revision 2.124
|
||||
date: 2021/06/17 12:29:22; author: gilles; state: Exp; lines: +8 -8
|
||||
Testfix. Sometimes GMT is output UTC.
|
||||
----------------------------
|
||||
revision 2.123
|
||||
date: 2021/06/17 11:56:20; author: gilles; state: Exp; lines: +30 -27
|
||||
CGI context. Sync duplicates by default in cgi context.
|
||||
----------------------------
|
||||
revision 2.122
|
||||
date: 2021/06/16 19:36:21; author: gilles; state: Exp; lines: +15 -17
|
||||
Stats. Final line "Biggest message" was in fact "Biggest message" to be transferred. Now it is "Biggest message transferred".
|
||||
----------------------------
|
||||
revision 2.121
|
||||
date: 2021/06/15 22:43:18; author: gilles; state: Exp; lines: +150 -89
|
||||
Refactor. Splited sub myGetOptions() into sub setvalfromcgikey sub setvalfromlist sub setvalfromhash sub setvalfromcheckbox. Not very clean but better than the huge old one.
|
||||
----------------------------
|
||||
revision 2.120
|
||||
date: 2021/06/15 22:32:28; author: gilles; state: Exp; lines: +54 -38
|
||||
Change time presentation on ETA and in final stats. Example: Wednesday 16 June 2021-06-16 00:32:05 +0200 CEST
|
||||
Added the timezone and full day
|
||||
----------------------------
|
||||
revision 2.119
|
||||
date: 2021/06/06 10:21:34; author: gilles; state: Exp; lines: +162 -109
|
||||
Added localtimez function to replace localtime, date and time with the timezone added. Not replaced yet.
|
||||
Remove a useless warning "File xxx.pid does not exist" in tail function.
|
||||
Made oauth2 tests dependent on oauth2_string_for_oauthdirect.txt oauth2_access_token.txt presence.
|
||||
Added info "Exiting because of --justbanner" with --justbanner
|
||||
----------------------------
|
||||
revision 2.118
|
||||
date: 2021/05/31 22:18:16; author: gilles; state: Exp; lines: +16 -11
|
||||
In CGI context, the log directory is no longer ./LOG_imapsync/ but simply ./ It should fasten the searches and grep
|
||||
----------------------------
|
||||
revision 2.117
|
||||
date: 2021/05/27 18:04:12; author: gilles; state: Exp; lines: +20 -16
|
||||
Load limit 3x => 6x
|
||||
----------------------------
|
||||
revision 2.116
|
||||
date: 2021/05/21 16:41:12; author: gilles; state: Exp; lines: +39 -53
|
||||
load limit upped to 3
|
||||
----------------------------
|
||||
revision 2.115
|
||||
date: 2021/05/05 23:41:12; author: gilles; state: Exp; lines: +11 -8
|
||||
Advantage of a file when using --oauthaccesstoken1 str
|
||||
----------------------------
|
||||
revision 2.114
|
||||
date: 2021/05/05 19:03:24; author: gilles; state: Exp; lines: +48 -21
|
||||
Documented --oauthaccesstoken1 and --oauthdirect1 and the 2 sisters.
|
||||
----------------------------
|
||||
revision 2.113
|
||||
date: 2021/05/03 20:47:18; author: gilles; state: Exp; lines: +118 -35
|
||||
Implemented --oauthaccesstoken1 and --oauthaccesstoken2
|
||||
1691 unit tests
|
||||
----------------------------
|
||||
revision 2.112
|
||||
date: 2021/04/30 17:55:05; author: gilles; state: Exp; lines: +257 -248
|
||||
Added --noabletosearch README
|
||||
Removed trailing blanks, perlcrit "Found "\N{SPACE}" at the end of the line"
|
||||
----------------------------
|
||||
revision 2.111
|
||||
date: 2021/04/30 07:40:41; author: gilles; state: Exp; lines: +615 -408
|
||||
Added options --oauthdirect1 and --oauthdirect2
|
||||
to support OAUTH2 authentication.
|
||||
The parameter value is the direct string given to the XOAUTH2 imap command.
|
||||
Added option --syncduplicates to sync duplicates.
|
||||
|
||||
Added option --trylogin on by default.
|
||||
After a login failure of any king, imapsync tries to login
|
||||
with the LOGIN command. Use --notrylogin to avoid that.
|
||||
|
||||
Reduced sub login_imap() number of parameters from 19 to 10.
|
||||
|
||||
Added options --oauthaccesstoken1 and --oauthaccesstoken2, not implemented yet.
|
||||
|
||||
Removed old OAUTH1 support. I hope no one will be touched by this removal, if
|
||||
yes, I'll bring it back.
|
||||
----------------------------
|
||||
revision 2.110
|
||||
date: 2021/03/28 17:34:29; author: gilles; state: Exp; lines: +25 -16
|
||||
--timeout can now be a float (was only integer). Same for --timeout1 --timeout2
|
||||
Warning about a timeout by the webserver in CGI mode.
|
||||
$timeout no longer a variable (global).
|
||||
----------------------------
|
||||
revision 2.109
|
||||
date: 2021/03/13 19:39:37; author: gilles; state: Exp; lines: +59 -25
|
||||
Added message ""No log file because of option --nolog".
|
||||
Added possibility of no logging in cgi context, with log=0 or log= in the parameters
|
||||
Added possibility of float number for --simulong instead of integer.
|
||||
1672 unit tests.
|
||||
----------------------------
|
||||
revision 2.108
|
||||
date: 2021/02/25 10:35:33; author: gilles; state: Exp; lines: +27 -23
|
||||
Bugfix. In sub delete_messages_on_any, the uidexpunge_or_expunge call was
|
||||
always done with an empty array so no expunge was done there.
|
||||
Fortunately, expunge was done elsewhere so this bug was not disastrous.
|
||||
There is functionnal tests to check expunge behaviour anyway.
|
||||
----------------------------
|
||||
revision 2.107
|
||||
date: 2021/02/09 20:02:55; author: gilles; state: Exp; lines: +9 -9
|
||||
Back from Message-Id to Message-Id Received in cgisetcontext
|
||||
----------------------------
|
||||
revision 2.106
|
||||
date: 2021/02/09 19:59:13; author: gilles; state: Exp; lines: +222 -16
|
||||
Added some tests in sub tests_regexmess to remove a buggy header on multi-lines not all starting with a blank. 's{X-Spam-Report:.*?\n(^[^\n]+:|^\r?\n)}{$1}xms'
|
||||
----------------------------
|
||||
revision 2.105
|
||||
date: 2021/02/02 11:17:15; author: gilles; state: Exp; lines: +30 -14
|
||||
Added tests "Add a final \r\n if missing" in sub tests_regexmess
|
||||
----------------------------
|
||||
revision 2.104
|
||||
date: 2021/01/27 15:14:09; author: gilles; state: Exp; lines: +76 -70
|
||||
Added test to "Change 8bit characters in whole email to X characters" in sub tests_regexmess
|
||||
----------------------------
|
||||
revision 2.103
|
||||
date: 2021/01/20 16:28:06; author: gilles; state: Exp; lines: +46 -20
|
||||
Removed the exit_clean call when "Can not go to tls encryption on" in sub login_imap()
|
||||
1652 tests
|
||||
----------------------------
|
||||
revision 2.102
|
||||
date: 2020/12/13 23:48:30; author: gilles; state: Exp; lines: +43 -20
|
||||
Bugfix. EXIT_ERR_APPEND_VIRUS had no message upon exit.
|
||||
Bugfix. In --dry mode the final "Messages transferred : 0 (could be 1264 without dry mode)" is ok when the folders does not exist yet.
|
||||
----------------------------
|
||||
revision 2.101
|
||||
date: 2020/12/08 23:47:13; author: gilles; state: Exp; lines: +171 -40
|
||||
Added EXIT_CONNECTION_FAILURE_HOST1 101 return code
|
||||
Added EXIT_CONNECTION_FAILURE_HOST2 102 return code
|
||||
Added EXIT_AUTHENTICATION_FAILURE_USER1 161 return code
|
||||
Added EXIT_AUTHENTICATION_FAILURE_USER2 162 return code
|
||||
Do both side login and authentication before exiting on falure.
|
||||
----------------------------
|
||||
revision 2.100
|
||||
date: 2020/12/07 00:45:50; author: gilles; state: Exp; lines: +24 -9
|
||||
New numbering from 1.999 directly to 2.100 I want to avoid 1.1000 and sorting issues in directory listing.
|
||||
Added option --dry1 it avoids to fetch the message on host1. --dry1 is on when --dry is on. It speeds up --dry very much.
|
||||
----------------------------
|
||||
revision 1.999
|
||||
date: 2020/12/02 20:41:50; author: gilles; state: Exp; lines: +69 -34
|
||||
Added a section "How do you know a sync is finished and well done?"
|
||||
When creating a directory, now the current directory is also printed.
|
||||
It helps when the directory created is relative.
|
||||
Bugfix. resolv: imapsync.lamiral.info => 2001:41d0:2:84e0::1 (was 91.121.221.224)
|
||||
----------------------------
|
||||
revision 1.998
|
||||
date: 2020/08/17 10:18:25; author: gilles; state: Exp; lines: +302 -108
|
||||
1638 regression tests.
|
||||
Added option --abortbyfile to be able to be aborted by a file presence (context: webserver on windows)
|
||||
Reviewed and fixed sub acls_sync(). Did not work and made bad things.
|
||||
Added exit value EXIT_BY_FILE => 7
|
||||
Added exit value EXIT_TRANSFER_EXCEEDED => 118
|
||||
----------------------------
|
||||
revision 1.997
|
||||
date: 2020/07/16 10:58:14; author: gilles; state: Exp; lines: +20 -17
|
||||
Gmail update
|
||||
gmail12: maxbytespersecond 20_000 maxbytesafter 1_000_000_000
|
||||
gmail1 : maxbytespersecond 40_000 maxbytesafter 3_000_000_000 (was 2_500_000_000)
|
||||
gmail2 : maxbytespersecond 20_000 maxbytesafter 1_000_000_000
|
||||
----------------------------
|
||||
revision 1.996
|
||||
date: 2020/06/19 09:53:38; author: gilles; state: Exp; lines: +69 -20
|
||||
Added exit 118 EXIT_TRANSFER_EXCEEDED when "Maximum bytes transferred reached" with option --exitwhenover
|
||||
Added error type ERR_TRANSFER_EXCEEDED.
|
||||
----------------------------
|
||||
revision 1.995
|
||||
date: 2020/06/17 18:55:01; author: gilles; state: Exp; lines: +9 -8
|
||||
Added exitwhenover as an option in cgi context.
|
||||
----------------------------
|
||||
revision 1.994
|
||||
date: 2020/06/14 12:10:30; author: gilles; state: Exp; lines: +76 -22
|
||||
Bugfix. Fixed some "Exiting with return value ()". Added ERR_NOTHING_REPORTED error and exit EXIT_CATCH_ALL ie 1 in case.
|
||||
----------------------------
|
||||
revision 1.993
|
||||
date: 2020/06/12 09:10:20; author: gilles; state: Exp; lines: +10 -8
|
||||
Docfix. Fixed issue https://github.com/imapsync/imapsync/issues/213
|
||||
Precision about --delete2duplicates
|
||||
----------------------------
|
||||
revision 1.992
|
||||
date: 2020/05/29 12:14:53; author: gilles; state: Exp; lines: +156 -34
|
||||
Bugfix. fatal string causing "Wide character in subroutine entry"
|
||||
----------------------------
|
||||
revision 1.991
|
||||
date: 2020/05/12 20:37:48; author: gilles; state: Exp; lines: +86 -25
|
||||
Bugfix. --checknoabletosearch was not adaptive.
|
||||
Fix. tests sslheck now use test1.lamiral.info instead of imapsync.lamiral.info
|
||||
Fix. tests_resolv now use ks6ipv6.lamiral.info instead of ks2ipv6.lamiral.info
|
||||
Bugfix. Better closing of logfile at the end in order to avoid in Apache error log "AH01215: print() on closed filehandle $logfile_handle"
|
||||
----------------------------
|
||||
revision 1.990
|
||||
date: 2020/05/03 17:07:36; author: gilles; state: Exp; lines: +7 -7
|
||||
Bugfix. Forgot to map ERR_Host1_FETCH to EXIT_ERR_FETCH,
|
||||
----------------------------
|
||||
revision 1.989
|
||||
date: 2020/05/03 17:07:17; author: gilles; state: Exp; lines: +8 -7
|
||||
*** empty log message ***
|
||||
----------------------------
|
||||
revision 1.988
|
||||
date: 2020/04/29 21:52:20; author: gilles; state: Exp; lines: +37 -8
|
||||
Sanitize host1 and host2 values. Remove blanks and / characters.
|
||||
----------------------------
|
||||
revision 1.987
|
||||
date: 2020/04/29 02:34:00; author: gilles; state: Exp; lines: +253 -18
|
||||
Added an analyse and classification of the errors encountered.
|
||||
Most common error encountered is printed at the end.
|
||||
Exit value 112 is now replaced by the most common error encountered exit value
|
||||
113 is EXIT_OVERQUOTA
|
||||
114 is EXIT_ERR_APPEND
|
||||
115 is EXIT_ERR_FETCH
|
||||
116 is EXIT_ERR_CREATE
|
||||
117 is EXIT_ERR_SELECT
|
||||
111 is EXIT_WITH_ERRORS ERR_UNCLASSIFIED
|
||||
----------------------------
|
||||
revision 1.986
|
||||
date: 2020/04/26 11:05:55; author: gilles; state: Exp; lines: +37 -36
|
||||
Changed filter_forbidden_characters() to replace non-ascii and control characters and spaces by character _
|
||||
----------------------------
|
||||
revision 1.985
|
||||
date: 2020/04/25 14:50:30; author: gilles; state: Exp; lines: +48 -23
|
||||
Added unit tests to prepare "Wide character in subroutine entry".
|
||||
----------------------------
|
||||
revision 1.984
|
||||
date: 2020/04/22 10:35:44; author: gilles; state: Exp; lines: +30 -15
|
||||
Bugfix. Empty subject https://github.com/imapsync/imapsync/pull/216 added unit test regression.
|
||||
----------------------------
|
||||
revision 1.983
|
||||
date: 2020/03/19 02:08:12; author: gilles; state: Exp; lines: +96 -13
|
||||
Filter flags \PRIORITY \READRCPT in cgi context.
|
||||
Now check if SEARCH ALL works on both accounts and then add --noabletosearch if one can not. Use --nochecknoabletosearch to avoid that behavior.
|
||||
----------------------------
|
||||
revision 1.982
|
||||
date: 2020/03/16 15:17:02; author: gilles; state: Exp; lines: +60 -29
|
||||
Rewrote tests in tests_msgs_from_maxmin() (same ones anyway)
|
||||
----------------------------
|
||||
revision 1.981
|
||||
date: 2020/02/14 12:10:13; author: gilles; state: Exp; lines: +18 -8
|
||||
Bugfix. CGI not fatal with imapsync --tests
|
||||
----------------------------
|
||||
revision 1.980
|
||||
date: 2020/01/18 20:37:27; author: gilles; state: Exp; lines: +9 -9
|
||||
Updated @regexflag in cgi context.
|
||||
----------------------------
|
||||
revision 1.979
|
||||
date: 2020/01/14 22:26:11; author: gilles; state: Exp; lines: +47 -30
|
||||
Added regex --regexflag from /X analyse in cgi context.
|
||||
----------------------------
|
||||
revision 1.978
|
||||
date: 2020/01/08 21:56:12; author: gilles; state: Exp; lines: +11 -11
|
||||
Added single quote ' filtering in filter_forbidden_characters()
|
||||
----------------------------
|
||||
revision 1.977
|
||||
revision 1.977 locked by: gilles;
|
||||
date: 2019/12/23 20:18:02; author: gilles; state: Exp; lines: +10 -10
|
||||
No tests_resolv( ) since resolv is not really used and tests_resolv( ) fails on mac (I do not have write to /etc/hosts)
|
||||
----------------------------
|
||||
|
||||
@ -1,90 +1,25 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.APPEND_errors.txt,v 1.13 2021/05/29 07:58:44 gilles Exp gilles $
|
||||
$Id: FAQ.APPEND_errors.txt,v 1.6 2019/02/16 22:38:49 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.APPEND_errors.txt
|
||||
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Dealing with Imapsync APPEND errors.
|
||||
======================================================================
|
||||
=======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
|
||||
Q. I have an "could not append" error with
|
||||
"Message contains invalid header" at the end, like:
|
||||
Err 1/20: - msg INBOX/6 {40666} could not append ... NO Message contains invalid header
|
||||
What can I do to transfer these emails?
|
||||
|
||||
Q. For some messages, the imapsync log says
|
||||
"could not append", sometimes followed by an explicit message
|
||||
describing what went wrong, or sometimes followed by a not very
|
||||
useful message "socket closed while reading data from server"
|
||||
What can I do?
|
||||
|
||||
Q. The append error message is "NO Message contains NUL characters"
|
||||
What can I do?
|
||||
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. I have an "could not append" error with
|
||||
"Message contains invalid header" at the end, like:
|
||||
Err 1/20: - msg INBOX/6 {40666} could not append ... NO Message contains invalid header
|
||||
What can I do to transfer these emails?
|
||||
|
||||
|
||||
R0. Append in the IMAP protocol is the command to add a message in the folder.
|
||||
The error string "NO. Message contains invalid header" comes from the
|
||||
destination IMAP server at host2, it doesn't like the message and rejects it.
|
||||
|
||||
R1. Header lines must be in 7bit encoding.
|
||||
If they aren't in 7bit the IMAP server can refuse them as they break
|
||||
the IMAP RFC specification.
|
||||
|
||||
A solution is to transform all 8bit characters to the Z character with:
|
||||
|
||||
imapsync ... --regexmess "tr [\x80-\xff] [Z]"
|
||||
|
||||
Caveat: this transformation transforms both the email header and its body.
|
||||
It's not perfect but I guess it's better than no message transferred.
|
||||
So consider using it in a second pass, not the first, as 8-bit
|
||||
characters in the body message are allowed and changing them when
|
||||
not needed is not a good thing.
|
||||
|
||||
|
||||
R2. Some crappy email systems, like virus checkers or any other crappy
|
||||
software tool dealing with your messages, can add headers to tell
|
||||
the world that they've done a great job. But sometimes they didn't,
|
||||
and they fucked up your messages by not respecting the standard
|
||||
and added ugly non-rfc compliant headers.
|
||||
|
||||
To remove an ugly header, let's call it "X-Spam-Report", that spreads over
|
||||
several lines beginning or, that's the ugly part, not beginning with a space:
|
||||
|
||||
imapsync ... --regexmess 's{X-Spam-Report:.*?\n(^[a-zA-Z0-9\-]+:|^\r?\n)}{$1}xms'
|
||||
|
||||
Thanks to Damien SAUTEREAU for reporting and solving this issue.
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. For some messages, the imapsync log says
|
||||
"could not append", sometimes followed by an explicit message
|
||||
describing what went wrong, or sometimes followed by a not very
|
||||
useful message "socket closed while reading data from server"
|
||||
What can I do?
|
||||
|
||||
R0. Append errors are host2 problems, append is the imap term to copy
|
||||
a message to the destination account.
|
||||
A problem is that the associated "socket closed ..." error message happens
|
||||
for several different issues. So I list here several potential issues
|
||||
R0. Well, the problem is that the "socket closed ..." error message happens
|
||||
in several different issues. So I list here several potential issues
|
||||
and their solutions if they exist.
|
||||
R1 deals about too long lines in messages on Windows.
|
||||
R2 deals about too long lines in messages on Unix.
|
||||
R3 deals with quota reached.
|
||||
|
||||
R1. On Windows, add --regexmess "s,(.{9900}),$1\r\n,g"
|
||||
|
||||
@ -142,25 +77,5 @@ OPTIONS
|
||||
contains eight-bit characters to quoted-printable encoding.
|
||||
|
||||
|
||||
R3. Look for the quota limit on host2. If it is the current mailbox size, don't
|
||||
search elsewhere. Increase the quota on the destination account.
|
||||
|
||||
======================================================================
|
||||
Q. The append error message is "NO Message contains NUL characters"
|
||||
What can I do?
|
||||
|
||||
R. Use:
|
||||
|
||||
imapsync ... --skipmess "m/(\x00)+\Z/"
|
||||
|
||||
The option --skipmess skips messages matching a pattern, the
|
||||
messages are not synced, you just avoid the error messages concerning
|
||||
those messages.
|
||||
|
||||
If you want to sync them, use instead:
|
||||
|
||||
imapsync ... --regexmess "s/(\x00)+\Z//g"
|
||||
|
||||
|
||||
======================================================================
|
||||
======================================================================
|
||||
R2.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Admin_Authentication.txt,v 1.13 2022/04/06 10:27:52 gilles Exp gilles $
|
||||
$Id: FAQ.Admin_Authentication.txt,v 1.10 2019/10/31 23:13:50 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -19,16 +19,16 @@ server and its configuration.
|
||||
|
||||
You have to follow this road:
|
||||
* Determine what is the imap software server
|
||||
* Find out whether it supports an admin account or not
|
||||
* If no, leave this reading, take a handkerchief and cry
|
||||
* Find out wether it supports an admin account or not
|
||||
* If no, leave this reading, take an handkerchief and cry
|
||||
* If yes, search how the imap software server supports
|
||||
an admin account (see below)
|
||||
* Figure out whether an admin account is actually configured or not,
|
||||
* If not then configure it. If you can't configure it: handkerchief.
|
||||
* Figure out wether an admin account is actually configured or not,
|
||||
* If not then configure it,
|
||||
* Finally, check an imapsync authentication via this admin account for
|
||||
a standard user, the option --justlogin is nice for doing this.
|
||||
a standard user, option --justlogin is nice for doing this.
|
||||
* Use it for all users.
|
||||
* Next, read their email messages, enter their personal life etc.
|
||||
* Next, read their email messages, enter their personnal life etc.
|
||||
I'm kidding.
|
||||
|
||||
Good luck!
|
||||
@ -41,9 +41,8 @@ Known imap software servers supporting imap admin authentication:
|
||||
* Dovecot. See the file FAQ.Dovecot.txt
|
||||
* Zimbra. See the file FAQ.Zimbra.txt
|
||||
* Kerio See the file FAQ.Kerio.txt
|
||||
* Cyrus-imap. See the file FAQ.Cyrus.txt
|
||||
* James. See the file FAQ.James.txt
|
||||
* UW-imap. See the file FAQ.General.txt
|
||||
* Cyrus-imap. See the file FAQ.General.txt
|
||||
* Sun Java Enterprise System/SunOne/iPlanet. See the file FAQ.General.txt
|
||||
|
||||
Known imap software servers NOT supporting imap admin authentication:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Archiving.txt,v 1.27 2022/05/19 08:56:06 gilles Exp gilles $
|
||||
$Id: FAQ.Archiving.txt,v 1.18 2019/10/23 17:56:28 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -14,12 +14,12 @@ Questions answered in this FAQ are:
|
||||
Q. How can I archive different accounts on the same destination account,
|
||||
each account on a separate folder?
|
||||
|
||||
Q. How can I restore a complete account backuped in a subfolder, like
|
||||
a backup done with the option --subfolder2?
|
||||
Q. How can I restore a complete account archived in a subfolder, like
|
||||
with the option --subfolder2?
|
||||
|
||||
Q. How to move emails from one IMAP folder to another, either on the
|
||||
same IMAP server or on a different one? Example:
|
||||
How to move all messages older than 1 year, from INBOX to Archive?
|
||||
Q. How to move emails from one IMAP folder to another either on the
|
||||
same IMAP server or a different one?
|
||||
For example, all messages older than 1 year, move from INBOX to Archive.
|
||||
|
||||
Q. Can imapsync be used to maintain and restore a local offline copy
|
||||
of a mailbox, eg for backup purposes, using Mbox or Maildir
|
||||
@ -30,9 +30,6 @@ Q. How to archive a whole year in a subfolder?
|
||||
|
||||
Q. How to archive a whole year in subfolders but without subsubfolders?
|
||||
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Archiving.txt
|
||||
=======================================================================
|
||||
Q. How can I archive different accounts on the same destination account,
|
||||
@ -47,12 +44,8 @@ R. Use --subfolder2
|
||||
|
||||
Examples:
|
||||
|
||||
To backup the account Foo in a subfolder called FooArchiv:
|
||||
|
||||
imapsync ... --user1 Foo --subfolder2 FooArchiv
|
||||
|
||||
To backup the account Bar in a subfolder called BarArchiv:
|
||||
|
||||
imapsync ... --user1 Bar --subfolder2 BarArchiv
|
||||
|
||||
In case you need a very strict sync, add options
|
||||
@ -62,26 +55,20 @@ It will delete on account2 what is not on account1 but only in the right place,
|
||||
ie, the subfolder "FooArchiv".
|
||||
|
||||
Examples:
|
||||
|
||||
To mirror the account Foo in a subfolder called FooArchiv:
|
||||
|
||||
|
||||
imapsync ... --user1 Foo --subfolder2 FooArchiv --delete2 --delete2foldersonly "FooArchiv"
|
||||
|
||||
To mirror the account Bar in a subfolder called BarArchiv:
|
||||
|
||||
imapsync ... --user1 Bar --subfolder2 BarArchiv --delete2 --delete2foldersonly "BarArchiv"
|
||||
|
||||
See how to restore those with the next Q/R.
|
||||
|
||||
=======================================================================
|
||||
Q. How can I restore a complete account backuped in a subfolder, like
|
||||
a backup done with the option --subfolder2?
|
||||
Q. How can I restore a complete account archived in a subfolder, like
|
||||
with the option --subfolder2?
|
||||
|
||||
R. Use --subfolder1
|
||||
|
||||
--subfolder1 str : Syncs the host1 folders hierarchy under folder str
|
||||
to the root hierarchy of host2.
|
||||
It's the counterpart of a sync done by --subfolder2
|
||||
It's the couterpart of a sync done by --subfolder2
|
||||
when doing it in the reverse order.
|
||||
Backup/Restore scenario:
|
||||
Use --subfolder2 str for a backup to the folder str
|
||||
@ -91,29 +78,22 @@ R. Use --subfolder1
|
||||
|
||||
Examples:
|
||||
|
||||
To restore the whole folder FooArchiv hierarchy into the Foo account:
|
||||
|
||||
imapsync ... --user2 Foo --subfolder1 FooArchiv
|
||||
|
||||
To restore the whole folder BarArchiv hierarchy into the Bar account:
|
||||
|
||||
imapsync ... --user2 Bar --subfolder1 BarArchiv
|
||||
|
||||
Read the previous FAQ item "How can I archive different accounts on the same
|
||||
destination account, each account on a separate folder?"
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to move emails from one IMAP folder to another, either on the
|
||||
same IMAP server or on a different one? Example:
|
||||
How to move all messages older than 1 year, from INBOX to Archive?
|
||||
Q. How to move emails from one IMAP folder to another either on the
|
||||
same IMAP server or a different one?
|
||||
For example, all messages older than 1 year, move from INBOX to Archive.
|
||||
|
||||
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.
|
||||
Add option --noexpungeaftereach if speed is a concern.
|
||||
Add option --delete1 if you want to move messages, instead of just copy/sync them.
|
||||
|
||||
R2. See also file FAQ.Folders_Mapping.txt
|
||||
|
||||
@ -141,40 +121,23 @@ R2. Imapsync can't but rick-sanders-imap-tools can!
|
||||
is more dangerous than doing no backups at all. No backups makes
|
||||
people act in a safer way, well, usually...
|
||||
|
||||
R3. Use isync or mbsync
|
||||
https://isync.sourceforge.io/
|
||||
|
||||
R4. Use ImportExportTools for Mozilla Thunderbird by Paolo Kaosmos.
|
||||
R3. Use ImportExportTools for Mozilla Thunderbird by Paolo Kaosmos.
|
||||
ImportExportTools does not do IMAP as a destination.
|
||||
|
||||
R5. There is a free online service (French language) allowing you to do
|
||||
a Maildir or EML or HTML backup at
|
||||
https://www.powermail.fr/sauvegarder-une-boite-mail/
|
||||
Prefer Maildir or EML format if you want to be able to restore the
|
||||
archive. HTML format will be ok to only view the messages, not to
|
||||
restore them to an imap server account.
|
||||
|
||||
I have never used any of this tools so asking me for support with them
|
||||
won't go far away.
|
||||
|
||||
=======================================================================
|
||||
Q. How to backup a whole year in a subfolder?
|
||||
Q. How to archive a whole year in a subfolder?
|
||||
|
||||
R. To backup the whole year 2018 in a subfolder called ARCHIVE_2018:
|
||||
R.
|
||||
|
||||
imapsync ... --search "SENTSINCE 1-Jan-2018 SENTBEFORE 31-Dec-2018" \
|
||||
--subfolder2 ARCHIVE_2018
|
||||
--folder2 ARCHIVE_2018 --justfolders --dry
|
||||
|
||||
=======================================================================
|
||||
Q. How to archive a whole year in subfolders but without subsubfolders?
|
||||
|
||||
R. Instead of the solution with --subfolder2, use:
|
||||
|
||||
imapsync ... --search "SENTSINCE 1-Jan-2018 SENTBEFORE 31-Dec-2018" \
|
||||
--sep2 _ --regextrans2 's{(.*)}{Archive_$1_2018}'
|
||||
|
||||
For each folder "FFFF" in the source account, it will create a destination
|
||||
folder called "Archive_FFFF_2018", at the top level hierarchy.
|
||||
--sep2 _ --regextrans2 's{(.*)}{Archive_$1_2018}' --justfolders --dry
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Authentication_failure.txt,v 1.16 2022/08/17 09:18:17 gilles Exp gilles $
|
||||
$Id: FAQ.Authentication_failure.txt,v 1.9 2019/01/11 13:13:08 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Authentication_failure.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Admin_Authentication.txt
|
||||
|
||||
=======================================================================
|
||||
Imapsync authentication issues
|
||||
@ -17,25 +17,21 @@ Host1 failure: Error login on [imap.example.com] with user [foo] auth [LOGIN]: 2
|
||||
Q. Imapsync fails with the following error, what can I do?
|
||||
Host2 failure: Error login on [imap.example.com] with user [foo] auth [LOGIN]: 2 BAD Invalid characters in atom
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
|
||||
=======================================================================
|
||||
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 synchronizations end up quickly with the error message
|
||||
"Authentication failed" or "NO LOGIN failed" or a similar message.
|
||||
R. One over four imapsync syncs ends up quickly with the error message
|
||||
"Authentication failed" or "NO LOGIN failed" or similar.
|
||||
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 is some advice to get you to pass this difficult stage of authentication:
|
||||
Here are some advices to get you pass this difficult stage of authentication:
|
||||
|
||||
* 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 on each side:
|
||||
* Triple check each credential parameter, there are three parameters at each side:
|
||||
* triple check --host1
|
||||
* triple check --user1
|
||||
* triple check --password1
|
||||
@ -43,7 +39,7 @@ Here is some advice to get you to pass this difficult stage of authentication:
|
||||
* triple check --user2
|
||||
* triple check --password2
|
||||
|
||||
* If you can authenticate successfully with another imap client software
|
||||
* If you can authenticate successfully with an other 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,76 +48,41 @@ Here is some advice to get you to 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 with debugging quoting issues.
|
||||
instead of the string MASKED. It helps for 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).
|
||||
"Sending: 2 LOGIN test1 secret1" (secret1 is the password here)
|
||||
|
||||
|
||||
* It is sometimes very hard to quote correctly unusual characters,
|
||||
especially on Windows (and Mac sometimes). See
|
||||
especially on Windows. See
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Windows.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Unix.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Mac.txt
|
||||
|
||||
The quickest trick may be to change the password temporarily
|
||||
with easy characters like the classical alphabet, one long
|
||||
string still ensures strong security.
|
||||
The quickest trick may be to change the password temporally
|
||||
with easy characters like the classical alphabet, a long
|
||||
string still ensure strong security.
|
||||
|
||||
* Sometimes some servers announce they support LOGIN but it
|
||||
fails because the authentication mechanism
|
||||
actually 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
|
||||
following examples with imap.gmail.com server:
|
||||
* If you want to play manually the IMAP protocol on your server,
|
||||
here is an example with the command telnet, user test1
|
||||
and password secret1 on the host test.lamiral.info.
|
||||
|
||||
ncat --ssl -C imap.gmail.com 993
|
||||
telnet-ssl -z ssl imap.gmail.com 993
|
||||
openssl s_client -crlf -connect imap.gmail.com:993
|
||||
|
||||
Replace imap.gmail.com by your imap server.
|
||||
The three commands do the same work here.
|
||||
|
||||
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"
|
||||
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE ... ESEARCH
|
||||
a OK gilles.lamiral@gmail.com Gilles Lamiral authenticated (Success)
|
||||
b LOGOUT
|
||||
* BYE LOGOUT Requested
|
||||
b OK 73 good day (Success)
|
||||
|
||||
The client part you have to type is
|
||||
a LOGIN ...
|
||||
b LOGOUT
|
||||
while replacing ... by your credentials values,
|
||||
other lines are the server responses. Letters
|
||||
a and b are identifiers of IMAP commands, you have to
|
||||
type them but you can chose any string instead of a or b.
|
||||
|
||||
Some other examples:
|
||||
|
||||
ncat --ssl test.lamiral.info 993
|
||||
c1 LOGIN test1 "secret1"
|
||||
c2 LOGOUT
|
||||
|
||||
openssl s_client -crlf -connect test.lamiral.info:993
|
||||
telnet test.lamiral.info 143
|
||||
c1 LOGIN test1 "secret1"
|
||||
c2 LOGOUT
|
||||
|
||||
ncat --ssl -C outlook.office365.com 993
|
||||
a LOGIN gilles.lamiral@outlook.com topsecret
|
||||
b LOGOUT
|
||||
|
||||
Same example using an ssl conneection:
|
||||
|
||||
telnet-ssl -z ssl test.lamiral.info 993
|
||||
c1 LOGIN test1 "secret1"
|
||||
c2 LOGOUT
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. Imapsync fails with the following error, what can I do?
|
||||
Host2 failure: Error login on [imap.example.com] with user [foo] auth [LOGIN]: 2 BAD Invalid characters in atom
|
||||
|
||||
@ -1,48 +0,0 @@
|
||||
|
||||
$Id: FAQ.Bandwidth.txt,v 1.3 2021/05/20 11:46:07 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Bandwidth.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Imapsync bandwidth used
|
||||
=======================================================================
|
||||
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. What is the bandwidth used by imapsync?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
=======================================================================
|
||||
Q. What is the bandwidth used by imapsync?
|
||||
|
||||
R. From the host where imapsync runs, imapsync opens two imap
|
||||
connections, one with the source account at host1, one with the
|
||||
destination account at host2.
|
||||
|
||||
So, the global bandwidth used by an imapsync transfer is twice the
|
||||
volume of the source account, one volume to download the messages from
|
||||
host1, one volume to upload those messages to host2.
|
||||
|
||||
If the host2 is already filled with the messages, imapsync doesn't
|
||||
transfer them and then the volume transferred is small, this volume is
|
||||
just made up of the IMAP commands needed to identify the messages on
|
||||
both sides.
|
||||
|
||||
There is no local cache of the email messages, except when a message
|
||||
is very big; it is then temporarily saved locally between the download
|
||||
and the upload.
|
||||
|
||||
The biggest message seen so far on the online service I call /X is
|
||||
3.08 GiB while the biggest message transferred is 1.51 GiB. So I
|
||||
suspect a bug here. Drop me a note if you encounter the same issue,
|
||||
I'll then dig into it, ie, I'll create a 2 or 3 GiB big message and
|
||||
play with it :-)
|
||||
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Big_Mailbox.txt,v 1.8 2022/04/23 13:45:48 gilles Exp gilles $
|
||||
$Id: FAQ.Big_Mailbox.txt,v 1.4 2019/07/31 10:37:15 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -21,20 +21,18 @@ Q. How to deal with huge mailboxes, whose size is over dozens of GB?
|
||||
|
||||
R1. It should be ok with imapsync.
|
||||
|
||||
Sometimes with big folders, imapsync seems to stall when sizing the
|
||||
folders or maybe before syncing a huge folder. So you wonder whether
|
||||
imapsync is doing something or being just frozen. A solution to
|
||||
increase the verbosity is to add the option --debugimap. Option
|
||||
--debugimap shows what is currently done, it's quite a big output but
|
||||
it helps to wait, saying to ourselves "ok it's long but it's working,
|
||||
let's wait a little more". The real purpose of --debugimap is to show
|
||||
genuine IMAP commands used and their responses. The problem with
|
||||
--debugimap is that it is very verbose and so with a big mailbox it
|
||||
generates a very BIG logfile.
|
||||
In case imapsync seems to stall when sizing the folders or before
|
||||
syncing a huge folder and you wander wether it is doing something or
|
||||
just frozen, you can add option --debugimap. Option --debugimap shows
|
||||
what is currently done, it's quite a big output but it helps waiting,
|
||||
saying to ourselves "ok it's long but it's working, let's wait a
|
||||
little more". The real purpose of --debugimap is to show genuine IMAP
|
||||
commands used and their responses. The problem with --debugimap is
|
||||
that it is very verbose and so with a big mailbox it generates a very
|
||||
BIG logfile.
|
||||
|
||||
R2. If it is not ok with imapsync, the sync finally fails, then
|
||||
consider splitting the whole sync into smaller chunks using
|
||||
the option --search
|
||||
R2. If it is not ok with imapsync then consider spliting the whole
|
||||
sync into smaller chunks using --search
|
||||
|
||||
For example, select messages only for a given year:
|
||||
|
||||
@ -43,14 +41,5 @@ For example, select messages only for a given year:
|
||||
imapsync ... --search "SENTSINCE 1-Jan-2018 SENTBEFORE 31-Dec-2018"
|
||||
imapsync ... --search "SENTSINCE 1-Jan-2019 SENTBEFORE 31-Dec-2019"
|
||||
|
||||
R3. Use option --useuid
|
||||
Option --useuid speeds up the process but --useuid implies --usecache
|
||||
and --usecache may trigger some issues sometimes. Read:
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Use_cache.txt
|
||||
|
||||
Don't use --useuid in Docker context, the cache will be destroyed
|
||||
each time, or put it in a stable place, I don't know how to do it,
|
||||
I just know it's possible and not very difficult.
|
||||
|
||||
=====================================================================
|
||||
=====================================================================
|
||||
|
||||
@ -1,103 +0,0 @@
|
||||
$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/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Capacity_Planning.txt
|
||||
|
||||
|
||||
======================================================================
|
||||
Imapsync tips for Capacity Planning.
|
||||
======================================================================
|
||||
|
||||
|
||||
I plan to go to a distributed architecture for the online service. I'm
|
||||
doing some capacity planning. Imapsync takes memory, cpu and bandwidth
|
||||
in a relatively deterministic values.
|
||||
|
||||
My current question is: Shall I use
|
||||
* N 2GB hosts
|
||||
* N/2 4GB hosts
|
||||
* N/4 8GB hosts
|
||||
|
||||
Let's do some 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 symmetrical, 12.5 MBytes/s symmetrical,
|
||||
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 phenomenon 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
|
||||
messages copied divided by the time passed. If imapsync is run between
|
||||
two foreign imap servers then the total size transferred on the
|
||||
network link is twice this value, one time when getting the message
|
||||
from host1, rx, and one time sending the message to host2, tx.
|
||||
|
||||
On average, an imapsync runs at 3 Mbps both ways, rx and tx, so 6 Mbps
|
||||
in total. So a 100 Mbps symmetric link allows 33 imapsync processes
|
||||
before the link becomes the bottleneck.
|
||||
|
||||
The best minutes observed so far are a global 187 Mpbs rate (~23 MiB/s)
|
||||
on a 100 Mbps symmetrical 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 (~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 resources
|
||||
has reached its maximal. The resources 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 )
|
||||
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Contacts_Calendars.txt,v 1.17 2022/05/31 22:21:55 gilles Exp gilles $
|
||||
$Id: FAQ.Contacts_Calendars.txt,v 1.12 2019/04/30 13:04:18 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -11,29 +11,66 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Contacts_Calendars.txt
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. Can I copy or sync Contacts, Calendars, Tasks or Chat messages with imapsync?
|
||||
Q. How can I copy or synchronize Calendars or Contacts?
|
||||
Q. Can I copy or sync Calendars or Contacts with imapsync?
|
||||
Q. Can I copy or sync Chat messages with imapsync?
|
||||
Q. How can I avoid copying Calendar or Contacts folders?
|
||||
Q. How can I copy or synchronize Calendars or Contacts?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
=======================================================================
|
||||
Q. Can I copy or sync Contacts, Calendars, Tasks or Chat messages with imapsync?
|
||||
Q. Can I copy or sync Calendars or Contacts 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 Calendar
|
||||
R. No, Imapsync can't migrate Contacts and Calendars.
|
||||
It's because most IMAP servers don't get contacts and calendars
|
||||
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.
|
||||
Calendars or Contacts folders are not used by email servers to set
|
||||
or get the contacts or calendars.
|
||||
No way via IMAP, no way via imapsync.
|
||||
|
||||
So it's a good idea to avoid syncing contacts and calendars when
|
||||
using imapsync. See at the end of this document
|
||||
using imapsync. See below
|
||||
"How can I avoid copying Calendar or Contacts folders?"
|
||||
|
||||
But see also the question below
|
||||
But see also the question at the end of this document
|
||||
"How can I copy or synchronize Calendars or Contacts?".
|
||||
|
||||
=======================================================================
|
||||
Q. Can I copy or sync Chat messages with imapsync?
|
||||
|
||||
R. No, Imapsync can't migrate Chat messages (those in GSuite for example).
|
||||
The explanation is the same as with Calendars or Contacts.
|
||||
|
||||
=======================================================================
|
||||
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
|
||||
beginning of a run will surely help to find their names.
|
||||
Assuming their names are "Calendars" and "Contacts" use then:
|
||||
|
||||
imapsync ... --exclude "Calendar" --exclude "Contacts"
|
||||
|
||||
Be aware that this syntax will exclude all folders that have
|
||||
Calendar or Contacts in their names, as a substring,
|
||||
like "MyCalendarZ" or "TheContactsImDoneWith".
|
||||
Also, case matters: "calendar" does not match "Calendar".
|
||||
|
||||
To stritly avoid only "Calendar" or "Contacts" use
|
||||
the following
|
||||
|
||||
On windows:
|
||||
|
||||
imapsync ... --exclude "^Calendar$" --exclude "^Contacts$"
|
||||
|
||||
On Unix:
|
||||
|
||||
imapsync ... --exclude '^Calendar$' --exclude '^Contacts$'
|
||||
or
|
||||
imapsync ... --exclude "^Calendar\$" --exclude "^Contacts\$"
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How can I copy or synchronize Calendars or Contacts?
|
||||
|
||||
@ -52,55 +89,17 @@ b) From Gmail to Gmail, export and import calendars in ical format,
|
||||
Contacts can be copied using a csv file. See the help page
|
||||
http://support.google.com/mail/bin/topic.py?hl=en&topic=1669027
|
||||
|
||||
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
|
||||
any other CalDAV or CardDAV server.
|
||||
Supported Outlook versions are Office 365, 2019, 2016, 2013, 2010, and 2007.
|
||||
Free and Open Source software tool.
|
||||
|
||||
|
||||
d) Etc. Search the web. There are also specific tools and paid services.
|
||||
c) Etc. Search the web. There's 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 the Sumatra company
|
||||
Also consider asking experts at Sumatra company
|
||||
https://twitter.com/sumatra_dev
|
||||
http://sumatra.com/
|
||||
|
||||
e) I plan to make tools for that but so far nothing has begun
|
||||
d) I plan to make tools for that but so far nothing has began
|
||||
more than this discussion:
|
||||
http://linux-france.tk/prj/imapsync_list/msg01797.html
|
||||
http://linux-france.tk/prj/imapsync_list/msg01811.html
|
||||
|
||||
=======================================================================
|
||||
Q. How can I avoid copying Calendar or Contacts folders?
|
||||
|
||||
R. You can avoid synchronizing Calendar or Contacts folders with
|
||||
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:
|
||||
|
||||
imapsync ... --exclude "Calendar" --exclude "Contacts"
|
||||
|
||||
Be aware that this syntax will exclude all folders that have
|
||||
Calendar or Contacts in their names, as a substring,
|
||||
like "MyCalendarZ" or "TheContactsImDoneWith".
|
||||
Also, case matters: "calendar" does not match "Calendar".
|
||||
|
||||
To strictly avoid only "Calendar" or "Contacts" use
|
||||
the following
|
||||
|
||||
On windows:
|
||||
|
||||
imapsync ... --exclude "^Calendar$" --exclude "^Contacts$"
|
||||
|
||||
On Unix:
|
||||
|
||||
imapsync ... --exclude '^Calendar$' --exclude '^Contacts$'
|
||||
or
|
||||
imapsync ... --exclude "^Calendar\$" --exclude "^Contacts\$"
|
||||
http://www.linux-france.org/prj/imapsync_list/msg01797.html
|
||||
http://www.linux-france.org/prj/imapsync_list/msg01811.html
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
@ -1,127 +0,0 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Cyrus.txt,v 1.2 2021/02/19 13:39:03 gilles Exp gilles $
|
||||
|
||||
=======================================================================
|
||||
Imapsync tips for the Cyrus imap server
|
||||
=======================================================================
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Cyrus.txt
|
||||
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. How to migrate from cyrus with an admin account?
|
||||
|
||||
Q. I'm migrating from WU to Cyrus, and the mail folders are under
|
||||
/home/user/mail but the tool copies everything in /home/user, how
|
||||
can i avoid that?
|
||||
|
||||
Q. I'm migrating from WU to Cyrus, and the mail folders are under
|
||||
/home/user/mail directory. When imapsync creates the folders in
|
||||
the new cyrus imap server, it makes a folder "mail" and below that
|
||||
folder puts all the mail folders the user have in /home/user/mail,
|
||||
i would like to have all those folders directly under INBOX.
|
||||
|
||||
Q. Migrating from Groupwise to Cyrus
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. How to migrate from cyrus with an admin account?
|
||||
|
||||
R. Use:
|
||||
|
||||
imapsync ... \
|
||||
--authuser1 admin_user ----password1 admin_user_password \
|
||||
--user1 foo_user --ssl1
|
||||
|
||||
Instead of --ssl1 the alternative --tls1 can be used.
|
||||
With --authuser1, the option --authmech1 PLAIN is set
|
||||
automatically, you don't have to add it.
|
||||
|
||||
PLAIN authentication is the only way to go with --authuser1 for now.
|
||||
So don't use --authmech1 SOMETHING with --authuser1 admin_user,
|
||||
it will not work.
|
||||
Same behavior with the --authuser2 option.
|
||||
|
||||
Do not forget the option --ssl1 or --tls1 since PLAIN auth is only
|
||||
supported with ssl encryption most of the time. But it can
|
||||
work without --ssl1 nor --tls1 if PLAIN is permitted in clear text
|
||||
transmissions (the normal mode).
|
||||
|
||||
Add the AdminAccount to admins line in /etc/imapd.conf
|
||||
Give AdminAccount lrswipkxtecda to the Cyrus Imap account
|
||||
being migrated from, "joe" here.
|
||||
|
||||
|
||||
Here is an example:
|
||||
imapsync \
|
||||
--host1 server1 \
|
||||
--user1 joe \
|
||||
--authuser1 AdminAccount \
|
||||
--password1 AdminAccountPassword \
|
||||
--ssl1 \
|
||||
--host2 server2 \
|
||||
--user2 joe \
|
||||
--password2 joespassonserver2 \
|
||||
--exclude "^user\."
|
||||
|
||||
=======================================================================
|
||||
Q. I'm migrating from WU to Cyrus, and the mail folders are under
|
||||
/home/user/mail but the tool copies everything in /home/user, how
|
||||
can i avoid that?
|
||||
|
||||
Two solutions:
|
||||
|
||||
R. Use
|
||||
imapsync ... --include '^mail'
|
||||
|
||||
R. or (better)
|
||||
imapsync ... --subscribed --subscribe
|
||||
|
||||
=======================================================================
|
||||
Q. I'm migrating from WU to Cyrus, and the mail folders are under
|
||||
/home/user/mail directory. When imapsync creates the folders in
|
||||
the new cyrus imap server, it makes a folder "mail" and below that
|
||||
folder puts all the mail folders the user have in /home/user/mail,
|
||||
i would like to have all those folders directly under INBOX.
|
||||
|
||||
R. Use
|
||||
imapsync ... --regextrans2 's/^mail/INBOX/' --dry
|
||||
look at the simulation and if all transformations seem
|
||||
good then remove the --dry option.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. Migrating from Groupwise to Cyrus
|
||||
|
||||
R. By Jamie Neil:
|
||||
|
||||
I eventually managed to get the mail to migrate without errors using the
|
||||
following options:
|
||||
|
||||
--maxage 3650
|
||||
- some messages just don't seem to want to transfer and produce the
|
||||
perl errors I mentioned before. This prevents the errors, but the
|
||||
bad messages don't transfer.
|
||||
|
||||
Even though the mail migrated OK, there are a couple of gotchas with
|
||||
Groupwise IMAP:
|
||||
|
||||
1) Some of the GW folders are not real folders and are not available
|
||||
to IMAP, the main problem one being "Sent Items". I could find no way
|
||||
of coping the contents of these folders. The nearest I got was to
|
||||
create a "real" folder and copy/move the sent items into it, but
|
||||
imapsync still didn't see the messages (I think because there is
|
||||
something funny about the reported dates/sizes).
|
||||
|
||||
It think this problem has been rectified in GW6.5.
|
||||
|
||||
2) Version 6.0.1 of the Groupwise Internet Connector sucks. I was
|
||||
getting server aborts when I pushed it a bit hard! I eventually had to
|
||||
upgrade to 6.0.4 which seems to be a lot more stable.
|
||||
|
||||
=======================================================================
|
||||
@ -1,22 +0,0 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.DBmail.txt,v 1.1 2020/11/04 08:43:05 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.DBmail.txt
|
||||
|
||||
=======================================================================
|
||||
Imapsync tips for DBmail accounts.
|
||||
=======================================================================
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to migrate from or to DBmail?
|
||||
|
||||
R. In order to avoid duplicates, use:
|
||||
|
||||
imapsync ... --useheader Message-Id
|
||||
|
||||
More explanations and details at
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Duplicates.txt
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.David_Tobit.txt,v 1.5 2022/04/05 13:48:52 gilles Exp gilles $
|
||||
$Id: FAQ.David_Tobit.txt,v 1.4 2019/03/28 17:58:53 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -47,8 +47,8 @@ First try above V10 solution since improvments have been made
|
||||
to support Tobit.
|
||||
|
||||
R. Look at the discussion:
|
||||
http://linux-france.tk/prj/imapsync_list/msg00583.html
|
||||
http://linux-france.tk/prj/imapsync_list/threads.html#00583
|
||||
http://www.linux-france.org/prj/imapsync_list/msg00583.html
|
||||
http://www.linux-france.org/prj/imapsync_list/threads.html#00583
|
||||
patch saved in ./patches/imapsync-1.337_tobit_V6.patch
|
||||
|
||||
=======================================================================
|
||||
@ -1,111 +1,50 @@
|
||||
#!/bin/cat
|
||||
# $Id: FAQ.Docker.txt,v 1.10 2021/07/12 21:22:14 gilles Exp gilles $
|
||||
# $Id: FAQ.Docker.txt,v 1.6 2019/12/11 15:39:14 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Docker.txt
|
||||
|
||||
======================================================================
|
||||
Installing and using imapsync docker image
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Installing and using imapsync docker image
|
||||
=======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
|
||||
Q. How can I install and use the imapsync Docker image on my amd64 system?
|
||||
|
||||
Q. How can I install and use the imapsync Docker image on my i386 system?
|
||||
Q. How can I install and use the imapsync Docker image on my system?
|
||||
|
||||
Q. How can I install or update only the imapsync Docker image on my system?
|
||||
|
||||
Q. Where is the imapsync Docker hub location?
|
||||
|
||||
Q. How can I mask the passwords on the command line without mounting
|
||||
inside the container?
|
||||
|
||||
Q. Why imapsync isn't logging to a file in Docker context.
|
||||
How can I allow it?
|
||||
|
||||
Q. Any tips for the Docker Mailcow distribution?
|
||||
|
||||
Q. How can I build my own image?
|
||||
|
||||
Q. What do you do to update the docker hub image?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
======================================================================
|
||||
Q. How can I install and use the imapsync Docker image on my amd64 system?
|
||||
=======================================================================
|
||||
Q. How can I install and use the imapsync Docker image on my system?
|
||||
|
||||
R. Install Docker on your system. Once Docker is installed on your system,
|
||||
all you have to do in order install and run imapsync is the command line:
|
||||
all you have to do in order to run imapsync is the command line:
|
||||
|
||||
docker run gilleslamiral/imapsync imapsync <usual imapsync arguments>
|
||||
|
||||
======================================================================
|
||||
Q. How can I install and use the imapsync Docker image on my i386 system?
|
||||
|
||||
R1. You can't do it directly for now. It will throw this error when running it:
|
||||
|
||||
docker run gilleslamiral/imapsync imapsync
|
||||
standard_init_linux.go:211: exec user process caused "exec format error"
|
||||
|
||||
I plan to make the image multi-plateform. Drop me a note if you are
|
||||
eager to have it.
|
||||
|
||||
R2. Build the image on a i386 system with the exact same Dockerfile provided
|
||||
and run it on your i386 system.
|
||||
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Q. How can I install or update only the imapsync Docker image on my system?
|
||||
|
||||
R. To install or update the imapsync image, run:
|
||||
|
||||
docker pull gilleslamiral/imapsync
|
||||
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Q. Where is the imapsync Docker hub location?
|
||||
|
||||
R. Here:
|
||||
|
||||
https://hub.docker.com/r/gilleslamiral/imapsync/
|
||||
|
||||
======================================================================
|
||||
Q. How can I mask the passwords on the command line without mounting
|
||||
anything inside the container?
|
||||
|
||||
R. Use a file defining the environment variables
|
||||
IMAPSYNC_PASSWORD1 and IMAPSYNC_PASSWORD2
|
||||
|
||||
cat ./secret.txt
|
||||
IMAPSYNC_PASSWORD1=secret1
|
||||
IMAPSYNC_PASSWORD2=secret2
|
||||
|
||||
Use that file like this for a run:
|
||||
|
||||
docker run --env-file ./secret.txt gilleslamiral/imapsync imapsync ...
|
||||
|
||||
See:
|
||||
https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file
|
||||
https://stackoverflow.com/a/30494145/491175
|
||||
|
||||
======================================================================
|
||||
Q. Why imapsync isn't logging to a file in Docker context.
|
||||
How can I allow it?
|
||||
|
||||
R. In Docker context, writing the log is disabled by default because you
|
||||
don't have an easy access to the logfile after the sync. The logfile is
|
||||
inside the docker and no longer available after the sync, unless
|
||||
a special mount is done before.
|
||||
|
||||
Starting with imapsync release 2.113 the logging can be turned on
|
||||
by using the option --log. You can add access to the logfile with a mount
|
||||
or similar. See https://docs.docker.com/storage/volumes/"
|
||||
|
||||
See also
|
||||
https://github.com/imapsync/imapsync/issues/283
|
||||
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Q. Any tips for the Docker Mailcow distribution?
|
||||
|
||||
R. With the Mailcow distribution, imapsync is running inside a Docker
|
||||
@ -121,40 +60,6 @@ See the original Mathilde's comment:
|
||||
|
||||
https://github.com/imapsync/imapsync/issues/201#issuecomment-559500077
|
||||
|
||||
======================================================================
|
||||
Q. How can I build my own image?
|
||||
|
||||
R. Use the following command to build the image:
|
||||
|
||||
docker build -t gilleslamiral/imapsync .
|
||||
|
||||
with the Dockerfile in the current directory.
|
||||
|
||||
The latest Dockerfile can be found at
|
||||
https://imapsync.lamiral.info/INSTALL.d/Dockerfile
|
||||
or
|
||||
https://hub.docker.com/r/gilleslamiral/imapsync
|
||||
or
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Docker_build.txt
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. What do you do to update the docker hub image?
|
||||
|
||||
R. I do in my imapsync directory:
|
||||
|
||||
make docker_build
|
||||
make docker_upload_docker_hub
|
||||
|
||||
Then I go to
|
||||
https://hub.docker.com/r/gilleslamiral/imapsync
|
||||
|
||||
I edit and update the docker "Readme" with the last Dockerfile I used.
|
||||
I also update INSTALL.Docker_build.txt with the last Dockerfile
|
||||
|
||||
I also update the last Dockerfile on the imapsync site with:
|
||||
|
||||
make upload_index
|
||||
|
||||
======================================================================
|
||||
======================================================================
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
# $Id: FAQ.Domino.txt,v 1.13 2020/09/06 20:33:46 gilles Exp gilles $
|
||||
# $Id: FAQ.Domino.txt,v 1.12 2019/10/31 23:13:31 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -103,9 +103,8 @@ For Domino 853FP6 on Linux, we used this command on Unix:
|
||||
--prefix2 "" --sep2 "\/" --messageidnodomain \
|
||||
--regexmess 's{\A(.*?(?! ^$))^Date:(.*?)$}{$1Migratedbyus:$2\nx-MailDate:$2}gxms'
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. When I use --maxage option, imapsync sees no messages at all.
|
||||
Q. Whan I use --maxage imapsync sees no messages at all.
|
||||
What can I do?
|
||||
|
||||
R. Use --noabletosearch
|
||||
@ -114,17 +113,6 @@ R. Use --noabletosearch
|
||||
|
||||
Same thing with --minage
|
||||
|
||||
=======================================================================
|
||||
Q. On Domino this errors occurs:
|
||||
"Login failure, cannot convert Mailbox: code 02:46"
|
||||
|
||||
R. Follow
|
||||
https://atnotes.de/index.php?topic=44888.0
|
||||
|
||||
Use:
|
||||
|
||||
load convert -e mail\mailfilename.nsf
|
||||
|
||||
=======================================================================
|
||||
Q. My usual email software client like Thunderbird sees more messages
|
||||
than imapsync. How can it be possible?
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Dovecot.txt,v 1.14 2022/06/16 09:06:34 gilles Exp gilles $
|
||||
$Id: FAQ.Dovecot.txt,v 1.7 2019/09/25 09:25:52 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -13,41 +13,13 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Dovecot.txt
|
||||
|
||||
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"
|
||||
|
||||
Q. How to migrate to Dovecot with an admin/MasterUser account?
|
||||
|
||||
Q. I have a mailbox that "dovecot backup" gives errors on that
|
||||
I can't get rid of: "UID inserted in the middle of mailbox".
|
||||
What can I do?
|
||||
|
||||
Q. Imapsync encounters timeouts and Dovecot log says
|
||||
"mailpiler dovecot: imap(xxx): Error: Timeout (180s) while waiting for dotlock for transaction log file ..."
|
||||
What can I do?
|
||||
|
||||
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 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?
|
||||
|
||||
@ -55,22 +27,8 @@ R. Dovecot uses the same syntax as uw-imap
|
||||
|
||||
imapsync ... --user2="loginuser*admin_user" --password2 "admin_user_password"
|
||||
|
||||
To setup a Dovecot MasterUser follow the document
|
||||
https://doc.dovecot.org/configuration_manual/authentication/master_users/
|
||||
|
||||
=======================================================================
|
||||
Q. I have a mailbox that "dovecot backup" gives errors on that
|
||||
I can't get rid of: "UID inserted in the middle of mailbox".
|
||||
What can I do?
|
||||
|
||||
R. Solution, run:
|
||||
|
||||
doveadm -v deduplicate -m -u martin mailbox A/Posted
|
||||
|
||||
it will get rid of the duplicates (it can also be run without "-m")
|
||||
and this also allows "dovecot backup" to work.
|
||||
|
||||
Thanks to Martin Ward for this input!
|
||||
To setup a Dovecot MasterUser see
|
||||
http://wiki2.dovecot.org/Authentication/MasterUsers
|
||||
|
||||
=======================================================================
|
||||
Q. Subfolders are not created by imapsync and the error is
|
||||
@ -89,15 +47,6 @@ https://superuser.com/questions/813362/sub-folders-in-dovecot
|
||||
https://wiki2.dovecot.org/MailLocation/Maildir
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. Imapsync encounters timeouts and Dovecot log says
|
||||
"mailpiler dovecot: imap(xxx): Error: Timeout (180s) while waiting for dotlock for transaction log file ..."
|
||||
What can I do?
|
||||
|
||||
R. It looks like an NFS issue with Dovecot.
|
||||
Solve it with Dovecot support or use something else than NFS.
|
||||
I'll be glad to share here any solution you find.
|
||||
(Thanks to Mate Skoblar for reporting this issue)
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Duplicates.txt,v 1.25 2021/10/06 20:21:13 gilles Exp gilles $
|
||||
$Id: FAQ.Duplicates.txt,v 1.20 2019/05/17 10:10:30 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -9,50 +9,6 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Duplicates.txt
|
||||
Imapsync tips about duplicated messages issues.
|
||||
=======================================================================
|
||||
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. Without imapsync, I made several copies that partially failed and it
|
||||
ended with many duplicates/triplicates messages or more. Can I clean
|
||||
up the account with imapsync and how?
|
||||
|
||||
Q. How does imapsync identify messages and duplicates?
|
||||
|
||||
Q. How can I know if imapsync will generate duplicates on a second run?
|
||||
|
||||
Q: I found multiple copies, duplicates, when I run imapsync twice or
|
||||
more. What the hell is happening?
|
||||
|
||||
Q. imapsync calculates 479 messages in a folder but only transfers 400
|
||||
messages. What is happening?
|
||||
|
||||
Q. imapsync doesn't synchronize duplicates by default but I want to.
|
||||
How can I synchronize duplicates?
|
||||
|
||||
Q. How can I remove duplicates in a lone account?
|
||||
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
=======================================================================
|
||||
Q. Without imapsync, I made several copies that partially failed and it
|
||||
ended with many duplicates/triplicates messages or more. Can I clean
|
||||
up the account with imapsync and how?
|
||||
|
||||
R. Yes.
|
||||
See the Q/R "How can I remove duplicates in a lone account?" below.
|
||||
|
||||
=======================================================================
|
||||
Q. How does imapsync identify messages and duplicates?
|
||||
|
||||
R. Imapsync by default identify messages by their headers "Message-Id"
|
||||
and "Received". Usually, for a given message, "Message-Id" appears one
|
||||
time while multiple "Received" headers are common.
|
||||
|
||||
For imapsync, messages with the same "Message-Id" and "Received" headers
|
||||
are consider identical, ie, duplicates.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How can I know if imapsync will generate duplicates on a second run?
|
||||
|
||||
@ -76,8 +32,7 @@ Messages transferred : 0
|
||||
Messages skipped : 1555
|
||||
|
||||
=======================================================================
|
||||
Q: I found multiple copies, duplicates, when I run imapsync twice or
|
||||
more. What the hell is happening?
|
||||
Q: Multiple copies, duplicates, when I run imapsync twice ore more.
|
||||
|
||||
R0. First, some explanations to understand the issue.
|
||||
Normally and by default, imapsync doesn't generate duplicates.
|
||||
@ -108,12 +63,12 @@ of all messages already transferred.
|
||||
|
||||
If you end with:
|
||||
Messages skipped : 0
|
||||
then don't go on, it means imapsync is still suffering to
|
||||
don't go on, it means imapsync is still suffering to
|
||||
identify messages.
|
||||
|
||||
If you end with many messages skipped then it's very
|
||||
good and now you can safely resync the mailbox
|
||||
and get rid of the duplicate messages on host2 with:
|
||||
and get rid of the dupplicates messages on host2 with:
|
||||
|
||||
imapsync ... --useheader "Message-Id" --delete2duplicates
|
||||
|
||||
@ -217,7 +172,7 @@ trick to keep the --useheader filtering behavior is to use
|
||||
|
||||
=======================================================================
|
||||
Q. imapsync calculates 479 messages in a folder but only transfers 400
|
||||
messages. What is happening?
|
||||
messages. What's happen?
|
||||
|
||||
R1. Unless --useuid is used, imapsync considers a header part
|
||||
of a message to identify a message on both sides.
|
||||
@ -235,36 +190,6 @@ R2. With option --useuid imapsync doesn't use headers to identify
|
||||
messages on both sides but it uses their imap uid identifier.
|
||||
In that case duplicates on host1 are also transferred on host2.
|
||||
|
||||
=======================================================================
|
||||
Q. imapsync doesn't synchronize duplicates by default but I want to.
|
||||
How can I synchronize duplicates?
|
||||
|
||||
R1. Use the option --syncduplicates
|
||||
|
||||
R2. Use the option --useuid
|
||||
If you have already synchronized two mailboxes without --useuid then
|
||||
using it right away will generate duplicates on host2. To avoid that
|
||||
behavior, you have to perform a first run with --usecache to build
|
||||
the local UID cache. Then the next runs with --useuid
|
||||
|
||||
There are potentially issues with --usecache. They can be solved.
|
||||
Read the document FAQ.Use_cache.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Use_cache.txt
|
||||
|
||||
So to finalise how to synchronize duplicates:
|
||||
|
||||
imapsync ... --tmpdir . --usecache
|
||||
|
||||
imapsync ... --tmpdir . --useuid
|
||||
imapsync ... --tmpdir . --useuid
|
||||
...
|
||||
|
||||
Here --tmpdir value is the dot "." meaning "current directory".
|
||||
Surrounding it with double-quotes is optional.
|
||||
|
||||
If the two mailboxes haven't been already synchronized then the
|
||||
first run with --usecache is useless.
|
||||
|
||||
=======================================================================
|
||||
Q. How can I remove duplicates in a lone account?
|
||||
|
||||
@ -272,8 +197,7 @@ R. In order to remove duplicates in a lone account, just run imapsync
|
||||
on the same account as source and destination, plus the
|
||||
option --delete2duplicates, ie, with
|
||||
host1 == host2, user1 == user2, password1 == password2
|
||||
|
||||
imapsync ... --delete2duplicates
|
||||
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Emptying.txt,v 1.14 2022/06/08 11:08:39 gilles Exp gilles $
|
||||
$Id: FAQ.Emptying.txt,v 1.8 2019/04/30 12:52:10 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -7,28 +7,9 @@ https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Emptying.txt
|
||||
|
||||
=======================================================================
|
||||
Imapsync tips about deletions.
|
||||
Imapsync tip to empty an account.
|
||||
=======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. How to delete all emails of all folders of an account with imapsync?
|
||||
|
||||
Q. How to delete all folders of an account with imapsync?
|
||||
|
||||
Q. How to delete some folders of an account with imapsync?
|
||||
|
||||
Q. How to revert a sync that went to the wrong account?
|
||||
|
||||
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.
|
||||
|
||||
=======================================================================
|
||||
Q. How to delete all emails of all folders of an account with imapsync?
|
||||
|
||||
@ -37,11 +18,11 @@ R. Use the same account on both sides with option --delete1
|
||||
|
||||
Option --noexpungeaftereach is just to speed up the deletions.
|
||||
|
||||
Example:
|
||||
Example (real example):
|
||||
|
||||
imapsync \
|
||||
--host1 test.lamiral.info --user1 foo --password1 secret \
|
||||
--host2 test.lamiral.info --user2 foo --password2 secret \
|
||||
./imapsync \
|
||||
--host1 test.lamiral.info --user1 empty --password1 secret \
|
||||
--host2 test.lamiral.info --user2 empty --password2 secret \
|
||||
--delete1 --noexpungeaftereach
|
||||
|
||||
=======================================================================
|
||||
@ -50,104 +31,10 @@ Q. How to delete all folders of an account with imapsync?
|
||||
R. Use the same account on both sides with the options
|
||||
--delete1 --noexpungeaftereach --delete1emptyfolders
|
||||
|
||||
imapsync ... --delete1 --noexpungeaftereach --delete1emptyfolders
|
||||
./imapsync ... --delete1 --noexpungeaftereach --delete1emptyfolders
|
||||
|
||||
It won't delete the folder INBOX since INBOX is mandatory in imap.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to delete some folders of an account with imapsync?
|
||||
|
||||
R. Use the same account on both sides with the options
|
||||
--delete1 --noexpungeaftereach --delete1emptyfolders
|
||||
like when deleting all folders BUT select only the folders
|
||||
you want to delete by using options to select folders,
|
||||
like --folder or --folderrec or --include or --exclude
|
||||
|
||||
Example, to delete the folder Blabla
|
||||
|
||||
imapsync ... --delete1 --noexpungeaftereach --delete1emptyfolders --folder Blabla
|
||||
|
||||
To delete the four folders Kalender Kontakte Aufgaben Notizen:
|
||||
|
||||
imapsync ... --include 'Kalender|Kontakte|Aufgaben|Notizen' \
|
||||
--delete1 --noexpungeaftereach --delete1emptyfolders
|
||||
|
||||
I strongly recommend to use --dry first!
|
||||
|
||||
To get an overview of how to select folders, see
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Selection.txt
|
||||
|
||||
=======================================================================
|
||||
Q. How to revert a sync that went to the wrong account?
|
||||
|
||||
R. If all the wrong emails have some common characteristic that is not
|
||||
shared by the good one, then you can search for them and delete them
|
||||
using the same account as source and destination. For example, if all
|
||||
the messages have the same email destination address as
|
||||
"john_smith@example.com", then you can remove them with the following
|
||||
command:
|
||||
|
||||
imapsync ... --search "TO john_smith@example.com" --delete1
|
||||
|
||||
Be very careful with deletions! Since this section deals with something
|
||||
that was made wrong, you're in good place to make a new one!
|
||||
|
||||
There is many possibilities to select messages with different criterium.
|
||||
See some of them by reading the document
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Messages_Selection.txt
|
||||
|
||||
If the wrongly emails messages synced have no special common
|
||||
characteristic then take an handkerchief and cry.
|
||||
|
||||
=======================================================================
|
||||
Q. How to delete emails older than 90 days with imapsync?
|
||||
|
||||
R. Use the same account on both sides with option --delete1
|
||||
--noexpungeaftereach --minage 90
|
||||
|
||||
Example:
|
||||
|
||||
imapsync \
|
||||
--host1 test.lamiral.info --user1 foo --password1 secret \
|
||||
--host2 test.lamiral.info --user2 foo --password2 secret \
|
||||
--delete1 --noexpungeaftereach --minage 90
|
||||
|
||||
=======================================================================
|
||||
Q. How to delete emails matching a certain criterium with imapsync?
|
||||
|
||||
R. Use the --search option to select the messages you want to delete
|
||||
and then use the same account on both sides with the suplementary
|
||||
options --delete1 --noexpungeaftereach
|
||||
To select the messages read the document FAQ.Messages_Selection.txt
|
||||
at https://imapsync.lamiral.info/FAQ.d/FAQ.Messages_Selection.txt
|
||||
|
||||
|
||||
Example:
|
||||
|
||||
imapsync \
|
||||
--host1 test.lamiral.info --user1 foo --password1 secret \
|
||||
--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
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
@ -1,57 +1,66 @@
|
||||
|
||||
$Id: FAQ.Exchange.txt,v 1.80 2022/04/05 13:48:52 gilles Exp gilles $
|
||||
$Id: FAQ.Exchange.txt,v 1.57 2019/12/04 18:26:28 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Exchange.txt
|
||||
|
||||
|
||||
|
||||
======================================================================
|
||||
Imapsync tips for Exchange 2000 2003 2007 2010 2013 2016 2019
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Imapsync tips for Exchange 20xx and Office365.
|
||||
=======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. Can I use imapsync to transfer from or to Exchange accounts?
|
||||
Q. Can I use imapsync to transfer from or to Exchange or Office365 accounts?
|
||||
|
||||
Q. How to sync from XXX to Exchange 2010/2013/2016/2019
|
||||
Q. How to sync from XXX to Exchange 2010/2013/2016
|
||||
|
||||
Q. How to sync from Office365 to XXX?
|
||||
|
||||
Q. How to sync from XXX to Office365
|
||||
|
||||
Q. For Office365 I have double and triple checked the username and
|
||||
password spelling but I still get a "LOGIN failed". Any clue?
|
||||
|
||||
Q. I see "NO Maximum size of appendable message has been exceeded"
|
||||
What can I do with that?
|
||||
What can I do with that? Happens with Office365 or Exchange 2016.
|
||||
|
||||
Q. Exchange throttles the sync and says:
|
||||
Q. Office365 throttles the sync and says:
|
||||
"Request is throttled. Suggested Backoff Time: 299961 milliseconds".
|
||||
What can I do with that?
|
||||
|
||||
Q. For Exchange I have double and triple checked the username and
|
||||
password spelling but I still get a "LOGIN failed". Any clue?
|
||||
Q. Office365 refuses to create the folder named "Files" with the error
|
||||
"NO Folder name is reserved". What happens?
|
||||
|
||||
Q. Office365 users complain that a folder named "Files" contains
|
||||
messages with no sender.
|
||||
|
||||
Q. Exchange fails with "User is authenticated but not connected".
|
||||
|
||||
Q. Exchange fails with "BAD Command received in Invalid state".
|
||||
|
||||
Q. Exchange fails with "NO Server Unavailable. 15" and imapsync says
|
||||
"could not append ... NO Server Unavailable. 15"
|
||||
|
||||
Q. From XXX to Exchange 2013, read receipts are all resent again
|
||||
after a sync. Even for old messages. How can I fix that?
|
||||
Q. From XXX to Exchange 2013 or Office365, read receipts are all
|
||||
resent again after a sync. Even for old messages. How can I fix that?
|
||||
|
||||
Q. DEBUG: IO/Socket/SSL.pm:1043: local error: SSL read error
|
||||
DEBUG: IO/Socket/SSL.pm:1043: local error: SSL read error
|
||||
|
||||
Q. From XXX to Exchange 2010/2013 I get this error message
|
||||
Q. From XXX to Exchange 2010/2013 or Office365 I get this error message
|
||||
sometimes: "BAD Command Argument Error 11". What does it mean?
|
||||
|
||||
Q. From XXX to Exchange 2010 or 2013, the flag Flagged does
|
||||
Q. From XXX to Exchange 2010 or 2013 or Office365 the flag Flagged does
|
||||
not seem to be well synced. What can I do?
|
||||
|
||||
Q. How to migrate from or to Exchange 2007/2010/2013 with an
|
||||
Q. How to migrate from or to Exchange 2007/2010/2013 with an
|
||||
admin/authuser account?
|
||||
|
||||
Q. How to migrate from or to Exchange 2016 with an admin/authuser account?
|
||||
|
||||
Q. How to migrate from or to Exchange 2003 with an admin/authuser account?
|
||||
Q. How to migrate from or to Office 365 with an admin/authuser account?
|
||||
|
||||
Q. How to migrate from or to Exchange 2003 with an admin/authuser
|
||||
account?
|
||||
|
||||
Q. Couldn't create folder [trash] "Mailbox already exists".
|
||||
|
||||
@ -68,22 +77,21 @@ Q. How to sync from Microsoft Exchange 2000 IMAP4rev1 server?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
======================================================================
|
||||
Q. Can I use imapsync to transfer from or to Exchange accounts?
|
||||
=======================================================================
|
||||
Q. Can I use imapsync to transfer from or to Exchange or Office365 accounts?
|
||||
|
||||
R. Yes. But IMAP access to an Exchange account is not always
|
||||
R. Yes. But IMAP access to a Exchange or Office365 account is not always
|
||||
allowed by default so it has to be allowed in the server configuration
|
||||
part.
|
||||
|
||||
Exchange: https://docs.microsoft.com/en-us/exchange/enable-imap4-in-exchange-2013-exchange-2013-help
|
||||
Office365: https://docs.microsoft.com/en-us/exchange/troubleshoot/configure-mailboxes/pop3-imap-owa-activesync-office-365
|
||||
|
||||
======================================================================
|
||||
Q. How to sync from XXX to Exchange 2010/2013/2016/2019
|
||||
=======================================================================
|
||||
Q. How to sync from XXX to Exchange 2010/2013/2016
|
||||
|
||||
R0. IMAP is not enabled by default on Exchange, see how to enable it:
|
||||
R0. IMAP is not enable by default on Exchange, see how to enable it:
|
||||
https://docs.microsoft.com/en-us/exchange/enable-imap4-in-exchange-2013-exchange-2013-help
|
||||
Also read
|
||||
http://clintboessen.blogspot.com/2018/03/binding-certificate-breaks-imap-or-pop.html
|
||||
|
||||
|
||||
R1. Following is a command line resume that solves most encountered
|
||||
@ -127,68 +135,75 @@ that can be used like:
|
||||
|
||||
To get reformime, install the "maildrop" package.
|
||||
|
||||
On Linux again, there is a good Python script in the tarball that can
|
||||
fix several things that Exchange or O365 have issues with.
|
||||
=======================================================================
|
||||
Q. How to sync from Office365 to XXX?
|
||||
|
||||
Use it like this:
|
||||
R. On Windows, use:
|
||||
|
||||
./imapsync ... --pipemess W/tools/fix_email_for_exchange.py
|
||||
imapsync.exe ... --office1
|
||||
|
||||
It often does some miracles on messages.
|
||||
On Unix, use:
|
||||
|
||||
======================================================================
|
||||
Q. For Exchange I have double and triple checked the username and
|
||||
imapsync ... --office1
|
||||
|
||||
Option --office1 is like (release 1.970):
|
||||
|
||||
imapsync ... --host1 outlook.office365.com \
|
||||
--ssl1 \
|
||||
--exclude "^Files$"
|
||||
|
||||
=======================================================================
|
||||
Q. How to sync from XXX to Office365
|
||||
|
||||
R0. IMAP is not enable by default on Office365, see how to enable it:
|
||||
https://docs.microsoft.com/en-us/exchange/troubleshoot/configure-mailboxes/pop3-imap-owa-activesync-office-365
|
||||
https://docs.microsoft.com/en-us/exchange/allow-pop3-imap4-and-smtp-server-settings-to-be-viewed-by-end-users-in-outlook-web-app-exchange-2013-help
|
||||
https://support.context.io/hc/en-us/articles/213586243-Enabling-IMAP-for-Office365
|
||||
|
||||
R. Here is a command line resume that solves most encountered issues when
|
||||
migrating to Office365. It's similar with Exchange except for some
|
||||
values. To understand or change the details you have to read
|
||||
next Q/R sections.
|
||||
|
||||
|
||||
imapsync ... --office2
|
||||
|
||||
which is equivalent to (in imapsync release 1.870):
|
||||
|
||||
imapsync ... \
|
||||
--host2 outlook.office365.com \
|
||||
--ssl2 \
|
||||
--maxsize 45000000 \
|
||||
--maxmessagespersecond 4 \
|
||||
--disarmreadreceipts \
|
||||
--regexmess "s,(.{10239}),$1\r\n,g" \
|
||||
--f1f2 "Files=Files_renamed_by_imapsync"
|
||||
|
||||
|
||||
On Linux, you can also try the "reformime" command
|
||||
that can be used like:
|
||||
|
||||
imapsync ... --maxlinelengthcmd "reformime -r7"
|
||||
|
||||
To get reformime, install the "maildrop" package.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. For Office365 I have double and triple checked the username and
|
||||
password spelling but I still get a "LOGIN failed". Any clue?
|
||||
|
||||
R1. Triple check the hostname then. Try all of these:
|
||||
* imap-mail.outlook.com
|
||||
* imap.outlook.com
|
||||
* outlook.office365.com
|
||||
|
||||
R1. Disable double-step authentication, also known as 2-factor,
|
||||
2-step authentication on the Azure/Active Directory portal.
|
||||
R2. Also triple check a license is assigned to that account
|
||||
in Office365.
|
||||
|
||||
R2. Microsoft introduced something called "security defaults" which is
|
||||
enabled by default for new tenants. One of the rules blocks IMAP
|
||||
access as of imapsync. The funny thing is that you can't disable
|
||||
single rules of this security package without buying additional
|
||||
licenses. Switching the whole thing off allows the login.
|
||||
R3. Try with a classic email client like Thunderbird and the same
|
||||
parameters.
|
||||
|
||||
Also, disable double-step authentication on the Azure/Active Directory
|
||||
portal.
|
||||
|
||||
See here:
|
||||
https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/concept-fundamentals-security-defaults
|
||||
Thanks to Stephan Buhre for this R2 answer.
|
||||
|
||||
R3. I want to migrate to Exchange 2019. I haven't been able to sync
|
||||
using admin credentials even if I've tried and made all the
|
||||
configuration mentioned in the FAQ.Exchange.
|
||||
The error was always "LOGIN failed".
|
||||
|
||||
My problem was that I have been used an admin account which haven’t
|
||||
attached a mailbox in Exchange. This is my admin account which I use
|
||||
only for configuration in Exchange, not for emails.
|
||||
|
||||
So, after I’ve created in Exchange a mailbox for this user, the sync
|
||||
started to work. I can confirm that imapsync is working for Exchange
|
||||
2019, with plain authentication, and full permissions of admin account
|
||||
(this account must have mailbox attached) applied to regular user
|
||||
mailbox account.
|
||||
|
||||
It doesn't work with the --authuser2 parameter. The syntax that
|
||||
works for me is:
|
||||
|
||||
imapsync ... --host2 192.168.xxx.yyy --user2 domain.local\admin.account\regular.user --password2 "xxxxxxx"
|
||||
or
|
||||
imapsync ...--host2 192.168.xxx.yyy --user2 admin.account@mycompany.com\regular.user --password2 "xxxxxxx"
|
||||
|
||||
Thanks to Ioan Nechita for this R3 answer.
|
||||
|
||||
R4. Are there special characters in the password?
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Authentication_failure.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Windows.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Unix.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Mac.txt
|
||||
|
||||
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Q. Exchange fails with "User is authenticated but not connected".
|
||||
|
||||
R1. "The message User is authenticated but not connected is due to a
|
||||
@ -204,26 +219,34 @@ R2. Miguel Alameda reported understanding and solving this issue
|
||||
like this, the context was admin/authuser:
|
||||
"The admin user had not permission in the target mailbox."
|
||||
|
||||
R3. Jason from magiclamp.net adds this tip (2021_11_23).
|
||||
"In GoDaddy Exchange admin center, under recipients, you can
|
||||
double click on a mailbox, and in the "mailbox delegation" scrolling
|
||||
down to the bottom it shows a input field named "Full Access".
|
||||
Add the admin account there."
|
||||
=======================================================================
|
||||
Q. I see "NO Maximum size of appendable message has been exceeded"
|
||||
What can I do with that? Happens with Office365 or Exchange 2016
|
||||
|
||||
R0. It happens with Office365 and Exchange 2016.
|
||||
See R1 for Office365
|
||||
See R2 for Exchange 2016
|
||||
|
||||
R1. Office365 supports send/receive max message sizes of up to 150MB
|
||||
but you need to make changes in your tenant(s) to support it.
|
||||
|
||||
======================================================================
|
||||
Q. I see "NO Maximum size of appendable message has been exceeded"
|
||||
What can I do with that?
|
||||
The following PowerShell command will increase the message sizes that
|
||||
can be sent/received. The trick in getting IMAPSync to work is to
|
||||
apply these settings to the accounts performing the migration,
|
||||
NOT the accounts associated with the target mailbox (assuming you're
|
||||
using service accounts to perform transfers on behalf of users).
|
||||
|
||||
R1. With Exchange 2019
|
||||
Set-mailbox -Identity $UPN -MaxReceiveSize 150mb -MaxSendSize 150mb
|
||||
|
||||
Change the recipient Receive/Send size:
|
||||
e.g.
|
||||
|
||||
Set-mailbox -Identity user@contoso.com -MaxReceiveSize 100mb -MaxSendSize 100mb
|
||||
Set-mailbox -Identity "migrationaccount@testtenant.onmicrosoft.com" -MaxReceiveSize 150mb -MaxSendSize 150mb
|
||||
|
||||
Thanks to Pasternak Denis for this Exchange 2019 tip.
|
||||
We're transferring data between Office 365 tenants so we set these
|
||||
values on the migration acounts in the source and target tenants.
|
||||
|
||||
Thanks to Sean McDougall, Ian Thomas & Matt Wilks from Toronto
|
||||
for this FAQ item.
|
||||
|
||||
R2. With Exchange 2016
|
||||
|
||||
@ -252,28 +275,37 @@ Please note that this change may be lost each time you install an
|
||||
cumulative update. After the change, restart the services exchange
|
||||
transport role, exchange information store and exchange imap4 Backend.
|
||||
|
||||
Source in Deutch:
|
||||
https://social.technet.microsoft.com/Forums/de-DE/2c07cf43-fe0e-4d22-b061-676a67c6d58d/exchange-2013-max-mailgre-per-imap?forum=exchange_serverde
|
||||
(Source: https://social.technet.microsoft.com/Forums/de-DE/2c07cf43-fe0e-4d22-b061-676a67c6d58d/exchange-2013-max-mailgre-per-imap?forum=exchange_serverde)
|
||||
|
||||
This change made our Exchange installation accept bigger e-mails
|
||||
in order to remove the imapsync Exchange error message
|
||||
"NO Maximum size of appendable message has been exceeded"
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. Exchange throttles the sync and says:
|
||||
=======================================================================
|
||||
Q. Office365 throttles the sync and says:
|
||||
"Request is throttled. Suggested Backoff Time: 299961 milliseconds".
|
||||
What can I do with that?
|
||||
|
||||
|
||||
R0. Exchange has throttle mechanisms to limit any huge
|
||||
R. Exchange and Office365 have throttle mechanisms to limit any huge
|
||||
usage. Sometimes imapsync transfers are too stressful for servers.
|
||||
The message
|
||||
"Request is throttled. Suggested Backoff Time: 299961 milliseconds"
|
||||
comes from the imap Office365 server, imapsync just reports it
|
||||
before being disconnected from it.
|
||||
|
||||
To solve the throttles issues from 0365, there are two solutions
|
||||
at least:
|
||||
|
||||
R1. Play with options --maxbytespersecond or --maxmessagespersecond
|
||||
R1. Call Microsoft Office365 and ask them to remove the limits on your
|
||||
mailboxes. That's not a joke, they do it for 90 days usually,
|
||||
sometimes only after you reach the second technician you call,
|
||||
the first one usually been not enough competent to understand
|
||||
what you're talking about (I would be glad to remove this bad
|
||||
fact).
|
||||
|
||||
R2. Play with options --maxbytespersecond or --maxmessagespersecond
|
||||
or --exitwhenover
|
||||
|
||||
imapsync ... --maxbytespersecond 100_000
|
||||
@ -285,17 +317,61 @@ R1. Play with options --maxbytespersecond or --maxmessagespersecond
|
||||
I don't know the upper value that avoid the default throttling from 0365
|
||||
and I guess it changes over time.
|
||||
|
||||
R2. For Exchange, in case throttle appears anyway, fix them with:
|
||||
R3. For Exchange, in case throttle appears anyway, fix them with:
|
||||
https://docs.microsoft.com/en-us/exchange/change-user-throttling-settings-for-specific-users-exchange-2013-help
|
||||
See also:
|
||||
http://linux-france.tk/prj/imapsync_list/msg02072.html
|
||||
(Subject: Re: [imapsync] From Exchange to Dovecot. Speed
|
||||
Date: Mon, 03 Nov 2014 00:14:59 +0100)
|
||||
http://www.linux-france.org/prj/imapsync_list/msg02072.html
|
||||
|
||||
Sometimes restarting the Exchange server is needed to take
|
||||
into account the change in the configuration.
|
||||
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Q. Office365 refuses to create the folder named "Files" with the error
|
||||
"NO Folder name is reserved". What happens?
|
||||
|
||||
R. The folder Files is a standard folder in Office365. It should not
|
||||
be synced in IMAP. See the next question.
|
||||
|
||||
=======================================================================
|
||||
Q. Office365 users complain that a folder named "Files" contains
|
||||
messages with no sender.
|
||||
|
||||
R0. To fix this, add --exclude Files
|
||||
|
||||
imapsync ... --exclude Files
|
||||
|
||||
If you use --office1 then imapsync will add this exclusion
|
||||
automatically like using the option:
|
||||
|
||||
imapsync ... --exclude "^Files$"
|
||||
|
||||
If you use --office2 then imapsync will add a renaming of any
|
||||
"Files" folder on host1, like using the option:
|
||||
|
||||
imapsync ... --f1f2 "Files=Files_renamed_by_imapsync"
|
||||
|
||||
The host2 account ends up with a folder named
|
||||
"Files_renamed_by_imapsync", but no complaining.
|
||||
|
||||
R1. This folder "Files" seems to be a standard folder in Exchange Online,
|
||||
but it is not. The folder contains all attachments in every email
|
||||
that is in the mailbox, but without any headers.
|
||||
This causes some confusion for users as these appear in their
|
||||
search results as duplicate lines but without the sender details
|
||||
or even the message body.
|
||||
|
||||
This folder seems to be usually hidden so IMAP clients can’t see it,
|
||||
but for some reason sometimes it becomes visible.
|
||||
|
||||
R2. It looks to be a common problem with Exchange Online.
|
||||
I’m not sure what causes the folder to appear.
|
||||
|
||||
More info here:
|
||||
https://answers.microsoft.com/en-us/msoffice/forum/msoffice_o365admin-mso_exchon-mso_o365b/exclude-the-exchange-online-system-folder-called/2adbdf84-db4a-4c7f-ac29-738757980a0d
|
||||
https://answers.microsoft.com/en-us/msoffice/forum/msoffice_o365admin-mso_dep365-mso_o365b/no-sender-emails-in-files-folder/534bae8f-a7d7-4f5f-8ed7-5bad0d5fa23f
|
||||
|
||||
(This question/answer is taken quasi verbatim from Perttu Aaltonen)
|
||||
=======================================================================
|
||||
Q. Exchange fails with "BAD Command received in Invalid state".
|
||||
|
||||
R1. This message might happen when authenticating without ssl nor tls,
|
||||
@ -309,38 +385,9 @@ R2. This message might also happen when authenticating with ssl and tls.
|
||||
It won't work, you can't do a direct double encryption, few
|
||||
servers allow that.
|
||||
|
||||
======================================================================
|
||||
Q. Exchange fails with "NO Server Unavailable. 15" and imapsync says
|
||||
"could not append ... NO Server Unavailable. 15"
|
||||
|
||||
R1. The problem could be a mailbox quota limitation.
|
||||
|
||||
In the Exchange log file, if you see many
|
||||
"Microsoft.Exchange.Data.Storage.QuotaExceededException",
|
||||
it looks like "Quota Exceeded" could be the issue.
|
||||
|
||||
The solution is to increase the quota for this mailbox.
|
||||
Quoting
|
||||
https://docs.microsoft.com/en-us/exchange/recipients/user-mailboxes/storage-quotas?view=exchserver-2019
|
||||
In the Exchange admin center (EAC), navigate to Recipients > Mailboxes.
|
||||
In the list of user mailboxes, click the mailbox that you want to change the storage quotas for,
|
||||
and then click Edit icon, then change "Prohibit send and receive at (GB)", then save your changes.
|
||||
|
||||
Or use the Exchange Management Shell, aka PowerShell:
|
||||
Set-Mailbox -Identity "Joe Healy" -IssueWarningQuota 499gb -ProhibitSendQuota 500gb -ProhibitSendReceiveQuota 500gb -UseDatabaseQuotaDefaults $false
|
||||
|
||||
|
||||
R2. A user fixed it by enabling IMAP logging on Exchange which is
|
||||
quite crazy as a solution. But why not, here it is:
|
||||
|
||||
https://www.mantisbt.org/forums/viewtopic.php?p=68835&sid=8b1ecd2d976e85218fbf33fcd38c209d#p68835
|
||||
by TerranceM
|
||||
|
||||
Set-ImapSettings -Server <server-name> -ProtocolLogEnabled $true
|
||||
|
||||
======================================================================
|
||||
Q. From XXX to Exchange 2013, read receipts are all resent again
|
||||
after a sync. Even for old messages. How can I fix that?
|
||||
=======================================================================
|
||||
Q. From XXX to Exchange 2013 or Office365, read receipts are all
|
||||
resent again after a sync. Even for old messages. How can I fix that?
|
||||
|
||||
R. imapsync can remove the header containing this read receipt request.
|
||||
|
||||
@ -355,7 +402,7 @@ Selecting seen message can be done with:
|
||||
|
||||
imapsync ... --search1 "SEEN" --disarmreadreceipts
|
||||
|
||||
Of course a second run has to be done without the --disarmreadreceipts
|
||||
Of course a second run has to be run without the --disarmreadreceipts
|
||||
for unseen messages:
|
||||
|
||||
imapsync ... --search1 "UNSEEN"
|
||||
@ -372,7 +419,7 @@ X-Disposition-Notification-To: blabla
|
||||
|
||||
Thanks to David Karnowski for pointing and solving this issue.
|
||||
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Q. DEBUG: IO/Socket/SSL.pm:1043: local error: SSL read error
|
||||
DEBUG: IO/Socket/SSL.pm:1043: local error: SSL read error
|
||||
|
||||
@ -388,8 +435,8 @@ R2. Another solution is to remove --tls or --ssl options for Exchange
|
||||
R3. See also the FAQ FAQ.SSL_errors.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.SSL_errors.txt
|
||||
|
||||
======================================================================
|
||||
Q. From XXX to Exchange 2010/2013 I get this error message
|
||||
=======================================================================
|
||||
Q. From XXX to Exchange 2010/2013 or Office365 I get this error message
|
||||
sometimes: "BAD Command Argument Error 11". What does it mean?
|
||||
|
||||
R. This error message comes from Exchange IMAP server when it
|
||||
@ -397,14 +444,17 @@ R. This error message comes from Exchange IMAP server when it
|
||||
|
||||
* Some messages are bigger than the size limit. 10 MB by default
|
||||
on Exchange. It can be upped by configuration for Exchange.
|
||||
Sometimes a reboot is needed to take configuration changes
|
||||
into account.
|
||||
Sometimes a reboot is needed to take configuration changes
|
||||
into account.
|
||||
If you can't fix this limit on Exchange then use option
|
||||
--maxsize 10000000 for 10 MB, change it if needed) to tell
|
||||
imapsync to skip those messages.
|
||||
This value is 45 MB by default for Office365
|
||||
|
||||
imapsync ... --maxsize 10000000 # 10 MB for Exchange
|
||||
|
||||
imapsync ... --maxsize 45000000 # 45 MB for Office365
|
||||
|
||||
|
||||
* Quota reached. The whole account is full.
|
||||
It can be upped by configuration.
|
||||
@ -412,10 +462,15 @@ R. This error message comes from Exchange IMAP server when it
|
||||
* Some messages have some lines too long. Use option --maxlinelength
|
||||
to skip messages whose max line length is over a number of bytes.
|
||||
--maxlinelength 1000 is a RFC2822 must but most server support
|
||||
higher values. Exchange supports 9900 characters line length:
|
||||
higher values.
|
||||
Exchange supports 9900 characters line length:
|
||||
|
||||
imapsync ... --maxlinelength 9900
|
||||
|
||||
Office365 supports 10500 characters line length:
|
||||
|
||||
imapsync ... --maxlinelength 10500
|
||||
|
||||
In case you prefer fixing messages with long lines the hard way,
|
||||
instead of skipping them with --maxlinelength 9900, just use:
|
||||
|
||||
@ -427,11 +482,11 @@ R. This error message comes from Exchange IMAP server when it
|
||||
|
||||
Have also in mind that Exchange closes the connection after 10 errors
|
||||
encountered so you might also see "BYE Connection closed" errors from
|
||||
Exchange, which means Exchange leaves the session and says goodbye,
|
||||
Exchange, which means Exchange leaves the session and say goodbye,
|
||||
come back later. Rerun a sync then.
|
||||
|
||||
On Linux, there is a good Python script in the tarball that can
|
||||
fix several things that Exchange have issues with.
|
||||
fix several things that Exchange or O365 have issues with.
|
||||
|
||||
Use it like this:
|
||||
|
||||
@ -439,8 +494,8 @@ Use it like this:
|
||||
|
||||
It often does some miracles on messages.
|
||||
|
||||
======================================================================
|
||||
Q. From XXX to Exchange 2010 or 2013, the flag Flagged does
|
||||
=======================================================================
|
||||
Q. From XXX to Exchange 2010 or 2013 or Office365 the flag Flagged does
|
||||
not seem to be well synced. What can I do?
|
||||
|
||||
R. Use the following trick. Run imapsync twice, one with --regexflag
|
||||
@ -462,14 +517,15 @@ Thanks to Dave Murray and Simon Savva for reporting and solving
|
||||
this issue.
|
||||
|
||||
======================================================================
|
||||
Q. How to migrate from or to Exchange 2007/2010/2013 with an
|
||||
Q. How to migrate from or to Exchange 2007/2010/2013 with an
|
||||
admin/authuser account?
|
||||
|
||||
R. The tricks comes from Michele Marcionelli and Benjamin Priestman:
|
||||
|
||||
This may works:
|
||||
This doesn't work:
|
||||
imapsync ... --user2 user2 --authuser2 admin2 --password2 adminpassword2 ...
|
||||
or
|
||||
|
||||
This might works:
|
||||
imapsync ... --user2 "domain\admin2\user2" --password2 adminpassword2 ...
|
||||
or
|
||||
imapsync ... --user2 "admin2@domain\user2" --password2 adminpassword2 ...
|
||||
@ -498,9 +554,6 @@ and b) about a mailNickname which can be different to the username.
|
||||
As it seems you need to use the mailNickname (e.g. alias) defined
|
||||
for user2, not the username itself.
|
||||
https://techcommunity.microsoft.com/t5/exchange-team-blog/understanding-login-strings-with-pop3-imap/ba-p/610683
|
||||
https://web.archive.org/web/20191014050543/https://techcommunity.microsoft.com/t5/Exchange-Team-Blog/Understanding-login-strings-with-POP3-IMAP/ba-p/610683
|
||||
the second link has the same content, I give it in case the first disappears,
|
||||
thanks to archive.org!
|
||||
|
||||
A little note from John Becker.
|
||||
After you pointed out that I had issues with authorization, I realized that
|
||||
@ -546,17 +599,45 @@ Hi guys. For a long time I could not start synchronization, I use admin rights
|
||||
and the --authuser2 switch when I migrated from Mdaemon to Exchange2016.
|
||||
I always got the error:
|
||||
"Host2 failure: Error login on [my.exchange.com] with user [mydomainuser] auth [PLAIN]: 2 NO AUTHENTICATE failed."
|
||||
In order for ImapSync to login to the user's mailbox using administrator rights,
|
||||
In order for ImapSync to login to the user’s mailbox using administrator rights,
|
||||
you need to give for the administrator the permissions to the mailbox of this
|
||||
user with the command:
|
||||
Add-MailboxPermission -Identity DomainUser -User DomainAdmin -AccessRights FullAccess -InheritanceType All -AutoMapping $false
|
||||
“Add-MailboxPermission -Identity DomainUser -User DomainAdmin -AccessRights FullAccess -InheritanceType All -AutoMapping $false”
|
||||
using Exchange Management Shell.
|
||||
Without this, synchronization will not work.
|
||||
Please, add this comment to the FAQ.Exchange.txt
|
||||
(done!)
|
||||
|
||||
======================================================================
|
||||
Q. How to migrate from or to Exchange 2003 with an admin/authuser account?
|
||||
Q. How to migrate from or to Office 365 with an admin/authuser account?
|
||||
|
||||
Note from Yago Torres Fernandez:
|
||||
(a working command using admin/authuser on host2 Office 365)
|
||||
|
||||
imapsync ... --authuser2 user_admin@domain.com --user2 user_to_be_migrated@domain.com ^
|
||||
--password2 XXXX --ssl2 ^
|
||||
|
||||
but previously in Office365 you must do something like that, using powershell:
|
||||
|
||||
Add-MailboxPermission -identity user_to_be_migrated@domain.com -user user_admin@domain.com -accessrights fullaccess -inheritancetype all
|
||||
|
||||
PLAIN authentication is the only way to go with --authuser1 for now.
|
||||
So don't use --authmech1 SOMETHING with --authuser1 admin_user,
|
||||
it will not work.
|
||||
Same behavior with the --authuser2 option.
|
||||
|
||||
Note from Martin Paulucci:
|
||||
I had to remove the domain part for the user
|
||||
but not for the admin. Example:
|
||||
|
||||
imapsync ... --authuser2 user_admin@domain.com --user2 user_to_be_migrated
|
||||
|
||||
See also:
|
||||
http://www.linux-france.org/prj/imapsync_list/msg02203.html
|
||||
|
||||
======================================================================
|
||||
Q. How to migrate from or to Exchange 2003 with an admin/authuser
|
||||
account?
|
||||
|
||||
R. Thomas Edgar wrote the following
|
||||
|
||||
@ -588,7 +669,7 @@ In case you are not aware:
|
||||
omitted in our case
|
||||
- Use --debugimap when testing initial connectivity, if necessary
|
||||
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Q. Couldn't create folder [trash] "Mailbox already exists".
|
||||
|
||||
R. Some servers take care about character case in folder names,
|
||||
@ -613,7 +694,7 @@ R. Some servers take care about character case in folder names,
|
||||
imapsync ... --regextrans2 "s/^trash$/Trash/"
|
||||
|
||||
If there are two folders Trash and trash on host1 then both
|
||||
will be merged into only one Trash folder on host2.
|
||||
will be merge into only one Trash folder on host2.
|
||||
In case option --delete2 is used the regextans2 above becomes
|
||||
mandatory, otherwise imapsync will sync messages from the
|
||||
first Trash and then delete them when syncing trash.
|
||||
@ -630,9 +711,8 @@ R1. Be sure to have at least Exchange 2010 SP2 Rollup 5
|
||||
https://tribalchicken.net/imap-sync-issues-with-exchange-2010/
|
||||
|
||||
R2. See also the Outlook side (thanks to Martin Hochreiter for this solution)
|
||||
by changing Archive to sent/receive date
|
||||
https://www.howto-outlook.com/faq/archivenotworking.htm
|
||||
https://web.archive.org/web/20190914063435/http://www.howto-outlook.com/faq/archivenotworking.htm
|
||||
by changing Archive to sent/receive date
|
||||
|
||||
It's often shorter to change one server than thousands clients
|
||||
so R1 might be easier to do.
|
||||
@ -656,7 +736,7 @@ R2. Other solution
|
||||
Two users succeeded by using "MS Transporter Suite" (which is closed
|
||||
expensive non-free software).
|
||||
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Q. Exchange 2007 folders ending with a space cause an imapsync crash.
|
||||
"Could not select: socket closed while reading data from server"
|
||||
|
||||
@ -671,5 +751,5 @@ Q. How to sync from Microsoft Exchange 2000 IMAP4rev1 server?
|
||||
R. imapsync ... --prefix1 "INBOX."
|
||||
|
||||
|
||||
======================================================================
|
||||
======================================================================
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,68 +0,0 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.FirstClass.txt,v 1.1 2021/01/26 14:03:58 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.FirstClass.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Imapsync tips for the FirstClass IMAP server.
|
||||
=======================================================================
|
||||
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. From FirstClass to XXX
|
||||
http://www.firstclass.com/
|
||||
|
||||
R. Migrating from FirstClass is not easy because FirstClass, strangely,
|
||||
does not show all messages via IMAP. To make it show all messages,
|
||||
a trick, painful to follow by hand, is moving emails
|
||||
out and back in, for each folder. May be it can be done by a script.
|
||||
|
||||
FirstClass releases prior to release 12 do not shows the "Sent"
|
||||
folder in IMAP but FirstClass release 12 shows it.
|
||||
I advice you to upgrade to FirstClass release 12 before leaving it
|
||||
with imapsync or another imap tool.
|
||||
|
||||
Here is a command line used to migrate from FirtClass release 12:
|
||||
|
||||
imapsync ... \
|
||||
--tmpdir /var/tmp --usecache \
|
||||
--useheader Message-ID \
|
||||
--idatefromheader \
|
||||
--addheader \
|
||||
--regextrans2 "s,(/|^) +,\$1,g" --regextrans2 "s, +(/|$),\$1,g" \
|
||||
--regextrans2 "s/[\^]/_/g" \
|
||||
--regextrans2 "s/['\"\\\\]/_/g" \
|
||||
--regextrans2 "s,&AC8-,-,g" \
|
||||
--regextrans2 "s,&APg-,oe,g"
|
||||
|
||||
On Windows:
|
||||
imapsync.exe ... ^
|
||||
--automap ^
|
||||
--usecache ^
|
||||
--useheader Message-ID ^
|
||||
--idatefromheader ^
|
||||
--addheader ^
|
||||
--regextrans2 "s,(/|^) +,$1,g" ^
|
||||
--regextrans2 "s, +(/|$),$1,g" ^
|
||||
--regextrans2 "s/[\^]/_/g" ^
|
||||
--regextrans2 "s/['\\]/_/g" ^
|
||||
--regextrans2 "s,^&AC8-,-,g" ^
|
||||
--regextrans2 "s,^&APg-,oe,g"
|
||||
|
||||
|
||||
Special thanks to Kristian Wind and Joey Alexander for helping me
|
||||
writing this FAQ item.
|
||||
See also this worth reading discussion in a Zimbra forum:
|
||||
https://web.archive.org/web/20120627043731/http://www.zimbra.com/forums/migration/20349-help-needed-migrating-firstclass.html
|
||||
|
||||
Another advice with FirstClass as host1, do not use --delete1emptyfolders since
|
||||
it will destroy all subfolders of any empty folder. This is a FirstClass bug:
|
||||
when asked to list a non-empty folder it says it has no children while it does
|
||||
have ones.
|
||||
See the details and explanations at
|
||||
https://github.com/imapsync/imapsync/issues/207
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Flags.txt,v 1.28 2022/06/22 17:07:35 gilles Exp gilles $
|
||||
$Id: FAQ.Flags.txt,v 1.21 2019/03/08 19:04:32 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -22,9 +22,6 @@ 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
|
||||
@ -44,8 +41,6 @@ Q. Is it possible to sync labels and stars made by Thunderbird to
|
||||
Exchange categories? Or a way in Outlook to show labels created by
|
||||
Thunderbird?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
=======================================================================
|
||||
Q. How to debug flag issues?
|
||||
|
||||
@ -177,30 +172,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?
|
||||
|
||||
R. It depends on the destination server.
|
||||
|
||||
a) If the destination server honours the "PERMANENTFLAGS \*"
|
||||
directive (meaning it accepts any flag) or no PERMANENTFLAGS at all
|
||||
a) If the destination server honours the "PERMAENTFLAGS \*"
|
||||
directive (meaning it accepts any flag) or no PERMAENTFLAGS at all
|
||||
then imapsync synchronizes all flags except the \Recent flag
|
||||
(RFC 3501 says about \Recent flag "This flag can not be
|
||||
altered by the client.").
|
||||
|
||||
b) If the destination server honours the "PERMANENTFLAGS without the
|
||||
b) If the destination server honours the "PERMAENTFLAGS without the
|
||||
special "\*" then imapsync synchronizes only the flags listed
|
||||
in PERMANENTFLAGS.
|
||||
|
||||
@ -222,7 +205,7 @@ On Unix:
|
||||
|
||||
imapsync ... --regexflag 's/\\FORWARDED//gi'
|
||||
|
||||
or (on Unix)
|
||||
or
|
||||
|
||||
imapsync ... --regexflag "s/\\\\FORWARDED//gi"
|
||||
|
||||
@ -234,18 +217,11 @@ Unix: imapsync ... --regexflag 's/\\Indexed//gi'
|
||||
Windows: imapsync.exe ... --regexflag "s/\\ATTACHED//gi"
|
||||
Unix: imapsync ... --regexflag 's/\\ATTACHED//gi'
|
||||
|
||||
Removing usually problematic flags in one line:
|
||||
All usually problematic flags in one line:
|
||||
|
||||
Windows: imapsync.exe ... --regexflag "s/\\FORWARDED|\\Indexed|\\ATTACHED|\\RECEIPTCHECKED//gi"
|
||||
Unix: imapsync ... --regexflag 's/\\FORWARDED|\\Indexed|\\ATTACHED|\\RECEIPTCHECKED//gi'
|
||||
Windows: imapsync.exe ... --regexflag "s/\\FORWARDED|\\Indexed|\\ATTACHED//gi"
|
||||
Unix: imapsync ... --regexflag 's/\\FORWARDED|\\Indexed|\\ATTACHED//gi'
|
||||
|
||||
Removing all problematic flags I've seen so far in one line:
|
||||
Windows: imapsync.exe ... --regexflag "s/\\RECEIPTCHECKED|\\Indexed|\\X-EON-HAS-ATTACHMENT|\\UNSEEN|\\ATTACHED|\\X-HAS-ATTACH|\\FORWARDED|\\FORWARD|\\X-FORWARDED|\\\$FORWARDED|\\PRIORITY|\\READRCPT//g"
|
||||
Unix: imapsync ... --regexflag 's/\\RECEIPTCHECKED|\\Indexed|\\X-EON-HAS-ATTACHMENT|\\UNSEEN|\\ATTACHED|\\X-HAS-ATTACH|\\FORWARDED|\\FORWARD|\\X-FORWARDED|\\\$FORWARDED|\\PRIORITY|\\READRCPT//g'
|
||||
|
||||
Removing all flags but the standard ones from the IMAP RFC:
|
||||
Windows: imapsync.exe ... --regexflag "s/.*?(?:(\\(?:Answered|Flagged|Deleted|Seen|Draft)\s?)|$)/defined($1)?$1:q()/eg"
|
||||
Unix: imapsync ... --regexflag 's/.*?(?:(\\(?:Answered|Flagged|Deleted|Seen|Draft)\s?)|$)/defined($1)?$1:q()/eg'
|
||||
|
||||
=======================================================================
|
||||
Q. How to convert flags with $ to \ character?
|
||||
@ -320,8 +296,7 @@ You can try --nofilterflags straightaway without the
|
||||
"other thunderbird" proposal.
|
||||
|
||||
There is also the possibility to map flags across servers
|
||||
with the option --regexflag. See some --regexflag examples
|
||||
above.
|
||||
with --regexflags
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Folders_Mapping.txt,v 1.23 2021/04/28 23:42:04 gilles Exp gilles $
|
||||
$Id: FAQ.Folders_Mapping.txt,v 1.20 2019/07/27 20:04:57 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -11,93 +11,25 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt
|
||||
Imapsync tips about changing folders names.
|
||||
=======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
By default, imapsync syncs all folders, one by one, in alphanumeric order.
|
||||
|
||||
Q. What is the imapsync default behaviour with folders?
|
||||
By default, folders names from host1 are reproduced identical on host2,
|
||||
except for the prefix and the separator which are automatically adapted
|
||||
for host2.
|
||||
|
||||
Q. What encoding imapsync uses to deal with folder names?
|
||||
|
||||
Q. How can I encode folder names for imapsync without getting a headache?
|
||||
|
||||
Q. What are the easy ways to change folder names?
|
||||
|
||||
Q. What should I know before playing with the --regextrans2 option?
|
||||
|
||||
Q. How to remove the string "INBOX." in the name of destination folders?
|
||||
|
||||
Q. How to change only INBOX name to Inbox_Migrated?
|
||||
|
||||
Q. How to sync all folders to a single INBOX folder?
|
||||
|
||||
Q. How to sync all folders to a single WHOLE folder?
|
||||
|
||||
Q. How to sync a complete account in a subfolder called FOO?
|
||||
|
||||
Q. How to substitute all characters dot "." by underscores "_" ?
|
||||
|
||||
Q. How to substitute all doublequotes " by underscores _ ?
|
||||
|
||||
Q. How to substitute all characters * % . and # by underscores _ ?
|
||||
|
||||
Q. How to change folder names like this:
|
||||
[mail/Sent Items] -> [Sent]
|
||||
[mail/Test] -> [INBOX/Test]
|
||||
[mail/Test2] -> [INBOX/Test2]
|
||||
|
||||
Q. Is it possible to synchronize all messages from one server to
|
||||
another without recreating the folder structure and the target server.
|
||||
|
||||
Q. I would like to move emails from InBox to a sub-folder called,
|
||||
say "2010-INBOX" based on the date. Like all emails received in the
|
||||
year 2010 should be moved to the folder called "2010-INBOX".
|
||||
|
||||
Q. How to sync a complete account in a subfolder called FOO,
|
||||
the hard way?
|
||||
|
||||
Q. How to transform all folder names to lowercase?
|
||||
|
||||
Q. How to transform all folder names to uppercase?
|
||||
|
||||
Q. How to transform all folder names to lowercase, except the first
|
||||
character in uppercase?
|
||||
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. What is the imapsync default behaviour with folders?
|
||||
|
||||
R. Imapsync syncs all folders, one by one, in alphanumeric order,
|
||||
reproducing their name identical from the source account at host1 to
|
||||
the destination account at host2, except for the prefix and the
|
||||
separator which are automatically adapted for host2.
|
||||
|
||||
=======================================================================
|
||||
Q. What encoding imapsync uses to deal with folder names?
|
||||
|
||||
|
||||
R. The IMAP protocol has a specific way to code folders names,
|
||||
The IMAP protocol has a specific way to code folders names,
|
||||
especially when these names use non-ascii 7bit characters.
|
||||
This encoding is called utf7imap.
|
||||
|
||||
Imapsync uses the same encoding as IMAP, it uses utf7imap.
|
||||
Imapsync uses the same encoding as IMAP: utf7imap.
|
||||
|
||||
=======================================================================
|
||||
Q. How can I encode folder names for imapsync without getting a headache?
|
||||
|
||||
|
||||
R. In order to well specify folders names on the command line, imapsync
|
||||
prints the complete folder list of both sides at the beginning
|
||||
of each run.
|
||||
In order to well specify folders names on the command line, imapsync
|
||||
prints the complete folder list of both sides at the beginning of each run.
|
||||
|
||||
The left column is the encoding you have to use, without the first enclosing
|
||||
square brackets [], the right column is the human utf8 view.
|
||||
|
||||
=======================================================================
|
||||
Q. What are the easy ways to change folder names?
|
||||
|
||||
R. This document gives most examples with the powerful but complex
|
||||
This document gives most examples with the powerful but complex
|
||||
option --regextrans2. Before using --regextrans2 you should
|
||||
consider using --automap and --f1f2 because they are simpler
|
||||
to understand and use.
|
||||
@ -115,10 +47,8 @@ to understand and use.
|
||||
Add --debug to see what's really going on.)
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. What should I know before playing with the --regextrans2 option?
|
||||
|
||||
The things to know and understand before playing with --regextrans2 are:
|
||||
Things to know and understand before playing with --regextrans2
|
||||
|
||||
*) --regextrans2 is used to transform folders names.
|
||||
|
||||
@ -171,60 +101,39 @@ Here
|
||||
ETA calculation and it's a supplementary check on folders.
|
||||
|
||||
=======================================================================
|
||||
Q. How to remove the string "INBOX." in the name of destination folders?
|
||||
Q. Give examples about --regextrans2
|
||||
|
||||
|
||||
R. To remove "INBOX." in the name of destination folders:
|
||||
Examples:
|
||||
|
||||
On Linux:
|
||||
1) To remove INBOX. in the name of destination folders
|
||||
|
||||
imapsync ... --regextrans2 's/^INBOX\.(.+)/$1/'
|
||||
|
||||
On Windows:
|
||||
2) To change only INBOX to Inbox_Migrated
|
||||
|
||||
imapsync ... --regextrans2 "s/^INBOX\.(.+)/$1/"
|
||||
|
||||
=======================================================================
|
||||
Q. How to change only INBOX name to Inbox_Migrated?
|
||||
|
||||
R.
|
||||
imapsync ... --regextrans2 's{^INBOX$}{Inbox_Migrated}'
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to sync all folders to a single INBOX folder?
|
||||
|
||||
R.
|
||||
2a) To sync all folders to INBOX
|
||||
|
||||
imapsync ... --regextrans2 "s/.*/INBOX/"
|
||||
|
||||
=======================================================================
|
||||
Q. How to sync all folders to a single WHOLE folder?
|
||||
|
||||
R.
|
||||
2b) To sync a complete account in a subfolder called FOO
|
||||
|
||||
imapsync ... --regextrans2 "s,.*,WHOLE,"
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to sync a complete account in a subfolder called FOO?
|
||||
|
||||
R. With imapsync release 1.641 and former, simply use:
|
||||
With imapsync release 1.641 and former, simply use
|
||||
|
||||
imapsync ... --subfolder2 FOO
|
||||
|
||||
Examples to this subfolder problem for previous releases
|
||||
|
||||
Examples to this subfolder problem for any release
|
||||
can be seen below, in another Q/R section.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to substitute all characters dot "." by underscores "_" ?
|
||||
|
||||
R.
|
||||
3) to substitute all characters dot "." by underscores "_"
|
||||
--regextrans2 "s,\.,_,g"
|
||||
|
||||
=======================================================================
|
||||
Q. How to substitute all doublequotes " by underscores _ ?
|
||||
3b) to substitute all doublequotes " by underscores _
|
||||
|
||||
On Linux/Unix:
|
||||
|
||||
@ -234,8 +143,7 @@ On Windows:
|
||||
|
||||
--regextrans2 s,\^",_,g
|
||||
|
||||
=======================================================================
|
||||
Q. How to substitute all characters * % . and # by underscores _ ?
|
||||
3c) to substitute all characters * % . and # by underscores _
|
||||
|
||||
On Linux/Unix:
|
||||
|
||||
@ -246,14 +154,13 @@ On Windows:
|
||||
--regextrans2 "tr,*%.#,_,"
|
||||
|
||||
You can increase the *%.# list by any unwanted character,
|
||||
plus, the order doesn't count. See below for &
|
||||
plus, the order doesn't count. See 3d) for &
|
||||
|
||||
It is a bad idea to substitute & characters since &
|
||||
3d) It is a bad idea to substitute & characters since &
|
||||
is a character to encode non-ascii characters in IMAP folder names.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to change folder names like this:
|
||||
4) to change folder names like this:
|
||||
[mail/Sent Items] -> [Sent]
|
||||
[mail/Test] -> [INBOX/Test]
|
||||
[mail/Test2] -> [INBOX/Test2]
|
||||
@ -263,56 +170,12 @@ On Linux/Unix:
|
||||
--regextrans2 's,^mail/Sent Items$,Sent,' \
|
||||
--regextrans2 's,^mail/,INBOX/,'
|
||||
|
||||
a) I want folders 'Sent', 'Sent Messages', 'Gesendet' from host1
|
||||
to be merged to folder 'Sent' on host2.
|
||||
|
||||
--regextrans2 "s{Sent|Sent Messages|Gesendet}{Sent}"
|
||||
|
||||
b) I do not want this rule a) to apply to any subfolders,
|
||||
e.g. 'folder/Sent' or 'folder/Sent Messages' etc. but only
|
||||
basefolders.
|
||||
|
||||
So you have to add an anchor character ^ meaning "beginning of the string",
|
||||
and an anchor character $ meaning "end of the string" like this:
|
||||
|
||||
--regextrans2 's{^Sent$|^Sent Messages$|^Gesendet$}{Sent}'
|
||||
|
||||
c) I want just a) to be combined with a subfolder, for example:
|
||||
|
||||
INBOX -> Subfolder/INBOX
|
||||
Sent -> Subfolder/Sent
|
||||
Sent Messages -> Subfolder/Sent
|
||||
Gesendet -> Subfolder/Sent
|
||||
folder/Sent -> Subfolder/folder/Sent
|
||||
folder/Sent Messages -> Subfolder/folder/Sent
|
||||
folder/Gesendet -> Subfolder/folder/Sent
|
||||
|
||||
To achieve this, use:
|
||||
|
||||
--subfolder2 Subfolder --regextrans2 's{Sent|Sent Messages|Gesendet}{Sent}'
|
||||
|
||||
d) I want a) and b) to be combined with a subfolder, for example:
|
||||
|
||||
INBOX -> Subfolder/INBOX
|
||||
Sent -> Subfolder/Sent
|
||||
Sent Messages -> Subfolder/Sent
|
||||
Gesendet -> Subfolder/Sent
|
||||
folder/Sent -> Subfolder/folder/Sent
|
||||
folder/Sent Messages -> Subfolder/folder/Send Messages
|
||||
folder/Gesendet -> Subfolder/folder/Gesendet
|
||||
...
|
||||
|
||||
This one is trickier to achieve:
|
||||
|
||||
--subfolder2 Subfolder --regextrans2 's{^Subfolder/Sent$|^Subfolder/Sent Messages$|^Subfolder/Gesendet$}{Subfolder/Sent}'
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. Is it possible to synchronize all messages from one server to
|
||||
another without recreating the folder structure and the target server.
|
||||
another without recreating the folder structure and the target server.
|
||||
|
||||
R. Yes. This question has already been answered but a little of
|
||||
redundancy can't hurt, can he?
|
||||
R. Yes.
|
||||
|
||||
For example, to synchronize all messages in all folders on host1
|
||||
to folder INBOX only on host2:
|
||||
@ -362,10 +225,9 @@ b) Manually:
|
||||
3) Cut/paste in INBOX.2010-INBOX
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to sync a complete account in a subfolder called FOO,
|
||||
the hard way?
|
||||
the hard way.
|
||||
|
||||
R0. See the easy above using --subfolder2
|
||||
|
||||
@ -396,95 +258,24 @@ On Linux/Unix:
|
||||
On Windows:
|
||||
|
||||
--regextrans2 "s,(.*),FOO/$1,"
|
||||
|
||||
or:
|
||||
|
||||
=======================================================================
|
||||
Q. How to transform all folder names to lowercase?
|
||||
c) Any separator, any prefix solution, FOO is the subfolder:
|
||||
|
||||
R.
|
||||
It is a complicated line because every case is taken into account.
|
||||
Type it in one line (or with the \ at the end of first line on Unix shells.
|
||||
|
||||
First, some documentation to understand how the regexes work.
|
||||
perldoc perlre says:
|
||||
On Linux/Unix:
|
||||
|
||||
\l lowercase next char (think vi)
|
||||
\u uppercase next char (think vi)
|
||||
\L lowercase till \E (think vi)
|
||||
\U uppercase till \E (think vi)
|
||||
\E end case modification (think vi)
|
||||
\Q quote (disable) pattern metacharacters till \E
|
||||
|
||||
|
||||
On Linux:
|
||||
|
||||
If the separator on host2 is the character slash "/", use:
|
||||
|
||||
--regextrans2 's,([^/]+),\L$1\E,g'
|
||||
|
||||
If the separator on host2 is the character dot ".", use:
|
||||
|
||||
--regextrans2 's,([^.]+),\L$1\E,g'
|
||||
--regextrans2 's,${h2_prefix}(.*),${h2_prefix}FOO${h2_sep}$1,' \
|
||||
--regextrans2 's,^INBOX$,${h2_prefix}FOO${h2_sep}INBOX,'
|
||||
|
||||
On Windows:
|
||||
|
||||
If the separator on host2 is the character slash "/", use:
|
||||
|
||||
--regextrans2 "s,([^/]+),\L$1\E,g"
|
||||
|
||||
If the separator on host2 is the character dot ".", use:
|
||||
|
||||
--regextrans2 "s,([^.]+),\L$1\E,g"
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to transform all folder names to uppercase?
|
||||
|
||||
R.
|
||||
|
||||
On Linux:
|
||||
|
||||
If the separator on host2 is the character slash "/", use:
|
||||
|
||||
--regextrans2 's,([^/]+),\U$1\E,g'
|
||||
|
||||
If the separator on host2 is the character dot ".", use:
|
||||
|
||||
--regextrans2 's,([^.]+),\U$1\E,g'
|
||||
|
||||
On Windows:
|
||||
|
||||
If the separator on host2 is the character slash "/", use:
|
||||
|
||||
--regextrans2 "s,([^/]+),\U$1\E,g"
|
||||
|
||||
If the separator on host2 is the character dot ".", use:
|
||||
|
||||
--regextrans2 "s,([^.]+),\U$1\E,g"
|
||||
|
||||
=======================================================================
|
||||
Q. How to transform all folder names to lowercase, except the first
|
||||
character in uppercase?
|
||||
|
||||
R.
|
||||
|
||||
On Linux:
|
||||
|
||||
If the separator on host2 is the character slash "/", use:
|
||||
|
||||
--regextrans2 's,([^/]+),\u\L$1\E,g'
|
||||
|
||||
If the separator on host2 is the character dot ".", use:
|
||||
|
||||
--regextrans2 's,([^.]+),\u\L$1\E,g'
|
||||
|
||||
On Windows:
|
||||
|
||||
If the separator on host2 is the character slash "/", use:
|
||||
|
||||
--regextrans2 "s,([^/]+),\u\L$1\E,g"
|
||||
|
||||
If the separator on host2 is the character dot ".", use:
|
||||
|
||||
--regextrans2 "s,([^.]+),\u\L$1\E,g"
|
||||
|
||||
--regextrans2 "s,${h2_prefix}(.*),${h2_prefix}FOO${h2_sep}$1," ^
|
||||
--regextrans2 "s,^INBOX$,${h2_prefix}FOO${h2_sep}INBOX,"
|
||||
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Folders_Selection.txt,v 1.12 2022/03/22 11:12:32 gilles Exp gilles $
|
||||
$Id: FAQ.Folders_Selection.txt,v 1.8 2019/07/27 20:04:46 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -10,34 +10,6 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Selection.txt
|
||||
Imapsync tips to select folders.
|
||||
=======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. What is the default imapsync behaviour about folders?
|
||||
|
||||
Q. What are the options to select folders?
|
||||
|
||||
Q. Is it ok to use --subfolder1 and --subfolder2 to just select folders?
|
||||
|
||||
Q. How can I sync only one folder?
|
||||
|
||||
Q. What are --subscribe and --subscribed for, and how can they be used?
|
||||
|
||||
Q. How to exclude a folder hierarchy like "public"?
|
||||
|
||||
Q. How to exclude only the INBOX folder?
|
||||
|
||||
Q. How to exclude folders matching SPAM no matter the case,
|
||||
aka, how to be case insensitive?
|
||||
|
||||
Q. How to make option --folder "MyFolder" be recursive?
|
||||
|
||||
Q. How to change folders names or move them elsewhere?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
=======================================================================
|
||||
Q. What is the default imapsync behaviour about folders?
|
||||
|
||||
By default, Imapsync syncs all folders, one by one, in alphanumeric order.
|
||||
|
||||
The IMAP protocol has a specific way to code folders names,
|
||||
@ -53,52 +25,6 @@ The left column is the encoding you have to use, without the first enclosing
|
||||
square brackets [], the right column is the human utf8 view.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. What are the options to select folders?
|
||||
|
||||
R. From https://imapsync.lamiral.info/README
|
||||
|
||||
OPTIONS/folders
|
||||
|
||||
--folder str : Sync this folder.
|
||||
--folder str : and this one, etc.
|
||||
--folderrec str : Sync this folder recursively.
|
||||
--folderrec str : and this one, etc.
|
||||
|
||||
--folderfirst str : Sync this folder first. Ex. --folderfirst "INBOX"
|
||||
--folderfirst str : then this one, etc.
|
||||
--folderlast str : Sync this folder last. --folderlast "[Gmail]/All Mail"
|
||||
--folderlast str : then this one, etc.
|
||||
|
||||
--nomixfolders : Do not merge folders when host1 is case-sensitive
|
||||
while host2 is not (like Exchange). Only the first
|
||||
similar folder is synced. Example: with folders
|
||||
"Sent", "SENT" and "sent" on host1, only "Sent"
|
||||
will be synced to host2.
|
||||
|
||||
--skipemptyfolders : Empty host1 folders are not created on host2.
|
||||
|
||||
--include reg : Sync folders matching this regular expression
|
||||
--include reg : or this one, etc.
|
||||
If both --include --exclude options are used, then
|
||||
include is done before.
|
||||
--exclude reg : Skips folders matching this regular expression
|
||||
Several folders to avoid:
|
||||
--exclude 'fold1|fold2|f3' skips fold1, fold2 and f3.
|
||||
--exclude reg : or this one, etc.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. Is it ok to use --subfolder1 and --subfolder2 to just select folders?
|
||||
|
||||
R. No.
|
||||
|
||||
If you do:
|
||||
|
||||
imapsync ... --subfolder1 Foo --subfolder2 Foo
|
||||
|
||||
then it ends up with all messages from Foo going to Foo/INBOX
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How can I sync only one folder?
|
||||
@ -130,15 +56,23 @@ R. In the IMAP protocol each user can subscribe to one or more folders.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to exclude a folder hierarchy like "public"?
|
||||
Q. I want to exclude a folder hierarchy like "public"
|
||||
|
||||
R. Use:
|
||||
|
||||
--exclude "public"
|
||||
--exclude "^public\."
|
||||
or maybe
|
||||
--exclude '^"public\.'
|
||||
|
||||
In the example given the character "." is the folder separator, you
|
||||
can omit it. Just take the string as it appears on the imapsync
|
||||
output line :
|
||||
|
||||
From folders list : [INBOX] [public.dreams] [etc.]
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to exclude only the INBOX folder?
|
||||
Q. I want to exclude only INBOX
|
||||
|
||||
R. Use:
|
||||
|
||||
@ -149,8 +83,8 @@ A good way to see what will be done is to first use:
|
||||
imapsync ... --exclude "^INBOX$" --justfolders --nofoldersizes --dry
|
||||
|
||||
=======================================================================
|
||||
Q. How to exclude folders matching SPAM no matter the case,
|
||||
aka, how to be case insensitive?
|
||||
Q. I want to exclude folders matching SPAM no matter the case,
|
||||
aka how to be case insensitive
|
||||
|
||||
R. Use:
|
||||
|
||||
@ -162,7 +96,7 @@ A good way to see what will be done is to first use:
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to make option --folder "MyFolder" be recursive?
|
||||
Q. I want the --folder "MyFolder" option be recursive.
|
||||
|
||||
Two solutions:
|
||||
|
||||
@ -174,11 +108,5 @@ R2. Use --include "^MyFolder"
|
||||
Then the folder "MyFolder" and all its subfolders will be handled
|
||||
and only them.
|
||||
|
||||
=======================================================================
|
||||
Q. How to change folders names or move them elsewhere?
|
||||
|
||||
R. Read the document FAQ.Folders_Mapping.txt also available at
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Folders_Sizes.txt,v 1.7 2022/04/23 13:45:15 gilles Exp gilles $
|
||||
$Id: FAQ.Folders_Sizes.txt,v 1.3 2019/07/25 15:57:04 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -13,13 +13,13 @@ Questions answered in this FAQ are:
|
||||
|
||||
Q. How can I know the size of all folders before launching a sync?
|
||||
|
||||
Q. After a sync, the folders sizes and the number of messages don't
|
||||
match between the source mailbox on host1 and the destination
|
||||
mailbox on host2.
|
||||
Why? What can I do about it?
|
||||
Q. The folders sizes and the number of messages don't match between
|
||||
the source mailbox and the destination mailbox.
|
||||
Why and what can I do?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How can I know the size of all folders before launching a sync?
|
||||
|
||||
@ -27,18 +27,14 @@ R. Use --justfoldersizes option.
|
||||
|
||||
With the --justfoldersizes option, imapsync evaluates and displays the
|
||||
folders sizes on both sides and then exits without doing any transfer.
|
||||
It also presents the total size of each account, the number of messages,
|
||||
the biggest message size, the number of folders.
|
||||
|
||||
Example:
|
||||
|
||||
imapsync ... --justfoldersizes
|
||||
|
||||
=======================================================================
|
||||
Q. After a sync, the folders sizes and the number of messages don't
|
||||
match between the source mailbox on host1 and the destination
|
||||
mailbox on host2.
|
||||
Why? What can I do about it?
|
||||
Q. The folders sizes and the number of messages don't match between
|
||||
the source mailbox on host1 and the destination mailbox on host2.
|
||||
Why and what can I do?
|
||||
|
||||
R. There are several reasons to explain the different counts between
|
||||
source and destination after a sync.
|
||||
@ -59,26 +55,22 @@ R. There are several reasons to explain the different counts between
|
||||
4) There are duplicate messages on host1. Imapsync doesn't sync
|
||||
duplicates by default. But it counts them and presents the number
|
||||
found at the end on the line "Messages found duplicate on host1".
|
||||
To sync duplicates, use the option --syncduplicates
|
||||
To sync duplicates, use option --useuid
|
||||
--useuid has some caveats. See the documant FAQ.Duplicates.txt
|
||||
for details about it at
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Duplicates.txt
|
||||
|
||||
5) There are 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
|
||||
5) There are duplicate messages on host2 so host2 is
|
||||
bigger than host1. Solution: use --delete2duplicates to delete
|
||||
the host2 duplicates.
|
||||
|
||||
7) Cosmic rays...
|
||||
6) 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
|
||||
three final lines:
|
||||
The important part to take into account is the last lines of imapsync
|
||||
if you encounter the line:
|
||||
"The sync looks good, all X identified messages in host1 are on host2."
|
||||
and also no unidentified messages.
|
||||
|
||||
"The sync looks good, all xxxx identified messages in host1 are on host2."
|
||||
"There is no unidentified message on host1."
|
||||
"Detected 0 errors"
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,80 +0,0 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Fun_Things.txt,v 1.2 2021/10/15 13:37:05 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Fun_Things.txt
|
||||
|
||||
=======================================================================
|
||||
Imapsync fun things to do with
|
||||
=======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. How can I have a daily digest of my mailbox?
|
||||
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
=======================================================================
|
||||
Q. How can I have a daily digest of my mailbox?
|
||||
|
||||
R. Use the same account as source and destination (not mandatory)
|
||||
|
||||
imapsync \
|
||||
--host1 imap.example.com --user1 foo --password1 secret \
|
||||
--host2 imap.example.com --user2 foo --password2 secret \
|
||||
--folder INBOX --maxage 1 --dry --nodry1 --debugcontent \
|
||||
--truncmess 1000 --f1f2 INBOX=Unused
|
||||
|
||||
Some explanations on the options suggested:
|
||||
|
||||
--folder INBOX to only focus on the folder INBOX
|
||||
|
||||
--maxage 1 to select messages less old than 1 day
|
||||
|
||||
--dry --nodry1 to avoid really syncing the messages
|
||||
|
||||
--debugcontent to display the content
|
||||
|
||||
--truncmess 1000 to display only the first 1000 bytes
|
||||
|
||||
--f1f2 INBOX=Unused to force imapsync to do something.
|
||||
Since it is the same mailbox as source and destination,
|
||||
imapsync usually doesn't sync the messages as they are
|
||||
already at the destination. The folder Unused has to
|
||||
exist, otherwise imapsync won't display the messages.
|
||||
|
||||
|
||||
If you pipe this command with a filter like egrep, it becomes like
|
||||
magic:
|
||||
|
||||
imapsync \
|
||||
--host1 imap.example.com --user1 foo --password1 secret \
|
||||
--host2 imap.example.com --user2 foo --password2 secret \
|
||||
--folder INBOX --maxage 1 --dry --nodry1 --debugcontent \
|
||||
--truncmess 1000 --f1f2 INBOX=Unused \
|
||||
| egrep 'From:|To:|Subject:|Date:|=====|msg '
|
||||
|
||||
Output example:
|
||||
|
||||
$RCSfile: FAQ.Fun_Things.txt,v $ $Revision: 1.2 $ $Date: 2021/10/15 13:37:05 $
|
||||
msg INBOX/22359 copying to INBOX.Fake (not really since --dry mode) ETA: vendredi 15 octobre 2021-10-15 15:31:38 +0200 CEST 57 s 38/38 msgs left
|
||||
================================================================================
|
||||
Subject: test: lei7eeCh4Fulahei
|
||||
To: <tata@localhost.info>
|
||||
Date: Mon, 11 Oct 2021 11:56:05 +0200 (CEST)
|
||||
From: gilles@localhost.info (Gilles LAMIRAL)
|
||||
================================================================================
|
||||
msg INBOX/22360 copying to INBOX.Fake (not really since --dry mode) ETA: vendredi 15 octobre 2021-10-15 15:31:38 +0200 CEST 57 s 37/38 msgs left
|
||||
================================================================================
|
||||
Subject: test: yahShee3Ohvu9mai
|
||||
To: <tata@localhost.info>
|
||||
Date: Mon, 11 Oct 2021 11:56:05 +0200 (CEST)
|
||||
From: gilles@localhost.info (Gilles LAMIRAL)
|
||||
================================================================================
|
||||
|
||||
Thanks to John Fedewa for this trick!
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
# $Id: FAQ.General.txt,v 1.246 2022/06/08 10:57:52 gilles Exp gilles $
|
||||
# $Id: FAQ.General.txt,v 1.242 2019/12/11 20:28:33 gilles Exp gilles $
|
||||
|
||||
=======================================================================
|
||||
General FAQ for imapsync
|
||||
@ -14,15 +14,13 @@ Questions answered in this FAQ are:
|
||||
Q. Do I need to create IMAP mailboxes at the destination platform?
|
||||
|
||||
Q. Am I forced to publish the IMAP service on the Internet since the two
|
||||
environments are not in the same location or same LAN?
|
||||
environment are not in the same location or same LAN?
|
||||
|
||||
Q. What are the most important differences between the Unix shell syntax
|
||||
and the Windows batch syntax.
|
||||
|
||||
Q. How to install imapsync?
|
||||
|
||||
Q. How to upgrade imapsync?
|
||||
|
||||
Q. How to use imapsync?
|
||||
|
||||
Q. Can you give some configuration examples?
|
||||
@ -31,11 +29,11 @@ Q. How can I have commercial support?
|
||||
|
||||
Q. How can I have gratis support?
|
||||
|
||||
Q. Where can I find old imapsync releases?
|
||||
Q. Where I can find old imapsync releases?
|
||||
|
||||
Q. Where can I find free open and gratis imapsync releases?
|
||||
Q. Where I can find free open and gratis imapsync releases?
|
||||
|
||||
Q. Is it legal to find imapsync gratis (or not) elsewhere?
|
||||
Q. Is is legal to find imapsync gratis (or not) elsewhere?
|
||||
|
||||
Q. How "Facts and figures" are known
|
||||
https://imapsync.lamiral.info/#NUMBERS
|
||||
@ -79,10 +77,17 @@ Q. Is it possible to sync also the UIDs of the IMAP server?
|
||||
|
||||
Q. The option --subscribe does not seem to work
|
||||
|
||||
Q. With huge account (many messages) when it comes to reading the
|
||||
destination server it comes out this error:
|
||||
"To Folder [INBOX.foobar] Not connected"
|
||||
What can I do?
|
||||
|
||||
Q. Can Imapsync filter Spam during the sync?
|
||||
|
||||
Q. How to migrate from uw-imap with an admin/authuser account?
|
||||
|
||||
Q. How to migrate from cyrus with an admin account?
|
||||
|
||||
Q: How to migrate from Sun Java Enterprise System / Sun One / iPlanet /
|
||||
Netscape servers with an admin account?
|
||||
|
||||
@ -98,6 +103,9 @@ Q. I want to play with headers line and --regexmess but I want to leave
|
||||
Q. My imap server does not accept a message and warns
|
||||
"Invalid header". What is the problem?
|
||||
|
||||
Q. The contact folder isn't well copied.
|
||||
How to copy the contact folder?
|
||||
|
||||
Q: How can I write an .rpm with imapsync
|
||||
|
||||
Q. Where I can read up on the various IMAP RFCs?
|
||||
@ -113,7 +121,7 @@ R. Yes!
|
||||
|
||||
=======================================================================
|
||||
Q. Am I forced to publish the IMAP service on the Internet since the two
|
||||
environments are not in the same location or same LAN?
|
||||
environment are not in the same location or same LAN?
|
||||
|
||||
R. The host where you run imapsync has to contact both servers via imap.
|
||||
You are not obliged to publish the imap service on the Internet if
|
||||
@ -171,16 +179,10 @@ any \$1 by $1 (remove the \ before $).
|
||||
=======================================================================
|
||||
Q. How to install imapsync?
|
||||
|
||||
R. Read the INSTALL files in the tarball. They are also available at
|
||||
https://imapsync.lamiral.info/#install
|
||||
and
|
||||
R. Read the INSTALL files in the tarball. also available at
|
||||
https://imapsync.lamiral.info/#doc
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
|
||||
=======================================================================
|
||||
Q. How to upgrade imapsync?
|
||||
|
||||
R. Do like a fresh installation.
|
||||
|
||||
=======================================================================
|
||||
Q. How to use imapsync?
|
||||
|
||||
@ -220,16 +222,16 @@ I help all users as long as I have time to help them all,
|
||||
users who bought the support get my help first.
|
||||
|
||||
=======================================================================
|
||||
Q. Where can I find old imapsync releases?
|
||||
Q. Where I can find old imapsync releases?
|
||||
|
||||
R. Search the internet or ask the author.
|
||||
|
||||
=======================================================================
|
||||
Q. Where can I find free open and gratis imapsync releases?
|
||||
Q. Where I can find free open and gratis imapsync releases?
|
||||
|
||||
R. Search the internet or ask the author.
|
||||
|
||||
Q. Is it legal to find imapsync gratis (or not) elsewhere?
|
||||
Q. Is is legal to find imapsync gratis (or not) elsewhere?
|
||||
|
||||
R. Yes, the license permits it
|
||||
https://imapsync.lamiral.info/NOLIMIT
|
||||
@ -287,7 +289,7 @@ R. Add also --nofoldersizes since the default behavior is to compute
|
||||
the transfer will end (ETA).
|
||||
|
||||
R. Add also --noexpungeaftereach if you use --delete1.
|
||||
But be warned that an interrupted transfer can lose messages
|
||||
But be warn that an interrupted transfer can lose messages
|
||||
on host2 in a second run if you use a (silly) combination like:
|
||||
|
||||
imapsync ... --delete1 --noexpunge1 --noexpungeaftereach --expunge2
|
||||
@ -372,7 +374,13 @@ Use --useuid then imapsync will avoid dealing with headers.
|
||||
=======================================================================
|
||||
Q. How can I try imapsync with latest Mail::IMAPClient 3.xx perl module?
|
||||
|
||||
R1 Run:
|
||||
Three solutions at least.
|
||||
|
||||
R1 - Look at the script named "i3" in the tarball, it can be used to
|
||||
run imapsync with the included Mail-IMAPClient-3.39/ wherever you
|
||||
unpacked the imapsync tarball
|
||||
|
||||
R2 Run:
|
||||
|
||||
cpanm Mail::IMAPClient # this uses cpanminus
|
||||
|
||||
@ -385,7 +393,7 @@ R1 Run:
|
||||
perl -MCPAN -e "install Mail::IMAPClient"
|
||||
|
||||
|
||||
R2 If you want to install the Perl module locally in a directory
|
||||
R3 If you want to install the Perl module locally in a directory
|
||||
|
||||
- Download latest Mail::IMAPClient 3.xx at
|
||||
http://search.cpan.org/dist/Mail-IMAPClient/
|
||||
@ -403,11 +411,11 @@ R2 If you want to install the Perl module locally in a directory
|
||||
or if imapsync is in directory /path/
|
||||
perl -I./Mail-IMAPClient-3.39/lib /path/imapsync ...
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How can I use imapsync with Mail::IMAPClient 2.2.9 perl module?
|
||||
|
||||
R. Mail::IMAPClient 2.2.9 is no longer supported.
|
||||
Help yourself.
|
||||
|
||||
=======================================================================
|
||||
Q. How to verify imapsync.exe I got is the right file bit per bit?
|
||||
@ -504,8 +512,8 @@ R. imapsync doesn't talk POP3 but I think you mean UID in IMAP.
|
||||
Q. Is it possible to sync also the UIDs of the IMAP server?
|
||||
|
||||
R. UIDs in IMAP are chosen and created by the server, not by the
|
||||
client software. imapsync is a client software command.
|
||||
So UIDs cannot be synced by any imap method.
|
||||
client software. imapsync is a client software. So UIDs cannot
|
||||
be synced by any imap method.
|
||||
|
||||
UIDs may be synced via a rsync command between the imap servers but
|
||||
it implies they are the same software, among other constraints.
|
||||
@ -518,6 +526,16 @@ R1. Use it with --subscribed
|
||||
R2. There is also the --subscribe_all option that subscribe
|
||||
to all folders on host2.
|
||||
|
||||
=======================================================================
|
||||
Q. With huge account (many messages) when it comes to reading the
|
||||
destination server it comes out this error:
|
||||
"To Folder [INBOX.foobar] Not connected"
|
||||
What can I do?
|
||||
|
||||
R. May be spending too much time on the source server, the connection
|
||||
timed out on the destination server.
|
||||
Try options --nofoldersizes
|
||||
|
||||
======================================================================
|
||||
Q. Can Imapsync filter Spam during the sync?
|
||||
|
||||
@ -542,6 +560,46 @@ R. Use the following syntax:
|
||||
imapsync ... --user1="loginuser*admin_user" --password1 "admin_user_password"
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. How to migrate from cyrus with an admin account?
|
||||
|
||||
R. Use:
|
||||
|
||||
imapsync ... \
|
||||
--authuser1 admin_user ----password1 admin_user_password \
|
||||
--user1 foo_user --ssl1
|
||||
|
||||
Instead of --ssl1 the alternative --tls1 can be used.
|
||||
With --authuser1, the option --authmech1 PLAIN is set
|
||||
automatically, you don't have to add it.
|
||||
|
||||
PLAIN authentication is the only way to go with --authuser1 for now.
|
||||
So don't use --authmech1 SOMETHING with --authuser1 admin_user,
|
||||
it will not work.
|
||||
Same behavior with the --authuser2 option.
|
||||
|
||||
Do not forget the option --ssl1 or --tls1 since PLAIN auth is only
|
||||
supported with ssl encryption most of the time. But it can
|
||||
work without --ssl1 nor --tls1 if PLAIN is permitted in clear text
|
||||
transmissions (the normal mode).
|
||||
|
||||
Add the AdminAccount to admins line in /etc/imapd.conf
|
||||
Give AdminAccount lrswipkxtecda to the Cyrus Imap account
|
||||
being migrated from, "joe" here.
|
||||
|
||||
|
||||
Here is an example:
|
||||
imapsync \
|
||||
--host1 server1 \
|
||||
--user1 joe \
|
||||
--authuser1 AdminAccount \
|
||||
--password1 AdminAccountPassword \
|
||||
--ssl1 \
|
||||
--host2 server2 \
|
||||
--user2 joe \
|
||||
--password2 joespassonserver2 \
|
||||
--exclude "^user\."
|
||||
|
||||
======================================================================
|
||||
Q: How to migrate from Sun Java Enterprise System / Sun One / iPlanet /
|
||||
Netscape servers with an admin account?
|
||||
@ -570,6 +628,20 @@ 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 <regex>: Deleted only folders matching regex.
|
||||
Example: --delete2foldersonly "/^Junk$|^INBOX.Junk$/"
|
||||
--delete2foldersbutnot <regex>: 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"
|
||||
@ -644,10 +716,23 @@ Solution e) is solution a) made by imapsync itself.
|
||||
Solutions c) and d) keep "From " lines information
|
||||
(normally it's useless to keep them)
|
||||
|
||||
Best solutions are e) or d).
|
||||
I prefer the d) solution because it fixes the issue
|
||||
and keeps the old "From" value while the e) solution removes
|
||||
the old "From" value definitively.
|
||||
Best solutions are e) or d).
|
||||
|
||||
=======================================================================
|
||||
Q. The contact folder isn't well copied.
|
||||
How to copy the contact folder?
|
||||
|
||||
R. Forget the destination server (choose the same)
|
||||
Change the script around line 1426
|
||||
# ITSD
|
||||
$new_id = $from->copy($t_fold,$f_msg);
|
||||
#$new_id = $to->append_string($t_fold,$string, $flags_f, $d);
|
||||
|
||||
and tried a copy of the mail instead an append_string. Because we are
|
||||
using the same server, we can use $from->copy Therefore we seem to not
|
||||
download and upload the message and therefore we do not have any
|
||||
format issues. And now it works fine. (Thanks to Hansjoerg.Maurer)
|
||||
|
||||
|
||||
======================================================================
|
||||
Q: How can I write an .rpm with imapsync
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Gmail.txt,v 1.92 2022/06/28 11:03:40 gilles Exp gilles $
|
||||
$Id: FAQ.Gmail.txt,v 1.65 2019/12/04 18:26:00 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -11,7 +11,6 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Gmail.txt
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
|
||||
Q. Can I use imapsync to transfer from or to Gmail accounts?
|
||||
|
||||
Q. Even after several syncs the number of messages differs
|
||||
@ -20,10 +19,6 @@ Q. Even after several syncs the number of messages differs
|
||||
|
||||
Q. How many days does it take to transfer X GB?
|
||||
|
||||
Q. What is the Gmail free maximum storage size?
|
||||
R. 15 GB in 2020. Need more?
|
||||
https://gsuite.google.com/pricing.html
|
||||
|
||||
Q. How to synchronize from Gmail to Gmail?
|
||||
|
||||
Q. How to synchronize from XXX to Gmail?
|
||||
@ -31,34 +26,14 @@ Q. How to synchronize from XXX to Gmail?
|
||||
Q. How to synchronize from Gmail to XXX?
|
||||
|
||||
Q. I can't authenticate with Gmail via IMAP
|
||||
and Gmail says
|
||||
"Please log in via your web browser"
|
||||
or it says
|
||||
"Application-specific password required: https://support.google.com/accounts/answer/185833 (Failure)"
|
||||
and Gmail says "Please log in via your web browser"
|
||||
|
||||
Q. Can not open imap connection on [imap.gmail.com]
|
||||
Unable to connect to imap.gmail.com
|
||||
|
||||
Q. I want to sync the Sent folder only, what is it on Gmail?
|
||||
Q. Can I transfer "Chat" messages with imapsync?
|
||||
|
||||
Q. From Gmail to Gmail, I want to keep Categories. What can I do?
|
||||
|
||||
Q. The context is a Gmail account at the source, but not Gmail at the
|
||||
destination. I want cross-duplicates, different Gmail folders/labels
|
||||
generating duplicate messages across folders on the destination,
|
||||
except for the "All Mail" folder.
|
||||
|
||||
Q. I can't sync more than 1000 messages in each Gmail folder.
|
||||
What can I do?
|
||||
|
||||
Q. What are the Gmail imap names of the folders
|
||||
"Sent" "Trash" "Drafts" "Junk" "Flagged" and "All"?
|
||||
|
||||
Q. Can I transfer Gmail "Chat" messages with imapsync?
|
||||
|
||||
Q. Can I safely use --useuid or --usecache for Gmail transfers?
|
||||
|
||||
Q. Can I use --syncduplicates Gmail transfers?
|
||||
Q. Can I safely use --useuid for Gmail transfers?
|
||||
|
||||
Q. Gmail does not really delete messages in folder [Gmail]/All Mail
|
||||
What happens? What can I do?
|
||||
@ -87,46 +62,43 @@ Q. Can I use imapsync to transfer from or to Gmail accounts?
|
||||
|
||||
R. Yes. But IMAP access to a Gmail account is not allowed by default so
|
||||
it has to be allowed in the Gmail configuration part:
|
||||
-> Do not go to "Manage your Google Account" (the upper right icon with your Google face)
|
||||
-> Instead, go to Gmail at https://mail.google.com/
|
||||
-> Click on Settings, the gear button on the upper right of Gmail.
|
||||
-> Click on "See all settings" at the top of the pull down menu.
|
||||
-> Go to the tab "Forwarding and POP/IMAP"
|
||||
-> Go down to "IMAP Access"
|
||||
-> Activate the radio button "Enable IMAP"
|
||||
-> Click on the button "Save changes" at the bottom of the page.
|
||||
-> Settings
|
||||
-> Forwarding and POP/IMAP
|
||||
-> IMAP Access
|
||||
-> Enable IMAP
|
||||
|
||||
That's not finished, there is also the authentication issue to consider.
|
||||
There are two different ways to authenticate to Gmail with Imapsync,
|
||||
Also, there is the authentication issue to consider.
|
||||
There are three different ways to authenticate to Gmail with Imapsync,
|
||||
either:
|
||||
|
||||
1) "App password with 2-step verification"
|
||||
* "Access for less secure apps"
|
||||
* "2-step verification"
|
||||
* XOauth
|
||||
|
||||
or
|
||||
|
||||
2) XOauth2 ready for groups on any OS or
|
||||
for individual Gmail authentication on Linux.
|
||||
|
||||
For the second one, XOauth2, see the document
|
||||
For the last one, XOauth, see the document
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.XOAUTH2.txt
|
||||
|
||||
1) "Access for less secure apps" is turned ON
|
||||
|
||||
-> Verify 2-step verification is OFF
|
||||
https://myaccount.google.com/security?hl=en&pli=1&nlr=1#signin
|
||||
-> Turn ON "Access for less secure apps"
|
||||
https://www.google.com/settings/security/lesssecureapps
|
||||
https://support.google.com/accounts/answer/6010255?hl=en
|
||||
|
||||
1) "App password with 2-step verification" is the first way to
|
||||
authenticate to Gmail with Imapsync.
|
||||
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)"
|
||||
|
||||
Go to
|
||||
https://myaccount.google.com/security
|
||||
and sign in with the account you want to transfer email to or from.
|
||||
Go to the "Signing in to Google" part of the security page and follow
|
||||
the process to activate the "2-step verification" until it is ok.
|
||||
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)
|
||||
|
||||
Then, just below "2-step verification" click on the "App passwords"
|
||||
and follow the instruction to get a 16 characters password, on the
|
||||
pull down button "Select app", choose "Other (Custom name)" and call
|
||||
it imapsync for example. Now use this this password to access the
|
||||
mailbox with imapsync.
|
||||
2) "2-step verification" is turned ON
|
||||
|
||||
The following document details what I've just described:
|
||||
Follow
|
||||
https://support.google.com/accounts/answer/185833?hl=en
|
||||
Even if Google says "Every App Password is only used once",
|
||||
it's false and the password can be used many times.
|
||||
@ -150,25 +122,18 @@ Q. How many days does it take to transfer X GB?
|
||||
R. Basically it takes X days to transfer X GB per account.
|
||||
Gmail has usage limits per day and use throttles when
|
||||
they are overtaken
|
||||
https://support.google.com/a/answer/1071518?hl=en
|
||||
http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
||||
From the previous link:
|
||||
|
||||
* Upload with IMAP: 500 MB per day.
|
||||
It's 2X days to upload X GB to Gmail, it's why I suggest to add
|
||||
--maxbytespersecond 20000 --maxbytesafter 1_000_000_000
|
||||
* it's 2X days to upload X GB to Gmail, it's why I suggest to add
|
||||
--maxbytespersecond 10000 --maxbytesafter 1_000_000_000
|
||||
for uploading messages to Gmail
|
||||
(should be --maxbytespersecond 5787 --maxbytesafter 500_000_000
|
||||
but the higher values given work well)
|
||||
|
||||
* Download with IMAP: 2500 MB per day.
|
||||
It's X/2.5 days to download X GB from Gmail, it's why I suggest to add
|
||||
--maxbytespersecond 40_000 --maxbytesafter 3_000_000_000
|
||||
* it's X/2 days to download X BG from Gmail, it's why I suggest to add
|
||||
--maxbytespersecond 20000 --maxbytesafter 1_000_000_000
|
||||
for downloading messages from Gmail
|
||||
(should be --maxbytespersecond 28_935 --maxbytesafter 2_500_000_000
|
||||
|
||||
That's empirical values that work in practice.
|
||||
Try upper values and see if they still work.
|
||||
I would be grateful if you report them to me.
|
||||
That's theoretical values that always work in practice. Try
|
||||
upper values and see if they still work.
|
||||
|
||||
How Gmail says limits are reached?
|
||||
This is either a disconnection with
|
||||
@ -188,7 +153,7 @@ imapsync \
|
||||
--password2 gmailsecret2 \
|
||||
--gmail1 --gmail2
|
||||
|
||||
Or, replacing what does --gmail1 --gmail2 (values are from imapsync 2.178):
|
||||
Or, replacing what does --gmail1 --gmail2 (values are from imapsync 1.970):
|
||||
|
||||
imapsync \
|
||||
--host1 imap.gmail.com \
|
||||
@ -203,7 +168,6 @@ imapsync \
|
||||
--maxbytesafter 1_000_000_000 \
|
||||
--automap \
|
||||
--maxsleep 2 \
|
||||
--useheader X-Gmail-Received --useheader Message-Id \
|
||||
--synclabels \
|
||||
--resynclabels \
|
||||
--exclude "\[Gmail\]$" \
|
||||
@ -272,7 +236,7 @@ imapsync --host1 mail.oldhost.com \
|
||||
--password2 gmailsecret \
|
||||
--gmail2
|
||||
|
||||
Or, replacing what does --gmail2 (values are from imapsync 2.178):
|
||||
Or, replacing what does --gmail2 (values are from imapsync 1.970):
|
||||
(For Linux only because of the quotes)
|
||||
|
||||
imapsync --host1 mail.oldhost.com \
|
||||
@ -288,7 +252,6 @@ imapsync --host1 mail.oldhost.com \
|
||||
--expunge1 \
|
||||
--addheader \
|
||||
--maxsleep 2 \
|
||||
--maxsize 35_651_584
|
||||
--exclude "\[Gmail\]$" \
|
||||
--regextrans2 's,\[Gmail\].,,' \
|
||||
--regextrans2 's,^ +| +$,,g'
|
||||
@ -324,11 +287,12 @@ be 500_000_000, not 1_000_000_000, but 1GB is usually ok.
|
||||
--maxsleep 2 is to avoid sleeping more than 2 seconds when
|
||||
the --maxbytespersecond value implies a long sleep between 2 copies.
|
||||
|
||||
--maxsleep 0 cancels any imapsync bandwidth restriction given by
|
||||
the options --maxbytespersecond or --maxmessagespersecond
|
||||
It does not cancel the imap server bandwidth restrictions.
|
||||
--maxsize 25_000_000 is mandatory since Gmail limits messages size
|
||||
up to 25 MB. This value increases over time, it was 10 MB some
|
||||
years ago so you can try higher values. The Gmail page about
|
||||
this limit is https://support.google.com/mail/answer/6584
|
||||
|
||||
--automap is optional but it will save manual folders names
|
||||
--automap is optional but it will save manual folder names
|
||||
changes or the use of --regextrans2 or --f1f2 to map folder names.
|
||||
|
||||
--expunge1 is optional. It deletes messages marked \Deleted on host1.
|
||||
@ -365,7 +329,7 @@ On Windows:
|
||||
--regextrans2 "s/[\^]/_/g" is mandatory. It converts, since
|
||||
not accepted by gmail, character ^ to character _ underscore.
|
||||
|
||||
--regextrans2 's/['"'"'\\^"]/_/g' is optional. It converts
|
||||
--regextrans2 "s/['\"\\\\]/_/g" is optional. It converts
|
||||
characters ' or " or \ to character _ underscore.
|
||||
|
||||
You can select folders exported to imap within the gmail preferences.
|
||||
@ -379,25 +343,24 @@ Q. How to synchronize from Gmail to XXX?
|
||||
R. Use this example:
|
||||
|
||||
imapsync \
|
||||
--user1 foo@gmail.com \
|
||||
--user1 foo@gmail.com \
|
||||
--password1 gmailsecret \
|
||||
--host2 imap.example.org \
|
||||
--user2 tata \
|
||||
--password2 tatasecret \
|
||||
--host2 localhost \
|
||||
--user2 tata \
|
||||
--gmail1
|
||||
|
||||
Or, replacing what does --gmail1 (values are from imapsync 2.178):
|
||||
Or, replacing what does --gmail1 (values are from imapsync 1.970):
|
||||
|
||||
imapsync \
|
||||
--host1 imap.gmail.com \
|
||||
--host1 imap.gmail.com \
|
||||
--ssl1 \
|
||||
--user1 foo@gmail.com \
|
||||
--user1 foo@gmail.com \
|
||||
--password1 gmailsecret \
|
||||
--host2 imap.example.org \
|
||||
--user2 tata \
|
||||
--host2 localhost \
|
||||
--user2 tata \
|
||||
--password2 tatasecret \
|
||||
--maxbytespersecond 40_000 \
|
||||
--maxbytesafter 3_000_000_000 \
|
||||
--maxbytesafter 2_500_000_000
|
||||
--automap \
|
||||
--maxsleep 2 \
|
||||
--skipcrossduplicates \
|
||||
@ -416,56 +379,53 @@ Explanations:
|
||||
--maxbytespersecond 40_000 ( 40 kBytes/s ) option is here to avoid
|
||||
locking or errors when imap transfers exceed Gmail maximum limit.
|
||||
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
||||
--maxbytespersecond 40_000 is not mandatory in the sense Gmail may
|
||||
allow you to use an upper value than 2 GBytes per 24h without
|
||||
--maxbytespersecond 40_000 is not mandatory in the sense Gmail may
|
||||
allow you to use an upper value than 2 GBytes per 24h without
|
||||
disconnections.
|
||||
|
||||
--useheader="X-Gmail-Received" --useheader "Message-Id" are not
|
||||
mandatory. I use them because I found (several years ago, it may have
|
||||
changed) that Gmail always adds a different header "X-Gmail-Received:"
|
||||
to all messages it gets. So the identification by imapsync can not
|
||||
fail using this header. "Message-Id" is there for safety about this
|
||||
Gmail rule.
|
||||
mandatory. I use them because I found (several years ago, it may
|
||||
have changed) that Gmail always adds a different header
|
||||
"X-Gmail-Received:" to all messages it gets. So the identification
|
||||
by imapsync can not fail using this header. "Message-Id" is there
|
||||
for safety about this Gmail rule.
|
||||
|
||||
--automap is optional but it will save manual folder names changes or
|
||||
the use of --regextrans2 to map folder names.
|
||||
--automap is optional but it will save manual folder names
|
||||
changes or the use of --regextrans2 to map folder names.
|
||||
|
||||
--regextrans2 "s,\[Gmail\].,,"
|
||||
If your destination imap server doesn't like the "[Gmail]" name,
|
||||
If your destination imap server doesn't like "[Gmail]" name,
|
||||
get rid of this "[Gmail]" part with that.
|
||||
|
||||
You can select folders exported to imap within the Gmail preferences,
|
||||
for example, you may unselect all "System labels".
|
||||
You can select folders exported to imap within the gmail preferences,
|
||||
for example you may unselect all "System labels".
|
||||
|
||||
--skipcrossduplicates is optional but it can save Gigabytes of hard
|
||||
disk memory. Within imap protocol, Gmail presents Gmail labels as
|
||||
folders, so a message labelled "Work" "ProjectX" "Urgent" ends up in
|
||||
three different imap folders "Work" "ProjectX" and "Urgent" after an
|
||||
imap sync. Option --skipcrossduplicates prevent this behavior.
|
||||
disk memory. Within imap protocol, Gmail presents Gmail labels as
|
||||
folders, so a message labeled "Work" "ProjectX" "Urgent" ends up
|
||||
in three different imap folders "Work" "ProjectX" and "Urgent"
|
||||
after an imap sync. Option --skipcrossduplicates prevent this behavior.
|
||||
|
||||
An issue with --skipcrossduplicates is that the first label synced by
|
||||
imapsync goes to its corresponding folder but other labels are then
|
||||
ignored. You can choose what labels have priority by using the
|
||||
--folderfirst option. For example, --folderfirst "Work" will sync
|
||||
messages labelled "Work" before messages labelled "CanWait" or
|
||||
"Urgent". By default imapsync syncs folders (Gmail labels) using the
|
||||
classical alphanumeric order.
|
||||
An issue with --skipcrossduplicates is that the first label synced
|
||||
by imapsync goes to its corresponding folder but other labels are
|
||||
then ignored. You can choose what labels have the
|
||||
priority by using the --folderfirst option. For example
|
||||
--folderfirst "Work" will sync messages labeled "Work" before
|
||||
messages labeled "CanWait" or "Urgent". By default imapsync
|
||||
syncs folders (Gmail labels) using the classical alphanumeric order.
|
||||
|
||||
Option --folderlast "CanWait" will sync only messages that only have
|
||||
the label CanWait.
|
||||
--folderlast "CanWait" will sync only messages that have the
|
||||
label CanWait and only it.
|
||||
|
||||
Option --folderlast "[Gmail]/All Mail", in conjunction with option
|
||||
--skipcrossduplicates will only put in "[Gmail]/All Mail" the messages
|
||||
that are not labelled at all.
|
||||
--folderlast "[Gmail]/All Mail", in conjunction with option
|
||||
--skipcrossduplicates, will only put in "[Gmail]/All Mail"
|
||||
the messages that are not labeled at all.
|
||||
|
||||
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Gmail.txt
|
||||
=======================================================================
|
||||
Q. I can't authenticate with Gmail via IMAP
|
||||
and Gmail says
|
||||
"Please log in via your web browser"
|
||||
or it says
|
||||
"Application-specific password required: https://support.google.com/accounts/answer/185833 (Failure)"
|
||||
and Gmail says "Please log in via your web browser"
|
||||
|
||||
R0. My current settings on two Gmail accounts are made
|
||||
with three steps 0) 1) 2)
|
||||
@ -481,7 +441,6 @@ https://support.google.com/accounts/answer/6010255?hl=en
|
||||
|
||||
R1. See Coert Grobbelaar solution:
|
||||
https://web.archive.org/web/20150906230041/http://security.stackexchange.com/questions/86404/how-do-i-interact-with-google-to-import-email-via-imapsync
|
||||
https://support.google.com/accounts/answer/185833
|
||||
|
||||
R2. I had the same issue one time (mars 2015) logging to Gmail
|
||||
with imapsync.
|
||||
@ -491,48 +450,6 @@ it asked me to receive a code via a mobile, I said yes,
|
||||
I entered the code and everything went ok on next syncs
|
||||
with imapsync.
|
||||
|
||||
R1 again. Since people rarely follow links in a txt file, I reproduce
|
||||
Google documentation from the link
|
||||
https://support.google.com/accounts/answer/185833
|
||||
|
||||
Sign in using App Passwords
|
||||
An App Password is a 16-digit passcode that gives a non-Google app or
|
||||
device permission to access your Google Account.
|
||||
App Passwords can only be used with accounts that
|
||||
have 2-Step Verification turned on.
|
||||
|
||||
When to use App Passwords
|
||||
To help keep your account secure, use "Sign in with Google" to
|
||||
connect apps to your Google Account.
|
||||
If the app you’re using doesn’t offer this option, you can either:
|
||||
|
||||
Use App Passwords to connect to your Google Account
|
||||
Switch to a more secure app
|
||||
Create & use App Passwords
|
||||
Note: If you use 2-Step-Verification
|
||||
( https://support.google.com/accounts/answer/185839 )
|
||||
and are seeing a "password incorrect" error when trying to access
|
||||
your Google Account, an App Password may solve the problem.
|
||||
|
||||
* Go to your Google Account https://myaccount.google.com/
|
||||
* On the left navigation panel, choose Security.
|
||||
* On the "Signing in to Google" panel, choose App Passwords.
|
||||
If you don’t see this option:
|
||||
* 2-Step Verification is not set up for your account.
|
||||
* 2-Step Verification is set up for security keys only.
|
||||
* Your account is through work, school, or other organization.
|
||||
* You’ve turned on Advanced Protection for your account.
|
||||
* At the bottom, choose Select app and choose the app you’re using.
|
||||
* Choose Select device and choose the device you’re using.
|
||||
* Choose Generate.
|
||||
* Follow the instructions to enter the App Password.
|
||||
The App Password is the 16-character code in the yellow bar on your device.
|
||||
* Choose Done.
|
||||
|
||||
Most of the time, you’ll only have to enter an App Password once per
|
||||
app or device, so don’t worry about memorizing it.
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. Can not open imap connection on [imap.gmail.com]:
|
||||
@ -566,160 +483,8 @@ Or go to http://ping.eu/nslookup/ to get the resolution.
|
||||
|
||||
Thanks to Chris Nolan to report, understand and fix this issue!
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. I want to sync the Sent folder only, what is it on Gmail?
|
||||
|
||||
R1. Use:
|
||||
|
||||
imapsync ... --folder "[Gmail]/Sent Mail"
|
||||
|
||||
R2. In fact, by configuration from the user, it can be another folder
|
||||
name presented in IMAP. Use --automap --dry to see this mapping.
|
||||
See below
|
||||
|
||||
=======================================================================
|
||||
Q. From Gmail to Gmail, I want to keep Categories. What can I do?
|
||||
|
||||
R. First, read a document to learn how to play with Gmail Categories:
|
||||
https://support.google.com/mail/answer/3094499
|
||||
|
||||
Categories are not presented in IMAP in Gmail, so synchronizing them
|
||||
with imapsync requires some work.
|
||||
|
||||
Let's say I want to synchronize the category named "Updates".
|
||||
|
||||
1. Create a label "Updates_L", or name it as you want. You can't
|
||||
create a label named "Updates" like the category name because
|
||||
Gmail will refuse to create it, saying it's a reserved name.
|
||||
|
||||
2. Select all messages in the category "Updates".
|
||||
To do so, you can use the string "category:updates" in the
|
||||
search input text located at the top of the Gmail page.
|
||||
Notice the case is irrelevant to the search,
|
||||
"category:updates" equals "Category:Updates".
|
||||
|
||||
Gmail then announces "All 100 messages on this page are selected."
|
||||
It's not enough, I want all the "Updates" category messages.
|
||||
So, on the right of this statement, click on the text
|
||||
"Select all messages that match this search".
|
||||
Now Gmail announces "All messages in this search are selected."
|
||||
|
||||
3. Apply label "Updates_L" created at step 1 to all the selected
|
||||
messages. Gmail will present a warning and a
|
||||
"Confirm bulk action" button. Press "Ok".
|
||||
|
||||
4. Repeat steps 1 to 3 for each category you want to synchronize.
|
||||
|
||||
5. Transfer your mailbox to the new account with imapsync using the
|
||||
options --gmail1 --gmail2, the labels will be synchronized.
|
||||
|
||||
6. For each of the labels you made for categories, do the steps 7 to 9.
|
||||
As an example, I take the label "Updates_L" previously used.
|
||||
|
||||
7. Select all messages with the label "Updates_L".
|
||||
You can use the string "label:Updates_L" in the search input
|
||||
text located at the top of the Gmail page.
|
||||
Gmail then announces "All 100 messages on this page are selected."
|
||||
It's not enough, I want all the "updates_l" labeled messages.
|
||||
So, on the right of this statement, click on the text
|
||||
"Select all messages that match this search".
|
||||
Now Gmail announces "All messages in this search are selected."
|
||||
(does it sound similar to a previous §?)
|
||||
|
||||
8. Apply the category "Updates" to all the selected
|
||||
messages. Gmail will present a warning and a
|
||||
"Confirm bulk action" button. Press "Ok".
|
||||
If you search where are the categories: the categories are
|
||||
located with the labels, as if they were labels.
|
||||
|
||||
9. Delete the temporary label. That part is optional.
|
||||
|
||||
Maybe one day Google will make categories optionally available
|
||||
in IMAP, like any other label and this trick will be obsolete.
|
||||
Labels can be "Show in IMAP" at
|
||||
https://mail.google.com/mail/u/0/#settings/labels
|
||||
Categories are listed there but not possibly "Show in IMAP", not yet :-)
|
||||
|
||||
Thanks to Michael Leggett https://twitter.com/leggett for this
|
||||
trick. See the story at
|
||||
https://twitter.com/leggett/status/1484632316697739267?s=20
|
||||
|
||||
=======================================================================
|
||||
Q. The context is a Gmail account at the source, but not Gmail at the
|
||||
destination. I want cross-duplicates, different Gmail folders/labels
|
||||
generating duplicate messages across folders on the destination,
|
||||
except for the "All Mail" folder.
|
||||
|
||||
R. This behavior, different Gmail labels generating duplicates across
|
||||
folders except for the "All Mail" folder, is obtained with a
|
||||
synchronization with no --gmail1 but instead --exclude "All Mail"
|
||||
followed by another synchronization with --gmail1 but without
|
||||
--exclude "All Mail".
|
||||
|
||||
imapsync ... --exclude "All Mail"
|
||||
imapsync ... --gmail1
|
||||
|
||||
This second sync is done to get the messages with no labels at all
|
||||
from the folder "All Mail", if they are some of them.
|
||||
|
||||
Technically speaking, the first synchronization has not the option
|
||||
--skipcrossduplicates but the second one has the option
|
||||
--skipcrossduplicates and it also performs the Gmail "All Mail"
|
||||
folder/label at the end so only the messages that have no labels will
|
||||
end up in the "All Mail" destination folder (which is not Gmail,
|
||||
remember the context).
|
||||
|
||||
Thanks to Mike Alexander for this suggestion.
|
||||
Mike also provided a patch to implement that directly in imapsync.
|
||||
See https://github.com/imapsync/imapsync/pull/266
|
||||
(I refused it because well maintaining it will be very hard for me
|
||||
and I have other priorities).
|
||||
|
||||
=======================================================================
|
||||
Q. I can't sync more than 1000 messages in each Gmail folder.
|
||||
What can I do?
|
||||
|
||||
R. It's a Gmail configuration feature that someone set for your
|
||||
Gmail account. Go to
|
||||
https://mail.google.com/mail/u/0/?tab=wm#settings/fwdandpop
|
||||
and select
|
||||
"Do not limit the number of messages in an IMAP folder (default)"
|
||||
|
||||
=======================================================================
|
||||
Q. What are the Gmail imap names of the folders
|
||||
"Sent" "Trash" "Drafts" "Junk" "Flagged" and "All"?
|
||||
|
||||
R. By default, Gmail imap names of the folders
|
||||
"Sent" "Trash" "Drafts" "Junk" "Flagged" and "All"
|
||||
are like this:
|
||||
|
||||
Turned on automapping folders ( use --noautomap to turn off automapping )
|
||||
Host1: special [Gmail]/All Mail = \All
|
||||
Host1: special [Gmail]/Drafts = \Drafts
|
||||
Host1: special [Gmail]/Sent Mail = \Sent
|
||||
Host1: special [Gmail]/Spam = \Junk
|
||||
Host1: special [Gmail]/Starred = \Flagged
|
||||
Host1: special [Gmail]/Trash = \Trash
|
||||
|
||||
Host2: special [Gmail]/All Mail = \All
|
||||
Host2: special [Gmail]/Bin = \Trash
|
||||
Host2: special [Gmail]/Drafts = \Drafts
|
||||
Host2: special [Gmail]/Sent Mail = \Sent
|
||||
Host2: special [Gmail]/Spam = \Junk
|
||||
Host2: special [Gmail]/Starred = \Flagged
|
||||
|
||||
This is an excerpt from the imapsync output log done with the
|
||||
--automap option. This listing is located just before the
|
||||
folders listings.
|
||||
|
||||
This mapping can be changed by configuration in the Gmail
|
||||
web interface so the result may vary.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. Can I transfer Gmail "Chat" messages with imapsync?
|
||||
Q. Can I transfer "Chat" messages with imapsync?
|
||||
|
||||
R. No.
|
||||
Even if you think you can because the Chat folder is seen in IMAP,
|
||||
@ -742,41 +507,30 @@ 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
|
||||
What happens? What can I do?
|
||||
Q. Gmail does not really delete messages in folder [Gmail]/All Mail
|
||||
What happens? What can I do?
|
||||
|
||||
R. It's true and explained in Gmail documentation at
|
||||
https://support.google.com/mail/answer/7401?hl=en#zippy=%2Cempty-your-trash
|
||||
https://support.google.com/mail/answer/7401?hl=en
|
||||
|
||||
To really remove messages in folder "[Gmail]/All Mail", they have to
|
||||
be moved to the "Trash" folder and be deleted from "Trash".
|
||||
|
||||
Quoting the link above (4 february 2022)
|
||||
Quoting the link above (25 december 2018, happy christmas by the way!)
|
||||
...
|
||||
Empty your Trash
|
||||
|
||||
If you don't want a message to stay in your trash for 30 days,
|
||||
If you don't want a message to stay in your Trash for 30 days,
|
||||
you can permanently delete it.
|
||||
|
||||
* On your computer, go to Gmail.
|
||||
* On the left side of the page, scroll down,
|
||||
then click More and then Trash.
|
||||
* Check the box next to messages you want to permanently delete,
|
||||
then click Delete forever.
|
||||
|
||||
* On the left side of the page, click More.
|
||||
|
||||
* Scroll to Trash.
|
||||
|
||||
* Check the box next to messages you want to permanently delete.
|
||||
Then click Delete forever.
|
||||
|
||||
* Tip: The "Delete forever" option is only available in the trash.
|
||||
You won’t be able to delete items permanently from the Search result view.
|
||||
* Note: The Delete forever option is only available in the Trash.
|
||||
You won’t be able to delete items forever from the Search result view.
|
||||
To delete all messages in your trash, click Empty Trash now.
|
||||
|
||||
|
||||
|
||||
@ -1,23 +0,0 @@
|
||||
$Id: FAQ.GoDaddy.txt,v 1.1 2021/05/21 18:19:29 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.GoDaddy.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Imapsync tips for GoDaddy
|
||||
=======================================================================
|
||||
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. What are the GoDaddy settings for imapsync?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
=======================================================================
|
||||
Q. What are the GoDaddy settings for imapsync?
|
||||
|
||||
R. The imap server is imap.secureserver.net
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.ISP.txt,v 1.14 2022/05/22 08:04:05 gilles Exp gilles $
|
||||
$Id: FAQ.ISP.txt,v 1.9 2018/05/24 11:34:30 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -9,26 +9,36 @@ 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 Flávio Zarur Lucarelli.
|
||||
|
||||
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
|
||||
in the scenario in which we use it, which is to migrate customers from
|
||||
I thought Id write a quick step by step on my attempts to learn the
|
||||
imapsync features that matter the most, so it works as we expected in
|
||||
the cenario in which we use it, which is to migrate customers from
|
||||
their old ISP to our ISP/email hosting. Thanks to the master Gilles
|
||||
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.
|
||||
Initially, I used a method where I'd do an exact sync of source to
|
||||
destination, deleting messages which were in destination, but not
|
||||
source. I call this "Method 2", below. In this cenario, customer
|
||||
shouldn't be using the destination account yet. Then, after I switch MX,
|
||||
I'd do a final sync based on date. The big advantage of this is, you
|
||||
get an exact sync.
|
||||
|
||||
Easier, however, is method 1, where I sync based on message ID, this
|
||||
way, I can use the same syntax before and after MX change, with no
|
||||
worries. Only disadvantage, you might not get an exact sync, there
|
||||
might be some difference in terms of total emails in folders, due to
|
||||
duplicates, emails that had same message ID in source server.
|
||||
|
||||
* Method 1 - sync based on message ID, can use same syntax before and
|
||||
after MX change
|
||||
|
||||
imapsync --host1 imap.myisp.com --user1 user@domain.com --password1 pwd \
|
||||
--host2 imap.myisp.com --user2 user@domain.com --password2 pwd \
|
||||
--subscribeall --delete2 --delete2folders --addheader
|
||||
--addheader
|
||||
|
||||
Note: add header adds message ID when it doesn't exist.
|
||||
|
||||
@ -36,142 +46,57 @@ This syntax can also be used to sync different source accounts to one
|
||||
same destination account, simply execute it as many times as desired,
|
||||
switching source user (user1).
|
||||
|
||||
If you have a list of accounts to sync, use this:
|
||||
https://imapsync.lamiral.info/examples/sync_loop_unix.sh
|
||||
* Method 2 - exact sync source do destination, then sync based on date
|
||||
after MX change
|
||||
|
||||
Adjust the parameters according to the original syntax which I
|
||||
explained above.
|
||||
My first goal is to have an exact sync of an account from
|
||||
current/source host to the new/destination host and be able to sync
|
||||
several times. The --useuid parameter is very important for that
|
||||
purpose. This is what I use:
|
||||
|
||||
The Sync loop Unix script now outputs an error log, which can be
|
||||
useful.
|
||||
imapsync --host1 imap.gmail.com --user1 user@domain.com --password1 pwd --ssl1 \
|
||||
--host2 imap.myisp.com --user2 user@domain.com --password2 pwd --ssl2 \
|
||||
--useuid --delete2 --delete2folders
|
||||
|
||||
We also have shell scripts to check for errors, such as:
|
||||
This makes it so imap.myisp.com (destination) is an exact copy of the
|
||||
account at imap.gmail.com (source). This is not a problem, since the
|
||||
user is not using the new host yet. ]You can check Imapsync log files
|
||||
and surely you will see the final difference should be 0. Check also
|
||||
for any possible errors in the log (search for "error").
|
||||
|
||||
- Accounts over quota
|
||||
|
||||
grep -R "EXIT_OVERQUOTA" *.txt
|
||||
|
||||
- Login error
|
||||
|
||||
grep -R "Error login" *.txt
|
||||
|
||||
- Check just critical errors
|
||||
|
||||
egrep 'EXIT_AUTHENTICATION_FAILURE|EXIT_CONNECTION_FAILURE|EXIT_TLS_FAILURE|EXIT_OVERQUOTA' *.txt
|
||||
|
||||
- Check all sorts of errors (can be too much info)
|
||||
|
||||
grep 'Exiting with return value' *.txt | grep -v 'Exiting with return value 0'
|
||||
|
||||
Also, I like to check log file sizes and compare account sizes on
|
||||
source and destination.
|
||||
|
||||
--
|
||||
|
||||
Back to it.
|
||||
|
||||
After you do a full sync, check that everything is consistant and
|
||||
let's proceed to the final stage.
|
||||
|
||||
Lower the TTL (ex: 5 min) for the host associated with the MX record,
|
||||
in the domain's DNS server. Let's say customer has a host mail which
|
||||
his MX points to, with a high TTL (usually 1 hour). Lower it to 5 min
|
||||
so that, when you change the MX, it propagates faster.
|
||||
The second goal is to lower the TTL (ex: 5 min) for the host
|
||||
associated with the MX record, in the domain's DNS server. Let's say
|
||||
customer has a host mail which his MX points to, with a high TTL
|
||||
(usually 1 hour). Lower it to 5 min so that, when you change the MX,
|
||||
it propagates faster.
|
||||
|
||||
When comes time to switch over to the new host, do a final sync with
|
||||
above syntax, before changing the MX. Then, change the MX and tell
|
||||
your users to start using exclusively the new host.
|
||||
|
||||
A few hours after the MX change, we will run Imapsync again. We have
|
||||
to start preserving emails users move or flags in the new host, which
|
||||
to start preserving emails users move or flag in the new host, which
|
||||
they started using, so we can't do an exact sync anymore.
|
||||
|
||||
One simple solution is the same syntax as before, but without
|
||||
--delete2 and --delete2folders.
|
||||
The best solution for me was to Sync any new emails (maxage:1) from
|
||||
source (that could arrive in source even after MX change, due to
|
||||
cache) and delete such emails from source server. This way, customer's
|
||||
mailbox is still intact on the source server, except new emails, which
|
||||
get synced to new server and deleted from source.
|
||||
|
||||
So:
|
||||
imapsync --host1 imap.gmail.com --user1 user@domain.com --password1 pwd --ssl1 \
|
||||
--host2 imap.myisp.com --user2 user@domain.com --password2 pwd --ssl2 \
|
||||
--folder INBOX --useuid --noexpungeaftereach --skipemptyfolders --maxage 1 --delete1
|
||||
|
||||
imapsync --host1 imap.myisp.com --user1 user@domain.com --password1 pwd \
|
||||
--host2 imap.myisp.com --user2 user@domain.com --password2 pwd \
|
||||
--subscribeall --addheader
|
||||
I personally prefer to keep a copy of users box intact in source, but
|
||||
if that's not an issue for you, you can remove --folder INBOX and even
|
||||
--maxage, but then, all emails in source will be deleted. You can use
|
||||
--maxage 1 with --delete1, however, for all folder (without specifying
|
||||
--folder INBOX), so only any new email that arrives at source is
|
||||
copied to destination and deleted from source.
|
||||
|
||||
The only issue with that syntax is, it would simply copy what is in
|
||||
source that is not in destination. For example, user might have moved
|
||||
emails to some sub-folder in host2. However, if you do this once, one
|
||||
hour after MX change, for example, it's comprehensible that
|
||||
destination is not exactly as the source anymore.
|
||||
|
||||
What we've been doing, especially in the case of huge migrations,
|
||||
since our destination server auto-archives emails in sub-folders and
|
||||
changes the hierarchy, is syncing just the last day or few days of
|
||||
email and just of INBOX.
|
||||
|
||||
So we do the sync initially explained in this doc, before the MX
|
||||
change. Then we auto-archive accounts and after auto-archiving, we
|
||||
change MX and do a final sync using maxage.
|
||||
|
||||
Something like this:
|
||||
|
||||
imapsync --host1 imap.myisp.com --user1 user@domain.com --password1 pwd \
|
||||
--host2 imap.myisp.com --user2 user@domain.com --password2 pwd \
|
||||
--subscribeall --addheader --maxage 1
|
||||
|
||||
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
|
||||
scenario...
|
||||
|
||||
Something like this:
|
||||
|
||||
imapsync --host1 imap.gmail.com --user1 user@domain.com --password1 pwd --ssl1 \
|
||||
--host2 imap.myisp.com --user2 user@domain.com --password2 pwd --ssl2 \
|
||||
--folder INBOX --noexpungeaftereach --skipemptyfolders --maxage 1 --delete1
|
||||
|
||||
This way, any new email that arrived at source is copied to
|
||||
destination and deleted from source. Without the --delete1 option,
|
||||
messages moved on host2 by the user are coming back from host1, and
|
||||
flags changed on host2 are also reset to what they are on host1.
|
||||
|
||||
However, as I wrote before, if you run it just once without --delete1,
|
||||
perhaps not that bad.
|
||||
|
||||
*** Other tips for ISPs
|
||||
|
||||
1) Sync entire account into 1 folder of another account
|
||||
|
||||
imapsync --host1 xxx --user1 user1@domain.com --password1 secret1 --ssl1 \
|
||||
--host2 yyy --user2 user2@domain.com --password2 secret2 --ssl2 \
|
||||
--addheader --subfolder2 "otheraccountfolder" --delete2 --delete2foldersonly /otheraccountfolder/
|
||||
|
||||
Above, user must not be using such destination folder in destination
|
||||
account until you finish syncing.
|
||||
|
||||
I've used it without --delete2 and --delete2foldersonly, as it caused
|
||||
problems for us, of that folder being unsubscribed in destination...
|
||||
Don't think it should be a problem as this copy is done usually
|
||||
without using really using the folder in host2 until you instruct him
|
||||
to.
|
||||
|
||||
Another nice scenario, sync just one folder hierarchy of an account to
|
||||
another folder of another account.
|
||||
|
||||
--subfolder1 test --subfolder2 test2 --delete2 --delete2foldersonly /test2/ --addheader
|
||||
|
||||
Also, very useful is to be move emails older than one year, from an
|
||||
account to another one, to offload the source account.
|
||||
|
||||
imapsync ... --subfolder2 "account_user1" --addheader --minage 365 --delete1
|
||||
|
||||
So everything older than 365 days is deleted from source. You can even
|
||||
specify same account for source and recipient, if you want to "delete
|
||||
older than x days" for the account itself, without moving old emails
|
||||
to another account.
|
||||
|
||||
2) Translate folder names
|
||||
My next goal was to automate the process, so I followed this advice:
|
||||
http://imapsync.lamiral.info/examples/sync_loop_unix.sh
|
||||
|
||||
I also ended up requiring a regex to translate folder names. On the
|
||||
old server (Gmail), Sent items were in a folder called [Gmail]/E-mails
|
||||
@ -185,54 +110,17 @@ So this was added:
|
||||
--regextrans2 "s,Lixeira,Trash," \
|
||||
--regextrans2 "s,Rascunhos,Drafts,"
|
||||
|
||||
Option --automap is also good to do most of the translate job.
|
||||
*** Other cenarios
|
||||
|
||||
3) Folders to exclude, to speed up syncs, etc.
|
||||
- Sync entire account into 1 folder of another account
|
||||
|
||||
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:
|
||||
|
||||
imapsync ... --minage 365 --delete1
|
||||
|
||||
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.
|
||||
imapsync --host1 xxx --user1 user1@domain.com --password1 secret1 --ssl1 \
|
||||
--host2 yyy --user2 user2@domain.com --password2 secret2 --ssl2 \
|
||||
--useuid --subfolder2 otheraccountfolder --delete2 --delete2foldersonly /otheraccountfolder/
|
||||
|
||||
Above is based on message UID, advantage of no dupes, however, user
|
||||
must not be using such destination folder in destination account until
|
||||
you finish syncing.
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,23 +0,0 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.IceWarp.txt,v 1.1 2020/02/25 10:49:07 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.IceWarp.txt
|
||||
|
||||
=======================================================================
|
||||
Imapsync tips for IceWarp accounts.
|
||||
=======================================================================
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to migrate from or to IceWarp?
|
||||
|
||||
|
||||
R. Use:
|
||||
|
||||
imapsync ... --noabletosearch
|
||||
|
||||
The option --noabletosearch is needed only if options --maxage or --minage
|
||||
are used. I don't know which --search commands could work, maybe none.
|
||||
|
||||
@ -1,34 +0,0 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.James.txt,v 1.2 2022/04/06 10:28:16 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.James.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Imapsync tips for James. Specific issues and solutions.
|
||||
=======================================================================
|
||||
|
||||
James: JAVA Apache Mail Enterprise Server
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. How to migrate to Dovecot with an admin/MasterUser account?
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to migrate to James with an admin/MasterUser account?
|
||||
|
||||
R. James supports impersonation and is set up via the administratoId key
|
||||
field stored in <install>/conf/usersrepository.conf
|
||||
|
||||
There are multiple user repository definitions, each using
|
||||
a different key:value pair to define administratorId
|
||||
|
||||
https://james.apache.org/server/config-users.html
|
||||
|
||||
(Thanks to From Rob Davis for this Q/R)
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Kerio.txt,v 1.3 2022/04/05 13:48:52 gilles Exp gilles $
|
||||
$Id: FAQ.Kerio.txt,v 1.2 2019/11/15 11:33:14 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -17,7 +17,7 @@ Q. How to migrate from Kerio Connect to XXX
|
||||
|
||||
R. No special options required.
|
||||
See also:
|
||||
http://linux-france.tk/prj/imapsync_list/msg01756.html
|
||||
http://www.linux-france.org/prj/imapsync_list/msg01756.html
|
||||
http://web.archive.org/web/20140224041102/https://www.safetynet-it.com/it-support/mac-kerio-server-to-microsoft-exchange-2010-migration-1/
|
||||
http://web.archive.org/web/20121125074756/http://www.safetynet-it.com/it-support/mac-kerio-server-to-microsoft-exchange-2010-migration-2/
|
||||
|
||||
|
||||
@ -1,41 +0,0 @@
|
||||
$Id: FAQ.Logfile.txt,v 1.2 2021/07/23 12:27:31 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Logfile.txt
|
||||
|
||||
|
||||
======================================================================
|
||||
Imapsync log file
|
||||
======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. I have these errors "could not be fetched", like this one:
|
||||
Err 1/1: - msg INBOX/17219 {0} S[36592] F[] I[16-Jul-2021 12:04:15 +0000] could not be fetched
|
||||
What can I do about it?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
======================================================================
|
||||
Q. I have these errors "could not be fetched", like this one:
|
||||
Err 1/1: - msg INBOX/17219 {0} S[36592] F[] I[16-Jul-2021 12:04:15 +0000] could not be fetched
|
||||
What can I do about it?
|
||||
|
||||
|
||||
R. Explanation of a log line:
|
||||
|
||||
- msg INBOX/17219 {0} S[36592] F[] I[16-Jul-2021 12:04:15 +0000]
|
||||
|
||||
INBOX = folder
|
||||
17219 = UID
|
||||
{0} = got 0 bytes
|
||||
S[36592] = should have got 36592 bytes (RFC size announced)
|
||||
F[] = Flags, none here
|
||||
I[16-Jul-2021 12:04:15 +0000] = Internal date
|
||||
|
||||
Usually this error doesn't appear on next runs, at least not for the
|
||||
same messages. So rerun imapsync until all messages are synced.
|
||||
|
||||
======================================================================
|
||||
======================================================================
|
||||
@ -1,37 +0,0 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.MailEnable.txt,v 1.2 2020/07/07 10:45:56 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.MailEnable.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Imapsync tips for MailEnable imap server
|
||||
=======================================================================
|
||||
|
||||
|
||||
|
||||
======================================================================
|
||||
Q: Syncing to MailEnable 10.31 and after
|
||||
R: No special imapsync option is required, default is ok.
|
||||
|
||||
======================================================================
|
||||
Q: Syncing from MailEnable 1.75
|
||||
R: Use options:
|
||||
|
||||
imapsync ... --sep1 "/" --prefix1 ""
|
||||
|
||||
======================================================================
|
||||
Q: Syncing from MailEnable 2.2
|
||||
R: Use options:
|
||||
|
||||
imapsync ... --sep1 "." --prefix1 ""
|
||||
|
||||
======================================================================
|
||||
Q: Syncing to MailEnable until MailEnable release 10.31 not included
|
||||
R: Use options:
|
||||
|
||||
imapsync ... --sep2 / --prefix2 "" --addheader --messageidnodomain --syncflagsaftercopy
|
||||
|
||||
======================================================================
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Massive.txt,v 1.34 2022/07/14 16:00:23 gilles Exp gilles $
|
||||
$Id: FAQ.Massive.txt,v 1.30 2019/07/24 12:01:41 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -14,7 +14,7 @@ Questions answered here are:
|
||||
|
||||
Q. How long will take the whole migration?
|
||||
|
||||
Q. I need to migrate hundreds of accounts, how can I do that?
|
||||
Q. I need to migrate hundred accounts, how can I do?
|
||||
|
||||
Q. I have to migrate 500k users using 400 TB of disk space.
|
||||
How do I proceed? 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 and then get a
|
||||
Q. I run multiple imapsync applications at the same time 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,18 +31,17 @@ Q. I run multiple imapsync applications at the same time and 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 end,
|
||||
R1. First you have to consider several periods. There is the global
|
||||
period, from when the migration process is decided to the final end
|
||||
where all mailboxes are migrated. This global period can be divided
|
||||
into three smaller periods.
|
||||
|
||||
The first period is the analysis period: you play with the tools
|
||||
The first period is the analyse 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 what I call the presyncing period.
|
||||
The users are still using
|
||||
The second period is the presync 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.
|
||||
@ -50,52 +49,34 @@ 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
|
||||
mailboxes' changes need to be synced before switching
|
||||
changes of the mailboxes need to be synced in order to switch
|
||||
the users to their new mailboxes.
|
||||
|
||||
R2. To estimate the presyncing period, consider the mean imapsync transfer
|
||||
R2. To estimate the presync period, consider the mean imapsync transfer
|
||||
rate to be around 340 Kbytes/s, ie, 2.8 Mbps, no matter the local
|
||||
link bandwidth.
|
||||
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 Mbps, Tx 100 Mbps) and the provider bandwidth is also 200 Mbps.
|
||||
The maximum global rate seen is 22 MiB/s (176 Mbps).
|
||||
It's a mean, measured upon various different syncs, coming from
|
||||
the online service /X where the network card flow rate is 100 Mbps
|
||||
and the provider bandwidth is also 100 Mbps. Max seen is a transfer
|
||||
at 21 Mbps.
|
||||
|
||||
At 340 Kbytes/s,
|
||||
1 TB to transfer and one sync at a time will end in 35 days (1024^3/340/3600/24).
|
||||
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, the real world is like that.
|
||||
Triple the time because, well, real world is like that.
|
||||
|
||||
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 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.
|
||||
Nb_total = total number of mailboxes to be migrated.
|
||||
Nb_now = number of mailboxes already migrated.
|
||||
|
||||
then
|
||||
|
||||
ETA = t_end = (t_now - t_0) * (Nb_total / Nb_now) + t_0
|
||||
|
||||
|
||||
R4. To estimate the last period, the final sync, just rerun a complete
|
||||
presync, ie, resync all the mailboxes, the final sync should take
|
||||
R3. To estimate the last period, just rerun a complete presync,
|
||||
ie, resync all the mailboxes, the final sync should take
|
||||
the same amount of time.
|
||||
|
||||
=======================================================================
|
||||
Q. I need to migrate hundreds of accounts, how can I do that?
|
||||
Q. I need to migrate hundred accounts, how can I do?
|
||||
|
||||
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:
|
||||
@ -106,8 +87,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 time, the first column (host001_1, host002_1 ...) will
|
||||
contain the same value, the value of --host1 parameter. Same
|
||||
Most of the times, the first column (host001_1, host002_1 ...) will
|
||||
contains 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:
|
||||
@ -148,7 +129,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:
|
||||
@ -170,11 +151,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 functionally independent, they can be processed
|
||||
independently, here comes the parallelism, ie, launching several imapsync
|
||||
Since all mailboxes are functionnaly 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.
|
||||
|
||||
@ -185,7 +166,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, the command "nload" is a good candidate to measure this overall
|
||||
On Linux and FreeBSD, 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:
|
||||
|
||||
@ -196,26 +177,24 @@ Here comes some measurements.
|
||||
|
||||
dstat -n -N eth0 6 # Linux only (in 2018)
|
||||
|
||||
Another excellent tool to measure the network traffic is iftop.
|
||||
Another excellent tool to measure the network trafic is iftop.
|
||||
The following command will monitor imap and imaps connections
|
||||
on interface eth0, only them, and sum them up:
|
||||
on interfce 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 the keys
|
||||
My preferred display combination is by typing
|
||||
t p >
|
||||
t means "one line per connection"
|
||||
p means "show port numbers"
|
||||
> means "sort by destination"
|
||||
meaning: one line per connection, show port numbers, 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 monitor.
|
||||
in it where resides a Network grap monitor.
|
||||
|
||||
On Windows 7, get the overall network rate with the classical
|
||||
task manager (Ctrl-Shift-Esc), there is a Network tab in it.
|
||||
@ -227,7 +206,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 runs in parallel you got until then.
|
||||
Note N as the number of parallel runs you got until then.
|
||||
|
||||
4) Only keep N-2 parallel runs for the future.
|
||||
|
||||
@ -237,15 +216,15 @@ Q. How to determine where is the bottleneck in an imapsync process?
|
||||
|
||||
R1. Divide and conquer.
|
||||
|
||||
To detect whether host1/link1 is the bottleneck or
|
||||
In order 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 the destination.
|
||||
This way, only host1 and link1 are tested, host2 is not directly concerned.
|
||||
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.
|
||||
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 the destination.
|
||||
This way, only host2 and link2 are tested, host1 is not concerned.
|
||||
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.
|
||||
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.
|
||||
@ -253,39 +232,39 @@ Same thing if they both decrease!
|
||||
|
||||
R2. Isolating and overcoming bottlenecks
|
||||
|
||||
In any process involving several mechanisms, among all elements taking
|
||||
part in the process, there is always a bottleneck. No one knows in
|
||||
On any process involving several mechanisms, among all elements taking
|
||||
part on 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 with the whole huge migration.
|
||||
are good enough to proceed the whole huge migration.
|
||||
|
||||
Possible bottlenecks:
|
||||
|
||||
- Throttles.
|
||||
IMAP servers have artificial limits.
|
||||
For example, Gmail, Office365, and Exchange have throttle limits.
|
||||
For example Gmail, Office365, Exchange have throttle limits.
|
||||
|
||||
- Bandwidth.
|
||||
Usually, the available bandwidth is not a bottleneck.
|
||||
Usually 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 connection is asymmetric.
|
||||
consider this in case the connections are asymmetric.
|
||||
|
||||
- I/O, aka "Input/Output" on the disks of the imap servers.
|
||||
The I/O on disks are a classical bottleneck, almost always forgotten.
|
||||
- I/O on disks.
|
||||
I/O 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 direct access to host1 and host2.
|
||||
usually a 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.
|
||||
- RAM memory.
|
||||
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.
|
||||
@ -294,8 +273,9 @@ Possible bottlenecks:
|
||||
|
||||
- CPU.
|
||||
100% CPU during a whole transfer means the system is busy.
|
||||
CPU can be a problem with imapsync but it can also be a problem
|
||||
with one or both of the imap servers.
|
||||
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.
|
||||
|
||||
Other possible bottlenecks:
|
||||
- Number of hosts available to run imapsync processes.
|
||||
@ -314,10 +294,10 @@ Q. Can I run several instances of imapsync in parallel on a Windows host?
|
||||
|
||||
R. Yes!
|
||||
|
||||
Q. Any performance issues?
|
||||
Q. Any performance issue?
|
||||
|
||||
You have to try and check the transfer rates, sum them up to
|
||||
have a unique numeric criterion.
|
||||
have a uniq numeric criteria.
|
||||
There is always a limit, depending on remote imap servers
|
||||
and the one running imapsync.
|
||||
CPU, memory, Inputs/Outputs are the classical bottlenecks,
|
||||
@ -338,7 +318,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 and then get a
|
||||
Q. I run multiple imapsync applications at the same time then get a
|
||||
warning "imapsync.pid already exists, overwriting it".
|
||||
Is this a potential problem when trying to sync multiple
|
||||
IMAP account in parallel?
|
||||
@ -348,7 +328,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 pid file with --pidfile option.
|
||||
Each run can have its own 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
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Messages_Selection.txt,v 1.18 2021/07/04 23:05:24 gilles Exp gilles $
|
||||
$Id: FAQ.Messages_Selection.txt,v 1.15 2019/07/24 12:02:11 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -33,54 +33,7 @@ Q. What are the selection criteria available with --search option?
|
||||
=======================================================================
|
||||
Q. What messages imapsync syncs by default?
|
||||
|
||||
R1. By default, Imapsync syncs all messages, except duplicates.
|
||||
If you want to sync duplicates, add the option --syncduplicates
|
||||
|
||||
R2. You can alter the default "all messages selected" by using one or
|
||||
more of the following options:
|
||||
|
||||
Extract from the README https://imapsync.lamiral.info/README
|
||||
|
||||
OPTIONS/message selection
|
||||
|
||||
--maxsize int : Skip messages larger (or equal) than int bytes
|
||||
--minsize int : Skip messages smaller (or equal) than int bytes
|
||||
|
||||
--maxage int : Skip messages older than int days.
|
||||
final stats (skipped) don't count older messages
|
||||
see also --minage
|
||||
--minage int : Skip messages newer than int days.
|
||||
final stats (skipped) don't count newer messages
|
||||
You can do (+ zone are the messages selected):
|
||||
past|----maxage+++++++++++++++>now
|
||||
past|+++++++++++++++minage---->now
|
||||
past|----maxage+++++minage---->now (intersection)
|
||||
past|++++minage-----maxage++++>now (union)
|
||||
|
||||
--search str : Selects only messages returned by this IMAP SEARCH
|
||||
command. Applied on both sides.
|
||||
For a complete set of what can be search see
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Messages_Selection.txt
|
||||
|
||||
--search1 str : Same as --search but for selecting host1 messages only.
|
||||
--search2 str : Same as --search but for selecting host2 messages only.
|
||||
So --search CRIT equals --search1 CRIT --search2 CRIT
|
||||
|
||||
--maxlinelength int : skip messages with a line length longer than int bytes.
|
||||
RFC 2822 says it must be no more than 1000 bytes but
|
||||
real life servers and email clients do more.
|
||||
|
||||
|
||||
--useheader str : Use this header to compare messages on both sides.
|
||||
Ex: Message-ID or Subject or Date.
|
||||
--useheader str and this one, etc.
|
||||
|
||||
--usecache : Use cache to speed up next syncs. Not set by default.
|
||||
--nousecache : Do not use cache. Caveat: --useuid --nousecache creates
|
||||
duplicates on multiple runs.
|
||||
--useuid : Use UIDs instead of headers as a criterion to recognize
|
||||
messages. Option --usecache is then implied unless
|
||||
--nousecache is used.
|
||||
R. By default, Imapsync syncs all messages, except duplicates.
|
||||
|
||||
=======================================================================
|
||||
Q. Is there a way we can specify a date range to sync emails?
|
||||
@ -117,27 +70,21 @@ or
|
||||
Q. Is there a way we can specify an age to sync emails?
|
||||
If yes, can you please share some examples?
|
||||
|
||||
R. Yes, with the --maxage or the --minage option.
|
||||
|
||||
R. Yes, with the --maxage or the --minage option.
|
||||
|
||||
Have in mind that the options --maxage and --minage can NOT be
|
||||
combined successfully with the --search command. If the --search
|
||||
option is present on the command line then --maxage and --minage
|
||||
are ignored.
|
||||
|
||||
Example.1 Sync only messages less than 2 days old:
|
||||
E.1 Sync only messages less than 2 days old:
|
||||
|
||||
imapsync ... --maxage 2
|
||||
|
||||
Example.2 Sync only messages more than 2 days old:
|
||||
E.2 Sync only messages more than 2 days old:
|
||||
|
||||
imapsync ... --minage 2
|
||||
|
||||
Example.3 Sync only messages more than 30 days old and less than 365 days old:
|
||||
E.3 Sync only messages more than 30 days old and less than 365 days old:
|
||||
|
||||
imapsync ... --minage 30 --maxage 365
|
||||
|
||||
Example.4 Sync only messages less than 30 days old or more than 365 days old:
|
||||
E.4 Sync only messages less than 30 days old or more than 365 days old:
|
||||
|
||||
imapsync ... --maxage 30 --minage 365
|
||||
|
||||
@ -154,9 +101,9 @@ Full explanation:
|
||||
past|----maxage+++++minage---->now (intersection)
|
||||
past|++++minage-----maxage++++>now (union)
|
||||
|
||||
Caveat.1 By default,
|
||||
C.1 By default,
|
||||
|
||||
Option --maxage is implemented as a --search SENTSINCE
|
||||
option --maxage is implemented as a --search SENTSINCE
|
||||
RFC 3501 says: SENTSINCE <date>
|
||||
Messages whose [RFC-2822] Date: header (disregarding time and
|
||||
timezone) is within or later than the specified date.
|
||||
@ -204,17 +151,12 @@ Q. Can I migrate only mails with attachments?
|
||||
|
||||
R. Use:
|
||||
|
||||
imapsync ... --search "HEADER Content-Disposition attachment"
|
||||
|
||||
or
|
||||
|
||||
imapsync ... --search "HEADER Content-Type multipart/mixed"
|
||||
|
||||
or more generally:
|
||||
|
||||
imapsync ... --search "OR HEADER Content-Disposition attachment HEADER Content-Type multipart/mixed"
|
||||
|
||||
The last one doesn't work on all imap servers, not on Gmail at least (tested 2020/06/16)
|
||||
|
||||
=======================================================================
|
||||
Q. How can I move messages marked \Deleted from all folders to
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Messages_Too_Big.txt,v 1.8 2021/12/16 11:44:26 gilles Exp gilles $
|
||||
$Id: FAQ.Messages_Too_Big.txt,v 1.3 2019/06/18 16:37:39 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -11,129 +11,41 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Messages_Too_Big.txt
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. Imapsync reports errors like these ones:
|
||||
"could not append...Maximum size of appendable message has been exceeded"
|
||||
"could not append...maximum message size exceeded"
|
||||
"The most frequent error is ERR_APPEND_SIZE"
|
||||
What does it mean?
|
||||
|
||||
Q. Does imapsync limits big messages?
|
||||
|
||||
Q. What are the well known servers messages size limits?
|
||||
|
||||
Q. What can I do to transfer messages bigger than what allows the
|
||||
imap destination server?
|
||||
|
||||
Q. The solution --truncmess xxxx doesn't work with Gmail.
|
||||
What can I do?
|
||||
R1. A solution is to truncate the message to the maximum size allowed
|
||||
before copying it to host2. That's a little dirty but it's ok
|
||||
if you prefer having a truncated message than no message
|
||||
at all. The attachments after the truncation won't be available
|
||||
but everything before should be ok. It may also depends
|
||||
on the software tool reading the email message.
|
||||
|
||||
For example,
|
||||
Gmail currently limits messages to 35651584 bytes (May 2019),
|
||||
|
||||
Now the questions again with their answers.
|
||||
Starting with imapsync release 1.938 option --truncmess xxxx truncates
|
||||
messages bigger than the given size xxxx.
|
||||
|
||||
=======================================================================
|
||||
Q. Imapsync reports errors like these ones:
|
||||
"could not append...Maximum size of appendable message has been exceeded"
|
||||
"could not append...maximum message size exceeded"
|
||||
"The most frequent error is ERR_APPEND_SIZE"
|
||||
What does it mean?
|
||||
imapsync --truncmess 35651584 --appendlimit 1000000000000
|
||||
|
||||
R. It means the message couldn't be transferred to the destination
|
||||
account because it is too big, imapsync tries to APPEND it to the
|
||||
server (that's IMAP jargon) but the server refuses it by saying
|
||||
either "NO. Maximum size of appendable message has been exceeded"
|
||||
or "NO. maximum message size exceeded".
|
||||
Prior to imapsync release 1.938, instead of --truncmess:
|
||||
|
||||
On Linux, use:
|
||||
|
||||
=======================================================================
|
||||
Q. Does imapsync limits big messages?
|
||||
|
||||
R. No. Imapsync synchronizes messages no matter their sizes.
|
||||
|
||||
When a message is copied to the destination server, the destination
|
||||
server accepts it or not. It does it as a whole, it takes the full
|
||||
message or nothing. The destination server can refuse a too big
|
||||
message, it then triggers an APPEND error message in imapsync.
|
||||
|
||||
So far, December 2021, the biggest message transferred by imapsync on
|
||||
the online /X service is 1.51 GiB. Who can top that?
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. What are the well known servers messages size limits?
|
||||
|
||||
* Gmail message size limit is 35 MB.
|
||||
Gmail announces APPENDLIMIT=35651584 (June 2021).
|
||||
imapsync ... --pipemess 'perl -0ne "print substr \$_,0,35651584" '
|
||||
|
||||
* Office365 message size limit is 45 MB by default
|
||||
and it can be upped by configuration. See
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Office365.txt
|
||||
Q. I see "NO Maximum size of appendable message has been exceeded"
|
||||
On windows, use:
|
||||
|
||||
* Exchange message size limit is 10 MB by default
|
||||
and it can be upped by configuration. See
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Exchange.txt
|
||||
Q. I see "NO Maximum size of appendable message has been exceeded"
|
||||
I'm not sure of (not tested yet):
|
||||
|
||||
imapsync ... --pipemess "perl -0ne 'print substr $_,0,35651584' "
|
||||
|
||||
* Dovecot message size limit is variable. It is defined
|
||||
by the sysadmin. For example, quota_max_mail_size = 100M
|
||||
https://doc.dovecot.org/configuration_manual/quota/
|
||||
|
||||
* Usually, any IMAP server has a message size limit, defined
|
||||
by the sysadmin. You discover it sooner or later
|
||||
|
||||
R2. A not so dirty solution would be to transform the message and
|
||||
include links to the big attachments, instead of the attachments.
|
||||
Well, not done yet and too much complicted compared to the simple
|
||||
solution which is to allow big messages on the destination account.
|
||||
|
||||
=======================================================================
|
||||
Q. What can I do to transfer messages bigger than what allows the
|
||||
imap destination server?
|
||||
|
||||
R1. A solution is ask imapsync to truncate the message to the maximum
|
||||
size allowed before copying it to host2 by using the option
|
||||
--truncmess.
|
||||
|
||||
That's a little dirty but it's ok if you prefer having a truncated
|
||||
message than no message at all. The attachments after the truncation
|
||||
won't be available but everything before should be ok. It may also
|
||||
depend on the software tool reading the email message.
|
||||
|
||||
|
||||
To truncate messages to 10 MB, use:
|
||||
|
||||
imapsync ... --truncmess 10_000_000
|
||||
|
||||
|
||||
R2. A not-so-dirty solution would be to transform the big messages,
|
||||
replace the attachments with links to the attachments stored
|
||||
elsewhere. Well, it's not done and it's too much complicated compared
|
||||
to a simpler solution which is to allow bigger messages on the
|
||||
destination account.
|
||||
|
||||
As time goes on, disk space is cheaper and cheaper. Don't make the
|
||||
new user account, the destination account, worse than their previous
|
||||
account: buy disks.
|
||||
|
||||
Monitor and rule your hardware resources, serve your users,
|
||||
not the contrary.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. The solution --truncmess xxxx doesn't work with Gmail.
|
||||
What can I do?
|
||||
|
||||
R. Gmail currently limits messages size up to 35651584 bytes, aka 34
|
||||
MiB (June 2021) but imapsync knows it so it avoid to transfer these
|
||||
big messages. Solution, use:
|
||||
|
||||
imapsync ... --truncmess 35_651_584 --appendlimit 1_000_000_000_000
|
||||
|
||||
Explanation. By default, imapsync checks if the host2 imap server
|
||||
announces a message size limit with "APPENDLIMIT=xxxx" in its
|
||||
CAPABILITY response, like Gmail does. Imapsync takes this APPENDLIMIT
|
||||
value to set automatically the --maxsize option, unless --maxsize is
|
||||
already set on the command line and has a smaller value than the
|
||||
APPENDLIMIT value.
|
||||
|
||||
1_000_000_000_000 is one TB, I guess you don't have any message of
|
||||
that size yet.
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
=======================================================================
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Migration_Plan.txt,v 1.9 2021/12/19 10:00:32 gilles Exp gilles $
|
||||
$Id: FAQ.Migration_Plan.txt,v 1.6 2019/04/10 12:05:31 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -8,23 +8,23 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Migration_Plan.txt
|
||||
|
||||
=====================================================================
|
||||
Imapsync. Suggestions for a good, low impact on users,
|
||||
well-executed email migration plan.
|
||||
well executed email migration plan.
|
||||
=====================================================================
|
||||
|
||||
There are two main different scenarios. Choosing which one fits your
|
||||
context depends on the response to the following question:
|
||||
There is two main different scenarios depending on the response to the
|
||||
following question:
|
||||
|
||||
Will the imap software tools used by the users use the same
|
||||
Will the imap software tools used by the users use the exact same
|
||||
credentials triplet for both imap servers, the old server host1 and
|
||||
the new server host2?
|
||||
|
||||
The credentials triplet is hostname/username/password.
|
||||
|
||||
If the answer is yes, ie, clients' email tools use the same triplet
|
||||
credentials, then it is possible to perform a migration without
|
||||
changing anything on the users' side. This may be a very time-saving
|
||||
option. But it's a rare condition so I'll describe this scenario later
|
||||
in this document.
|
||||
If the answer is yes, ie, clients email tools use the exact same
|
||||
triplet credentials, then it is possible to perform a migration
|
||||
without changing anything on the users side. This may be a very time
|
||||
saving option. But it's a rare condition so I'll describe this
|
||||
scenario later in this document.
|
||||
|
||||
|
||||
=====================================================================
|
||||
@ -40,124 +40,101 @@ Classical scenario, credentials triplets are different on both sides
|
||||
users are already playing with the new mailboxes on host2, don't
|
||||
follow this scenario.
|
||||
|
||||
* Pre-synchronize all the mailboxes from the old server host1 to the
|
||||
new server host2. If an imap server name is going to change its IP
|
||||
address, then don't use this name, use a name that will always
|
||||
match the same imap servers, or use their IP addresses.
|
||||
|
||||
Pre-synchronizations can usefully be done with --delete2 to get an
|
||||
exact synchronization. But never use the option --delete2 once the
|
||||
* Presync all the mailboxes from the old server host1 to the new
|
||||
server host2. Presyncs can usefully be done with --delete2 in
|
||||
order to get an exact sync. But never use the option --delete2 once
|
||||
users have started to play with their new account on host2, their
|
||||
play will be lost on the next synchronization. Don't use --delete2
|
||||
either when the MX is changed since INBOX will start to receive new
|
||||
messages that are not on host1 and then removing them is not a good
|
||||
idea.
|
||||
play will be lost on the next presync, or when the MX is changed,
|
||||
since INBOX will start to receive new messages that are not on
|
||||
host1.
|
||||
|
||||
* Decide a migration day/hour.
|
||||
|
||||
* Repeat the pre-synchronizations (with the --delete2 options) daily
|
||||
until the migration hour. This repeated process will show how long
|
||||
should take the last synchronization.
|
||||
* Repeat the presyncs (with the --delete2 options) daily until the
|
||||
migration hour. This repeated process will show how long should
|
||||
take the last sync.
|
||||
|
||||
* At the migration hour, cut access to the users to the old server
|
||||
host1, if you can. Or tell them to not use it anymore.
|
||||
|
||||
* Do the last pre-synchronization exactly like the previous ones.
|
||||
* Do a last presync exactly like previous ones.
|
||||
|
||||
* Change the MX, the new messages should start to arrive in the new
|
||||
imap server host2.
|
||||
|
||||
* Wait for the TTL value, aka 5 minutes. Now, new messages should
|
||||
not arrive at the old server host1.
|
||||
* Wait the TTL value, aka 5 minutes. Now, new messages should
|
||||
not arrive to the old server host1.
|
||||
|
||||
* Tell the users that the old imap server host1 is down and no
|
||||
longer available.
|
||||
|
||||
* Do a post-synchronization. A post-synchronization is a run with the
|
||||
following options: --folder INBOX --delete1 --maxage 1
|
||||
* Do a postsync. A postsync is a sync with the following options
|
||||
--maxage 1 --delete1 --folder INBOX
|
||||
|
||||
This post-synchronization will copy the messages arrived in the
|
||||
last day (--maxage 1) in the folder INBOX (--folder INBOX) on the
|
||||
source account, to the destination account. It will also delete
|
||||
them on host1 (--delete1). It's --delete1, it's not --delete2.
|
||||
Remember, do not use the option --delete2 in a post
|
||||
synchronization, as users won't appreciate seeing their newly
|
||||
arrived messages disappear because of you.
|
||||
This postsync will move the last new messages arrived on host1 to
|
||||
host2 during the TTL interval and delete them on host1. Do not use
|
||||
the option --delete2 in a postsync.
|
||||
|
||||
* Give access to new accounts to the users with their new credential
|
||||
triplet hostname/username/password. If the way to contact users is
|
||||
by email then you should give them the new credentials long before
|
||||
shutting down the old server.
|
||||
email then you should give this long before shutting down the old
|
||||
server.
|
||||
|
||||
* Migration done.
|
||||
|
||||
* In case there are still messages arriving at the old imap server
|
||||
host1, you can perform more post-synchronizations, ie, runs every
|
||||
day with the options: --maxage 1 --delete1 --folder INBOX
|
||||
host1, you can perform more postsyncs, ie, syncs every day
|
||||
with the options:
|
||||
--maxage 1 --delete1 --folder INBOX
|
||||
|
||||
* Increase the TTL of the MX back to its previous value, usually
|
||||
24 hours, 86400 seconds. You don't want all your email system
|
||||
to break down completely when your DNS are not available
|
||||
temporarily, keeping dns values in cache for a 24h is a savvy
|
||||
practice.
|
||||
|
||||
=====================================================================
|
||||
Lucky scenario, credentials triplets are the same on both sides
|
||||
=====================================================================
|
||||
|
||||
* Decrease the TTL of the MX, as well as the imap hostname resolution,
|
||||
to 5 minutes (or even less). The document FAQ.TTL.txt explains why.
|
||||
to 5 minutes (or even less). See FAQ.TTL.txt to understand why.
|
||||
|
||||
* Create the new mailboxes on the destination server host2.
|
||||
|
||||
* Pre-synchronize all the mailboxes from the old host1 to the new
|
||||
server host2, using different names than the ones used by the imap
|
||||
software clients (use their IP for example). Presyncs have to be
|
||||
done with --delete2 but never use --delete2 once users have started
|
||||
playing with their new account on host2.
|
||||
* Presync all the mailboxes from the old host1 to the new server host2,
|
||||
using different names that the ones used by the imap software
|
||||
clients (use their IP for example).
|
||||
Presyncs have to be done with --delete2 but never use --delete2
|
||||
once users have started playing with their new account on host2.
|
||||
|
||||
* Decide a migration day/hour.
|
||||
|
||||
* Repeat the pre-synchronizations (the runs with the --delete2
|
||||
options) daily until the migration hour. This repeated process will
|
||||
show how long should take the last sync.
|
||||
* repeat the presyncs (with the --delete2 options) daily until the
|
||||
migration hour. This repeated process will show how long should
|
||||
take the last sync.
|
||||
|
||||
* At the migration hour, cut access to the users to the old server.
|
||||
You can do this by changing the imap host1 hostname to a non-imap
|
||||
server for example, or by changing their password on host1.
|
||||
|
||||
* Do the last run exactly like the pre-synchronizations.
|
||||
* Do a last sync exactly like the presyncs, not using the imap hostname.
|
||||
|
||||
* Change also the MX resolution, the new messages should start
|
||||
to arrive in the new imap server very soon.
|
||||
|
||||
* Wait for the TTL value, aka 5 minutes. Now, new messages should
|
||||
not arrive at the old server host1.
|
||||
* Wait the TTL value, aka 5 minutes. Now, new messages should
|
||||
not arrive to the old server host1.
|
||||
|
||||
* Do a post-synchronization. A post-synchronization is a run with the
|
||||
following options: --folder INBOX --delete1 --maxage 1
|
||||
* Do a postsync. A postsync is a sync with the following options
|
||||
--maxage 1 --delete1 --folder INBOX
|
||||
|
||||
This post-synchronization will copy the messages arrived in the
|
||||
last day (--maxage 1) in the folder INBOX (--folder INBOX) on the
|
||||
source account, to the destination account. It will also delete
|
||||
them on host1 (--delete1). It's --delete1, it's not --delete2.
|
||||
Remember, do not use the option --delete2 in a post
|
||||
synchronization, as users won't appreciate seeing their newly
|
||||
arrived messages disappear because of you.
|
||||
This postsync will move the last new messages arrived on host1 to
|
||||
host2 during the TTL interval and delete them on host1. Do not use
|
||||
the option --delete2 in a postsync.
|
||||
|
||||
* Shut down the old imap server.
|
||||
* Shutdown the old imap server.
|
||||
|
||||
* Change the user imap hostname resolution from the old IP of host1
|
||||
to the IP of the new imap server host2.
|
||||
|
||||
* Migration done.
|
||||
|
||||
* Increase the TTL of the MX back to its previous value, usually
|
||||
24 hours, 86400 seconds. You don't want all your email system
|
||||
to break down completely when your DNS are not available
|
||||
temporarily, keeping dns values in cache for a 24h is a savvy
|
||||
practice.
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
|
||||
@ -1,686 +0,0 @@
|
||||
|
||||
$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/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Office365.txt
|
||||
|
||||
|
||||
======================================================================
|
||||
Imapsync tips for Office365.
|
||||
======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. Can I use imapsync to transfer from or to Office365 accounts?
|
||||
|
||||
Q. Can imapsync work for users that are administrators for
|
||||
an Office 365 domain? (quick answer: no)
|
||||
|
||||
Q. Does imapsync support OAUTH2 authentication for Office365 accounts?
|
||||
|
||||
Q. How to sync from Office365 to XXX?
|
||||
|
||||
Q. How to sync from XXX to Office365
|
||||
|
||||
Q. For Office365 I have double and triple-checked the username and
|
||||
password spelling but I still get a "LOGIN failed". Any clue?
|
||||
|
||||
Q. How can I access an Office365 shared mailbox?
|
||||
|
||||
Q. How can I use a shared account as a backup account for several
|
||||
mailboxes and so avoid spending too many dollars in backup accounts?
|
||||
|
||||
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?
|
||||
|
||||
Q. Office365 throttles the sync and says:
|
||||
"Request is throttled. Suggested Backoff Time: 299961 milliseconds".
|
||||
What can I do with that?
|
||||
|
||||
Q. What are the receive and sending limits of Office365?
|
||||
|
||||
Q. The sync fails with many "Trying command when NOT connected!".
|
||||
What can I do?
|
||||
|
||||
Q. How to see or migrate public folders on Office365?
|
||||
R. https://docs.microsoft.com/en-us/exchange/collaboration/public-folders/migrate-to-exchange-online?view=exchserver-2019
|
||||
https://www.exchangesavvy.com/moving-your-public-folders-to-office-365-what-you-need-to-know/
|
||||
|
||||
Q. Office365 refuses to create the folder named "Files" with the error
|
||||
"NO Folder name is reserved". What happens?
|
||||
|
||||
Q. Office365 users complain that a folder named "Files" contains
|
||||
messages with no sender.
|
||||
|
||||
Q. From XXX to Office365, read receipts are all resent again after sync.
|
||||
Even for old messages. How can I fix that?
|
||||
|
||||
Q. DEBUG: IO/Socket/SSL.pm:1043: local error: SSL read error
|
||||
DEBUG: IO/Socket/SSL.pm:1043: local error: SSL read error
|
||||
|
||||
Q. From XXX Office365 I get this error message sometimes:
|
||||
"BAD Command Argument Error 11". What does it mean?
|
||||
|
||||
Q. From XXX to Office365 the flag Flagged does not seem to be well synced.
|
||||
What can I do?
|
||||
|
||||
Q. How to migrate from or to Office 365 with an admin/authuser account?
|
||||
|
||||
Q. Couldn't create folder [trash] "Mailbox already exists".
|
||||
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
======================================================================
|
||||
Q. Can I use imapsync to transfer from or to Office365 accounts?
|
||||
|
||||
R0. Yes. But IMAP access to Office365 account is not always allowed
|
||||
by default so it has to be allowed in the server configuration part.
|
||||
|
||||
https://docs.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/pop3-and-imap4/enable-or-disable-pop3-or-imap4-access
|
||||
https://docs.microsoft.com/en-us/exchange/troubleshoot/configure-mailboxes/pop3-imap-owa-activesync-office-365
|
||||
|
||||
R1. Imapsync doesn't support OAUTH2 authentication for Office365
|
||||
accounts yet. That's not totally true, if you have an access token
|
||||
to access your mailbox then you can authenticate with imapsync this
|
||||
way:
|
||||
|
||||
imapsync ... --oauthaccesstoken1 tokenfile
|
||||
|
||||
where "tokenfile" is a file containing the access token.
|
||||
|
||||
R2. Enable double-step authentication and configure it but after use
|
||||
an "app password" with imapsync. Details:
|
||||
|
||||
a) Go to
|
||||
https://account.microsoft.com/security
|
||||
|
||||
b) Click on "Advanced Security Options"
|
||||
Turn "Two-step verification" on. Follow the steps and finish".
|
||||
|
||||
c) Then now "App passwords" is available.
|
||||
Click on "Create a new app password".
|
||||
Use this password to authenticate with imapsync.
|
||||
|
||||
d) Delete this app password when the job with imapsync is finished.
|
||||
|
||||
R3. Also, check a license is assigned to that account in Office365.
|
||||
|
||||
R4. From Dave Pusey
|
||||
https://github.com/imapsync/imapsync/issues/317#issuecomment-1027776418
|
||||
|
||||
I quote Dave nearly verbatim:
|
||||
|
||||
"I had created an app password, and security defaults are already off.
|
||||
|
||||
I have now figured out the issue.
|
||||
|
||||
Despite the MS365 and EXO admin centers showing that IMAP and Basic
|
||||
Auth were all enabled, it turns out that in Oct 2021, Microsoft began
|
||||
disabling basic auth for all tenants that had have never used it by
|
||||
that point. There was an item in my Message Center from that date
|
||||
saying my tenant was being done.
|
||||
|
||||
You can re-enable it for specific protocols (IMAP in this case) using
|
||||
the diagnostic process detailed at
|
||||
https://techcommunity.microsoft.com/t5/exchange-team-blog/basic-authentication-and-exchange-online-september-2021-update/bc-p/2782230
|
||||
(see the section "Limited Opt Out")
|
||||
|
||||
R5. Microsoft introduced something called "security defaults" which is enabled
|
||||
by default for new tenants. One of the rules blocks IMAP access as of imapsync.
|
||||
|
||||
The funny thing is that you can't disable a single rule of this
|
||||
security package without buying additional licenses.
|
||||
Switching the whole thing off allows the IMAP login.
|
||||
|
||||
Also, disable double-step authentication on the Azure/Active Directory portal.
|
||||
See here:
|
||||
https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/concept-fundamentals-security-defaults
|
||||
Thanks to Stephan Buhre for this R5 answer.
|
||||
|
||||
R6. Are there special characters in the password?
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Authentication_failure.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Windows.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Unix.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Mac.txt
|
||||
|
||||
R7. Triple check the hostname then. Try all of these:
|
||||
* outlook.office365.com
|
||||
* imap-mail.outlook.com
|
||||
* imap.outlook.com
|
||||
|
||||
======================================================================
|
||||
Q. Can imapsync work for users that are administrators for
|
||||
an Office 365 domain? (quick answer: no)
|
||||
|
||||
R. It doesn't seem possible to use imap for administrators, so imapsync
|
||||
won't be able to work for an administrator's mailbox.
|
||||
See:
|
||||
https://github.com/imapsync/imapsync/issues/310#issuecomment-1002396218
|
||||
https://exhaust.lewiscollard.com/post/146866104/office365-to-migadu-migration/
|
||||
|
||||
Solution: as explained in the article above, use Davmail as a proxy to
|
||||
access this mailbox. http://davmail.sourceforge.net/
|
||||
|
||||
Thanks to Lewis Collard for this report and solution.
|
||||
|
||||
======================================================================
|
||||
Q. Does imapsync support OAUTH2 authentication for Office365 accounts?
|
||||
|
||||
R. Yes but partially. Imapsync won't help you getting an access token
|
||||
but if you have one then you can use it with imapsync this way:
|
||||
|
||||
Office365 as source:
|
||||
|
||||
imapsync ... --oauthaccesstoken1 tokenfile1
|
||||
|
||||
Office365 as destination:
|
||||
|
||||
imapsync ... --oauthaccesstoken2 tokenfile2
|
||||
|
||||
======================================================================
|
||||
Q. How to sync from Office365 to XXX?
|
||||
|
||||
R0. IMAP is not enabled by default on Office365, see how to enable it:
|
||||
https://docs.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/pop3-and-imap4/enable-or-disable-pop3-or-imap4-access
|
||||
https://docs.microsoft.com/en-us/exchange/troubleshoot/configure-mailboxes/pop3-imap-owa-activesync-office-365
|
||||
|
||||
If IMAP cannot be enabled or if it doesn't work well, you can try DavMail
|
||||
(http://davmail.sourceforge.net/) which acts as an IMAP gateway
|
||||
through Outlook Web Access.
|
||||
|
||||
R. On Windows, use:
|
||||
|
||||
imapsync.exe ... --office1
|
||||
|
||||
On Unix, use:
|
||||
|
||||
imapsync ... --office1
|
||||
|
||||
Option --office1 is like (release 1.970 or higher):
|
||||
|
||||
imapsync ... --host1 outlook.office365.com \
|
||||
--ssl1 \
|
||||
--exclude "^Files$"
|
||||
|
||||
======================================================================
|
||||
Q. How to sync from XXX to Office365
|
||||
|
||||
R0. IMAP is not enabled by default on Office365, see how to enable it:
|
||||
https://docs.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/pop3-and-imap4/enable-or-disable-pop3-or-imap4-access
|
||||
https://docs.microsoft.com/en-us/exchange/troubleshoot/configure-mailboxes/pop3-imap-owa-activesync-office-365
|
||||
|
||||
If IMAP cannot be enabled or if it doesn't work well, you can try DavMail
|
||||
(http://davmail.sourceforge.net/) which acts as an IMAP gateway
|
||||
through Outlook Web Access.
|
||||
|
||||
R. Here is a command-line summary that solves most encountered issues when
|
||||
migrating to Office365.
|
||||
|
||||
imapsync ... --office2
|
||||
|
||||
which is equivalent to (in imapsync release 1.870 or higher):
|
||||
|
||||
imapsync ... \
|
||||
--host2 outlook.office365.com \
|
||||
--ssl2 \
|
||||
--maxsize 45000000 \
|
||||
--maxmessagespersecond 4 \
|
||||
--disarmreadreceipts \
|
||||
--regexmess "s,(.{10239}),$1\r\n,g" \
|
||||
--f1f2 "Files=Files_renamed_by_imapsync"
|
||||
|
||||
|
||||
On Linux, you can also try the "reformime" command
|
||||
that can be used like:
|
||||
|
||||
imapsync ... --maxlinelengthcmd "reformime -r7"
|
||||
|
||||
To get reformime, install the "maildrop" package.
|
||||
|
||||
On Linux again, there is a good Python script in the tarball that can
|
||||
fix several things that Exchange or O365 have issues with.
|
||||
|
||||
Use it like this:
|
||||
|
||||
./imapsync ... --pipemess W/tools/fix_email_for_exchange.py
|
||||
|
||||
It often does some miracles on messages.
|
||||
|
||||
======================================================================
|
||||
Q. For Office365 I have double and triple-checked the username and
|
||||
password spelling but I still get a "LOGIN failed". Any clue?
|
||||
|
||||
R. Go to "Q. Can I use imapsync to transfer from or to Office365 accounts?"
|
||||
|
||||
======================================================================
|
||||
Q. How can I access an Office365 shared mailbox?
|
||||
|
||||
R. First, create a shared mailbox, for example shared@example.com.
|
||||
Then give full permissions to a licensed account user@example.com.
|
||||
Now with imapsync, use the licensed user login with the syntax:
|
||||
|
||||
user@example.com\shared@example.com
|
||||
|
||||
and the password for user@example.com
|
||||
|
||||
Caveat: Character \ is a special character, so
|
||||
use double-quotes around the user login, like:
|
||||
|
||||
imapsync ... --user1 "user@example.com\shared@example.com"
|
||||
|
||||
Sources:
|
||||
https://adam-hand.com/2017/07/25/connect-a-shared-mailbox-from-o365-to-outlook-via-imap/
|
||||
https://www.arclab.com/en/kb/email/imap-settings-shared-mailbox-office-exchange-online.html
|
||||
https://social.technet.microsoft.com/Forums/en-US/336e02ee-6767-4810-90a0-1352bd7cc9e9/office-365-how-to-access-a-shared-mailbox-using-imap-client?forum=onlineservicesexchange
|
||||
|
||||
======================================================================
|
||||
Q. How can I use a shared account as a backup account for several
|
||||
mailboxes and so avoid spending too many dollars in backup accounts?
|
||||
|
||||
R. Use the option --subfolder2 backup_foo
|
||||
|
||||
imapsync ... --user2 sharedloginsyntax --subfolder2 backup_foo
|
||||
|
||||
To restore, do the reverse with:
|
||||
|
||||
imapsync ... --user1 sharedloginsyntax --subfolder1 backup_foo
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. Office365 fails with "User is authenticated but not connected".
|
||||
|
||||
R1. "The message User is authenticated but not connected is due to a
|
||||
bug in the Office365 server's IMAP implementation. If the client
|
||||
presents a valid user name but an invalid password, the server
|
||||
accepts the login, but subsequent commands fail with the
|
||||
aforementioned error message." Source:
|
||||
https://unix.stackexchange.com/questions/164823/user-is-authenticated-but-not-connected-after-changing-my-exchange-password
|
||||
Thanks to James Abbottsmith for this link and explanation at
|
||||
https://github.com/imapsync/imapsync/issues/32#issuecomment-153561647
|
||||
|
||||
R2. Miguel Alameda reported understanding and solving this issue
|
||||
like this, the context was admin/authuser:
|
||||
"The admin user had not permission in the target mailbox."
|
||||
|
||||
======================================================================
|
||||
Q. I see "NO Maximum size of appendable message has been exceeded"
|
||||
What can I do with that?
|
||||
|
||||
R. Office365 supports send/receive max message sizes of up to 150MB
|
||||
but you need to make changes in your tenant(s) to support it.
|
||||
|
||||
The following PowerShell command will increase the message sizes that
|
||||
can be sent/received. The trick in getting IMAPSync to work is to
|
||||
apply these settings to the accounts performing the migration,
|
||||
NOT the accounts associated with the target mailbox (assuming you're
|
||||
using service accounts to perform transfers on behalf of users).
|
||||
|
||||
Set-mailbox -Identity $UPN -MaxReceiveSize 150mb -MaxSendSize 150mb
|
||||
|
||||
e.g.
|
||||
|
||||
Set-mailbox -Identity "migrationaccount@testtenant.onmicrosoft.com" -MaxReceiveSize 150mb -MaxSendSize 150mb
|
||||
|
||||
We're transferring data between Office 365 tenants so we set these
|
||||
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?
|
||||
|
||||
R. Yes. Try DavMail
|
||||
http://davmail.sourceforge.net/
|
||||
I don't use it myself but a user, Yannick Palanque, reported
|
||||
great results using it.
|
||||
|
||||
======================================================================
|
||||
Q. The sync fails with many "Trying command when NOT connected!".
|
||||
What can I do?
|
||||
|
||||
R. The --debugimap option can show you more details, especially
|
||||
messages like this one:
|
||||
"BAD Request is throttled. Suggested Backoff Time: 178755 milliseconds"
|
||||
In that case, see the next faq item and its fixes.
|
||||
|
||||
======================================================================
|
||||
Q. Office365 throttles the sync and says:
|
||||
"Request is throttled. Suggested Backoff Time: 299961 milliseconds".
|
||||
What can I do with that?
|
||||
|
||||
R. Office365 has throttle mechanisms to limit any huge usage.
|
||||
Sometimes imapsync transfers are too stressful for servers.
|
||||
The following message
|
||||
"Request is throttled. Suggested Backoff Time: 299961 milliseconds"
|
||||
comes from the imap Office365 server, imapsync just reports it
|
||||
before being disconnected from it.
|
||||
|
||||
To solve the throttles issues from 0365, there are two solutions
|
||||
at least:
|
||||
|
||||
R1. Call Microsoft Office365 and ask them to remove the limits on your
|
||||
mailboxes. That's not a joke, they do it for 90 days usually,
|
||||
sometimes only after you reach the second technician you call,
|
||||
the first one usually be not enough competent to understand
|
||||
what you're talking about (I would be glad to remove this bad
|
||||
fact).
|
||||
|
||||
R2. Play with options --maxbytespersecond or --maxmessagespersecond
|
||||
or --exitwhenover
|
||||
|
||||
imapsync ... --maxbytespersecond 100_000
|
||||
|
||||
imapsync ... --maxmessagespersecond 2
|
||||
|
||||
imapsync ... --exitwhenover 1_000_000_000
|
||||
|
||||
I don't know the upper value that avoids the default throttling from 0365
|
||||
and I guess it changes over time.
|
||||
|
||||
======================================================================
|
||||
Q. What are the receive and sending limits of Office365?
|
||||
|
||||
R1. 3600 messages per hour (22 July 2021). Maybe 1200 as imapsync can
|
||||
be viewed as a single sender. Tell me what you experienced,
|
||||
I'll update this point.
|
||||
|
||||
https://docs.microsoft.com/en-us/office365/servicedescriptions/exchange-online-service-description/exchange-online-limits#receiving-and-sending-limits
|
||||
|
||||
In that case, imapsync can adapt to this with (1 message/second = 3600 messages per hour)
|
||||
|
||||
imapsync ... --maxmessagespersecond 1
|
||||
or
|
||||
imapsync ... --maxmessagespersecond 0.33
|
||||
|
||||
R2. I also found "Microsoft theoretically allows for about 300MB of
|
||||
throughput per user per hour." at
|
||||
https://www.systools.in/blog/microsoft-office-365-throttling-policy/
|
||||
|
||||
In that case, imapsync can adapt to this with (83333 bytes/second = 300 MBytes/hour)
|
||||
|
||||
imapsync ... --maxbytespersecond 83333
|
||||
|
||||
======================================================================
|
||||
Q. Office365 refuses to create the folder named "Files" with the error
|
||||
"NO Folder name is reserved". What happens?
|
||||
|
||||
R. The folder Files is a standard folder in Office365.
|
||||
It should not be synced in IMAP. See the next question.
|
||||
|
||||
======================================================================
|
||||
Q. Office365 users complain that a folder named "Files" contains
|
||||
messages with no sender.
|
||||
|
||||
R0. To fix this, add --exclude Files
|
||||
|
||||
imapsync ... --exclude Files
|
||||
|
||||
If you use --office1 then imapsync will add this exclusion
|
||||
automatically like using the option:
|
||||
|
||||
imapsync ... --exclude "^Files$"
|
||||
|
||||
If you use --office2 then imapsync will add a renaming of any
|
||||
"Files" folder on host1, like using the option:
|
||||
|
||||
imapsync ... --f1f2 "Files=Files_renamed_by_imapsync"
|
||||
|
||||
The host2 account ends up with a folder named
|
||||
"Files_renamed_by_imapsync", but no complaining.
|
||||
|
||||
R1. This folder "Files" seems to be a standard folder in Exchange Online,
|
||||
but it is not. This folder contains all attachments in every email
|
||||
that is in the mailbox but without any headers.
|
||||
|
||||
This causes some confusion for users as these appear in their search
|
||||
results as duplicate lines but without the sender details or even
|
||||
the message body.
|
||||
|
||||
This folder seems to be usually hidden so IMAP clients can’t see it,
|
||||
but for some reason sometimes it becomes visible.
|
||||
|
||||
R2. It looks to be a common problem with Exchange Online.
|
||||
I’m not sure what causes the folder to appear.
|
||||
|
||||
More info here:
|
||||
https://answers.microsoft.com/en-us/msoffice/forum/msoffice_o365admin-mso_exchon-mso_o365b/exclude-the-exchange-online-system-folder-called/2adbdf84-db4a-4c7f-ac29-738757980a0d
|
||||
https://answers.microsoft.com/en-us/msoffice/forum/msoffice_o365admin-mso_dep365-mso_o365b/no-sender-emails-in-files-folder/534bae8f-a7d7-4f5f-8ed7-5bad0d5fa23f
|
||||
|
||||
(This question/answer is taken quasi verbatim from Perttu Aaltonen)
|
||||
|
||||
======================================================================
|
||||
Q. From XXX to Office365, read receipts are all resent again after sync.
|
||||
Even for old messages. How can I fix that?
|
||||
|
||||
R. Imapsync can remove the header containing this read-receipt request.
|
||||
|
||||
On Unix or Windows use:
|
||||
|
||||
imapsync ... --disarmreadreceipts
|
||||
|
||||
Since read receipts should be sent for unseen messages that will go
|
||||
to a seen state after the migration, you could be strict and apply
|
||||
the regex only to seen messages.
|
||||
Selecting seen message can be done with:
|
||||
|
||||
imapsync ... --search1 "SEEN" --disarmreadreceipts
|
||||
|
||||
A second run has to be run without the --disarmreadreceipts
|
||||
for unseen messages:
|
||||
|
||||
imapsync ... --search1 "UNSEEN"
|
||||
|
||||
If fact --disarmreadreceipts is just an option equivalent to:
|
||||
|
||||
--regexmess 's{\A(.*?(?! ^$))^Disposition-Notification-To:(.*?)$}{$1X-Disposition-Notification-To:$2}igxms'
|
||||
|
||||
That regex changes the header Disposition-Notification-To. It prefixes
|
||||
it with an X- so that it becomes inactive.
|
||||
Disposition-Notification-To: blabla
|
||||
becomes
|
||||
X-Disposition-Notification-To: blabla
|
||||
|
||||
Thanks to David Karnowski for pointing and solving this issue.
|
||||
|
||||
======================================================================
|
||||
Q. DEBUG: IO/Socket/SSL.pm:1043: local error: SSL read error
|
||||
DEBUG: IO/Socket/SSL.pm:1043: local error: SSL read error
|
||||
|
||||
R1. "SSL read or write error" happens sometimes, it isn't related to
|
||||
imapsync directly but to the ssl underlying library when communicating
|
||||
with Exchange in TLS/SSL encrypted mode.
|
||||
Next runs should put the sync further, so rerun the syncs
|
||||
until it is well completed.
|
||||
|
||||
R2. Another solution is to remove --tls or --ssl options for Exchange
|
||||
and accept clear text syncs.
|
||||
|
||||
R3. See also the FAQ FAQ.SSL_errors.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.SSL_errors.txt
|
||||
|
||||
======================================================================
|
||||
Q. From XXX Office365 I get this error message sometimes:
|
||||
"BAD Command Argument Error 11". What does it mean?
|
||||
|
||||
R. This error message comes from the Office365 IMAP server when it
|
||||
encounters any problem. Most of the time it is one of the following:
|
||||
|
||||
* Some messages are bigger than the size limit.
|
||||
45 MB by default on Office365.
|
||||
I don't know if it can be upped by configuration for Office365.
|
||||
If you can't fix this limit on Office365 then use the option
|
||||
--maxsize 45000000 for 45 MB to tell imapsync to skip those messages.
|
||||
|
||||
imapsync ... --maxsize 45000000 # 45 MB for Office365
|
||||
|
||||
|
||||
* Quota reached. The whole account is full.
|
||||
It can be upped by configuration.
|
||||
|
||||
* You use --synclabels --resynclabels from a previous command line
|
||||
related to syncing from Gmail to Gmail. Remove them.
|
||||
|
||||
* Some messages have some lines too long. Use option --maxlinelength
|
||||
to skip messages whose max line length is over some bytes.
|
||||
--maxlinelength 1000 is an RFC2822 must but most servers support
|
||||
higher values. Office365 supports 10500 characters line length:
|
||||
|
||||
imapsync ... --maxlinelength 10500
|
||||
|
||||
In case you prefer fixing messages with long lines the hard way,
|
||||
instead of skipping them with --maxlinelength 10500, just use:
|
||||
|
||||
On Windows
|
||||
imapsync ... --regexmess "s,(.{10500}),$1\r\n,g"
|
||||
|
||||
On Unix
|
||||
imapsync ... --regexmess 's,(.{10500}),$1\r\n,g'
|
||||
|
||||
Have also in mind that Office365 closes the connection after 10 errors
|
||||
encountered so you might also see "BYE Connection closed" errors from
|
||||
Office365, which means Office365 leaves the session and says goodbye,
|
||||
come back later. Redo some sync then.
|
||||
|
||||
On Linux, there is a good Python script in the tarball that can
|
||||
fix several things that Office365 has issues with.
|
||||
|
||||
Use it like this:
|
||||
|
||||
./imapsync ... --pipemess W/tools/fix_email_for_exchange.py
|
||||
|
||||
It often does some miracles on messages.
|
||||
It's called fix_email_for_exchange because Office365 is Exchange,
|
||||
or at least started to be an Exchange server with the same issues.
|
||||
|
||||
======================================================================
|
||||
Q. From XXX to Office365 the flag Flagged does not seem to be well synced.
|
||||
What can I do?
|
||||
|
||||
R. Use the following trick. Run imapsync twice, one with --regexflag
|
||||
and one without, like this:
|
||||
|
||||
1) imapsync ... --regexflag "s/\\Flagged//g"
|
||||
2) imapsync ...
|
||||
|
||||
You can add --debugflags if you want to see what imapsync gets and
|
||||
does in detail with flags.
|
||||
|
||||
The magic of this trick is on ignoring the \Flagged flag on the first
|
||||
sync and setting it on the second sync, with STORE instead of APPEND.
|
||||
This Office365 bug seems that Office365 gets and sets well the Flagged
|
||||
flag with APPEND in IMAP but then it forgets it with other protocols;
|
||||
With STORE it sets and gets the "\Flagged" flag everywhere.
|
||||
|
||||
Thanks to Dave Murray and Simon Savva for reporting and solving
|
||||
this issue.
|
||||
|
||||
======================================================================
|
||||
Q. How to migrate from or to Office 365 with an admin/authuser account?
|
||||
|
||||
Note from Yago Torres Fernandez:
|
||||
(a working command using admin/authuser on host2 Office 365)
|
||||
|
||||
imapsync ... --authuser2 user_admin@domain.com --user2 user_to_be_migrated@domain.com ^
|
||||
--password2 XXXX --ssl2
|
||||
|
||||
but previously in Office365, you must do something like the following, using Powershell:
|
||||
|
||||
Add-MailboxPermission -identity user_to_be_migrated@domain.com -user user_admin@domain.com -accessrights fullaccess -inheritancetype all
|
||||
|
||||
|
||||
Note from Betsy Lawlor: You can use global modern authentication with two factor
|
||||
on Exchange Online (M365) but you must have "AllowBasicAuthImap" on
|
||||
the admin account you are using to migrate the mail.
|
||||
|
||||
Note from Guido (5 April 2022):The way I fixed it was by turning off security defaults
|
||||
https://docs.microsoft.com/nl-nl/azure/active-directory/fundamentals/concept-fundamentals-security-defaults.
|
||||
You still need to check IMAP access on an account-basis though.
|
||||
|
||||
Remark: PLAIN authentication is the only way to go with --authuser1 for now.
|
||||
So don't use --authmech1 SOMETHING with --authuser1 admin_user,
|
||||
it will not work.
|
||||
Same behavior with the --authuser2 option.
|
||||
|
||||
Note from Rafael Alvarez Ballesteros:
|
||||
When you get an Office365 license you will receive an admin user to handle
|
||||
your licenses and products like admin@yourcompanyname.onmicrosoft.com.
|
||||
This account is the administrator account; some weeks or months ago Microsoft
|
||||
has decided you need to use two-factor authentication by default,
|
||||
so if two factors authentication is enabled you will no be able to sync
|
||||
the mail (it will not connect to host2).
|
||||
OWA (I think this is the two-factor authentication) needs to be disabled
|
||||
globally and enabled individually on the users you want to.
|
||||
One account can have the right to access other mailboxes no matter if admin or
|
||||
any other account but needs to have OWA disabled to be able to connect
|
||||
to the office365 server.
|
||||
|
||||
Note from Martin Paulucci:
|
||||
I had to remove the domain part for the user
|
||||
but not for the admin. Example:
|
||||
|
||||
imapsync ... --authuser2 user_admin@domain.com --user2 user_to_be_migrated
|
||||
|
||||
See also:
|
||||
http://linux-france.tk/prj/imapsync_list/msg02203.html
|
||||
Subject: RE: [imapsync] Office 365 - 'Master User'?
|
||||
Date: Mon, 1 Jun 2015 17:53:54 +0000
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. Couldn't create folder [trash] "Mailbox already exists".
|
||||
|
||||
R. Some servers take care of character cases in folder names,
|
||||
some servers do not, like Exchange. Since not respecting the case
|
||||
can merge two different folders into one then imapsync respects the case.
|
||||
|
||||
For example, if a host1 server has a folder name called "trash"
|
||||
and the host2 server already has a folder "Trash" or "TRASH"
|
||||
then imapsync will try to create the folder "trash" on host2
|
||||
because trash and Trash are different strings. But if host2
|
||||
does not respect character case it will consider folder "trash"
|
||||
already exists and will say it. That's the error message reported
|
||||
by imapsync: "Mailbox already exists". This message comes from the server.
|
||||
|
||||
The folder creation fails but messages are well transferred in
|
||||
so take a look at this warning, understand why it happens
|
||||
and it should be fine most of the time.
|
||||
|
||||
To avoid this warning use --regextrans2 to map the folder names
|
||||
|
||||
imapsync ... --regextrans2 "s/^trash$/Trash/"
|
||||
|
||||
If there are two folders Trash and trash on host1 then both
|
||||
will be merged into only one Trash folder on host2.
|
||||
In case of the option --delete2 is used the regextans2 above becomes
|
||||
mandatory, otherwise imapsync will sync messages from the
|
||||
first Trash and then delete them when syncing trash.
|
||||
|
||||
If you want to avoid merging folders that are considered different
|
||||
on host1 but are considered the same on destination host2 because of
|
||||
case sensitivities and insensitivities, use --nomixfolders
|
||||
|
||||
======================================================================
|
||||
======================================================================
|
||||
@ -1,16 +1,22 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Old_Style_Web_Design.txt,v 1.9 2020/12/02 21:38:13 gilles Exp gilles $
|
||||
$Id: FAQ.Old_Style_Web_Design.txt,v 1.4 2019/11/25 13:08:31 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Old_Style_Web_Design.txt
|
||||
|
||||
=======================================================================
|
||||
Imapsync and its ugly website style
|
||||
Imapsync tips for Gmail accounts.
|
||||
=======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. Why the imapsync website looks so old fashion?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
=======================================================================
|
||||
Q. Why does the imapsync website look so old fashioned?
|
||||
Q. Why the imapsync website looks so old fashion?
|
||||
|
||||
R. Once in a while I receive messages from people complaining about
|
||||
the website style, not that much about the content by the way,
|
||||
@ -23,44 +29,28 @@ Here are several reasons it stays like that for now:
|
||||
|
||||
* I like to do things myself
|
||||
|
||||
* I am lazy
|
||||
|
||||
* I like static web.
|
||||
Although you could argue that I do use some dynamic things, like SSI.
|
||||
That's true, I use Server Side Include, aka SSI, denoted by the ".shtml"
|
||||
extension of some files, instead of the classical ".html" extension.
|
||||
It's because I like dynamic web when the dynamic brings something that
|
||||
can't be done easily with static files.
|
||||
|
||||
* I like static web
|
||||
|
||||
* I'm proud to be w3c compliant
|
||||
https://validator.w3.org/check?uri=https%3A%2F%2Fimapsync.lamiral.info
|
||||
Very very few sites are w3c compliant, it's because nearly all CMS frameworks aren't.
|
||||
Only true crazy people are w3c compliant seekers. I'm one of them.
|
||||
If you know a CMS w3c compliant, tell me, it will be such a crazy news.
|
||||
If you know any web site w3c compliant, tell me, it will be crazy news as well.
|
||||
Update: https://contao.org/ is a CMS and it is w3c compliant! This is astonishing!
|
||||
(Thanks to Markus Rupprecht for this crazy input!)
|
||||
|
||||
Very very few sites are w3c compliant, it's because all CMS frameworks aren't.
|
||||
|
||||
* I prefer to spend more time on the product itself than the showcase
|
||||
|
||||
* The product is a command line, a fancy website to sell a command line
|
||||
makes more disappointed buyers
|
||||
|
||||
|
||||
I agree I could do some sort of A/B experiment and see whether during
|
||||
a month I sell more imapsync on a brand new style B site than
|
||||
the current A one.
|
||||
|
||||
|
||||
Besides, don't misunderstand buyers. The surprising thing about complainers
|
||||
is that all are web designers, none of them is a user not in the webdesign branch.
|
||||
|
||||
is that all are web designers, none is a user not in the webdesign branch.
|
||||
I even received some phone call from a buyer saying: "I saw your website
|
||||
and I told to myself: this can't be a fake one, the product must be a good one".
|
||||
|
||||
Another folk like me:
|
||||
http://keyhut.com/pos.htm
|
||||
(well, not w3c compliant, he is not that mad)
|
||||
|
||||
So maybe one day...
|
||||
|
||||
(well, not w3c compliant, since only mad people try to be w3c compliant)
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.OnlineUI.txt,v 1.36 2022/09/14 11:18:05 gilles Exp gilles $
|
||||
$Id: FAQ.OnlineUI.txt,v 1.20 2019/12/06 14:51:03 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -7,294 +7,130 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.OnlineUI.txt
|
||||
|
||||
=====================================================================
|
||||
Imapsync tips about the online visual user interfaces
|
||||
https://i005.lamiral.info/X/
|
||||
https://imapsync.lamiral.info/X/
|
||||
=====================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. Can I launch several imap synchronizations on the visual
|
||||
user interface /X?
|
||||
|
||||
Q. How secure is the online visual user interface /X?
|
||||
|
||||
Q. Does the online service store any sensitive information
|
||||
like my passwords?
|
||||
Q. Will I have any issues with browser timing out? What happens
|
||||
if the browser connection is closed for whatever reason?
|
||||
|
||||
Q. I want to switch from the visual interface /X to the
|
||||
imapsync command line or to the script examples
|
||||
https://imapsync.lamiral.info/#DOC_BASIC
|
||||
What should I know?
|
||||
|
||||
Q. Shall I have issues when the browser times out?
|
||||
What happens if the browser connection is closed for whatever reason?
|
||||
|
||||
Q. Shall I have issues when the webserver times out? What happens
|
||||
if the web server closes the connection for whatever reason?
|
||||
|
||||
Q. The sync stalls at the beginning, just after a line like:
|
||||
"Host1: xxx says it has CAPABILITY for AUTHENTICATE LOGIN"
|
||||
What is the problem?
|
||||
|
||||
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?
|
||||
|
||||
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?
|
||||
|
||||
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.
|
||||
R0. 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.
|
||||
|
||||
A1. Some figures
|
||||
R1. Some figures
|
||||
|
||||
Date of this report: 24 December 2021. Happy Christmas!
|
||||
Date of this report: 6 December 2019.
|
||||
|
||||
The online imapsync service /X started 9 January 2017,
|
||||
5 years ago (1810 days of service).
|
||||
The online imapsync service /X started 9 January 2017
|
||||
(1061 days of service).
|
||||
|
||||
On average, /X has 51 users per day, each user launches on average
|
||||
6 account migrations, from just 1 launch to many (hundreds).
|
||||
In average, /X has 50 users per day lunching in mean 6
|
||||
different migrations, from just one launch to many (hundreds).
|
||||
|
||||
The total volume /X transferred so far is around 240 TiB coming
|
||||
from nearly 520 000 imap account migrations and 810 million email messages.
|
||||
The total volume /X transferred is around 101 TiB in more
|
||||
than 219 thousands email imap migrations,
|
||||
340 millions email messages.
|
||||
|
||||
A2. Pros & Cons
|
||||
R2. Pros & Cons
|
||||
|
||||
The online imapsync service /X runs on HTTPS only, with a letsencrypt
|
||||
certificate, an up to date certificate overall rated "A+" at
|
||||
https://www.ssllabs.com/ssltest/analyze.html?d=imapsync.lamiral.info
|
||||
The online imapsync service /X runs on https only, with a
|
||||
letsencrypt certificate, a certificate overall rated "A+" at
|
||||
https://www.ssllabs.com/ssltest/analyze.html?d=i005.lamiral.info
|
||||
|
||||
Because of the HTTPS usage, what the users enter in their browser, the
|
||||
imap logins and passwords, can't be eavesdropped on the network.
|
||||
Because of the https usage, what the users enter in their browser,
|
||||
the imap logins and passwords, can't be eavesdropped on the network.
|
||||
|
||||
Imapsync itself takes care of encryption for the imap sessions, if
|
||||
possible. First, imapsync tries to use SSL on port 993, then TLS on
|
||||
port 143 if the servers announce TLS, then no encryption at all.
|
||||
Concerning encryption, what is done with the source imap server host1
|
||||
Imapsync itself takes care about encryption for the imap sessions,
|
||||
if possible: It tries SSL first on port 993, then TLS on port 143
|
||||
if the servers announces TLS, then no encryption at all.
|
||||
Concerning encryption, what is done with the source imap server host1
|
||||
is independent of what is done with the destination imap server host2.
|
||||
|
||||
On the date of 24 December 2021, there is no security problem detected
|
||||
or reported to me (Gilles LAMIRAL), so far.
|
||||
At the date of 6 December 2019, there is no security problem
|
||||
detected or reported to me (Gilles LAMIRAL), so far.
|
||||
Feel free to attack the service and feel free to report any
|
||||
hole encountered. Have in mind I can watch what you try
|
||||
from the server side and take measure if the service suffers from
|
||||
your acts.
|
||||
|
||||
Concerning the Log4j threats, the imapsync server doesn't use Log4j at
|
||||
all, so it should be safe about this issue.
|
||||
As the owner of the service, it could have been 219 000 pairs of
|
||||
credentials collected and nearly 101 terabytes of email messages.
|
||||
I haven't kept them but I can't prove I haven't. It's just trust,
|
||||
like nearly every online service in the universe.
|
||||
|
||||
Feel free to attack the service and feel free to report any hole
|
||||
encountered. Have in mind that I can watch what you do from the
|
||||
server-side, and then take measures if the service suffers from your
|
||||
acts. Drop me a note before will be fair play and I will let you act
|
||||
as harsh as you can.
|
||||
The imap server certificates are not checked for authenticity
|
||||
(by default) because too many imap servers are crappy configured
|
||||
regarding certified certificates.
|
||||
|
||||
As the owner of the service, it could have been 520 000 pairs of
|
||||
credentials collected and nearly 240 terabytes of email messages.
|
||||
That's massive. I haven't kept them but I can't prove I haven't. It's
|
||||
just trust, like nearly every online service in the universe.
|
||||
|
||||
Concerning imapsync transfers, the imap server certificates are not
|
||||
checked for authenticity by default because too many imap servers are
|
||||
crappy configured regarding their certified certificates.
|
||||
|
||||
This default behavior is chosen like this because users of /X
|
||||
want their emails transferred, instead of being not transferred
|
||||
This default behavior is chosen like this because users of /X
|
||||
want their emails transferred, instead of being not transferred
|
||||
because of an incompetent imap server sysadmin.
|
||||
|
||||
I admit that this part, checking imap ssl/tls certificates,
|
||||
could be improved from my side by including well known
|
||||
certificates directly in imapsync.
|
||||
I admint that this part, checking imap ssl/tls certificates,
|
||||
could be improved from my side by including well known
|
||||
certificates directly in imapsync.
|
||||
|
||||
If an imap server doesn't honor ssl nor tls, then logins, passwords
|
||||
and everything will go clear text during the imap transfers. That's
|
||||
not good at all! But what "comforts" me is that if an imap server does
|
||||
only clear text transfers, then it's also true for all the imap
|
||||
sessions the account owner encounters, imapsync is just one of them;
|
||||
the imap servers are then always unsecured for any imap software
|
||||
client.
|
||||
If the imap servers don't honor ssl nor tls, then logins, passwords
|
||||
and everything will go clear text during the imap transfers.
|
||||
That's not good at all but what "comforts" me is that if the
|
||||
imap servers do only clear text transfers, then it's also true
|
||||
for all imap sessions the accounts' owner encounters,
|
||||
imapsync is just one of them.
|
||||
|
||||
Last point, who could be sure that no cracker cracked the online hosts
|
||||
and that he isn't currently sniffing the credentials?
|
||||
Last point, who could be sure that no cracker cracked the online
|
||||
hosts and that he isn't currently sniffing the credentials?
|
||||
|
||||
No one! I'm not sure myself, even if I do take care of that
|
||||
possibility. So changing the imap accounts passwords after
|
||||
the sync is a safe and recommended practice! You can even
|
||||
change the password just after imapsync has started its job,
|
||||
just after a successful login. This way you know the previously
|
||||
given password is no longer working just after imapsync has
|
||||
started its job.
|
||||
No one, I'm not sure myself, even if I do take care of that
|
||||
possibility. So changing the imap accounts passwords after
|
||||
a sync is a safe and recommended practice!
|
||||
|
||||
=====================================================================
|
||||
Q. Does the online service store any sensitive information
|
||||
like my passwords?
|
||||
Q. Will I have any issues with browser timing out? What happens
|
||||
if the browser connection is closed for whatever reason?
|
||||
|
||||
No.
|
||||
|
||||
The online passwords are kept by your browser. The goal is that the
|
||||
next time you run a sync from your browser, all the parameters are
|
||||
already there without having to re-enter them. The save is done when
|
||||
you click on the "Sync or resync" green button. So, if you don't want
|
||||
your browser to keep your password, enter a wrong one or empty the
|
||||
password field and click on the "Sync or resync" green button, the
|
||||
wrong password will be saved in your browser and no sync will be done,
|
||||
since a correct login is mandatory to do anything on your mailboxes.
|
||||
|
||||
=====================================================================
|
||||
Q. I want to switch from the visual interface /X to the
|
||||
imapsync command line or to the script examples
|
||||
https://imapsync.lamiral.info/#DOC_BASIC
|
||||
What should I know?
|
||||
|
||||
A. Let's do some ascii art.
|
||||
The visual interface looks roughly like this, for the textfields input part:
|
||||
|
||||
+------------------------------------------+------------------------------------------+
|
||||
| IMAP source Mailbox | IMAP destination Mailbox |
|
||||
| | |
|
||||
| Login (usually an email address) | Login (usually an email address) |
|
||||
| | |
|
||||
| test1 | test2 |
|
||||
| | |
|
||||
| Password | Password |
|
||||
| | |
|
||||
| secret1 | secret2 |
|
||||
| | |
|
||||
| IMAP Server hostname (or its IP address) | IMAP Server hostname (or its IP address) |
|
||||
| | |
|
||||
| test1.lamiral.info | test2.lamiral.info |
|
||||
| | |
|
||||
+------------------------------------------+------------------------------------------+
|
||||
|
||||
Notice the 6 examples values I put in the previous "picture":
|
||||
|
||||
* test1
|
||||
* secret1
|
||||
* test1.lamiral.info
|
||||
|
||||
* test2
|
||||
* secret2
|
||||
* test2.lamiral.info
|
||||
|
||||
|
||||
The corresponding imapsync command line on Windows is:
|
||||
|
||||
imapsync.exe --host1 "test1.lamiral.info" --user1 "test1" --password1 "secret1" ^
|
||||
--host2 "test2.lamiral.info" --user2 "test2" --password2 "secret2"
|
||||
|
||||
The order of the parameters is whatever you want as long as you respect each pair
|
||||
like: --optionname "value"
|
||||
|
||||
There is no need to type this in a command prompt window, just use the example script
|
||||
https://imapsync.lamiral.info/examples/imapsync_example.bat
|
||||
|
||||
|
||||
The corresponding imapsync command line on Linux is:
|
||||
|
||||
imapsync --host1 "test1.lamiral.info" --user1 "test1" --password1 "secret1" \
|
||||
--host2 "test2.lamiral.info" --user2 "test2" --password2 "secret2"
|
||||
|
||||
There is no need to type this in a command prompt window, just use the example script
|
||||
https://imapsync.lamiral.info/examples/imapsync_example.sh
|
||||
|
||||
=====================================================================
|
||||
Q. Shall I have issues with the browser timing out?
|
||||
What happens if the browser connection is closed for whatever reason?
|
||||
|
||||
A. A browser connection closed closes also the imapsync process,
|
||||
ie, the sync is ended right away.
|
||||
R. It stops the imapsync process, ie, the sync is ended right away.
|
||||
|
||||
Further comments on this behavior.
|
||||
|
||||
When using the /X interface there are three connections.
|
||||
One connection is the Browser/WebServer connection,
|
||||
the two other connections are the WebServer/ImapServers
|
||||
When using the /X interface there are three connections.
|
||||
One connection is the Browser/WebServer connection,
|
||||
the two others connections are the WebServer/ImapServers
|
||||
connections (imapsync stuff).
|
||||
|
||||
If the Browser/WebServer connection timeouts or ends,
|
||||
the imapsync sync is also ended immediately by the remote
|
||||
Apache HTTPS server. Technically, Apache sends a TERM signal
|
||||
to the imapsync process, then wait some seconds before
|
||||
sending a KILL signal if the imapsync process is still alive.
|
||||
If the Browser/WebServer connection is timeout or ended,
|
||||
the imapsync sync is also ended immediately by the remote
|
||||
Apache https server. Technically, Apache sends a TERM signal
|
||||
to the imapsync process, then wait some seconds before
|
||||
sending a KILL signal if it is still alive.
|
||||
|
||||
You can relaunch the sync with the "Sync!" button, at any time.
|
||||
If the "Sync!" button is gray/inactive then just reload
|
||||
You can relaunch a sync again with "Sync!" button, at any time.
|
||||
If the "Sync!" button is gray/inactive then just reload
|
||||
the page (F5 or similar), and reenter the credentials.
|
||||
|
||||
If the interface tells you that the sync is already going on,
|
||||
it may be that the sync is running from another browser or place.
|
||||
If the interface tells you that a sync is already going on,
|
||||
it may be that a sync is running from another browser or place.
|
||||
You can stop this sync with the "Abort!" button from any /X
|
||||
tab/window, even from another browser or place. To be able
|
||||
to abort with success, you have to give the same account
|
||||
to abort with success, you have to give the same account
|
||||
parameters, same credentials, or imapsync will ignore the demand.
|
||||
|
||||
In other words, you can try safely to launch several parallel
|
||||
runs between the same mailboxes. Open a new tab/windows with /X,
|
||||
and start the same sync. It's safe, the /X page will say that
|
||||
there is already one sync running and it will present
|
||||
In other words, you can try safely to launch several parallel
|
||||
runs between the same mailboxes. Open a new tab/windows with /X,
|
||||
and start the exact same sync. It's safe, the /X will say, if any, that
|
||||
there is already a current sync running on them and it will present
|
||||
the logfile running the sync like a "tail -f" command (isn't that magic?).
|
||||
|
||||
=====================================================================
|
||||
Q. Shall I have issues when the webserver times out? What happens
|
||||
if the web server closes the connection for whatever reason?
|
||||
|
||||
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
|
||||
https://imapsync.lamiral.info/X/
|
||||
is 3600 secondes, one hour.
|
||||
|
||||
=====================================================================
|
||||
Q. The sync stalls at the beginning, just after a line like:
|
||||
"Host1: xxx says it has CAPABILITY for AUTHENTICATE LOGIN"
|
||||
What is the problem?
|
||||
|
||||
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
|
||||
connections 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/
|
||||
|
||||
=====================================================================
|
||||
=====================================================================
|
||||
|
||||
23
FAQ.d/FAQ.Oracle-UCS.txt
Normal file
23
FAQ.d/FAQ.Oracle-UCS.txt
Normal file
@ -0,0 +1,23 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Oracle-UCS.txt,v 1.5 2018/05/24 11:34:30 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Oracle-UCS.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Imapsync tips for Oracle-UCS. Specific issues.
|
||||
=======================================================================
|
||||
|
||||
Oracle-UCS was previously Sun JES, IPlanet, etc.
|
||||
|
||||
"NO Message contains NUL characters"
|
||||
--skipmess 'm/(\x00)+\Z/'
|
||||
|
||||
"Message contains invalid header"
|
||||
--skipmess 'm/[\x80-\xff]/'
|
||||
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.POP3.txt,v 1.6 2022/04/05 13:48:52 gilles Exp gilles $
|
||||
$Id: FAQ.POP3.txt,v 1.5 2019/07/27 20:18:37 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -24,8 +24,8 @@ Q. Can I use imapsync to migrate emails from pop3 server to imap server?
|
||||
|
||||
R1. No, but you can migrate emails from a pop3 server to an imap server
|
||||
with the command line tool pop2imap:
|
||||
http://linux-france.tk/prj/pop2imap/
|
||||
http://linux-france.tk/prj/pop2imap/README
|
||||
http://www.linux-france.org/prj/pop2imap/
|
||||
http://www.linux-france.org/prj/pop2imap/README
|
||||
|
||||
R2. Yes, sometimes, because many pop3 servers runs in parallel
|
||||
with an imap server on exactly the same mailboxes. They serve
|
||||
@ -57,7 +57,7 @@ synchronization, but don't count on that...)
|
||||
R2. Context and condition: you know which users use POP.
|
||||
|
||||
If the pop mailboxes are known then all the INBOX messages can be moved
|
||||
in an subfolder called INBOX_backup for example. To help you do this,
|
||||
in an subfolder called INBOX_backup for example. Ti help you do this,
|
||||
the tool pop2imap transfers messages from POP to IMAP, without duplicates,
|
||||
without deleting the messages transferred, by default, and can put them
|
||||
in any subfolder you want to. It can also delete them and, that way,
|
||||
@ -66,7 +66,7 @@ We're here to do a good job with what we have, do we?
|
||||
|
||||
In case of Dovecot for example, the magic can be there since already
|
||||
fetched messages via POP are seen as \Seen in IMAP but the new messages are
|
||||
seen as new messages, thanks to the Dovecot developer Timo's cleverness!
|
||||
seen as new messages, thanks to the Dovecot developper Timo's cleverness!.
|
||||
So it is possible to sync back only the new messages to INBOX,
|
||||
with "imapsync ... --search UNSEEN ...", and then POP users won't see the old
|
||||
messages come back but they will see the new messages and fetch them via POP.
|
||||
@ -77,14 +77,14 @@ R3. Context and condition: you know nothing
|
||||
Do R2 without the sync back of UNSEEN messages. It can't hurt to have a backup
|
||||
of INBOX in a subfolder for IMAP or POP users.
|
||||
|
||||
R4. Here are some points, an analysis that made me propose the not
|
||||
too bad but not very good R2 answer.
|
||||
R4. Here are some points, an analyse that made me purpose the not
|
||||
to bad but not very good R2 answer.
|
||||
|
||||
There was a discussion about this issue on the imapsync mailing-list:
|
||||
http://linux-france.tk/prj/imapsync_list/msg02622.html
|
||||
http://linux-france.tk/prj/imapsync_list/msg02623.html
|
||||
http://www.linux-france.org/prj/imapsync_list/msg02622.html
|
||||
http://www.linux-france.org/prj/imapsync_list/msg02623.html
|
||||
My reply was not very good
|
||||
http://linux-france.tk/prj/imapsync_list/msg02624.html
|
||||
http://www.linux-france.org/prj/imapsync_list/msg02624.html
|
||||
It's because I wrote pop2imap and it uses a stateless
|
||||
mechanism to avoid duplicates, I wasn't aware of UIDL when I wrote pop2imap,
|
||||
and later when I entered the discussion.
|
||||
|
||||
@ -1,38 +0,0 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Passwords_on_Mac.txt,v 1.1 2020/02/12 11:25:48 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Mac.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Imapsync issues with passwords on Mac OS X.
|
||||
=======================================================================
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. On Mac, some passwords contain some weird *()",;&~ characters.
|
||||
Login fails.
|
||||
|
||||
R1. Enclose the password within single-quotes in the imapsync
|
||||
command line:
|
||||
|
||||
imapsync ... --password1 'passw*()",;&rd~'
|
||||
|
||||
CAVEAT: Be careful to use quotes and double-quotes characters encoded
|
||||
from the ASCII table. How to be sure of that?
|
||||
Mac OS X has a "use smart quotes" option. This is particularly handy
|
||||
when typesetting and the system automatically substitutes opening and
|
||||
closing quotes. It isn't handy when editing the imapsync command line.
|
||||
|
||||
Disable "use smart quotes and dashes" in the Keyboard configuration,
|
||||
located in the "Text" tab. It will fix this unfortunate character
|
||||
transformation. You can put it back later.
|
||||
|
||||
R2. Change the password in order to keep only f...ing normal characters,
|
||||
ie, alphanumerics like aAzZ-_09, and minus and underscore.
|
||||
Make it long and random if strong security is your concern.
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Passwords_on_Unix.txt,v 1.7 2020/12/04 11:46:54 gilles Exp gilles $
|
||||
$Id: FAQ.Passwords_on_Unix.txt,v 1.6 2019/04/02 17:19:21 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -12,23 +12,19 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Passwords_on_Unix.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. On Unix, some passwords contain some weird *()$,";&~ characters.
|
||||
Q. On Unix, some passwords contain some weird *(),;&~ characters.
|
||||
Login fails.
|
||||
|
||||
R1. Enclose the password within single-quotes in the imapsync
|
||||
command line:
|
||||
|
||||
imapsync ... --password1 'passw*()`"$,;&rd~'
|
||||
imapsync ... --password1 'passw*(),;&rd~'
|
||||
|
||||
|
||||
R2. Change the password to keep only f...ing normal characters.
|
||||
Make it long and random if strong security is your concern.
|
||||
|
||||
R3. If R1 fails, with very old imapsync or old Mail::IMAPClient Perl module,
|
||||
R2. If R1 fails, with very old imapsync or old Mail::IMAPClient Perl module,
|
||||
try also using double-quotes within single-quotes. It will enclose
|
||||
the password within double-quotes in the imap LOGIN command:
|
||||
|
||||
imapsync ... --password1 '"passw*()`$,;&rd~"'
|
||||
imapsync ... --password1 '"passw*(),;&rd~"'
|
||||
|
||||
Old Mail::IMAPClient 3.37 is a bad horse having this issue solved
|
||||
by this double-quotes trick.
|
||||
@ -36,5 +32,9 @@ fixed in 3.38 https://metacpan.org/changes/distribution/Mail-IMAPClient
|
||||
version 3.38: Tue Feb 9 02:48:21 UTC 2016
|
||||
- rt.cpan.org#110273: failure to quote password values
|
||||
(regression introduced in 3.36 via fix for rt.cpan.org#100601)
|
||||
|
||||
R3. Change the password to keep only f...ing normal characters.
|
||||
Make it long and random if strong security is your concern
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -20,7 +20,7 @@ http://www.dostips.com/forum/viewtopic.php?f=3&t=1733
|
||||
|
||||
=======================================================================
|
||||
Q. On Windows, some passwords contain $ or other special characters
|
||||
like one more of the nine characters $%&<>|^"!
|
||||
like one more more of the nine characters $%&<>|^"!
|
||||
Login fails.
|
||||
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
|
||||
$Id: FAQ.Principles.txt,v 1.10 2021/04/18 13:00:00 gilles Exp gilles $
|
||||
$Id: FAQ.Principles.txt,v 1.5 2019/09/05 13:33:46 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -13,37 +13,29 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Principles.txt
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. Give me some design ideas of imapsync
|
||||
Q. What is the bandwidth used by imapsync?
|
||||
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
=======================================================================
|
||||
Q. Give me some design ideas of imapsync
|
||||
|
||||
R.
|
||||
|
||||
* No configuration file
|
||||
* Stateless
|
||||
* Rsync in mind
|
||||
* Reliable
|
||||
* Robust
|
||||
* The user is not an expert, help him with:
|
||||
* Good behavior by default.
|
||||
* No harm by default.
|
||||
* Prefer fixing an issue in the code than documenting the issue
|
||||
* Inline help suggestions
|
||||
|
||||
Consequences of those design ideas:
|
||||
|
||||
* Stateless:
|
||||
|
||||
* A sync can be done by another tool before or after imapsync, it is
|
||||
safe as long as the other tools don't modify the messages' headers
|
||||
"Message-Id:" and "Received:", or at least "Message-Id:".
|
||||
|
||||
* Ready to run in a container.
|
||||
|
||||
Q. What is the bandwidth used by imapsync?
|
||||
|
||||
R. From the host where imapsync runs, it opens two imap connections,
|
||||
one with the source account at host1, one with the destination
|
||||
account at host2.
|
||||
|
||||
So, the global bandwidth used is twice the volume of the source
|
||||
account, one volume to download the messages from host1,
|
||||
one volume to upload those messages to host2.
|
||||
|
||||
If the host2 is already filled with the messages, imapsync doesn't
|
||||
transfer them and then the volume transferred is small, just the IMAP
|
||||
commands to identify the messages on both sides.
|
||||
|
||||
There is no local cache of the email messages, except when a
|
||||
message is very big, it is temporarly saved locally.
|
||||
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Release_Checklist.txt,v 1.27 2022/09/16 05:35:27 gilles Exp gilles $
|
||||
$Id: FAQ.Release_Checklist.txt,v 1.16 2020/01/04 09:35:36 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -10,69 +10,35 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Release_Checklist.txt
|
||||
=======================================================================
|
||||
|
||||
|
||||
Checklist before making a new release:
|
||||
|
||||
- Make "imapsync --tests" pass on Linux
|
||||
- Make "imapsync --tests" pass on Mac
|
||||
- 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 linuxtestslive mactestslive mactestslive6
|
||||
|
||||
Checklist before release a new release:
|
||||
|
||||
- Add a new section in S/news.shtml reading "rlog imapsync"
|
||||
- In case of a new dependency, add it to all the INSTALL/* files.
|
||||
- Generate the README
|
||||
|
||||
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
|
||||
- Read slowly README_Windows.txt
|
||||
- Read slowly the TUTORIAL_Unix file in html
|
||||
|
||||
- Make "rcsdiff imapsync" give nothing relevant and exit 0
|
||||
|
||||
- make ci pass.
|
||||
|
||||
- Review the newsletter by running:
|
||||
m4 -P W/ml_announce.in.txt
|
||||
|
||||
- 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
|
||||
- Report values of --gmail1 --gmail2 to FAQ.Gmail.txt
|
||||
- Report values of --exchange* to FAQ.Exchange.txt
|
||||
- Report values of --office* to FAQ.Office365.txt
|
||||
- Report values of --exchange* --office* to FAQ.Exchange.txt
|
||||
|
||||
- /X verify direct cgi
|
||||
- /X verify under noscript with firefox
|
||||
- /X verify under private with chrome
|
||||
|
||||
- Check the binaries imapsync.exe imapsync_32bit.exe with
|
||||
- Check the binaries imapsync.exe imapsync_64bit.exe with
|
||||
https://www.virustotal.com/
|
||||
https://www.metadefender.com/
|
||||
|
||||
|
||||
- make dist
|
||||
- verify on Windows the zip extraction and simple execution of imapsync_example.bat
|
||||
- verify binary version matches imapsync script version
|
||||
- make publish
|
||||
- verify VERSION is uploaded
|
||||
|
||||
|
||||
@ -1,88 +1,60 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.SSL_errors.txt,v 1.18 2022/01/14 21:20:37 gilles Exp gilles $
|
||||
$Id: FAQ.SSL_errors.txt,v 1.9 2019/12/11 15:38:37 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.SSL_errors.txt
|
||||
|
||||
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Imapsync SSL errors
|
||||
======================================================================
|
||||
=======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. What is the error
|
||||
DEBUG: .../IO/Socket/SSL.pm:1177: global error: Undefined SSL object
|
||||
|
||||
Q. What are the errors
|
||||
DEBUG: .../IO/Socket/SSL.pm:1165: local error: SSL write error
|
||||
or
|
||||
DEBUG: .../IO/Socket/SSL.pm:1088: local error: SSL read error
|
||||
DEBUG: .../IO/Socket/SSL.pm:1165: local error: SSL write error
|
||||
or
|
||||
DEBUG: .../IO/Socket/SSL.pm:1088: local error: SSL read error
|
||||
|
||||
Q. What can I do to avoid those "SSL read/write errors"?
|
||||
|
||||
Q. What are the errors
|
||||
SSL connect attempt failed SSL
|
||||
Q. SSL connect attempt failed SSL
|
||||
routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
or
|
||||
SSL connect attempt failed SSL
|
||||
SSL routines:ssl_choose_client_version:unsupported protocol
|
||||
|
||||
Q. What is the error
|
||||
fatal SSL error: SSL connect attempt failed with unknown error
|
||||
SSL wants a read first
|
||||
|
||||
Q. How to see the certificate and identify problems in it?
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
======================================================================
|
||||
Q. What is the error
|
||||
DEBUG: .../IO/Socket/SSL.pm:1177: global error: Undefined SSL object
|
||||
|
||||
R. It's a fake error from the Perl Module IO::Socket::SSL
|
||||
Imapsync works well despite this fake warning but it's disturbing
|
||||
when you encounter errors due to something else, you believe it's
|
||||
the issue but no, it's something else to deal with.
|
||||
|
||||
This fake error is fixed in IO::Socket::SSL release 2.073
|
||||
https://metacpan.org/dist/IO-Socket-SSL/changes
|
||||
"fix #110 - prevent internal error warning in some cases"
|
||||
https://github.com/noxxi/p5-io-socket-ssl/issues/110
|
||||
|
||||
imapsync.exe release 2.178 uses this fixed 2.073 IO::Socket::SSL
|
||||
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Q. What are the errors
|
||||
DEBUG: .../IO/Socket/SSL.pm:1165: local error: SSL write error
|
||||
or
|
||||
DEBUG: .../IO/Socket/SSL.pm:1088: local error: SSL read error
|
||||
DEBUG: .../IO/Socket/SSL.pm:1165: local error: SSL write error
|
||||
or
|
||||
DEBUG: .../IO/Socket/SSL.pm:1088: local error: SSL read error
|
||||
|
||||
|
||||
R1. As they claim, those errors are SSL errors. SSL is not directly
|
||||
done by imapsync but by an underlying Perl module called
|
||||
IO::Socket::SSL. Those errors arise sometimes and sometimes
|
||||
they form a series that ends with imapsync auto-abortion.
|
||||
Those errors happen with some hosts but not with others,
|
||||
it's often Exchange or Office365. I don't know what exactly happens.
|
||||
Those errors happen more often on Windows than on Linux.
|
||||
R1.Like they claim, those errors are SSL errors. SSL is not directly
|
||||
done by imapsync but by an underlying Perl module called
|
||||
IO::Socket::SSL. Those errors arise sometimes and sometimes
|
||||
they form a serie that ends with imapsync auto-abortion.
|
||||
Those errors happen with some hosts but not with others,
|
||||
it's often Exchange or Office365. I don't know what exactly happens.
|
||||
Those errors happen more often on Windows than on Linux.
|
||||
|
||||
|
||||
======================================================================
|
||||
=======================================================================
|
||||
Q. What can I do to avoid those "SSL read/write errors"?
|
||||
|
||||
R0. Windows users: upgrade to imapsync.exe release 1.836 (or next ones)
|
||||
Those errors appear less often with imapsync releases post 1.836
|
||||
Those errors don't appear with recent releases, post 1.836
|
||||
|
||||
R1. Remove all ssl/tls encryption
|
||||
|
||||
imapsync ... --nossl1 --notls1 --nossl2 --notls2
|
||||
|
||||
R2. If you don't want to quit encryption, rerun imapsync until the
|
||||
complete sync is over. Those errors are not at the same place
|
||||
each time, so imapsync will sync the remaining messages at each run
|
||||
until none remains.
|
||||
complete sync is over. Those errors are not at the same place
|
||||
each time, so imapsync will sync remaining messages at each run
|
||||
until none remains.
|
||||
|
||||
R3. Run imapsync on a Linux machine, a VM is ok, there are less
|
||||
SSL errors on Unix.
|
||||
@ -94,20 +66,15 @@ R5. Set up a ssltunnel proxy to the host.
|
||||
Read the file FAQ.Security.txt for an example to set up
|
||||
a ssltunnel proxy.
|
||||
|
||||
======================================================================
|
||||
Q. What are the errors
|
||||
SSL connect attempt failed SSL
|
||||
=======================================================================
|
||||
Q. SSL connect attempt failed SSL
|
||||
routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
|
||||
or
|
||||
SSL connect attempt failed SSL
|
||||
SSL routines:ssl_choose_client_version:unsupported protocol
|
||||
|
||||
|
||||
R1. Use:
|
||||
|
||||
imapsync ... --sslargs1 SSL_cipher_list=DEFAULT
|
||||
imapsync ... --sslargs1 'SSL_cipher_list=DEFAULT'
|
||||
or
|
||||
imapsync ... --sslargs2 SSL_cipher_list=DEFAULT
|
||||
imapsync ... --sslargs2 'SSL_cipher_list=DEFAULT'
|
||||
|
||||
depending on where the error occurs, host1 or host2 or both.
|
||||
|
||||
@ -115,27 +82,13 @@ R2. If it doesn't work, I let you try other things,
|
||||
I quote the "SSL_version" section of
|
||||
https://metacpan.org/pod/IO::Socket::SSL (Module version: 2.066)
|
||||
|
||||
imapsync ... --sslargs1 SSL_cipher_list=DEFAULT
|
||||
imapsync ... --sslargs1 SSL_version=SSLv2
|
||||
imapsync ... --sslargs1 SSL_version=SSLv23
|
||||
imapsync ... --sslargs1 SSL_version=SSLv3
|
||||
imapsync ... --sslargs1 SSL_version=TLSv1
|
||||
imapsync ... --sslargs1 SSL_version=TLSv1_1
|
||||
imapsync ... --sslargs1 SSL_version=TLSv1_2
|
||||
imapsync ... --sslargs1 SSL_version=TLSv1_3
|
||||
|
||||
Those examples are for host1. For host2, use --sslargs2 instead.
|
||||
Feedback on what worked for you is welcome!
|
||||
|
||||
A loop to check every version and print the good ones:
|
||||
|
||||
for v in SSLv2 SSLv23 SSLv3 TLSv1 TLSv1_1 TLSv1_2 TLSv1_3; do
|
||||
imapsync ... --sslargs1 SSL_version=$v && GOOD="$GOOD $v"
|
||||
done
|
||||
echo "$GOOD"
|
||||
|
||||
I reproduce below the documentation of the underlying Perl
|
||||
module IO::Socket::SSL used by imapsync:
|
||||
|
||||
SSLv2 and TLSv12 are just examples depending on your context
|
||||
(--ssl1 or --tls1, and also the imap server encryption scheme)
|
||||
|
||||
Feedback on what worked for you (and possibly hy) is welcome!
|
||||
|
||||
https://metacpan.org/pod/IO::Socket::SSL
|
||||
...
|
||||
@ -170,87 +123,11 @@ when they receive a TLS version 1.1 request.
|
||||
In this case setting the version
|
||||
to 'SSLv23:!SSLv2:!SSLv3:!TLSv1_1:!TLSv1_2' might help.
|
||||
|
||||
======================================================================
|
||||
Q. What is the error
|
||||
fatal SSL error: SSL connect attempt failed with unknown error
|
||||
SSL wants a read first
|
||||
|
||||
R. If you're using --ssl1 or --ssl2, try instead --tls1 or --tls2
|
||||
|
||||
======================================================================
|
||||
Q. How to see the certificate and identify problems in it?
|
||||
|
||||
R. Use the command openssl like this:
|
||||
|
||||
echo | openssl s_client -crlf -connect imap.gmail.com:993
|
||||
|
||||
echo | openssl s_client -crlf -connect test1.lamiral.info:993
|
||||
|
||||
and examine carefully the content, the "verify return:" lines,
|
||||
the chain. Sometimes, the server certificate is ok but not the whole
|
||||
chain of certificates so the certification fails.
|
||||
|
||||
Here is an example.
|
||||
|
||||
One of the certificate is expired:
|
||||
|
||||
echo | openssl s_client -crlf -connect test1.lamiral.info:993
|
||||
CONNECTED(00000003)
|
||||
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
|
||||
verify return:1
|
||||
depth=1 C = US, O = Let's Encrypt, CN = R3
|
||||
verify return:1
|
||||
depth=0 CN = test1.lamiral.info
|
||||
verify error:num=10:certificate has expired
|
||||
notAfter=Apr 11 10:14:05 2021 GMT
|
||||
verify return:1
|
||||
depth=0 CN = test1.lamiral.info
|
||||
notAfter=Apr 11 10:14:05 2021 GMT
|
||||
verify return:1
|
||||
---
|
||||
Certificate chain
|
||||
0 s:/CN=test1.lamiral.info
|
||||
i:/C=US/O=Let's Encrypt/CN=R3
|
||||
1 s:/C=US/O=Let's Encrypt/CN=R3
|
||||
i:/O=Digital Signature Trust Co./CN=DST Root CA X3
|
||||
---
|
||||
Server certificate
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFKjCCBBKgAwIBAgISBHYZCE3qSTIlvq97HI5TpBeAMA0GCSqGSIb3DQEBCwUA
|
||||
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
|
||||
EwJSMzAeFw0yMTAxMTExMDE0MDVaFw0yMTA0MTExMDE0MDVaMB0xGzAZBgNVBAMT
|
||||
EnRlc3QxLmxhbWlyYWwuaW5mbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
||||
ggEBAMUTJVdrTl86nDI2yO6Vz5l1qxMMPqJylQcgi9vDHpwsnUq5HGPv+qZNhM69
|
||||
...
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
|
||||
After an complete server update ("apt update && apt upgrade && /etc/init.d/dovecot restart"):
|
||||
|
||||
echo | openssl s_client -crlf -connect test1.lamiral.info:993
|
||||
CONNECTED(00000003)
|
||||
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
|
||||
verify return:1
|
||||
depth=1 C = US, O = Let's Encrypt, CN = R3
|
||||
verify return:1
|
||||
depth=0 CN = test1.lamiral.info
|
||||
verify return:1
|
||||
---
|
||||
Certificate chain
|
||||
0 s:/CN=test1.lamiral.info
|
||||
i:/C=US/O=Let's Encrypt/CN=R3
|
||||
1 s:/C=US/O=Let's Encrypt/CN=R3
|
||||
i:/O=Digital Signature Trust Co./CN=DST Root CA X3
|
||||
---
|
||||
Server certificate
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFKTCCBBGgAwIBAgISBD4QN3cfB1JpTm75oVrkkAElMA0GCSqGSIb3DQEBCwUA
|
||||
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
|
||||
EwJSMzAeFw0yMTAzMTIxODQxMTJaFw0yMTA2MTAxODQxMTJaMB0xGzAZBgNVBAMT
|
||||
EnRlc3QxLmxhbWlyYWwuaW5mbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
||||
ggEBANuPNbYLPMZ4vPa9NBoHAUdIXqpi0eqdXMXd2sT+qRmqxS5ihr999BHOROcr
|
||||
...
|
||||
|
||||
Champagne!
|
||||
|
||||
======================================================================
|
||||
======================================================================
|
||||
|
||||
@ -1,122 +1,45 @@
|
||||
#!/bin/cat
|
||||
# $Id: FAQ.Security.txt,v 1.26 2021/07/11 12:11:38 gilles Exp gilles $
|
||||
# $Id: FAQ.Security.txt,v 1.19 2018/09/13 17:53:45 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Security.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Imapsync tips about security. Issues and solutions.
|
||||
=======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
SSL: going to encryption before the imap session start.
|
||||
It is on port 993.
|
||||
|
||||
Q. Is running this program a secure method of transferring emails?
|
||||
Are there any security concerns?
|
||||
|
||||
Q. Does imapsync refer to SSL security protocols with --ssl1 and --ssl2
|
||||
and does it refer to TLS security protocols with the --tls1 and --tls2
|
||||
options?
|
||||
Short answer: No.
|
||||
|
||||
Q. I noticed that the online UI has no option for TLS/SSL.
|
||||
Is this secure?
|
||||
Is this more secure than using the .bat file on my computer?
|
||||
|
||||
Q. Are transferred emails/attachments stored on any other
|
||||
server/location aside from my originating/destination server(s)?
|
||||
|
||||
Q. Other than changing passwords on the originating/destination email
|
||||
accounts once the relevant emails have been moved,
|
||||
are there any other security tips I should know?
|
||||
|
||||
Q. I need to transfer mail from an imap server to another imap server.
|
||||
Which ports need to be open on the firewall to make this possible?
|
||||
|
||||
Q. Does imapsync support the IMAP command STARTTLS?
|
||||
|
||||
Q. Does imapsync support IMAP over SSL/TLS (IMAPS)?
|
||||
|
||||
Q. How can I test an ssl/tls imap connection without imapsync?
|
||||
|
||||
Q. How can I manually test login using --ssl?
|
||||
|
||||
Q. Imapsync used to use SSL_VERIFY_PEER now it uses SSL_VERIFY_NONE.
|
||||
How can I change this back to the more secure SSL_VERIFY_PEER?
|
||||
|
||||
Q: How can I have an imaps server?
|
||||
|
||||
Now the questions again with their answers.
|
||||
TLS: going to encryption after the imap session start but before
|
||||
the credential are sent. It is on port 143.
|
||||
|
||||
=======================================================================
|
||||
Q. Is running this program a secure method of transferring emails?
|
||||
Are there any security concerns?
|
||||
|
||||
R. Well, it depends. Use encryption and secure access to the host running
|
||||
imapsync then everything shall be safe.
|
||||
R. Well, it depends. Use encryption, secure the access to the host running
|
||||
imapsync and everything shall be safe.
|
||||
|
||||
=======================================================================
|
||||
Q. Does imapsync refer to SSL security protocols with --ssl1 and --ssl2
|
||||
and does it refer to TLS security protocols with the --tls1 and --tls2
|
||||
options?
|
||||
Short answer: No.
|
||||
Q. I noticed that the online UI has no option for TLS/SSL
|
||||
Is this secure? Is this more secure that using the .bat file
|
||||
on my computer?
|
||||
|
||||
R. No.
|
||||
|
||||
Imapsync behaviour:
|
||||
|
||||
--ssl: Goes to encryption before the imap session start.
|
||||
The connection is on port 993.
|
||||
Can use the TLS or SSL security protocols.
|
||||
Fails if encryption cannot be established.
|
||||
|
||||
--tls: Goes to encryption after the imap session start but before the
|
||||
credential are sent.
|
||||
The connection is on port 143.
|
||||
Can use the TLS or SSL securityprotocols.
|
||||
Fails if encryption cannot be established.
|
||||
|
||||
Explanation:
|
||||
|
||||
To force transferring emails over an encrypted connection, you can use
|
||||
the imapsync parameters --ssl1 and --ssl2 or the parameters --tls1 and
|
||||
--tls2, they all force the connection to be encrypted by the security
|
||||
protocols series SSL/TLS.
|
||||
|
||||
In a security context, SSL refers to all deprecated Secure Sockets
|
||||
Layer protocols. TLS refers to the SSL successors, Transport Layer
|
||||
Security protocols. But TLS 1.0 and TLS 1.1 are also deprecated.
|
||||
|
||||
Current endorsed versions of TLS are only TLS 1.2 and TLS 1.3 (July 2021).
|
||||
|
||||
The whole story is detailed here:
|
||||
https://en.wikipedia.org/wiki/Transport_Layer_Security
|
||||
|
||||
Options --ssl1 and --ssl2 are a little more paranoid than --tls1 and
|
||||
--tls2 because they verify that the hostname of the certificate is the
|
||||
same as the one used by imapsync. Other than that, the security
|
||||
behavior is the same.
|
||||
|
||||
=======================================================================
|
||||
Q. I noticed that the online UI has no option for TLS/SSL.
|
||||
Is this secure?
|
||||
Is this more secure than using the .bat file on my computer?
|
||||
|
||||
R1. The online UI does TLS/SSL imap connections if the imap servers
|
||||
support TLS/SSL.
|
||||
|
||||
If you are concerned about security then using the .bat file or .sh on
|
||||
your computer should be more secure since you can examine and secure
|
||||
it by yourself, no matter high is your paranoid spirit compared to
|
||||
mine.
|
||||
|
||||
The online UI security is mine, I am concerned by security, not to the
|
||||
utmost high level possible but I won't give you direct access to the
|
||||
host to discover my level. With a good guy spirit, feel free to try
|
||||
to break the online UI security and report me any security issue you
|
||||
encounter, I'll do my best to fix them as soon as possible. Drop me a
|
||||
note before starting because I may detect a sort of abuse and ban your
|
||||
IPs.
|
||||
R1. The online UI does TLS/SSL imap connections if the imap
|
||||
servers support TLS/SSL. If you are concerned by security then
|
||||
using the .bat file or .sh on your computer should be more secure
|
||||
since you can examine and secure it by yourself, no matter high is
|
||||
your paranoĂŻd spirit. The online UI security is mine, I am
|
||||
concerned by security, not to the upmost high level possible
|
||||
but I won't give you direct access to the host to discover my level.
|
||||
With a good guy spirit, feel free to try to break the online UI
|
||||
security and report me any security issue you encounter, I'll do my
|
||||
best to fix them as soon as possible. Drop me a note before
|
||||
starting because I may detect a sort of abuse and ban
|
||||
definitively your IPs.
|
||||
|
||||
=======================================================================
|
||||
Q. Are transferred emails/attachments stored on any other
|
||||
@ -125,15 +48,15 @@ Q. Are transferred emails/attachments stored on any other
|
||||
R. No!
|
||||
|
||||
=======================================================================
|
||||
Q. Other than changing passwords on the originating/destination email
|
||||
accounts once the relevant emails have been moved,
|
||||
Q. Other than changing passwords on the originating/destination email
|
||||
accounts once the relevant emails have been moved,
|
||||
are there any other security tips I should know?
|
||||
|
||||
R. Yes. Secure the host where imapsync is running since credentials
|
||||
are on it.
|
||||
R. Secure the host where imapsync is running since credentials are
|
||||
on it.
|
||||
|
||||
=======================================================================
|
||||
Q. I need to transfer mail from an imap server to another imap server.
|
||||
Q. I need to transfer mail from an imap server to an other imap server.
|
||||
Which ports need to be open on the firewall to make this possible?
|
||||
|
||||
R. It depends. Open either:
|
||||
@ -141,31 +64,29 @@ R. It depends. Open either:
|
||||
* port 993 in ssl mode (--ssl1 or --ssl2)
|
||||
|
||||
=======================================================================
|
||||
Q. Does imapsync support the IMAP command STARTTLS?
|
||||
Q. Does imapsync support IMAP TLS?
|
||||
|
||||
R1. Yes.
|
||||
Use --tls1 and/or --tls2 options:
|
||||
|
||||
Use --tls1 and --tls2 options:
|
||||
--tls1 tells imapsync to use tls on host1.
|
||||
--tls2 tells imapsync to use tls on host2.
|
||||
|
||||
--tls1 tells imapsync to use STARTTLS on host1.
|
||||
--tls2 tells imapsync to use STARTTLS on host2.
|
||||
|
||||
R2. Since imapsync release 1.755 STARTTLS mode is activated
|
||||
automatically when the server announces that it supports it by
|
||||
listing STARTTLS inside the response to the CAPABILITY command.
|
||||
If either --notls or --ssl are explicitly mentioned on the
|
||||
command-line options then STARTTLS won't be done.
|
||||
R2. Since imapsync release 1.755 TLS mode is activated automatically
|
||||
if the server announce it supports it, STARTTLS inside the response
|
||||
to CAPABILITY, and if neither --notls nor --ssl is explicitely
|
||||
mentioned on the command line options.
|
||||
|
||||
=======================================================================
|
||||
Q. Does imapsync support IMAP over SSL/TLS (IMAPS)?
|
||||
Q. Does imapsync support IMAP over SSL (IMAPS)?
|
||||
|
||||
R. Yes natively since release 1.161.
|
||||
Still, there are 2 ways, at least, to use ssl:
|
||||
|
||||
a) Use native --ssl1 and/or --ssl2 options
|
||||
|
||||
--ssl1 tells imapsync to use ssl/tls on host1.
|
||||
--ssl2 tells imapsync to use ssl/tls on host2.
|
||||
--ssl1 tells imapsync to use ssl on host1.
|
||||
--ssl2 tells imapsync to use ssl on host2.
|
||||
|
||||
|
||||
b) Use stunnel
|
||||
@ -187,18 +108,18 @@ b) Use stunnel
|
||||
If the local port 143 is already taken then use a free one,
|
||||
like 10143 for example.
|
||||
|
||||
c) Another example for accessing Gmail with no local root access
|
||||
to open port 143:
|
||||
c) Other example for accessing gmail with no local root access
|
||||
to open port 143
|
||||
|
||||
stunnel3 -P '' -c -d 9993 -r imap.gmail.com:993 -f
|
||||
|
||||
Then, to access Gmail as host2 use:
|
||||
Then, to access gmail as host2 use:
|
||||
|
||||
imapsync ... --host2 localhost --port2 9993 --nossl2
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q.How can I test an ssl/tls imap connection without imapsync?
|
||||
Q.How can I test an ssl imap connection without imapsync?
|
||||
|
||||
R1. Use either ncat or telnet-ssl or openssl commands like in the
|
||||
following examples with imap.gmail.com server:
|
||||
@ -212,39 +133,37 @@ R1. Use either ncat or telnet-ssl or openssl commands like in the
|
||||
The previous commands are interactive, hit ctrl-c
|
||||
to finish them. If you want to finish automatically, then use:
|
||||
|
||||
{ sleep 2; echo "A LOGOUT"; sleep 1; } | ncat --ssl -C imap.gmail.com 993
|
||||
{ sleep 2; echo "a logout"; sleep 1; } | ncat --ssl -C imap.gmail.com 993
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How can I manually test login using --ssl?
|
||||
Q. How can I manually test a login via ssl?
|
||||
|
||||
R. 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
|
||||
|
||||
telnet-ssl -z ssl imap.gmail.com 993
|
||||
|
||||
openssl s_client -crlf -connect imap.gmail.com:993
|
||||
|
||||
Typical dialog for an imap LOGIN command:
|
||||
Tipical dialog for an imap LOGIN command:
|
||||
|
||||
* OK Gimap ready for requests from 78.196.254.58 q1mb175739668wix
|
||||
A1 LOGIN "gilles.lamiral@gmail.com" "secret"
|
||||
a LOGIN "gilles.lamiral@gmail.com" "secret"
|
||||
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE ... ESEARCH
|
||||
A1 OK gilles.lamiral@gmail.com Gilles Lamiral authenticated (Success)
|
||||
A2 LOGOUT
|
||||
a OK gilles.lamiral@gmail.com Gilles Lamiral authenticated (Success)
|
||||
b LOGOUT
|
||||
* BYE LOGOUT Requested
|
||||
A2 OK 73 good day (Success)
|
||||
b OK 73 good day (Success)
|
||||
|
||||
The client part you have to type is
|
||||
A1 LOGIN ...
|
||||
A2 LOGOUT
|
||||
while replacing ... by your credentials values,
|
||||
other lines are the server responses.
|
||||
a LOGIN ...
|
||||
b LOGOUT
|
||||
while replacing ... by your credentials values.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How can I test a STARTTLS imap connection without imapsync?
|
||||
Q.How can I test an tls imap connection without imapsync?
|
||||
|
||||
R1. Use openssl command like the following example with
|
||||
an outlook.office365.com server:
|
||||
@ -258,12 +177,13 @@ to finish them. If you want to finish automatically, then use:
|
||||
|
||||
Replace outlook.office365.com with your imap server name.
|
||||
|
||||
|
||||
======================================================================
|
||||
Q. Imapsync used to use SSL_VERIFY_PEER now it uses SSL_VERIFY_NONE.
|
||||
How can I change this back to the more secure SSL_VERIFY_PEER?
|
||||
|
||||
|
||||
R. After imapsync 1.673,
|
||||
R2. After imapsync 1.673,
|
||||
to set SSL_verify_mode to SSL_VERIFY_PEER on host1
|
||||
and SSL_verify_mode to SSL_VERIFY_NONE on host2
|
||||
|
||||
@ -271,35 +191,19 @@ R. After imapsync 1.673,
|
||||
--sslargs1 SSL_verify_mode=1 \
|
||||
--sslargs2 SSL_verify_mode=0
|
||||
|
||||
See "perldoc IO::Socket::SSL" for all possibilities, also at
|
||||
See perldoc IO::Socket::SSL for all possibilities, also at
|
||||
http://search.cpan.org/perldoc?IO%3A%3ASocket%3A%3ASSL
|
||||
|
||||
It might be possible you need an extra option
|
||||
|
||||
--sslargs1 SSL_ca_file=/etc/ssl/certs/ca-certificates.crt
|
||||
|
||||
It might be possible you need an extra:
|
||||
--sslargs1 SSL_ca_file=/etc/ssl/certs/ca-certificates.crt
|
||||
to help the ssl software verifying the server certificate.
|
||||
The file ca-certificates.crt may be elsewhere on your system, even
|
||||
named differently.
|
||||
|
||||
The imap server certificates are not checked for authenticity
|
||||
by imapsync by default because too many imap servers are crappy
|
||||
configured regarding certified certificates.
|
||||
|
||||
This default behavior is chosen like this because users
|
||||
want their emails transferred, instead of being not transferred
|
||||
because of an incompetent imap server sysadmin.
|
||||
|
||||
I admit that this part, checking imap ssl/tls certificates,
|
||||
could be improved from my side by including well known
|
||||
certificates directly in imapsync.
|
||||
Drop me a note to encourage me, I'm lazy.
|
||||
|
||||
=======================================================================
|
||||
Q: How can I have an imaps server?
|
||||
|
||||
R. Three solutions.
|
||||
Q: How to have an imaps server?
|
||||
|
||||
R.
|
||||
a) Install one
|
||||
|
||||
b) or use stunnel :
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.SmarterMail.txt,v 1.15 2021/04/30 13:02:17 gilles Exp gilles $
|
||||
$Id: FAQ.SmarterMail.txt,v 1.14 2019/10/15 14:57:19 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -10,39 +10,6 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.SmarterMail.txt
|
||||
Imapsync tips for SmarterMail. Specific issues and solutions.
|
||||
=======================================================================
|
||||
|
||||
https://imapsync.lamiral.info/README
|
||||
...
|
||||
--prefix1 str : Remove prefix str to all destination folders,
|
||||
usually "INBOX." or "INBOX/" or an empty string "".
|
||||
imapsync guesses the prefix if host1 imap server
|
||||
does not have NAMESPACE capability. So this option
|
||||
should not be used most of the time.
|
||||
--prefix2 str : Add prefix to all host2 folders. See --prefix1
|
||||
|
||||
--sep1 str : Host1 separator. This option should not be used
|
||||
most of the time.
|
||||
Imapsync gets the separator from the server itself,
|
||||
by using NAMESPACE, or it tries to guess it
|
||||
from the folders listing (it counts
|
||||
characters / . \\ \ in folder names and choose the
|
||||
more frequent, or finally / if nothing is found.
|
||||
--sep2 str : Host2 separator. See --sep1
|
||||
|
||||
|
||||
|
||||
--noabletosearch : Makes --minage and --maxage options use the internal
|
||||
dates given by a FETCH imap command instead of the
|
||||
"Date:" header. Internal date is the arrival date
|
||||
in the mailbox.
|
||||
--noabletosearch equals --noabletosearch1 --noabletosearch2
|
||||
|
||||
--noabletosearch1 : Like --noabletosearch but for host1.
|
||||
--noabletosearch2 : Like --noabletosearch but for host2.
|
||||
|
||||
--useheader str : Use this header to compare messages on both sides.
|
||||
Example: Message-ID or Subject or Date.
|
||||
--useheader str and this one, etc.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. Synchronizing from SmarterMail to XXX
|
||||
@ -50,12 +17,12 @@ Q. Synchronizing from SmarterMail to XXX
|
||||
On Unix:
|
||||
imapsync --host1 imap.d1.org --user1 joe --password1 secret1 \
|
||||
--host2 imap.d2.org --user2 joe --password2 secret2 \
|
||||
--prefix1 "" --sep1 "/" --useheader Message-Id --noabletosearch
|
||||
--sep1 "/" --prefix1 "" --useheader Message-Id --noabletosearch
|
||||
|
||||
On Windows:
|
||||
imapsync.exe --host1 imap.d1.org --user1 joe --password1 secret1 ^
|
||||
--host2 imap.d2.org --user2 joe --password2 secret2 ^
|
||||
--prefix1 "" --sep1 "/" --useheader Message-Id --noabletosearch
|
||||
--sep1 "/" --prefix1 "" --useheader Message-Id --noabletosearch
|
||||
|
||||
|
||||
=======================================================================
|
||||
@ -64,12 +31,12 @@ Q. Synchronizing from XXX to SmarterMail
|
||||
On Unix:
|
||||
imapsync --host1 imap.d1.org --user1 joe --password1 secret1 \
|
||||
--host2 imap.d2.org --user2 joe --password2 secret2 \
|
||||
--prefix2 "" --sep2 "/" --useheader Message-Id --noabletosearch
|
||||
--sep2 "/" --prefix2 "" --useheader Message-Id --noabletosearch
|
||||
|
||||
On Windows:
|
||||
imapsync.exe --host1 imap.d1.org --user1 joe --password1 secret1 ^
|
||||
--host2 imap.d2.org --user2 joe --password2 secret2 ^
|
||||
--prefix2 "" --sep2 "/" --useheader Message-Id --noabletosearch
|
||||
--sep2 "/" --prefix2 "" --useheader Message-Id --noabletosearch
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
@ -1,104 +0,0 @@
|
||||
$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/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Two_Ways_Sync.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
================ Two ways sync with Imapsync =========================
|
||||
=======================================================================
|
||||
|
||||
=======================================================================
|
||||
Q. Can Imapsync do a good "two ways" sync?
|
||||
Short answer: no, not a good one. Why?
|
||||
|
||||
R. Imapsync can't do good two ways syncs.
|
||||
|
||||
A good "two ways" sync is impossible with imapsync because imapsync is
|
||||
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 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 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
|
||||
cannot know whether it is a message deleted from A that has to be
|
||||
deleted in B (what the user actually did) or a missing message on A
|
||||
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. This assumes there
|
||||
is no new messages on B because --delete2 will delete them.
|
||||
|
||||
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. 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/
|
||||
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,37 +0,0 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.UCS.txt,v 1.8 2021/05/29 08:06:51 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.UCS.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Imapsync tips for UCS. Specific issues.
|
||||
=======================================================================
|
||||
|
||||
UCS: Univention Corporate Server
|
||||
https://www.univention.com/
|
||||
|
||||
UCS was previously Oracle-UCS, Sun JES, IPlanet, etc.
|
||||
The underlying code was the free open source imap software server Cyrus.
|
||||
Now UCS uses Dovecot since UCS 4.0-2 (July 2015)
|
||||
|
||||
Quoting the page
|
||||
https://docs.software-univention.de/cyrus-4.2.html
|
||||
"Since Univention Corporate Server version 4.0-2 Dovecot is used as
|
||||
the default IMAP and POP3 server."
|
||||
|
||||
So, when you deal with UCS issues, follow
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Cyrus.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Dovecot.txt
|
||||
Also:
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.APPEND_errors.txt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
@ -1,5 +1,5 @@
|
||||
|
||||
$Id: FAQ.Use_cache.txt,v 1.11 2021/04/22 13:20:18 gilles Exp gilles $
|
||||
$Id: FAQ.Use_cache.txt,v 1.9 2019/09/13 10:43:06 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -7,7 +7,7 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Use_cache.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Imapsync --usecache or --useuid options
|
||||
Imapsync --usecache option
|
||||
=======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
@ -16,9 +16,6 @@ Q. What is --usecache good for?
|
||||
|
||||
Q. What is the technical principle of --usecache?
|
||||
|
||||
Q. On Windows, with --useuid and after a reboot or a new login, a new
|
||||
run generates duplicates. What can I do to avoid and fix that?
|
||||
|
||||
Q. On Windows, with --useuid or --usecache a problem occurs with long
|
||||
nested folder names. The error message is:
|
||||
"No such file or directory; The filename or extension is too long"
|
||||
@ -26,14 +23,14 @@ Q. On Windows, with --useuid or --usecache a problem occurs with long
|
||||
Q. Inode problem with --usecache or --useuid on Linux
|
||||
|
||||
|
||||
Now the questions again and their answers.
|
||||
Now the questions again and their answers
|
||||
|
||||
=======================================================================
|
||||
Q. What is --usecache good for?
|
||||
|
||||
R. The option --usecache is useful to speed up next syncs with --usecache.
|
||||
The first sync with --usecache between two imap accounts is as low
|
||||
as the first sync without --usecache, the next syncs are faster.
|
||||
as the first sync without --usecache.
|
||||
|
||||
=======================================================================
|
||||
Q. What is the technical principle of --usecache?
|
||||
@ -52,39 +49,7 @@ R. Option --usecache creates a empty file per email message
|
||||
where <tmpdir> is the temporary directory given by the --tmpdir option
|
||||
or the one by default, /tmp on Unix, variable on Windows.
|
||||
|
||||
=======================================================================
|
||||
Q. On Windows, with --useuid and after a reboot or a new login, a new
|
||||
run generates duplicates. What can I do to avoid and fix that?
|
||||
|
||||
R. The cache is build in a temporary directory. Imapsync uses a system
|
||||
call to get this temporary directory, it is not hardcoded and it
|
||||
is system dependent, the call garanties a write access. Sometimes on
|
||||
Windows this directory name changes upon reboot or for any other reason.
|
||||
Anyway, the temporary directory used by imapsync can be set by the
|
||||
option --tmpdir and that's the way to avoid this issue.
|
||||
The new problem is that the temporary directory must be writable, which
|
||||
is not a big deal to found.
|
||||
|
||||
Use for example either a) b) or c)
|
||||
|
||||
a) The current directory:
|
||||
|
||||
imapsync ... --tmpdir .
|
||||
|
||||
b) The root directory:
|
||||
|
||||
imapsync ... --tmpdir /
|
||||
|
||||
c) Any directory you want, like:
|
||||
|
||||
imapsync ... --tmpdir "C:\TEMP"
|
||||
|
||||
Now, to fix the duplicates on host2, have a run with the option
|
||||
--delete2duplicates
|
||||
|
||||
imapsync ... --delete2duplicates
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. On Windows, with --useuid or --usecache a problem occurs with long
|
||||
nested folder names. The error message is:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.User_Concurrent_Access.txt,v 1.6 2022/05/05 13:18:29 gilles Exp gilles $
|
||||
$Id: FAQ.User_Concurrent_Access.txt,v 1.5 2018/05/24 11:34:30 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -35,23 +35,6 @@ 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
|
||||
@ -59,7 +42,5 @@ A new message arriving just after the listing, won't be synced.
|
||||
* deleting message => might reappear by a new sync.
|
||||
* message flag change => will be reseted by a new sync.
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Various_Software_Servers.txt,v 1.19 2021/01/26 14:05:23 gilles Exp gilles $
|
||||
$Id: FAQ.Various_Software_Servers.txt,v 1.13 2019/07/04 09:26:28 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -18,13 +18,6 @@ Q. From or to Zimbra
|
||||
R. Read the FAQ.Zimbra.txt
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Zimbra.txt
|
||||
|
||||
=======================================================================
|
||||
Q. From Emailchemy (https://weirdkid.com/emailchemy/)
|
||||
|
||||
R. Use option --noabletosearch :
|
||||
|
||||
imapsync ... --noabletosearch
|
||||
|
||||
=======================================================================
|
||||
Q. From or to HMailServer version 4.4.1.
|
||||
|
||||
@ -58,10 +51,60 @@ Parallells Plesk Panel for Windows requires --sep2 / --prefix2 ""
|
||||
Parallells Plesk Panel for Linux works with default parameters.
|
||||
|
||||
=======================================================================
|
||||
Q. Migrating from or to the Cyrus imap server
|
||||
Q. I'm migrating from WU to Cyrus, and the mail folders are under
|
||||
/home/user/mail but the tool copies everything in /home/user, how
|
||||
can i avoid that?
|
||||
|
||||
R. Read the dedicated
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Cyrus.txt
|
||||
Two solutions:
|
||||
|
||||
R. Use
|
||||
imapsync ... --include '^mail'
|
||||
|
||||
R. or (better)
|
||||
imapsync ... --subscribed --subscribe
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. I'm migrating from WU to Cyrus, and the mail folders are under
|
||||
/home/user/mail directory. When imapsync creates the folders in
|
||||
the new cyrus imap server, it makes a folder "mail" and below that
|
||||
folder puts all the mail folders the user have in /home/user/mail,
|
||||
i would like to have all those folders directly under INBOX.
|
||||
|
||||
R. Use
|
||||
imapsync ... --regextrans2 's/^mail/INBOX/' --dry
|
||||
look at the simulation and if all transformations seem
|
||||
good then remove the --dry option.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. Migrating from Groupwise to Cyrus
|
||||
|
||||
R. By Jamie Neil:
|
||||
|
||||
I eventually managed to get the mail to migrate without errors using the
|
||||
following options:
|
||||
|
||||
--maxage 3650
|
||||
- some messages just don't seem to want to transfer and produce the
|
||||
perl errors I mentioned before. This prevents the errors, but the
|
||||
bad messages don't transfer.
|
||||
|
||||
Even though the mail migrated OK, there are a couple of gotchas with
|
||||
Groupwise IMAP:
|
||||
|
||||
1) Some of the GW folders are not real folders and are not available
|
||||
to IMAP, the main problem one being "Sent Items". I could find no way
|
||||
of coping the contents of these folders. The nearest I got was to
|
||||
create a "real" folder and copy/move the sent items into it, but
|
||||
imapsync still didn't see the messages (I think because there is
|
||||
something funny about the reported dates/sizes).
|
||||
|
||||
It think this problem has been rectified in GW6.5.
|
||||
|
||||
2) Version 6.0.1 of the Groupwise Internet Connector sucks. I was
|
||||
getting server aborts when I pushed it a bit hard! I eventually had to
|
||||
upgrade to 6.0.4 which seems to be a lot more stable.
|
||||
|
||||
=======================================================================
|
||||
Q. Migrating from iPlanet Messaging Server
|
||||
@ -88,6 +131,15 @@ You have to extract users logins and passwords in a csv file.
|
||||
See the "HUGE MIGRATION" section in the README file.
|
||||
|
||||
|
||||
======================================================================
|
||||
Q: From MailEnable 1.75
|
||||
R: --sep1 "/" --prefix1 ""
|
||||
|
||||
Q: From MailEnable 2.2
|
||||
R: --sep1 "." --prefix1 ""
|
||||
|
||||
Q: To MailEnable
|
||||
R: --sep2 / --prefix2 "" --addheader --messageidnodomain --syncflagsaftercopy
|
||||
|
||||
======================================================================
|
||||
Q. From GMX IMAP4 StreamProxy
|
||||
@ -122,6 +174,53 @@ Q. From or to QQMail IMAP4Server
|
||||
|
||||
R. imapsync ... --noabletosearch1
|
||||
|
||||
======================================================================
|
||||
Q. From FirstClass to XXX
|
||||
http://www.firstclass.com/
|
||||
|
||||
R. Migrating from FirstClass is not easy because FirstClass, strangely,
|
||||
does not show all messages via IMAP. To make it show all messages,
|
||||
a trick, painful to follow by hand, is moving emails
|
||||
out and back in, for each folder. May be it can be done by a script.
|
||||
|
||||
FirstClass releases prior to release 12 do not shows the "Sent"
|
||||
folder in IMAP but FirstClass release 12 shows it.
|
||||
I advice you to upgrade to FirstClass release 12 before leaving it
|
||||
with imapsync or another imap tool.
|
||||
|
||||
Here is a command line used to migrate from FirtClass release 12:
|
||||
|
||||
imapsync ... \
|
||||
--tmpdir /var/tmp --usecache \
|
||||
--useheader Message-ID \
|
||||
--idatefromheader \
|
||||
--addheader \
|
||||
--regextrans2 "s,(/|^) +,\$1,g" --regextrans2 "s, +(/|$),\$1,g" \
|
||||
--regextrans2 "s/[\^]/_/g" \
|
||||
--regextrans2 "s/['\"\\\\]/_/g" \
|
||||
--regextrans2 "s,&AC8-,-,g" \
|
||||
--regextrans2 "s,&APg-,oe,g"
|
||||
|
||||
On Windows:
|
||||
imapsync.exe ... ^
|
||||
--automap ^
|
||||
--usecache ^
|
||||
--useheader Message-ID ^
|
||||
--idatefromheader ^
|
||||
--addheader ^
|
||||
--regextrans2 "s,(/|^) +,$1,g" ^
|
||||
--regextrans2 "s, +(/|$),$1,g" ^
|
||||
--regextrans2 "s/[\^]/_/g" ^
|
||||
--regextrans2 "s/['\\]/_/g" ^
|
||||
--regextrans2 "s,^&AC8-,-,g" ^
|
||||
--regextrans2 "s,^&APg-,oe,g"
|
||||
|
||||
|
||||
Special thanks to Kristian Wind and Joey Alexander for helping me
|
||||
writing this FAQ item.
|
||||
See also this worth reading discussion in a Zimbra forum:
|
||||
http://www.zimbra.com/forums/migration/20349-help-needed-migrating-firstclass.html
|
||||
|
||||
======================================================================
|
||||
Q. From XXX to FTGate
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
|
||||
$Id: FAQ.Virus.txt,v 1.9 2020/01/21 21:35:53 gilles Exp gilles $
|
||||
$Id: FAQ.Virus.txt,v 1.6 2019/12/06 09:43:52 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -17,15 +17,14 @@ Q. My virus scanner claims imapsync.exe is a virus/malware/trojan etc.
|
||||
R1. Yes, I find the same sometimes with few antivirus, some report that
|
||||
imapsync might have a trojan in it.
|
||||
Most virus scanners say imapsync.exe and is ok.
|
||||
I've done this test on imapsync.exe releases
|
||||
1.977, 1.945, 1.836 on the two following
|
||||
I've done this test on imapsync.exe release 1.727 on the two following
|
||||
meta-virus-scanners:
|
||||
https://www.virustotal.com/
|
||||
https://www.metadefender.com/
|
||||
|
||||
R2. Explanation:
|
||||
It may come from the fact that imapsync checks whether there is a
|
||||
new release available at http://imapsync.lamiral.info/VERSION
|
||||
new realease available at http://imapsync.lamiral.info/VERSION
|
||||
It's explained here:
|
||||
https://imapsync.lamiral.info/#NUMBERS
|
||||
|
||||
@ -41,20 +40,6 @@ R4. Using online meta-virus-scanners
|
||||
https://www.virustotal.com/
|
||||
https://www.metadefender.com/
|
||||
|
||||
|
||||
Release 1.977
|
||||
|
||||
imapsync.exe (64bit) release 1.977 is reported as not clean:
|
||||
* https://www.virustotal.com/gui/file/8fd16a5eb2aa4d9a037a528654cc0ecdc63936955d289811dee31c6af474f4b0/detection
|
||||
SecureAge APEX Malicious Jiangmin Backdoor.Kasidet.qt
|
||||
|
||||
imapsync_32bit.exe release 1.977 is reported as totally clean:
|
||||
https://www.virustotal.com/gui/url/94c89ef31190050bebc522f64e32d3f825ef0418cfc424c5847495b9857d57bf/detection
|
||||
|
||||
imapsync_bin_Darwin release 1.977 is reported as totally clean:
|
||||
* https://www.virustotal.com/gui/file/41f107f4f7c86b15c392aef3c69a7f285f3b2a5f02328a1342903eddc5a5a06f/details
|
||||
* https://metadefender.opswat.com/results#!/file/bzIwMDEwNUJKb2dXa1N3eWVJSDFoZ1d5clBrZ1U/regular/overview
|
||||
|
||||
Release 1.945
|
||||
|
||||
imapsync.exe release 1.945 is reported as totally clean:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.XOAUTH2.txt,v 1.18 2022/04/05 13:48:52 gilles Exp gilles $
|
||||
$Id: FAQ.XOAUTH2.txt,v 1.16 2019/07/31 22:58:36 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -10,47 +10,9 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.XOAUTH2.txt
|
||||
Imapsync tips to use XOAUTH2 authentication (Gmail) and old XOAUTH
|
||||
=======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. Is XOAUTH2 authentication available with imapsync to authenticate
|
||||
my personnal gmail account? (Quick answer: not yet)
|
||||
|
||||
Q. Is XOAUTH2 authentication available with imapsync to authenticate
|
||||
my personnal Office365 account? (Quick answer: not yet)
|
||||
|
||||
Q. Is XOAUTH2 authentication available with imapsync to globally
|
||||
authenticate gmail users, ie as an admin?
|
||||
|
||||
Q. Imapsync XOAUTH2 fails with the following message, how to fix that?
|
||||
|
||||
Q. How to use XOAUTH2 via a json file to globally authenticate gmail users?
|
||||
|
||||
Q. How to use XOAUTH2 via pk12 file to globally authenticate gmail users?
|
||||
|
||||
Q. How to use a proxy with XOAUTH2 authentication?
|
||||
|
||||
Q. How to use old XOAUTH to globally authenticate gmail users?
|
||||
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
=======================================================================
|
||||
Q. Is XOAUTH2 authentication available with imapsync to authenticate
|
||||
my personnal gmail account? (Quick answer: not yet)
|
||||
|
||||
R. No. But I'm working on that.
|
||||
XOAUTH2 is a mess or at least, each time I look at it, it leaves
|
||||
my brain like a mess.
|
||||
|
||||
=======================================================================
|
||||
Q. Is XOAUTH2 authentication available with imapsync to authenticate
|
||||
my personnal Office365 account? (Quick answer: not yet)
|
||||
|
||||
R. No. But I'm working on that too.
|
||||
|
||||
=======================================================================
|
||||
Q. Is XOAUTH2 authentication available with imapsync to globally
|
||||
authenticate gmail users, ie as an admin?
|
||||
Q. Is XOAUTH2 authentication available with imapsync?
|
||||
|
||||
R. Yes, but XOAUTH2 has been really tested on Unix systems,
|
||||
less profund on Windows but it should work.
|
||||
@ -135,7 +97,7 @@ https://developers.google.com/identity/protocols/OAuth2
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to use XOAUTH2 via pk12 file to globally authenticate gmail users?
|
||||
Q. How to use XOAUTH2 via pk12 file to globally authenticate gmail users?
|
||||
|
||||
R. First, consider the XOAUTH2 feature at a prototype level.
|
||||
|
||||
@ -154,7 +116,7 @@ also called cpanminus.
|
||||
|
||||
The code and first explanation comes from Joaquin Lopez at
|
||||
https://github.com/imapsync/imapsync/pull/25
|
||||
http://linux-france.tk/prj/imapsync_list/msg02129.html
|
||||
http://www.linux-france.org/prj/imapsync_list/msg02129.html
|
||||
|
||||
Also, the binary command "openssl" is needed since it is used to
|
||||
convert the pk12 file.
|
||||
@ -210,7 +172,7 @@ environment variable, if it isn't already set. Example:
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to use old XOAUTH to globally authenticate gmail users?
|
||||
Q. How to use XOAUTH to globally authenticate gmail users?
|
||||
|
||||
R0. XOAUTH is considered obsolete and superseded by XOAUTH2
|
||||
Anyway the manage part might be the same (I don't know).
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
|
||||
$Id: FAQ.Yahoo.txt,v 1.15 2022/05/05 14:17:22 gilles Exp gilles $
|
||||
$Id: FAQ.Yahoo.txt,v 1.8 2018/05/24 11:34:30 gilles Exp gilles $
|
||||
|
||||
This document is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -10,28 +10,39 @@ https://imapsync.lamiral.info/FAQ.d/FAQ.Yahoo.txt
|
||||
Imapsync tips for Yahoo.
|
||||
=======================================================================
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. Synchronizing from Yahoo to XXX
|
||||
|
||||
Q. Synchronizing from XXX to Yahoo
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
=======================================================================
|
||||
Q. Synchronizing from Yahoo to XXX
|
||||
|
||||
R. Use --host1 imap.mail.yahoo.com
|
||||
R. Use --host1 imap.mail.yahoo.com --ssl1
|
||||
|
||||
Example:
|
||||
|
||||
./imapsync \
|
||||
./imapsync \
|
||||
--host1 imap.mail.yahoo.com \
|
||||
--user1 Billy@yahoo.com \
|
||||
--password1 billysecreta \
|
||||
--user1 billy \
|
||||
--password1 secret \
|
||||
--ssl1 \
|
||||
--host2 XXX \
|
||||
--user2 Billy@other.com \
|
||||
--password2 billysecretb
|
||||
--user2 billy \
|
||||
--password2 secret \
|
||||
--noabletosearch --errorsmax 10000
|
||||
|
||||
SSL is mandatory for yahoo since November 2011.
|
||||
|
||||
Why increasing --errorsmax to 10000?
|
||||
Because during the sync you may encounter several lines like this one:
|
||||
- msg Inbox/12600 {0} S[36012] F[] I[27-Nov-2015 07:08:35 +0000] could not be fetched: 190 NO [UNAVAILABLE] UID FETCH Server error while fetching messages
|
||||
- msg Inbox/12600 skipped.
|
||||
I don't know why it happens, why Yahoo server says
|
||||
"NO [UNAVAILABLE] UID FETCH Server error while fetching messages"
|
||||
Usually another run syncs the message successfully.
|
||||
|
||||
Why --noabletosearch option?
|
||||
Yahoo IMAP does not honor well the SEARCH imap command (Dec 2017).
|
||||
So don't use the --search option.
|
||||
You can use --minage or/and --maxage but then add also --noabletosearch
|
||||
|
||||
Yahoo bandwidth per connection is relatively low, 50 KiB/s to 500 KiB/s max, usually 100 KiB/s.
|
||||
Consider using --useuid to speed up large accounts.
|
||||
|
||||
|
||||
You also need to go to Yahoo, security and enable
|
||||
@ -59,47 +70,6 @@ Another solution:
|
||||
since it is not in the predefined apps.
|
||||
* Use this password with imapsync.
|
||||
|
||||
=======================================================================
|
||||
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{(?<![\n])\z}{\r\n}gxms'
|
||||
|
||||
On Windows:
|
||||
imapsync.exe \
|
||||
--host1 XXX \
|
||||
--user1 Billy@other.com \
|
||||
--password1 billysecreta \
|
||||
--host2 imap.mail.yahoo.com \
|
||||
--user2 Billy@yahoo.com \
|
||||
--password2 billysecretb \
|
||||
--regexmess "s{(?<![\n])\z}{\r\n}gxms"
|
||||
|
||||
|
||||
|
||||
You wonder why there is this ugly regex, what it does and where does it
|
||||
come from?
|
||||
|
||||
It's there to get rid of the errors
|
||||
"BAD [CLIENTBUG] Additional arguments found after last expected argument"
|
||||
when copying some messages to Yahoo.
|
||||
It adds a final \r\n on a message if a final \r\n is missing.
|
||||
See https://github.com/imapsync/imapsync/issues/209
|
||||
|
||||
https://imapsync.lamiral.info/README
|
||||
...
|
||||
--regexmess reg : Apply the whole regex to each message before transfer.
|
||||
Example: 's/\000/ /g' # to replace null by space.
|
||||
--regexmess reg : and this one, etc.
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
$Id: FAQ.Zimbra.txt,v 1.11 2021/04/18 09:15:45 gilles Exp gilles $
|
||||
$Id: FAQ.Zimbra.txt,v 1.6 2019/06/25 00:15:16 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
@ -15,56 +15,14 @@ https://wiki.zimbra.com/wiki/Guide_to_imapsync
|
||||
It's obsolete and it will give you, and me, more difficulties than
|
||||
doing a standard sync without additional options.
|
||||
|
||||
Questions answered in this FAQ are:
|
||||
|
||||
Q. How to migrate from Zimbra to XXX?
|
||||
|
||||
Q. How to migrate from Zimbra with an admin account?
|
||||
|
||||
Q. I got this "NO APPEND failed" error:
|
||||
could not append ( Subject:... Flags:[\Flagged \Seen EmailswithStickyNotes:FLAG51135] )
|
||||
to folder XXX: 316 NO APPEND failed
|
||||
What can I do?
|
||||
|
||||
Q. Zimbra disconnects without reason
|
||||
Could not select: * BYE ... Zimbra IMAP4rev1 server closing connection
|
||||
|
||||
|
||||
Now the questions again with their answers.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to migrate from Zimbra to XXX?
|
||||
Q. From Zimbra to XXX
|
||||
|
||||
The basic default (only credendials) should work fine with Zimbra.
|
||||
|
||||
|
||||
=======================================================================
|
||||
Q. How to migrate from Zimbra with an admin account?
|
||||
|
||||
R. Use:
|
||||
|
||||
imapsync ... --user1 "normal_user" --authuser1 "admin_user" --password1 "admin_user_password"
|
||||
|
||||
To setup or use a Zimbra admin user see:
|
||||
https://zimbra.github.io/adminguide/8.8.9/index.html#_administrator_accounts
|
||||
|
||||
Thanks to Richard Street from thinkround for this tip.
|
||||
|
||||
=======================================================================
|
||||
Q. I got this "NO APPEND failed" error:
|
||||
could not append ( Subject:... Flags:[\Flagged \Seen EmailswithStickyNotes:FLAG51135] )
|
||||
to folder XXX: 316 NO APPEND failed
|
||||
What can I do?
|
||||
|
||||
R1.
|
||||
https://zimbra.github.io/adminguide/8.8.10/index.html
|
||||
Flagging
|
||||
Users can create flags and assign them to messages, contacts, and files in Briefcase folders.
|
||||
In the Admin Console, see COS -> Features -> Mail Features container
|
||||
|
||||
Is Flagging on on host2?
|
||||
If yes, see https://imapsync.lamiral.info/FAQ.d/FAQ.Flags.txt
|
||||
imapsync ... \
|
||||
--exclude "Conversation Action Settings" \
|
||||
--exclude "Quick Step Settings" \
|
||||
--exclude "News Feed"
|
||||
|
||||
=======================================================================
|
||||
Q. Zimbra disconnects without reason
|
||||
@ -79,5 +37,17 @@ R. The cause of this problem may be that some users have a subscription
|
||||
|
||||
Thanks to Danny Herrlitz for this input!
|
||||
|
||||
=======================================================================
|
||||
Q. How to migrate from Zimbra with an admin account?
|
||||
|
||||
R. Use:
|
||||
|
||||
imapsync ... --user1 "normal_user" --authuser1 "admin_user" --password1 "admin_user_password"
|
||||
|
||||
To setup or use a Zimbra admin user see:
|
||||
https://zimbra.github.io/adminguide/8.8.9/index.html#_administrator_accounts
|
||||
|
||||
Thanks to Richard Street from thinkround for this tip.
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
@ -1,24 +0,0 @@
|
||||
#!/bin/cat
|
||||
# $Id: FAQ.iCloud.txt,v 1.1 2022/04/13 11:44:19 gilles Exp gilles $
|
||||
|
||||
This documentation is also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.iCloud.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Imapsync tips for iCloud accounts.
|
||||
=======================================================================
|
||||
|
||||
|
||||
Q. How to migrate from or to an iCloud account?
|
||||
|
||||
R. From https://support.apple.com/en-us/HT202304
|
||||
|
||||
Use "imap.mail.me.com" as the imap server and use an app password.
|
||||
|
||||
How to generate an app password is described at
|
||||
https://support.apple.com/kb/HT204397
|
||||
|
||||
It's not necessary to precise the port and the ssl thing, imapsync
|
||||
auto-detect this.
|
||||
@ -1,29 +1,20 @@
|
||||
|
||||
# $Id: htaccess.txt,v 1.33 2022/04/06 10:27:52 gilles Exp gilles $
|
||||
# $Id: htaccess.txt,v 1.27 2019/12/08 16:05:27 gilles Exp gilles $
|
||||
|
||||
|
||||
AddDescription "<b>Back</b> to Imapsync main page." ..
|
||||
AddDescription "<b>Where this Description column comes from</b>." htaccess.txt
|
||||
AddDescription "<b>Private</b>." memo
|
||||
|
||||
AddDescription "<b>APPEND errors</b>." FAQ.Admin_Authentication.txt
|
||||
AddDescription "<b>Authenticate via an admin account</b>." FAQ.APPEND_errors.txt
|
||||
AddDescription "<b>Archiving</b> tips." FAQ.Archiving.txt
|
||||
AddDescription "<b>Authentication failures</b>." FAQ.Authentication_failure.txt
|
||||
|
||||
AddDescription "<b>Bandwidth questions</b> tips." FAQ.Bandwidth.txt
|
||||
AddDescription "<b>Big mailboxes</b> tips." FAQ.Big_Mailbox.txt
|
||||
|
||||
AddDescription "<b>Changing folders names</b>." FAQ.Folders_Mapping.txt
|
||||
AddDescription "<b>Connection issues</b>." FAQ.Connection.txt
|
||||
AddDescription "<b>Contacts & Calendars & Chat issues</b>." FAQ.Contacts_Calendars.txt
|
||||
AddDescription "<b>Cyrus</b> accounts." FAQ.Cyrus.txt
|
||||
|
||||
|
||||
AddDescription "<b>Dates issues</b>." FAQ.Dates.txt
|
||||
AddDescription "<b>David Tobit</b> accounts." FAQ.David_Tobit.txt
|
||||
AddDescription "<b>DBmail</b> accounts." FAQ.DBmail.txt
|
||||
AddDescription "<b>Docker</b> usage." FAQ.Docker.txt
|
||||
AddDescription "<b>Domino</b> accounts." FAQ.Domino.txt
|
||||
AddDescription "<b>Dovecot</b> accounts." FAQ.Dovecot.txt
|
||||
AddDescription "<b>Duplicated</b> messages issues." FAQ.Duplicates.txt
|
||||
@ -33,34 +24,24 @@ AddDescription "<b>Selecting folders</b>." FAQ.Fold
|
||||
AddDescription "<b>Folders sizes with Imapsync</b>." FAQ.Folders_Sizes.txt
|
||||
|
||||
|
||||
|
||||
|
||||
AddDescription "<b>FirstClass</b> accounts." FAQ.FirstClass.txt
|
||||
AddDescription "<b>Flags tips and issues</b>." FAQ.Flags.txt
|
||||
AddDescription "<b>General Data Protection Regulation</b> (GDPR)." FAQ.GDPR.txt
|
||||
AddDescription "<b>General</b> and <b>pot-pourri</b> issues" FAQ.General.txt
|
||||
AddDescription "<b>Gmail</b> accounts." FAQ.Gmail.txt
|
||||
AddDescription "<b>GoDaddy</b> accounts." FAQ.GoDaddy.txt
|
||||
AddDescription "<b>IceWarp</b> accounts." FAQ.IceWarp.txt
|
||||
AddDescription "<b>ISP tips</b>." FAQ.ISP.txt
|
||||
AddDescription "<b>James</b> accounts." FAQ.James.txt
|
||||
AddDescription "<b>Kerio</b> accounts." FAQ.Kerio.txt
|
||||
AddDescription "<b>MailEnable</b> accounts." FAQ.MailEnable.txt
|
||||
AddDescription "<b>Massive and bulk</b> migrations." FAQ.Massive.txt
|
||||
AddDescription "<b>Log file, content, errors and tips</b>." FAQ.Logfile.txt
|
||||
AddDescription "<b>Memory</b> issues." FAQ.Memory.txt
|
||||
AddDescription "Migration <b>Plan</b>." FAQ.Migration_Plan.txt
|
||||
AddDescription "<b>Office365</b> accounts." FAQ.Office365.txt
|
||||
AddDescription "<b>Massive/bulk migrations</b>." FAQ.Massive.txt
|
||||
AddDescription "<b>Memory issues</b>." FAQ.Memory.txt
|
||||
AddDescription "<b>Migration Plan</b>." FAQ.Migration_Plan.txt
|
||||
AddDescription "<b>The Online UI service Q&R</b>." FAQ.OnlineUI.txt
|
||||
AddDescription "<b>Password & special characters on Windows</b>." FAQ.Passwords_on_Windows.txt
|
||||
AddDescription "<b>Password & special characters on Unix</b>." FAQ.Passwords_on_Unix.txt
|
||||
AddDescription "<b>Password & special characters on Mac OS X</b>." FAQ.Passwords_on_Mac.txt
|
||||
AddDescription "<b>POP3 issues</b>." FAQ.POP3.txt
|
||||
AddDescription "<b>Principles & design decisions</b>." FAQ.Principles.txt
|
||||
AddDescription "<b>Selecting messages</b>." FAQ.Messages_Selection.txt
|
||||
AddDescription "<b>How to transfer too big messages</b>." FAQ.Messages_Too_Big.txt
|
||||
AddDescription "Why the imapsync web site <b>looks so old?</b>" FAQ.Old_Style_Web_Design.txt
|
||||
AddDescription "<b>UCS</b> accounts." FAQ.UCS.txt
|
||||
AddDescription "<b>Why the imapsync web site looks so old?</b>" FAQ.Old_Style_Web_Design.txt
|
||||
AddDescription "<b>Oracle-UCS</b> accounts." FAQ.Oracle-UCS.txt
|
||||
|
||||
AddDescription "<b>Checklist before release a new release</b>." FAQ.Release_Checklist.txt
|
||||
AddDescription "<b>Guidelines to report bugs</b>." FAQ.Reporting_Bugs.txt
|
||||
@ -69,7 +50,6 @@ AddDescription "<b>SSL errors</b>." FAQ.SSL_
|
||||
AddDescription "<b>SmarterMail</b> accounts." FAQ.SmarterMail.txt
|
||||
|
||||
AddDescription "<b>TTL (Time To Live) delay in DNS configuration</b>." FAQ.TTL.txt
|
||||
AddDescription "<b>Why Imapsync can't do two ways syncs</b>." FAQ.Two_Ways_Sync.txt
|
||||
AddDescription "<b>Option --usecache and inodes</b>." FAQ.Use_cache.txt
|
||||
AddDescription "<b>User concurrent access</b>." FAQ.User_Concurrent_Access.txt
|
||||
AddDescription "<b>Virus scanners on Imapsync</b>." FAQ.Virus.txt
|
||||
|
||||
@ -1,48 +1,38 @@
|
||||
## Dockerfile for building a docker imapsync image
|
||||
|
||||
# $Id: Dockerfile,v 1.43 2022/05/17 14:29:36 gilles Exp gilles $
|
||||
# $Id: Dockerfile,v 1.28 2019/12/02 13:19:41 gilles Exp gilles $
|
||||
# I use the following command to build the image:
|
||||
#
|
||||
# docker build -t gilleslamiral/imapsync .
|
||||
#
|
||||
# where this Dockerfile is in the current directory
|
||||
#
|
||||
# This Dockerfile build an image with two imapsync
|
||||
# 1) One comes from https://imapsync.lamiral.info/imapsync
|
||||
# and goes to /usr/bin/imapsync in the Docker image
|
||||
# It is used with the command:
|
||||
#
|
||||
# docker run gilleslamiral/imapsync imapsync ...
|
||||
#
|
||||
# 2) One comes from the local file ./imapsync
|
||||
# and goes to /imapsync in the Docker image
|
||||
# It is used with the command:
|
||||
#
|
||||
# docker run gilleslamiral/imapsync /imapsync ...
|
||||
|
||||
|
||||
# I thank you very much
|
||||
# I like thanks
|
||||
# I like stars
|
||||
# I like money to keep on doing this stuff
|
||||
# I also like (and need) money
|
||||
# I thank you very much
|
||||
|
||||
# Number of imapsync images pulled so far (2022_04_04): 673551
|
||||
# Number of imapsync images pulled so far (2019_12_02): 32732
|
||||
# Command used:
|
||||
# curl -s https://hub.docker.com/v2/repositories/gilleslamiral/imapsync/ | jq '.pull_count'
|
||||
|
||||
# Debian Bullseye is Debian 11
|
||||
|
||||
FROM debian:bullseye
|
||||
FROM debian:buster
|
||||
|
||||
LABEL maintainer="Gilles LAMIRAL <gilles@lamiral.info>" \
|
||||
description="Imapsync" \
|
||||
documentation="https://imapsync.lamiral.info/#doc"
|
||||
|
||||
# I put a copy of the Dockerfile in the image itself
|
||||
# It can help maintenance, isn't it?
|
||||
# Also put optionally my local and usually more recent imapsync on /, for testing purpose
|
||||
# Put a copy of the Dockerfile in the image itself
|
||||
# It can help future maintenance, isn't it?
|
||||
|
||||
COPY Dockerfile imapsyn[c] prerequisites_imapsyn[c] /
|
||||
COPY Dockerfile /
|
||||
|
||||
# Also put my local imapsync on /usr/bin/ for testing purpose
|
||||
# renamed imapsync_local since would be erased by the wget
|
||||
|
||||
COPY imapsync /usr/bin/imapsync_local
|
||||
COPY prerequisites_imapsync /usr/bin/prerequisites_imapsync_local
|
||||
|
||||
RUN set -xe && \
|
||||
apt-get update \
|
||||
@ -50,12 +40,10 @@ RUN set -xe && \
|
||||
libauthen-ntlm-perl \
|
||||
libcgi-pm-perl \
|
||||
libcrypt-openssl-rsa-perl \
|
||||
libcrypt-openssl-pkcs12-perl \
|
||||
libdata-uniqid-perl \
|
||||
libencode-imaputf7-perl \
|
||||
libfile-copy-recursive-perl \
|
||||
libfile-tail-perl \
|
||||
libio-compress-perl \
|
||||
libfile-tail-perl \
|
||||
libio-socket-ssl-perl \
|
||||
libio-socket-inet6-perl \
|
||||
libio-tee-perl \
|
||||
@ -65,7 +53,6 @@ RUN set -xe && \
|
||||
libparse-recdescent-perl \
|
||||
libmodule-scandeps-perl \
|
||||
libpar-packer-perl \
|
||||
libproc-processtable-perl \
|
||||
libreadonly-perl \
|
||||
libregexp-common-perl \
|
||||
libsys-meminfo-perl \
|
||||
@ -80,23 +67,15 @@ RUN set -xe && \
|
||||
make \
|
||||
cpanminus \
|
||||
lsof \
|
||||
ncat \
|
||||
openssl \
|
||||
ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& cpanm IO::Socket::SSL
|
||||
|
||||
# I added the IO::Socket::SSL update to avoid the annoying, confusing and useless warning
|
||||
# DEBUG: .../IO/Socket/SSL.pm:1177: global error: Undefined SSL object
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN set -xe \
|
||||
&& cd /usr/bin/ \
|
||||
&& pwd \
|
||||
&& wget -N --no-check-certificate https://imapsync.lamiral.info/imapsync \
|
||||
https://imapsync.lamiral.info/prerequisites_imapsync \
|
||||
https://raw.githubusercontent.com/google/gmail-oauth2-tools/master/python/oauth2.py \
|
||||
&& chmod +x imapsync oauth2.py \
|
||||
&& /usr/bin/imapsync --testslive && /usr/bin/imapsync --tests # just_a_comment_to_force_update 2022_04_04_21_16_50
|
||||
&& wget -N https://imapsync.lamiral.info/imapsync \
|
||||
https://imapsync.lamiral.info/prerequisites_imapsync \
|
||||
&& mv imapsync /usr/bin/imapsync \
|
||||
&& chmod +x /usr/bin/imapsync /usr/bin/imapsync_local # just_a_comment_to_force_update 2019_11_26_12_58_34
|
||||
|
||||
|
||||
USER nobody:nogroup
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# $Id: INSTALL.ANY.txt,v 1.62 2020/06/03 07:11:10 gilles Exp gilles $
|
||||
# $Id: INSTALL.ANY.txt,v 1.60 2019/11/28 14:37:40 gilles Exp gilles $
|
||||
#
|
||||
# This is the main INSTALL file for imapsync.
|
||||
# imapsync : IMAP sync and migrate tool.
|
||||
@ -42,10 +42,6 @@ Those documents are also available at https://imapsync.lamiral.info/INSTALL.d/
|
||||
- Docker
|
||||
- Online UI like /X
|
||||
|
||||
If you are not familiar with any of these systems but you have to choose
|
||||
one to install imapsync, imapsync online, or the latest imapsync then
|
||||
Centos 7 (not 8 for now) is the easiest system to consider (June 2020).
|
||||
|
||||
If you are not on one of these systems then read the last section
|
||||
below called "Installing imapsync on other Unixes".
|
||||
|
||||
@ -54,7 +50,6 @@ below called "Installing imapsync on other Unixes".
|
||||
=======================================================================
|
||||
|
||||
Easy.
|
||||
|
||||
Read the file INSTALL.d/INSTALL.Darwin.txt
|
||||
This document is also available at
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Darwin.txt
|
||||
@ -64,7 +59,6 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Darwin.txt
|
||||
=======================================================================
|
||||
|
||||
Easy.
|
||||
|
||||
Read the file INSTALL.d/INSTALL.FreeBSD.txt
|
||||
This document is also available at
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.FreeBSD.txt
|
||||
@ -75,7 +69,6 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.FreeBSD.txt
|
||||
=======================================================================
|
||||
|
||||
Easy.
|
||||
|
||||
Read the file INSTALL.d/INSTALL.Centos.txt
|
||||
This document is also available at
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Centos.txt
|
||||
@ -86,38 +79,34 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Centos.txt
|
||||
=======================================================================
|
||||
|
||||
Easy.
|
||||
|
||||
Read the file INSTALL.d/INSTALL.CPanel.txt
|
||||
This document is also available at
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.CPanel.txt
|
||||
|
||||
|
||||
=======================================================================
|
||||
Installing imapsync on Debian
|
||||
Installing imapsync on Debian 6 or 7
|
||||
=======================================================================
|
||||
|
||||
Not so easy.
|
||||
|
||||
See the file INSTALL.d/INSTALL.Debian.txt
|
||||
This document is also available at
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Debian.txt
|
||||
|
||||
=======================================================================
|
||||
Installing imapsync on Ubuntu
|
||||
Installing imapsync on Ubuntu 12 or 14
|
||||
=======================================================================
|
||||
|
||||
Not so easy.
|
||||
|
||||
See the file INSTALL.d/INSTALL.Ubuntu.txt
|
||||
This document is also available at
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Ubuntu.txt
|
||||
|
||||
=======================================================================
|
||||
Installing imapsync on AWS
|
||||
Installing imapsync on AWS EC2
|
||||
=======================================================================
|
||||
|
||||
Not so easy.
|
||||
|
||||
See the file INSTALL.d/INSTALL.AWS_EC2.txt
|
||||
This document is also available at
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.AWS_EC2.txt
|
||||
@ -127,7 +116,6 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.AWS_EC2.txt
|
||||
=======================================================================
|
||||
|
||||
Not so easy.
|
||||
|
||||
See the file INSTALL.d/INSTALL.ArchLinux.txt
|
||||
This document is also available at
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.ArchLinux.txt
|
||||
@ -136,8 +124,6 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.ArchLinux.txt
|
||||
Installing imapsync online like /X
|
||||
=======================================================================
|
||||
|
||||
Not easy.
|
||||
|
||||
Follow the document INSTALL.d/INSTALL.OnlineUI.txt
|
||||
This document is also available at
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.OnlineUI.txt
|
||||
@ -147,7 +133,6 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.OnlineUI.txt
|
||||
Installing imapsync on other Unixes
|
||||
=======================================================================
|
||||
|
||||
Not easy.
|
||||
|
||||
Purchase imapsync at
|
||||
https://imapsync.lamiral.info/
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
# $Id: INSTALL.AWS_EC2.txt,v 1.9 2022/05/17 14:32:47 gilles Exp gilles $
|
||||
# $Id: INSTALL.AWS_EC2.txt,v 1.7 2019/11/28 14:37:23 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
@ -9,56 +9,8 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.AWS_EC2.txt
|
||||
Installing imapsync on AWS EC2
|
||||
=======================================================================
|
||||
|
||||
|
||||
AWS: Amazon Web Service
|
||||
|
||||
A) cat /etc/system-release
|
||||
Amazon Linux release 2 (Karoo)
|
||||
|
||||
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
|
||||
sudo yum install imapsync
|
||||
|
||||
imapsync --version
|
||||
1.727
|
||||
|
||||
To install a more recent imapsync
|
||||
|
||||
sudo yum install perl-App-cpanminus \
|
||||
perl-Dist-CheckConflicts \
|
||||
perl-HTML-Parser \
|
||||
perl-libwww-perl \
|
||||
perl-Module-Implementation \
|
||||
perl-Module-ScanDeps \
|
||||
perl-Package-Stash \
|
||||
perl-Package-Stash-XS \
|
||||
perl-PAR-Packer \
|
||||
perl-Regexp-Common \
|
||||
perl-Sys-MemInfo \
|
||||
perl-Test-Fatal \
|
||||
perl-Test-Mock-Guard \
|
||||
perl-Test-Requires \
|
||||
perl-Test-Deep \
|
||||
perl-File-Tail \
|
||||
perl-Unicode-String \
|
||||
perl-Test-NoWarnings \
|
||||
perl-Test-Simple \
|
||||
perl-Test-Warn \
|
||||
perl-Sub-Uplevel \
|
||||
perl-Proc-ProcessTable
|
||||
|
||||
sudo cpanm Encode::IMAPUTF7
|
||||
wget -N https://imapsync.lamiral.info/imapsync
|
||||
chmod +x imapsync
|
||||
./imapsync --testslive
|
||||
|
||||
./imapsync --version # command typed on 14 April 2020
|
||||
1.983
|
||||
|
||||
sudo cpanm CGI
|
||||
|
||||
|
||||
B) Old Amazon Linux AMI release 2017.03
|
||||
|
||||
cat /etc/system-release
|
||||
Amazon Linux AMI release 2017.03
|
||||
|
||||
@ -97,7 +49,6 @@ perl-Test-Requires \
|
||||
perl-Try-Tiny \
|
||||
perl-Unicode-String \
|
||||
perl-URI \
|
||||
perl-Proc-ProcessTable \
|
||||
cpanminus
|
||||
|
||||
sudo cpanm Authen::NTLM Data::Uniqid IO::Tee \
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
# $Id: INSTALL.ArchLinux.txt,v 1.6 2022/05/17 14:31:44 gilles Exp gilles $
|
||||
# $Id: INSTALL.ArchLinux.txt,v 1.5 2019/11/28 14:37:59 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
@ -88,8 +88,7 @@ Other Perl modules, needed sometimes:
|
||||
JSON::WebToken::Crypt::RSA \
|
||||
Test::Mock::Guard \
|
||||
Test::Warn \
|
||||
PAR::Packer \
|
||||
Proc::ProcessTable
|
||||
PAR::Packer
|
||||
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
# $Id: INSTALL.Centos.txt,v 1.32 2022/05/17 14:32:47 gilles Exp gilles $
|
||||
# $Id: INSTALL.Centos.txt,v 1.14 2019/11/28 14:37:02 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
@ -9,68 +9,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Centos.txt
|
||||
Installing imapsync on CentOS
|
||||
=======================================================================
|
||||
|
||||
There is one section for AlmaLinux and Centos 8,
|
||||
one for Centos 7,
|
||||
and one for Centos 6.
|
||||
|
||||
|
||||
=======================================================================
|
||||
AlmaLinux and Centos 8
|
||||
=======================================================================
|
||||
|
||||
How to install imapsync on AlmaLinux and Centos 8:
|
||||
|
||||
dnf install --enablerepo=powertools imapsync
|
||||
imapsync --testslive
|
||||
|
||||
|
||||
For Centos 8 End Of Life fix:
|
||||
https://www.centos.org/centos-linux-eol/
|
||||
|
||||
If you encounter the error
|
||||
"Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist"
|
||||
|
||||
Do this:
|
||||
|
||||
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-*
|
||||
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-*
|
||||
dnf update
|
||||
|
||||
To upgrade to CentOS stream:
|
||||
|
||||
dnf install centos-release-stream
|
||||
dnf swap centos-{linux,stream}-repos
|
||||
dnf distro-sync
|
||||
|
||||
Taken from
|
||||
https://stackoverflow.com/questions/70926799/centos-through-vm-no-urls-in-mirrorlist
|
||||
|
||||
and tested successfully on one of my hosts, an ex-Centos8/CentOS-stream now.
|
||||
|
||||
=======================================================================
|
||||
AlmaLinux and Centos 8 and latest imapsync
|
||||
=======================================================================
|
||||
|
||||
At the time of this writing (December 2021), the powertools repository
|
||||
contains imapsync release 1.977, which is not the latest available
|
||||
imapsync release. (1.977 date is 2019/12/23 while 2.174 is 2021/12/14)
|
||||
|
||||
In order to install the latest imapsync I suggest the following process:
|
||||
|
||||
Install the powertools imapsync 1.977 release via dnf like mentioned above.
|
||||
It will install the needed packages, Perl itself and Perl modules
|
||||
for release 1.977.
|
||||
|
||||
The imapsync 2.206 and next ones needs the Perl module:
|
||||
|
||||
dnf install perl-Proc-ProcessTable
|
||||
|
||||
wget -N https://imapsync.lamiral.info/imapsync
|
||||
chmod +x imapsync
|
||||
./imapsync --testslive
|
||||
./imapsync --tests
|
||||
|
||||
You may get an even more recent imapsync release this way.
|
||||
There is one section for Centos 7 and one for Centos 6.
|
||||
|
||||
=======================================================================
|
||||
Centos 7
|
||||
@ -91,8 +30,8 @@ A good test that shows also the basic example:
|
||||
|
||||
A live test:
|
||||
|
||||
imapsync --testslive --tls1 --ssl2
|
||||
|
||||
imapsync --testslive
|
||||
|
||||
Unit tests:
|
||||
|
||||
imapsync --tests
|
||||
@ -101,9 +40,8 @@ Unit tests:
|
||||
Centos 7 and latest imapsync
|
||||
=======================================================================
|
||||
|
||||
At the time of this writing (March 2020), the epel7 repository still
|
||||
contains imapsync release 1.727, which is not the latest available
|
||||
imapsync release. (1.727 date is 2016/08/19 while 2.174 is 2021/12/14)
|
||||
At the time of this writing (April 2018), the epel repository contains
|
||||
imapsync release 1.727, which is not the latest available release.
|
||||
|
||||
In order to install the latest imapsync I suggest the following process:
|
||||
|
||||
@ -129,22 +67,15 @@ Then:
|
||||
perl-Test-Requires \
|
||||
perl-Test-Deep \
|
||||
perl-File-Tail \
|
||||
perl-Unicode-String \
|
||||
perl-Test-NoWarnings \
|
||||
perl-Test-Simple \
|
||||
perl-Test-Warn \
|
||||
perl-Sub-Uplevel \
|
||||
perl-Proc-ProcessTable \
|
||||
ca-certificates
|
||||
perl-Unicode-String
|
||||
|
||||
Also, run the following commands:
|
||||
|
||||
cpanm Encode::IMAPUTF7
|
||||
cpanm Encode::IMAPUTF7 # this module is not available as a rpm package
|
||||
|
||||
wget -N https://imapsync.lamiral.info/imapsync
|
||||
chmod +x imapsync
|
||||
./imapsync --testslive
|
||||
|
||||
Now you should have the latest imapsync locally working on Centos 7.
|
||||
Now you should shave the latest imapsync locally working on Centos 7.
|
||||
|
||||
If you want to install it and replace the old one:
|
||||
|
||||
@ -154,7 +85,7 @@ If you want to install it and replace the old one:
|
||||
imapsync --version
|
||||
|
||||
should give the latest release number instead of 1.727
|
||||
(It is 1.979 at the time of this writing)
|
||||
(It is 1.964 at the time of this writing)
|
||||
|
||||
If you want to install an online imapsync service
|
||||
like /X then you also need a recent decent CGI.pm,
|
||||
@ -218,8 +149,7 @@ Then:
|
||||
perl-Test-Requires \
|
||||
perl-Test-Deep \
|
||||
perl-File-Tail \
|
||||
perl-Unicode-String \
|
||||
perl-Proc-ProcessTable
|
||||
perl-Unicode-String
|
||||
|
||||
wget https://imapsync.lamiral.info/imapsync
|
||||
|
||||
|
||||
@ -1,62 +1,46 @@
|
||||
#!/bin/cat
|
||||
# $Id: INSTALL.Darwin.txt,v 1.39 2022/05/17 14:31:44 gilles Exp gilles $
|
||||
# $Id: INSTALL.Darwin.txt,v 1.24 2019/11/28 14:42:52 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Darwin.txt
|
||||
|
||||
|
||||
Usual users should follow the A) section only, with the exception
|
||||
of reading B) before if you use a Catalina system.
|
||||
|
||||
A) Installing imapsync binary on Darwin / Mac OS X
|
||||
B) Installing imapsync on Catalina
|
||||
C) Installing imapsync script on Darwin / Mac OS X with brew
|
||||
D) Installing imapsync script on Darwin / Mac OS X the way I do
|
||||
E) Building imapsync binary on Darwin / Mac OS X
|
||||
|
||||
|
||||
=======================================================================
|
||||
A) Installing imapsync binary on Darwin / Mac OS X
|
||||
Installing imapsync binary on Darwin / Mac OS X
|
||||
=======================================================================
|
||||
|
||||
Caveat Catalina: The binary imapsync_bin_Darwin is detected as a malware
|
||||
or similar on the latest Mac OS X named Catalina.
|
||||
It's Catalina new security policy. I'm working on it.
|
||||
All other Mac OS X releases are ok.
|
||||
So far I found
|
||||
https://www.quora.com/What-does-Can-t-be-opened-because-it-s-integrity-cannot-be-verified-mean-on-OSX-Catalina
|
||||
https://github.com/fastlane/fastlane/issues/15186#issuecomment-532047545
|
||||
https://github.com/neovim/neovim/issues/11011#issuecomment-531369505
|
||||
Other way, on the binary: Control + Right Click -> Open
|
||||
(I don't know if it adds imapsync in the ok apps)
|
||||
See also the last section of https://support.apple.com/en-us/HT202491
|
||||
"How to open an app that hasn’t been notarized or is from an unidentified developer"
|
||||
|
||||
Now, let's forget Catalina for the rest of this document
|
||||
|
||||
There is a standalone imapsync binary for Mac OS X
|
||||
called "imapsync_bin_Darwin" (without the quotes),
|
||||
available in the compressed tarball called imapsync-2.200.tgz
|
||||
where 2.200 is the imapsync version number.
|
||||
available in the compressed tarball called imapsync-1.xxx.tgz
|
||||
where 1.xxx is the version number. I suppose this tarball is put
|
||||
under your $HOME directory, let say /Users/gilles/, but you can
|
||||
put it anywhere.
|
||||
|
||||
In case you haven't bought it yet or forgot where the download link is,
|
||||
check https://imapsync.lamiral.info/dist/
|
||||
Open a terminal: /Applications/Utilities/Terminal double-click on Terminal.
|
||||
|
||||
Download the tarball imapsync-2.200.tgz, not the binary imapsync_bin_Darwin
|
||||
because the binary is also in the tarball and there are other useful files
|
||||
in the tarball. The binary present in /dist/ is just there for a fast upgrade
|
||||
when you need one.
|
||||
|
||||
Suppose this tarball imapsync-2.200.tgz is downloaded under your $HOME directory,
|
||||
lets say /Users/gilles/, but you can put it anywhere. (But obviously your $HOME
|
||||
directory is not /Users/gilles/, it maybe /Users/john/ or /Users/zoey/ where John
|
||||
or Zoey is your login name.)
|
||||
|
||||
Open a terminal: /Applications/Utilities/Terminal, double-click on Terminal.
|
||||
|
||||
Untar the tarball:
|
||||
Untar the tarball where you want:
|
||||
|
||||
cd
|
||||
pwd
|
||||
tar xzvf imapsync-2.200.tgz
|
||||
tar xzvf /Users/gilles/imapsync-1.xxx.tgz
|
||||
|
||||
In case the previous command fails, it means the tarball file called imapsync-2.200.tgz
|
||||
is not in your $HOME directory, you may have downloaded it elsewhere on the file system.
|
||||
A way to find it is the command:
|
||||
Go into the directory imapsync-1.xxx
|
||||
|
||||
find / | grep imapsync
|
||||
|
||||
|
||||
Now that the tarball is extracted, it created a directory called imapsync-2.200/
|
||||
Go into the directory imapsync-2.200 with the command:
|
||||
|
||||
cd imapsync-2.200
|
||||
cd imapsync-1.xxx
|
||||
|
||||
|
||||
First let's have a simple run to see if imapsync_bin_Darwin works.
|
||||
@ -87,66 +71,35 @@ you have to use:
|
||||
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
||||
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
||||
|
||||
You also may have to edit the examples you use, like
|
||||
examples/imapsync_example.sh
|
||||
and replace in there the command ./imapsync by ./imapsync_bin_Darwin
|
||||
in case it is not already done.
|
||||
|
||||
The script examples/imapsync_example_darwin.sh is ready to use,
|
||||
it is a copy of examples/imapsync_example.sh adapted to Mac users.
|
||||
|
||||
|
||||
Be careful the way you edit the script files, use a text editor.
|
||||
Be careful the way you edit the files, use a text editor.
|
||||
Do not use a word processor because word processors add
|
||||
or use special formating characters that will break the shell
|
||||
scripts. If you use TextEdit, use the text mode.
|
||||
|
||||
In the terminal, try:
|
||||
|
||||
sh examples/imapsync_example_darwin.sh
|
||||
The script examples/imapsync_example_darwin.sh is ready to use,
|
||||
it is a copy of examples/imapsync_example.sh adapted to Mac users.
|
||||
|
||||
or copy it and run your copy instead:
|
||||
The script examples/sync_loop_darwin.sh is also ready to use.
|
||||
Try:
|
||||
|
||||
cp examples/imapsync_example_darwin.sh mysync.sh
|
||||
sh examples/sync_loop_darwin.sh
|
||||
|
||||
or
|
||||
|
||||
cp examples/sync_loop_darwin.sh mysync.sh
|
||||
sh mysync.sh
|
||||
|
||||
Now read on the tutorial
|
||||
https://imapsync.lamiral.info/doc/TUTORIAL_Unix.html
|
||||
in order to complete your formation on imapsync.
|
||||
|
||||
If you need to sync or migrate many accounts,
|
||||
the script examples/sync_loop_darwin.sh is also ready to use.
|
||||
|
||||
|
||||
=======================================================================
|
||||
B) Installing imapsync on Catalina
|
||||
=======================================================================
|
||||
|
||||
Caveat Catalina: The binary imapsync_bin_Darwin is detected as malware
|
||||
or similar on the latest Mac OS X named Catalina.
|
||||
It's Catalina new security policy. Imapsync is not a malware or similar.
|
||||
All other Mac OS X releases are ok.
|
||||
|
||||
In order to pass away this detection, follow these steps:
|
||||
|
||||
Run imapsync_bin_Darwin
|
||||
After this first launch, the security asks to authorize the unknown
|
||||
developer program. Set up the root of the imapsync_bin_Darwin file
|
||||
and then run it again or any of the .sh files, it should run ok
|
||||
without any notice any more.
|
||||
|
||||
Sources of this tip:
|
||||
https://www.quora.com/What-does-Can-t-be-opened-because-it-s-integrity-cannot-be-verified-mean-on-OSX-Catalina
|
||||
https://github.com/fastlane/fastlane/issues/15186#issuecomment-532047545
|
||||
https://github.com/neovim/neovim/issues/11011#issuecomment-531369505
|
||||
|
||||
Other way, on the binary: Control + Right Click -> Open
|
||||
|
||||
See also the last section of https://support.apple.com/en-us/HT202491
|
||||
"How to open an app that hasn't been notarized or is from an unidentified developer"
|
||||
|
||||
I don't own a Catalina computer so I can't experiment on this nor make
|
||||
imapsync directly ok with Catalina. You're richer than me :-)
|
||||
|
||||
|
||||
=======================================================================
|
||||
C) Installing imapsync script on Darwin / Mac OS X with brew
|
||||
Installing imapsync script on Darwin / Mac OS X with brew
|
||||
=======================================================================
|
||||
|
||||
In case you have brew installed on your system ( see https://brew.sh/ ),
|
||||
@ -157,39 +110,31 @@ install imapsync with the command:
|
||||
Do a real test with imap server test.lamiral.info:
|
||||
|
||||
imapsync --testslive
|
||||
|
||||
If you encouter an error like "String.c: loadable library and perl binaries
|
||||
are mismatched (got handshake key 0xc500080, needed 0xc400080)",
|
||||
then install imapsync from source with the command:
|
||||
|
||||
brew install -s imapsync
|
||||
|
||||
Thanks to Alessandro for this tip!
|
||||
|
||||
|
||||
=======================================================================
|
||||
D) Installing imapsync script on Darwin / Mac OS X the way I do
|
||||
Installing imapsync script on Darwin / Mac OS X the way I do
|
||||
=======================================================================
|
||||
|
||||
This part is only for advanced Unix users, or brave users.
|
||||
|
||||
The "make" command is a prerequisite to build some Perl modules.
|
||||
Install the "make" command in case it is not already installed.
|
||||
Install make in case it is not already installed.
|
||||
|
||||
First let us install cpanminus locally in ~/perl5
|
||||
|
||||
curl -L https://cpanmin.us | perl - -l ~/perl5 App::cpanminus local::lib
|
||||
wget --no-check-certificate -O- http://cpanmin.us | perl - -l ~/perl5 App::cpanminus local::lib
|
||||
|
||||
Then take this install into account in the current environment
|
||||
|
||||
perl -I ~/perl5/lib/perl5 -Mlocal::lib # just to see the variables
|
||||
eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib` # doing the variables assignments
|
||||
eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`
|
||||
perl -I ~/perl5/lib/perl5 -Mlocal::lib
|
||||
|
||||
If you want to have always this setting in your environment then run the commands
|
||||
|
||||
echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile
|
||||
echo 'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.profile
|
||||
cat ~/.profile
|
||||
. ~/.profile
|
||||
|
||||
Now let's update the standard CPAN Perl module
|
||||
|
||||
@ -202,27 +147,18 @@ helps to verify what is needed to install on your system
|
||||
sh prerequisites_imapsync
|
||||
|
||||
cpanm Authen::NTLM
|
||||
cpanm IO::Tee
|
||||
cpanm Mail::IMAPClient # File::Copy::Recursive?
|
||||
|
||||
cpanm Unicode::String
|
||||
cpanm Sys::MemInfo
|
||||
cpanm File::Tail
|
||||
cpanm Proc::ProcessTable
|
||||
|
||||
cpanm Test::MockObject
|
||||
|
||||
cpanm File::Copy::Recursive IO::Tee
|
||||
cpanm Mail::IMAPClient
|
||||
cpanm Readonly
|
||||
cpanm Unicode::String
|
||||
cpanm Data::Uniqid
|
||||
cpanm JSON::WebToken
|
||||
|
||||
We're ready to install and test the latest imapsync
|
||||
|
||||
curl -L http://imapsync.lamiral.info/imapsync > imapsync
|
||||
chmod +x imapsync
|
||||
wget -c http://imapsync.lamiral.info/imapsync
|
||||
./imapsync
|
||||
./imapsync --testslive
|
||||
./imapsync --tests
|
||||
./imapsync --modules
|
||||
|
||||
You can rerun "sh prerequisites_imapsync"
|
||||
to verify everything is ok:
|
||||
@ -232,14 +168,18 @@ to verify everything is ok:
|
||||
When everything is ok the script execution ends with this sentence
|
||||
"All needed modules are already installed"
|
||||
|
||||
Now imapsync should work on your system.
|
||||
|
||||
./imapsync --testslive
|
||||
|
||||
=======================================================================
|
||||
E) Building imapsync binary on Darwin / Mac OS X
|
||||
Building imapsync binary on Darwin / Mac OS X
|
||||
=======================================================================
|
||||
|
||||
cpanm Module::ScanDeps
|
||||
cpanm PAR::Packer
|
||||
|
||||
pp -x -u -o imapsync.bin imapsync
|
||||
pp -o imapsync.bin imapsync
|
||||
|
||||
./imapsync.bin
|
||||
./imapsync.bin --testslive
|
||||
@ -247,5 +187,12 @@ pp -x -u -o imapsync.bin imapsync
|
||||
./imapsync.bin --module
|
||||
|
||||
|
||||
=======================================================================
|
||||
Installing imapsync Mac OS X Leopard
|
||||
=======================================================================
|
||||
|
||||
Mac OS X Leopard has perl 5.8.8 and an old openssl version.
|
||||
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,49 +1,30 @@
|
||||
#!/bin/cat
|
||||
# $Id: INSTALL.Debian.txt,v 1.38 2022/05/17 14:29:36 gilles Exp gilles $
|
||||
# $Id: INSTALL.Debian.txt,v 1.30 2019/11/28 14:36:18 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Debian.txt
|
||||
|
||||
|
||||
There are four install sections in this document,
|
||||
1) one for Debian 9 Stretch, Debian 10 Buster, Debian 11 Bullseye, Debian 12 Bookworm
|
||||
2) one for all the Debian, called "After installing the dependencies".
|
||||
3) one for Debian 8 Jessie (obsolete)
|
||||
4) one for Debian 7 Wheezy (even more obsolete)
|
||||
There is three install sections in this document,
|
||||
one for Debian 9 Stretch and Debian 10 Buster
|
||||
one for Debian 8 Jessie
|
||||
one for Debian 7 Wheezy
|
||||
|
||||
After reading and following 1) or 3) or 4), you'll be invited to read and follow
|
||||
the section "2) After installing the dependencies"
|
||||
|
||||
What is your Debian release?
|
||||
Type on a terminal:
|
||||
|
||||
cat /etc/debian_version
|
||||
|
||||
12.x => Bookworm
|
||||
11.x => Bullseye
|
||||
10.x => Buster
|
||||
9.x => Stretch
|
||||
8.x => Jessie
|
||||
7.x => Wheezy
|
||||
|
||||
where x is any number between 0 and 9, x is minor and to be forgotten.
|
||||
|
||||
|
||||
First, a call to Debian packagers
|
||||
First a call to Debian packagers
|
||||
Why imapsync is not in Debian as a package?
|
||||
Imapsync used to be in Debian from 2005-04-25 (release 1.125) to 2011-01-25 (release 1.315).
|
||||
It could be in Debian nowadays, as always, my last words on this discussion were
|
||||
"Do what you want, I promise I won't complain anymore about the fact imapsync is in Debian or not."
|
||||
"Do what you want, I promise I won't complain anymore about the fact imapsync is on Debian or not."
|
||||
https://lists.debian.org/debian-legal/2011/01/msg00058.html
|
||||
The Imapsync license is "No limits to do anything with this work and this license".
|
||||
So feel free!
|
||||
The license is now "No limits to do anything with this work and this license".
|
||||
Feel free.
|
||||
See also a more detailed story at
|
||||
https://lists.debian.org/debian-user/2016/11/msg00849.html
|
||||
|
||||
|
||||
=======================================================================
|
||||
1) Installing imapsync on Debian 9 Stretch, 10 Buster, 11 Bullseye
|
||||
Installing imapsync on Debian 9 Stretch or Debian 10 Buster
|
||||
=======================================================================
|
||||
|
||||
How to install imapsync dependencies on a Debian system?
|
||||
@ -51,24 +32,14 @@ How to install imapsync dependencies on a Debian system?
|
||||
The repositories are the classical ones, ie, a
|
||||
/etc/apt/sources.list file with:
|
||||
|
||||
# Debian 12 Bookworm
|
||||
deb http://deb.debian.org/debian bookworm main contrib
|
||||
|
||||
or
|
||||
|
||||
# Debian 11 Bullseye
|
||||
deb http://deb.debian.org/debian bullseye main contrib
|
||||
# Debian 9 Stretch
|
||||
deb http://deb.debian.org/debian stretch main contrib
|
||||
|
||||
or
|
||||
|
||||
# Debian 10 Buster
|
||||
deb http://deb.debian.org/debian buster main contrib
|
||||
|
||||
or
|
||||
|
||||
# Debian 9 Stretch
|
||||
deb http://deb.debian.org/debian stretch main contrib
|
||||
|
||||
|
||||
You need root privilege to run it, be root or use sudo.
|
||||
|
||||
@ -87,7 +58,6 @@ apt install -y \
|
||||
libjson-webtoken-perl \
|
||||
libmail-imapclient-perl \
|
||||
libparse-recdescent-perl \
|
||||
libproc-processtable-perl \
|
||||
libmodule-scandeps-perl \
|
||||
libreadonly-perl \
|
||||
libregexp-common-perl \
|
||||
@ -102,64 +72,20 @@ apt install -y \
|
||||
libtest-deep-perl \
|
||||
libtest-warn-perl \
|
||||
make \
|
||||
time \
|
||||
cpanminus
|
||||
|
||||
|
||||
After installing the dependencies, imapsync should be working,
|
||||
go to the section "2) After installing the dependencies" below.
|
||||
|
||||
=======================================================================
|
||||
2) After installing the dependencies
|
||||
=======================================================================
|
||||
|
||||
You don't have to be root to test and use imapsync.
|
||||
|
||||
Take imapsync either on github:
|
||||
|
||||
wget -N https://raw.githubusercontent.com/imapsync/imapsync/master/imapsync
|
||||
|
||||
or be on the cutting edge with the upstream site:
|
||||
|
||||
wget -N https://imapsync.lamiral.info/imapsync
|
||||
|
||||
Add execution permission to the downloaded script:
|
||||
|
||||
chmod +x imapsync
|
||||
|
||||
Check the dependencies and print also the basic example:
|
||||
|
||||
./imapsync
|
||||
|
||||
Perform a live test showing imapsync job:
|
||||
|
||||
./imapsync --testslive
|
||||
|
||||
Now install imapsync on the system (need root privileges again):
|
||||
|
||||
cp imapsync /usr/bin/
|
||||
|
||||
That's finished for the installation part.
|
||||
You can now use imapsync without knowing where it is located
|
||||
on the system:
|
||||
|
||||
imapsync
|
||||
|
||||
Now go read the menu http://imapsync.lamiral.info/#doc
|
||||
and start with the tutorial
|
||||
https://imapsync.lamiral.info/doc/TUTORIAL_Unix.html
|
||||
|
||||
Feedback is welcome!
|
||||
|
||||
go to the section "After installing the dependencies" below.
|
||||
|
||||
|
||||
=======================================================================
|
||||
3) Installing imapsync on Debian 8 Jessie
|
||||
Installing imapsync on Debian 8 Jessie
|
||||
=======================================================================
|
||||
|
||||
How to install imapsync dependencies on a Debian system?
|
||||
|
||||
You need root privilege.
|
||||
You need root priviledge.
|
||||
|
||||
The first command installs standard Debian packages:
|
||||
apt install \
|
||||
@ -188,7 +114,6 @@ apt install \
|
||||
libtest-nowarnings-perl \
|
||||
libtest-deep-perl \
|
||||
libtest-warn-perl \
|
||||
gcc \
|
||||
make \
|
||||
cpanminus
|
||||
|
||||
@ -223,16 +148,16 @@ the module JSON::WebToken with the command:
|
||||
cpanm JSON::WebToken
|
||||
|
||||
After installing the dependencies, imapsync should be working,
|
||||
go to the section "2) After installing the dependencies" above.
|
||||
go to the section "After installing the dependencies" below.
|
||||
|
||||
|
||||
=======================================================================
|
||||
4) Installing imapsync on Debian 7 Wheezy
|
||||
Installing imapsync on Debian 7 Wheezy
|
||||
=======================================================================
|
||||
|
||||
How to install imapsync dependencies on a Debian system?
|
||||
|
||||
You need root privilege to run the commands.
|
||||
You need root priviledge to run the commands.
|
||||
|
||||
The first command installs standard Debian packages:
|
||||
|
||||
@ -263,7 +188,6 @@ apt-get install \
|
||||
libtest-simple-perl \
|
||||
libunicode-string-perl \
|
||||
liburi-perl \
|
||||
gcc \
|
||||
make \
|
||||
cpanminus
|
||||
|
||||
@ -291,7 +215,40 @@ the module JSON::WebToken with the command:
|
||||
cpanm JSON::WebToken
|
||||
|
||||
|
||||
After installing the dependencies, imapsync should be working,
|
||||
then go to the section "2) After installing the dependencies" above.
|
||||
After installing the dependencies, imapsync should be working.
|
||||
|
||||
=======================================================================
|
||||
After installing the dependencies
|
||||
=======================================================================
|
||||
|
||||
You don't have to be root to test and use imapsync.
|
||||
|
||||
Take imapsync either on github or at the upstream site.
|
||||
|
||||
Add execution permission to the downloaded script:
|
||||
|
||||
chmod +x imapsync
|
||||
|
||||
Check the dependencies and print also the basic example:
|
||||
|
||||
./imapsync
|
||||
|
||||
Perform a live test showing imapsync job:
|
||||
|
||||
./imapsync --testslive
|
||||
|
||||
Now install imapsync on the system (need root priviledges again):
|
||||
|
||||
cp imapsync /usr/bin/
|
||||
|
||||
That's finished for the installation part.
|
||||
You can now use imapsync without knowing where it is located
|
||||
on the system:
|
||||
|
||||
imapsync
|
||||
|
||||
Now go to read http://imapsync.lamiral.info/#doc
|
||||
start with the tutorial.
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
# $Id: INSTALL.Docker_build.txt,v 1.17 2022/05/17 14:29:36 gilles Exp gilles $
|
||||
# $Id: INSTALL.Docker_build.txt,v 1.12 2019/11/28 14:43:48 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
@ -10,53 +10,39 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Docker_build.txt
|
||||
=======================================================================
|
||||
|
||||
Nearly verbatim copy from https://imapsync.lamiral.info/INSTALL.d/Dockerfile
|
||||
(verbatim but the Dockerfile rcs tag $ removed because it would conflict)
|
||||
(nearly but the Dockerfile rcs tag Id: removed, that would conflict)
|
||||
|
||||
## Dockerfile for building a docker imapsync image
|
||||
|
||||
# Id: Dockerfile,v 1.42 2022/04/04 19:16:50 gilles Exp gilles $
|
||||
# Dockerfile,v 1.26 2019/11/27 15:49:13 gilles Exp gilles $
|
||||
# I use the following command to build the image:
|
||||
#
|
||||
# docker build -t gilleslamiral/imapsync .
|
||||
#
|
||||
# where this Dockerfile is in the current directory
|
||||
#
|
||||
# This Dockerfile builds an image with two imapsync
|
||||
# 1) One comes from https://imapsync.lamiral.info/imapsync
|
||||
# and goes to /usr/bin/imapsync in the Docker image
|
||||
# It is used with the command:
|
||||
#
|
||||
# docker run gilleslamiral/imapsync imapsync ...
|
||||
#
|
||||
# 2) One comes from the local file ./imapsync
|
||||
# and goes to /imapsync in the Docker image
|
||||
# It is used with the command:
|
||||
#
|
||||
# docker run gilleslamiral/imapsync /imapsync ...
|
||||
|
||||
|
||||
# I thank you very much
|
||||
# I like thanks
|
||||
# I like stars
|
||||
# I like money to keep on doing this stuff
|
||||
# I also like (and need) money
|
||||
# I thank you very much in advance
|
||||
|
||||
# Number of imapsync images pulled so far (2022_04_04): 673551
|
||||
# Command used:
|
||||
# curl -s https://hub.docker.com/v2/repositories/gilleslamiral/imapsync/ | jq '.pull_count'
|
||||
|
||||
# Debian Bullseye is Debian 11
|
||||
|
||||
FROM debian:bullseye
|
||||
FROM debian:buster
|
||||
|
||||
LABEL maintainer="Gilles LAMIRAL <gilles@lamiral.info>" \
|
||||
description="Imapsync" \
|
||||
documentation="https://imapsync.lamiral.info/#doc"
|
||||
|
||||
# I put a copy of the Dockerfile in the image itself
|
||||
# It can help maintenance, can't it?
|
||||
# Also put optionally my local and usually more recent imapsync on /, for testing purpose
|
||||
# Put a copy of the Dockerfile in the image itself
|
||||
# It can help future maintenance, isn't it?
|
||||
|
||||
COPY Dockerfile imapsyn[c] prerequisites_imapsyn[c] /
|
||||
COPY Dockerfile /
|
||||
|
||||
# Also put my local imapsync on /usr/bin/ for testing purpose
|
||||
# renamed imapsync_local since would be erased by the wget
|
||||
|
||||
COPY imapsync /usr/bin/imapsync_local
|
||||
COPY prerequisites_imapsync /usr/bin/prerequisites_imapsync_local
|
||||
|
||||
RUN set -xe && \
|
||||
apt-get update \
|
||||
@ -67,8 +53,7 @@ RUN set -xe && \
|
||||
libdata-uniqid-perl \
|
||||
libencode-imaputf7-perl \
|
||||
libfile-copy-recursive-perl \
|
||||
libfile-tail-perl \
|
||||
libio-compress-perl \
|
||||
libfile-tail-perl \
|
||||
libio-socket-ssl-perl \
|
||||
libio-socket-inet6-perl \
|
||||
libio-tee-perl \
|
||||
@ -78,7 +63,6 @@ RUN set -xe && \
|
||||
libparse-recdescent-perl \
|
||||
libmodule-scandeps-perl \
|
||||
libpar-packer-perl \
|
||||
libproc-processtable-perl \
|
||||
libreadonly-perl \
|
||||
libregexp-common-perl \
|
||||
libsys-meminfo-perl \
|
||||
@ -93,23 +77,15 @@ RUN set -xe && \
|
||||
make \
|
||||
cpanminus \
|
||||
lsof \
|
||||
ncat \
|
||||
openssl \
|
||||
ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& cpanm IO::Socket::SSL
|
||||
|
||||
# I added the IO::Socket::SSL update to avoid the annoying, confusing and useless warning
|
||||
# DEBUG: .../IO/Socket/SSL.pm:1177: global error: Undefined SSL object
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN set -xe \
|
||||
&& cd /usr/bin/ \
|
||||
&& pwd \
|
||||
&& wget -N --no-check-certificate https://imapsync.lamiral.info/imapsync \
|
||||
https://imapsync.lamiral.info/prerequisites_imapsync \
|
||||
https://raw.githubusercontent.com/google/gmail-oauth2-tools/master/python/oauth2.py \
|
||||
&& chmod +x imapsync oauth2.py \
|
||||
&& /usr/bin/imapsync --testslive && /usr/bin/imapsync --tests # just_a_comment_to_force_update 2022_04_04_21_16_50
|
||||
&& wget -N https://imapsync.lamiral.info/imapsync \
|
||||
https://imapsync.lamiral.info/prerequisites_imapsync \
|
||||
&& mv imapsync /usr/bin/imapsync \
|
||||
&& chmod +x /usr/bin/imapsync /usr/bin/imapsync_local # just_a_comment_to_force_update 2019_11_26_12_58_34
|
||||
|
||||
|
||||
USER nobody:nogroup
|
||||
|
||||
@ -124,5 +100,8 @@ CMD ["/usr/bin/imapsync"]
|
||||
#
|
||||
# End of imapsync Dockerfile
|
||||
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
# $Id: INSTALL.FreeBSD.txt,v 1.12 2022/05/17 14:31:44 gilles Exp gilles $
|
||||
# $Id: INSTALL.FreeBSD.txt,v 1.11 2019/11/28 14:38:42 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
@ -9,7 +9,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.FreeBSD.txt
|
||||
Installing imapsync on FreeBSD
|
||||
=======================================================================
|
||||
|
||||
Thanks to Kurt Jaeger pi@FreeBSD.org, an imapsync package is available in FreeBSD
|
||||
Thanks to Kurt Jaeger pi@FreeBSD.org a imapsync package is available in FreeBSD
|
||||
http://portsmon.freebsd.org/portoverview.py?category=mail&portname=imapsync
|
||||
So, to install imapsync you just have to type one command in a terminal:
|
||||
|
||||
@ -32,8 +32,5 @@ p5-Test-MockObject
|
||||
p5-CGI
|
||||
p5-Encode-IMAPUTF7
|
||||
|
||||
|
||||
Call to FreeBSD developer: These are also the new Perl module dependencies to add
|
||||
for imapsync 2.206 and next ones:
|
||||
|
||||
Proc::ProcessTable
|
||||
Call to FreeBSD developer: It's also the new dependencies to add
|
||||
for next the imapsync package 1.882
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
# $Id: INSTALL.OnlineUI.txt,v 1.56 2022/05/19 08:55:50 gilles Exp gilles $
|
||||
# $Id: INSTALL.OnlineUI.txt,v 1.32 2019/11/28 14:42:17 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
@ -9,10 +9,9 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.OnlineUI.txt
|
||||
Installing imapsync online
|
||||
=======================================================================
|
||||
|
||||
|
||||
I'm now confident with /X since the /X service is up and running quite
|
||||
well since January 2017. Anyway, if you run this service on your own,
|
||||
online, you take responsibility for it.
|
||||
Please consider this as relatively experimental.
|
||||
However, to a certain extent, I'm now confident with /X
|
||||
since the /X service is up and running quite well since January 2017.
|
||||
|
||||
=======================================================================
|
||||
Hardware consideration
|
||||
@ -22,57 +21,58 @@ Average_bandwidth_rate: 345 KiB/s ~ 2.8 Mbps.
|
||||
Load mean: 0.8 on a CPU 4 cores "Intel(R) i5-2320 3.00GHz K8-class"
|
||||
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
Installation
|
||||
|
||||
You have to be a little familiar with what a CGI script is
|
||||
and how to activate a CGI script on the Apache
|
||||
HTTP server, or any other HTTP server. Linux is also a
|
||||
preferred platform (I run /X service on Linux and FreeBSD).
|
||||
|
||||
You have to be a little familiar with what a CGI script is and how to
|
||||
activate a CGI script on the Apache HTTP server, or any other HTTP
|
||||
server. I have received demands to run it on the Ngnix HTTP server but
|
||||
I haven't played with it yet. Linux is also a preferred platform (I
|
||||
run /X service on Linux and FreeBSD).
|
||||
I have tested yet this visual interface on Mac. It works
|
||||
but for now it demands some skills few Mac users have.
|
||||
|
||||
I have tested this visual interface on Mac. It works. For now, it
|
||||
demands some skills few Mac users have. Drop me a note in case you
|
||||
want to do that.
|
||||
I have tested this visual interface on Windows,
|
||||
it fails on Windows because of some hard coded Unix paths.
|
||||
I'm working on it to be Windows ok but it's not done yet (october 2019).
|
||||
|
||||
I have tested this visual interface on Windows, it fails on Windows
|
||||
because of some hardcoded Unix paths. I'm working on it to be Windows
|
||||
ok but it's not done yet (May 2020).
|
||||
Some users have successfully installed a /X visual interface
|
||||
on Windows using a Linux VM machine.
|
||||
|
||||
Some users have successfully installed a /X visual interface on
|
||||
Windows using a Linux VM machine.
|
||||
The web visual user interface frontend /X is compounded in four
|
||||
files: a html5 file, a css file, a javascript file and
|
||||
a logo image:
|
||||
|
||||
The web visual user interface frontend /X is compounded in four files:
|
||||
a html5 file, a CSS file, a javascript file, and a logo image:
|
||||
|
||||
* https://imapsync.lamiral.info/X/imapsync_form_extra.html
|
||||
* https://imapsync.lamiral.info/X/imapsync_form.css
|
||||
* https://imapsync.lamiral.info/X/imapsync_form.js
|
||||
* https://imapsync.lamiral.info/X/logo_imapsync_Xn.png
|
||||
* https://i005.lamiral.info/X/imapsync_form_extra.html
|
||||
* https://i005.lamiral.info/X/imapsync_form.css
|
||||
* https://i005.lamiral.info/X/imapsync_form.js
|
||||
* https://i005.lamiral.info/X/logo_imapsync_Xn.png
|
||||
|
||||
|
||||
You can do a "view source" to see the HTML file as it is written, and
|
||||
a "save" to get it locally. The three other files can be saved the
|
||||
same way or with a command named "wget". I strongly suggest using
|
||||
wget, see below the ready-to-use command lines.
|
||||
You can do a "view source" to see the html file as
|
||||
it is written, and a "save" to get it locally.
|
||||
The three other files can be saved the same way or
|
||||
with wget.
|
||||
|
||||
Those four files can be put anywhere on a web server, as long as they
|
||||
stand in the same directory. If you want to put them in different
|
||||
directories, just change the content of imapsync_form_extra.html to
|
||||
reflect the change, ie, change the two lines referencing
|
||||
imapsync_form.css and imapsync_form.js href="imapsync_form.css" (near
|
||||
the beginning of imapsync_form_extra.html) src="imapsync_form.js"
|
||||
(near the end of imapsync_form_extra.html) I let you change the image
|
||||
logo as an exercise, it's safe if you fail.
|
||||
Those four files can be put anywhere on a web server,
|
||||
as long as they stand in the same directory. If you
|
||||
want to put them in different directories, just change
|
||||
the content of imapsync_form_extra.html to reflect the change,
|
||||
ie, change the two lines referencing imapsync_form.css and imapsync_form.js
|
||||
href="imapsync_form.css" (near the beginning of imapsync_form_extra.html)
|
||||
src="imapsync_form.js" (near the end of imapsync_form_extra.html)
|
||||
I let you changing the image logo as an exercise, it's safe if you fail.
|
||||
|
||||
The actual imap syncing work is done by imapsync acting as a CGI, the
|
||||
visual interface is only there to give imapsync the parameters needed
|
||||
for the sync.
|
||||
The actual imap syncing work is done by imapsync acting as a CGI,
|
||||
the visual interface is only there to give imapsync the parameters
|
||||
needed for the sync.
|
||||
|
||||
Use at least Perl module CGI.pm release 4.08 (2014-10-18) to avoid the
|
||||
bug "Undefined subroutine CGI::multi_param". You can use the command
|
||||
named cpanm to upgrade CGI.pm to its last version, it's the easiest
|
||||
way.
|
||||
Use at least Perl module CGI.pm release 4.08 (2014-10-18)
|
||||
to avoid the bug "Undefined subroutine CGI::multi_param".
|
||||
You can use the command cpanm to upgrade CGI.pm to its last version,
|
||||
it's the easiest way.
|
||||
|
||||
Print the CGI.pm release with:
|
||||
|
||||
@ -82,12 +82,8 @@ If it is under release 4.08 (2014-10-18) then upgrade it with
|
||||
|
||||
cpanm CGI
|
||||
|
||||
It is a good thing to remove the old one if it was installed by a
|
||||
distribution package, I let you this part as an exercise too. Ok, here
|
||||
is a way:
|
||||
|
||||
apt remove libcgi-pm-perl # for the Debian family
|
||||
dnf remove perl-CGI # for the Centos family
|
||||
It is a good thing to remove the old one if it was installed
|
||||
by a distribution package, I let you this part as an exercise too.
|
||||
|
||||
To check and fix the Perl modules dependencies, run:
|
||||
|
||||
@ -95,177 +91,109 @@ To check and fix the Perl modules dependencies, run:
|
||||
wget -N https://imapsync.lamiral.info/prerequisites_imapsync
|
||||
sh prerequisites_imapsync
|
||||
|
||||
To make imapsync work as a CGI script, there are three conditions.
|
||||
In order to make imapsync work as a cgi, there is two conditions.
|
||||
First, imapsync has to work by itself on the web host.
|
||||
|
||||
First, imapsync has to work by itself on the web host. If imapsync
|
||||
doesn't work by itself, as a command line, then it won't work as a CGI
|
||||
script.
|
||||
If imapsync doesn't work by itself, as a command line,
|
||||
then it won't work as a cgi.
|
||||
|
||||
Second, imapsync has to work by itself on the web host using the Unix
|
||||
user running the webserver.
|
||||
|
||||
Third, the file imapsync has to be considered as a cgi script.
|
||||
|
||||
Command lines to provide and verify those three conditions will be
|
||||
provided further in this document, for the Debian family systems and
|
||||
for the Centos family systems. You are strongly advised to follow this
|
||||
commands if need and want help from me because I will first ask you to
|
||||
run them before searching what you did wrong.
|
||||
Second, imapsync has to work by itself on the web host using
|
||||
the Unix user running the web server. Detailed examples to
|
||||
verify that will be provided further in this document.
|
||||
|
||||
The imapsync_form_extra.html file in action calls the CGI location
|
||||
/cgi-bin/imapsync
|
||||
which has to be imapsync itself, the file script (not the directory).
|
||||
|
||||
The very latest and relatively stable imapsync is
|
||||
The very latest and relatively stable imapsync is at
|
||||
https://imapsync.lamiral.info/imapsync
|
||||
This file is the program file used verbatim for the service given at
|
||||
https://imapsync.lamiral.info/X/
|
||||
https://i005.lamiral.info/X/
|
||||
|
||||
Copy the three files imapsync_form.* on a directory that is exported
|
||||
Copy the three files imapsync_form.* on a directory that is exported
|
||||
by your HTTP server.
|
||||
|
||||
Copy the imapsync script on the cgi-bin/ directory
|
||||
allowing CGIs and you'll have your imapsync visual interface
|
||||
and service. The cgi-bin/ directory is usually outside the
|
||||
allowing CGIs and you'll have your own imapsync visual interface
|
||||
and service. The cgi-bin/ directory is usually outside the
|
||||
hierarchy exported to anybody by the HTTP server.
|
||||
|
||||
The default Apache 2.4 timeout is 60 seconds, one minute, and 300
|
||||
secondes for older Apache, 5 minutes. See
|
||||
https://httpd.apache.org/docs/2.4/mod/core.html#timeout
|
||||
|
||||
I use "Timeout 3600", 3600 seconds, an hour. I chose this huge timeout
|
||||
value because imapsync can spend a long time without talking while
|
||||
getting the headers of huge folders of 100k messages. If you intend
|
||||
to offer this service for huge mailboxes or for a long time, I
|
||||
strongly recommend you to set this "Timeout 3600" in the Apache
|
||||
configuration right now because you will sure end up with this timeout
|
||||
issue in a few months. You can search for timeouts in the Apache error
|
||||
log to see if you have timeout issues.
|
||||
|
||||
Now that I have explained the general context for any system, I'll
|
||||
describe concrete examples on several systems, Debian/Ubuntu and
|
||||
Centos. Feedbacks show that the Centos process is easier in case you
|
||||
don't know very much any Linux distribution. But I have to add that if
|
||||
you don't know very much the Linux distribution you use, then you
|
||||
shouldn't install this imapsync service at all.
|
||||
|
||||
Now that I have explained the general context for any system,
|
||||
I'll describe concrete examples on several systems,
|
||||
Debian/Ubuntu and Centos. Feedbacks show that the Centos
|
||||
process is easier in case you know just a little of the
|
||||
linux distributions.
|
||||
|
||||
=============================================================================
|
||||
A) Concrete example on a Debian server with Apache:
|
||||
|
||||
First, install Apache on your Debian system:
|
||||
|
||||
apt install apache2
|
||||
|
||||
Imapsync script place on the server disk will be
|
||||
Imapsync script place on the server disk:
|
||||
/usr/lib/cgi-bin/imapsync
|
||||
|
||||
This classical /cgi-bin directory is usually already configured
|
||||
Get and install latest imapsync:
|
||||
|
||||
cd
|
||||
wget -N -O /usr/lib/cgi-bin/imapsync https://imapsync.lamiral.info/imapsync
|
||||
chmod +x /usr/lib/cgi-bin/imapsync
|
||||
|
||||
Check it like this:
|
||||
|
||||
cd
|
||||
/usr/lib/cgi-bin/imapsync --testslive
|
||||
|
||||
Assuming that the Unix account running Apache is www-data,
|
||||
check that it will work under Apache with this command:
|
||||
|
||||
su -s /bin/sh -c 'SERVER_SOFTWARE=foo /usr/lib/cgi-bin/imapsync' www-data
|
||||
|
||||
wget -nv -S -O- http://localhost/cgi-bin/imapsync?testslive=1
|
||||
|
||||
It should print something like:
|
||||
Status: 200 OK to sync IMAP boxes. Load on bar is ...
|
||||
...
|
||||
|
||||
|
||||
This classical /cgi-bin directory is already configured
|
||||
in the Apache configuration file
|
||||
/etc/apache2/sites-available/default-ssl
|
||||
or
|
||||
/etc/apache2/sites-available/default
|
||||
|
||||
This configuration file contains the following section
|
||||
The configuration file contains the following section
|
||||
somewhere, maybe in comments for now, ie, with
|
||||
some # characters at the beginning to make them ignored.
|
||||
If you don't find the following section, keep reading,
|
||||
the solution is below.
|
||||
some # characters
|
||||
at the beginning to make them ignored:
|
||||
|
||||
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
|
||||
<Directory "/usr/lib/cgi-bin">
|
||||
AllowOverride None
|
||||
# Next line "no-gzip 1" is to avoid output buffering,
|
||||
# clients can then see the log during the sync
|
||||
# clients can then see the log along the sync
|
||||
SetEnv no-gzip 1
|
||||
Options +ExecCGI -MultiViews
|
||||
|
||||
# Choose either one or the other, depending on your Apache version
|
||||
# Lines beginning with # are ignored
|
||||
|
||||
# For Apache 2.2
|
||||
#Order allow, deny
|
||||
#Allow from all
|
||||
|
||||
# Apache 2.4
|
||||
Require all granted
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
</Directory>
|
||||
|
||||
In recent Debian distributions you can activate this cgi
|
||||
stuff with the following commands:
|
||||
|
||||
a2enmod cgi
|
||||
a2enconf serve-cgi-bin
|
||||
/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
|
||||
wget -nv -S -O- http://localhost/cgi-bin/imapsync?testslive=1
|
||||
|
||||
That's all for the Apache Debian family configuration side.
|
||||
|
||||
Now get, test, and install the latest imapsync:
|
||||
|
||||
cd
|
||||
wget -N https://imapsync.lamiral.info/imapsync
|
||||
chmod +x imapsync
|
||||
|
||||
# some basic tests
|
||||
./imapsync
|
||||
./imapsync --testslive
|
||||
|
||||
cp imapsync /usr/lib/cgi-bin/
|
||||
|
||||
Assuming that the Unix account running Apache is www-data, check that
|
||||
it will work under Apache with this command:
|
||||
|
||||
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
|
||||
|
||||
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 or a 5xx here then review the cgi installation and
|
||||
configuration part.
|
||||
|
||||
|
||||
You can also verify that the webserver is not buffering its output with the
|
||||
command:
|
||||
|
||||
wget -nv -S -O- 'http://localhost/cgi-bin/imapsync?testslive=1&simulong=10'
|
||||
|
||||
You should get the output as time goes on. If you don't get the output
|
||||
as time goes on, ie you see no output then all output at once, it
|
||||
means the webserver is buffering. Fix it with the "SetEnv no-gzip 1"
|
||||
described above.
|
||||
|
||||
|
||||
The UI front-end file place on the server disk in this example is
|
||||
The UI front-end file place on the server disk in
|
||||
this example is
|
||||
/var/www/html/X/imapsync_form_extra.html
|
||||
but it can be placed anywhere on the disk, the important thing is that
|
||||
it has to be served by the webserver.
|
||||
but it can be placed it anywhere on disk, the important
|
||||
thing is that it has to be served by the web server.
|
||||
|
||||
mkdir /var/www/html/X/
|
||||
cd /var/www/html/X/
|
||||
wget -N \
|
||||
https://imapsync.lamiral.info/X/imapsync_form_extra.html \
|
||||
https://imapsync.lamiral.info/X/imapsync_form.css \
|
||||
https://imapsync.lamiral.info/X/imapsync_form.js \
|
||||
https://imapsync.lamiral.info/X/logo_imapsync_Xn.png
|
||||
https://i005.lamiral.info/X/imapsync_form_extra.html \
|
||||
https://i005.lamiral.info/X/imapsync_form.css \
|
||||
https://i005.lamiral.info/X/imapsync_form.js \
|
||||
https://i005.lamiral.info/X/logo_imapsync_Xn.png
|
||||
ln -s imapsync_form_extra.html index.html
|
||||
|
||||
The imapsync process working directory in cgi mode is
|
||||
/var/tmp/imapsync_cgi/
|
||||
it is not configurable unless changing it in imapsync directly, it is
|
||||
hard-coded in imapsync. In this directory will go the log files and
|
||||
it is not configurable unless changing it in
|
||||
imapsync directly, it is hard-coded in imapsync.
|
||||
In this directory will go the log files and
|
||||
the pid files.
|
||||
|
||||
Check
|
||||
@ -273,35 +201,18 @@ Check
|
||||
or the safer
|
||||
https://yourhost/X/imapsync_form_extra.html
|
||||
|
||||
Let's encrypt your site because credentials 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.
|
||||
That's all for installing a /X service on Debian.
|
||||
|
||||
=============================================================================
|
||||
B) Here is a concrete example on a Centos 7 server with the Apache
|
||||
webserver httpd:
|
||||
|
||||
First, follow and apply the section "Centos 7 and latest imapsync" at
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Centos.txt
|
||||
|
||||
Then:
|
||||
|
||||
yum install httpd
|
||||
systemctl restart httpd
|
||||
|
||||
cpanm CGI
|
||||
B) Concrete example on a Centos 7 server with httpd Apache:
|
||||
|
||||
mkdir /var/www/html/X/
|
||||
cd /var/www/html/X/
|
||||
wget -N \
|
||||
https://imapsync.lamiral.info/X/imapsync_form_extra.html \
|
||||
https://imapsync.lamiral.info/X/imapsync_form.css \
|
||||
https://imapsync.lamiral.info/X/imapsync_form.js \
|
||||
https://imapsync.lamiral.info/X/logo_imapsync_Xn.png
|
||||
https://i005.lamiral.info/X/imapsync_form_extra.html \
|
||||
https://i005.lamiral.info/X/imapsync_form.css \
|
||||
https://i005.lamiral.info/X/imapsync_form.js \
|
||||
https://i005.lamiral.info/X/logo_imapsync_Xn.png
|
||||
ln -s imapsync_form_extra.html index.html
|
||||
|
||||
cd
|
||||
@ -312,241 +223,17 @@ Then:
|
||||
./imapsync --testslive
|
||||
|
||||
cp imapsync /var/www/cgi-bin/
|
||||
|
||||
Assuming that the Unix account running Apache is "apache",
|
||||
which is the default Apache user on Centos system,
|
||||
check that it will work under Apache with this command:
|
||||
|
||||
# a real synchronization but not in cgi context
|
||||
cd /tmp
|
||||
su -s /bin/sh -c '/var/www/cgi-bin/imapsync --testslive' apache
|
||||
|
||||
# in cgi context but just the imapsync command with no parameter
|
||||
cd
|
||||
su -s /bin/sh -c 'SERVER_SOFTWARE=foo /var/www/cgi-bin/imapsync' apache
|
||||
|
||||
# a real synchronization in cgi context
|
||||
wget -nv -S -O- http://localhost/cgi-bin/imapsync?testslive=1
|
||||
|
||||
The last command should print something like:
|
||||
Status: 200 OK to sync IMAP boxes. Load on bar is ...
|
||||
...
|
||||
|
||||
You can also verify that the webserver is not buffering its output
|
||||
with the command:
|
||||
|
||||
wget -nv -S -O- 'http://localhost/cgi-bin/imapsync?testslive=1&simulong=10'
|
||||
|
||||
You should get the output as time goes on. If you don't, no output
|
||||
then all output at once, it means the webserver is buffering. Fix it
|
||||
with the "SetEnv no-gzip 1" described above.
|
||||
|
||||
Now check
|
||||
Check
|
||||
http://yourhost/X/imapsync_form_extra.html
|
||||
or the safer
|
||||
https://yourhost/X/imapsync_form_extra.html
|
||||
|
||||
That's all for installing a /X service on Centos 7.
|
||||
|
||||
|
||||
B bis) How about Centos 8?
|
||||
|
||||
Follow the procedure for Centos 7. While imapsync is ok on the command
|
||||
line, you will encounter some permission denied in the CGI
|
||||
context. Something like:
|
||||
|
||||
wget -nv -S -O- http://localhost/cgi-bin/imapsync?testslive=1
|
||||
...
|
||||
Host1 failure: can not open imap connection on host1
|
||||
[test1.lamiral.info] with user [test1]: Unable to connect to
|
||||
test1.lamiral.info: Permission denied
|
||||
|
||||
The issue might come from SELinux. I haven't dig into SELinux enough
|
||||
to give you the commands that will allow imapsync online and only it
|
||||
while maintaining SELinux in enforcing mode.
|
||||
|
||||
Quick solution:
|
||||
|
||||
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:
|
||||
|
||||
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
|
||||
=========
|
||||
|
||||
You may also want to avoid being placed by systemd in a directory like
|
||||
(where xxx are crypto hash characters):
|
||||
|
||||
/var/tmp/systemd-private-xxx-httpd.service-xxx/tmp/
|
||||
|
||||
In that case, see the Troubleshooting section below.
|
||||
|
||||
|
||||
=======================================================================
|
||||
=================== Bandwidth statistics ==========================
|
||||
=======================================================================
|
||||
|
||||
If you want the bandwidth statistics like the ones at the bottom of
|
||||
the page and following the image link, more detailed at
|
||||
https://imapsync.lamiral.info/vnstat/vnstati.html
|
||||
|
||||
Those stats are generated by vnstat
|
||||
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/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
|
||||
|
||||
|
||||
|
||||
|
||||
=======================================================================
|
||||
====================== Troubleshooting ============================
|
||||
=======================================================================
|
||||
|
||||
The log says the temporary directory is
|
||||
/var/tmp/imapsync_cgi/
|
||||
but this directory is not in the system. What a mystery!
|
||||
|
||||
It may be that the apache or httpd service is run by systemd with a
|
||||
jailed temporary directory.
|
||||
|
||||
Solution:
|
||||
|
||||
find /etc/systemd/ /usr/lib/systemd/ | xargs grep -s PrivateTmp
|
||||
|
||||
If systemd jails Apache, then you'll find a line like:
|
||||
/etc/systemd/system/multi-user.target.wants/apache2.service:PrivateTmp=true
|
||||
(Debian/Ubuntu)
|
||||
or
|
||||
/usr/lib/systemd/system/httpd.service:PrivateTmp=true
|
||||
(Centos)
|
||||
|
||||
The goal is to override the line
|
||||
|
||||
PrivateTmp=true
|
||||
|
||||
found in /etc/systemd/system/multi-user.target.wants/apache2.service
|
||||
or
|
||||
/usr/lib/systemd/system/httpd.service
|
||||
|
||||
with the line:
|
||||
|
||||
PrivateTmp=false
|
||||
|
||||
The right way to do it is by using the "systemctl edit ..." command
|
||||
and then reload the systemd daemon and restart the apache2 service.
|
||||
You can also edit directly the file override.conf if you know where
|
||||
to do it. If you don't use the override.conf mechanism then your change will
|
||||
be canceled the next time the apache package is updated.
|
||||
|
||||
Debian:
|
||||
systemctl edit apache2
|
||||
|
||||
cat /etc/systemd/system/apache2.service.d/override.conf
|
||||
[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
|
||||
|
||||
Then retry
|
||||
|
||||
wget -nv -S -O- http://localhost/cgi-bin/imapsync?testslive=1
|
||||
|
||||
Look now if /var/tmp/imapsync_cgi/ is there.
|
||||
|
||||
=======================================================================
|
||||
If you encounter this issue:
|
||||
|
||||
Failed to find a valid digest in the 'integrity' attribute for resource
|
||||
'https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js'
|
||||
with computed SHA-256 integrity 'kZMXypKF3if9/5v2tP9UHBvS/535tSyH7vjszruyCso='.
|
||||
The resource has been blocked.
|
||||
|
||||
It may be because of AdBlock.
|
||||
|
||||
Verification:
|
||||
|
||||
wget https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js
|
||||
cat jquery.min.js | openssl dgst -sha384 -binary | openssl base64 -A
|
||||
|
||||
gives exactly what is in imapsync_form_extra.html
|
||||
|
||||
more imapsync_form_extra.html
|
||||
...
|
||||
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"
|
||||
integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f"
|
||||
|
||||
So if your https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js
|
||||
is not what it should be, your access looks compromised.
|
||||
|
||||
Thanks to Dominik Ulrich for this insight!
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
This part is for hackers only.
|
||||
|
||||
If you want to use the UI but make it more complicated things than
|
||||
just run imapsync then use the following files:
|
||||
|
||||
imapsync_shell_wrapper instead of imapsync itself
|
||||
imapsync_form_wrapper.js instead of imapsync_form.js
|
||||
imapsync_form_wrapper.html instead of imapsync_form.html
|
||||
|
||||
How to get those files:
|
||||
|
||||
wget -N https://imapsync.lamiral.info/X/imapsync_shell_wrapper \
|
||||
https://imapsync.lamiral.info/X/imapsync_form_wrapper.js \
|
||||
https://imapsync.lamiral.info/X/imapsync_form_wrapper.html
|
||||
|
||||
Centos:
|
||||
chmod +x imapsync_shell_wrapper
|
||||
cp imapsync_shell_wrapper /var/www/cgi-bin/
|
||||
|
||||
Debian:
|
||||
chmod +x imapsync_shell_wrapper
|
||||
cp imapsync_shell_wrapper /usr/lib/cgi-bin/
|
||||
|
||||
Normally, you only have to change the script imapsync_shell_wrapper to
|
||||
suit your needs.
|
||||
|
||||
Have in mind that the abort button will kill only one imapsync so it
|
||||
is not a working button in case of successive imapsync runs.
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -554,12 +241,13 @@ is not a working button in case of successive imapsync runs.
|
||||
====== mod_perl failure ======
|
||||
|
||||
This part is for mod_perl experts only.
|
||||
The script imapsync doesn't work under Modperl::Registry
|
||||
nor under ModPerl::PerlRun. So read on if you think you
|
||||
are better than me.
|
||||
|
||||
The script imapsync doesn't work under Modperl::Registry nor under
|
||||
ModPerl::PerlRun. So read on if you think you are better than me.
|
||||
|
||||
I tried the standard way, telling how any cgi Perl script can be run
|
||||
under mod_perl perlrun, but it fails with imapsync. Any hint welcome!
|
||||
I've try the standard way, telling how any cgi perl script
|
||||
can be run under mod_perl perlrun, but it fails with imapsync.
|
||||
Any hint welcome!
|
||||
|
||||
# This is a Debian example
|
||||
|
||||
@ -598,5 +286,6 @@ under mod_perl perlrun, but it fails with imapsync. Any hint welcome!
|
||||
|
||||
curl http://localhost/perl-run/imapsync
|
||||
|
||||
|
||||
=======================================================================
|
||||
=======================================================================
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/cat
|
||||
# $Id: INSTALL.Ubuntu.txt,v 1.21 2022/06/03 16:58:47 gilles Exp gilles $
|
||||
# $Id: INSTALL.Ubuntu.txt,v 1.17 2019/11/28 14:35:43 gilles Exp gilles $
|
||||
|
||||
This documentation is also located online at
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
@ -17,7 +17,6 @@ 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 \
|
||||
@ -29,13 +28,11 @@ 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 \
|
||||
@ -52,7 +49,6 @@ libtest-nowarnings-perl \
|
||||
libtest-deep-perl \
|
||||
libtest-warn-perl \
|
||||
make \
|
||||
time \
|
||||
cpanminus
|
||||
|
||||
In case you want to update the Perl module
|
||||
@ -61,6 +57,11 @@ 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.
|
||||
@ -83,7 +84,7 @@ A live test showing imapsync job:
|
||||
|
||||
./imapsync --testslive
|
||||
|
||||
Now the install command (need root privileges again):
|
||||
Now the install command (need root priviledges again):
|
||||
|
||||
cp imapsync /usr/bin/
|
||||
|
||||
|
||||
@ -1,18 +0,0 @@
|
||||
#!/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
|
||||
|
||||
|
||||
@ -1,10 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# $Id: memo_docker,v 1.17 2022/04/04 14:46:21 gilles Exp gilles $
|
||||
|
||||
echo imapsync_docker_timestamp_dockerfile
|
||||
imapsync_docker_timestamp_dockerfile()
|
||||
{
|
||||
imapsync_docker_timestamp_dockerfile() {
|
||||
DATE_CURRENT=`date +%Y_%m_%d_%H_%M_%S`
|
||||
echo $DATE_CURRENT
|
||||
sed -i -e "/just_a_comment_to_force_update/s/comment_to_force_update.*/comment_to_force_update $DATE_CURRENT/" Dockerfile
|
||||
@ -12,30 +9,21 @@ imapsync_docker_timestamp_dockerfile()
|
||||
}
|
||||
|
||||
echo imapsync_docker_build
|
||||
imapsync_docker_build()
|
||||
{
|
||||
imapsync_docker_build() {
|
||||
docker build -t gilleslamiral/imapsync . \
|
||||
&& imapsync_docker_add_tag_version && echo Build SUCCEEDED || echo Build FAILED
|
||||
}
|
||||
|
||||
echo imapsync_docker_version
|
||||
imapsync_docker_version()
|
||||
{
|
||||
docker run gilleslamiral/imapsync imapsync --version
|
||||
}
|
||||
|
||||
echo imapsync_local_docker_version
|
||||
imapsync_local_docker_version()
|
||||
{
|
||||
docker run gilleslamiral/imapsync /imapsync --version
|
||||
echo
|
||||
#docker run gilleslamiral/imapsync imapsync --testslive
|
||||
#docker run gilleslamiral/imapsync imapsync --testslive6
|
||||
# docker run gilleslamiral/imapsync imapsync --testslive6 --nossl2
|
||||
}
|
||||
|
||||
echo imapsync_docker_add_tag_version
|
||||
imapsync_docker_add_tag_version()
|
||||
{
|
||||
imapsync_docker_add_tag_version() {
|
||||
docker images gilleslamiral/imapsync
|
||||
echo
|
||||
version=`imapsync_docker_version`
|
||||
version=`docker run gilleslamiral/imapsync imapsync --version`
|
||||
echo $version
|
||||
docker tag gilleslamiral/imapsync:latest gilleslamiral/imapsync:$version
|
||||
docker images gilleslamiral/imapsync
|
||||
@ -44,37 +32,25 @@ imapsync_docker_add_tag_version()
|
||||
|
||||
|
||||
echo imapsync_docker_testslive
|
||||
imapsync_docker_testslive()
|
||||
{
|
||||
echo docker run gilleslamiral/imapsync imapsync --testslive "$@"
|
||||
docker run gilleslamiral/imapsync imapsync --testslive "$@"
|
||||
imapsync_docker_testslive() {
|
||||
echo docker run gilleslamiral/imapsync imapsync --testslive
|
||||
docker run gilleslamiral/imapsync imapsync --testslive
|
||||
}
|
||||
|
||||
echo imapsync_docker_testslive6
|
||||
imapsync_docker_testslive6()
|
||||
{
|
||||
echo docker run gilleslamiral/imapsync imapsync --testslive6 "$@"
|
||||
docker run gilleslamiral/imapsync imapsync --testslive6 "$@"
|
||||
imapsync_docker_testslive6() {
|
||||
echo docker run gilleslamiral/imapsync imapsync --testslive6 --ssl1 --ssl2
|
||||
docker run gilleslamiral/imapsync imapsync --testslive6 --ssl1 --ssl2
|
||||
}
|
||||
|
||||
echo imapsync_docker_tests
|
||||
imapsync_docker_tests()
|
||||
{
|
||||
imapsync_docker_tests() {
|
||||
echo docker run gilleslamiral/imapsync imapsync --tests
|
||||
docker run gilleslamiral/imapsync imapsync --tests
|
||||
}
|
||||
|
||||
echo imapsync_docker_envfile
|
||||
imapsync_docker_envfile()
|
||||
{
|
||||
docker run --env-file ./secret.txt gilleslamiral/imapsync imapsync \
|
||||
--host1 test1.lamiral.info --user1 test1 \
|
||||
--host2 test2.lamiral.info --user2 test2 --justlogin
|
||||
}
|
||||
|
||||
echo docker_delete_all_images
|
||||
docker_delete_all_images()
|
||||
{
|
||||
docker_delete_all_images() {
|
||||
docker rm `docker ps -a -q`
|
||||
docker rmi `docker images -q`
|
||||
}
|
||||
@ -86,8 +62,7 @@ docker_system_prune()
|
||||
}
|
||||
|
||||
echo docker_delete_dandling_images
|
||||
docker_delete_dandling_images()
|
||||
{
|
||||
docker_delete_dandling_images() {
|
||||
docker images
|
||||
dandling_images=`docker images -f dangling=true -q`
|
||||
exited_containers=`docker ps -a -f status=exited -q`
|
||||
@ -98,41 +73,23 @@ docker_delete_dandling_images()
|
||||
|
||||
|
||||
echo imapsync_docker_rebuild_from_scratch
|
||||
imapsync_docker_rebuild_from_scratch()
|
||||
{
|
||||
imapsync_docker_rebuild_from_scratch() {
|
||||
delete_all_images
|
||||
docker images
|
||||
imapsync_docker_build
|
||||
}
|
||||
|
||||
|
||||
echo is_release_number
|
||||
is_release_number()
|
||||
{
|
||||
echo "$1" | perl -pe 'm/^\d\.\d+$/ || exit 1'
|
||||
}
|
||||
|
||||
echo imapsync_docker_upload
|
||||
imapsync_docker_upload()
|
||||
{
|
||||
version=`imapsync_docker_version`
|
||||
version_local=`imapsync_local_docker_version`
|
||||
|
||||
# upload only after successful tests
|
||||
set -x \
|
||||
&& is_release_number "$version" \
|
||||
&& is_release_number "$version_local" \
|
||||
&& test "$version" = "$version_local" \
|
||||
&& rcsdiff imapsync Dockerfile memo_docker \
|
||||
&& imapsync_docker_testslive \
|
||||
&& imapsync_docker_tests \
|
||||
&& docker run gilleslamiral/imapsync true \
|
||||
&& docker run gilleslamiral/imapsync diff /imapsync /usr/bin/imapsync \
|
||||
&& docker login --username=gilleslamiral --password=`cat $HOME/var/pass/secret.docker` \
|
||||
&& docker push gilleslamiral/imapsync:latest \
|
||||
&& docker push gilleslamiral/imapsync:$version \
|
||||
&& set +x && echo imapsync push SUCCEEDED || echo imapsync push FAILED
|
||||
set +x
|
||||
imapsync_docker_upload() {
|
||||
# upload only after successful tests
|
||||
set -x \
|
||||
&& imapsync_docker_testslive \
|
||||
&& imapsync_docker_tests \
|
||||
&& docker run gilleslamiral/imapsync true \
|
||||
&& docker login --username=gilleslamiral --password=`cat $HOME/var/pass/secret.docker` \
|
||||
&& docker push gilleslamiral/imapsync:latest \
|
||||
&& set +x && echo imapsync push SUCCEEDED || echo imapsync push FAILED
|
||||
set +x
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
# $Id: prerequisites_imapsync,v 1.36 2022/05/17 13:46:16 gilles Exp gilles $
|
||||
# $Id: prerequisites_imapsync,v 1.35 2019/11/27 15:58:46 gilles Exp gilles $
|
||||
|
||||
MODULES_MANDATORY='
|
||||
App::cpanminus
|
||||
@ -39,7 +39,6 @@ Package::Stash::XS
|
||||
PAR::Packer
|
||||
Parse::RecDescent
|
||||
Pod::Usage
|
||||
Proc::ProcessTable
|
||||
Readonly
|
||||
Regexp::Common
|
||||
Sys::MemInfo
|
||||
|
||||
@ -1,2 +0,0 @@
|
||||
IMAPSYNC_PASSWORD1=secret1
|
||||
IMAPSYNC_PASSWORD2=secret2
|
||||
512
Makefile
512
Makefile
@ -1,5 +1,5 @@
|
||||
|
||||
# $Id: Makefile,v 1.349 2022/09/15 08:43:25 gilles Exp gilles $
|
||||
# $Id: Makefile,v 1.320 2020/01/03 22:50:27 gilles Exp gilles $
|
||||
|
||||
.PHONY: help usage all doc
|
||||
|
||||
@ -15,9 +15,9 @@ usage:
|
||||
@echo "make testf # run tests"
|
||||
@echo "make testv # run tests verbosely"
|
||||
@echo "make test_quick # few tests verbosely"
|
||||
@echo "make win32testsbat # run --tests and W/test.bat on win32"
|
||||
@echo "make win32tests # run --tests on win32"
|
||||
@echo "make win32testsdebug # run --testsdebug on win32"
|
||||
@echo "make W/test.bat # run --tests and W/test.bat on win32"
|
||||
@echo "make W/test_tests.bat # run --tests on win32"
|
||||
@echo "make W/test_testsdebug.bat # run --testsdebug on win32"
|
||||
@echo "make W/test2.bat # run W/test2.bat on win32"
|
||||
@echo "make W/test3.bat # run W/test3.bat on win32"
|
||||
@echo "make W/test_reg.bat # run W/test_reg.bat on win32"
|
||||
@ -34,7 +34,6 @@ usage:
|
||||
@echo "make upload_index"
|
||||
@echo "make upload_FAQ # upload FAQs and documentation"
|
||||
@echo "make upload_X # upload online UI"
|
||||
@echo "make upload_csv # upload online CSV service"
|
||||
@echo "make upload_latest # upload latest imapsync and binaries (dev)"
|
||||
@echo "make upload_cgi # upload latest imapsync online, after local and remote --tests success."
|
||||
@echo "make upload_cgi_memo # upload cgi_memo stat_patterns.txt to /X servers."
|
||||
@ -53,9 +52,9 @@ usage:
|
||||
@echo "make mactestsdebug # run ./imapsync --testsdebug on Mac"
|
||||
@echo "make mactests # run ./imapsync --tests on Mac"
|
||||
@echo "make mactestslive # run ./imapsync --testslive on Mac"
|
||||
@echo "make ks5testsdebug # run ./imapsync --testsdebug on ks5"
|
||||
@echo "make ks5tests # run ./imapsync --tests on ks5"
|
||||
@echo "make ks5testslive # run ./imapsync --testslive on ks5"
|
||||
@echo "make ks2testsdebug # run ./imapsync --testsdebug on ks2"
|
||||
@echo "make ks2tests # run ./imapsync --tests on ks2"
|
||||
@echo "make ks2testslive # run ./imapsync --testslive on ks2"
|
||||
|
||||
|
||||
PREFIX ?= /usr
|
||||
@ -63,6 +62,9 @@ DIST_PATH := dist2/
|
||||
VERSION := $(shell perl ./imapsync --version 2>/dev/null || cat VERSION)
|
||||
VERSION_PREVIOUS := $(shell perl ./$(DIST_PATH)/imapsync --version 2>/dev/null || echo ERROR)
|
||||
|
||||
IMAPClient_3xx := ./W/Mail-IMAPClient-3.42/lib
|
||||
IMAPClient := $(IMAPClient_3xx)
|
||||
|
||||
|
||||
DIST_NAME := imapsync-$(VERSION)
|
||||
DIST_FILE := $(DIST_NAME).tgz
|
||||
@ -83,6 +85,7 @@ hello:
|
||||
@echo "VERSION $(VERSION)"
|
||||
@echo "DIST_NAME $(DIST_NAME)"
|
||||
@echo "VERSION_PREVIOUS $(VERSION_PREVIOUS)"
|
||||
@echo "IMAPClient $(IMAPClient)"
|
||||
@echo "HOSTNAME $(HOSTNAME)"
|
||||
@echo "ARCH $(ARCH)"
|
||||
@echo "KERNEL $(KERNEL)"
|
||||
@ -90,9 +93,9 @@ hello:
|
||||
@echo "DISTRO $(DISTRO)"
|
||||
|
||||
|
||||
all: doc VERSION biz prereq allcritic
|
||||
all: doc VERSION biz prereq allcritic bin
|
||||
|
||||
testp:
|
||||
testp :
|
||||
sh INSTALL.d/prerequisites_imapsync
|
||||
@perl -c imapsync || { echo; echo "Read the INSTALL file to solve Perl module dependencies!"; exit 1; }
|
||||
|
||||
@ -105,10 +108,12 @@ README: imapsync
|
||||
|
||||
VERSION: imapsync
|
||||
rcsdiff imapsync
|
||||
./imapsync --version > ./VERSION
|
||||
perl -I./$(IMAPClient) ./imapsync --version > ./VERSION
|
||||
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
|
||||
@ -123,9 +128,9 @@ doc/TUTORIAL_Unix.html: doc/TUTORIAL_Unix.t2t
|
||||
|
||||
doc: README ChangeLog doc/TUTORIAL_Unix.html doc/GOOD_PRACTICES.html W/imapsync.1
|
||||
|
||||
.PHONY: clean clean_tilde clean_test doc clean_log clean_bak clean_permissions clean_oauth2
|
||||
.PHONY: clean clean_tilde clean_test doc clean_log clean_bak clean_permissions
|
||||
|
||||
clean: clean_tilde clean_man clean_log clean_bak clean_permissions clean_oauth2
|
||||
clean: clean_tilde clean_man clean_log clean_bak clean_permissions
|
||||
|
||||
clean_permissions:
|
||||
chmod a-x Makefile FAQ.d/FAQ.*.txt README_Windows.txt
|
||||
@ -148,9 +153,6 @@ clean_log:
|
||||
clean_bak:
|
||||
rm -f index.shtml.bak ./S/style.css.bak
|
||||
|
||||
clean_oauth2:
|
||||
rm -f oauth2/typescript oauth2/D_*txt
|
||||
|
||||
.PHONY: install dist man
|
||||
|
||||
man: W/imapsync.1
|
||||
@ -159,7 +161,6 @@ clean_man:
|
||||
rm -f W/imapsync.1
|
||||
|
||||
W/imapsync.1: imapsync
|
||||
mkdir -p W
|
||||
pod2man imapsync > W/imapsync.1
|
||||
|
||||
install: testp W/imapsync.1
|
||||
@ -170,70 +171,39 @@ 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: dailybuild dailytests prereq test tests unitests testp testf test3xx perlcritic allcritic crit compok dev cover tidy nytprof functree
|
||||
.PHONY: prereq test tests unitests testp testf test3xx testv3 perlcritic allcritic crit compok dev cover tidy nytprof
|
||||
|
||||
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"
|
||||
ssh ks3 'cd docker/imapsync && . memo_docker'
|
||||
@echo "make docker_copy_to_ks3 # copy imapsync Dockerfile memo_docker to ks3"
|
||||
@echo "make docker_upload_docker_hub # upload last build to https://hub.docker.com/r/gilleslamiral/imapsync"
|
||||
@echo "ssh vp3 THEN cd docker/imapsync && . memo_docker"
|
||||
|
||||
docker_build: docker_copy_to_vp3
|
||||
ssh vp3 'cd docker/imapsync && . memo_docker && imapsync_docker_build'
|
||||
|
||||
|
||||
docker_copy_to_vp3:
|
||||
ssh vp3 'mkdir -p docker/imapsync/ var/pass/'
|
||||
rsync -av /g/var/pass/secret.docker vp3:var/pass/secret.docker
|
||||
rsync -av imapsync INSTALL.d/Dockerfile INSTALL.d/memo_docker INSTALL.d/prerequisites_imapsync INSTALL.d/secret.txt vp3:docker/imapsync/
|
||||
rsync -av RCS/imapsync,v INSTALL.d/RCS/Dockerfile,v INSTALL.d/RCS/memo_docker,v vp3:docker/imapsync/RCS/
|
||||
docker_copy_to_ks3:
|
||||
rsync -av imapsync INSTALL.d/Dockerfile INSTALL.d/memo_docker INSTALL.d/prerequisites_imapsync ks3:docker/imapsync/
|
||||
rsync -av RCS/imapsync,v INSTALL.d/RCS/Dockerfile,v INSTALL.d/RCS/memo_docker,v ks3:docker/imapsync/RCS/
|
||||
|
||||
docker_upload_docker_hub: docker_build
|
||||
ssh vp3 'cd docker/imapsync && . memo_docker && imapsync_docker_upload'
|
||||
docker_upload_docker_hub:
|
||||
ssh ks3 'cd docker/imapsync && . memo_docker && imapsync_docker_upload'
|
||||
|
||||
functree: W/imapsync_functions_tree_ppi.txt W/imapsync_functions_tree.txt
|
||||
|
||||
W/imapsync_functions_tree_ppi.txt: imapsync
|
||||
functree:
|
||||
perl ./W/learn/function_calls_ppi ./imapsync > W/imapsync_functions_tree_ppi.txt
|
||||
rcsdiff W/imapsync_functions_tree_ppi.txt || { echo 'rcsdiff detected a diff' | ci -l W/imapsync_functions_tree_ppi.txt ; }
|
||||
|
||||
W/imapsync_functions_tree.txt: imapsync
|
||||
perl ./W/learn/function_calls ./imapsync > W/imapsync_functions_tree.txt
|
||||
rcsdiff W/imapsync_functions_tree.txt || { echo 'rcsdiff detected a diff' | ci -l W/imapsync_functions_tree.txt ; }
|
||||
|
||||
|
||||
nytprof: nytprof_clean
|
||||
nytprof:
|
||||
sh tests.sh ll_nytprof
|
||||
nytprofhtml
|
||||
|
||||
nytprof_clean:
|
||||
rm -rfv nytprof/
|
||||
|
||||
|
||||
cover:
|
||||
perl -c ./imapsync
|
||||
perl -MDevel::Cover ./imapsync --tests --testslive
|
||||
@ -275,12 +245,12 @@ W/perlcritic_1.txt: imapsync W/.compok
|
||||
echo | ci -l W/perlcritic_1.txt
|
||||
|
||||
W/perlcritic_2.txt: imapsync W/.compok
|
||||
perlcritic --statistics-only -2 imapsync > W/perlcritic_2.txt.tmp || :
|
||||
perlcritic --statistics -2 imapsync > W/perlcritic_2.txt.tmp || :
|
||||
mv W/perlcritic_2.txt.tmp W/perlcritic_2.txt
|
||||
echo | ci -l W/perlcritic_2.txt
|
||||
|
||||
W/perlcritic_3.txt: imapsync W/.compok
|
||||
perlcritic --statistics-only -3 imapsync > W/perlcritic_3.txt.tmp || :
|
||||
perlcritic --statistics -3 imapsync > W/perlcritic_3.txt.tmp || :
|
||||
mv W/perlcritic_3.txt.tmp W/perlcritic_3.txt
|
||||
echo | ci -l W/perlcritic_3.txt
|
||||
|
||||
@ -290,27 +260,32 @@ W/perlcritic_4.txt: imapsync W/.compok
|
||||
echo | ci -l W/perlcritic_4.txt
|
||||
|
||||
|
||||
test_quick: imapsync tests.sh
|
||||
/usr/bin/time sh -x tests.sh locallocal
|
||||
test_quick : test_quick_3xx
|
||||
|
||||
testv: imapsync tests.sh
|
||||
/usr/bin/time sh tests.sh
|
||||
test_quick_3xx: imapsync tests.sh
|
||||
CMD_PERL='perl -I./$(IMAPClient_3xx)' /usr/bin/time sh -x tests.sh locallocal
|
||||
|
||||
testv3: imapsync tests.sh
|
||||
CMD_PERL='perl -I./$(IMAPClient_3xx)' /usr/bin/time sh tests.sh
|
||||
|
||||
|
||||
|
||||
testv: testv3
|
||||
|
||||
test: .test_3xx
|
||||
|
||||
tests: test
|
||||
|
||||
test: .tests_passed
|
||||
|
||||
# .tests_passed is created by tests.sh with success at all mandatory tests
|
||||
.tests_passed: imapsync
|
||||
/usr/bin/time sh tests.sh 1>/dev/null
|
||||
|
||||
unitests:
|
||||
./imapsync --tests
|
||||
perl -I./$(IMAPClient_3xx) ./imapsync --tests
|
||||
|
||||
# .test_3xx is created by tests.sh with success at all mandatory tests
|
||||
.test_3xx: imapsync tests.sh
|
||||
CMD_PERL='perl -I./$(IMAPClient_3xx)' /usr/bin/time sh tests.sh 1>/dev/null
|
||||
|
||||
testf: clean_test test
|
||||
|
||||
.PHONY: dosify_bat
|
||||
.PHONY: lfo upload_lfo dosify_bat public imapsync_cidone
|
||||
|
||||
dosify_bat:
|
||||
unix2dos W/*.bat examples/*.bat
|
||||
@ -318,9 +293,7 @@ dosify_bat:
|
||||
copy_win32:
|
||||
scp imapsync Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||
|
||||
.PHONY: win32testsbat win32tests win32testsdebug
|
||||
|
||||
win32testsbat:
|
||||
W/test.bat:
|
||||
unix2dos W/test.bat
|
||||
scp imapsync W/test.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||
# ssh Admin@c 'perl C:/msys/1.0/home/Admin/imapsync/imapsync --testsdebug'
|
||||
@ -330,13 +303,13 @@ win32testsbat:
|
||||
# ssh Admin@c 'tasklist /NH /FO CSV'
|
||||
|
||||
|
||||
win32tests:
|
||||
W/test_tests.bat:
|
||||
unix2dos W/test_tests.bat
|
||||
scp imapsync W/test_tests.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_tests.bat'
|
||||
./W/check_winerr test_tests.bat
|
||||
|
||||
win32testsdebug:
|
||||
W/test_testsdebug.bat:
|
||||
unix2dos W/test_testsdebug.bat
|
||||
scp imapsync W/test_testsdebug.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_testsdebug.bat'
|
||||
@ -344,6 +317,7 @@ win32testsdebug:
|
||||
|
||||
|
||||
|
||||
|
||||
.PHONY: W/*.bat examples/*
|
||||
|
||||
|
||||
@ -464,47 +438,20 @@ 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_p24:
|
||||
|
||||
p24tests:
|
||||
unix2dos W/test_tests.bat
|
||||
scp imapsync W/test_tests.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_tests.bat'
|
||||
./W/check_win64err test_tests.bat
|
||||
|
||||
win64testsdebug_p24:
|
||||
p24testsdebug:
|
||||
unix2dos W/test_testsdebug.bat
|
||||
scp imapsync W/test_testsdebug.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_testsdebug.bat'
|
||||
./W/check_win64err test_testsdebug.bat
|
||||
|
||||
win64testsdebug: win64testsdebug_p26
|
||||
|
||||
win64testsdebug_p26:
|
||||
unix2dos W/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:'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
|
||||
@ -525,11 +472,6 @@ W/test_ipv6.bat:
|
||||
scp W/test_ipv6.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_ipv6.bat'
|
||||
|
||||
W/test_namespace.bat:
|
||||
unix2dos W/test_namespace.bat
|
||||
scp W/test_namespace.bat ../../var/pass/secret.outlook.com pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/test_namespace.bat'
|
||||
|
||||
W/test4.bat:
|
||||
unix2dos W/test4.bat
|
||||
scp W/test4.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||
@ -558,62 +500,30 @@ W/test_tail.bat:
|
||||
win64sshaccess:
|
||||
ssh 'pc HP DV7'@p24 'perl -V'
|
||||
|
||||
winprepalocal:
|
||||
unix2dos W/build_exe.bat W/test_exe.bat W/install_modules.bat W/install_module_one.bat
|
||||
|
||||
win64prepa: winprepalocal
|
||||
win64prepa:
|
||||
ssh 'pc HP DV7'@p24 'perl -V'
|
||||
unix2dos W/build_exe.bat W/test_exe.bat W/install_modules.bat W/install_module_one.bat
|
||||
scp imapsync W/build_exe.bat W/install_modules.bat W/install_module_one.bat \
|
||||
W/test_exe_tests.bat W/test_exe_testsdebug.bat W/test_exe.bat \
|
||||
pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/build_exe.bat'
|
||||
./W/check_win64err build_exe.bat
|
||||
|
||||
win64build_p24: winprepalocal
|
||||
win64build:
|
||||
unix2dos W/build_exe.bat W/install_modules.bat
|
||||
scp imapsync W/build_exe.bat W/install_modules.bat pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||
ssh 'pc HP DV7'@p24 'Desktop/imapsync_build/build_exe.bat'
|
||||
./W/check_win64err build_exe.bat
|
||||
|
||||
imapsync.exe: imapsync_64bit.exe_p26
|
||||
cp -a imapsync_64bit.exe_p26 imapsync.exe
|
||||
|
||||
win64build: imapsync_64bit.exe_p26
|
||||
imapsync.exe: imapsync_64bit.exe
|
||||
cp imapsync_64bit.exe imapsync.exe
|
||||
|
||||
|
||||
|
||||
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
|
||||
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 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
|
||||
unix2dos W/build_exe.bat W/test_exe.bat W/install_modules.bat W/install_module_one.bat
|
||||
ssh 'pc HP DV7'@p24 'perl -V'
|
||||
unix2dos W/build_exe.bat W/test_exe.bat W/install_modules.bat W/install_module_one.bat
|
||||
scp imapsync W/build_exe.bat W/install_modules.bat W/install_module_one.bat \
|
||||
W/test_exe_tests.bat W/test_exe_testsdebug.bat W/test_exe.bat \
|
||||
pc_HP_DV7_p24:'Desktop/imapsync_build'
|
||||
@ -627,43 +537,40 @@ imapsync_64bit.exe_p24: imapsync
|
||||
(date "+%s"| tr "\n" " "; echo -n "END 64bit " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||
|
||||
|
||||
zip: dosify_bat cidone
|
||||
zip: dosify_bat
|
||||
rm -rfv ../prepa_zip/imapsync_$(VERSION)/
|
||||
mkdir -p ../prepa_zip/imapsync_$(VERSION)/FAQ.d/ ../prepa_zip/imapsync_$(VERSION)/Cook/
|
||||
cp -av examples/imapsync_example.bat examples/sync_loop_windows.bat examples/file.txt ../prepa_zip/imapsync_$(VERSION)/
|
||||
cp -av W/build_exe.bat W/install_modules.bat W/test_cook_exe.bat W/test_cook_src.bat imapsync ../prepa_zip/imapsync_$(VERSION)/Cook/
|
||||
cp -av README.txt ../prepa_zip/imapsync_$(VERSION)/
|
||||
for f in README ; do cp -av $$f ../prepa_zip/imapsync_$(VERSION)/$$f.txt ; done
|
||||
cp -av FAQ.d/*.txt ../prepa_zip/imapsync_$(VERSION)/FAQ.d/
|
||||
cp -av imapsync.exe imapsync_32bit.exe README_Windows.txt ../prepa_zip/imapsync_$(VERSION)/
|
||||
unix2dos ../prepa_zip/imapsync_$(VERSION)/*.txt
|
||||
cd ../prepa_zip/ && rm -f ./imapsync_$(VERSION).zip && zip -r ./imapsync_$(VERSION).zip ./imapsync_$(VERSION)/
|
||||
scp ../prepa_zip/imapsync_$(VERSION).zip Admin@c:'C:/msys/1.0/home/Admin/'
|
||||
# scp ../prepa_zip/imapsync_$(VERSION).zip pc_HP_DV7_p24:'Desktop/'
|
||||
scp ../prepa_zip/imapsync_$(VERSION).zip pc_HP_DV7_p24:'Desktop/'
|
||||
cp ../prepa_zip/imapsync_$(VERSION).zip /fe/imapsync/
|
||||
|
||||
|
||||
# C:\Users\mansour\Desktop\imapsync
|
||||
|
||||
.PHONY: mac macstadiumcopy maccopy macforce mactests mactestsdebug mactestslive mactestslive6 bin win lin win64
|
||||
.PHONY: mac bin win lin win64
|
||||
|
||||
mac: imapsync_bin_Darwin
|
||||
|
||||
macstadiumcopy:
|
||||
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 \
|
||||
gilleslamira@gate.polarhome.com:
|
||||
rsync -v -p -e 'ssh -4 -p 995' examples/file.txt examples/sync_loop_darwin.sh gilleslamira@gate.polarhome.com:examples/
|
||||
rsync -v -p -e 'ssh -4 -p 995' X/ gilleslamira@gate.polarhome.com:X/
|
||||
rsync -p -e 'ssh -4 -p 995' imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync webserver \
|
||||
gilleslamira@gate.polarhome.com:
|
||||
rsync -av -p -e 'ssh -4 -p 995' X/ gilleslamira@gate.polarhome.com:X/
|
||||
|
||||
|
||||
macforce: maccopy
|
||||
ssh -4 -p 995 gilleslamira@gate.polarhome.com 'sh -x build_mac.sh'
|
||||
|
||||
imapsync_bin_Darwin: maccopy imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync
|
||||
|
||||
imapsync_bin_Darwin: imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync
|
||||
rcsdiff imapsync
|
||||
rsync -p -e 'ssh -4 -p 995' imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync gilleslamira@gate.polarhome.com:
|
||||
ssh -4 -p 995 gilleslamira@gate.polarhome.com 'sh -x build_mac.sh'
|
||||
rsync -P -e 'ssh -4 -p 995' gilleslamira@gate.polarhome.com:imapsync_bin_Darwin .
|
||||
|
||||
@ -683,39 +590,25 @@ 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
|
||||
bin: mac win64 win32
|
||||
|
||||
lin: $(BIN_NAME)
|
||||
|
||||
win: win32 win64 imapsync.exe
|
||||
|
||||
win32: imapsync_32bit.exe
|
||||
win: win64 win32 imapsync.exe
|
||||
|
||||
win64: imapsync_64bit.exe
|
||||
|
||||
win32build: imapsync_32bit.exe
|
||||
|
||||
linuxbuild: lin
|
||||
win32: imapsync_32bit.exe
|
||||
|
||||
|
||||
$(BIN_NAME): imapsync
|
||||
rcsdiff imapsync
|
||||
{ pp -x -o $(BIN_NAME) \
|
||||
{ pp -x -o $(BIN_NAME) -I $(IMAPClient_3xx) \
|
||||
-M Mail::IMAPClient \
|
||||
imapsync ; \
|
||||
}
|
||||
# Maybe add -M Test2::Event::Info Mail::IMAPClient \
|
||||
# Maybe add -M Test2::Event::Info \
|
||||
#-M Net::SSLeay -M IO::Socket -M IO::Socket::INET6 -M IO::Socket::SSL \
|
||||
#-M Digest::MD5 -M Digest::HMAC_MD5 -M Term::ReadKey \
|
||||
#-M Authen::NTLM -M HTML::Entities -M JSON::WebToken \
|
||||
@ -726,6 +619,7 @@ $(BIN_NAME): imapsync
|
||||
./$(BIN_NAME) --justbanner
|
||||
|
||||
|
||||
lfo: upload_lfo
|
||||
|
||||
.PHONY: tarball cidone ci
|
||||
|
||||
@ -742,10 +636,9 @@ tarball: cidone
|
||||
ci: cidone
|
||||
|
||||
cidone: auto_ci
|
||||
rcsdiff X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt X/imapsync_form.* X/imapsync_form_extra.html X/noscript.css
|
||||
rcsdiff W/*.bat W/*.sh W/*.txt W/*.htaccess
|
||||
rcsdiff X/cgi_memo X/*.txt X/imapsync_form.* X/noscript.css
|
||||
rcsdiff W/*.bat W/*.sh W/*.txt W/*.txt W/*.htaccess
|
||||
cd W && rcsdiff RCS/*
|
||||
cd oauth2 && rcsdiff RCS/*
|
||||
rcsdiff doc/*.t2t
|
||||
rcsdiff INSTALL.d/*.txt INSTALL.d/prerequisites_imapsync
|
||||
rcsdiff FAQ.d/*.txt
|
||||
@ -756,7 +649,7 @@ cidone: auto_ci
|
||||
rcsdiff RCS/*
|
||||
|
||||
|
||||
dist: cidone test clean all dist_prepa dist_zip README_dist
|
||||
dist: cidone test clean all perlcritic dist_prepa dist_zip README_dist
|
||||
|
||||
|
||||
md5:
|
||||
@ -765,7 +658,7 @@ md5:
|
||||
sha:
|
||||
cd $(DIST_PATH)/ && sha512sum *
|
||||
|
||||
.PHONY: moveoldrelease ks5testsdebug ks5tests README_dist docker_pull_count
|
||||
.PHONY: moveoldrelease ks2testsdebug ks2tests README_dist docker_pull_count
|
||||
|
||||
moveoldrelease:
|
||||
./W/tools/backup_old_dist $(DIST_PATH)
|
||||
@ -788,66 +681,64 @@ README_dist:
|
||||
sh W/tools/gen_README_dist > $(DIST_PATH)/README.txt
|
||||
unix2dos $(DIST_PATH)/README.txt
|
||||
|
||||
.PHONY: publish upload_ks ks valid_index biz ks5tests_gilles ks5tests_root auto_ci
|
||||
.PHONY: publish upload_ks ks valid_index biz ks2tests_gilles ks2tests_root auto_ci
|
||||
|
||||
biz: S/imapsync_sold_by_country.txt docker_pull_count
|
||||
|
||||
auto_ci: docker_pull_count
|
||||
|
||||
docker_pull_count:
|
||||
rcsdiff W/docker_pull_count.txt || { echo | ci -l W/docker_pull_count.txt ; }
|
||||
cd W/ && rcsdiff docker_pull_count.txt || { echo | ci -l docker_pull_count.txt ; }
|
||||
|
||||
S/imapsync_sold_by_country.txt: /g/bin/imapsync_by_country
|
||||
cd S/ && /g/bin/imapsync_by_country && { echo | ci -l imapsync_sold_by_country.txt ; }
|
||||
S/imapsync_sold_by_country.txt: imapsync
|
||||
cd S/ && /g/bin/imapsync_by_country && echo | ci -l imapsync_sold_by_country.txt
|
||||
|
||||
|
||||
ks:
|
||||
rsync -avHz --delete --exclude '*.exe' \
|
||||
. gilles@ks.lamiral.info:public_html/imapsync/
|
||||
ssh root@ks.lamiral.info 'apachectl configtest && apachectl reload'
|
||||
ssh root@ks.lamiral.info 'apachectl configtest && /etc/init.d/apache2 reload'
|
||||
|
||||
ksa:
|
||||
rsync -avHz --delete -P \
|
||||
. gilles@ks.lamiral.info:public_html/imapsync/
|
||||
ssh root@ks.lamiral.info 'apachectl configtest && apachectl reload'
|
||||
ssh root@ks.lamiral.info 'apachectl configtest && /etc/init.d/apache2 reload'
|
||||
|
||||
ks3:
|
||||
rsync -avHz --delete -P \
|
||||
. gilles@ks3.lamiral.info:public_html/imapsync/
|
||||
|
||||
ks6:
|
||||
rsync -avHz --delete -P --exclude 'dist2' \
|
||||
. gilles@ks6.lamiral.info:public_html/imapsync/
|
||||
|
||||
|
||||
upload_tests: tests.sh
|
||||
rsync -avHz --delete -P \
|
||||
tests.sh \
|
||||
gilles@ks.lamiral.info:public_html/imapsync/
|
||||
|
||||
|
||||
ks5testsdebug:
|
||||
ks2testsdebug:
|
||||
rsync -aP imapsync gilles@ks.lamiral.info:public_html/imapsync/imapsync
|
||||
ssh gilles@ks.lamiral.info 'public_html/imapsync/imapsync --testsdebug'
|
||||
|
||||
ks5tests: ks5tests_gilles ks5tests_root
|
||||
ks2tests: ks2tests_gilles ks2tests_root
|
||||
|
||||
|
||||
ks5tests_gilles:
|
||||
rsync -P imapsync gilles@ks.lamiral.info:public_html/imapsync/
|
||||
ks2tests_gilles:
|
||||
rsync -aP imapsync gilles@ks.lamiral.info:public_html/imapsync/imapsync
|
||||
ssh gilles@ks.lamiral.info 'public_html/imapsync/imapsync --tests'
|
||||
|
||||
ks5tests_root:
|
||||
rsync -P imapsync root@ks5.lamiral.info:
|
||||
ssh root@ks5.lamiral.info './imapsync --tests'
|
||||
ks2tests_root:
|
||||
rsync -aP imapsync root@ks.lamiral.info:
|
||||
ssh root@ks.lamiral.info './imapsync --tests'
|
||||
|
||||
i005tests_root:
|
||||
rsync -P imapsync INSTALL.d/prerequisites_imapsync root@i005.lamiral.info:
|
||||
ssh root@i005.lamiral.info './imapsync --tests'
|
||||
|
||||
i005prerequisites:
|
||||
rsync -P imapsync INSTALL.d/prerequisites_imapsync root@i005.lamiral.info:
|
||||
ssh root@i005.lamiral.info 'sh prerequisites_imapsync'
|
||||
|
||||
|
||||
ks5prerequisites:
|
||||
rsync -P imapsync INSTALL.d/prerequisites_imapsync root@ks5.lamiral.info:
|
||||
ssh root@ks5.lamiral.info 'sh prerequisites_imapsync'
|
||||
|
||||
|
||||
ks5testslive:
|
||||
ks2testslive:
|
||||
rsync -aP imapsync gilles@ks.lamiral.info:public_html/imapsync/imapsync
|
||||
ssh gilles@ks.lamiral.info 'public_html/imapsync/imapsync --testslive'
|
||||
|
||||
@ -861,6 +752,9 @@ centos:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
PUBLIC = ./ChangeLog ./NOLIMIT ./LICENSE ./CREDITS ./FAQ \
|
||||
./index.shtml ./INSTALL ./README_Windows.txt \
|
||||
./VERSION ./imapsync \
|
||||
@ -872,7 +766,6 @@ ml:
|
||||
m4 -P W/ml_announce.in.txt | mutt -H-
|
||||
mailq
|
||||
|
||||
lfo: upload_lfo
|
||||
|
||||
upload_lfo:
|
||||
#rm -rf /home/gilles/public_html/www.linux-france.org/html/prj/imapsync/
|
||||
@ -884,13 +777,8 @@ upload_lfo:
|
||||
/home/gilles/public_html/www.linux-france.org/html/prj/imapsync/.htaccess
|
||||
sh ~/memo/lfo-rsync
|
||||
|
||||
.PHONY: valid_index va
|
||||
|
||||
|
||||
valid_index: W/.valid.index.shtml
|
||||
|
||||
va: valid_index
|
||||
|
||||
cl: ./W/checklink.txt
|
||||
|
||||
./W/checklink.txt: index.shtml
|
||||
@ -906,182 +794,53 @@ cle: ./W/checklinkext.txt
|
||||
http://lamiral.info/~gilles/imapsync/S/imapservers.shtml \
|
||||
| tee ./W/checklinkext.txt
|
||||
|
||||
W/.valid.index.shtml: index.shtml S/*.shtml
|
||||
W/.valid.index.shtml: index.shtml
|
||||
for f in index.shtml S/*.shtml; do echo tidy -e -q $$f; tidy -e -q $$f ; done
|
||||
./W/tools/validate_xml_html5 index.shtml S/*.shtml
|
||||
./W/tools/validate index.shtml S/donate.shtml S/external.shtml S/imapservers.shtml \
|
||||
S/news.shtml S/no_download.shtml S/paypal_return.shtml S/poll.shtml \
|
||||
S/template_xhtml1.shtml
|
||||
touch W/.valid.index.shtml
|
||||
|
||||
.PHONY: upload_index ci_imapsync upload_latest upload_FAQ upload_bin
|
||||
.PHONY: upload_index upload_FAQ ci_imapsync upload_bin
|
||||
|
||||
|
||||
upload_index: valid_index clean_permissions
|
||||
upload_index: W/.valid.index.shtml clean_permissions
|
||||
rcsdiff index.shtml README_Windows.txt S/style.css S/*.shtml FAQ.d/*.txt LICENSE CREDITS TODO examples/*.bat examples/*.sh index.shtml INSTALL.d/*.txt
|
||||
rcsdiff S/quiz/quiz_imapsync.html S/quiz/quiz_imapsync.js S/quiz/quiz_imapsync.css
|
||||
rm -f examples/LOG_imapsync/*
|
||||
rsync -avH index.shtml README_Windows.txt FAQ INSTALL NOLIMIT LICENSE CREDITS TODO S/robots.txt S/favicon.ico ../imapsync_website/
|
||||
rsync -aHv --delete ./W/ks.htaccess ../imapsync_website/.htaccess
|
||||
rsync -aHv --delete ./S/ ../imapsync_website/S/
|
||||
rsync -aHv --delete S/ ../imapsync_website/S/
|
||||
rsync -aHv --delete ./examples/ ../imapsync_website/examples/
|
||||
rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/
|
||||
rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/
|
||||
rsync -avH --delete ./doc/ ../imapsync_website/doc/
|
||||
rsync -avH --delete ./W/tools/ ../imapsync_website/W/tools/
|
||||
rsync -aHvz --delete ../imapsync_website/ root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/
|
||||
|
||||
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
|
||||
|
||||
|
||||
ci_imapsync:
|
||||
rcsdiff imapsync
|
||||
|
||||
upload_latest: unitests ci_imapsync bin
|
||||
rsync -av imapsync imapsync_bin_Darwin imapsync.exe imapsync_32bit.exe ./INSTALL.d/prerequisites_imapsync ../imapsync_website/
|
||||
rsync -aHvzP --delete ../imapsync_website/ root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/
|
||||
rsync -a imapsync imapsync_bin_Darwin imapsync.exe imapsync_32bit.exe ./INSTALL.d/prerequisites_imapsync ../imapsync_website/
|
||||
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
|
||||
|
||||
|
||||
|
||||
.PHONY: upload_cgi upload_cgi_ks5 upload_cgi_memo upload_cgi_vp3 upload_cgi_vp4 upload_cgi_ks6 upload_tmphash_all
|
||||
|
||||
|
||||
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: unitests ks2tests i005tests_root ci_imapsync
|
||||
rsync -a imapsync ./INSTALL.d/prerequisites_imapsync ../imapsync_website/
|
||||
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
|
||||
rsync -P imapsync root@i005.lamiral.info:/home/www/apache24/cgi-bin/imapsync
|
||||
|
||||
upload_cgi_memo:
|
||||
dos2unix X/stat_patterns.txt X/server_survey_patterns.txt
|
||||
sed -i".bak" '/^[[:space:]]*$$/d' X/stat_patterns.txt X/server_survey_patterns.txt
|
||||
rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@ks5:/var/tmp/imapsync_cgi/
|
||||
|
||||
upload_cgi_memo_all:
|
||||
rsync -av X/cgi_memo 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;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;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;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;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;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;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
|
||||
|
||||
vp3tests:
|
||||
rsync -P imapsync root@vp3.lamiral.info:imapsync
|
||||
ssh root@vp3.lamiral.info ./imapsync --tests
|
||||
ssh root@vp3.lamiral.info ./imapsync --testslive6
|
||||
|
||||
vp4tests:
|
||||
rsync -P imapsync root@vp4.lamiral.info:imapsync
|
||||
ssh root@vp4.lamiral.info ./imapsync --tests
|
||||
ssh root@vp4.lamiral.info ./imapsync --testslive6
|
||||
|
||||
ks6tests:
|
||||
rsync -P imapsync root@ks6.lamiral.info:imapsync
|
||||
ssh root@ks6.lamiral.info ./imapsync --tests
|
||||
ssh root@ks6.lamiral.info ./imapsync --testslive6
|
||||
|
||||
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:
|
||||
rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@ks2:/var/tmp/imapsync_cgi/
|
||||
rsync -av X/cgi_memo X/stat_patterns.txt X/server_survey_patterns.txt root@i005:/var/tmp/imapsync_cgi/
|
||||
|
||||
|
||||
upload_X:
|
||||
./W/tools/validate_xml_html5 X/imapsync_form.html 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
|
||||
./W/tools/validate_xml_html5 X/index.html X/imapsync_form.html X/imapsync_form_extra.html
|
||||
rcsdiff X/imapsync_form.html X/imapsync_form_extra.html X/imapsync_form.css X/noscript.css
|
||||
rcsdiff X/imapsync_form.js
|
||||
rsync -av --delete X/ ../imapsync_website/X/
|
||||
rsync -aHvz --delete ../imapsync_website/ root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/
|
||||
|
||||
upload_csv:
|
||||
./W/tools/validate_xml_html5 X/sandbox_csv.html
|
||||
rcsdiff X/sandbox_csv.html X/sandbox_csv.js X/imapsync_csv_wrapper
|
||||
rsync -a X/sandbox_csv.html X/sandbox_csv.js X/imapsync_csv_wrapper ../imapsync_website/X/
|
||||
rsync -aHvz X/sandbox_csv.html X/sandbox_csv.js X/imapsync_csv_wrapper root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/X/
|
||||
rsync X/imapsync_csv_wrapper root@ks5.lamiral.info:/home/www/apache24/cgi-bin/
|
||||
|
||||
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
|
||||
rsync -av --delete X/ root@i005:/home/www/apache24/data/X/
|
||||
|
||||
upload_FAQ:
|
||||
rcsdiff FAQ.d/*.txt LICENSE CREDITS TODO INSTALL.d/*.txt
|
||||
@ -1089,12 +848,8 @@ upload_FAQ:
|
||||
rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/
|
||||
rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/
|
||||
rsync -avH --delete ./doc/ ../imapsync_website/doc/
|
||||
rsync -aHvz --delete ../imapsync_website/ root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/
|
||||
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/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
|
||||
@ -1108,9 +863,8 @@ upload_ks: ci tarball
|
||||
rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/
|
||||
rsync -aHv --delete ./FAQ.d/ ../imapsync_website/FAQ.d/
|
||||
rsync -avH --delete ./doc/ ../imapsync_website/doc/
|
||||
rsync -avH --delete ./W/tools/ ../imapsync_website/W/tools/
|
||||
rsync -aHvz --delete ../imapsync_website/ root@ks5.lamiral.info:/usr/local/www/apache24/data/imapsync/
|
||||
ssh root@ks.lamiral.info 'apachectl configtest && apachectl reload'
|
||||
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
|
||||
ssh root@ks.lamiral.info 'apachectl configtest && /etc/init.d/apache2 reload'
|
||||
|
||||
|
||||
upload_ks5:
|
||||
|
||||
329
README
329
README
@ -6,7 +6,7 @@ NAME
|
||||
|
||||
VERSION
|
||||
|
||||
This documentation refers to Imapsync $Revision: 2.229 $
|
||||
This documentation refers to Imapsync $Revision: 1.977 $
|
||||
|
||||
USAGE
|
||||
|
||||
@ -27,95 +27,52 @@ DESCRIPTION
|
||||
|
||||
Imapsync command is a tool allowing incremental and recursive imap
|
||||
transfers from one mailbox to another. If you don't understand the
|
||||
previous sentence, it's normal, it's pedantic computer-oriented jargon.
|
||||
previous sentence, it's normal, it's pedantic computer oriented jargon.
|
||||
|
||||
All folders are transferred, recursively, meaning the whole folder
|
||||
hierarchy is taken, all messages in them, and all message flags (\Seen
|
||||
hierarchy is taken, all messages in them, and all messages flags (\Seen
|
||||
\Answered \Flagged etc.) are synced too.
|
||||
|
||||
Imapsync reduces the amount of data transferred by not transferring a
|
||||
given message if it already resides on the destination side. Messages
|
||||
that are on the destination side but not on the source side stay as they
|
||||
are. See the --delete2 option to have strict sync and delete them.
|
||||
are (see the --delete2 option to have a strict sync).
|
||||
|
||||
How does imapsync know a message is already on both sides? Same specific
|
||||
How imapsync knows a message is already on both sides? Same specific
|
||||
headers and the transfer is done only once. By default, the
|
||||
identification headers are "Message-Id:" and "Received:" lines but this
|
||||
choice can be changed with the --useheader option, most often a
|
||||
duplicate problem is solved by using --useheader "Message-Id"
|
||||
choice can be changed with the --useheader option.
|
||||
|
||||
All flags are preserved, unread messages will stay unread, read ones
|
||||
will stay read, deleted will stay deleted. In the IMAP protocol, a
|
||||
deleted message is not deleted, it is marked \Deleted and can be
|
||||
undeleted. Real destruction comes with the EXPUNGE or UIDEXPUNGE IMAP
|
||||
commands.
|
||||
will stay read, deleted will stay deleted.
|
||||
|
||||
You can abort the transfer at any time and restart it later, imapsync
|
||||
works well with bad connections and interruptions, by design. On a
|
||||
terminal hit Ctr-c twice within two seconds to abort the program. Hit
|
||||
Ctr-c just once makes imapsync reconnect to both imap servers.
|
||||
|
||||
How do you know the sync is finished and well done? When imapsync ends
|
||||
by itself it mentions it with lines like those:
|
||||
|
||||
Exiting with return value 0 (EX_OK: successful termination) 0/50 nb_errors/max_errors PID 301
|
||||
Removing pidfile /tmp/imapsync.pid
|
||||
Log file is LOG_imapsync/2020_11_17_15_59_22_761_test1_test2.txt ( to change it, use --logfile filepath ; or use --nolog to turn off logging )
|
||||
|
||||
If you don't have those lines it means that either the sync process is
|
||||
still running (or eventually hanging indefinitely) or that it ended
|
||||
without a whisper, a strong kill -9 on Linux for example.
|
||||
|
||||
If you have those final lines then it means the sync process is properly
|
||||
finished. It may have encountered problems though.
|
||||
|
||||
A good synchronization is mentioned by some lines above the last ones,
|
||||
especially those three lines:
|
||||
|
||||
The sync looks good, all 1745 identified messages in host1 are on host2.
|
||||
There is no unidentified message on host1.
|
||||
Detected 0 errors
|
||||
|
||||
Imapsync mentions the total sizes of both accounts at the beginning of
|
||||
the sync and also at the end. Sometimes, even with a strict sync, those
|
||||
total sizes differ, and sometimes they differ a lot. The difference is
|
||||
not a good criterion to conclude the sync went wrong.
|
||||
|
||||
Why? That's because message sizes given by the imap servers are not
|
||||
always accurate, they are not always the same as the actual message
|
||||
sizes of the messages transferred by imapsync. Imapsync use the sizes
|
||||
given by the imap servers to calculate the big total size. They can
|
||||
differ. In the early days, Imapsync used the sizes of the messages as
|
||||
one of the criteria to identify the messages, different sizes implied
|
||||
different messages; but it was a mistake, the same message had different
|
||||
sizes on both sides sometimes, depending on the imap servers.
|
||||
|
||||
Another explanation for a big total size difference is that Gmail
|
||||
doesn't count the size of duplicate messages across folders twice, while
|
||||
imapsync does.
|
||||
terminal hit Ctr-c twice within two seconds in order to abort the
|
||||
program. Hit Ctr-c just once makes imapsync reconnect to both imap
|
||||
servers.
|
||||
|
||||
A classical scenario is synchronizing a mailbox B from another mailbox A
|
||||
where you just want to keep a strict copy of A in B. Strict meaning all
|
||||
messages in A will be in B but no more.
|
||||
|
||||
For a strict synchronization, use the option --delete2. The option
|
||||
--delete2 deletes the messages in the host2 folder B that are not in the
|
||||
host1 folder A. If you also need to destroy host2 folders that are not
|
||||
in host1 then use --delete2folders. See also --delete2foldersonly and
|
||||
--delete2foldersbutnot to set up exceptions on folders to destroy. INBOX
|
||||
will never be destroyed, it's a mandatory folder in IMAP so imapsync
|
||||
doesn't even try to remove it.
|
||||
For this, option --delete2 has to be used, it deletes messages in host2
|
||||
folder B that are not in host1 folder A. If you also need to destroy
|
||||
host2 folders that are not in host1 then use --delete2folders. See also
|
||||
--delete2foldersonly and --delete2foldersbutnot to set up exceptions on
|
||||
folders to destroy. INBOX will never be destroy, it's a mandatory folder
|
||||
in IMAP.
|
||||
|
||||
A different scenario is to delete the messages from the source mailbox
|
||||
after a successful transfer, it can be a good feature when migrating
|
||||
mailboxes since messages will be only on one side. The source account
|
||||
will only have messages that are not on the destination yet, ie,
|
||||
messages that arrived after a sync or that failed to be transferred.
|
||||
messages that arrived after a sync or that failed to be copied.
|
||||
|
||||
In that case, use the --delete1 option. Option --delete1 implies also
|
||||
the option --expunge1 so all messages marked deleted on host1 will be
|
||||
deleted. In IMAP protocol deleting a message does not delete it, it
|
||||
marks it with the flag \Deleted, allowing an undelete. Expunging a
|
||||
option --expunge1 so all messages marked deleted on host1 will be really
|
||||
deleted. In IMAP protocol deleting a message does not really delete it,
|
||||
it marks it with the flag \Deleted, allowing an undelete. Expunging a
|
||||
folder removes, definitively, all the messages marked as \Deleted in
|
||||
this folder.
|
||||
|
||||
@ -133,19 +90,17 @@ OPTIONS
|
||||
usage: imapsync [options]
|
||||
|
||||
The standard options are the six values forming the credentials. Three
|
||||
values on each side are needed to login into the IMAP servers. These six
|
||||
values are a hostname, a username, and a password, two times.
|
||||
values on each side are needed in order to log in into the IMAP servers.
|
||||
These six values are a host, a username, and a password, two times.
|
||||
|
||||
Here are the conventions used in the following descriptions of the
|
||||
options:
|
||||
Conventions used in the following descriptions of the options:
|
||||
|
||||
str means a string
|
||||
int means an integer number
|
||||
flo means a float number
|
||||
reg means a regular expression
|
||||
cmd means a command
|
||||
str means string
|
||||
int means integer
|
||||
reg means regular expression
|
||||
cmd means command
|
||||
|
||||
--dry : Makes imapsync do nothing for real; it just prints what
|
||||
--dry : Makes imapsync doing nothing for real, just print what
|
||||
would be done without --dry.
|
||||
|
||||
OPTIONS/credentials
|
||||
@ -155,18 +110,18 @@ OPTIONS
|
||||
Optional since default ports are the
|
||||
well known ports imap/143 or imaps/993.
|
||||
--user1 str : User to login on host1.
|
||||
--password1 str : Password of user1.
|
||||
--password1 str : Password for the user1.
|
||||
|
||||
--host2 str : "destination" imap server.
|
||||
--port2 int : Port to connect on host2. Optional
|
||||
--user2 str : User to login on host2.
|
||||
--password2 str : Password of user2.
|
||||
--password2 str : Password for the user2.
|
||||
|
||||
--showpasswords : Shows passwords on output instead of "MASKED".
|
||||
Useful to restart a complete run by just reading
|
||||
the command line used in the log,
|
||||
or to debug passwords.
|
||||
It's not a secure practice at all!
|
||||
It's not a secure practice at all.
|
||||
|
||||
--passfile1 str : Password file for the user1. It must contain the
|
||||
password on the first line. This option avoids showing
|
||||
@ -174,10 +129,7 @@ OPTIONS
|
||||
--passfile2 str : Password file for the user2.
|
||||
|
||||
You can also pass the passwords in the environment variables
|
||||
IMAPSYNC_PASSWORD1 and IMAPSYNC_PASSWORD2. If you don't pass the user1
|
||||
password via --password1 nor --passfile1 nor $IMAPSYNC_PASSWORD1 then
|
||||
imapsync will prompt to enter the password on the terminal. Same thing
|
||||
for user2 password.
|
||||
IMAPSYNC_PASSWORD1 and IMAPSYNC_PASSWORD2
|
||||
|
||||
OPTIONS/encryption
|
||||
|
||||
@ -202,6 +154,11 @@ OPTIONS
|
||||
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
||||
See --sslargs1
|
||||
|
||||
--timeout1 int : Connection timeout in seconds for host1.
|
||||
Default is 120 and 0 means no timeout at all.
|
||||
--timeout2 int : Connection timeout in seconds for host2.
|
||||
Default is 120 and 0 means no timeout at all.
|
||||
|
||||
OPTIONS/authentication
|
||||
|
||||
--authmech1 str : Auth mechanism to use with host1:
|
||||
@ -221,29 +178,6 @@ OPTIONS
|
||||
--domain1 str : Domain on host1 (NTLM authentication).
|
||||
--domain2 str : Domain on host2 (NTLM authentication).
|
||||
|
||||
--oauthaccesstoken1 str : The access token to authenticate with OAUTH2.
|
||||
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 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
|
||||
and take this line as the access token. The advantage
|
||||
of the file is that if the access token changes then
|
||||
imapsync can read it again when it needs to reconnect
|
||||
during a run.
|
||||
|
||||
|
||||
--oauthaccesstoken2 str : same thing as --oauthaccesstoken1
|
||||
|
||||
--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 but they are
|
||||
needed to be on the command line. Consider it a bug.
|
||||
|
||||
--oauthdirect2 str : same thing as oauthdirect1
|
||||
|
||||
OPTIONS/folders
|
||||
|
||||
--folder str : Sync this folder.
|
||||
@ -258,9 +192,9 @@ OPTIONS
|
||||
|
||||
--nomixfolders : Do not merge folders when host1 is case-sensitive
|
||||
while host2 is not (like Exchange). Only the first
|
||||
similar folder is synced. Example: with folders
|
||||
"Sent", "SENT" and "sent" on host1, only "Sent"
|
||||
will be synced to host2.
|
||||
similar folder is synced (example: with folders
|
||||
"Sent", "SENT" and "sent"
|
||||
on host1 only "Sent" will be synced to host2).
|
||||
|
||||
--skipemptyfolders : Empty host1 folders are not created on host2.
|
||||
|
||||
@ -278,9 +212,6 @@ OPTIONS
|
||||
|
||||
--f1f2 str1=str2 : Force folder str1 to be synced to str2,
|
||||
--f1f2 overrides --automap and --regextrans2.
|
||||
Use several --f1f2 options to map several folders.
|
||||
Option --f1f2 is a one to one only folder mapping,
|
||||
str1 and str2 have to be full path folder names.
|
||||
|
||||
--subfolder2 str : Syncs the whole host1 folders hierarchy under the
|
||||
host2 folder named str.
|
||||
@ -290,7 +221,7 @@ OPTIONS
|
||||
|
||||
--subfolder1 str : Syncs the host1 folders hierarchy which is under folder
|
||||
str to the root hierarchy of host2.
|
||||
It's the counterpart of a sync done by --subfolder2
|
||||
It's the couterpart of a sync done by --subfolder2
|
||||
when doing it in the reverse order.
|
||||
Backup/Restore scenario:
|
||||
Use --subfolder2 str for a backup to the folder str
|
||||
@ -325,7 +256,7 @@ OPTIONS
|
||||
--regextrans2 reg : and this one. etc.
|
||||
When you play with the --regextrans2 option, first
|
||||
add also the safe options --dry --justfolders
|
||||
Then, when happy, remove --dry for a run, then
|
||||
Then, when happy, remove --dry for a run, then
|
||||
remove --justfolders for the next ones.
|
||||
Have in mind that --regextrans2 is applied after
|
||||
the automatic prefix and separator inversion.
|
||||
@ -347,11 +278,9 @@ OPTIONS
|
||||
Default is system specific, Unix is /tmp but
|
||||
/tmp is often too small and deleted at reboot.
|
||||
--tmpdir /var/tmp should be better.
|
||||
|
||||
--pidfile str : The file where imapsync pid is written,
|
||||
it can be dirname/filename complete path.
|
||||
The default name is imapsync.pid in tmpdir.
|
||||
|
||||
it can be dirname/filename.
|
||||
Default name is imapsync.pid in tmpdir.
|
||||
--pidfilelocking : Abort if pidfile already exists. Useful to avoid
|
||||
concurrent transfers on the same mailbox.
|
||||
|
||||
@ -368,26 +297,26 @@ OPTIONS
|
||||
where:
|
||||
|
||||
2019_12_22_23_57_59_532 is nearly the date of the start
|
||||
YYYY_MM_DD_HH_MM_SS_mmm
|
||||
year_month_day_hour_minute_second_millisecond
|
||||
YYYY_MM_DD_HH_MM_SS_mmm
|
||||
year_month_day_hour_minute_seconde_millisecond
|
||||
|
||||
and user1 user2 are the --user1 --user2 values.
|
||||
|
||||
OPTIONS/messages
|
||||
|
||||
--skipmess reg : Skips messages matching the regex.
|
||||
Example: 'm/[\x80-\xff]/' # to avoid 8bits messages.
|
||||
Example: 'm/[\x80-ff]/' # to avoid 8bits messages.
|
||||
--skipmess is applied before --regexmess
|
||||
--skipmess reg : or this one, etc.
|
||||
|
||||
--skipcrossduplicates : Avoid copying messages that are already copied
|
||||
in another folder, good from Gmail to XYZ when
|
||||
XYZ is not also Gmail.
|
||||
in another folder, good from Gmail to X when
|
||||
X is not also Gmail.
|
||||
Activated with --gmail1 unless --noskipcrossduplicates
|
||||
|
||||
--debugcrossduplicates : Prints which messages (UIDs) are skipped with
|
||||
--skipcrossduplicates and in what other folders
|
||||
they are.
|
||||
--skipcrossduplicates (and in what other folders
|
||||
they are).
|
||||
|
||||
--pipemess cmd : Apply this cmd command to each message content
|
||||
before the copy.
|
||||
@ -403,26 +332,19 @@ OPTIONS
|
||||
--disarmreadreceipts : Disarms read receipts (host2 Exchange issue)
|
||||
|
||||
--regexmess reg : Apply the whole regex to each message before transfer.
|
||||
Example: 's/\000/ /g' # to replace null characters
|
||||
by spaces.
|
||||
Example: 's/\000/ /g' # to replace null by space.
|
||||
--regexmess reg : and this one, etc.
|
||||
|
||||
--truncmess int : truncates messages when their size exceed the int
|
||||
value, specified in bytes. Good to sync too big
|
||||
messages or to "suppress" attachments.
|
||||
Have in mind that this way, messages become
|
||||
uncoherent somehow.
|
||||
|
||||
OPTIONS/labels
|
||||
|
||||
Gmail present labels as folders in imap. Imapsync can accelerate the
|
||||
sync by syncing X-GM-LABELS, it will avoid to transfer messages when
|
||||
they are already on host2 in another folder.
|
||||
they are already on host2.
|
||||
|
||||
--synclabels : Syncs also Gmail labels when a message is copied to host2.
|
||||
Activated by default with --gmail1 --gmail2 unless
|
||||
--nosynclabels is added.
|
||||
|
||||
|
||||
--resynclabels : Resyncs Gmail labels when a message is already on host2.
|
||||
Activated by default with --gmail1 --gmail2 unless
|
||||
--noresynclabels is added.
|
||||
@ -445,9 +367,6 @@ OPTIONS
|
||||
May be useful when a user has already started to play
|
||||
with its host2 account.
|
||||
|
||||
--filterbuggyflags : Filter flags known to be buggy and generators of errors
|
||||
"BAD Invalid system flag" or "NO APPEND Invalid flag list".
|
||||
|
||||
OPTIONS/deletions
|
||||
|
||||
--delete1 : Deletes messages on host1 server after a successful
|
||||
@ -472,18 +391,16 @@ OPTIONS
|
||||
Useful with --delete1 since what remains on host1
|
||||
is only what failed to be synced.
|
||||
|
||||
--delete2 : Delete messages in the host2 account that are not in
|
||||
the host1 account. Useful for backup or pre-sync.
|
||||
--delete2 : Delete messages in host2 that are not in
|
||||
host1 server. Useful for backup or pre-sync.
|
||||
--delete2 implies --uidexpunge2
|
||||
|
||||
--delete2duplicates : Deletes messages in host2 that are duplicates in host2.
|
||||
--delete2duplicates : Delete messages in host2 that are duplicates.
|
||||
Works only without --useuid since duplicates are
|
||||
detected with an header part of each message.
|
||||
NB: --delete2duplicates is far less violent than --delete2
|
||||
since it removes only duplicates.
|
||||
|
||||
--delete2folders : Delete folders in host2 that are not in host1.
|
||||
For safety, first try it like this, it is safe:
|
||||
--delete2folders : Delete folders in host2 that are not in host1 server.
|
||||
For safety, first try it like this (it is safe):
|
||||
--delete2folders --dry --justfolders --nofoldersizes
|
||||
and see what folders will be deleted.
|
||||
|
||||
@ -504,17 +421,16 @@ OPTIONS
|
||||
If you encounter problems with dates, see also:
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Dates.txt
|
||||
|
||||
--syncinternaldates : Sets the internal dates on host2 as the same as host1.
|
||||
--syncinternaldates : Sets the internal dates on host2 same as host1.
|
||||
Turned on by default. Internal date is the date
|
||||
a message arrived on a host (Unix mtime usually).
|
||||
--idatefromheader : Sets the internal dates on host2 as same as the
|
||||
a message arrived on a host (Unix mtime).
|
||||
--idatefromheader : Sets the internal dates on host2 same as the
|
||||
ones in "Date:" headers.
|
||||
|
||||
OPTIONS/message selection
|
||||
|
||||
--maxsize int : Skip messages larger (or equal) than int bytes
|
||||
--minsize int : Skip messages smaller (or equal) than int bytes
|
||||
|
||||
--maxage int : Skip messages older than int days.
|
||||
final stats (skipped) don't count older messages
|
||||
see also --minage
|
||||
@ -535,30 +451,18 @@ OPTIONS
|
||||
--search2 str : Same as --search but for selecting host2 messages only.
|
||||
So --search CRIT equals --search1 CRIT --search2 CRIT
|
||||
|
||||
--noabletosearch : Makes --minage and --maxage options use the internal
|
||||
dates given by a FETCH imap command instead of the
|
||||
"Date:" header. Internal date is the arrival date
|
||||
in the mailbox.
|
||||
--noabletosearch equals --noabletosearch1 --noabletosearch2
|
||||
|
||||
--noabletosearch1 : Like --noabletosearch but for host1 only.
|
||||
--noabletosearch2 : Like --noabletosearch but for host2 only.
|
||||
|
||||
--maxlinelength int : skip messages with a line length longer than int bytes.
|
||||
RFC 2822 says it must be no more than 1000 bytes but
|
||||
real life servers and email clients do more.
|
||||
|
||||
|
||||
--useheader str : Use this header to compare messages on both sides.
|
||||
Example: "Message-Id" or "Received" or "Date".
|
||||
Ex: Message-ID or Subject or Date.
|
||||
--useheader str and this one, etc.
|
||||
|
||||
--syncduplicates : Sync also duplicates. Off by default.
|
||||
|
||||
--usecache : Use cache to speed up next syncs. Off by default.
|
||||
--usecache : Use cache to speed up next syncs. Not set by default.
|
||||
--nousecache : Do not use cache. Caveat: --useuid --nousecache creates
|
||||
duplicates on multiple runs.
|
||||
|
||||
--useuid : Use UIDs instead of headers as a criterion to recognize
|
||||
messages. Option --usecache is then implied unless
|
||||
--nousecache is used.
|
||||
@ -575,7 +479,6 @@ OPTIONS
|
||||
--addheader adds a "Message-Id" header,
|
||||
like "Message-Id: 12345@imapsync", where 12345
|
||||
is the imap UID of the message on the host1 folder.
|
||||
Useful to sync folders "Sent" or "Draft".
|
||||
|
||||
OPTIONS/debugging
|
||||
|
||||
@ -593,7 +496,7 @@ OPTIONS
|
||||
--tests : Run local non-regression tests. Exit code 0 means all ok.
|
||||
--testslive : Run a live test with test1.lamiral.info imap server.
|
||||
Useful to check the basics. Needs internet connection.
|
||||
--testslive6 : Run a live test with ks6ipv6.lamiral.info imap server.
|
||||
--testslive6 : Run a live test with ks2ipv6.lamiral.info imap server.
|
||||
Useful to check the ipv6 connectivity. Needs internet.
|
||||
|
||||
OPTIONS/specific
|
||||
@ -601,8 +504,8 @@ OPTIONS
|
||||
--gmail1 : sets --host1 to Gmail and other options. See FAQ.Gmail.txt
|
||||
--gmail2 : sets --host2 to Gmail and other options. See FAQ.Gmail.txt
|
||||
|
||||
--office1 : sets --host1 to Office365 and other options. See FAQ.Office365.txt
|
||||
--office2 : sets --host2 to Office365 and other options. See FAQ.Office365.txt
|
||||
--office1 : sets --host1 to Office365 and other options. See FAQ.Exchange.txt
|
||||
--office2 : sets --host2 to Office365 and other options. See FAQ.Exchange.txt
|
||||
|
||||
--exchange1 : sets options for Exchange. See FAQ.Exchange.txt
|
||||
--exchange2 : sets options for Exchange. See FAQ.Exchange.txt
|
||||
@ -612,34 +515,13 @@ OPTIONS
|
||||
|
||||
OPTIONS/behavior
|
||||
|
||||
--timeout1 flo : Connection timeout in seconds for host1.
|
||||
Default is 120 and 0 means no timeout at all.
|
||||
--timeout2 flo : Connection timeout in seconds for host2.
|
||||
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 connections.
|
||||
See the document INSTALL.OnlineUI.txt and search
|
||||
for "Timeout" for how to deal with this issue.
|
||||
|
||||
--keepalive1 : https://metacpan.org/pod/Mail::IMAPClient#Keepalive
|
||||
Some firewalls and network gears like to timeout connections
|
||||
prematurely if the connection sits idle.
|
||||
This option enables SO_KEEPALIVE on the host1 socket.
|
||||
--keepalive1 is on by default since imapsync release 2.169
|
||||
Use --nokeepalive1 to disable it.
|
||||
|
||||
--keepalive2 : Same as --keepalive2 but for host2.
|
||||
Use --nokeepalive2 to disable it.
|
||||
|
||||
--maxmessagespersecond flo : limits the average number of messages
|
||||
transferred per second.
|
||||
--maxmessagespersecond int : limits the number of messages transferred per second.
|
||||
|
||||
--maxbytespersecond int : limits the average transfer rate per second.
|
||||
--maxbytesafter int : starts --maxbytespersecond limitation only after
|
||||
--maxbytesafter amount of data transferred.
|
||||
|
||||
--maxsleep flo : do not sleep more than int seconds.
|
||||
--maxsleep int : do not sleep more than int seconds.
|
||||
On by default, 2 seconds max, like --maxsleep 2
|
||||
|
||||
--abort : terminates a previous call still running.
|
||||
@ -648,19 +530,13 @@ OPTIONS
|
||||
--exitwhenover int : Stop syncing and exits when int total bytes
|
||||
transferred is reached.
|
||||
|
||||
--version : Print only the software version.
|
||||
--version : Print only software version.
|
||||
--noreleasecheck : Do not check for any new imapsync release.
|
||||
--releasecheck : Check for new imapsync release.
|
||||
it's an http request to
|
||||
http://imapsync.lamiral.info/prj/imapsync/VERSION
|
||||
|
||||
--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.
|
||||
--noid : Do not send/receive ID command to imap servers.
|
||||
|
||||
--justconnect : Just connect to both servers and print useful
|
||||
information. Need only --host1 and --host2 options.
|
||||
@ -685,7 +561,7 @@ OPTIONS
|
||||
|
||||
SECURITY
|
||||
|
||||
You can use --passfile1 instead of --password1 to mention the password
|
||||
You can use --passfile1 instead of --password1 to give the password
|
||||
since it is safer. With --password1 option, on Linux, any user on your
|
||||
host can see the password by using the 'ps auxwwww' command. Using a
|
||||
variable (like IMAPSYNC_PASSWORD1) is also dangerous because of the 'ps
|
||||
@ -700,7 +576,7 @@ SECURITY
|
||||
on the imap servers. If the imaps port is closed then it open a normal
|
||||
(clear) connection on port 143 but it looks for TLS support in the
|
||||
CAPABILITY list of the servers. If TLS is supported then imapsync goes
|
||||
to encryption with STARTTLS.
|
||||
to encryption.
|
||||
|
||||
If the automatic ssl and the tls detections fail then imapsync will not
|
||||
protect against sniffing activities on the network, especially for
|
||||
@ -716,10 +592,7 @@ EXIT STATUS
|
||||
Imapsync will exit with a 0 status (return code) if everything went
|
||||
good. Otherwise, it exits with a non-zero status. That's classical Unix
|
||||
behavior. Here is the list of the exit code values (an integer between 0
|
||||
and 255). In Bourne Shells, this exit code value can be retrieved within
|
||||
the variable value "$?" if you read it just after the imapsync call.
|
||||
|
||||
The names reflect their meaning:
|
||||
and 255). The names reflect their meaning:
|
||||
|
||||
EX_OK => 0 ; #/* successful termination */
|
||||
EX_USAGE => 64 ; #/* command line usage error */
|
||||
@ -728,7 +601,6 @@ EXIT STATUS
|
||||
EX_SOFTWARE => 70 ; #/* internal software error */
|
||||
EXIT_CATCH_ALL => 1 ; # Any other error
|
||||
EXIT_BY_SIGNAL => 6 ; # Should be 128+n where n is the sig_num
|
||||
EXIT_BY_FILE => 7 ;
|
||||
EXIT_PID_FILE_ERROR => 8 ;
|
||||
EXIT_CONNECTION_FAILURE => 10 ;
|
||||
EXIT_TLS_FAILURE => 12 ;
|
||||
@ -736,25 +608,14 @@ EXIT STATUS
|
||||
EXIT_SUBFOLDER1_NO_EXISTS => 21 ;
|
||||
EXIT_WITH_ERRORS => 111 ;
|
||||
EXIT_WITH_ERRORS_MAX => 112 ;
|
||||
EXIT_OVERQUOTA => 113 ;
|
||||
EXIT_ERR_APPEND => 114 ;
|
||||
EXIT_ERR_FETCH => 115 ;
|
||||
EXIT_ERR_CREATE => 116 ;
|
||||
EXIT_ERR_SELECT => 117 ;
|
||||
EXIT_TRANSFER_EXCEEDED => 118 ;
|
||||
EXIT_ERR_APPEND_VIRUS => 119 ;
|
||||
EXIT_TESTS_FAILED => 254 ; # Like Test::More API
|
||||
EXIT_CONNECTION_FAILURE_HOST1 => 101 ;
|
||||
EXIT_CONNECTION_FAILURE_HOST2 => 102 ;
|
||||
EXIT_AUTHENTICATION_FAILURE_USER1 => 161 ;
|
||||
EXIT_AUTHENTICATION_FAILURE_USER2 => 162 ;
|
||||
|
||||
LICENSE AND COPYRIGHT
|
||||
|
||||
Imapsync is free, open, public but not always gratis software cover by
|
||||
the NOLIMIT Public License, now called NLPL. See the LICENSE file
|
||||
included in the distribution or just read the following simple sentence
|
||||
as it IS the license text:
|
||||
included in the distribution or just read this simple sentence as it IS
|
||||
the licence text:
|
||||
|
||||
"No limits to do anything with this work and this license."
|
||||
|
||||
@ -771,10 +632,10 @@ AUTHOR
|
||||
Good feedback is always welcome. Bad feedback is very often welcome.
|
||||
|
||||
Gilles LAMIRAL earns his living by writing, installing, configuring and
|
||||
sometimes teaching free, open, and often gratis software. Imapsync used
|
||||
to be "always gratis" but now it is only "often gratis" because imapsync
|
||||
is sold by its author, your servitor, a good way to maintain and support
|
||||
free open public software tools over decades.
|
||||
teaching free, open and often gratis software. Imapsync used to be
|
||||
"always gratis" but now it is only "often gratis" because imapsync is
|
||||
sold by its author, a good way to maintain and support free open public
|
||||
software over decades.
|
||||
|
||||
BUGS AND LIMITATIONS
|
||||
|
||||
@ -823,19 +684,19 @@ INSTALL
|
||||
|
||||
Imapsync works under most Windows (2000, XP, Vista, Seven, Eight, Ten
|
||||
and all Server releases 2000, 2003, 2008 and R2, 2012 and R2, 2016)
|
||||
as a standalone binary software called imapsync.exe, usually launched
|
||||
from a batch file in order to avoid always typing the options. There
|
||||
is also a 32bit binary called imapsync_32bit.exe
|
||||
|
||||
Imapsync works under OS X as a standalone binary software called
|
||||
imapsync_bin_Darwin
|
||||
as a standalone binary software called imapsync.exe,
|
||||
usually launched from a batch file in order to avoid always typing
|
||||
the options. There is also a 64bit binary called imapsync_64bit.exe
|
||||
|
||||
Imapsync works under OS X as a standalone binary
|
||||
software called imapsync_bin_Darwin
|
||||
|
||||
Purchase latest imapsync at
|
||||
https://imapsync.lamiral.info/
|
||||
|
||||
You'll receive a link to a compressed tarball called
|
||||
imapsync-x.xx.tgz where x.xx is the version number.
|
||||
Untar the tarball where you want (on Unix):
|
||||
You'll receive a link to a compressed tarball called imapsync-x.xx.tgz
|
||||
where x.xx is the version number. Untar the tarball where
|
||||
you want (on Unix):
|
||||
|
||||
tar xzvf imapsync-x.xx.tgz
|
||||
|
||||
@ -860,7 +721,7 @@ SIMILAR SOFTWARE
|
||||
See also https://imapsync.lamiral.info/S/external.shtml
|
||||
for a better up to date list.
|
||||
|
||||
List verified on Friday July 1, 2021.
|
||||
Last updated and verified on Sun Dec 8, 2019.
|
||||
|
||||
imapsync: https://github.com/imapsync/imapsync (this is an imapsync copy, sometimes delayed, with --noreleasecheck by default since release 1.592, 2014/05/22)
|
||||
imap_tools: https://web.archive.org/web/20161228145952/http://www.athensfbc.com/imap_tools/. The imap_tools code is now at https://github.com/andrewnimmo/rick-sanders-imap-tools
|
||||
@ -868,7 +729,6 @@ SIMILAR SOFTWARE
|
||||
Doveadm-Sync: https://wiki2.dovecot.org/Tools/Doveadm/Sync ( Dovecot sync tool )
|
||||
davmail: http://davmail.sourceforge.net/
|
||||
offlineimap: http://offlineimap.org/
|
||||
fdm: https://github.com/nicm/fdm
|
||||
mbsync: http://isync.sourceforge.net/
|
||||
mailsync: http://mailsync.sourceforge.net/
|
||||
mailutil: https://www.washington.edu/imap/ part of the UW IMAP toolkit. (well, seems abandoned now)
|
||||
@ -880,7 +740,7 @@ SIMILAR SOFTWARE
|
||||
imapmigrate: http://sourceforge.net/projects/cyrus-utils/
|
||||
larch: https://github.com/rgrove/larch (derived from wonko_imapsync, good at Gmail)
|
||||
wonko_imapsync: http://wonko.com/article/554 (superseded by larch)
|
||||
pop2imap: https://pop2imap.lamiral.info/ (I wrote that too)
|
||||
pop2imap: http://www.linux-france.org/prj/pop2imap/ (I wrote that too)
|
||||
exchange-away: http://exchange-away.sourceforge.net/
|
||||
SyncBackPro: http://www.2brightsparks.com/syncback/sbpro.html
|
||||
ImapSyncClient: https://github.com/ridaamirini/ImapSyncClient
|
||||
@ -890,9 +750,6 @@ SIMILAR SOFTWARE
|
||||
imapbackup: https://github.com/rcarmo/imapbackup (A Python script for incremental backups of IMAP mailboxes)
|
||||
BitRecover email-backup 99 USD, 299 USD https://www.bitrecover.com/email-backup/.
|
||||
ImportExportTools: https://addons.thunderbird.net/en-us/thunderbird/addon/importexporttools/ ImportExportTools for Mozilla Thunderbird by Paolo Kaosmos. ImportExportTools does not do IMAP.
|
||||
rximapmail: https://sourceforge.net/projects/rximapmail/
|
||||
Shoviv: https://www.shoviv.com/email-backup.html Allows backup from various sources including Office 365 (Exchange Online, Exchange On-Premises), IMAP, and Google Workspace.
|
||||
CodeTwo: https://www.codetwo.com/ but CodeTwo does imap source to Office365 only.
|
||||
|
||||
HISTORY
|
||||
|
||||
@ -910,6 +767,6 @@ HISTORY
|
||||
tarball source (more precisely in the examples/ directory of the
|
||||
Mail-IMAPClient tarball).
|
||||
|
||||
So many changes happened since then that I wonder if it remains any
|
||||
lines of the original copy_folder.pl in imapsync source code.
|
||||
So many happened since then that I wonder if it remains any lines of the
|
||||
original copy_folder.pl in imapsync source code.
|
||||
|
||||
|
||||
789
README.md
Normal file
789
README.md
Normal file
@ -0,0 +1,789 @@
|
||||
# Imapsync sponsoring
|
||||
|
||||
You are a great imapsync user or perhaps a future one! I thank you for that, very much.
|
||||
The paradox to get imapsync stay free and gratis for anyone is that the imapsync author needs to be paid for maintening and improving it.
|
||||
|
||||
In case you're using imapsync in a professional context,
|
||||
then consider buying imapsync and support at https://imapsync.lamiral.info/#buy_all,
|
||||
you will get also a regular invoice for your company.
|
||||
|
||||
If it's too much, then consider a smaller donation:
|
||||
|
||||
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=TUENPW59U9LL2) or on regular monthly donation via the new github sponsoring campaign https://github.com/sponsors/gilleslamiral
|
||||
|
||||
**Thanks in any case, even no money, I'm ok with that!**
|
||||
|
||||
# README
|
||||
````
|
||||
NAME
|
||||
|
||||
imapsync - Email IMAP tool for syncing, copying, migrating and archiving
|
||||
email mailboxes between two imap servers, one way, and without
|
||||
duplicates.
|
||||
|
||||
VERSION
|
||||
|
||||
This documentation refers to Imapsync $Revision: 1.977 $
|
||||
|
||||
USAGE
|
||||
|
||||
To synchronize the source imap account
|
||||
"test1" on server "test1.lamiral.info" with password "secret1"
|
||||
to the destination imap account
|
||||
"test2" on server "test2.lamiral.info" with password "secret2"
|
||||
do:
|
||||
|
||||
imapsync \
|
||||
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
||||
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
||||
|
||||
DESCRIPTION
|
||||
|
||||
We sometimes need to transfer mailboxes from one imap server to one
|
||||
another.
|
||||
|
||||
Imapsync command is a tool allowing incremental and recursive imap
|
||||
transfers from one mailbox to another. If you don't understand the
|
||||
previous sentence, it's normal, it's pedantic computer oriented jargon.
|
||||
|
||||
All folders are transferred, recursively, meaning the whole folder
|
||||
hierarchy is taken, all messages in them, and all messages flags (\Seen
|
||||
\Answered \Flagged etc.) are synced too.
|
||||
|
||||
Imapsync reduces the amount of data transferred by not transferring a
|
||||
given message if it already resides on the destination side. Messages
|
||||
that are on the destination side but not on the source side stay as they
|
||||
are (see the --delete2 option to have a strict sync).
|
||||
|
||||
How imapsync knows a message is already on both sides? Same specific
|
||||
headers and the transfer is done only once. By default, the
|
||||
identification headers are "Message-Id:" and "Received:" lines but this
|
||||
choice can be changed with the --useheader option.
|
||||
|
||||
All flags are preserved, unread messages will stay unread, read ones
|
||||
will stay read, deleted will stay deleted.
|
||||
|
||||
You can abort the transfer at any time and restart it later, imapsync
|
||||
works well with bad connections and interruptions, by design. On a
|
||||
terminal hit Ctr-c twice within two seconds in order to abort the
|
||||
program. Hit Ctr-c just once makes imapsync reconnect to both imap
|
||||
servers.
|
||||
|
||||
A classical scenario is synchronizing a mailbox B from another mailbox A
|
||||
where you just want to keep a strict copy of A in B. Strict meaning all
|
||||
messages in A will be in B but no more.
|
||||
|
||||
For this, option --delete2 has to be used, it deletes messages in host2
|
||||
folder B that are not in host1 folder A. If you also need to destroy
|
||||
host2 folders that are not in host1 then use --delete2folders. See also
|
||||
--delete2foldersonly and --delete2foldersbutnot to set up exceptions on
|
||||
folders to destroy. INBOX will never be destroy, it's a mandatory folder
|
||||
in IMAP.
|
||||
|
||||
A different scenario is to delete the messages from the source mailbox
|
||||
after a successful transfer, it can be a good feature when migrating
|
||||
mailboxes since messages will be only on one side. The source account
|
||||
will only have messages that are not on the destination yet, ie,
|
||||
messages that arrived after a sync or that failed to be copied.
|
||||
|
||||
In that case, use the --delete1 option. Option --delete1 implies also
|
||||
option --expunge1 so all messages marked deleted on host1 will be really
|
||||
deleted. In IMAP protocol deleting a message does not really delete it,
|
||||
it marks it with the flag \Deleted, allowing an undelete. Expunging a
|
||||
folder removes, definitively, all the messages marked as \Deleted in
|
||||
this folder.
|
||||
|
||||
You can also decide to remove empty folders once all of their messages
|
||||
have been transferred. Add --delete1emptyfolders to obtain this
|
||||
behavior.
|
||||
|
||||
Imapsync is not adequate for maintaining two active imap accounts in
|
||||
synchronization when the user plays independently on both sides. Use
|
||||
offlineimap (written by John Goerzen) or mbsync (written by Michael R.
|
||||
Elkins) for a 2 ways synchronization.
|
||||
|
||||
OPTIONS
|
||||
|
||||
usage: imapsync [options]
|
||||
|
||||
The standard options are the six values forming the credentials. Three
|
||||
values on each side are needed in order to log in into the IMAP servers.
|
||||
These six values are a host, a username, and a password, two times.
|
||||
|
||||
Conventions used in the following descriptions of the options:
|
||||
|
||||
str means string
|
||||
int means integer
|
||||
reg means regular expression
|
||||
cmd means command
|
||||
|
||||
--dry : Makes imapsync doing nothing for real, just print what
|
||||
would be done without --dry.
|
||||
|
||||
OPTIONS/credentials
|
||||
|
||||
--host1 str : Source or "from" imap server.
|
||||
--port1 int : Port to connect on host1.
|
||||
Optional since default ports are the
|
||||
well known ports imap/143 or imaps/993.
|
||||
--user1 str : User to login on host1.
|
||||
--password1 str : Password for the user1.
|
||||
|
||||
--host2 str : "destination" imap server.
|
||||
--port2 int : Port to connect on host2. Optional
|
||||
--user2 str : User to login on host2.
|
||||
--password2 str : Password for the user2.
|
||||
|
||||
--showpasswords : Shows passwords on output instead of "MASKED".
|
||||
Useful to restart a complete run by just reading
|
||||
the command line used in the log,
|
||||
or to debug passwords.
|
||||
It's not a secure practice at all.
|
||||
|
||||
--passfile1 str : Password file for the user1. It must contain the
|
||||
password on the first line. This option avoids showing
|
||||
the password on the command line like --password1 does.
|
||||
--passfile2 str : Password file for the user2.
|
||||
|
||||
You can also pass the passwords in the environment variables
|
||||
IMAPSYNC_PASSWORD1 and IMAPSYNC_PASSWORD2
|
||||
|
||||
OPTIONS/encryption
|
||||
|
||||
--nossl1 : Do not use a SSL connection on host1.
|
||||
--ssl1 : Use a SSL connection on host1. On by default if possible.
|
||||
|
||||
--nossl2 : Do not use a SSL connection on host2.
|
||||
--ssl2 : Use a SSL connection on host2. On by default if possible.
|
||||
|
||||
--notls1 : Do not use a TLS connection on host1.
|
||||
--tls1 : Use a TLS connection on host1. On by default if possible.
|
||||
|
||||
--notls2 : Do not use a TLS connection on host2.
|
||||
--tls2 : Use a TLS connection on host2. On by default if possible.
|
||||
|
||||
--debugssl int : SSL debug mode from 0 to 4.
|
||||
|
||||
--sslargs1 str : Pass any ssl parameter for host1 ssl or tls connection. Example:
|
||||
--sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3
|
||||
See all possibilities in the new() method of IO::Socket::SSL
|
||||
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
||||
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
||||
See --sslargs1
|
||||
|
||||
--timeout1 int : Connection timeout in seconds for host1.
|
||||
Default is 120 and 0 means no timeout at all.
|
||||
--timeout2 int : Connection timeout in seconds for host2.
|
||||
Default is 120 and 0 means no timeout at all.
|
||||
|
||||
OPTIONS/authentication
|
||||
|
||||
--authmech1 str : Auth mechanism to use with host1:
|
||||
PLAIN, LOGIN, CRAM-MD5 etc. Use UPPERCASE.
|
||||
--authmech2 str : Auth mechanism to use with host2. See --authmech1
|
||||
|
||||
--authuser1 str : User to auth with on host1 (admin user).
|
||||
Avoid using --authmech1 SOMETHING with --authuser1.
|
||||
--authuser2 str : User to auth with on host2 (admin user).
|
||||
--proxyauth1 : Use proxyauth on host1. Requires --authuser1.
|
||||
Required by Sun/iPlanet/Netscape IMAP servers to
|
||||
be able to use an administrative user.
|
||||
--proxyauth2 : Use proxyauth on host2. Requires --authuser2.
|
||||
|
||||
--authmd51 : Use MD5 authentication for host1.
|
||||
--authmd52 : Use MD5 authentication for host2.
|
||||
--domain1 str : Domain on host1 (NTLM authentication).
|
||||
--domain2 str : Domain on host2 (NTLM authentication).
|
||||
|
||||
OPTIONS/folders
|
||||
|
||||
--folder str : Sync this folder.
|
||||
--folder str : and this one, etc.
|
||||
--folderrec str : Sync this folder recursively.
|
||||
--folderrec str : and this one, etc.
|
||||
|
||||
--folderfirst str : Sync this folder first. Ex. --folderfirst "INBOX"
|
||||
--folderfirst str : then this one, etc.
|
||||
--folderlast str : Sync this folder last. --folderlast "[Gmail]/All Mail"
|
||||
--folderlast str : then this one, etc.
|
||||
|
||||
--nomixfolders : Do not merge folders when host1 is case-sensitive
|
||||
while host2 is not (like Exchange). Only the first
|
||||
similar folder is synced (example: with folders
|
||||
"Sent", "SENT" and "sent"
|
||||
on host1 only "Sent" will be synced to host2).
|
||||
|
||||
--skipemptyfolders : Empty host1 folders are not created on host2.
|
||||
|
||||
--include reg : Sync folders matching this regular expression
|
||||
--include reg : or this one, etc.
|
||||
If both --include --exclude options are used, then
|
||||
include is done before.
|
||||
--exclude reg : Skips folders matching this regular expression
|
||||
Several folders to avoid:
|
||||
--exclude 'fold1|fold2|f3' skips fold1, fold2 and f3.
|
||||
--exclude reg : or this one, etc.
|
||||
|
||||
--automap : guesses folders mapping, for folders well known as
|
||||
"Sent", "Junk", "Drafts", "All", "Archive", "Flagged".
|
||||
|
||||
--f1f2 str1=str2 : Force folder str1 to be synced to str2,
|
||||
--f1f2 overrides --automap and --regextrans2.
|
||||
|
||||
--subfolder2 str : Syncs the whole host1 folders hierarchy under the
|
||||
host2 folder named str.
|
||||
It does it internally by adding three
|
||||
--regextrans2 options before all others.
|
||||
Add --debug to see what's really going on.
|
||||
|
||||
--subfolder1 str : Syncs the host1 folders hierarchy which is under folder
|
||||
str to the root hierarchy of host2.
|
||||
It's the couterpart of a sync done by --subfolder2
|
||||
when doing it in the reverse order.
|
||||
Backup/Restore scenario:
|
||||
Use --subfolder2 str for a backup to the folder str
|
||||
on host2. Then use --subfolder1 str for restoring
|
||||
from the folder str, after inverting
|
||||
host1/host2 user1/user2 values.
|
||||
|
||||
|
||||
--subscribed : Transfers subscribed folders.
|
||||
--subscribe : Subscribe to the folders transferred on the
|
||||
host2 that are subscribed on host1. On by default.
|
||||
--subscribeall : Subscribe to the folders transferred on the
|
||||
host2 even if they are not subscribed on host1.
|
||||
|
||||
--prefix1 str : Remove prefix str to all destination folders,
|
||||
usually "INBOX." or "INBOX/" or an empty string "".
|
||||
imapsync guesses the prefix if host1 imap server
|
||||
does not have NAMESPACE capability. So this option
|
||||
should not be used most of the time.
|
||||
--prefix2 str : Add prefix to all host2 folders. See --prefix1
|
||||
|
||||
--sep1 str : Host1 separator. This option should not be used
|
||||
most of the time.
|
||||
Imapsync gets the separator from the server itself,
|
||||
by using NAMESPACE, or it tries to guess it
|
||||
from the folders listing (it counts
|
||||
characters / . \\ \ in folder names and choose the
|
||||
more frequent, or finally / if nothing is found.
|
||||
--sep2 str : Host2 separator. See --sep1
|
||||
|
||||
--regextrans2 reg : Apply the whole regex to each destination folders.
|
||||
--regextrans2 reg : and this one. etc.
|
||||
When you play with the --regextrans2 option, first
|
||||
add also the safe options --dry --justfolders
|
||||
Then, when happy, remove --dry for a run, then
|
||||
remove --justfolders for the next ones.
|
||||
Have in mind that --regextrans2 is applied after
|
||||
the automatic prefix and separator inversion.
|
||||
For examples see:
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt
|
||||
|
||||
OPTIONS/folders sizes
|
||||
|
||||
--nofoldersizes : Do not calculate the size of each folder at the
|
||||
beginning of the sync. Default is to calculate them.
|
||||
--nofoldersizesatend: Do not calculate the size of each folder at the
|
||||
end of the sync. Default is to calculate them.
|
||||
--justfoldersizes : Exit after having printed the initial folder sizes.
|
||||
|
||||
OPTIONS/tmp
|
||||
|
||||
--tmpdir str : Where to store temporary files and subdirectories.
|
||||
Will be created if it doesn't exist.
|
||||
Default is system specific, Unix is /tmp but
|
||||
/tmp is often too small and deleted at reboot.
|
||||
--tmpdir /var/tmp should be better.
|
||||
--pidfile str : The file where imapsync pid is written,
|
||||
it can be dirname/filename.
|
||||
Default name is imapsync.pid in tmpdir.
|
||||
--pidfilelocking : Abort if pidfile already exists. Useful to avoid
|
||||
concurrent transfers on the same mailbox.
|
||||
|
||||
OPTIONS/log
|
||||
|
||||
--nolog : Turn off logging on file
|
||||
--logfile str : Change the default log filename (can be dirname/filename).
|
||||
--logdir str : Change the default log directory. Default is LOG_imapsync/
|
||||
|
||||
The default logfile name is for example
|
||||
|
||||
LOG_imapsync/2019_12_22_23_57_59_532_user1_user2.txt
|
||||
|
||||
where:
|
||||
|
||||
2019_12_22_23_57_59_532 is nearly the date of the start
|
||||
YYYY_MM_DD_HH_MM_SS_mmm
|
||||
year_month_day_hour_minute_seconde_millisecond
|
||||
|
||||
and user1 user2 are the --user1 --user2 values.
|
||||
|
||||
OPTIONS/messages
|
||||
|
||||
--skipmess reg : Skips messages matching the regex.
|
||||
Example: 'm/[\x80-ff]/' # to avoid 8bits messages.
|
||||
--skipmess is applied before --regexmess
|
||||
--skipmess reg : or this one, etc.
|
||||
|
||||
--skipcrossduplicates : Avoid copying messages that are already copied
|
||||
in another folder, good from Gmail to X when
|
||||
X is not also Gmail.
|
||||
Activated with --gmail1 unless --noskipcrossduplicates
|
||||
|
||||
--debugcrossduplicates : Prints which messages (UIDs) are skipped with
|
||||
--skipcrossduplicates (and in what other folders
|
||||
they are).
|
||||
|
||||
--pipemess cmd : Apply this cmd command to each message content
|
||||
before the copy.
|
||||
--pipemess cmd : and this one, etc.
|
||||
With several --pipemess, the output of each cmd
|
||||
command (STDOUT) is given to the input (STDIN)
|
||||
of the next command.
|
||||
For example,
|
||||
--pipemess cmd1 --pipemess cmd2 --pipemess cmd3
|
||||
is like a Unix pipe:
|
||||
"cat message | cmd1 | cmd2 | cmd3"
|
||||
|
||||
--disarmreadreceipts : Disarms read receipts (host2 Exchange issue)
|
||||
|
||||
--regexmess reg : Apply the whole regex to each message before transfer.
|
||||
Example: 's/\000/ /g' # to replace null by space.
|
||||
--regexmess reg : and this one, etc.
|
||||
|
||||
OPTIONS/labels
|
||||
|
||||
Gmail present labels as folders in imap. Imapsync can accelerate the
|
||||
sync by syncing X-GM-LABELS, it will avoid to transfer messages when
|
||||
they are already on host2.
|
||||
|
||||
--synclabels : Syncs also Gmail labels when a message is copied to host2.
|
||||
Activated by default with --gmail1 --gmail2 unless
|
||||
--nosynclabels is added.
|
||||
|
||||
--resynclabels : Resyncs Gmail labels when a message is already on host2.
|
||||
Activated by default with --gmail1 --gmail2 unless
|
||||
--noresynclabels is added.
|
||||
|
||||
For Gmail syncs, see also:
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Gmail.txt
|
||||
|
||||
OPTIONS/flags
|
||||
|
||||
If you encounter flag problems see also:
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Flags.txt
|
||||
|
||||
--regexflag reg : Apply the whole regex to each flags list.
|
||||
Example: 's/"Junk"//g' # to remove "Junk" flag.
|
||||
--regexflag reg : then this one, etc.
|
||||
|
||||
--resyncflags : Resync flags for already transferred messages.
|
||||
On by default.
|
||||
--noresyncflags : Do not resync flags for already transferred messages.
|
||||
May be useful when a user has already started to play
|
||||
with its host2 account.
|
||||
|
||||
OPTIONS/deletions
|
||||
|
||||
--delete1 : Deletes messages on host1 server after a successful
|
||||
transfer. Option --delete1 has the following behavior:
|
||||
it marks messages as deleted with the IMAP flag
|
||||
\Deleted, then messages are really deleted with an
|
||||
EXPUNGE IMAP command. If expunging after each message
|
||||
slows down too much the sync then use
|
||||
--noexpungeaftereach to speed up, expunging will then be
|
||||
done only twice per folder, one at the beginning and
|
||||
one at the end of a folder sync.
|
||||
|
||||
--expunge1 : Expunge messages on host1 just before syncing a folder.
|
||||
Expunge is done per folder.
|
||||
Expunge aims is to really delete messages marked deleted.
|
||||
An expunge is also done after each message copied
|
||||
if option --delete1 is set (unless --noexpungeaftereach).
|
||||
|
||||
--noexpunge1 : Do not expunge messages on host1.
|
||||
|
||||
--delete1emptyfolders : Deletes empty folders on host1, INBOX excepted.
|
||||
Useful with --delete1 since what remains on host1
|
||||
is only what failed to be synced.
|
||||
|
||||
--delete2 : Delete messages in host2 that are not in
|
||||
host1 server. Useful for backup or pre-sync.
|
||||
--delete2 implies --uidexpunge2
|
||||
|
||||
--delete2duplicates : Delete messages in host2 that are duplicates.
|
||||
Works only without --useuid since duplicates are
|
||||
detected with an header part of each message.
|
||||
|
||||
--delete2folders : Delete folders in host2 that are not in host1 server.
|
||||
For safety, first try it like this (it is safe):
|
||||
--delete2folders --dry --justfolders --nofoldersizes
|
||||
and see what folders will be deleted.
|
||||
|
||||
--delete2foldersonly reg : 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
|
||||
|
||||
--noexpunge2 : Do not expunge messages on host2.
|
||||
--nouidexpunge2 : Do not uidexpunge messages on the host2 account
|
||||
that are not on the host1 account.
|
||||
|
||||
OPTIONS/dates
|
||||
|
||||
If you encounter problems with dates, see also:
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Dates.txt
|
||||
|
||||
--syncinternaldates : Sets the internal dates on host2 same as host1.
|
||||
Turned on by default. Internal date is the date
|
||||
a message arrived on a host (Unix mtime).
|
||||
--idatefromheader : Sets the internal dates on host2 same as the
|
||||
ones in "Date:" headers.
|
||||
|
||||
OPTIONS/message selection
|
||||
|
||||
--maxsize int : Skip messages larger (or equal) than int bytes
|
||||
--minsize int : Skip messages smaller (or equal) than int bytes
|
||||
--maxage int : Skip messages older than int days.
|
||||
final stats (skipped) don't count older messages
|
||||
see also --minage
|
||||
--minage int : Skip messages newer than int days.
|
||||
final stats (skipped) don't count newer messages
|
||||
You can do (+ zone are the messages selected):
|
||||
past|----maxage+++++++++++++++>now
|
||||
past|+++++++++++++++minage---->now
|
||||
past|----maxage+++++minage---->now (intersection)
|
||||
past|++++minage-----maxage++++>now (union)
|
||||
|
||||
--search str : Selects only messages returned by this IMAP SEARCH
|
||||
command. Applied on both sides.
|
||||
For a complete set of what can be search see
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Messages_Selection.txt
|
||||
|
||||
--search1 str : Same as --search but for selecting host1 messages only.
|
||||
--search2 str : Same as --search but for selecting host2 messages only.
|
||||
So --search CRIT equals --search1 CRIT --search2 CRIT
|
||||
|
||||
--maxlinelength int : skip messages with a line length longer than int bytes.
|
||||
RFC 2822 says it must be no more than 1000 bytes but
|
||||
real life servers and email clients do more.
|
||||
|
||||
|
||||
--useheader str : Use this header to compare messages on both sides.
|
||||
Ex: Message-ID or Subject or Date.
|
||||
--useheader str and this one, etc.
|
||||
|
||||
--usecache : Use cache to speed up next syncs. Not set by default.
|
||||
--nousecache : Do not use cache. Caveat: --useuid --nousecache creates
|
||||
duplicates on multiple runs.
|
||||
--useuid : Use UIDs instead of headers as a criterion to recognize
|
||||
messages. Option --usecache is then implied unless
|
||||
--nousecache is used.
|
||||
|
||||
OPTIONS/miscellaneous
|
||||
|
||||
--syncacls : Synchronizes acls (Access Control Lists).
|
||||
Acls in IMAP are not standardized, be careful
|
||||
since one acl code on one side may signify something
|
||||
else on the other one.
|
||||
--nosyncacls : Does not synchronize acls. This is the default.
|
||||
|
||||
--addheader : When a message has no headers to be identified,
|
||||
--addheader adds a "Message-Id" header,
|
||||
like "Message-Id: 12345@imapsync", where 12345
|
||||
is the imap UID of the message on the host1 folder.
|
||||
|
||||
OPTIONS/debugging
|
||||
|
||||
--debug : Debug mode.
|
||||
--debugfolders : Debug mode for the folders part only.
|
||||
--debugcontent : Debug content of the messages transferred. Huge output.
|
||||
--debugflags : Debug mode for flags.
|
||||
--debugimap1 : IMAP debug mode for host1. Very verbose.
|
||||
--debugimap2 : IMAP debug mode for host2. Very verbose.
|
||||
--debugimap : IMAP debug mode for host1 and host2. Twice very verbose.
|
||||
--debugmemory : Debug mode showing memory consumption after each copy.
|
||||
|
||||
--errorsmax int : Exit when int number of errors is reached. Default is 50.
|
||||
|
||||
--tests : Run local non-regression tests. Exit code 0 means all ok.
|
||||
--testslive : Run a live test with test1.lamiral.info imap server.
|
||||
Useful to check the basics. Needs internet connection.
|
||||
--testslive6 : Run a live test with ks2ipv6.lamiral.info imap server.
|
||||
Useful to check the ipv6 connectivity. Needs internet.
|
||||
|
||||
OPTIONS/specific
|
||||
|
||||
--gmail1 : sets --host1 to Gmail and other options. See FAQ.Gmail.txt
|
||||
--gmail2 : sets --host2 to Gmail and other options. See FAQ.Gmail.txt
|
||||
|
||||
--office1 : sets --host1 to Office365 and other options. See FAQ.Exchange.txt
|
||||
--office2 : sets --host2 to Office365 and other options. See FAQ.Exchange.txt
|
||||
|
||||
--exchange1 : sets options for Exchange. See FAQ.Exchange.txt
|
||||
--exchange2 : sets options for Exchange. See FAQ.Exchange.txt
|
||||
|
||||
--domino1 : sets options for Domino. See FAQ.Domino.txt
|
||||
--domino2 : sets options for Domino. See FAQ.Domino.txt
|
||||
|
||||
OPTIONS/behavior
|
||||
|
||||
--maxmessagespersecond int : limits the number of messages transferred per second.
|
||||
|
||||
--maxbytespersecond int : limits the average transfer rate per second.
|
||||
--maxbytesafter int : starts --maxbytespersecond limitation only after
|
||||
--maxbytesafter amount of data transferred.
|
||||
|
||||
--maxsleep int : do not sleep more than int seconds.
|
||||
On by default, 2 seconds max, like --maxsleep 2
|
||||
|
||||
--abort : terminates a previous call still running.
|
||||
It uses the pidfile to know what process to abort.
|
||||
|
||||
--exitwhenover int : Stop syncing and exits when int total bytes
|
||||
transferred is reached.
|
||||
|
||||
--version : Print only software version.
|
||||
--noreleasecheck : Do not check for any new imapsync release.
|
||||
--releasecheck : Check for new imapsync release.
|
||||
it's an http request to
|
||||
http://imapsync.lamiral.info/prj/imapsync/VERSION
|
||||
|
||||
--noid : Do not send/receive ID command to imap servers.
|
||||
|
||||
--justconnect : Just connect to both servers and print useful
|
||||
information. Need only --host1 and --host2 options.
|
||||
Obsolete since "imapsync --host1 imaphost" alone
|
||||
implies --justconnect
|
||||
|
||||
--justlogin : Just login to both host1 and host2 with users
|
||||
credentials, then exit.
|
||||
|
||||
--justfolders : Do only things about folders (ignore messages).
|
||||
|
||||
--help : print this help.
|
||||
|
||||
Example: to synchronize imap account "test1" on "test1.lamiral.info"
|
||||
to imap account "test2" on "test2.lamiral.info"
|
||||
with test1 password "secret1"
|
||||
and test2 password "secret2"
|
||||
|
||||
imapsync \
|
||||
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
||||
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
||||
|
||||
SECURITY
|
||||
|
||||
You can use --passfile1 instead of --password1 to give the password
|
||||
since it is safer. With --password1 option, on Linux, any user on your
|
||||
host can see the password by using the 'ps auxwwww' command. Using a
|
||||
variable (like IMAPSYNC_PASSWORD1) is also dangerous because of the 'ps
|
||||
auxwwwwe' command. So, saving the password in a well protected file (600
|
||||
or rw-------) is the best solution.
|
||||
|
||||
Imapsync activates ssl or tls encryption by default, if possible.
|
||||
|
||||
What detailed behavior is under this "if possible"?
|
||||
|
||||
Imapsync activates ssl if the well known port imaps port (993) is open
|
||||
on the imap servers. If the imaps port is closed then it open a normal
|
||||
(clear) connection on port 143 but it looks for TLS support in the
|
||||
CAPABILITY list of the servers. If TLS is supported then imapsync goes
|
||||
to encryption.
|
||||
|
||||
If the automatic ssl and the tls detections fail then imapsync will not
|
||||
protect against sniffing activities on the network, especially for
|
||||
passwords.
|
||||
|
||||
If you want to force ssl or tls just use --ssl1 --ssl2 or --tls1 --tls2
|
||||
|
||||
See also the document FAQ.Security.txt in the FAQ.d/ directory or at
|
||||
https://imapsync.lamiral.info/FAQ.d/FAQ.Security.txt
|
||||
|
||||
EXIT STATUS
|
||||
|
||||
Imapsync will exit with a 0 status (return code) if everything went
|
||||
good. Otherwise, it exits with a non-zero status. That's classical Unix
|
||||
behavior. Here is the list of the exit code values (an integer between 0
|
||||
and 255). The names reflect their meaning:
|
||||
|
||||
EX_OK => 0 ; #/* successful termination */
|
||||
EX_USAGE => 64 ; #/* command line usage error */
|
||||
EX_NOINPUT => 66 ; #/* cannot open input */
|
||||
EX_UNAVAILABLE => 69 ; #/* service unavailable */
|
||||
EX_SOFTWARE => 70 ; #/* internal software error */
|
||||
EXIT_CATCH_ALL => 1 ; # Any other error
|
||||
EXIT_BY_SIGNAL => 6 ; # Should be 128+n where n is the sig_num
|
||||
EXIT_PID_FILE_ERROR => 8 ;
|
||||
EXIT_CONNECTION_FAILURE => 10 ;
|
||||
EXIT_TLS_FAILURE => 12 ;
|
||||
EXIT_AUTHENTICATION_FAILURE => 16 ;
|
||||
EXIT_SUBFOLDER1_NO_EXISTS => 21 ;
|
||||
EXIT_WITH_ERRORS => 111 ;
|
||||
EXIT_WITH_ERRORS_MAX => 112 ;
|
||||
EXIT_TESTS_FAILED => 254 ; # Like Test::More API
|
||||
|
||||
LICENSE AND COPYRIGHT
|
||||
|
||||
Imapsync is free, open, public but not always gratis software cover by
|
||||
the NOLIMIT Public License, now called NLPL. See the LICENSE file
|
||||
included in the distribution or just read this simple sentence as it IS
|
||||
the licence text:
|
||||
|
||||
"No limits to do anything with this work and this license."
|
||||
|
||||
In case it is not long enough, I repeat:
|
||||
|
||||
"No limits to do anything with this work and this license."
|
||||
|
||||
Look at https://imapsync.lamiral.info/LICENSE
|
||||
|
||||
AUTHOR
|
||||
|
||||
Gilles LAMIRAL <gilles@lamiral.info>
|
||||
|
||||
Good feedback is always welcome. Bad feedback is very often welcome.
|
||||
|
||||
Gilles LAMIRAL earns his living by writing, installing, configuring and
|
||||
teaching free, open and often gratis software. Imapsync used to be
|
||||
"always gratis" but now it is only "often gratis" because imapsync is
|
||||
sold by its author, a good way to maintain and support free open public
|
||||
software over decades.
|
||||
|
||||
BUGS AND LIMITATIONS
|
||||
|
||||
See https://imapsync.lamiral.info/FAQ.d/FAQ.Reporting_Bugs.txt
|
||||
|
||||
IMAP SERVERS supported
|
||||
|
||||
See https://imapsync.lamiral.info/S/imapservers.shtml
|
||||
|
||||
HUGE MIGRATION
|
||||
|
||||
If you have many mailboxes to migrate think about a little shell
|
||||
program. Write a file called file.txt (for example) containing users and
|
||||
passwords. The separator used in this example is ';'
|
||||
|
||||
The file.txt file contains:
|
||||
|
||||
user001_1;password001_1;user001_2;password001_2
|
||||
user002_1;password002_1;user002_2;password002_2
|
||||
user003_1;password003_1;user003_2;password003_2
|
||||
user004_1;password004_1;user004_2;password004_2
|
||||
user005_1;password005_1;user005_2;password005_2 ...
|
||||
|
||||
On Unix the shell program can be:
|
||||
|
||||
{ while IFS=';' read u1 p1 u2 p2; do
|
||||
imapsync --host1 imap.side1.org --user1 "$u1" --password1 "$p1" \
|
||||
--host2 imap.side2.org --user2 "$u2" --password2 "$p2" ...
|
||||
done ; } < file.txt
|
||||
|
||||
On Windows the batch program can be:
|
||||
|
||||
FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.txt) DO imapsync ^
|
||||
--host1 imap.side1.org --user1 %%G --password1 %%H ^
|
||||
--host2 imap.side2.org --user2 %%I --password2 %%J ...
|
||||
|
||||
The ... have to be replaced by nothing or any imapsync option. Welcome
|
||||
in shell or batch programming !
|
||||
|
||||
You will find already written scripts at
|
||||
https://imapsync.lamiral.info/examples/
|
||||
|
||||
INSTALL
|
||||
|
||||
Imapsync works under any Unix with Perl.
|
||||
|
||||
Imapsync works under most Windows (2000, XP, Vista, Seven, Eight, Ten
|
||||
and all Server releases 2000, 2003, 2008 and R2, 2012 and R2, 2016)
|
||||
as a standalone binary software called imapsync.exe,
|
||||
usually launched from a batch file in order to avoid always typing
|
||||
the options. There is also a 64bit binary called imapsync_64bit.exe
|
||||
|
||||
Imapsync works under OS X as a standalone binary
|
||||
software called imapsync_bin_Darwin
|
||||
|
||||
Purchase latest imapsync at
|
||||
https://imapsync.lamiral.info/
|
||||
|
||||
You'll receive a link to a compressed tarball called imapsync-x.xx.tgz
|
||||
where x.xx is the version number. Untar the tarball where
|
||||
you want (on Unix):
|
||||
|
||||
tar xzvf imapsync-x.xx.tgz
|
||||
|
||||
Go into the directory imapsync-x.xx and read the INSTALL file.
|
||||
As mentioned at https://imapsync.lamiral.info/#install
|
||||
the INSTALL file can also be found at
|
||||
https://imapsync.lamiral.info/INSTALL.d/INSTALL.ANY.txt
|
||||
It is now split in several files for each system
|
||||
https://imapsync.lamiral.info/INSTALL.d/
|
||||
|
||||
CONFIGURATION
|
||||
|
||||
There is no specific configuration file for imapsync, everything is
|
||||
specified by the command line parameters and the default behavior.
|
||||
|
||||
HACKING
|
||||
|
||||
Feel free to hack imapsync as the NOLIMIT license permits it.
|
||||
|
||||
SIMILAR SOFTWARE
|
||||
|
||||
See also https://imapsync.lamiral.info/S/external.shtml
|
||||
for a better up to date list.
|
||||
|
||||
Last updated and verified on Sun Dec 8, 2019.
|
||||
|
||||
imapsync: https://github.com/imapsync/imapsync (this is an imapsync copy, sometimes delayed, with --noreleasecheck by default since release 1.592, 2014/05/22)
|
||||
imap_tools: https://web.archive.org/web/20161228145952/http://www.athensfbc.com/imap_tools/. The imap_tools code is now at https://github.com/andrewnimmo/rick-sanders-imap-tools
|
||||
imaputils: https://github.com/mtsatsenko/imaputils (very old imap_tools fork)
|
||||
Doveadm-Sync: https://wiki2.dovecot.org/Tools/Doveadm/Sync ( Dovecot sync tool )
|
||||
davmail: http://davmail.sourceforge.net/
|
||||
offlineimap: http://offlineimap.org/
|
||||
mbsync: http://isync.sourceforge.net/
|
||||
mailsync: http://mailsync.sourceforge.net/
|
||||
mailutil: https://www.washington.edu/imap/ part of the UW IMAP toolkit. (well, seems abandoned now)
|
||||
imaprepl: https://bl0rg.net/software/ http://freecode.com/projects/imap-repl/
|
||||
imapcopy (Pascal): http://www.ardiehl.de/imapcopy/
|
||||
imapcopy (Java): https://code.google.com/archive/p/imapcopy/
|
||||
imapsize: http://www.broobles.com/imapsize/
|
||||
migrationtool: http://sourceforge.net/projects/migrationtool/
|
||||
imapmigrate: http://sourceforge.net/projects/cyrus-utils/
|
||||
larch: https://github.com/rgrove/larch (derived from wonko_imapsync, good at Gmail)
|
||||
wonko_imapsync: http://wonko.com/article/554 (superseded by larch)
|
||||
pop2imap: http://www.linux-france.org/prj/pop2imap/ (I wrote that too)
|
||||
exchange-away: http://exchange-away.sourceforge.net/
|
||||
SyncBackPro: http://www.2brightsparks.com/syncback/sbpro.html
|
||||
ImapSyncClient: https://github.com/ridaamirini/ImapSyncClient
|
||||
MailStore: https://www.mailstore.com/en/products/mailstore-home/
|
||||
mnIMAPSync: https://github.com/manusa/mnIMAPSync
|
||||
imap-upload: http://imap-upload.sourceforge.net/ (A tool for uploading a local mbox file to IMAP4 server)
|
||||
imapbackup: https://github.com/rcarmo/imapbackup (A Python script for incremental backups of IMAP mailboxes)
|
||||
BitRecover email-backup 99 USD, 299 USD https://www.bitrecover.com/email-backup/.
|
||||
ImportExportTools: https://addons.thunderbird.net/en-us/thunderbird/addon/importexporttools/ ImportExportTools for Mozilla Thunderbird by Paolo Kaosmos. ImportExportTools does not do IMAP.
|
||||
|
||||
HISTORY
|
||||
|
||||
I initially wrote imapsync in July 2001 because an enterprise, called
|
||||
BaSystemes, paid me to install a new imap server without losing huge old
|
||||
mailboxes located in a far away remote imap server, accessible by an
|
||||
often broken low-bandwidth ISDN link.
|
||||
|
||||
I had to verify every mailbox was well transferred, all folders, all
|
||||
messages, without wasting bandwidth or creating duplicates upon resyncs.
|
||||
The imapsync design was made with the beautiful rsync command in mind.
|
||||
|
||||
Imapsync started its life as a patch of the copy_folder.pl script. The
|
||||
script copy_folder.pl comes from the Mail-IMAPClient-2.1.3 perl module
|
||||
tarball source (more precisely in the examples/ directory of the
|
||||
Mail-IMAPClient tarball).
|
||||
|
||||
So many happened since then that I wonder if it remains any lines of the
|
||||
original copy_folder.pl in imapsync source code.
|
||||
|
||||
@ -1,206 +1,143 @@
|
||||
# $Id: README_Windows.txt,v 1.27 2022/04/05 19:45:21 gilles Exp gilles $
|
||||
# $Id: README_Windows.txt,v 1.18 2019/12/11 18:52:16 gilles Exp gilles $
|
||||
#
|
||||
# This is the README_Windows.txt file for imapsync
|
||||
# imapsync: IMAP syncing and migration tool.
|
||||
# imapsync : IMAP syncing and migration tool.
|
||||
|
||||
=====================
|
||||
Imapsync on Windows
|
||||
=====================
|
||||
|
||||
There are two ways to install and use imapsync on Windows systems: A) or B).
|
||||
There is two ways to install and use imapsync on Windows systems: A) or B).
|
||||
|
||||
Standard users should take the A) way, the simplest way.
|
||||
|
||||
Developers, or power users that want to build their own imapsync.exe
|
||||
Developers, or powerful users that want to build their own imapsync.exe
|
||||
or modify it, have to consider the B) way, the complex and powerful way.
|
||||
|
||||
|
||||
---------------
|
||||
A) Simplest way
|
||||
---------------
|
||||
|
||||
A.0) Preamble for visual users looking for a visual tool.
|
||||
|
||||
First, the visual thing I am talking about here is not the online
|
||||
visual interface I call /X that you might have seen and used at the
|
||||
URL https://imapsync.lamiral.info/X/
|
||||
|
||||
This /X visual interface is not yet available on Windows as a service
|
||||
that you can install and use in your system. I plan to make a visual
|
||||
tool available on Windows but, for now, I encountered technical
|
||||
issues.
|
||||
|
||||
So what visual thing am I talking about?
|
||||
|
||||
Imapsync itself is not a visual tool. The visual tool is Notepad or
|
||||
any text editor. Many pure visual users have succeeded in using
|
||||
imapsync to transfer their email accounts. As you can guess, only the
|
||||
ones that tried have succeeded, so don't give up before trying at
|
||||
least once. Another assumption is that visual users can read.
|
||||
|
||||
Let's go for some reading!
|
||||
Imapsync itself is not a visual tool. The visual tool is Notepad
|
||||
or any text editor. Many pure visual users have succeeded using imapsync
|
||||
to transfer their email accounts. Only the ones that tried have succeeded,
|
||||
so don't give up before trying once. Another assumption is that visual
|
||||
users can read. So let's go further.
|
||||
|
||||
A.1) Get imapsync.
|
||||
|
||||
Get imapsync at https://imapsync.lamiral.info/
|
||||
You'll then have access to a zip archive file named imapsync_2.200.zip
|
||||
where 2.200 is the imapsync release number.
|
||||
You'll then have access to a zip archive file named imapsync_1.xxx.zip
|
||||
where 1.xxx is the imapsync release number.
|
||||
|
||||
A.2) Extract the zip file in a folder where you will work with imapsync.
|
||||
|
||||
You can work on the Desktop since the zip file extraction creates
|
||||
a unique folder named imapsync_2.200/
|
||||
|
||||
Do not unzip the archive in what is called a "system" directory since
|
||||
you may encounter permission issues.
|
||||
|
||||
Two points to have in mind:
|
||||
* You don't need to be an Administrator to unzip the zip archive.
|
||||
* You don't need to be an Administrator to run imapsync.
|
||||
|
||||
In short, any user on your system can use imapsync.
|
||||
a unique folder named imapsync_1.xxx (where 1.xxx is the imapsync
|
||||
release number).
|
||||
|
||||
A.3) Check the folder
|
||||
|
||||
In the folder extracted and called imapsync_2.200, you see 7 files
|
||||
and 2 directories. Those files and directories may be presented in a
|
||||
different order than the following, the order is not important
|
||||
anyway. There are only two important files to get your mailbox
|
||||
transfer job started in a few minutes, the first two files of the
|
||||
following list:
|
||||
In the folder extracted imapsync_1.xxx you see 6 files and 2 directories:
|
||||
|
||||
* README_Windows.txt is the current file you are reading.
|
||||
* imapsync_example.bat is a simple batch file example that you will copy and edit.
|
||||
|
||||
* README.txt is the imapsync general document.
|
||||
* FAQ.d/* FAQs are a good read when something goes wrong.
|
||||
* imapsync_example.bat is a simple batch file example you will copy and edit.
|
||||
* sync_loop_windows.bat is a batch file example for syncing many accounts.
|
||||
* file.txt is an input file example for syncing many accounts.
|
||||
* imapsync.exe is the imapsync 64bit binary. You don't have to run it directly.
|
||||
* imapsync_32bit.exe is the imapsync 32bit binary. You don't have to run it directly.
|
||||
* Cook/ is the directory to build imapsync.exe from its source,
|
||||
for the B) way and expert users.
|
||||
for the B) way and expert users.
|
||||
|
||||
You can copy or rename the file imapsync_example.bat as you wish,
|
||||
as long as its extension remains ".bat", for example, mysync.bat
|
||||
as long as its extension remains ".bat", for example mysync.bat
|
||||
|
||||
On Windows systems, a file name ending with a .bat extension means
|
||||
"I'm a batch script". A batch script is a file containing commands,
|
||||
it's a program. Don't be afraid, a program can be very simple to
|
||||
modify and I hope imapsync_example.bat is one of them.
|
||||
On Windows systems .bat extension means "I am a batch script".
|
||||
A batch script is a file containing commands, it's a program.
|
||||
Don't be afraid, a program can be simple or at least simple to
|
||||
modify. Think it like a cook recipe.
|
||||
|
||||
The batch scripts have to stay in the same directory as imapsync.exe
|
||||
because of the way they call imapsync.exe. They use the string
|
||||
".\imapsync.exe", so let them be in the same directory.
|
||||
The batch scripts have to stay in the same directory than
|
||||
imapsync.exe because of the way they call imapsync.exe.
|
||||
They use ".\imapsync.exe", so let them be in the same directory.
|
||||
|
||||
You can change the path .\ to whatever you want if you understand
|
||||
what you are doing (you have to use a pathname from the script point
|
||||
of view).
|
||||
Or you can change the path .\ to whatever you want if you understand what
|
||||
you are doing (you have to use a pathname from the script point of view).
|
||||
|
||||
For the rest of this documentation, I assume you copied
|
||||
imapsync_example.bat to a file named mysync.bat
|
||||
For the rest of this documentation I assume you copied
|
||||
imapsync_example.bat to a file named imapsync_stuff.bat
|
||||
|
||||
If you don't know how to copy and rename a file then use
|
||||
imapsync_example.bat itself, it's ok. The original file is still in
|
||||
the zip file in case you want to restart from scratch.
|
||||
If you don't know how to copy and rename a file then
|
||||
use imapsync_example.bat itself.
|
||||
|
||||
A.4) Edit the batch file
|
||||
|
||||
This section describes how to edit the file mysync.bat and change
|
||||
it by replacing example values with your values.
|
||||
|
||||
To edit mysync.bat, you have to right-click on it and select "modify"
|
||||
Edit the file imapsync_stuff.bat and change the values with yours.
|
||||
In order to edit it you have do a right click on it and select "modify"
|
||||
in the list presented in the small window menu.
|
||||
|
||||
Notepad or Notepadd++ are very good editor candidates to modify the
|
||||
script. Notepad is already installed on any Windows system,
|
||||
Notepadd++ is not usually installed but if you have it, then use it.
|
||||
Notepad or Notepadd++ are very good editors to modify it.
|
||||
|
||||
Office Word or any powerful text processor is NOT good for that job.
|
||||
Text processors transform files in a special format that is wrong to
|
||||
make them stay a good batch file, so don't use them!
|
||||
Office Word or any powerful text processor are not good for that job.
|
||||
Text processors transform files in a special format that
|
||||
are wrong to make them stay a good batch file, so don't use them!
|
||||
|
||||
The documents FAQ.txt and FAQ.d/* contain many tips. They describe
|
||||
some special options that are sometimes needed by specific imap
|
||||
software servers like Exchange, Office365, or Gmail.
|
||||
|
||||
Those documents are also available online at
|
||||
Files FAQ.txt and FAQ.d/* contain many tips and special options sometimes
|
||||
needed by specific imap server softwares like Exchange or Gmail.
|
||||
Those files are also available online at
|
||||
https://imapsync.lamiral.info/FAQ.d/
|
||||
You don't have to look into them unless you encounter problems.
|
||||
|
||||
|
||||
A.5) Run the batch file
|
||||
|
||||
To run imapsync with your values just double-click on the batch file
|
||||
mysync.bat
|
||||
To run imapsync with your values just double-click on
|
||||
the batch file imapsync_stuff.bat
|
||||
|
||||
There is no need to have administrator privileges to run imapsync.
|
||||
|
||||
The run happens in a DOS window; usually, this window is black.
|
||||
The run happens in a DOS window.
|
||||
|
||||
If imapsync.exe returns immediately with the ERRORLEVEL -1, it may be
|
||||
because you have a Group Policy in place to prevent the execution of
|
||||
programs in the %TEMP% directory. Temporarily remove this restriction
|
||||
and imapsync will work as expected. Thanks to Walter H. for this
|
||||
input!
|
||||
A.6) Look the sync running.
|
||||
|
||||
Technically speaking, imapsync.exe is an embedded Perl script with
|
||||
also the Perl interpreter and many Perl modules, all glued together
|
||||
in an archive auto-extracted at run time. So it needs write-access to
|
||||
the temporary directory. The temporary directory name depends on the
|
||||
user but its value is in the variable %TEMP%. You can have the value
|
||||
by running the command ECHO %TEMP% in a DOS window. You can have a
|
||||
DOS window by launching the command cmd.exe
|
||||
|
||||
A.6) Look at the sync running.
|
||||
|
||||
You can abort the sync at any time with a quick double ctrl-c, hit
|
||||
ctrl-c twice within one second.
|
||||
|
||||
You can abort it at any time with a quick double ctrl-c,
|
||||
hit ctrl-c twice within one second.
|
||||
A single ctrl-c will reconnect to both imap servers.
|
||||
|
||||
You can also simply abort the sync by closing the DOS window, using
|
||||
the cross situated at the up-right corner.
|
||||
You can also abort the sync by closing the DOS window.
|
||||
|
||||
What you see in this DOS terminal is also put in a logfile located
|
||||
in the subdirectory LOG_imapsync/
|
||||
|
||||
A.7) Control what happened.
|
||||
|
||||
When the sync is finished you can find the whole log file of the
|
||||
output in the folder named "LOG_imapsync/".
|
||||
|
||||
The logfile name is based on the launching date, hour, minute,
|
||||
second, milliseconds, plus the user1 and user2 parameters.
|
||||
|
||||
For example, a file name can be
|
||||
When the sync is finished you can find the whole log file
|
||||
of the output in the folder named "LOG_imapsync".
|
||||
the logfile name is based on the launching date,
|
||||
hour, minute, second, milliseconds plus the user1 and user2 parameters.
|
||||
For example a file name can be
|
||||
LOG_imapsync\2019_11_29_14_49_36_514_tata_titi.txt
|
||||
|
||||
There is one log file created for each run. The log file name is
|
||||
printed both at the beginning and the end of the imapsync run.
|
||||
There is one logfile created at each run.
|
||||
The logfile name is printed at the end of the imapsync run.
|
||||
|
||||
IMPORTANT: When there is a problem, the problem is very often
|
||||
described at the end of the log file. It means you don't have to read
|
||||
all this bloody ununderstandable verbose logfile, just read the end
|
||||
first.
|
||||
When there is a problem, the problem is very often described
|
||||
at the end of the logfile.
|
||||
|
||||
|
||||
A.8) Loop on A.4 through A.7
|
||||
|
||||
* A.4) edit the batch file
|
||||
* A.5) run the batch file
|
||||
* A.6) look at the run and the log file
|
||||
* A.7) control what happened.
|
||||
* A.4) edit
|
||||
* A.5) run
|
||||
* A.6) look
|
||||
* A.7) control
|
||||
|
||||
Loop on the process of editing, running and controlling imapsync
|
||||
until you solve all issues and the sync is over.
|
||||
|
||||
A good sign that the sync went very well is when the nearly last lines are like:
|
||||
|
||||
" The sync looks good, all 123456 identified messages in host1 are on host2.
|
||||
" There is no unidentified message
|
||||
" Detected 0 errors
|
||||
|
||||
Congratulations!
|
||||
Congratulations!
|
||||
|
||||
|
||||
------------
|
||||
@ -213,13 +150,14 @@ This is the way for modifying imapsync.exe if needed.
|
||||
B.1) Install Perl if it isn't already installed.
|
||||
Strawberry Perl is a very good candidate
|
||||
http://strawberryperl.com/
|
||||
I use 5.32.1.1 (released 2021-01-24) but previous and later releases
|
||||
should work as well (Perl 5.18 to 5.30 do).
|
||||
I use 5.30.1.1 (released 2019-11-22) but previous and later releases
|
||||
should work as well (Perl 5.18 to 5.26 do).
|
||||
|
||||
B.2) Go into the Cook/ directory
|
||||
B.3) Double-click build_exe.bat
|
||||
B.3) Double-clic build_exe.bat
|
||||
|
||||
It should create a binary imapsync.exe in the current Cook/ directory.
|
||||
|
||||
B.4) Move imapsync.exe in the upper directory and follow instructions
|
||||
from A.3) to A.8)
|
||||
|
||||
|
||||
@ -1,13 +0,0 @@
|
||||
|
||||
|
||||
/* Google Code for Achat imapsync Conversion Page */
|
||||
|
||||
var google_conversion_id = 992916412;
|
||||
var google_conversion_language = "en";
|
||||
var google_conversion_format = "2";
|
||||
var google_conversion_color = "ffffff";
|
||||
var google_conversion_label = "hVVWCKzApQIQvOe62QM";
|
||||
var google_conversion_value = "USD 1.00";
|
||||
var google_conversion_currency = "USD";
|
||||
var google_remarketing_only = false;
|
||||
|
||||
@ -31,14 +31,7 @@
|
||||
<body>
|
||||
<h1>Imapsync donation</h1>
|
||||
|
||||
|
||||
<p>Help the imapsync author, Gilles LAMIRAL, to maintain imapsync and its online services!</p>
|
||||
|
||||
<div id="right-tronche">
|
||||
<img width="300" height="300" src="S/images/gilles_lamiral_400x400.jpeg" alt="Gilles LAMIRAL" />
|
||||
</div>
|
||||
|
||||
|
||||
<p>Help the author to maintain imapsync and its online services:</p>
|
||||
|
||||
<h2>Donate via Paypal</h2>
|
||||
|
||||
@ -53,12 +46,6 @@ value="-----BEGIN PKCS7-----MIIHRwYJKoZIhvcNAQcEoIIHODCCBzQCAQExggEwMIIBLAIBADCB
|
||||
</p>
|
||||
</form>
|
||||
|
||||
<h2>Donate via Github</h2>
|
||||
|
||||
<p>
|
||||
<a href="https://github.com/sponsors/gilleslamiral">Become a Github sponsor to Gilles LAMIRAL</a>
|
||||
</p>
|
||||
|
||||
<h2>Donate with Crypto</h2>
|
||||
<p>
|
||||
This donate button will ask your email address and your name but don't hesitate
|
||||
@ -74,9 +61,7 @@ to give fake ones, like "Smith" and smith@example.com if you prefer to be anonym
|
||||
</div>
|
||||
|
||||
|
||||
<p>Thanks!<br />
|
||||
And remember, <b>no money donation is ok!</b><br />
|
||||
Kind words are always sweets to me</p>
|
||||
<p>Thanks in advance!</p>
|
||||
|
||||
<hr />
|
||||
<p>
|
||||
@ -98,7 +83,7 @@ Kind words are always sweets to me</p>
|
||||
<!--#config timefmt="%D" -->
|
||||
<!--#config timefmt="%A %B %d, %Y" -->
|
||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||
($Id: donate.shtml,v 1.20 2021/01/01 22:38:02 gilles Exp gilles $)
|
||||
($Id: donate.shtml,v 1.16 2019/07/31 22:49:12 gilles Exp gilles $)
|
||||
</p>
|
||||
|
||||
</body>
|
||||
|
||||
@ -26,23 +26,18 @@
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Imapsync similar software tools <a id="similar" href="../#TOP"><small>(back to menu)</small></a>
|
||||
<h1>Similar software tools <a id="similar" href="../#TOP"><small>(back to menu)</small></a>
|
||||
</h1>
|
||||
|
||||
<p>Here is a list of Imapsync alternative tools, list verified on Friday July 1, 2021:
|
||||
</p>
|
||||
|
||||
<ol>
|
||||
<li> <b>imapsync</b>: <a href="https://github.com/imapsync/imapsync">https://github.com/imapsync/imapsync</a> (this is an imapsync copy, sometimes delayed, with --noreleasecheck by default since release 1.592, 2014/05/22)</li>
|
||||
<li> imap_tools: <a href="https://web.archive.org/web/20161228145952/http://www.athensfbc.com/imap_tools/">https://web.archive.org/web/20161228145952/http://www.athensfbc.com/imap_tools/</a>.
|
||||
The imap_tools code is now at <a href="https://github.com/andrewnimmo/rick-sanders-imap-tools">https://github.com/andrewnimmo/rick-sanders-imap-tools</a></li>
|
||||
<li> imaputils: <a href="https://github.com/mtsatsenko/imaputils">https://github.com/mtsatsenko/imaputils</a> (very old imap_tools fork)</li>
|
||||
<li> Doveadm-Sync: <a href="https://wiki2.dovecot.org/Tools/Doveadm/Sync/">https://wiki2.dovecot.org/Tools/Doveadm/Sync</a> ( Dovecot sync tool )</li>
|
||||
<li> Doveadm-Sync: <a href="https://wiki2.dovecot.org/Tools/Doveadm/Sync">https://wiki2.dovecot.org/Tools/Doveadm/Sync</a> ( Dovecot sync tool )</li>
|
||||
<li> davmail: <a href="http://davmail.sourceforge.net/">http://davmail.sourceforge.net/</a></li>
|
||||
<li> <b>offlineimap</b>: <a href="http://offlineimap.org/">http://offlineimap.org/</a></li>
|
||||
|
||||
<li> fdm: <a href="https://github.com/nicm/fdm">https://github.com/nicm/fdm</a></li>
|
||||
|
||||
<li> <b>mbsync</b>: <a href="http://isync.sourceforge.net/">http://isync.sourceforge.net/</a></li>
|
||||
<li> mailsync: <a href="http://mailsync.sourceforge.net/">http://mailsync.sourceforge.net/</a></li>
|
||||
<li> mailutil: <a href="https://web.archive.org/web/20191028114408/http://www.washington.edu/imap/">https://www.washington.edu/imap/</a>
|
||||
@ -57,7 +52,7 @@
|
||||
<li> imapmigrate: <a href="http://sourceforge.net/projects/cyrus-utils/">http://sourceforge.net/projects/cyrus-utils/</a></li>
|
||||
<li> larch: <a href="https://github.com/rgrove/larch">https://github.com/rgrove/larch</a> (derived from wonko_imapsync, good at Gmail)</li>
|
||||
<li> wonko_imapsync: <a href="http://web.archive.org/web/20130807173030/http://wonko.com/post/ruby_script_to_sync_email_from_any_imap_server_to_gmail">http://wonko.com/article/554</a> (superseded by larch)</li>
|
||||
<li> pop2imap: <a href="https://pop2imap.lamiral.info/">https://pop2imap.lamiral.info/</a> (I wrote that too)</li>
|
||||
<li> pop2imap: <a href="http://www.linux-france.org/prj/pop2imap/">http://www.linux-france.org/prj/pop2imap/</a> (I wrote that too)</li>
|
||||
<li> exchange-away: <a href="http://exchange-away.sourceforge.net/">http://exchange-away.sourceforge.net/</a></li>
|
||||
<li> SyncBackPro: <a href="http://www.2brightsparks.com/syncback/sbpro.html">http://www.2brightsparks.com/syncback/sbpro.html</a></li>
|
||||
|
||||
@ -65,98 +60,45 @@
|
||||
<li> MailStore: <a href="https://www.mailstore.com/en/products/mailstore-home/">https://www.mailstore.com/en/products/mailstore-home/</a></li>
|
||||
<li> mnIMAPSync: <a href="https://github.com/manusa/mnIMAPSync">https://github.com/manusa/mnIMAPSync</a></li>
|
||||
<li> imap-upload: <a href="http://imap-upload.sourceforge.net/">http://imap-upload.sourceforge.net/</a>
|
||||
(A tool to upload a local mbox file to IMAP4 server)</li>
|
||||
(A tool for uploading a local mbox file to IMAP4 server)</li>
|
||||
<li> imapbackup: <a href="https://github.com/rcarmo/imapbackup">https://github.com/rcarmo/imapbackup</a>
|
||||
(A Python script to incremental backups of IMAP mailboxes)</li>
|
||||
|
||||
<li> imap-backup: <a href="https://github.com/joeyates/imap-backup">https://github.com/joeyates/imap-backup</a>
|
||||
(A Ruby script to backup GMail (or other IMAP) accounts to disk)</li>
|
||||
|
||||
(A Python script for incremental backups of IMAP mailboxes)</li>
|
||||
|
||||
<li> BitRecover email-backup <b>99 USD, 299 USD</b> <a href="https://www.bitrecover.com/email-backup/">https://www.bitrecover.com/email-backup/</a>.</li>
|
||||
|
||||
<li> ImportExportTools: <a href="https://addons.thunderbird.net/en-us/thunderbird/addon/importexporttools/">https://addons.thunderbird.net/en-us/thunderbird/addon/importexporttools/</a>
|
||||
ImportExportTools for Mozilla Thunderbird by Paolo Kaosmos. ImportExportTools does not do IMAP.
|
||||
</li>
|
||||
|
||||
<li> rximapmail: <a href="https://sourceforge.net/projects/rximapmail/">https://sourceforge.net/projects/rximapmail/</a></li>
|
||||
|
||||
<li> CodeTwo: <a href="https://www.codetwo.com/">https://www.codetwo.com/</a> but CodeTwo does
|
||||
<a href="https://www.codetwo.com/userguide/office-365-migration/imap-source.htm"> imap source to Office365 </a> only.</li>
|
||||
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
|
||||
<h1>External online IMAP migration services <a id="ONLINE_OTHERS" href="../#TOP"><small>(back to menu)</small></a>
|
||||
</h1>
|
||||
|
||||
<p>These services are similar to the
|
||||
<a href="https://imapsync.lamiral.info/X/" title="Free online service under 3 GB">imapsync <b>online service</b></a>
|
||||
I call /X. Some are an exact copy of /X, some are not, some use Imapsync, some don't.<br/>
|
||||
<p>I have no share in these free or paid services.
|
||||
Some use Imapsync, most don't.
|
||||
Prices are given par mailbox and may be outdated
|
||||
(Last checked on Thu Apr 11, 2019).</p>
|
||||
|
||||
I have no share in these free or paid services.
|
||||
Prices are given par mailbox and may be outdated (Last checked on Saturday 19 February 2022).
|
||||
</p>
|
||||
|
||||
<h2>Imapsync based</h2>
|
||||
|
||||
<!--
|
||||
From https://lamiral.info/dokuwiki/doku.php?id=imapsync&#online_ui_x_copies
|
||||
|
||||
|
||||
# * 1.810 https://tools.controlpanel.si/imapsync/ CGI https://tools.controlpanel.si/cgi-bin/imapsync
|
||||
# * 1.882 https://tools.intertune.io/imapsync/X/ CGI https://tools.intertune.io/cgi-bin/imapsync
|
||||
# * 1.882 https://imapsync.whc.ca/ CGI https://imapsync.whc.ca/cgi-bin/imapsync
|
||||
# * 1.925 https://imapsync.boomhost.com/ CGI https://imapsync.boomhost.com/cgi-bin/imapsync
|
||||
# * 1.977 https://imapcopy.webhosting4u.gr/ CGI https://imapcopy.webhosting4u.gr/cgi-bin/imapsync
|
||||
# * 1.991 https://imapsync.nl/ CGI https://imapsync.nl/cgi-bin/imapsync
|
||||
# * 1.998 https://mailsync.timetakernet.info/ CGI https://mailsync.timetakernet.info/cgi-bin/imapsync
|
||||
# * 1.998 https://imapsync.keurigonline.nl/ CGI https://imapsync.keurigonline.nl/cgi-bin/imapsync
|
||||
#
|
||||
# * ?.??? https://app.migrationwizard.co.uk/ CGI 404, deep into https://app.migrationwizard.co.uk/sync.php
|
||||
-->
|
||||
|
||||
<p>1.945 and upper use --useheader "Message-Id" as default in CGI mode and
|
||||
this is a better choice to avoid duplicates with some imap servers.
|
||||
</p>
|
||||
|
||||
<ol>
|
||||
<li> NameHero <b>0 USD</b>: <a href="https://imapsync.net/">https://imapsync.net/</a> (imapsync 2.140)</li>
|
||||
<li> Slovenia Control Panel <b>0 USD</b>: <a href="https://tools.controlpanel.si/imapsync/">https://tools.controlpanel.si/imapsync/</a> (imapsync 1.810)</li>
|
||||
<li> Intertune Cloud <b>0 USD</b>: <a href="https://tools.intertune.io/imapsync/X/" >https://tools.intertune.io/imapsync/X/</a> (imapsync 1.882)</li>
|
||||
<li> Web Hosting Canada <b>0 USD</b>: <a href="https://imapsync.whc.ca/" >https://imapsync.whc.ca/</a> (imapsync 1.882)</li>
|
||||
<li> BoomHost <b>0 USD</b>: <a href="https://imapsync.boomhost.com/" >https://imapsync.boomhost.com/</a> (imapsync 1.925)</li>
|
||||
<li> WebHosting|4u (greek) <b>0 USD</b>: <a href="https://imapcopy.webhosting4u.gr/" >https://imapcopy.webhosting4u.gr/</a> (imapsync 2.178)</li>
|
||||
<li> Vimexx <b>0 USD</b>: <a href="https://imapsync.nl/" >https://imapsync.nl/</a> (imapsync 1.991)</li>
|
||||
<li> KeurigOnline <b>0 USD</b>: <a href="https://imapsync.keurigonline.nl/" >https://imapsync.keurigonline.nl/</a> (imapsync 1.998)</li>
|
||||
</ol>
|
||||
<li> Web Hosting Canada <b>0 USD</b>: <a href="https://imapsync.whc.ca/">https://imapsync.whc.ca/</a> (imapsync based)</li>
|
||||
<li> BoomHost <b>0 USD</b>: <a href="https://imapsync.boomhost.com/">https://imapsync.boomhost.com/</a> (imapsync based)</li>
|
||||
<li> <a href="https://tools.controlpanel.si/imapsync/">https://tools.controlpanel.si/imapsync/</a> (imapsync based)</li>
|
||||
<li> <a href="https://www.cadeolink.com.br/">https://www.cadeolink.com.br/</a> (imapsync based)</li>
|
||||
|
||||
<h2>Not Imapsync based</h2>
|
||||
<ol>
|
||||
<li> Ovh migration <b>0 EUR</b>: <a href="https://omm.ovh.net/Migration/Create">https://omm.ovh.net/Migration/Create</a></li>
|
||||
<li> Rackspace migration <b>0 USD</b>: <a href="http://www.rackspace.com/email-hosting/migrations">http://www.rackspace.com/email-hosting/migrations</a></li>
|
||||
<li> Movemymail one free, <a href="https://movemymail.net/faq.php">5 USD</a> after: <a href="https://movemymail.net">https://movemymail.net/</a></li>
|
||||
<li> TransferMyEmail <a href="https://transfermyemail.ca/shop/">1.50 USD</a> for a day pass: <a href="https://transfermyemail.ca/">https://transfermyemail.ca/</a></li>
|
||||
<li> Migrationwiz <a href="https://www.bittitan.com/pricing/">12 USD</a>: <a href="https://www.bittitan.com/products/migrationwiz/">https://www.bittitan.com/products/migrationwiz/</a> </li>
|
||||
<li> Audriga <a href="https://www.audriga.com/en/Self-service_migration/Pricing">11.90 EUR</a>: <a href="https://www.audriga.com/">https://www.audriga.com/</a></li>
|
||||
<li> Movemymail one free, 5 USD after: <a href="https://movemymail.net">https://movemymail.net/</a></li>
|
||||
<li> TransferMyEmail 1.50 USD for a day pass: <a href="https://transfermyemail.ca/">https://transfermyemail.ca/</a></li>
|
||||
<li> Migrationwiz 11.99 USD: <a href="https://www.bittitan.com/products/migrationwiz/">https://www.bittitan.com/products/migrationwiz/</a> </li>
|
||||
<li> Audriga 11.90 EUR: <a href="https://www.groupware-migration.com/">https://www.groupware-migration.com/</a></li>
|
||||
<li> <del>Yippiemove 14.95 USD</del> (discontinued on April 2019): <a href="http://www.yippiemove.com">http://www.yippiemove.com/</a>
|
||||
( See <a href="https://web.archive.org/web/20161027124328/https://www.yippiemove.com/help/faq_generic.html#imapsync">Yippiemove vs ImapSync</a> )</li>
|
||||
<li> ShuttleCloud one free, 19.95 USD after <a href="https://www.shuttlecloud.com/">https://www.shuttlecloud.com/</a></li>
|
||||
<li> Cloudasta ??? USD: <a href="https://cloudasta.com/">https://cloudasta.com/</a></li>
|
||||
|
||||
</ol>
|
||||
|
||||
<h2>Imap to files services</h2>
|
||||
|
||||
<p>
|
||||
This services allow you to backup/archive your imap email account to a zip file.
|
||||
The most common and useful format to restore an imap account is the <b>Maildir</b> format.
|
||||
</p>
|
||||
|
||||
<ol>
|
||||
<li>PowerMail Backup (French language)
|
||||
<a href="https://www.powermail.fr/sauvegarder-une-boite-mail/">https://www.powermail.fr/sauvegarder-une-boite-mail/</a>.
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<hr/>
|
||||
<div>
|
||||
@ -184,7 +126,7 @@ alt="Viewable With Any Browser" />
|
||||
<!--#config timefmt="%D" -->
|
||||
<!--#config timefmt="%A %B %d, %Y" -->
|
||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||
($Id: external.shtml,v 1.61 2022/02/19 20:26:25 gilles Exp gilles $)<br/>
|
||||
($Id: external.shtml,v 1.45 2019/12/23 12:38:41 gilles Exp gilles $)<br/>
|
||||
<a href="#TOP">Top of the page</a>
|
||||
</p>
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 54 KiB |
@ -1,53 +0,0 @@
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="486px" height="309px" viewBox="0 0 4860 3090" preserveAspectRatio="xMidYMid meet">
|
||||
<g id="layer101" fill="#010102" stroke="none">
|
||||
<path d="M2818 3085 c-2 -2 -597 -58 -1323 -126 -726 -67 -1321 -123 -1322 -124 -2 -1 -3 -235 -3 -520 l-1 -518 588 -234 c323 -128 598 -238 610 -245 17 -8 26 -8 38 2 8 7 18 10 22 7 3 -4 -45 -153 -107 -332 -62 -179 -111 -327 -109 -329 2 -2 14 -6 26 -10 18 -6 23 -1 33 30 l12 36 18 -51 c21 -62 42 -80 93 -81 128 -1 277 338 225 512 -23 77 -98 102 -157 52 -17 -14 -31 -22 -31 -17 0 13 67 210 77 225 5 8 10 -10 13 -47 l5 -60 338 -133 337 -134 0 -36 c0 -31 -29 -80 -164 -287 -90 -137 -161 -253 -157 -256 3 -4 15 -9 26 -13 17 -5 38 23 145 190 68 108 126 192 128 186 1 -5 -6 -99 -18 -208 -26 -254 -26 -260 2 -267 12 -4 23 -5 24 -4 1 1 16 151 34 332 18 182 34 332 36 334 2 2 207 -76 455 -174 314 -125 454 -176 464 -169 7 5 389 360 848 789 l835 780 1 378 1 377 -22 0 c-13 0 -241 16 -507 35 -267 19 -487 33 -489 30 -3 -3 -11 0 -18 6 -15 12 -995 85 -1006 74z m-1274 -1991 c73 -72 -23 -384 -131 -425 -60 -23 -100 40 -88 138 13 103 75 246 123 284 30 23 75 25 96 3z"/>
|
||||
<path d="M270 1657 c0 -2 -43 -127 -95 -277 -96 -275 -100 -295 -56 -287 8 1 51 110 107 272 51 148 92 270 91 271 -11 8 -47 24 -47 21z"/>
|
||||
<path d="M341 1318 c-89 -257 -93 -272 -76 -285 27 -19 31 -17 45 30 l13 42 12 -50 c26 -99 97 -123 164 -56 l39 39 7 -51 c9 -65 47 -107 97 -107 39 0 76 30 112 93 32 55 158 416 152 434 -3 7 -14 13 -24 13 -16 0 -30 -30 -77 -166 -72 -209 -78 -225 -111 -263 -31 -37 -72 -41 -100 -10 -15 17 -19 35 -18 88 1 53 12 98 56 226 31 88 59 168 63 177 5 13 1 20 -16 27 -16 6 -26 5 -30 -3 -4 -6 -32 -85 -64 -176 -64 -186 -96 -255 -124 -270 -58 -30 -101 12 -101 99 0 43 14 98 62 239 54 156 61 184 48 192 -8 5 -19 10 -25 10 -5 0 -52 -122 -104 -272z"/>
|
||||
<path d="M1026 1329 c-34 -27 -70 -98 -85 -168 -21 -98 15 -160 114 -199 58 -23 62 -43 20 -98 -45 -59 -104 -56 -171 8 l-32 30 -11 -32 c-13 -38 -4 -60 39 -90 68 -49 126 -46 183 8 41 39 67 94 137 296 50 144 60 180 49 187 -26 16 -37 9 -50 -28 -7 -22 -14 -31 -16 -23 -18 66 -38 102 -63 115 -40 21 -83 19 -114 -6z m109 -76 c35 -35 43 -86 25 -170 -17 -77 -20 -79 -76 -58 -67 25 -94 55 -94 102 0 46 31 117 57 132 27 16 69 13 88 -6z"/>
|
||||
<path d="M1768 1063 c-14 -4 -38 -49 -38 -73 0 -4 22 -5 50 -2 97 9 151 -40 130 -118 -14 -53 -43 -70 -136 -79 -73 -7 -79 -9 -109 -44 -53 -61 -71 -166 -40 -226 18 -35 88 -71 139 -71 33 0 39 4 52 35 19 47 19 48 -21 41 -49 -10 -122 23 -131 58 -8 33 1 67 25 97 15 19 32 24 96 30 95 9 120 25 158 100 48 92 28 187 -49 230 -30 17 -96 28 -126 22z"/>
|
||||
<path d="M29 963 c-23 -60 -23 -81 1 -88 12 -4 23 -5 24 -3 5 6 36 101 33 103 -1 2 -12 6 -24 9 -19 6 -25 2 -34 -21z"/>
|
||||
<path d="M2362 538 c-88 -255 -93 -273 -76 -285 26 -19 30 -17 44 30 l13 42 13 -50 c16 -60 52 -95 98 -95 76 0 113 59 206 327 69 197 72 218 31 210 -8 -1 -32 -55 -57 -127 -87 -248 -96 -271 -124 -300 -35 -37 -72 -39 -105 -5 -43 42 -35 108 38 322 53 157 60 185 47 193 -8 5 -19 10 -25 10 -5 0 -52 -123 -103 -272z"/>
|
||||
<path d="M2864 610 c-110 -70 -205 -345 -163 -471 22 -65 82 -109 148 -109 31 0 61 30 61 61 0 14 -9 17 -43 16 -51 -2 -93 22 -108 61 -38 96 48 334 134 376 45 21 78 13 117 -25 15 -16 31 -29 33 -29 3 0 10 14 16 32 10 28 8 34 -11 56 -51 54 -128 68 -184 32z"/>
|
||||
</g>
|
||||
<g id="layer102" fill="#373749" stroke="none">
|
||||
<path d="M200 2312 l0 -500 568 -225 c312 -125 575 -229 585 -233 16 -6 17 12 15 326 l-3 331 -105 40 c-57 22 -156 64 -219 95 -63 30 -121 52 -129 49 -8 -3 -25 2 -38 10 -34 22 -33 71 2 87 29 14 53 3 68 -29 15 -32 205 -126 374 -184 l52 -18 0 277 0 277 -562 93 c-310 52 -573 96 -585 99 l-23 5 0 -500z m600 108 c0 -5 -20 -10 -45 -10 l-45 0 0 -151 0 -151 -24 6 c-42 10 -119 46 -113 52 3 4 21 1 38 -5 18 -6 37 -7 41 -3 5 5 7 62 6 128 l-3 119 -43 3 c-23 2 -40 7 -37 13 8 12 225 12 225 -1z m-338 -382 c83 -28 123 -45 115 -51 -7 -5 0 -6 18 -3 23 5 27 4 15 -5 -12 -8 -10 -9 11 -5 17 4 99 -19 245 -68 120 -41 214 -75 207 -75 -6 -1 -20 -4 -30 -7 -15 -5 -16 -4 -3 6 12 9 9 10 -15 6 -23 -5 -27 -4 -15 5 12 8 8 9 -15 5 -23 -5 -27 -4 -15 5 12 8 8 9 -15 5 -23 -5 -27 -4 -15 5 12 8 8 9 -15 5 -23 -5 -27 -4 -15 5 12 8 8 9 -15 5 -23 -5 -27 -4 -15 5 12 8 8 9 -15 5 -23 -5 -27 -4 -15 5 12 8 8 9 -15 5 -23 -5 -27 -4 -15 5 12 8 8 9 -15 5 -23 -5 -27 -4 -15 5 12 8 10 9 -11 5 -17 -4 -100 19 -250 69 -123 41 -227 75 -232 75 -4 0 -7 -28 -5 -61 l3 -62 113 -40 c62 -22 111 -41 109 -44 -2 -2 -56 15 -120 38 l-117 42 0 67 c0 37 3 70 7 73 12 13 36 7 165 -35z m156 -213 c29 -9 52 -19 49 -21 -5 -5 -127 36 -127 43 0 3 6 3 13 1 6 -3 36 -13 65 -23z m557 -18 l60 -22 3 -82 c3 -75 1 -82 -18 -88 -19 -6 -156 32 -147 41 2 2 30 -5 62 -16 32 -11 60 -20 62 -20 1 0 3 33 3 74 0 72 -1 75 -27 84 -23 9 -24 11 -8 12 12 1 -1 9 -30 20 -27 10 -43 19 -35 19 8 0 42 -10 75 -22z m-417 -32 c29 -9 52 -19 49 -21 -5 -5 -127 36 -127 43 0 3 6 3 13 1 6 -3 36 -13 65 -23z m137 -51 c24 -11 25 -13 5 -8 -14 4 -38 13 -55 20 -24 11 -25 13 -5 8 14 -4 39 -13 55 -20z m113 -39 c29 -9 52 -19 49 -21 -5 -5 -127 36 -127 43 0 3 6 3 13 1 6 -3 36 -13 65 -23z"/>
|
||||
<path d="M694 1944 c39 -13 75 -24 80 -23 6 0 -20 11 -58 25 -39 13 -75 24 -80 23 -6 0 20 -11 58 -25z"/>
|
||||
<path d="M1550 2297 l0 -286 38 -10 c20 -5 84 -19 142 -31 58 -12 116 -23 129 -26 23 -5 24 -3 19 41 -3 25 -3 45 1 43 31 -14 252 -141 256 -147 2 -5 -62 -21 -143 -36 -81 -15 -151 -30 -156 -33 -6 -3 0 10 12 30 12 19 22 39 22 44 0 5 -66 22 -147 37 -80 16 -152 31 -160 34 -11 4 -13 -52 -11 -338 l3 -344 320 -126 c261 -104 321 -124 324 -111 3 15 -26 46 -51 54 -9 3 -9 13 2 39 7 19 14 35 16 37 1 2 18 -3 37 -12 45 -18 57 -41 57 -108 l0 -53 423 -167 c232 -92 430 -170 440 -174 16 -6 17 38 17 827 l0 834 -768 128 c-422 71 -779 131 -794 134 l-28 5 0 -285z m1008 -269 c3 -16 -10 -18 -130 -20 l-133 -3 105 -70 c117 -79 142 -107 142 -159 0 -43 -15 -64 -59 -83 -33 -13 -178 -18 -207 -7 -22 8 -22 74 -1 74 8 0 15 -9 15 -20 0 -28 43 -43 104 -37 58 5 76 24 76 77 0 55 -34 96 -137 168 -64 43 -93 70 -93 83 0 19 7 19 157 17 140 -3 158 -5 161 -20z m-773 -409 c28 -10 45 -18 39 -18 -6 -1 -37 8 -69 19 -67 23 -65 23 -65 12 0 -5 27 -17 60 -27 33 -10 58 -20 56 -23 -4 -3 -68 15 -123 36 -10 3 -13 -13 -13 -61 l0 -65 51 -17 c28 -9 49 -19 47 -21 -2 -2 -27 4 -56 13 l-52 17 0 72 c0 59 3 75 18 83 18 11 26 9 107 -20z m265 -84 c19 -7 28 -13 20 -13 -8 0 -31 6 -50 13 -19 7 -28 13 -20 13 8 0 31 -6 50 -13z m-165 -121 c24 -11 25 -13 5 -8 -14 4 -38 13 -55 20 -24 11 -25 13 -5 8 14 -4 39 -13 55 -20z"/>
|
||||
</g>
|
||||
<g id="layer103" fill="#60607b" stroke="none">
|
||||
<path d="M200 2312 l0 -500 568 -225 c312 -125 575 -229 585 -233 16 -6 17 12 15 326 l-3 331 -105 40 c-57 22 -156 64 -219 95 -63 30 -121 52 -129 49 -8 -3 -25 2 -38 10 -34 22 -33 71 2 87 29 14 53 3 68 -29 15 -32 205 -126 374 -184 l52 -18 0 277 0 277 -562 93 c-310 52 -573 96 -585 99 l-23 5 0 -500z m600 108 c0 -5 -20 -10 -45 -10 l-45 0 0 -151 0 -151 -24 6 c-42 10 -119 46 -113 52 3 4 21 1 38 -5 18 -6 37 -7 41 -3 5 5 7 62 6 128 l-3 119 -42 3 c-24 2 -43 7 -43 13 0 5 50 9 115 9 70 0 115 -4 115 -10z m-8 -487 l449 -147 -3 -86 c-3 -80 -4 -85 -26 -88 -16 -3 -716 240 -904 313 -15 6 -18 20 -18 81 0 73 0 74 26 74 15 0 229 -66 476 -147z"/>
|
||||
<path d="M300 2001 c0 -46 4 -60 17 -65 9 -4 206 -75 437 -158 232 -83 427 -153 434 -156 10 -3 12 12 10 69 l-3 74 -440 147 c-242 81 -443 148 -447 148 -5 0 -8 -27 -8 -59z"/>
|
||||
<path d="M1210 1694 c0 -47 4 -73 10 -69 6 3 10 37 10 76 0 39 -4 69 -10 69 -6 0 -10 -32 -10 -76z"/>
|
||||
<path d="M1550 2297 l0 -286 38 -10 c20 -5 84 -19 142 -31 58 -12 116 -23 129 -26 23 -5 24 -3 19 41 -3 25 -3 45 1 43 31 -14 252 -141 256 -147 2 -5 -62 -21 -143 -36 -81 -15 -151 -30 -156 -33 -6 -3 0 10 12 30 12 19 22 39 22 44 0 5 -66 22 -147 37 -80 16 -152 31 -160 34 -11 4 -13 -52 -11 -338 l3 -344 320 -126 c261 -104 321 -124 324 -111 3 15 -26 46 -51 54 -9 3 -9 13 2 39 7 19 14 35 16 37 1 2 18 -3 37 -12 45 -18 57 -41 57 -108 l0 -53 423 -167 c232 -92 430 -170 440 -174 16 -6 17 38 17 827 l0 834 -768 128 c-422 71 -779 131 -794 134 l-28 5 0 -285z m1008 -269 c3 -16 -10 -18 -130 -20 l-133 -3 105 -70 c117 -79 142 -107 142 -159 0 -43 -15 -64 -59 -83 -33 -13 -178 -18 -207 -7 -22 8 -22 74 -1 74 8 0 15 -9 15 -20 0 -28 43 -43 104 -37 58 5 76 24 76 77 0 55 -34 96 -137 168 -64 43 -93 70 -93 83 0 19 7 19 157 17 140 -3 158 -5 161 -20z m-437 -515 c230 -75 417 -138 415 -140 -2 -3 -187 55 -410 126 -224 72 -414 131 -424 131 -9 0 163 -61 383 -134 220 -74 396 -135 391 -135 -7 -1 -745 238 -793 256 -10 4 -13 -12 -13 -59 l0 -65 405 -143 c223 -79 404 -145 402 -147 -3 -2 -187 60 -411 138 l-406 142 0 78 c0 65 3 78 18 82 9 3 19 5 21 6 2 0 192 -61 422 -136z m544 -177 c55 -19 95 -35 90 -35 -6 -1 -56 14 -110 33 -55 19 -95 35 -90 35 6 1 56 -14 110 -33z m243 -168 c-1 -95 -5 -83 -10 30 -2 34 0 62 5 62 4 0 6 -42 5 -92z m-325 2 c38 -12 66 -24 64 -26 -5 -5 -148 43 -156 53 -3 3 1 4 9 1 8 -3 46 -15 83 -28z"/>
|
||||
</g>
|
||||
<g id="layer104" fill="#8686bf" stroke="none">
|
||||
<path d="M1540 2940 c-685 -65 -1242 -118 -1237 -119 4 -1 252 -41 550 -91 l542 -90 1145 184 c630 101 1134 185 1120 185 -14 1 -180 12 -370 26 -190 14 -381 24 -425 24 -44 -1 -640 -54 -1325 -119z"/>
|
||||
<path d="M200 2312 l0 -500 568 -225 c312 -125 575 -229 585 -233 16 -6 17 12 15 326 l-3 331 -105 40 c-57 22 -156 64 -219 95 -63 30 -121 52 -129 49 -8 -3 -25 2 -38 10 -34 22 -33 71 2 87 29 14 53 3 68 -29 15 -32 205 -126 374 -184 l52 -18 0 277 0 277 -562 93 c-310 52 -573 96 -585 99 l-23 5 0 -500z m600 108 c0 -5 -20 -10 -45 -10 l-45 0 0 -151 0 -151 -24 6 c-42 10 -119 46 -113 52 3 4 21 1 38 -5 18 -6 37 -7 41 -3 5 5 7 62 6 128 l-3 119 -47 3 c-27 2 -48 7 -48 13 0 5 51 9 120 9 73 0 120 -4 120 -10z m98 -519 l342 -112 0 -88 c0 -79 -2 -89 -19 -94 -11 -3 -219 67 -473 158 l-453 162 -3 76 c-2 66 -1 76 15 79 19 4 71 -12 591 -181z"/>
|
||||
<path d="M300 2003 l0 -60 438 -157 c240 -86 440 -156 445 -156 4 0 7 31 7 69 l0 68 -431 142 c-236 78 -437 145 -445 148 -11 4 -14 -7 -14 -54z"/>
|
||||
<path d="M2000 2711 l-595 -96 -3 -282 -2 -282 42 -11 c24 -6 51 -13 60 -16 17 -5 18 15 20 293 l3 298 50 7 c54 7 1041 176 1065 182 8 2 2 4 -15 4 -16 0 -298 -44 -625 -97z"/>
|
||||
<path d="M1550 2297 l0 -286 38 -10 c20 -5 84 -19 142 -31 58 -12 116 -23 129 -26 23 -5 24 -3 19 41 -3 25 -3 45 1 43 31 -14 252 -141 256 -147 2 -5 -62 -21 -143 -36 -81 -15 -151 -30 -156 -33 -6 -3 0 10 12 30 12 19 22 39 22 44 0 5 -66 22 -147 37 -80 16 -152 31 -160 34 -11 4 -13 -52 -11 -338 l3 -344 320 -126 c261 -104 321 -124 324 -111 3 15 -26 46 -51 54 -9 3 -9 13 2 39 7 19 14 35 16 37 1 2 18 -3 37 -12 45 -18 57 -41 57 -108 l0 -53 423 -167 c232 -92 430 -170 440 -174 16 -6 17 38 17 827 l0 834 -768 128 c-422 71 -779 131 -794 134 l-28 5 0 -285z m1008 -269 c3 -16 -10 -18 -130 -20 l-133 -3 105 -70 c117 -79 142 -107 142 -159 0 -43 -15 -64 -59 -83 -33 -13 -178 -18 -207 -7 -22 8 -22 74 -1 74 8 0 15 -9 15 -20 0 -28 43 -43 104 -37 58 5 76 24 76 77 0 55 -34 96 -137 168 -64 43 -93 70 -93 83 0 19 7 19 157 17 140 -3 158 -5 161 -20z m-602 -459 c137 -44 408 -132 602 -195 l352 -115 0 -90 c0 -83 -2 -90 -22 -100 -19 -8 -121 25 -598 191 -316 111 -590 208 -607 215 -33 14 -33 14 -33 84 0 70 10 90 46 91 7 0 124 -36 260 -81z"/>
|
||||
<path d="M2280 1434 c322 -106 588 -194 593 -194 4 0 7 4 7 8 0 4 -30 18 -67 29 -38 12 -301 96 -585 187 -284 91 -520 166 -525 165 -4 0 255 -88 577 -195z"/>
|
||||
<path d="M1670 1558 l0 -63 467 -165 c257 -91 527 -186 600 -212 l133 -47 0 79 0 79 -82 26 c-172 54 -1103 358 -1110 362 -5 2 -8 -24 -8 -59z"/>
|
||||
<path d="M2880 1159 c0 -51 4 -78 10 -74 6 3 10 40 10 81 0 43 -4 74 -10 74 -6 0 -10 -34 -10 -81z"/>
|
||||
</g>
|
||||
<g id="layer105" fill="#afafde" stroke="none">
|
||||
<path d="M1547 2942 c-683 -64 -1228 -120 -1215 -124 13 -4 257 -45 543 -92 l520 -86 1145 184 c630 101 1134 185 1120 185 -14 1 -180 12 -370 26 -190 14 -381 24 -425 24 -44 -1 -637 -53 -1318 -117z"/>
|
||||
<path d="M2758 2792 c-598 -103 -1089 -189 -1092 -192 -2 -3 332 -62 744 -131 l748 -126 802 286 c440 157 797 287 793 288 -12 4 -865 63 -888 62 -11 0 -509 -85 -1107 -187z"/>
|
||||
<path d="M3993 2608 l-813 -291 0 -824 c0 -454 4 -823 8 -821 4 2 376 347 825 767 l817 763 0 349 c0 273 -3 349 -12 348 -7 0 -379 -131 -825 -291z"/>
|
||||
<path d="M2000 2711 l-595 -96 -3 -282 -2 -282 42 -11 c24 -6 51 -13 60 -16 17 -5 18 15 20 293 l3 298 50 7 c28 4 61 9 75 12 14 3 241 41 505 86 264 45 485 83 490 85 40 14 -128 -10 -645 -94z"/>
|
||||
<path d="M300 2003 l0 -59 438 -157 c240 -87 440 -157 445 -157 4 0 7 31 7 68 l0 68 -432 143 c-238 79 -439 146 -445 148 -10 4 -13 -11 -13 -54z"/>
|
||||
<path d="M1670 1558 l0 -63 598 -211 597 -211 3 75 c2 41 1 76 0 78 -2 1 -269 89 -593 194 -325 106 -593 194 -597 197 -5 2 -8 -24 -8 -59z"/>
|
||||
</g>
|
||||
<g id="layer106" fill="#d9d9ff" stroke="none">
|
||||
<path d="M4790 2893 c-8 -3 -28 -11 -45 -18 -16 -7 -375 -135 -797 -285 l-768 -273 0 -824 c0 -454 4 -823 8 -821 4 2 376 347 825 767 l817 763 0 349 c0 363 1 357 -40 342z"/>
|
||||
<path d="M1765 2670 c-93 -15 -213 -34 -265 -41 l-95 -14 -3 -282 -2 -282 42 -11 c24 -6 51 -13 60 -16 17 -5 18 15 20 293 l3 298 45 7 c148 24 420 76 395 76 -16 0 -106 -13 -200 -28z"/>
|
||||
<path d="M310 1996 c0 -50 2 -55 28 -64 15 -5 210 -75 434 -156 224 -80 410 -146 413 -146 3 0 5 31 5 68 l0 68 -433 142 c-239 78 -437 142 -440 142 -4 0 -7 -24 -7 -54z"/>
|
||||
<path d="M1400 1676 c0 -179 3 -326 6 -326 19 0 44 25 54 54 10 32 14 34 36 26 l24 -10 0 275 0 274 -42 11 c-24 6 -51 13 -60 16 -17 5 -18 -15 -18 -320z"/>
|
||||
<path d="M1213 1700 c0 -41 2 -58 4 -37 2 20 2 54 0 75 -2 20 -4 3 -4 -38z"/>
|
||||
<path d="M1672 1553 l3 -56 575 -204 c316 -111 583 -205 593 -209 15 -5 17 3 17 70 l0 74 -47 16 c-27 8 -290 94 -587 190 -296 97 -542 176 -548 176 -5 0 -8 -26 -6 -57z"/>
|
||||
<path d="M2880 1160 c0 -40 4 -70 10 -70 6 0 10 30 10 70 0 40 -4 70 -10 70 -6 0 -10 -30 -10 -70z"/>
|
||||
</g>
|
||||
|
||||
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 13 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 32 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user