diff --git a/CREDITS b/CREDITS
index bbf7e08..fe82a83 100644
--- a/CREDITS
+++ b/CREDITS
@@ -1,5 +1,5 @@
#!/bin/cat
-# $Id: CREDITS,v 1.190 2017/01/25 23:58:21 gilles Exp gilles $
+# $Id: CREDITS,v 1.191 2018/04/08 17:27:58 gilles Exp gilles $
If you want to make a donation to me, imapsync author, Gilles LAMIRAL,
use any of the following ways:
@@ -8,12 +8,12 @@ b) If you can read french, please use the following wishlist :
http://amazon.fr/gp/registry/wishlist/37RZF7PPCD7YL
(books will be send with free postal cost)
-c) my paypal account is gilles.lamiral@laposte.net
+c) my paypal account is gilles@lamiral.info
http://imapsync.lamiral.info/S/paypal.shtml
My postal address is:
Gilles LAMIRAL
-La Billais
+22 La Billais
35580 Baulon
FRANCE
diff --git a/ChangeLog b/ChangeLog
index a4c54b6..0d937e6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,17 +1,237 @@
RCS file: RCS/imapsync,v
Working file: imapsync
-head: 1.836
+head: 1.882
branch:
locks: strict
- gilles: 1.836
+ gilles: 1.882
access list:
symbolic names:
keyword substitution: kv
-total revisions: 836; selected revisions: 836
+total revisions: 882; selected revisions: 882
description:
----------------------------
-revision 1.836 locked by: gilles;
+revision 1.882 locked by: gilles;
+date: 2018/05/05 21:10:43; author: gilles; state: Exp; lines: +8 -8
+typo
+----------------------------
+revision 1.881
+date: 2018/05/05 20:43:36; author: gilles; state: Exp; lines: +96 -61
+proofread the doc part. ispell on README.
+----------------------------
+revision 1.880
+date: 2018/05/05 12:44:21; author: gilles; state: Exp; lines: +26 -21
+Splitted sub usage() with call to sub mypod2usage(). Crit level 4 on open/close not far away.
+----------------------------
+revision 1.879
+date: 2018/04/20 13:02:13; author: gilles; state: Exp; lines: +20 -13
+Back to `` because of backtick() does not work always on Darwin
+----------------------------
+revision 1.878
+date: 2018/04/19 00:51:45; author: gilles; state: Exp; lines: +76 -40
+Perlcrit. Removed the select in teelaunch()
+Perlcrit. *STDERR change is now localized.
+Perlcrit. Hard 'LOG_imapsync' is now $DEFAULT_LOGDIR
+Proxy mode. Log file will be named with a suffix "_remote.txt"
+Refactor. sub logfile() is deglobalized. (removed $debug lines)
+----------------------------
+revision 1.877
+date: 2018/04/18 22:00:46; author: gilles; state: Exp; lines: +31 -13
+Changed sub myprint and sub myprintf in order to suppress the select in teelaunch
+----------------------------
+revision 1.876
+date: 2018/04/18 03:02:32; author: gilles; state: Exp; lines: +20 -17
+Bugfix. ARRAY ref not defined with --subscribed
+----------------------------
+revision 1.875
+date: 2018/04/18 02:27:18; author: gilles; state: Exp; lines: +32 -25
+Refactor. $tmpdir unglobalized
+Win32. No USR1 on Windows so skip signals tests on Win32
+----------------------------
+revision 1.874
+date: 2018/04/18 00:46:46; author: gilles; state: Exp; lines: +53 -40
+Perlcrit. Use IPC::Open3::open3 instead of backticks ``
+----------------------------
+revision 1.873
+date: 2018/04/17 00:24:54; author: gilles; state: Exp; lines: +9 -9
+Added SERVER_SOFTWARE
+Added SERVER_PORT
+----------------------------
+revision 1.872
+date: 2018/04/16 23:10:03; author: gilles; state: Exp; lines: +17 -11
+Bugfix to pass --tests under root user.
+----------------------------
+revision 1.871
+date: 2018/04/13 18:00:06; author: gilles; state: Exp; lines: +71 -12
+Added toggle sleep from 2s to 0s with signal USR1
+----------------------------
+revision 1.870
+date: 2018/04/08 17:25:54; author: gilles; state: Exp; lines: +46 -46
+Changed gilles.lamiral@laposte.net => gilles@lamiral.info
+----------------------------
+revision 1.869
+date: 2018/04/08 17:21:15; author: gilles; state: Exp; lines: +29 -30
+https://imapsync.lamiral.info/ instead of http://imapsync.lamiral.info/ in ID support-url
+Removed uname info from banner, adder ram info.
+Change utf8 char ° to nb in tests summary
+----------------------------
+revision 1.868
+date: 2018/04/03 01:55:24; author: gilles; state: Exp; lines: +13 -12
+Renamed total_ram_memory() => ram_memory_info()
+----------------------------
+revision 1.867
+date: 2018/04/03 00:35:58; author: gilles; state: Exp; lines: +21 -18
+Refactor. sub under_cgi_context() uses $mysync.
+----------------------------
+revision 1.866
+date: 2018/03/29 04:58:11; author: gilles; state: Exp; lines: +10 -9
+Changed inline signal message
+----------------------------
+revision 1.865
+date: 2018/03/29 04:50:26; author: gilles; state: Exp; lines: +98 -86
+Moved the inline help "I am asked to stop immediately" after the final stats.
+Tidied up sub myGetOptions()
+----------------------------
+revision 1.864
+date: 2018/03/28 21:33:28; author: gilles; state: Exp; lines: +12 -18
+Before tidy up sub myGetOptions
+----------------------------
+revision 1.863
+date: 2018/03/28 16:57:22; author: gilles; state: Exp; lines: +10 -8
+Added inline advice to resync after an end commanded by a TERM or QUIT signal.
+----------------------------
+revision 1.862
+date: 2018/03/28 14:48:37; author: gilles; state: Exp; lines: +21 -20
+Reduced the loadavg ingo in the header status in CGI context.
+Added the hostname in in the header status in CGI context.
+----------------------------
+revision 1.861
+date: 2018/03/27 03:04:03; author: gilles; state: Exp; lines: +41 -48
+Refactor. Use of debugmemory()
+Moved the hostname printing at first line. The goal is for clarity when in proxy mode.
+Added free RAM info in the banner
+Added free RAM and total RAM in the status in CGI context.
+----------------------------
+revision 1.860
+date: 2018/03/26 21:14:01; author: gilles; state: Exp; lines: +97 -67
+Reviewed tests_get_options_cgi(), renamed to tests_get_options_cgi_context()
+Reviewed tests_get_options
+----------------------------
+revision 1.859
+date: 2018/03/22 12:55:34; author: gilles; state: Exp; lines: +13 -8
+Bugfix. Predeclare $sync->{folder} as ARRAY ref. $sync->{folder} = [] ;
+----------------------------
+revision 1.858
+date: 2018/03/21 07:53:26; author: gilles; state: Exp; lines: +14 -11
+Refactoring. Deglobalized $justconnect
+----------------------------
+revision 1.857
+date: 2018/03/21 07:40:12; author: gilles; state: Exp; lines: +80 -31
+Refactor. Changed how --f1f2 is handled. Was a hash, now a list.
+----------------------------
+revision 1.856
+date: 2018/03/20 02:24:52; author: gilles; state: Exp; lines: +31 -19
+Refactoring. Deglobalized @folder
+----------------------------
+revision 1.855
+date: 2018/03/19 14:15:53; author: gilles; state: Exp; lines: +18 -21
+Refactoring. Deglobalized $addheader
+Refactoring. Deglobalized $justlogin
+----------------------------
+revision 1.854
+date: 2018/03/19 13:45:31; author: gilles; state: Exp; lines: +32 -25
+Unglobalized $version
+Unglobalized $releasecheck
+Added sub debugmemory()
+----------------------------
+revision 1.853
+date: 2018/03/12 13:43:11; author: gilles; state: Exp; lines: +9 -9
+Back to default signals. INT => reconnect. TERM or QUIT => stats and exit. (cgicontext ignored TERM)
+----------------------------
+revision 1.852
+date: 2018/03/12 03:11:04; author: gilles; state: Exp; lines: +132 -29
+Added --sigexit; For example --sigexit QUIT --sigexit TERM to exit when receiving QUIT or TERM signals.
+Added --sigreconnect. For example --sigreconnect INT to reconnect to both imap servers when receiving INT signal.
+Added --sigignore. For example --sigignore TERM to "ignore" the TERM signal. In fact print stats during the sync.
+Default is like: --sigexit QUIT --sigexit TERM --sigreconnect INT
+
+Added sub sig_install() to install any behavior with any signal (the ones actually received in Unix).
+Number of tests with --tests is 1137
+----------------------------
+revision 1.851
+date: 2018/03/04 15:19:04; author: gilles; state: Exp; lines: +10 -10
+Inline help. Clarified --errorsmax inline help.
+----------------------------
+revision 1.850
+date: 2018/02/21 04:15:32; author: gilles; state: Exp; lines: +66 -41
+Option --abort now creates a log too, in order to see if imapsync ends by signal come from --abort or something else.
+----------------------------
+revision 1.849
+date: 2018/02/18 18:45:36; author: gilles; state: Exp; lines: +14 -10
+Added \t\r\n characters replaced by _ in sub filter_forbidden_characters()
+----------------------------
+revision 1.848
+date: 2018/02/07 00:58:59; author: gilles; state: Exp; lines: +50 -28
+Cleaned up --releasecheck stuff.
+Clarified SSL_VERIFY_NONE default.
+----------------------------
+revision 1.847
+date: 2017/12/18 11:04:26; author: gilles; state: Exp; lines: +56 -33
+Bugfix. Fixed sub epoch() to allow that kind of silly INTERNALDATE 00-Jan-0000 00:00:00 +0000
+(Thanks to IBM Domino...)
+Added inline documentation about --releasecheck and --noreleasecheck
+Default upstream is still --releasecheck. Just a line to change to have --noreleasecheck by default (as before)
+Bugfix. --releasecheck on was hardcoded in cgi context. Now it depends on the default behavior chosen.
+Bug pending. Still have to fix --releasecheck on with --help
+----------------------------
+revision 1.846
+date: 2017/11/30 02:00:12; author: gilles; state: Exp; lines: +34 -12
+Added sub memory_stress
+Added sub tests_memory_stress
+memory_stress() crunch 3/4 of the RAM.
+tests_memory_stress() is the associated test.
+----------------------------
+revision 1.845
+date: 2017/11/28 23:36:43; author: gilles; state: Exp; lines: +51 -29
+Added --noresyncflags : Do not resync flags for already transfered messages.
+May be useful when a user has already started to play with its host2 account.
+----------------------------
+revision 1.844
+date: 2017/11/16 14:38:38; author: gilles; state: Exp; lines: +107 -43
+Crit. Removed 4 "Warnings disabled". crit level 4
+----------------------------
+revision 1.843
+date: 2017/11/05 22:23:57; author: gilles; state: Exp; lines: +38 -30
+Added --nocheckfoldersexist ( Default is like --checkfoldersexist )
+----------------------------
+revision 1.842
+date: 2017/10/30 18:47:37; author: gilles; state: Exp; lines: +246 -115
+Refactoring. Removed global variables $h1_prefix and $h2_prefix
+Bugfix. cpu_number() returns always an integer >= 1.
+----------------------------
+revision 1.841
+date: 2017/10/27 12:37:39; author: gilles; state: Exp; lines: +55 -41
+Detect extra arguments. Meaning usually a quoting issue in the command line, options not well parsed.
+----------------------------
+revision 1.840
+date: 2017/10/22 14:28:00; author: gilles; state: Exp; lines: +9 -9
+No limitssssss
+----------------------------
+revision 1.839
+date: 2017/10/04 17:50:29; author: gilles; state: Exp; lines: +132 -39
+In case the pidfile already exists, remove it if no process match its content.
+Do nothing if the pidfile doesn't content a pid number 0
+email at
Put a useful title with word "imapsync" in it: my spam filters
won't filter it.
diff --git a/FAQ.d/FAQ.SSL_errors.txt b/FAQ.d/FAQ.SSL_errors.txt
index 64fa665..1602ea3 100644
--- a/FAQ.d/FAQ.SSL_errors.txt
+++ b/FAQ.d/FAQ.SSL_errors.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.SSL_errors.txt,v 1.1 2017/05/24 19:16:40 gilles Exp gilles $
+$Id: FAQ.SSL_errors.txt,v 1.5 2018/04/25 17:58:12 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
@@ -7,23 +7,26 @@ This documentation is also at http://imapsync.lamiral.info/#doc
Imapsync SSL errors
=====================================================
-Questions anwswered in this FAQ are:
+Questions answered in this FAQ are:
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
-
Q. What can I do to avoid those "SSL read/write errors"?
+Q. SSL connect attempt failed SSL
+ routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
+
=======================================================================
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
-R. Like they claim, those errors are SSL errors. SSL is not directly
+
+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.
@@ -35,6 +38,9 @@ R. Like they claim, those errors are SSL errors. SSL is not directly
=======================================================================
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 don't appear with recent releases, post 1.836
+
R1. Remove all ssl/tls encryption
imapsync ... --nossl1 --notls1 --nossl2 --notls2
@@ -48,9 +54,28 @@ R3. Run imapsync on a Linux machine, a VM is ok, there are less
SSL errors on Unix.
R4. Use https://imapsync.lamiral.info/X/
- It's a Linux host so R3 applies there.
+ It's a Linux host so response R3 applies there.
R5. Set up a ssltunnel proxy to the host.
- Read the file FAQ.Security.txt
+ Read the file FAQ.Security.txt for an example to set up
+ a ssltunnel proxy.
+
+=======================================================================
+Q. SSL connect attempt failed SSL
+ routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
+
+R. Use:
+
+ imapsync ... --sslargs1 'SSL_cipher_list=DEFAULT'
+ or
+ imapsync ... --sslargs2 'SSL_cipher_list=DEFAULT'
+
+ depending on where the error occurs, host1 or host2 or both.
+
+=======================================================================
+=======================================================================
+=======================================================================
+
+
+
-=======================================================================
\ No newline at end of file
diff --git a/FAQ.d/FAQ.Use_cache.txt b/FAQ.d/FAQ.Use_cache.txt
index ef77939..05edd38 100644
--- a/FAQ.d/FAQ.Use_cache.txt
+++ b/FAQ.d/FAQ.Use_cache.txt
@@ -1,5 +1,5 @@
-$Id: FAQ.Use_cache.txt,v 1.4 2017/02/14 17:35:22 gilles Exp gilles $
+$Id: FAQ.Use_cache.txt,v 1.6 2018/03/07 04:12:37 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
@@ -7,13 +7,13 @@ This documentation is also at http://imapsync.lamiral.info/#doc
Imapsync --usecache option
============================================
-Questions anwswered in this FAQ are:
+Questions answered in this FAQ are:
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"
-Q. Inode problem with --usecache on Linux
+Q. Inode problem with --usecache or --useuid on Linux
Questions and their answers:
@@ -68,7 +68,7 @@ Fixing this long path problem directly in imapsync is in the TODO file
for a very long time.
=======================================================================
-Q. Inode problem with --usecache on Linux
+Q. Inode problem with --usecache or --useuid on Linux
R. You may run out of inodes using --usecache, especially with large
migration. Option --usecache creates a empty file per email message
diff --git a/FAQ.d/FAQ.User_Concurrent_Access.txt b/FAQ.d/FAQ.User_Concurrent_Access.txt
index 34ef0eb..a7bff9c 100644
--- a/FAQ.d/FAQ.User_Concurrent_Access.txt
+++ b/FAQ.d/FAQ.User_Concurrent_Access.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-$Id: FAQ.User_Concurrent_Access.txt,v 1.2 2017/01/06 14:11:13 gilles Exp gilles $
+$Id: FAQ.User_Concurrent_Access.txt,v 1.4 2017/12/19 14:55:36 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
@@ -14,23 +14,30 @@ R. Think all potential problems with a sync between
a master/source/host1 and a slave/destination/host2
What happens when a user access syncing accounts depends
-on what he does, where he does and when:
+on what he does, where he does and when.
-* Reading: no problem anywhere, anytime.
+As a summary, reading is safe, writing/deleting is not.
+
+Details:
+
+* Reading: no problem anywhere, at source/host1 or at destination/host2,
+ anytime. Reading is safe.
* Writing at source/host1:
- * adding folder => will need a resync after
- * deleting folder => deletion not synced unless --delete2folders
- * deleting message => deletion not synced unless --delete2
- * adding message => will need a resync
+ * adding folder => will need a resync after
+ * deleting folder => folders deletions are not synced unless --delete2folders
+ * deleting message => messages deletions are not synced unless --delete2
+ * adding message => will need a resync
+ * moving message => will need a resync. Moving is like adding + deleting
+ so --delete2 is needed to sync the deletion.
* message flag change => will need a resync
* Writing at destination/host2:
- * adding folder => no problem, unless --delete2folders is used
- * deleting folder => might reappear by the sync
- * adding message => no problem, unless --delete2 is used
- * deleting message => might reappear by the sync
- * message flag change => might be canceled by the sync
+ * adding folder => no problem, unless --delete2folders is used
+ * deleting folder => will reappear by a new sync
+ * adding message => no problem, unless --delete2 is used on next sync.
+ * deleting message => might reappear by a new sync.
+ * message flag change => will be reseted by a new sync.
=======================================================================
=======================================================================
\ No newline at end of file
diff --git a/FAQ.d/FAQ.Virus.txt b/FAQ.d/FAQ.Virus.txt
index 6932aed..c69fc0a 100644
--- a/FAQ.d/FAQ.Virus.txt
+++ b/FAQ.d/FAQ.Virus.txt
@@ -1,5 +1,5 @@
-$Id: FAQ.Virus.txt,v 1.2 2017/07/03 19:30:19 gilles Exp gilles $
+$Id: FAQ.Virus.txt,v 1.4 2018/03/21 16:18:53 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
@@ -11,7 +11,7 @@ This documentation is also at http://imapsync.lamiral.info/#doc
Q. My virus scanner claims imapsync.exe is a virus/malware/trojan etc.
What the hell?
-R. Yes, I found the same. Two antivirus, Baidu and Jiangmin, report that
+R1. Yes, I found the same. Two antivirus, Baidu and Jiangmin, report that
imapsync might have a trojan in it.
All others virus scanner say imapsync.exe is ok.
I've done this test on imapsync.exe release 1.727 on the two following
@@ -26,9 +26,18 @@ R2. Explanation:
https://imapsync.lamiral.info/#NUMBERS
Any other explanation is welcome!
-
+
+
R3. There is no virus alerts reported for the Perl script imapsync
itself. The binary imapsync.exe is just a compiled version of
the script imapsync, with perl interpreter itself and all modules
- needed by imapsync in order to make imapsync.exe a standalone software.
+ needed by imapsync in order to make imapsync.exe a standalone software.
+R4. imapsync.exe release 1.836 is reported as totally clean by both
+ https://www.virustotal.com/
+ https://www.virustotal.com/#/file/2a33eb93198da77677a4013a5dfb4868cb6aa8f4513e2102a55884b258d19043/detection
+
+ and https://metadefender.opswat.com/
+ https://metadefender.opswat.com/results#!/file/ZTE4MDMxN1MxZTk4aGhxdEdCSlpxVTJoOVlN/regular/information
+
+
\ No newline at end of file
diff --git a/FAQ.d/FAQ.Yahoo.txt b/FAQ.d/FAQ.Yahoo.txt
index 392f395..be84bbc 100644
--- a/FAQ.d/FAQ.Yahoo.txt
+++ b/FAQ.d/FAQ.Yahoo.txt
@@ -1,5 +1,5 @@
-$Id: FAQ.Yahoo.txt,v 1.6 2017/06/17 14:42:01 gilles Exp gilles $
+$Id: FAQ.Yahoo.txt,v 1.7 2017/12/18 10:45:00 gilles Exp gilles $
This documentation is also at http://imapsync.lamiral.info/#doc
@@ -20,10 +20,28 @@ R. Use --host1 imap.mail.yahoo.com --ssl1
--ssl1 \
--host2 XXX \
--user2 billy \
- --password2 secret
+ --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 connexion 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
"Allow less secure apps to login",
otherwise the login will not work.
diff --git a/FAQ.d/htaccess.txt b/FAQ.d/htaccess.txt
index 283af7b..d863a81 100644
--- a/FAQ.d/htaccess.txt
+++ b/FAQ.d/htaccess.txt
@@ -1,5 +1,5 @@
-# $Id: htaccess.txt,v 1.18 2017/09/03 03:14:48 gilles Exp gilles $
+# $Id: htaccess.txt,v 1.20 2018/03/17 16:12:54 gilles Exp gilles $
AddDescription "Back to Imapsync main page." ..
@@ -16,22 +16,32 @@ AddDescription "Emptying an account." FAQ.Emptying.
AddDescription "Exchange 20xx and Office365." FAQ.Exchange.txt
AddDescription "Changing folders names." FAQ.Folders_Mapping.txt
AddDescription "Selecting folders." FAQ.Folders_Selection.txt
+AddDescription "Folders sizes with Imapsync." FAQ.Folders_Sizes.txt
+
+
AddDescription "Flags." FAQ.Flags.txt
AddDescription "General and pot-pourri issues" FAQ.General.txt
AddDescription "Gmail accounts." FAQ.Gmail.txt
AddDescription "ISP tips." FAQ.ISP.txt
AddDescription "Massive/bulk migrations." FAQ.Massive.txt
AddDescription "Memory issues." FAQ.Memory.txt
+AddDescription "Migration Plan." FAQ.Migration_Plan.txt
+AddDescription "The Online UI service Q&R." FAQ.OnlineUI.txt
AddDescription "Password & special characters on Windows." FAQ.Passwords_on_Windows.txt
AddDescription "Password & special characters on Unix." FAQ.Passwords_on_Unix.txt
+AddDescription "POP3 issues." FAQ.POP3.txt
AddDescription "Selecting messages." FAQ.Messages_Selection.txt
AddDescription "Oracle-UCS." FAQ.Oracle-UCS.txt
+AddDescription "Checklist before release a new release." FAQ.Release_Checklist.txt
AddDescription "Guidelines to report bugs." FAQ.Reporting_Bugs.txt
AddDescription "Security." FAQ.Security.txt
AddDescription "SSL errors." FAQ.SSL_errors.txt
AddDescription "SmarterMail." FAQ.SmarterMail.txt
+
+AddDescription "TTL (Time To Live) delay in DNS configuration." FAQ.TTL.txt
AddDescription "Option --usecache and inodes." FAQ.Use_cache.txt
AddDescription "User concurrent access." FAQ.User_Concurrent_Access.txt
+AddDescription "Virus scanners on Imapsync." FAQ.Virus.txt
AddDescription "Why use --addheader?." FAQ.Use_addheader.txt
AddDescription "Various imap server softwares." FAQ.Various_Server_Softwares.txt
AddDescription "XOAUTH2 (Gmail)." FAQ.XOAUTH2.txt
diff --git a/FAQ.d/memo b/FAQ.d/memo
new file mode 100644
index 0000000..7b84a9e
--- /dev/null
+++ b/FAQ.d/memo
@@ -0,0 +1,4 @@
+
+
+( cd .. && make upload_FAQ )
+
diff --git a/INSTALL.d/INSTALL.ANY.txt b/INSTALL.d/INSTALL.ANY.txt
index 6a29d62..08ceaf9 100644
--- a/INSTALL.d/INSTALL.ANY.txt
+++ b/INSTALL.d/INSTALL.ANY.txt
@@ -1,4 +1,4 @@
-# $Id: INSTALL.ANY.txt,v 1.55 2017/04/18 15:11:29 gilles Exp gilles $
+# $Id: INSTALL.ANY.txt,v 1.57 2018/02/11 13:35:14 gilles Exp gilles $
#
# This is the main INSTALL file for imapsync.
# imapsync : IMAP sync and migrate tool.
@@ -23,7 +23,7 @@ https://imapsync.lamiral.info/README_Windows.txt
=================================
There are specific INSTALL files in the imapsync directory INSTALL.d/
-also available at https://imapsync.lamiral.info/INSTALL.d/
+Those documents are also available at https://imapsync.lamiral.info/INSTALL.d/
- Mac OS X
- FreeBSD
@@ -32,6 +32,7 @@ also available at https://imapsync.lamiral.info/INSTALL.d/
- Debian
- Ubuntu
- AWS EC2
+- Online UI like /X
If you are not on one of these systems then read the section
below called "Installing imapsync on other Unixes".
@@ -42,7 +43,7 @@ below called "Installing imapsync on other Unixes".
Easy.
Read the file INSTALL.d/INSTALL.Darwin.txt
-Also available at
+This document is also available at
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Darwin.txt
=====================================
@@ -51,7 +52,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Darwin.txt
Easy.
Read the file INSTALL.d/INSTALL.FreeBSD.txt
-Also available at
+This document is also available at
https://imapsync.lamiral.info/INSTALL.d/INSTALL.FreeBSD.txt
@@ -61,7 +62,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.FreeBSD.txt
Easy.
Read the file INSTALL.d/INSTALL.Centos.txt
-Also available at
+This document is also available at
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Centos.txt
@@ -71,7 +72,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Centos.txt
Easy.
Read the file INSTALL.d/INSTALL.CPanel.txt
-Also available at
+This document is also available at
https://imapsync.lamiral.info/INSTALL.d/INSTALL.CPanel.txt
@@ -81,7 +82,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.CPanel.txt
Not so easy.
See the file INSTALL.d/INSTALL.Debian.txt
-Also available at
+This document is also available at
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Debian.txt
============================================
@@ -90,7 +91,7 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Debian.txt
Not so easy.
See the file INSTALL.d/INSTALL.Ubuntu.txt
-Also available at
+This document is also available at
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Ubuntu.txt
==================================
@@ -99,9 +100,17 @@ https://imapsync.lamiral.info/INSTALL.d/INSTALL.Ubuntu.txt
Not so easy.
See the file INSTALL.d/INSTALL.AWS_EC2.txt
-Also available at
+This document is also available at
https://imapsync.lamiral.info/INSTALL.d/INSTALL.AWS_EC2.txt
+======================================
+= Installing imapsync online like /X =
+======================================
+
+Follow the document INSTALL.d/INSTALL.OnlineUI.txt
+This document is also available at
+https://imapsync.lamiral.info/INSTALL.d/INSTALL.OnlineUI.txt
+
=========================================
== Installing imapsync on other Unixes ==
diff --git a/INSTALL.d/INSTALL.AWS_EC2.txt b/INSTALL.d/INSTALL.AWS_EC2.txt
index 7b9c276..8722b2c 100644
--- a/INSTALL.d/INSTALL.AWS_EC2.txt
+++ b/INSTALL.d/INSTALL.AWS_EC2.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-# $Id: INSTALL.AWS_EC2.txt,v 1.3 2017/04/18 15:06:35 gilles Exp gilles $
+# $Id: INSTALL.AWS_EC2.txt,v 1.4 2017/11/19 07:50:24 gilles Exp gilles $
==================================
= Installing imapsync on AWS EC2 =
@@ -12,37 +12,38 @@ Amazon Linux AMI release 2017.03
sudo yum install \
-perl-Class-Load-0.20-3.6.amzn1.noarch \
-perl-IO-Compress-2.061-2.12.amzn1.noarch \
-perl-Crypt-OpenSSL-RSA-0.28-7.8.amzn1.x86_64 \
-perl-Data-Dumper-2.145-3.5.amzn1.x86_64 \
-perl-Dist-CheckConflicts-0.06-2.5.amzn1.noarch \
-perl-File-Copy-Recursive-0.38-14.8.amzn1.noarch \
-perl-IO-Socket-INET6-2.69-5.8.amzn1.noarch \
-perl-IO-Socket-SSL-1.94-3.13.amzn1.noarch \
-perl-JSON-2.59-2.8.amzn1.noarch \
-perl-HTML-Parser-3.71-4.7.amzn1.x86_64 \
-perl-libwww-perl-6.05-2.17.amzn1.noarch \
-perl-Mail-IMAPClient-3.34-1.2.amzn1.noarch \
-perl-Module-Implementation-0.06-6.6.amzn1.noarch \
-perl-Module-Runtime-0.013-4.5.amzn1.noarch \
-perl-Module-ScanDeps-1.10-3.7.amzn1.noarch \
-perl-Net-SSLeay-1.65-2.10.amzn1.x86_64 \
-perl-Package-Stash-0.34-2.6.amzn1.noarch \
-perl-Package-Stash-XS-0.26-3.7.amzn1.x86_64 \
-perl-Parse-RecDescent-1.967009-5.13.amzn1.noarch \
-perl-Readonly-1.03-22.8.amzn1.noarch \
-perl-Sys-MemInfo-0.91-7.5.amzn1.x86_64 \
-perl-TermReadKey-2.30-20.9.amzn1.x86_64 \
-perl-Test-Fatal-0.010-5.5.amzn1.noarch \
-perl-Test-MockObject-1.20120301-3.8.amzn1.noarch \
-perl-Test-Simple-0.98-243.6.amzn1.noarch \
-perl-Test-Pod-1.48-3.9.amzn1.noarch \
-perl-Test-Requires-0.06-10.6.amzn1.noarch \
-perl-Try-Tiny-0.12-2.5.amzn1.noarch \
-perl-Unicode-String-2.09-29.7.amzn1.x86_64 \
-perl-URI-1.60-9.8.amzn1.noarch \
-perl-ExtUtils-Embed-1.30-286.38.amzn1.noarch \
+perl-Class-Load \
+perl-IO-Compress \
+perl-Crypt-OpenSSL-RSA \
+perl-Data-Dumper \
+perl-Dist-CheckConflicts \
+perl-File-Copy-Recursive \
+perl-IO-Socket-INET6 \
+perl-IO-Socket-SSL \
+perl-JSON \
+perl-HTML-Parser \
+perl-libwww-perl \
+perl-Mail-IMAPClient \
+perl-Module-Implementation \
+perl-Module-Runtime \
+perl-Module-ScanDeps \
+perl-Net-SSLeay \
+perl-Package-Stash \
+perl-Package-Stash-XS \
+perl-Parse-RecDescent \
+perl-Readonly \
+perl-Regexp-Common \
+perl-Sys-MemInfo \
+perl-TermReadKey \
+perl-Test-Fatal \
+perl-Test-MockObject \
+perl-Test-Simple \
+perl-Test-Pod \
+perl-Test-Requires \
+perl-Try-Tiny \
+perl-Unicode-String \
+perl-URI \
+perl-ExtUtils-Embed \
cpanminus
sudo cpanm Authen::NTLM Data::Uniqid IO::Tee JSON::WebToken JSON::WebToken::Crypt::RSA Test::Mock::Guard
diff --git a/INSTALL.d/INSTALL.Centos.txt b/INSTALL.d/INSTALL.Centos.txt
index c44b228..05a9a34 100644
--- a/INSTALL.d/INSTALL.Centos.txt
+++ b/INSTALL.d/INSTALL.Centos.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-# $Id: INSTALL.Centos.txt,v 1.6 2016/11/07 10:40:53 gilles Exp gilles $
+# $Id: INSTALL.Centos.txt,v 1.7 2018/04/24 00:15:32 gilles Exp gilles $
=================================
= Installing imapsync on CentOS =
@@ -32,6 +32,48 @@ Unit tests:
imapsync --tests
+==================================
+== Centos 7 and latest imapsync ==
+==================================
+
+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:
+
+Install the epel imapsync 1.727 release via yum like mentioned above.
+It will install many needed packages, Perl itself and Perl modules
+for release 1.727. The latest imapsync needs more Perl modules.
+
+Then:
+
+ 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-NoWarnings \
+ perl-Test-Deep \
+ perl-Test-Warn \
+ perl-Try-Tiny
+
+ wget https://imapsync.lamiral.info/imapsync
+
+ chmod +x imapsync
+ ./imapsync --testslive
+
+Now you have the latest imapsync on Centos 7.
+
+
==============
== Centos 6 ==
==============
diff --git a/INSTALL.d/INSTALL.Darwin.txt b/INSTALL.d/INSTALL.Darwin.txt
index 2268152..52a5a67 100644
--- a/INSTALL.d/INSTALL.Darwin.txt
+++ b/INSTALL.d/INSTALL.Darwin.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-# $Id: INSTALL.Darwin.txt,v 1.16 2016/11/07 05:06:34 gilles Exp gilles $
+# $Id: INSTALL.Darwin.txt,v 1.17 2017/11/30 02:10:27 gilles Exp gilles $
===================================================
= Installing imapsync binary on Darwin / Mac OS X =
@@ -117,7 +117,6 @@ Now imapsync should work on your system.
= Building imapsync binary on Darwin / Mac OS X =
=================================================
-cpanm Module::ScanDeps
cpanm Module::ScanDeps
cpanm PAR::Packer
diff --git a/INSTALL.d/INSTALL.Debian.txt b/INSTALL.d/INSTALL.Debian.txt
index 87d2f85..0fa211f 100644
--- a/INSTALL.d/INSTALL.Debian.txt
+++ b/INSTALL.d/INSTALL.Debian.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-# $Id: INSTALL.Debian.txt,v 1.15 2017/04/05 02:03:04 gilles Exp gilles $
+# $Id: INSTALL.Debian.txt,v 1.21 2018/05/06 15:03:04 gilles Exp gilles $
There is three install sections in this document,
one for Debian 9 Stretch
@@ -13,7 +13,6 @@ 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 on Debian or not."
https://lists.debian.org/debian-legal/2011/01/msg00058.html
The license is now "No limits to do anything with this work and this license".
-and full dist/ is back to https://imapsync.lamiral.info/dist/
Feel free.
See also a more detailed story at
https://lists.debian.org/debian-user/2016/11/msg00849.html
@@ -24,31 +23,43 @@ https://lists.debian.org/debian-user/2016/11/msg00849.html
===========================================
Here is the command to install imapsync dependencies.
-You need root priviledge to run it.
+The repositories are the classical ones, ie, a
+sources.list file with:
-apt install -y \
- libjson-webtoken-perl \
- libauthen-ntlm-perl \
- libcgi-pm-perl \
- libcrypt-openssl-rsa-perl \
- libdata-uniqid-perl \
+deb http://deb.debian.org/debian stretch main contrib
+
+You need root privilege to run it, be root or use sudo.
+
+apt install -y \
+ libjson-webtoken-perl \
+ libauthen-ntlm-perl \
+ libcgi-pm-perl \
+ libcrypt-openssl-rsa-perl \
+ libdata-uniqid-perl \
libfile-copy-recursive-perl \
- libio-socket-inet6-perl \
- libio-socket-ssl-perl \
- libio-tee-perl \
- libhtml-parser-perl \
- libjson-webtoken-perl \
- libmail-imapclient-perl \
+ libio-socket-inet6-perl \
+ libio-socket-ssl-perl \
+ libio-tee-perl \
+ libhtml-parser-perl \
+ libjson-webtoken-perl \
+ libmail-imapclient-perl \
libparse-recdescent-perl \
- libmodule-scandeps-perl \
- libreadonly-perl \
- libsys-meminfo-perl \
- libterm-readkey-perl \
- libtest-mockobject-perl \
- libtest-pod-perl \
- libunicode-string-perl \
- liburi-perl \
- libwww-perl
+ libmodule-scandeps-perl \
+ libreadonly-perl \
+ libregexp-common-perl \
+ libsys-meminfo-perl \
+ libterm-readkey-perl \
+ libtest-mockobject-perl \
+ libtest-pod-perl \
+ libunicode-string-perl \
+ liburi-perl \
+ libwww-perl \
+ libtest-nowarnings-perl \
+ libtest-deep-perl \
+ libtest-warn-perl \
+ make \
+ cpanminus
+
After installing the dependencies, imapsync should be working,
go to the section "After installing the dependencies" below.
@@ -62,32 +73,48 @@ Here are the commands to install imapsync dependencies.
You need root priviledge to run them.
The first command installs standard Debian packages:
-apt install \
-libauthen-ntlm-perl \
-libcgi-pm-perl \
-libcrypt-openssl-rsa-perl \
-libdata-uniqid-perl \
-libfile-copy-recursive-perl \
-libio-socket-inet6-perl \
-libio-socket-ssl-perl \
-libio-tee-perl \
-libhtml-parser-perl \
-libmail-imapclient-perl \
-libparse-recdescent-perl \
-libmodule-scandeps-perl \
-libreadonly-perl \
-libterm-readkey-perl \
-libtest-mockobject-perl \
-libtest-pod-perl \
-libunicode-string-perl \
-liburi-perl \
-libwww-perl \
-make \
-cpanminus
+apt install \
+ libauthen-ntlm-perl \
+ libcgi-pm-perl \
+ libcrypt-openssl-rsa-perl \
+ libdata-uniqid-perl \
+ libfile-copy-recursive-perl \
+ libio-socket-inet6-perl \
+ libio-socket-ssl-perl \
+ libio-tee-perl \
+ libhtml-parser-perl \
+ libmail-imapclient-perl \
+ libparse-recdescent-perl \
+ libmodule-scandeps-perl \
+ libreadonly-perl \
+ libterm-readkey-perl \
+ libtest-mockobject-perl \
+ libtest-pod-perl \
+ libunicode-string-perl \
+ liburi-perl \
+ libwww-perl \
+ libregexp-common-perl \
+ libtest-nowarnings-perl \
+ libtest-deep-perl \
+ libtest-warn-perl \
+ make \
+ cpanminus
+The package libdata-uniqid-perl is in the jessie-backports repository
+https://packages.debian.org/fr/jessie-backports/libdata-uniqid-perl
+
+Here is how to add jessie-backports repository in /etc/apt/sources.list
+
+https://backports.debian.org/Instructions/
+
+If you can't add the jessie-backports repository in /etc/apt/sources.list you
+have to install Perl module Data::Uniqid with cpanm:
+
+ cpanm Data::Uniqid
The following second command installs "manually" the Perl module Sys::MemInfo
-because Debian hasn't made it available via a package yet.
+because Debian 8 Jessie doesn't have this Perl module available via a package
+(but Debian 9 Stretch does):
cpanm Sys::MemInfo
@@ -176,9 +203,7 @@ After installing the dependencies, imapsync should be working.
You don't have to be root to test and use imapsync.
-Take imapsync either on github or at the upstream site:
-
- wget -N https://imapsync.lamiral.info/dist/imapsync
+Take imapsync either on github or at the upstream site.
Add execution permission to the downloaded script:
diff --git a/INSTALL.d/INSTALL.Docker.txt b/INSTALL.d/INSTALL.Docker.txt
index 8064b82..6ef7895 100644
--- a/INSTALL.d/INSTALL.Docker.txt
+++ b/INSTALL.d/INSTALL.Docker.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-# $Id: INSTALL.Docker.txt,v 1.1 2017/09/03 03:23:54 gilles Exp gilles $
+# $Id: INSTALL.Docker.txt,v 1.2 2017/10/22 14:21:46 gilles Exp gilles $
=======================================
= Installing imapsync docker image
@@ -14,4 +14,8 @@
docker run gilleslamiral/imapsync imapsync
+== Docker hub location ==
+
+https://hub.docker.com/r/gilleslamiral/imapsync/
+
diff --git a/INSTALL.d/INSTALL.Docker_build.txt b/INSTALL.d/INSTALL.Docker_build.txt
index 355a173..391438e 100644
--- a/INSTALL.d/INSTALL.Docker_build.txt
+++ b/INSTALL.d/INSTALL.Docker_build.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-# $Id: INSTALL.Docker_build.txt,v 1.5 2017/04/07 08:45:20 gilles Exp gilles $
+# $Id: INSTALL.Docker_build.txt,v 1.7 2018/04/10 00:16:18 gilles Exp gilles $
=================================================
= Building an imapsync docker image from Debian =
@@ -10,7 +10,7 @@
FROM debian:stretch
-LABEL maintainer "gilles.lamiral@laposte.net"
+LABEL maintainer "gilles@lamiral.info"
RUN apt-get update \
&& apt-get install -y \
@@ -29,6 +29,7 @@ RUN apt-get update \
libmodule-scandeps-perl \
libpar-packer-perl \
libreadonly-perl \
+ libregexp-common-perl \
libsys-meminfo-perl \
libterm-readkey-perl \
libtest-mockobject-perl \
diff --git a/INSTALL.d/INSTALL.FreeBSD.txt b/INSTALL.d/INSTALL.FreeBSD.txt
index fc8f331..c6dec1a 100644
--- a/INSTALL.d/INSTALL.FreeBSD.txt
+++ b/INSTALL.d/INSTALL.FreeBSD.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-# $Id: INSTALL.FreeBSD.txt,v 1.7 2016/11/07 10:40:53 gilles Exp gilles $
+# $Id: INSTALL.FreeBSD.txt,v 1.8 2018/04/10 00:16:52 gilles Exp gilles $
==================================
= Installing imapsync on FreeBSD =
diff --git a/INSTALL.d/INSTALL.OnlineUI.txt b/INSTALL.d/INSTALL.OnlineUI.txt
index 5370158..8204f55 100644
--- a/INSTALL.d/INSTALL.OnlineUI.txt
+++ b/INSTALL.d/INSTALL.OnlineUI.txt
@@ -1,21 +1,46 @@
#!/bin/cat
-# $Id: INSTALL.OnlineUI.txt,v 1.8 2017/09/01 22:50:06 gilles Exp gilles $
+# $Id: INSTALL.OnlineUI.txt,v 1.14 2018/04/24 00:14:51 gilles Exp gilles $
==============================
= Installing imapsync online =
==============================
Please consider this as relatively new and experimental.
-I add I'm begining to be confident with /X since the /X service
-is up and running quite well since january 2017.
+I add I'm beginning to be confident with /X since the /X service
+is up and running quite well since January 2017.
-You have to be a little familiar with what is a CGI script
-and how to activate it on an Apache (or any other) HTTP server.
+You have to be a little familiar with what a CGI script is
+and how to activate a CGI script on an the Apache (or any other)
+HTTP server.
-The web visual user interface frontend is the file
-https://imapsync.lamiral.info/X/imapsync_form.html
-You can do a "view source" to see it as it is written,
-and a "save" to get it locally.
+The web visual user interface frontend is compounded in three
+files, a html5 file, a css file, and a javascript file:
+
+* https://imapsync.lamiral.info/X/imapsync_form.html
+* https://imapsync.lamiral.info/X/imapsync_form.js
+* https://imapsync.lamiral.info/X/imapsync_form.css
+
+You can do a "view source" to see the html file as
+it is written, and a "save" to get it locally.
+The two other files called imapsync_form.js and
+imapsync_form.css can be saved the same way.
+
+Those three files can be put anywhere on a web server,
+as long as they stand in the same directory. If you
+want to put them in different directories, just change
+the content of imapsync_form.html to reflect the change,
+ie, change the two lines referencing imapsync_form.css and imapsync_form.js
+ href="imapsync_form.css" (near the beginning of imapsync_form.html)
+ src="imapsync_form.js" (near the end of imapsync_form.html)
+
+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.
+
+In order to make imapsync work as a cgi, there is two conditions.
+First it has to work by itself on the web host. If imapsync
+doesn't work by itself, on a command line, then it won't
+work as a cgi.
This imapsync_form.html file in action calls the CGI location
/cgi-bin/imapsync
@@ -26,33 +51,42 @@ https://imapsync.lamiral.info/imapsync
It is the program file used verbatim for the service given at
https://imapsync.lamiral.info/X/
-So copy both imapsync_form.html and imapsync on a HTTP server
-allowing CGIs and you'll have your own imapsync visual interface.
+Copy imapsync_form.* on a directory that is visible by your HTTP server.
+Copy the imapsync script on the cgi-bin/ directory
+allowing CGIs and you'll have your own imapsync visual interface
+and service.
+
+I haven't tested yet this visual interface on Windows nor Mac,
+feedback is welcome from successes or failures on those platforms.
Example on a Debian server with Apache:
-Imapsync place on the server disk:
+Imapsync script place on the server disk:
/usr/lib/cgi-bin/imapsync
-This classical /cgi-bin directory is configured in Apache
-configuration file
+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
-It contains somewhere (maybe in comments for now,
-with some # characters to make them ignored):
+The configuration file contains somewhere,
+maybe in comments for now, with some # characters
+at the beginning to make them ignored:
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
+ # Next line "no-gzip 1" is to avoid output buffering,
+ # clients can then see the log along the sync
+ SetEnv no-gzip 1
Options +ExecCGI -MultiViews
Order allow,deny
Allow from all
-The UI frontend file place on the server disk is
+The UI front-end file place on the server disk is
/var/www/X/imapsync_form.html
but it can be placed it anywhere on disk, the important
thing is that it has to be served by the web server.
@@ -60,11 +94,77 @@ thing is that it has to be served by the web server.
The imapsync working directory in cgi mode is
/var/tmp/imapsync_cgi/
it is not configurable unless changing it in
-imapsync directly, it is hardcoded in imapsync.
+imapsync directly, it is hard-coded in imapsync.
In this directory will go the log files and
the pid files.
Use at least 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.
+Example on a Centos 7 server with httpd Apache:
+
+ mkdir /var/www/html/X/
+ cp imapsync_form.html imapsync_form.js imapsync_form.css /var/www/html/X/
+
+ cp imapsync /var/www/cgi-bin/
+
+Check
+ http://yourhost/X/imapsync_form.html
+or the safer
+ https://yourhost/X/imapsync_form.html
+
+That's all for installing a /X service on Centos 7.
+
+====== mod_perl ======
+
+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'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
+
+# install mod-perl with
+
+ apt-get install libapache2-mod-perl2
+
+# edit the file /etc/apache2/mods-available/perl.conf
+# with the following lines
+ more /etc/apache2/mods-available/perl.conf
+
+
+ PerlModule ModPerl::PerlRun
+ Alias /perl-run/ /usr/lib/cgi-bin/
+
+ SetHandler perl-script
+ PerlResponseHandler ModPerl::PerlRun
+ PerlOptions +ParseHeaders
+ Options +ExecCGI
+
+
+
+# Enable the Apache perl module
+
+ a2enmod perl
+
+# Verify perl.conf and perl.load are in directory mods-enabled/
+
+ ls mods-enabled/perl.*
+
+# Reload Apache
+
+ apachectl graceful
+
+# Verify imapsync works under perl-run
+
+ curl http://localhost/perl-run/imapsync
+
+
+
+======================
diff --git a/INSTALL.d/INSTALL.Ubuntu.txt b/INSTALL.d/INSTALL.Ubuntu.txt
index 744285f..0d60125 100644
--- a/INSTALL.d/INSTALL.Ubuntu.txt
+++ b/INSTALL.d/INSTALL.Ubuntu.txt
@@ -1,5 +1,5 @@
#!/bin/cat
-# $Id: INSTALL.Ubuntu.txt,v 1.10 2017/03/30 11:23:37 gilles Exp gilles $
+# $Id: INSTALL.Ubuntu.txt,v 1.12 2018/05/06 15:03:29 gilles Exp gilles $
=================================================
= Installing imapsync on Ubuntu 16.04 or higher =
@@ -27,6 +27,7 @@ libmodule-scandeps-perl \
libnet-ssleay-perl \
libpar-packer-perl \
libreadonly-perl \
+libregexp-common-perl \
libsys-meminfo-perl \
libterm-readkey-perl \
libtest-fatal-perl \
@@ -36,6 +37,9 @@ libtest-requires-perl \
libtest-simple-perl \
libunicode-string-perl \
liburi-perl \
+libtest-nowarnings-perl \
+libtest-deep-perl \
+libtest-warn-perl \
make \
cpanminus
diff --git a/INSTALL.d/prerequisites_imapsync b/INSTALL.d/prerequisites_imapsync
index 9604e9a..27b5c85 100755
--- a/INSTALL.d/prerequisites_imapsync
+++ b/INSTALL.d/prerequisites_imapsync
@@ -1,10 +1,11 @@
#!/bin/sh
-# $Id: prerequisites_imapsync,v 1.21 2017/08/31 02:12:36 gilles Exp gilles $
+# $Id: prerequisites_imapsync,v 1.25 2018/04/24 00:14:23 gilles Exp gilles $
MODULES_MANDATORY='
+App::cpanminus
Authen::NTLM
-Class::Load
+CGI
Compress::Zlib
Crypt::OpenSSL::RSA
Data::Dumper
@@ -28,7 +29,6 @@ Mail::IMAPClient
Module::Implementation
Module::Runtime
Module::ScanDeps
-Net::Ping
Net::SSLeay
Package::Stash
Package::Stash::XS
@@ -36,6 +36,7 @@ PAR::Packer
Parse::RecDescent
Pod::Usage
Readonly
+Regexp::Common
Sys::MemInfo
Term::ReadKey
Test::Fatal
@@ -44,6 +45,9 @@ Test::MockObject
Test::More
Test::Pod
Test::Requires
+Test::NoWarnings
+Test::Deep
+Test::Warn
Try::Tiny
Unicode::String
URI::Escape
@@ -187,4 +191,6 @@ EXIT=$?
# Help the user to install missing modules
search_modules_any $LIST_TO_INSTALL
+
+test "$1" = "MODULES_MANDATORY" && search_modules_any $MODULES_MANDATORY
exit $EXIT
diff --git a/LOG_imapsync/imapsync_abortme.log b/LOG_imapsync/imapsync_abortme.log
new file mode 100644
index 0000000..3d6896c
--- /dev/null
+++ b/LOG_imapsync/imapsync_abortme.log
@@ -0,0 +1,40 @@
+Here is imapsync 1.882 on host petite, a linux system with 0.1/2.0 free GiB of RAM
+with Perl 5.22.1 and Mail::IMAPClient 3.39
+Transfer started at Sun May 6 01:19:07 2018
+PID is 8751
+Log file is LOG_imapsync/imapsync_abortme.log ( to change it, use --logfile path ; or use --nolog to turn off logging )
+Load is 0.60 0.56 0.79 2/503 on 2 cores
+Current directory is /home/gilles/public_html/imapsync
+Real user id is gilles (uid 1000)
+Effective user id is gilles (euid 1000)
+$RCSfile: imapsync,v $ $Revision: 1.882 $ $Date: 2018/05/05 21:10:43 $
+Command line used:
+./imapsync --host1 localhost --user1 tata --passfile1 ../../var/pass/secret.tata --host2 localhost --user2 titi --passfile2 ../../var/pass/secret.titi --pidfile /tmp/imapsync_abortme.pid --logfile imapsync_abortme.log --simulong 4
+Temp directory is /tmp ( to change it use --tmpdir dirpath )
+kill -QUIT 8751 # special behavior
+kill -TERM 8751 # special behavior
+kill -INT 8751 # special behavior
+kill -USR1 8751 # special behavior
+PID file is /tmp/imapsync_abortme.pid ( to change it use --pidfile filepath ; to avoid it use --pidfile "" )
+Writing my PID 8751 in /tmp/imapsync_abortme.pid
+Are you still here 1/20
+Are you still here 2/20
+Are you still here 3/20
+Are you still here 4/20
+Are you still here 5/20
+Are you still here 6/20
+Are you still here 7/20
+Are you still here 8/20
+Are you still here 9/20
+Are you still here 10/20
+Are you still here 11/20
+Are you still here 12/20
+Are you still here 13/20
+
+Got a signal QUIT (my PID is 8751). Asked to terminate
+Here are the final stats of this sync not completely finished so far
+Ended by a signal QUIT (my PID is 8751). I am asked to terminate immediately.
+You should resynchronize those accounts by running a sync again,
+since some messages and entire folders might still be missing on host2.
+Exiting with return value 6
+Log file is LOG_imapsync/imapsync_abortme.log ( to change it, use --logfile filepath ; or use --nolog to turn off logging )
diff --git a/Makefile b/Makefile
index f07ab3d..7178858 100644
--- a/Makefile
+++ b/Makefile
@@ -1,29 +1,29 @@
-# $Id: Makefile,v 1.257 2017/09/11 11:11:18 gilles Exp gilles $
+# $Id: Makefile,v 1.269 2018/05/06 15:09:09 gilles Exp gilles $
.PHONY: help usage all doc
help: usage
usage:
- @echo " imapsync $(VERSION), You can do :"
+ @echo " this is imapsync $(VERSION), You can do :"
@echo "make testp # it shows needed Perl modules from your distro or CPAN"
@echo "make install # as root"
@echo ""
@echo "All other goals are for the upstream developper"
- @echo "make testf # run tests"
- @echo "make testv # run tests verbosely"
+ @echo "make testf # run tests"
+ @echo "make testv # run tests verbosely"
@echo "make test_quick # few tests verbosely"
- @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"
- @echo "make W/test_exe.bat # run W/test_exe.bat 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"
+ @echo "make W/test_exe.bat # run W/test_exe.bat on win32"
@echo "make W/test_exe_tests.bat # run W/test_exe_tests.bat on win32"
- @echo "make W/test_exe_2.bat # run W/test_exe_2.bat on win32"
+ @echo "make W/test_exe_2.bat # run W/test_exe_2.bat on win32"
@echo "make examples/sync_loop_windows.bat # run examples/sync_loop_windows.bat on win32"
@echo "make win32_prereq # run W/install_modules.bat on win32"
@@ -34,7 +34,7 @@ usage:
@echo "make upload_FAQ # upload FAQs and documentation"
@echo "make upload_X # upload online UI"
@echo "make upload_latest # upload latest imapsync and binaries (dev)"
- @echo "make upload_cgi # upload latest imapsync"
+ @echo "make upload_cgi # upload latest imapsync online, after local and remote --tests success."
@echo "make valid_index # check index.shtml for good syntax"
@echo "make upload_ks"
@echo "make imapsync.exe"
@@ -49,34 +49,42 @@ usage:
@echo "make cle # Check links of S/*.shtml"
@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 ks2testsdebug # run ./imapsync --testsdebug on ks2"
@echo "make ks2tests # run ./imapsync --tests on ks2"
+ @echo "make ks2testslive # run ./imapsync --testslive on ks2"
PREFIX ?= /usr
-DIST_NAME=imapsync-$(VERSION)
-DIST_FILE=$(DIST_NAME).tgz
-DEB_FILE=$(DIST_NAME).deb
+DIST_PATH ::= dist2/
+VERSION ::= $(shell perl ./imapsync --version 2>/dev/null || cat VERSION)
+VERSION_PREVIOUS ::= $(shell perl ./$(DIST_PATH)/imapsync --version 2>/dev/null || echo ERROR)
+VERSION_EXE ::= $(shell cat ./VERSION_EXE)
-VERSION=$(shell perl -I$(IMAPClient) ./imapsync --version 2>/dev/null || cat VERSION)
-VERSION_PREVIOUS=$(shell perl -I$(IMAPClient) ./dist/imapsync --version 2>/dev/null || echo ERROR)
-VERSION_EXE=$(shell cat ./VERSION_EXE)
+IMAPClient_3xx ::= ./W/Mail-IMAPClient-3.39/lib
+IMAPClient ::= $(IMAPClient_3xx)
-HELLO=$(shell date;uname -a)
-IMAPClient_3xx=./W/Mail-IMAPClient-3.39/lib
-IMAPClient=$(IMAPClient_3xx)
-HOSTNAME = $(shell hostname -s)
-ARCH = $(shell uname -m)
-KERNEL = $(shell uname -s)
-BIN_NAME = imapsync_bin_$(KERNEL)_$(ARCH)
-DISTRO_NAME = $(shell lsb_release -i -s || echo Unknown)
-DISTRO_RELEASE = $(shell lsb_release -r -s || echo 0.0)
-DISTRO_CODE = $(shell lsb_release -c -s || echo Unknown)
-DISTRO = $(DISTRO_NAME)_$(DISTRO_RELEASE)_$(DISTRO_CODE)
+DIST_NAME ::= imapsync-$(VERSION)
+DIST_FILE ::= $(DIST_NAME).tgz
+DEB_FILE ::= $(DIST_NAME).deb
+
+HELLO ::= $(shell date;uname -a)
+
+HOSTNAME ::= $(shell hostname -s)
+ARCH ::= $(shell uname -m)
+KERNEL ::= $(shell uname -s)
+BIN_NAME ::= imapsync_bin_$(KERNEL)_$(ARCH)
+DISTRO_NAME ::= $(shell lsb_release -i -s || echo Unknown)
+DISTRO_RELEASE ::= $(shell lsb_release -r -s || echo 0.0)
+DISTRO_CODE ::= $(shell lsb_release -c -s || echo Unknown)
+DISTRO ::= $(DISTRO_NAME)_$(DISTRO_RELEASE)_$(DISTRO_CODE)
hello:
@echo "$(VERSION)"
+ @echo "$(DIST_NAME)"
+ @echo "$(VERSION_PREVIOUS)"
+ @echo "$(VERSION_EXE)"
@echo "$(IMAPClient)"
@echo "$(HOSTNAME)"
@echo "$(ARCH)"
@@ -128,10 +136,11 @@ clean: clean_tilde clean_man clean_log clean_bak clean_permissions
clean_permissions:
chmod a-x Makefile FAQ.d/FAQ.*.txt README_Windows.txt
+ chmod a-x FAQ.d/RCS/FAQ.*.txt,v
chmod a-x INSTALL.d/INSTALL.*.txt
chmod a-x X/progress.html X/imapsync_form.html
- chmod a-x S/*.shtml S/*.html
- chmod a-x doc/*.t2t dist/*.txt
+ chmod a-x S/*.shtml S/*.html index.shtml S/RCS/*.shtml,v S/RCS/*.html,v
+ chmod a-x doc/*.t2t $(DIST_PATH)/*.txt
clean_test:
rm -f .test_3xx
@@ -166,71 +175,70 @@ install: testp W/imapsync.1
-.PHONY: cidone ci
-
-ci: cidone
-
-cidone:
- rcsdiff W/*.bat W/*.sh W/*.out W/*.txt W/*.htaccess
- rcsdiff doc/*.t2t
- rcsdiff INSTALL.d/*.txt INSTALL.d/prerequisites_imapsync
- rcsdiff FAQ.d/*.txt
- rcsdiff examples/*.sh examples/*.bat examples/*.txt
- rcsdiff RCS/*
- rcsdiff W/tools/backup_old_dist W/tools/gen_README_dist W/tools/validate_html4 W/tools/validate_xml_html5 W/tools/fix_email_for_exchange.py
- rcsdiff S/*.txt S/*.shtml S/*.html
###############
# Local goals
###############
-.PHONY: prereq test tests unitests testp testf test3xx testv3 perlcritic allcritic crit compok dev
+.PHONY: prereq test tests unitests testp testf test3xx testv3 perlcritic allcritic crit compok dev cover tidy
dev: test crit bin
docker:
ssh ks3 'cd docker/imapsync && . memo'
+cover:
+ perl -MDevel::Cover ./imapsync --tests
+
+tidy: W/imapsync.tdy
+
+
+W/imapsync.tdy: imapsync
+ perltidy -i=8 -sts -pt=0 -l=0 -o W/imapsync.tdy imapsync
+
compok: W/.compok
W/.compok: imapsync
perl -c imapsync
- touch W/.compok
+ date >> W/.compok
-prereq: W/prereq.scandeps.$(DISTRO).txt
+prereq: W/prereq.scandeps.$(DISTRO).txt W/prereq.$(DISTRO).txt
W/prereq.scandeps.$(DISTRO).txt: INSTALL.d/prerequisites_imapsync imapsync
scandeps -c -x imapsync | tee W/prereq.scandeps.$(DISTRO).txt
rcsdiff W/prereq.scandeps.$(DISTRO).txt || { echo 'rcsdiff detected a diff' | ci -l W/prereq.scandeps.$(DISTRO).txt ; }
+
+W/prereq.$(DISTRO).txt: INSTALL.d/prerequisites_imapsync imapsync
./INSTALL.d/prerequisites_imapsync | tee W/prereq.$(DISTRO).txt
+ rcsdiff W/prereq.$(DISTRO).txt || { echo 'rcsdiff detected a diff' | ci -l W/prereq.$(DISTRO).txt ; }
crit: allcritic
-perlcritic: W/perlcritic_3.out W/perlcritic_2.out
+perlcritic: W/perlcritic_3.txt W/perlcritic_2.txt
-allcritic: W/perlcritic_4.out W/perlcritic_3.out W/perlcritic_2.out W/perlcritic_1.out
+allcritic: W/perlcritic_4.txt W/perlcritic_3.txt W/perlcritic_2.txt W/perlcritic_1.txt
-W/perlcritic_1.out: imapsync W/.compok
- perlcritic --statistics -1 imapsync > W/perlcritic_1.out.tmp || :
- mv W/perlcritic_1.out.tmp W/perlcritic_1.out
- echo | ci -l W/perlcritic_1.out
+W/perlcritic_1.txt: imapsync W/.compok
+ perlcritic --statistics -1 imapsync > W/perlcritic_1.txt.tmp || :
+ mv W/perlcritic_1.txt.tmp W/perlcritic_1.txt
+ echo | ci -l W/perlcritic_1.txt
-W/perlcritic_2.out: imapsync W/.compok
- perlcritic --statistics -2 imapsync > W/perlcritic_2.out.tmp || :
- mv W/perlcritic_2.out.tmp W/perlcritic_2.out
- echo | ci -l W/perlcritic_2.out
+W/perlcritic_2.txt: imapsync W/.compok
+ 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.out: imapsync W/.compok
- perlcritic --statistics -3 imapsync > W/perlcritic_3.out.tmp || :
- mv W/perlcritic_3.out.tmp W/perlcritic_3.out
- echo | ci -l W/perlcritic_3.out
+W/perlcritic_3.txt: imapsync W/.compok
+ 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
-W/perlcritic_4.out: imapsync W/.compok
- perlcritic --statistics -4 imapsync > W/perlcritic_4.out.tmp || :
- mv W/perlcritic_4.out.tmp W/perlcritic_4.out
- echo | ci -l W/perlcritic_4.out
+W/perlcritic_4.txt: imapsync W/.compok
+ perlcritic --statistics -4 imapsync > W/perlcritic_4.txt.tmp || :
+ mv W/perlcritic_4.txt.tmp W/perlcritic_4.txt
+ echo | ci -l W/perlcritic_4.txt
test_quick : test_quick_3xx
@@ -297,7 +305,12 @@ examples/sync_loop_windows.bat:
unix2dos examples/sync_loop_windows.bat
scp imapsync examples/file.txt examples/sync_loop_windows.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/sync_loop_windows.bat --nodry --dry --nodry'
-# ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/sync_loop_windows.bat '
+
+
+examples/infinite_loop_windows.bat:
+ unix2dos examples/infinite_loop_windows.bat
+ scp examples/infinite_loop_windows.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
+ ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/infinite_loop_windows.bat'
W/test2.bat:
unix2dos W/test2.bat
@@ -442,6 +455,11 @@ mactestsdebug:
rsync -p -e 'ssh -p 995' imapsync gilleslamira@gate.polarhome.com:
ssh -p 995 gilleslamira@gate.polarhome.com '. .bash_profile; perl imapsync --testsdebug --debug'
+mactestslive:
+ rsync -p -e 'ssh -p 995' imapsync gilleslamira@gate.polarhome.com:
+ ssh -p 995 gilleslamira@gate.polarhome.com '. .bash_profile; perl imapsync --testslive'
+
+
bin: lin mac win
lin: $(BIN_NAME)
@@ -468,24 +486,32 @@ $(BIN_NAME): imapsync
lfo: upload_lfo
-.PHONY: tarball
+.PHONY: tarball cidone ci
-tarball:
+tarball: cidone
echo making tarball ../prepa_dist/$(DIST_FILE)
- rcsdiff RCS/*
- cd W && rcsdiff RCS/*
- cd examples && rcsdiff RCS/*
mkdir -p dist
mkdir -p ../prepa_dist/$(DIST_NAME)
- rsync -aCvH --delete --omit-dir-times --exclude dist/ --exclude imapsync.exe ./ ../prepa_dist/$(DIST_NAME)/
+ rsync -aCvH --delete --omit-dir-times --exclude $(DIST_PATH) --exclude imapsync.exe ./ ../prepa_dist/$(DIST_NAME)/
cd ../prepa_dist && tar czfv $(DIST_FILE) $(DIST_NAME)
cd ../prepa_dist && md5sum $(DIST_FILE) > $(DIST_FILE).md5.txt
cd ../prepa_dist && md5sum -c $(DIST_FILE).md5.txt
ls -l ../prepa_dist/$(DIST_FILE)
+ci: cidone
+cidone:
+ rcsdiff RCS/*
+ rcsdiff W/*.bat W/*.sh W/*.txt W/*.txt W/*.htaccess
+ cd W && rcsdiff RCS/*
+ rcsdiff doc/*.t2t
+ rcsdiff INSTALL.d/*.txt INSTALL.d/prerequisites_imapsync
+ rcsdiff FAQ.d/*.txt
+ rcsdiff examples/*.sh examples/*.bat examples/*.txt
+ cd examples && rcsdiff RCS/*
+ rcsdiff W/tools/backup_old_dist W/tools/gen_README_dist W/tools/validate_html4 W/tools/validate_xml_html5 W/tools/fix_email_for_exchange.py
+ rcsdiff S/*.txt S/*.shtml S/*.html
-DIST_PATH := ./dist/
dist: cidone test clean all perlcritic dist_prepa dist_zip README_dist
@@ -499,7 +525,7 @@ sha:
.PHONY: moveoldrelease ks2testsdebug ks2tests README_dist
moveoldrelease:
- ./W/tools/backup_old_dist
+ ./W/tools/backup_old_dist $(DIST_PATH)
dist_prepa: tarball moveoldrelease
@@ -519,7 +545,7 @@ 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
+.PHONY: publish upload_ks ks valid_index biz ks2tests ks2tests_gilles ks2tests_root
biz: S/imapsync_sold_by_country.txt
@@ -530,10 +556,12 @@ S/imapsync_sold_by_country.txt: imapsync
ks:
rsync -avHz --delete --exclude imapsync.exe \
. gilles@ks.lamiral.info:public_html/imapsync/
+ 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 && /etc/init.d/apache2 reload'
ks3:
rsync -avHz --delete -P \
@@ -549,13 +577,34 @@ ks2testsdebug:
rsync -aP imapsync gilles@ks.lamiral.info:public_html/imapsync/imapsync
ssh gilles@ks.lamiral.info 'public_html/imapsync/imapsync --testsdebug'
-ks2tests:
+ks2tests: ks2tests_gilles ks2tests_root
+
+
+ks2tests_gilles:
rsync -aP imapsync gilles@ks.lamiral.info:public_html/imapsync/imapsync
ssh gilles@ks.lamiral.info 'public_html/imapsync/imapsync --tests'
+ks2tests_root:
+ rsync -aP imapsync root@ks.lamiral.info:
+ ssh root@ks.lamiral.info './imapsync --tests'
+
+ks2testslive:
+ rsync -aP imapsync gilles@ks.lamiral.info:public_html/imapsync/imapsync
+ ssh gilles@ks.lamiral.info 'public_html/imapsync/imapsync --testslive'
+
publish: dist upload_ks ksa
echo Now ou can do make ml
+centos:
+ scp imapsync INSTALL.d/prerequisites_imapsync root@vp1:
+ ssh root@vp1 sh prerequisites_imapsync
+
+
+
+
+
+
+
PUBLIC = ./ChangeLog ./NOLIMIT ./LICENSE ./CREDITS ./FAQ \
./index.shtml ./INSTALL ./README_Windows.txt \
./VERSION ./VERSION_EXE ./imapsync \
@@ -598,8 +647,8 @@ cle: ./W/checklinkext.txt
http://lamiral.info/~gilles/imapsync/S/imapservers.shtml \
| tee ./W/checklinkext.txt
-W/.valid.index.shtml: index.shtml S/*.shtml
- for f in index.shtml S/*.shtml; do echo tidy -q $$f; tidy -q $$f > /dev/null; done
+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
touch W/.valid.index.shtml
@@ -609,9 +658,9 @@ upload_bin:
rsync -a imapsync.exe imapsync_bin_Darwin imapsync_bin_Linux_i686 imapsync ../imapsync_website/
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
-upload_index: W/.valid.index.shtml
- rcsdiff index.shtml S/style.css S/*.shtml FAQ.d/*.txt LICENSE CREDITS TODO examples/*.bat index.shtml INSTALL.d/*.txt
- rsync -avH index.shtml FAQ INSTALL NOLIMIT LICENSE CREDITS TODO S/robots.txt S/favicon.ico ../imapsync_website/
+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 index.shtml INSTALL.d/*.txt
+ 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 ./examples/ ../imapsync_website/examples/
@@ -625,17 +674,18 @@ ci_imapsync:
rcsdiff imapsync
upload_latest: unitests ci_imapsync bin
- rsync -a imapsync imapsync_bin_Linux_i686 imapsync_bin_Darwin imapsync.exe ../imapsync_website/
+ rsync -a imapsync imapsync_bin_Linux_i686 imapsync_bin_Darwin imapsync.exe ./INSTALL.d/prerequisites_imapsync ../imapsync_website/
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
+ ssh root@ks.lamiral.info 'apachectl configtest && /etc/init.d/apache2 reload'
upload_cgi: unitests ks2tests ci_imapsync
rsync -a imapsync ../imapsync_website/
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
-
upload_X:
./W/tools/validate_xml_html5 X/imapsync_form.html
rcsdiff X/imapsync_form.html
+ rcsdiff X/imapsync_form.js
rsync -av --delete X/ ../imapsync_website/X/
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
@@ -652,9 +702,10 @@ upload_ks: ci tarball
rsync -aHv $(PUBLIC) ../imapsync_website/
rsync -aHv --delete ./W/ks.htaccess ../imapsync_website/.htaccess
rsync -avH ./S/ ../imapsync_website/S/
- rsync -aHv --delete ./dist/ ../imapsync_website/dist/
+ rsync -aHv --delete ./$(DIST_PATH)/ ../imapsync_website/$(DIST_PATH)/
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 -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@ks.lamiral.info:/var/www/imapsync/
+ ssh root@ks.lamiral.info 'apachectl configtest && /etc/init.d/apache2 reload'
\ No newline at end of file
diff --git a/README b/README
index 7f36b99..4085053 100644
--- a/README
+++ b/README
@@ -5,7 +5,7 @@ NAME
VERSION
- This documentation refers to Imapsync $Revision: 1.4 $
+ This documentation refers to Imapsync $Revision: 1.882 $
USAGE
@@ -21,7 +21,8 @@ USAGE
DESCRIPTION
- We sometimes need to transfer mailboxes from one imap server to another.
+ 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.
@@ -31,28 +32,37 @@ DESCRIPTION
(\Seen \Answered \Flagged etc.) are synced too.
Imapsync reduces the amount of data transferred by not transferring a
- given message if it resides already on both sides. Same specific headers
- and the transfer is done only once (by default it's "Message-Id:" and
- "Received:" lines but it can be changed with --useheader option).
+ given message if it resides already on both sides.
- All flags are preserved, unread will stay unread, read will stay read,
- deleted will stay deleted.
+ 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 stop the transfer at any time and restart it later, imapsync
- works well with bad connections and interruptions.
+ works well with bad connections and interruptions, by design.
You can decide to delete the messages from the source mailbox after a
successful transfer, it can be a good feature when migrating live
- mailboxes since messages will be only on one side. In that case, use the
- --delete1 option. Option --delete1 implies also option --expunge1 so all
- messages marked deleted on host1 will be really deleted.
+ mailboxes since messages will be only on one side.
+
+ In that case, use the --delete1 option. Option --delete1 implies also
+ option --expunge1 so all messages marked deleted on host1 will be really
+ deleted.
+
+ You can also decide to remove empty folders once all of their messages
+ have been transferred. Add --delete1emptyfolders to obtain this
+ behavior.
A different scenario is synchronizing a mailbox B from another mailbox A
- in case you just want to keep a "live" copy of A in B. In that case
- --delete2 has to be used, it deletes messages in host2 folder B that are
- not in host1 folder A. If you also need to destroy host2 folders that
- are not in host1 then use --delete2folders (see also
- --delete2foldersonly and --delete2foldersbutnot).
+ in case you just want to keep a "live" copy of A in B.
+
+ 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.
Imapsync is not adequate for maintaining two active imap accounts in
synchronization when the user plays independently on both sides. Use
@@ -80,11 +90,14 @@ OPTIONS
OPTIONS/credentials
--host1 str : Source or "from" imap server. Mandatory.
- --port1 int : Port to connect on host1. Default is 143, 993 if --ssl1
+ --port1 int : Port to connect on host1.
+ Optional since default port is 143 or 993 if --ssl1
--user1 str : User to login on host1. Mandatory.
--password1 str : Password for the user1.
+
--host2 str : "destination" imap server. Mandatory.
- --port2 int : Port to connect on host2. Default is 143, 993 if --ssl2
+ --port2 int : Port to connect on host2.
+ Optional since default port is 143 or 993 if --ssl2
--user2 str : User to login on host2. Mandatory.
--password2 str : Password for the user2.
@@ -101,13 +114,18 @@ OPTIONS
--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
@@ -153,7 +171,8 @@ OPTIONS
--nomixfolders : Do not merge folders when host1 is case-sensitive
while host2 is not (like Exchange). Only the first
- similar folder is synced (ex: Sent SENT sent -> Sent).
+ similar folder is synced (ex: with Sent SENT sent
+ on host1 only Sent will be synced to host2).
--skipemptyfolders : Empty host1 folders are not created on host2.
@@ -166,20 +185,17 @@ OPTIONS
--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 : Move whole host1 folders hierarchy under this
host2 folder str .
It does it by adding two --regextrans2 options before
all others. Add --debug to see what's really going on.
- --automap : guesses folders mapping, for folders like
- "Sent", "Junk", "Drafts", "All", "Archive", "Flagged".
- --f1f2 str1=str2 : Force folder str1 to be synced to str2,
- --f1f2 overrides --automap and --regextrans2.
-
- --nomixfolders : Avoid merging folders that are considered different on
- host1 but the same on destination host2 because of
- case sensitivities and insensitivities.
-
--subscribed : Transfers subscribed folders.
--subscribe : Subscribe to the folders transferred on the
host2 that are subscribed on host1. On by default.
@@ -202,7 +218,7 @@ OPTIONS
Then, when happy, remove --dry, remove --justfolders.
Have in mind that --regextrans2 is applied after prefix
and separator inversion. For examples see
- http://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt
+ https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt
OPTIONS/folders sizes
@@ -254,6 +270,12 @@ OPTIONS
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
@@ -298,6 +320,8 @@ OPTIONS
a message arrived on a host (mtime).
--idatefromheader : Sets the internal dates on host2 same as the
"Date:" headers.
+ If you encounter problems with dates see also
+ https://imapsync.lamiral.info/FAQ.d/FAQ.Dates.txt
OPTIONS/message selection
@@ -316,8 +340,11 @@ OPTIONS
--search str : Selects only messages returned by this IMAP SEARCH
command. Applied on both sides.
- --search1 str : Same as --search for selecting host1 messages only.
- --search2 str : Same as --search for selecting host2 messages only.
+ For a complete of what can be search see
+ https://imapsync.lamiral.info/FAQ.d/FAQ.Messages_Selection.txt
+
+ --search1 str : Same as --search but for selecting host1 messages only.
+ --search2 str : Same as --search but for selecting host2 messages only.
--search CRIT equals --search1 CRIT --search2 CRIT
--maxlinelength int : skip messages with a line length longer than int bytes.
@@ -331,11 +358,11 @@ OPTIONS
--usecache : Use cache to speed up the sync.
--nousecache : Do not use cache. Caveat: --useuid --nousecache creates
duplicates on multiple runs.
- --useuid : Use uid instead of header as a criterium to recognize
+ --useuid : Use UIDs instead of headers as a criterium to recognize
messages. Option --usecache is then implied unless
--nousecache is used.
- OPTIONS/miscelaneous
+ OPTIONS/miscellaneous
--syncacls : Synchronizes acls (Access Control Lists).
--nosyncacls : Does not synchronize acls. This is the default.
@@ -349,14 +376,14 @@ OPTIONS
--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.
+ --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 connexion.
+ 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.
@@ -386,7 +413,7 @@ OPTIONS
On by default, 2 seconds max, like --maxsleep 2
--abort : terminates a previous call still running.
- It uses the pidfile to know what processus to abort.
+ It uses the pidfile to know what process to abort.
--exitwhenover int : Stop syncing when total bytes transferred reached.
@@ -414,22 +441,24 @@ OPTIONS
SECURITY
You can use --passfile1 instead of --password1 to give the password
- since it is safer. With --password1 option any user on your host can see
- the password by using the 'ps auxwwww' command. Using a variable (like
- $PASSWORD1) is also dangerous because of the 'ps auxwwwwe' command. So,
- saving the password in a well protected file (600 or rw-------) is the
- best solution.
+ since it is safer. With --password1 option, any user on your host can
+ see the password by using the 'ps auxwwww' command. Using a variable
+ (like $PASSWORD1) is also dangerous because of the 'ps auxwwwwe'
+ command. So, saving the password in a well protected file (600 or
+ rw-------) is the best solution.
Imapsync activates ssl or tls encryption by default, if possible. What
- details are 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.
+ 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/tls detection fails 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
@@ -445,17 +474,17 @@ LICENSE AND COPYRIGHT
distribution or just read this simple sentence as it IS the licence
text:
- "No limit to do anything with this work and this license."
+ "No limits to do anything with this work and this license."
In case it is not long enough, I repeat:
- "No limit to do anything with this work and this license."
+ "No limits to do anything with this work and this license."
https://imapsync.lamiral.info/LICENSE
AUTHOR
- Gilles LAMIRAL
+ Gilles LAMIRAL
Feedback good or bad is very often welcome.
@@ -476,8 +505,8 @@ IMAP SERVERS supported
HUGE MIGRATION
Pay special attention to options --subscribed --subscribe --delete1
- --delete2 --delete2folders --maxage --minage --maxsize --useuid
- --usecache
+ --delete1emptyfolders --delete2 --delete2folders --maxage --minage
+ --maxsize --useuid --usecache
If you have many mailboxes to migrate think about a little shell
program. Write a file called file.txt (for example) containing users and
@@ -508,31 +537,36 @@ HUGE MIGRATION
in shell or batch programming !
You will find already written scripts at
- http://imapsync.lamiral.info/examples/
+ https://imapsync.lamiral.info/examples/
INSTALL
Imapsync works under any Unix with perl.
- Imapsync works under Windows (2000, XP, Vista, Seven)
- as a standalone binary software called imapsync.exe
+
+ Imapsync works under most Windows (2000, XP, Vista, Seven, Eight, Ten
+ and all Server releases 2000, 2003, 2008 and R2, 2012 and R2)
+ as a standalone binary software called imapsync.exe,
+ usually launched from a batch file in order to avoid always typing
+ the options.
+
Imapsync works under OS X as a standalone binary
- software called imapsync_bin_Darwin.
+ software called imapsync_bin_Darwin
Purchase latest imapsync at
- http://imapsync.lamiral.info/
+ 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
+ tar xzvf imapsync-x.xx.tgz
Go into the directory imapsync-x.xx and read the INSTALL file.
- As mentioned at http://imapsync.lamiral.info/#install
+ As mentioned at https://imapsync.lamiral.info/#install
the INSTALL file can also be found at
- http://imapsync.lamiral.info/INSTALL
+ https://imapsync.lamiral.info/INSTALL.d/INSTALL.ANY.txt
It is now split in several files for each system
- http://imapsync.lamiral.info/INSTALL.d/
+ https://imapsync.lamiral.info/INSTALL.d/
CONFIGURATION
@@ -543,17 +577,22 @@ HACKING
Feel free to hack imapsync as the NOLIMIT license permits it.
-SIMILAR SOFTWARES
+SIMILAR SOFTWARE
- imap_tools : http://www.athensfbc.com/imap_tools
+ See also https://imapsync.lamiral.info/S/external.shtml
+ for a better up to date list.
+
+ imap_tools : https://github.com/andrewnimmo/rick-sanders-imap-tools
offlineimap : https://github.com/nicolas33/offlineimap
+ Doveadm-Sync : http://wiki2.dovecot.org/Tools/Doveadm/Sync
+ ( Dovecot sync tool )
mbsync : http://isync.sourceforge.net/
mailsync : http://mailsync.sourceforge.net/
mailutil : http://www.washington.edu/imap/
part of the UW IMAP tookit.
imaprepl : http://www.bl0rg.net/software/
http://freecode.com/projects/imap-repl/
- imapcopy : http://home.arcor.de/armin.diehl/imapcopy/imapcopy.html
+ imapcopy : http://www.ardiehl.de/imapcopy/
migrationtool : http://sourceforge.net/projects/migrationtool/
imapmigrate : http://sourceforge.net/projects/cyrus-utils/
wonko_imapsync: http://wonko.com/article/554
@@ -567,11 +606,13 @@ HISTORY
I wrote imapsync because an enterprise (basystemes) paid me to install a
new imap server without losing huge old mailboxes located in a far away
- remote imap server, accessible by a low-bandwidth link. The tool imapcp
- (written in python) could not help me because I had to verify every
- mailbox was well transferred, and then delete it after a good transfer.
- 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).
+ remote imap server, accessible by a low-bandwidth often broken link. The
+ tool imapcp (written in python) could not help me because I had to
+ verify every mailbox was well transferred, and then delete it after a
+ good transfer. 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.
diff --git a/README_Windows.txt b/README_Windows.txt
index e5c790b..83d6056 100644
--- a/README_Windows.txt
+++ b/README_Windows.txt
@@ -1,4 +1,4 @@
-# $Id: README_Windows.txt,v 1.9 2017/09/11 02:57:38 gilles Exp gilles $
+# $Id: README_Windows.txt,v 1.11 2018/05/05 22:46:01 gilles Exp gilles $
#
# This is the README_Windows.txt file for imapsync
# imapsync : IMAP sync and migrate tool.
@@ -8,21 +8,21 @@ WINDOWS
There is two ways to install and use imapsync on Windows systems: A) or B).
-Standard users should only take the A) way.
+Standard users should take the A) way, the simplest way.
Developers, or powerful users that want to build their own imapsync.exe
-or modify it, have to consider the B) way.
+or modify it, have to consider the B) way, the complex but powerful way.
A) Simplest way
---------------
A.1) Get imapsync.
-Get imapsync at https://imapsync.lamiral.info/dist/
+Get imapsync at https://imapsync.lamiral.info/
You'll then have access to a zip archive file named imapsync_1.xxx.zip
where 1.xxx is the imapsync release number.
-A.2) Extract the zip file in a folder where you'll work with imapsync
+A.2) Extract the zip file in a folder where you will work with imapsync.
You can work on the Desktop since the zip file extraction creates
a unique folder named imapsync_1.xxx (where 1.xxx is the imapsync
@@ -32,33 +32,36 @@ A.3) Check the folder
In the folder extracted imapsync_1.xxx you see 6 files and 2 directories:
-* README_Windows.txt is the current file you are reading
+* README_Windows.txt is the current file you are reading.
* README.txt is the imapsync general document.
-* FAQ.d/* FAQs are a must read when something goes wrong.
-* imapsync_example.bat is a 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
+* 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 binary. You don't have to run it directly.
-* Cook/ is the directory to build imapsync.exe from its source.
+* Cook/ is the directory to build imapsync.exe from its source,
+ for the B) way and expert users.
You can copy or rename imapsync_example.bat as you wish as long as
its extension remains ".bat". On Windows systems .bat extension
means "I'm a batch script". Same thing for sync_loop_windows.bat.
-The batch scripts have to stay with imapsync.exe because
-of the way they call it, they use ".\imapsync.exe", so
-let them be in the same directory (or change the path .\
-to whatever you want if you understand what you're doing).
+The batch scripts have to stay in the same directory than
+imapsync.exe because of the way they call imapsync.exe,
+they use ".\imapsync.exe", so let them be in the same directory.
+Or change the path .\ to whatever you want if you understand what
+you're doing.
For the rest of this documentation I assume you copied
imapsync_example.bat to a file named imapsync_stuff.bat
-A.4) Edit the batch file
+A.4) Edit the batch file
Edit imapsync_stuff.bat and change the values with yours.
In order to edit it you have do a right click on it and select "modify"
in the list presented in the small window menu.
-Notepad or Notepadd++ are good editors to modify it.
-Office Word is not good for that job, don't use it!
+Notepad or Notepadd++ are very good editors to modify it.
+Office Word or any powerful text processor are not good for that job,
+don't use them!
Files FAQ.txt and FAQ.d/* contain many tips and special options sometimes
needed by specific imap server softwares like Exchange or Gmail.
@@ -66,12 +69,12 @@ needed by specific imap server softwares like Exchange or Gmail.
A.5) Run the batch file
-To run imapsync with your values just double-clic on
+To run imapsync with your values just double-click on
the batch file imapsync_stuff.bat
-You do not need to have administrator privilege to run imapsync.
+You do not need to have administrator privileges to run imapsync.
-A.6) Loop on A.5) A.6)
+A.6) Loop on A.5) A.6) edit, run, edit, run etc.
Loop the process of editing and running imapsync until
you solve all issues and all values suit your needs.
diff --git a/S/bc-payment.html b/S/bc-payment.html
old mode 100755
new mode 100644
index 9b1f122..2e1ac98
--- a/S/bc-payment.html
+++ b/S/bc-payment.html
@@ -1,13 +1,21 @@
-
+
+
+
+
-Pay with bitcoins
-
-
+
diff --git a/S/button.js b/S/button.js
new file mode 100644
index 0000000..9cf5e69
--- /dev/null
+++ b/S/button.js
@@ -0,0 +1 @@
+(function(){var e,n,t,o;t=function(e,n){var t,o,a,r,i,s,c,d,u,m;return c=[null,null,!1],a=c[0],o=c[1],s=c[2],(a=window.jQuery)&&(u=parseInt(e.split(".")[0])||0,m=parseInt(e.split(".")[1])||0,r=parseInt(a.fn.jquery.split(".")[0])||0,i=parseInt(a.fn.jquery.split(".")[1])||0,t=r>u||r===u&&i>=m),a&&t?n(a):(d=document.createElement("script"),d.type="text/javascript",d.src="https://code.jquery.com/jquery-1.8.3.min.js",d.onload=d.onreadystatechange=function(){return s||(o=this.readyState)&&"loaded"!==o&&"complete"!==o?void 0:(n((a=window.jQuery).noConflict(1)),a(d).remove())},(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(d))},e=function(e){return"development"===e||"test"===e?document.location.protocol+"//"+document.location.host:"https://www.coinbase.com"},n=function(t,o){var a,r;return window.coinbaseCookieLoaded?o(t):window.coinbaseCookieLoading?setTimeout(function(){return n(t,o)},200):(a=e(t("body").data("env")),window.coinbaseCookieLoading=!0,r=document.createElement("script"),r.src=a+"/checkouts/get_cookie.js",r.onload=r.onreadystatechange=function(){return window.coinbaseCookieLoaded=!0,window.coinbaseCookieLoading=!1,t(r).remove(),o(t)},(document.getElementsByTagName("head")[0]||document.documentElement).appendChild(r))},o=function(n){var t,o,a,r,i,s;return t=!1,o=!1,i=e(n("body").data("env")),s=function(e){var a,r,s;if(s=e.data.split("|"),r=s[0],a=s[1],a=escape(a),e.origin===i){if("show modal iframe"===r)return n("#coinbase_modal_iframe_"+a).show();if("coinbase_payment_complete"===r)return n("#coinbase_button_iframe_"+a).attr("src",i+"/buttons/paid"),n(document).trigger("coinbase_payment_complete",a);if("coinbase_payment_mispaid"===r)return n(document).trigger("coinbase_payment_mispaid",a);if("coinbase_payment_expired"===r)return n(document).trigger("coinbase_payment_expired",a);if("hide modal"===r)return n("#coinbase_modal_iframe_"+a).hide(),n(document).trigger("coinbase_modal_closed",a);if("signup redirect"===r)return document.location=i+"/users/verify";if("button frame loaded"===r){if(t=!0,o)return n(document).trigger("coinbase_button_loaded",a)}else if("checkouts frame loaded"===r&&(o=!0,t))return n(document).trigger("coinbase_button_loaded",a)}},r=function(e){switch(e){case"custom_large":return 276;case"custom_small":return 210;case"subscription_large":return 263;case"subscription_small":return 210;case"donation_large":return 189;case"donation_small":return 148;case"buy_now_large":return 211;case"buy_now_small":return 170;default:return 211}},a=function(e){switch(e){case"custom_large":return 62;case"custom_small":return 48;default:return 46}},window.addEventListener("message",s,!1),n(".coinbase-button").each(function(o){return function(o,s){var c,d,u,m,l,_,p,f;return c=n(s),m=c.data(),m.referrer=document.domain,p=n.param(m),u=c.data("code"),f=c.data("width")||r(c.data("button-style")),l=c.data("height")||a(c.data("button-style")),i=e(c.data("env")),d="",_="","none"===c.data("button-style")?t=!0:c.replaceWith(d),n("body").append(_)}}(this)),n(document).on("coinbase_show_modal",function(e,t){return n("#coinbase_modal_iframe_"+t).length>0?(n("#coinbase_modal_iframe_"+t).show(),frames["coinbase_modal_iframe_"+t].postMessage("show modal|"+t,i)):void 0})},t("1.7",function(e){return n(e,o)})}).call(this);
\ No newline at end of file
diff --git a/S/external.shtml b/S/external.shtml
old mode 100755
new mode 100644
index bbb30de..a009794
--- a/S/external.shtml
+++ b/S/external.shtml
@@ -32,8 +32,9 @@
External online IMAP migration services (back to menu)
@@ -65,16 +67,16 @@ I don't think they use Imapsync.
Prices are given par mailbox and may be outdated (December 2011).
@@ -105,7 +107,7 @@ alt="Viewable With Any Browser" />
This document last modified on
-($Id: external.shtml,v 1.20 2017/09/11 03:04:46 gilles Exp gilles $)
+($Id: external.shtml,v 1.24 2018/05/05 22:51:15 gilles Exp gilles $)
Top of the page
diff --git a/S/guestbook.shtml b/S/guestbook.shtml
old mode 100755
new mode 100644
index fbd5742..1b7990a
--- a/S/guestbook.shtml
+++ b/S/guestbook.shtml
@@ -1,7 +1,7 @@
-
+
Imapsync Guestbook
@@ -34,13 +34,13 @@ http://www.w3schools.com/html/html5_browsers.asp
Imapsync Guestbook
Your name is mandatory to post but don't hesitate to use a pseudonym!
-Email address is optional, only needed if you want a personnal reply.
+Email address is optional, only needed if you want a personal reply.
Have fun!
Feedback can also be done via:
-
+
@@ -50,7 +50,35 @@ Feedback can also be done via:
-