mirror of
https://github.com/imapsync/imapsync.git
synced 2024-11-16 15:52:47 +01:00
1.727
This commit is contained in:
parent
3eaac56812
commit
137242e609
216
ChangeLog
216
ChangeLog
@ -1,17 +1,225 @@
|
|||||||
|
|
||||||
RCS file: RCS/imapsync,v
|
RCS file: RCS/imapsync,v
|
||||||
Working file: imapsync
|
Working file: imapsync
|
||||||
head: 1.684
|
head: 1.727
|
||||||
branch:
|
branch:
|
||||||
locks: strict
|
locks: strict
|
||||||
gilles: 1.684
|
gilles: 1.727
|
||||||
access list:
|
access list:
|
||||||
symbolic names:
|
symbolic names:
|
||||||
keyword substitution: kv
|
keyword substitution: kv
|
||||||
total revisions: 684; selected revisions: 684
|
total revisions: 727; selected revisions: 727
|
||||||
description:
|
description:
|
||||||
----------------------------
|
----------------------------
|
||||||
revision 1.684 locked by: gilles;
|
revision 1.727 locked by: gilles;
|
||||||
|
date: 2016/08/19 10:30:36; author: gilles; state: Exp; lines: +53 -110
|
||||||
|
Bugfix. Fall back separator to / even when host has no mailbox at all.
|
||||||
|
Usability. Better warning about default ssl SSL_VERIFY_NONE
|
||||||
|
----------------------------
|
||||||
|
revision 1.726
|
||||||
|
date: 2016/08/16 21:32:35; author: gilles; state: Exp; lines: +19 -19
|
||||||
|
Changed "Checking --regexflag --skipmess --regexmess --maxlinelengthcmd --pipemess commands" with a space string instead of an empty one. Because pipemess() now fails when output is empty.
|
||||||
|
----------------------------
|
||||||
|
revision 1.725
|
||||||
|
date: 2016/08/16 00:01:48; author: gilles; state: Exp; lines: +122 -83
|
||||||
|
Some perl critics.
|
||||||
|
----------------------------
|
||||||
|
revision 1.724
|
||||||
|
date: 2016/08/13 11:04:06; author: gilles; state: Exp; lines: +362 -150
|
||||||
|
Refactor. No more global $pidfile, $pidfilelocking, $nb_errors, $errorsdump, @errors_log.
|
||||||
|
Refactor. Changed exit_clean. From exit_clean( 0 ) to exit_clean( $sync, $EX_OK ) ;
|
||||||
|
Refactor. Changed errors_incr. From errors_incr( $error ) to errors_incr( $sync, $error ).
|
||||||
|
Refactor. From stats( ) to stats( $sync ).
|
||||||
|
Added constants:
|
||||||
|
* $EXIT_WITH_ERRORS_MAX
|
||||||
|
* $EXIT_BY_SIGNAL
|
||||||
|
* $EXIT_WITH_ERRORS
|
||||||
|
* $EXIT_PID_FILE_ALREADY_EXIST
|
||||||
|
* $INTERVAL_TO_EXIT
|
||||||
|
----------------------------
|
||||||
|
revision 1.723
|
||||||
|
date: 2016/07/29 21:57:03; author: gilles; state: Exp; lines: +12 -11
|
||||||
|
Force Unconnected state with Ctrl-c.
|
||||||
|
----------------------------
|
||||||
|
revision 1.722
|
||||||
|
date: 2016/07/29 21:14:11; author: gilles; state: Exp; lines: +20 -12
|
||||||
|
Added sub debugsleep()
|
||||||
|
Changed --debugsleep to take a float parameter. --debugsleep 4.5 add a sleep of 4.5 seconds every folder and before every copied message.
|
||||||
|
----------------------------
|
||||||
|
revision 1.721
|
||||||
|
date: 2016/07/29 17:25:00; author: gilles; state: Exp; lines: +57 -29
|
||||||
|
Do reconnections when hit by a signal Ctrl-c, aka INT signal.
|
||||||
|
2 consecutive Ctrl-c within 1 second then exit the program.
|
||||||
|
----------------------------
|
||||||
|
revision 1.720
|
||||||
|
date: 2016/07/29 15:01:38; author: gilles; state: Exp; lines: +324 -225
|
||||||
|
Some Perl critics "not one of the allowed literal values". Now still 188 violations of ValuesAndExpressions::ProhibitMagicNumbers.
|
||||||
|
----------------------------
|
||||||
|
revision 1.719
|
||||||
|
date: 2016/07/25 19:27:47; author: gilles; state: Exp; lines: +229 -152
|
||||||
|
Change some print to myprint.
|
||||||
|
Fixed some perlcritic level 4 & 5
|
||||||
|
sub pipemess now abort on empty message generated.
|
||||||
|
sub pipemess prints stderr
|
||||||
|
----------------------------
|
||||||
|
revision 1.718
|
||||||
|
date: 2016/07/20 10:45:51; author: gilles; state: Exp; lines: +21 -13
|
||||||
|
Added --inet4 to force AF_INET connextion in ssl mode.
|
||||||
|
Added --inet6 too to force AF_INET6 in ssl mode. Might be useless.
|
||||||
|
----------------------------
|
||||||
|
revision 1.717
|
||||||
|
date: 2016/07/13 14:05:20; author: gilles; state: Exp; lines: +130 -57
|
||||||
|
Started tests_message_for_host2()
|
||||||
|
Added cyrillic for hard part --automap
|
||||||
|
--pipemess test with pipe (cat|cat)
|
||||||
|
--pipemess tests with arrors
|
||||||
|
----------------------------
|
||||||
|
revision 1.716
|
||||||
|
date: 2016/07/12 09:02:25; author: gilles; state: Exp; lines: +209 -81
|
||||||
|
Added full mocked tests to sub tests_delete1emptyfolders(). Test::MockObject is really helpful!
|
||||||
|
Changed pipemess() to return both message and stderr output, in list context. Scalar context stays the same, for now.
|
||||||
|
Added list context tests to tests_pipemess()
|
||||||
|
----------------------------
|
||||||
|
revision 1.715
|
||||||
|
date: 2016/07/05 21:17:48; author: gilles; state: Exp; lines: +10 -10
|
||||||
|
Removed from errors list "ignoring folder because it is not in host1 whole folders list". Too hard too.
|
||||||
|
----------------------------
|
||||||
|
revision 1.714
|
||||||
|
date: 2016/07/05 21:12:23; author: gilles; state: Exp; lines: +10 -10
|
||||||
|
Remove "not selectable" folders from the errors list. Too hard.
|
||||||
|
----------------------------
|
||||||
|
revision 1.713
|
||||||
|
date: 2016/07/05 12:50:35; author: gilles; state: Exp; lines: +21 -18
|
||||||
|
Added "ignoring folder" in the errors list.
|
||||||
|
----------------------------
|
||||||
|
revision 1.712
|
||||||
|
date: 2016/06/30 01:35:02; author: gilles; state: Exp; lines: +202 -21
|
||||||
|
Added option --delete1emptyfolders ; 8 hours to write it.
|
||||||
|
Added module dependency Test::MockObject for some tests. Only require for now.
|
||||||
|
----------------------------
|
||||||
|
revision 1.711
|
||||||
|
date: 2016/06/22 20:23:33; author: gilles; state: Exp; lines: +10 -10
|
||||||
|
Removed a useless debug output
|
||||||
|
----------------------------
|
||||||
|
revision 1.710
|
||||||
|
date: 2016/06/22 14:47:23; author: gilles; state: Exp; lines: +28 -27
|
||||||
|
Perlcritic fixes. ValuesAndExpressions::ProhibitMagicNumbers some 3 and is_a_release_number tests.
|
||||||
|
----------------------------
|
||||||
|
revision 1.709
|
||||||
|
date: 2016/06/22 11:32:40; author: gilles; state: Exp; lines: +58 -37
|
||||||
|
Perlcritic fixes. ValuesAndExpressions::ProhibitMagicNumbers -1 => $LAST or $MINUS_ONE.
|
||||||
|
----------------------------
|
||||||
|
revision 1.708
|
||||||
|
date: 2016/06/22 10:32:45; author: gilles; state: Exp; lines: +193 -192
|
||||||
|
Perlcritic fixes. ProhibitParensWithBuiltins, Last ones.
|
||||||
|
----------------------------
|
||||||
|
revision 1.707
|
||||||
|
date: 2016/06/18 00:37:24; author: gilles; state: Exp; lines: +64 -81
|
||||||
|
Perlcritic fixes. ProhibitParensWithBuiltins, exists() => exists. But not all. Need to examine precedence with not or and etc.
|
||||||
|
Uncommented call to $test_builder->reset( ) Don't know why it was commented but it was bad for knowing tests go wrong.
|
||||||
|
----------------------------
|
||||||
|
revision 1.706
|
||||||
|
date: 2016/06/17 13:34:09; author: gilles; state: Exp; lines: +13 -13
|
||||||
|
Sugar. "return (" => "return("
|
||||||
|
----------------------------
|
||||||
|
revision 1.705
|
||||||
|
date: 2016/06/17 13:28:23; author: gilles; state: Exp; lines: +422 -422
|
||||||
|
Replaced all print( calls by myprint( calls.
|
||||||
|
It prepares better output handling, I hope.
|
||||||
|
----------------------------
|
||||||
|
revision 1.704
|
||||||
|
date: 2016/06/17 13:25:16; author: gilles; state: Exp; lines: +36 -36
|
||||||
|
Replaced smyprintf by mysprintf
|
||||||
|
----------------------------
|
||||||
|
revision 1.703
|
||||||
|
date: 2016/06/17 13:12:09; author: gilles; state: Exp; lines: +700 -697
|
||||||
|
Perlcritic fixes. Rmoved parentheses, ProhibitParensWithBuiltins, for defined|scalar|push|keys|unshift|uc
|
||||||
|
but added parentheses to print.
|
||||||
|
Replaced printf by myprintf
|
||||||
|
Replaced sprinf by smyprintf.
|
||||||
|
----------------------------
|
||||||
|
revision 1.702
|
||||||
|
date: 2016/06/15 22:43:35; author: gilles; state: Exp; lines: +495 -495
|
||||||
|
Fixed perl critic 458 violations of ValuesAndExpressions::ProhibitInterpolationOfLiterals. "Useless interpolation of literal string". 2 left but critic bugs on them. "\1foo" is not '\1foo' but critic suggests equality.
|
||||||
|
----------------------------
|
||||||
|
revision 1.701
|
||||||
|
date: 2016/06/12 23:39:04; author: gilles; state: Exp; lines: +812 -812
|
||||||
|
Fixed perlcritic "Don't use whitespace at the end of lines". Was 627 violations of CodeLayout::ProhibitTrailingWhitespace. Now 0. For now...
|
||||||
|
----------------------------
|
||||||
|
revision 1.700
|
||||||
|
date: 2016/06/12 20:55:25; author: gilles; state: Exp; lines: +33 -33
|
||||||
|
Fixed perlcritic latest ouble-sigil dereference $$foo => ${ $ffo } and $#$foo => $#{ $foo }
|
||||||
|
----------------------------
|
||||||
|
revision 1.699
|
||||||
|
date: 2016/06/12 19:51:52; author: gilles; state: Exp; lines: +29 -29
|
||||||
|
Fixed perlcritic Double-sigil dereference @$foo => @{ $foo }
|
||||||
|
----------------------------
|
||||||
|
revision 1.698
|
||||||
|
date: 2016/06/12 19:39:15; author: gilles; state: Exp; lines: +33 -36
|
||||||
|
Fixed perlcritic %$foo => %{ $ff }
|
||||||
|
Double-sigil dereference
|
||||||
|
----------------------------
|
||||||
|
revision 1.697
|
||||||
|
date: 2016/06/12 18:42:18; author: gilles; state: Exp; lines: +53 -24
|
||||||
|
Perl critic fixes. 10 x "Unnamed numeric literals make code less maintainable.". use Readonly to fix them.
|
||||||
|
----------------------------
|
||||||
|
revision 1.696
|
||||||
|
date: 2016/06/09 23:42:34; author: gilles; state: Exp; lines: +201 -201
|
||||||
|
Fixed perlcritic 'Quotes used with a string containing no non-whitespace characters'.
|
||||||
|
"" or '' => q{}
|
||||||
|
" " or ' ' => q{ }
|
||||||
|
----------------------------
|
||||||
|
revision 1.695
|
||||||
|
date: 2016/06/09 18:17:14; author: gilles; state: Exp; lines: +15 -10
|
||||||
|
Check connected state in sub create_folder().
|
||||||
|
----------------------------
|
||||||
|
revision 1.694
|
||||||
|
date: 2016/06/08 21:01:15; author: gilles; state: Exp; lines: +43 -17
|
||||||
|
Added patch: [imapsync/imapsync] Update XOAUTH2 support to work with Google's newer .json files (#68).
|
||||||
|
----------------------------
|
||||||
|
revision 1.693
|
||||||
|
date: 2016/06/07 21:13:03; author: gilles; state: Exp; lines: +38 -28
|
||||||
|
CGI loaded when needed only.
|
||||||
|
In CGI mode, Remove all content in unsafe evalued options.
|
||||||
|
In CGI mode, help solving permission issues.
|
||||||
|
----------------------------
|
||||||
|
revision 1.692
|
||||||
|
date: 2016/05/25 16:34:15; author: gilles; state: Exp; lines: +11 -11
|
||||||
|
Small typo
|
||||||
|
----------------------------
|
||||||
|
revision 1.691
|
||||||
|
date: 2016/05/24 20:56:34; author: gilles; state: Exp; lines: +25 -18
|
||||||
|
Fixed -1 false output for big account %d => %s in printf.
|
||||||
|
Wrote and use getpwuid_any_os. getpwuid breaks on Windows.
|
||||||
|
----------------------------
|
||||||
|
revision 1.690
|
||||||
|
date: 2016/05/14 21:21:56; author: gilles; state: Exp; lines: +33 -23
|
||||||
|
*** empty log message ***
|
||||||
|
----------------------------
|
||||||
|
revision 1.689
|
||||||
|
date: 2016/05/09 17:58:11; author: gilles; state: Exp; lines: +155 -20
|
||||||
|
Started to be CGI compatible.
|
||||||
|
Started package Imapsync::Getopt::Long.
|
||||||
|
----------------------------
|
||||||
|
revision 1.688
|
||||||
|
date: 2016/03/27 22:56:47; author: gilles; state: Exp; lines: +11 -11
|
||||||
|
Check return code of message_to_file in sub message_for_host2.
|
||||||
|
----------------------------
|
||||||
|
revision 1.687
|
||||||
|
date: 2016/03/24 20:39:33; author: gilles; state: Exp; lines: +10 -10
|
||||||
|
Replaced message_string() call by message_to_file() and won 1x again.
|
||||||
|
Now imapsync crunches only 2x biggest message size in memory.
|
||||||
|
----------------------------
|
||||||
|
revision 1.686
|
||||||
|
date: 2016/03/24 20:21:57; author: gilles; state: Exp; lines: +27 -27
|
||||||
|
Changed append_message_on_host2() to pass message string by reference.
|
||||||
|
Memory usage passed from 5x to 3x. 3x remains from underlying Mail::IMAPClient module in Mail::IMAPClient::message_string()
|
||||||
|
----------------------------
|
||||||
|
revision 1.685
|
||||||
|
date: 2016/03/24 17:02:13; author: gilles; state: Exp; lines: +65 -35
|
||||||
|
Added memory debug in order to decrease the 5x message size in memory.
|
||||||
|
----------------------------
|
||||||
|
revision 1.684
|
||||||
date: 2016/03/17 08:35:03; author: gilles; state: Exp; lines: +24 -16
|
date: 2016/03/17 08:35:03; author: gilles; state: Exp; lines: +24 -16
|
||||||
Bugfix. No more warning about "Use of uninitialized value $sockargs[7] in join or string at"
|
Bugfix. No more warning about "Use of uninitialized value $sockargs[7] in join or string at"
|
||||||
in ssl or tls mode. Was due to "'SSL_version' => undef".
|
in ssl or tls mode. Was due to "'SSL_version' => undef".
|
||||||
|
83
FAQ
83
FAQ
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: FAQ,v 1.221 2016/03/07 02:55:01 gilles Exp gilles $
|
# $Id: FAQ,v 1.224 2016/06/08 21:32:09 gilles Exp gilles $
|
||||||
|
|
||||||
+-------------------+
|
+-------------------+
|
||||||
| FAQs for imapsync |
|
| FAQs for imapsync |
|
||||||
@ -121,36 +121,6 @@ post to this list if you want to stay private.
|
|||||||
|
|
||||||
Thank you for your participation.
|
Thank you for your participation.
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. Can I copy or sync Calendar or Contacts with imapsync?
|
|
||||||
|
|
||||||
R. No. It's because most IMAP servers don't get contacts and calendar
|
|
||||||
events via IMAP. In other words, messages synced by imapsync from
|
|
||||||
Calendar 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.
|
|
||||||
See next question.
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. How can I copy or synchronize Calendars or Contacts?
|
|
||||||
|
|
||||||
R1. It can't be done with imapsync.
|
|
||||||
|
|
||||||
R2. It can be done, depending on the email server softwares used.
|
|
||||||
|
|
||||||
a) From Exchange to Exchange, export contacts and calendar to
|
|
||||||
PST format files on host1 and import them on host2.
|
|
||||||
|
|
||||||
b) From Gmail to Gmail, export and import calendars in ical format,
|
|
||||||
extension for those files is .ics.
|
|
||||||
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) 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!
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. Where I can find old imapsync releases?
|
Q. Where I can find old imapsync releases?
|
||||||
|
|
||||||
@ -320,11 +290,11 @@ http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247.aspx#maxpath
|
|||||||
The workaround solution given at the previous link,
|
The workaround solution given at the previous link,
|
||||||
ie using \\?\D:", does not work for imapsync.
|
ie using \\?\D:", does not work for imapsync.
|
||||||
So this imapsync Windows bug is still pending and needs a fix using
|
So this imapsync Windows bug is still pending and needs a fix using
|
||||||
a different technic to cache, like a database file for example.
|
a different technique to cache, like a database file for example.
|
||||||
|
|
||||||
A solution to fix the issue is to use a Linux virtual host on a
|
A solution to fix the issue is to use a Linux virtual host on a
|
||||||
Windows box, with VirtualBox or VmWare etc. There is no bug this way,
|
Windows box, with VirtualBox or VmWare etc. There is no bug this way,
|
||||||
pathnames can be several thousands charaters long.
|
pathnames can be several thousands characters long.
|
||||||
Better said that done but not so difficult nor expensive these days,
|
Better said that done but not so difficult nor expensive these days,
|
||||||
VirtualBox is free and VmWare Player is free for personal or test use.
|
VirtualBox is free and VmWare Player is free for personal or test use.
|
||||||
|
|
||||||
@ -400,14 +370,6 @@ Q. How can I use imapsync with Mail::IMAPClient 2.2.9 perl module?
|
|||||||
|
|
||||||
R. Mail::IMAPClient 2.2.9 is no longer supported.
|
R. Mail::IMAPClient 2.2.9 is no longer supported.
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. I get "Out of memory" errors. How to fix that?
|
|
||||||
|
|
||||||
R. Usually "Out of memory" errors are related to old days,
|
|
||||||
to old Mail::IMAPClient module releases, before 3.26.
|
|
||||||
Look at imapsync output first lines to get the Mail::IMAPClient release used.
|
|
||||||
Then upgrade Mail::IMAPClient Perl module if needed.
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. Can I use imapsync to migrate emails from pop3 server to imap server?
|
Q. Can I use imapsync to migrate emails from pop3 server to imap server?
|
||||||
|
|
||||||
@ -526,35 +488,6 @@ R. Use a backslash to escape the characters:
|
|||||||
It works for the star * character,
|
It works for the star * character,
|
||||||
I don't know if it works for the " character.
|
I don't know if it works for the " character.
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. On Windows, some passwords contain $ characters. Login fails.
|
|
||||||
R1. Enclose passwords between ""
|
|
||||||
|
|
||||||
imapsync ... --password1 "zzz$zz$$z"
|
|
||||||
|
|
||||||
R2. Prefix each $ character with a ^ since ^ is the escape character
|
|
||||||
on Windows
|
|
||||||
|
|
||||||
imapsync ... --password1 zzz^$zz^$^$z
|
|
||||||
|
|
||||||
For a password that is exactly the 8 characters string $%&<>|^"
|
|
||||||
you have to enter
|
|
||||||
|
|
||||||
imapsync ... --password1 "$%%&<>|^"^"
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. On Windows, some passwords begin with an equal = character.
|
|
||||||
Login fails. What can I do?
|
|
||||||
|
|
||||||
R. Use twice equals == characters instead; For example, if =secret
|
|
||||||
is the password then use:
|
|
||||||
|
|
||||||
imapsync ... --password1 ==secret
|
|
||||||
|
|
||||||
or even
|
|
||||||
|
|
||||||
imapsync ... --password1 "==secret"
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. With huge account (many messages) when it comes to reading the
|
Q. With huge account (many messages) when it comes to reading the
|
||||||
destination server it comes out this error:
|
destination server it comes out this error:
|
||||||
@ -587,16 +520,6 @@ R. Use the following syntax:
|
|||||||
imapsync ... --user1="loginuser*admin_user" --password1 "admin_user_password"
|
imapsync ... --user1="loginuser*admin_user" --password1 "admin_user_password"
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
|
||||||
Q. How to migrate to Dovecot with an admin/MasterUser account?
|
|
||||||
|
|
||||||
R. Dovecot uses the same syntax as uw-imap
|
|
||||||
|
|
||||||
imapsync ... --user2="loginuser*admin_user" --password2 "admin_user_password"
|
|
||||||
|
|
||||||
To setup a Dovecot MasterUser see
|
|
||||||
http://wiki2.dovecot.org/Authentication/MasterUsers
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Q. How to migrate from cyrus with an admin account?
|
Q. How to migrate from cyrus with an admin account?
|
||||||
|
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
|
|
||||||
# $Id: .htaccess,v 1.1 2016/01/18 18:13:48 gilles Exp gilles $
|
|
||||||
|
|
||||||
AddDescription "<b>Domino</b>." FAQ.Domino.txt
|
|
||||||
AddDescription "<b>Dovecot</b>." FAQ.Dovecot.txt
|
|
||||||
AddDescription "<b>Duplicated</b> messages issues." FAQ.Duplicates.txt
|
|
||||||
AddDescription "<b>Exchange 20xx</b> and <b>Office365</b>." FAQ.Exchange.txt
|
|
||||||
AddDescription "<b>Changing folders names</b>." FAQ.Folders_Mapping.txt
|
|
||||||
AddDescription "<b>Flags</b>." FAQ.Flags.txt
|
|
||||||
AddDescription "<b>Gmail</b> accounts." FAQ.Gmail.txt
|
|
||||||
AddDescription "<b>ISP</b>." FAQ.ISP.txt
|
|
||||||
AddDescription "<b>Massive/bulk migrations</b>." FAQ.Massive.txt
|
|
||||||
AddDescription "<b>Selecting messages</b>." FAQ.Messages_selection.txt
|
|
||||||
AddDescription "<b>Oracle-UCS</b>." FAQ.Oracle-UCS.txt
|
|
||||||
AddDescription "<b>Security</b>." FAQ.Security.txt
|
|
||||||
AddDescription "<b>SmarterMail</b>." FAQ.SmarterMail.txt
|
|
||||||
AddDescription "<b>Various imap server</b> softwares." FAQ.Various_Server_Softwares.txt
|
|
||||||
AddDescription "<b>XOAUTH2</b> (<b>Gmail</b>)." FAQ.XOAUTH2.txt
|
|
||||||
|
|
||||||
|
|
1
FAQ.d/.htaccess
Symbolic link
1
FAQ.d/.htaccess
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
htaccess.txt
|
23
FAQ.d/FAQ.Archiving.txt
Normal file
23
FAQ.d/FAQ.Archiving.txt
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/cat
|
||||||
|
$Id: FAQ.Archiving.txt,v 1.2 2016/05/09 13:03:14 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
|
============================================
|
||||||
|
Imapsync tips about archiving messages.
|
||||||
|
============================================
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
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 --delete --noexpungeaftereach
|
||||||
|
|
||||||
|
Add option --noexpungeaftereach if speed is a concern.
|
||||||
|
Add option --delete if you want to move messages, instead of just copy/sync them.
|
||||||
|
|
||||||
|
R2. See also file FAQ.Folders_Mapping.txt
|
||||||
|
|
@ -1,25 +0,0 @@
|
|||||||
#!/bin/cat
|
|
||||||
$Id: FAQ.Connection.txt,v 1.2 2016/03/16 13:33:51 gilles Exp gilles $
|
|
||||||
|
|
||||||
This documentation is also at http://imapsync.lamiral.info/#doc
|
|
||||||
|
|
||||||
============================================
|
|
||||||
Imapsync tips about connection issues.
|
|
||||||
============================================
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q.How to test a ssl imap connection without imapsync?
|
|
||||||
|
|
||||||
R1.Use openssl command like the following,
|
|
||||||
an example with imap.gmail.com server:
|
|
||||||
|
|
||||||
openssl s_client -connect imap.gmail.com:993
|
|
||||||
|
|
||||||
The previous command is an interactive connection, hit ctrl-c
|
|
||||||
to finish it. If you want to finish it gently, then use:
|
|
||||||
|
|
||||||
{ sleep 1; echo "a LOGOUT"; } | openssl s_client -connect imap.gmail.com:993
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
|
|
49
FAQ.d/FAQ.Contacts_Calendars.txt
Normal file
49
FAQ.d/FAQ.Contacts_Calendars.txt
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/cat
|
||||||
|
$Id: FAQ.Contacts_Calendars.txt,v 1.3 2016/05/09 13:37:21 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
|
=========================================================
|
||||||
|
Imapsync issues about syncing Contacts & Calendars.
|
||||||
|
=========================================================
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. Can I copy or sync Calendar or Contacts with imapsync?
|
||||||
|
|
||||||
|
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
|
||||||
|
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.
|
||||||
|
But see next question.
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. How can I copy or synchronize Calendars or Contacts?
|
||||||
|
|
||||||
|
R1. It can't be done with imapsync. See previous question for explanations.
|
||||||
|
|
||||||
|
R2. It can be done, depending on the email server softwares used.
|
||||||
|
|
||||||
|
a) From Exchange to Exchange, export contacts and calendar to
|
||||||
|
PST format files on host1 and import them on host2.
|
||||||
|
|
||||||
|
b) From Gmail to Gmail, export and import calendars in ical format,
|
||||||
|
extension for those files is .ics.
|
||||||
|
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) 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 Sumatra company
|
||||||
|
https://twitter.com/sumatra_dev
|
||||||
|
http://sumatra.com/
|
||||||
|
|
||||||
|
d) I plan to make tools for that but so far nothing has began
|
||||||
|
more than this discussion:
|
||||||
|
http://www.linux-france.org/prj/imapsync_list/msg01797.html
|
||||||
|
http://www.linux-france.org/prj/imapsync_list/msg01811.html
|
||||||
|
|
||||||
|
=======================================================================
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Dates.txt,v 1.2 2016/03/07 02:08:12 gilles Exp gilles $
|
$Id: FAQ.Dates.txt,v 1.3 2016/07/27 13:14:30 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also at http://imapsync.lamiral.info/#doc
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
@ -25,21 +25,26 @@ but not with:
|
|||||||
|
|
||||||
A thing to keep in mind, imapsync does not touch any byte of messages
|
A thing to keep in mind, imapsync does not touch any byte of messages
|
||||||
unless told to do so by option --regexmess or --pipemess
|
unless told to do so by option --regexmess or --pipemess
|
||||||
Messages on both parts should be identical.
|
Messages on both parts should be exactly identical.
|
||||||
|
|
||||||
Now I explain the whole picture about dates of messages.
|
Now I explain the whole picture about dates of messages.
|
||||||
|
|
||||||
There are several different dates for any message.
|
There are several different dates for any message.
|
||||||
First, there is the "Date:" header. Most of the time, this date is set
|
First, there is the "Date:" header, which belongs to the message itself.
|
||||||
by the MUA (MUA means Mail User Agent) it can be Outlook, Thunderbird,
|
You can see this "Date:" header line by asking View->Message Source
|
||||||
a webmail or Mutt. The Date header is usually the date the message was written
|
in most email client software (Ctrl-u in Thunderbird).
|
||||||
|
Most of the time, this date is set by the MUA, MUA stands for "Mail User Agent".
|
||||||
|
MUA can be Outlook, Thunderbird, a webmail or Mutt etc.
|
||||||
|
The Date header is usually the date the message was written
|
||||||
or sent the first time, at the writer side.
|
or sent the first time, at the writer side.
|
||||||
This Date: header line is never changed by any transfer or copy.
|
This "Date:" header line is never changed by any transfer or copy.
|
||||||
If an email reader uses the "Date:" header for displaying the date of a
|
If an email reader uses the "Date:" header for displaying the date of a
|
||||||
message then no problem should arise.
|
message then no problem should arise.
|
||||||
|
|
||||||
Another date is the internal date. In IMAP, the internal date is handled
|
Another date is the internal date. In IMAP, the internal date is handled
|
||||||
by the server and normally it corresponds to the arrival date in the mailbox.
|
by the server and normally it corresponds to the arrival date in the mailbox.
|
||||||
|
This date is not part of the email message itself, it's a metadata kept
|
||||||
|
by the imap server.
|
||||||
The IMAP protocol allows the internal date to be set by a email client
|
The IMAP protocol allows the internal date to be set by a email client
|
||||||
when a message is delivered by the imap APPEND command.
|
when a message is delivered by the imap APPEND command.
|
||||||
Imapsync synchronizes internal dates by default, internal dates on host2
|
Imapsync synchronizes internal dates by default, internal dates on host2
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Duplicates.txt,v 1.9 2016/03/08 21:17:21 gilles Exp gilles $
|
$Id: FAQ.Duplicates.txt,v 1.10 2016/04/17 19:06:39 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also at http://imapsync.lamiral.info/#doc
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
@ -20,21 +20,50 @@ R0.
|
|||||||
Normally and by default, imapsync doesn't generate duplicates.
|
Normally and by default, imapsync doesn't generate duplicates.
|
||||||
So if it does generate duplicates it means a problem occurs
|
So if it does generate duplicates it means a problem occurs
|
||||||
with message identification. It happens sometimes with IMAP
|
with message identification. It happens sometimes with IMAP
|
||||||
servers changing the "Message-Id" line or "Received:" in
|
servers changing the "Message-Id" header line or one or more
|
||||||
the header part of messages.
|
of the "Received:" header lines in the header part of messages.
|
||||||
|
Imapsync uses "Message-Id" header line and "Received:" header
|
||||||
|
lines to identify messages on both sides.
|
||||||
|
|
||||||
R1.
|
R1.
|
||||||
You can use option --useuid, with it, imapsync won't use
|
A first solution is to use option --useuid.
|
||||||
header lines to compare messages in folders.
|
With option --useuid, imapsync doesn't use header lines
|
||||||
Keep in mind it uses a local cache.
|
to identify and compare messages in folders.
|
||||||
|
Instead of some headers, --useuid tell imapsync to use
|
||||||
|
the imap UIDs given by imap servers on bith sides.
|
||||||
|
To avoid duplicates on next runs, imapsync uses a local cache
|
||||||
|
where it keeps UIDs already transfered.
|
||||||
|
|
||||||
imapsync ... --useuid
|
imapsync ... --useuid
|
||||||
|
|
||||||
|
There is an issue when --useuid is not used the first time.
|
||||||
A big issue with --useuid is that it doesn't generate duplicates if
|
A big issue with --useuid is that it doesn't generate duplicates if
|
||||||
used from the first time but it does generate duplicates after a previous
|
used from the first time but it does generate duplicates after a previous
|
||||||
run without --useuid (because it uses a different method to identify
|
run without --useuid (because then uses a different method to identify
|
||||||
the messages). A solution? it depends. --delete2 solves this problem
|
the messages).
|
||||||
if you are permitted to use it.
|
|
||||||
|
A solution? Two solutions.
|
||||||
|
|
||||||
|
The easiest is --delete2
|
||||||
|
if you are permitted to use it. Option --delete2 removes messages on host2
|
||||||
|
that are not on host1 so with --delete2 you go for resyncing all
|
||||||
|
messages again but all previously transferred messages are deleted,
|
||||||
|
and also messages previously there without imapsync.
|
||||||
|
So --useuid --delete2 is easy to remove duplicates but not for
|
||||||
|
all context.
|
||||||
|
|
||||||
|
A second solution, better if R2 works (see R2 below), is to build
|
||||||
|
the cache before using --useuid
|
||||||
|
|
||||||
|
First sync:
|
||||||
|
|
||||||
|
imapsync ... --useheader "Message-Id" --addheader --usecache
|
||||||
|
|
||||||
|
Next syncs:
|
||||||
|
|
||||||
|
imapsync ... --useuid
|
||||||
|
imapsync ... --useuid
|
||||||
|
...
|
||||||
|
|
||||||
R2.
|
R2.
|
||||||
Best way if you can follow it.
|
Best way if you can follow it.
|
||||||
|
35
FAQ.d/FAQ.Emptying.txt
Normal file
35
FAQ.d/FAQ.Emptying.txt
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/cat
|
||||||
|
$Id: FAQ.Emptying.txt,v 1.4 2016/04/24 00:07:47 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
|
============================================
|
||||||
|
Imapsync tip to empty an account.
|
||||||
|
============================================
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. How to delete all emails of all folders of an account with imapsync?
|
||||||
|
|
||||||
|
R. Use the same account on both sides with option --delete
|
||||||
|
--noexpungeaftereach
|
||||||
|
|
||||||
|
Option --noexpungeaftereach is just to speed up the deletion.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
./imapsync \
|
||||||
|
--host1 test.lamiral.info --user1 test --password1 secret \
|
||||||
|
--host2 test.lamiral.info --user2 test --password2 secret \
|
||||||
|
--delete --noexpungeaftereach
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. How to delete all folders of an account with imapsync?
|
||||||
|
|
||||||
|
R. Use an already empty account as source and sync this account
|
||||||
|
to the account you want to clear, with --delete2folders
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
./imapsync ... --delete2folders --foldersizes
|
||||||
|
|
||||||
|
=======================================================================
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Exchange.txt,v 1.20 2016/03/03 15:44:17 gilles Exp gilles $
|
$Id: FAQ.Exchange.txt,v 1.23 2016/08/10 01:29:37 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also at http://imapsync.lamiral.info/#doc
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
@ -91,7 +91,6 @@ In case you don't have it you can still use
|
|||||||
--regexmess 's,(.{9900}),$1\r\n,g'
|
--regexmess 's,(.{9900}),$1\r\n,g'
|
||||||
instead of --maxlinelengthcmd 'reformime -r7'
|
instead of --maxlinelengthcmd 'reformime -r7'
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. How to sync from XXX to Office365
|
Q. How to sync from XXX to Office365
|
||||||
|
|
||||||
@ -143,7 +142,7 @@ R3. Try with a classic email client like Thunderbird and the same
|
|||||||
=======================================================================
|
=======================================================================
|
||||||
Q. Exchange fails with "User is authenticated but not connected".
|
Q. Exchange fails with "User is authenticated but not connected".
|
||||||
|
|
||||||
R. "The message User is authenticated but not connected is due to a
|
R1. "The message User is authenticated but not connected is due to a
|
||||||
bug in the Exchange server's IMAP implementation. If the client
|
bug in the Exchange server's IMAP implementation. If the client
|
||||||
presents a valid user name but an invalid password, the server
|
presents a valid user name but an invalid password, the server
|
||||||
accepts the login, but subsequent commands fail with the
|
accepts the login, but subsequent commands fail with the
|
||||||
@ -152,6 +151,10 @@ http://unix.stackexchange.com/questions/164823/user-is-authenticated-but-not-con
|
|||||||
Thanks to James Abbottsmith for this link and explanation at
|
Thanks to James Abbottsmith for this link and explanation at
|
||||||
https://github.com/imapsync/imapsync/issues/32#issuecomment-153561647
|
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. Exchange fails with "BAD Command received in Invalid state".
|
Q. Exchange fails with "BAD Command received in Invalid state".
|
||||||
|
|
||||||
@ -276,7 +279,7 @@ R. It looks like limiting 4 messages per second is enough to never
|
|||||||
imapsync ... --maxmessagespersecond 4
|
imapsync ... --maxmessagespersecond 4
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Q. How to migrate from or to Exchange 2007/2010 with an
|
Q. How to migrate from or to Exchange 2007/2010/2013 with an
|
||||||
admin/authuser account?
|
admin/authuser account?
|
||||||
|
|
||||||
R. The tricks comes from Michele Marcionelli and Benjamin Priestman:
|
R. The tricks comes from Michele Marcionelli and Benjamin Priestman:
|
||||||
@ -326,9 +329,6 @@ The command that I used for imapsync is:
|
|||||||
--user2 "windows-domain\admin-user\aaaa" ^
|
--user2 "windows-domain\admin-user\aaaa" ^
|
||||||
--password2 admin-password ...
|
--password2 admin-password ...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Q. How to migrate from or to Office 365 with an admin/authuser account?
|
Q. How to migrate from or to Office 365 with an admin/authuser account?
|
||||||
|
|
||||||
@ -336,8 +336,7 @@ Note from Yago Torres Fernandez:
|
|||||||
(a working command using admin/authuser on host2 Office 365)
|
(a working command using admin/authuser on host2 Office 365)
|
||||||
|
|
||||||
imapsync ... --authuser2 user_admin@domain.com --user2 user_to_be_migrated@domain.com ^
|
imapsync ... --authuser2 user_admin@domain.com --user2 user_to_be_migrated@domain.com ^
|
||||||
--password2 XXXX --ssl2 --exclude "Shared Folders" ^
|
--password2 XXXX --ssl2 ^
|
||||||
--regextrans2 "s#Trash$#Papelera#" --regextrans2 "s#^Deleted Items$#Papelera#"
|
|
||||||
|
|
||||||
but previous in Office365 you must do something like that, using powershell:
|
but previous in Office365 you must do something like that, using powershell:
|
||||||
|
|
||||||
@ -351,8 +350,6 @@ Same behavior with the --authuser2 option.
|
|||||||
See also:
|
See also:
|
||||||
http://www.linux-france.org/prj/imapsync_list/msg02203.html
|
http://www.linux-france.org/prj/imapsync_list/msg02203.html
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Q. How to migrate from or to Exchange 2003 with an admin/authuser
|
Q. How to migrate from or to Exchange 2003 with an admin/authuser
|
||||||
account?
|
account?
|
||||||
@ -387,8 +384,6 @@ In case you are not aware:
|
|||||||
omitted in our case
|
omitted in our case
|
||||||
- Use --debugimap when testing initial connectivity, if necessary
|
- Use --debugimap when testing initial connectivity, if necessary
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. Couldn't create folder [trash] "Mailbox already exists".
|
Q. Couldn't create folder [trash] "Mailbox already exists".
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Folders_Selection.txt,v 1.3 2016/02/07 22:01:56 gilles Exp gilles $
|
$Id: FAQ.Folders_Selection.txt,v 1.4 2016/06/07 22:19:04 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also at http://imapsync.lamiral.info/#doc
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
@ -9,6 +9,16 @@ This documentation is also at http://imapsync.lamiral.info/#doc
|
|||||||
|
|
||||||
By default, Imapsync syncs all folders, one by one, in alphanumeric order.
|
By default, Imapsync syncs all folders, one by one, in alphanumeric order.
|
||||||
|
|
||||||
|
The IMAP protocol has a specific way to code folder names,
|
||||||
|
when these names use non-ascii 7bit characters.
|
||||||
|
Imapsync uses the same code as IMAP.
|
||||||
|
In order to well specify them on the command line you will be
|
||||||
|
helped by the complete folder list printed by imapsync at each run.
|
||||||
|
The left column is what you have to use without the first enclosing
|
||||||
|
square brackets, the right column is the human utf8 view.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Q. How can I sync only one folder?
|
Q. How can I sync only one folder?
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Gmail.txt,v 1.21 2016/03/17 20:14:14 gilles Exp gilles $
|
$Id: FAQ.Gmail.txt,v 1.25 2016/07/22 00:18:35 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also at http://imapsync.lamiral.info/#doc
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
@ -11,6 +11,8 @@ Questions anwswered in this FAQ are:
|
|||||||
|
|
||||||
Q. Can I use imapsync to transfer from or to Gmail accounts?
|
Q. Can I use imapsync to transfer from or to Gmail accounts?
|
||||||
|
|
||||||
|
Q. How many days does it take to transfer X GB?
|
||||||
|
|
||||||
Q. How to synchronize from Gmail to Gmail?
|
Q. How to synchronize from Gmail to Gmail?
|
||||||
|
|
||||||
Q. How to synchronize from XXX to Gmail?
|
Q. How to synchronize from XXX to Gmail?
|
||||||
@ -50,8 +52,18 @@ it has to be allowed in the Gmail configuration part:
|
|||||||
-> Enable IMAP
|
-> Enable IMAP
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. How to synchronize from Gmail to Gmail?
|
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
|
||||||
|
http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
||||||
|
From the previous link,
|
||||||
|
it's 2X days to upload X GB to Gmail
|
||||||
|
it's X/2 days to download X BG from Gmail
|
||||||
|
but that's the theory.
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. How to synchronize from Gmail to Gmail?
|
||||||
|
|
||||||
R. Use the following example:
|
R. Use the following example:
|
||||||
|
|
||||||
@ -64,7 +76,7 @@ R. Use the following example:
|
|||||||
--ssl2 \
|
--ssl2 \
|
||||||
--user2 account2@gmail.com \
|
--user2 account2@gmail.com \
|
||||||
--password2 gmailsecret2 \
|
--password2 gmailsecret2 \
|
||||||
--exitwhenover 500000000 \
|
--maxbytespersecond 10000 \
|
||||||
--automap \
|
--automap \
|
||||||
--exclude "\[Gmail\]$"
|
--exclude "\[Gmail\]$"
|
||||||
|
|
||||||
@ -74,17 +86,18 @@ Explanations:
|
|||||||
--ssl1 --ssl2 are mandatory since Gmail only supports
|
--ssl1 --ssl2 are mandatory since Gmail only supports
|
||||||
imap ssl connections.
|
imap ssl connections.
|
||||||
|
|
||||||
--exitwhenover 500000000 ( ~500 MB ) option is here to avoid
|
--maxbytespersecond 10000 ( 10 kBytes/s ) option is here to avoid
|
||||||
locking or errors when imap transfers exceed maximum limit.
|
locking or errors when imap transfers exceed Gmail maximum limit.
|
||||||
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
||||||
--exitwhenover is not mandatory in the sense Gmail may allow you
|
--maxbytespersecond 10000 is not mandatory in the sense Gmail may
|
||||||
to use an upper value than 500 MB without disconnections; I don't
|
allow you to use an upper value than 1 GBytes per 24h without
|
||||||
know the hard value, it seems to vary, so just have some tries
|
disconnections.
|
||||||
and report me what you discover in case you detect something
|
|
||||||
reliable.
|
|
||||||
|
|
||||||
--automap is not mandatory but it's a feature to automatically
|
--automap is not mandatory but it's a feature to automatically
|
||||||
map folder names based on the Gmail user configuration itself, par account.
|
map folder names based on the Gmail user configuration itself, par account.
|
||||||
|
It will save manual folder names changes or the use of --regextrans2
|
||||||
|
or --f1f2 to map folder names.
|
||||||
For example, imap folder "[Gmail]/Sent Mail" may be mapped as one of
|
For example, imap folder "[Gmail]/Sent Mail" may be mapped as one of
|
||||||
E-mails enviados
|
E-mails enviados
|
||||||
Enviada
|
Enviada
|
||||||
@ -97,7 +110,7 @@ Skickat
|
|||||||
Verzonden
|
Verzonden
|
||||||
etc.
|
etc.
|
||||||
on both sides, host1 or host2, maybe differently, sometimes in
|
on both sides, host1 or host2, maybe differently, sometimes in
|
||||||
incomprehensible alphabets, a headache for imap sysadmins.
|
incomprehensible alphabets, a headache for imap sysadmins.
|
||||||
See a listing here:
|
See a listing here:
|
||||||
http://stackoverflow.com/questions/2185391/localized-gmail-imap-folders/2185548#2185548
|
http://stackoverflow.com/questions/2185391/localized-gmail-imap-folders/2185548#2185548
|
||||||
|
|
||||||
@ -112,34 +125,32 @@ Q. How to synchronize from XXX to Gmail?
|
|||||||
|
|
||||||
R. Use the following example:
|
R. Use the following example:
|
||||||
|
|
||||||
imapsync --host1 mail.oldhost.com \
|
imapsync --host1 mail.oldhost.com \
|
||||||
--user1 my_email@oldhost.com \
|
--user1 my_email@oldhost.com \
|
||||||
--password1 password \
|
--password1 password \
|
||||||
--host2 imap.gmail.com \
|
--host2 imap.gmail.com \
|
||||||
--user2 my_email@gmail.com \
|
--user2 my_email@gmail.com \
|
||||||
--password2 password \
|
--password2 password \
|
||||||
--ssl2 \
|
--ssl2 \
|
||||||
--exitwhenover 500000000 \
|
--maxbytespersecond 10000 \
|
||||||
--maxsize 25000000 \
|
--maxsize 25000000 \
|
||||||
--automap \
|
--automap \
|
||||||
--expunge1 \
|
--expunge1 \
|
||||||
--addheader \
|
--addheader \
|
||||||
--exclude "\[Gmail\]$" \
|
--exclude "\[Gmail\]$" \
|
||||||
--regextrans2 "s/[ ]+/_/g" \
|
--regextrans2 "s/[ ]+/_/g" \
|
||||||
--regextrans2 "s/[\^]/_/g" \
|
--regextrans2 "s/['\^\"\\\\]/_/g"
|
||||||
--regextrans2 "s/['\"\\\\]/_/g"
|
|
||||||
|
|
||||||
Explanations:
|
Explanations:
|
||||||
|
|
||||||
--ssl2 is mandatory since Gmail only supports imap ssl connections.
|
--ssl2 is mandatory since Gmail only supports imap ssl connections.
|
||||||
|
|
||||||
--exitwhenover 500000000 option is here to avoid locking when
|
--maxbytespersecond 10000 ( 10 kBytes/s ) option is here to avoid
|
||||||
transfers exceed maximum limit.
|
locking or errors when imap transfers exceed Gmail maximum limit.
|
||||||
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
||||||
--exitwhenover is not mandatory in the sense you may be able to
|
--maxbytespersecond 10000 is not mandatory in the sense Gmail may
|
||||||
use an upper value than 500 MB without disconnections; I don't
|
allow you to use an upper value than 1 GBytes per 24h without
|
||||||
know the hard value, it seems to vary, so just have some tries
|
disconnections.
|
||||||
and report me what you discover in case you detect something.
|
|
||||||
|
|
||||||
--maxsize 25000000 is mandatory since Gmail limits messages size
|
--maxsize 25000000 is mandatory since Gmail limits messages size
|
||||||
up to 25 MB. This value increases over time, it was 10 MB some
|
up to 25 MB. This value increases over time, it was 10 MB some
|
||||||
@ -147,7 +158,7 @@ years ago so you can try higher values. The Gmail page about
|
|||||||
this limit is https://support.google.com/mail/answer/6584
|
this limit is https://support.google.com/mail/answer/6584
|
||||||
|
|
||||||
--automap is optional but it will save manual folder names
|
--automap is optional but it will save manual folder names
|
||||||
changes or the use of --regextrans2 to map folder names.
|
changes or the use of --regextrans2 or --f1f2 to map folder names.
|
||||||
|
|
||||||
--expunge1 is optional. It deletes messages marked \Deleted on host1.
|
--expunge1 is optional. It deletes messages marked \Deleted on host1.
|
||||||
Imapsync syncs messages with all their flags, Gmail takes the messages
|
Imapsync syncs messages with all their flags, Gmail takes the messages
|
||||||
@ -203,7 +214,7 @@ R. Use this example:
|
|||||||
--user2 tata \
|
--user2 tata \
|
||||||
--password2 tatasecret \
|
--password2 tatasecret \
|
||||||
--ssl1 \
|
--ssl1 \
|
||||||
--exitwhenover 2500000000 \
|
--maxbytespersecond 20000 \
|
||||||
--useheader="X-Gmail-Received" \
|
--useheader="X-Gmail-Received" \
|
||||||
--useheader "Message-Id" \
|
--useheader "Message-Id" \
|
||||||
--automap \
|
--automap \
|
||||||
@ -219,14 +230,12 @@ Explanations:
|
|||||||
|
|
||||||
--ssl1 is mandatory since Gmail only supports imap ssl connections.
|
--ssl1 is mandatory since Gmail only supports imap ssl connections.
|
||||||
|
|
||||||
--exitwhenover 2500000000 (2.5 GB) option is here to avoid
|
--maxbytespersecond 20000 ( 20 kBytes/s ) option is here to avoid
|
||||||
locking when transfers exceed maximum limit.
|
locking or errors when imap transfers exceed Gmail maximum limit.
|
||||||
|
|
||||||
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
||||||
--exitwhenover is not mandatory in the sense you may be able to
|
--maxbytespersecond 20000 is not mandatory in the sense Gmail may
|
||||||
use an upper value than 2.5 GB without disconnections; I don't
|
allow you to use an upper value than 2 GBytes per 24h without
|
||||||
know the hard value, it seems to vary, so just have some tries
|
disconnections.
|
||||||
and report me what you discover in case you detect something.
|
|
||||||
|
|
||||||
--useheader="X-Gmail-Received" --useheader "Message-Id" are not
|
--useheader="X-Gmail-Received" --useheader "Message-Id" are not
|
||||||
mandatory. I use them because I found (several years ago, it may
|
mandatory. I use them because I found (several years ago, it may
|
||||||
@ -245,10 +254,6 @@ get rid of this "[Gmail]" part with that.
|
|||||||
You can select folders exported to imap within the gmail preferences,
|
You can select folders exported to imap within the gmail preferences,
|
||||||
for example you may unselect all "System labels".
|
for example you may unselect all "System labels".
|
||||||
|
|
||||||
--exitwhenover option is here to avoid locking when transfers
|
|
||||||
exceed maximum limit.
|
|
||||||
See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
|
|
||||||
|
|
||||||
--skipcrossduplicates is optional but it can save Gigabytes of hard
|
--skipcrossduplicates is optional but it can save Gigabytes of hard
|
||||||
disk memory. Within imap protocol, Gmail presents Gmail labels as
|
disk memory. Within imap protocol, Gmail presents Gmail labels as
|
||||||
folders, so a message labeled "Work" "ProjectX" "Urgent" ends up
|
folders, so a message labeled "Work" "ProjectX" "Urgent" ends up
|
||||||
@ -270,37 +275,24 @@ label CanWait and only it.
|
|||||||
--skipcrossduplicates, will only put in "[Gmail]/All Mail"
|
--skipcrossduplicates, will only put in "[Gmail]/All Mail"
|
||||||
the messages that are not labeled at all.
|
the messages that are not labeled at all.
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. Can I use the Extension of the SEARCH command: X-GM-RAW described at
|
|
||||||
https://support.google.com/mail/answer/7190?hl=en
|
|
||||||
https://developers.google.com/gmail/imap_extensions#extension_of_the_search_command_x-gm-raw
|
|
||||||
|
|
||||||
R. Sure. Example, to search only emails with attachment and in unread state:
|
|
||||||
|
|
||||||
On Unix:
|
|
||||||
|
|
||||||
imapsync ... --search 'X-GM-RAW "has:attachment in:unread"'
|
|
||||||
|
|
||||||
On Windows:
|
|
||||||
|
|
||||||
imapsync.exe ... --search "X-GM-RAW ""has:attachment in:unread"""
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
|
||||||
Q. How to avoid the [IMAP] prefix on Gmail side?
|
|
||||||
How to stop creating folder with this prefix?
|
|
||||||
Any switch we can use? e.g. [IMAP]/Archive
|
|
||||||
|
|
||||||
R. No switch in imapsync since [IMAP]/ prefix is done by Gmail,
|
|
||||||
it might be configurable within Gmail parameters configuration.
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. I can't authenticate with Gmail via IMAP
|
Q. I can't authenticate with Gmail via IMAP
|
||||||
and Gmail says "Please log in via your web browser"
|
and Gmail says "Please log in via your web browser"
|
||||||
|
|
||||||
|
R0. My current settings on two Gmail account are made
|
||||||
|
with 0) 1) 2)
|
||||||
|
|
||||||
|
0) Login via a browser to the Gmail account concerned.
|
||||||
|
|
||||||
|
1) The 2-step verification is OFF
|
||||||
|
https://myaccount.google.com/security?hl=en&pli=1&nlr=1#signin
|
||||||
|
|
||||||
|
2) Access for less secure apps is turned ON
|
||||||
|
https://www.google.com/settings/security/lesssecureapps
|
||||||
|
https://support.google.com/accounts/answer/6010255?hl=en
|
||||||
|
|
||||||
R1. See Coert Grobbelaar solution:
|
R1. See Coert Grobbelaar solution:
|
||||||
https://security.stackexchange.com/questions/86404/how-do-i-interact-with-google-to-import-email-via-imapsync
|
https://web.archive.org/web/20150906230041/http://security.stackexchange.com/questions/86404/how-do-i-interact-with-google-to-import-email-via-imapsync
|
||||||
|
|
||||||
R2. I had the same issue one time (mars 2015) logging to Gmail
|
R2. I had the same issue one time (mars 2015) logging to Gmail
|
||||||
with imapsync.
|
with imapsync.
|
||||||
@ -309,9 +301,6 @@ so I logged for this account via a web browser,
|
|||||||
it asked me to receive a code via a mobile, I said yes,
|
it asked me to receive a code via a mobile, I said yes,
|
||||||
I entered the code and everything went ok.
|
I entered the code and everything went ok.
|
||||||
|
|
||||||
R3. Use https://www.google.com/settings/security/lesssecureapps
|
|
||||||
(thanks to Flavio Zarur)
|
|
||||||
See https://support.google.com/accounts/answer/6010255?hl=en
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. Can not open imap connection on [imap.gmail.com]:
|
Q. Can not open imap connection on [imap.gmail.com]:
|
||||||
@ -353,6 +342,29 @@ https://support.google.com/mail/answer/78755?hl=en
|
|||||||
To really remove messages in folder "[Gmail]/All Mail", they have to
|
To really remove messages in folder "[Gmail]/All Mail", they have to
|
||||||
be moved to the "Trash" folder and be deleted from "Trash".
|
be moved to the "Trash" folder and be deleted from "Trash".
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. Can I use the Extension of the SEARCH command: X-GM-RAW described at
|
||||||
|
https://support.google.com/mail/answer/7190?hl=en
|
||||||
|
https://developers.google.com/gmail/imap_extensions#extension_of_the_search_command_x-gm-raw
|
||||||
|
|
||||||
|
R. Sure. Example, to search only emails with attachment and in unread state:
|
||||||
|
|
||||||
|
On Unix:
|
||||||
|
|
||||||
|
imapsync ... --search 'X-GM-RAW "has:attachment in:unread"'
|
||||||
|
|
||||||
|
On Windows:
|
||||||
|
|
||||||
|
imapsync.exe ... --search "X-GM-RAW ""has:attachment in:unread"""
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. How to avoid the [IMAP] prefix on Gmail side?
|
||||||
|
How to stop creating folder with this prefix?
|
||||||
|
Any switch we can use? e.g. [IMAP]/Archive
|
||||||
|
|
||||||
|
R. No switch in imapsync since [IMAP]/ prefix is done by Gmail,
|
||||||
|
it might be configurable within Gmail parameters configuration.
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. Does imapsync have the capability to do 2 stage authentication?
|
Q. Does imapsync have the capability to do 2 stage authentication?
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Massive.txt,v 1.8 2016/02/07 17:21:40 gilles Exp gilles $
|
$Id: FAQ.Massive.txt,v 1.9 2016/03/25 19:59:45 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also at http://imapsync.lamiral.info/#doc
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
|
30
FAQ.d/FAQ.Memory.txt
Normal file
30
FAQ.d/FAQ.Memory.txt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/cat
|
||||||
|
$Id: FAQ.Memory.txt,v 1.3 2016/05/09 13:01:22 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
|
============================================
|
||||||
|
Imapsync tips about memory issues.
|
||||||
|
============================================
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. I got an "Out of memory" error message then imapsync crashes.
|
||||||
|
How to fix that?
|
||||||
|
|
||||||
|
R0. Add option --debugmemory to debug memory issues.
|
||||||
|
|
||||||
|
R1. It's probably a very big message on the host1 account.
|
||||||
|
Before imapsync release 1.688 memory usage is at least 5 times
|
||||||
|
the biggest message size. then 2 times with release 1.688.
|
||||||
|
So a 700 MB message will crunch 3.5 GB of memory.
|
||||||
|
Starting with 1.688 it will crunch 1.4 GB of memory.
|
||||||
|
|
||||||
|
|
||||||
|
R2. Usually "Out of memory" errors are related to old days,
|
||||||
|
to old Mail::IMAPClient module releases, before 3.26.
|
||||||
|
At that time memory usage was around 17 times the biggest message.
|
||||||
|
Look at imapsync output first lines to get the Mail::IMAPClient
|
||||||
|
release used. Then upgrade Mail::IMAPClient Perl module if needed.
|
||||||
|
|
||||||
|
=======================================================================
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.Messages_Selection.txt,v 1.5 2016/02/05 08:22:26 gilles Exp gilles $
|
$Id: FAQ.Messages_Selection.txt,v 1.6 2016/04/18 12:45:20 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also at http://imapsync.lamiral.info/#doc
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
@ -65,12 +65,27 @@ Full explanation:
|
|||||||
past|----maxage+++++minage---->now (intersection)
|
past|----maxage+++++minage---->now (intersection)
|
||||||
past|++++minage-----maxage++++>now (union)
|
past|++++minage-----maxage++++>now (union)
|
||||||
|
|
||||||
|
C.1 By default,
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Option --minage is implemented as a --search SENTBEFORE
|
||||||
|
RFC 3501 says: SENTBEFORE <date>
|
||||||
|
Messages whose [RFC-2822] Date: header (disregarding time and
|
||||||
|
timezone) is earlier than the specified date.
|
||||||
|
|
||||||
|
If --noabletosearch is on then --minage and --maxage deal
|
||||||
|
with the internal dates given by a FETCH imap command but
|
||||||
|
not the Date: header. Internal date is the arrival date
|
||||||
|
in the mailbox.
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. I want to sync messages based on their UID.
|
Q. I want to sync messages based on their UID.
|
||||||
|
|
||||||
R. First have in mind that UIDs are uniq only per folder, so work this
|
R. First have in mind that UIDs are unique only per folder, so work this
|
||||||
way only with one folder at a time, with --folder option.
|
way only with one folder at a time, with --folder option.
|
||||||
|
|
||||||
To show UIDs, there is the --debugLIST parameter.
|
To show UIDs, there is the --debugLIST parameter.
|
||||||
@ -91,7 +106,148 @@ UIDs 20000 20002 20004:
|
|||||||
|
|
||||||
imapsync ... --search1 'NOT OR OR UID 20000 UID 20002 UID 20004' --folder INBOX
|
imapsync ... --search1 'NOT OR OR UID 20000 UID 20002 UID 20004' --folder INBOX
|
||||||
|
|
||||||
If you search n UIDs then you have to put n-1 OR in the search line.
|
If you search n UIDs then you have to put n-1 OR in the search line,
|
||||||
That's IMAP.
|
that's IMAP.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. What is the selection criteria available with --search option?
|
||||||
|
|
||||||
|
R. The list of search criteria are listed below, an excerpt from RFC3501.
|
||||||
|
|
||||||
|
http://www.faqs.org/rfcs/rfc3501.html
|
||||||
|
|
||||||
|
6.4.4. SEARCH Command
|
||||||
|
...
|
||||||
|
ALL
|
||||||
|
All messages in the mailbox; the default initial key for
|
||||||
|
ANDing.
|
||||||
|
|
||||||
|
ANSWERED
|
||||||
|
Messages with the \Answered flag set.
|
||||||
|
|
||||||
|
BCC <string>
|
||||||
|
Messages that contain the specified string in the envelope
|
||||||
|
structure's BCC field.
|
||||||
|
|
||||||
|
BEFORE <date>
|
||||||
|
Messages whose internal date (disregarding time and timezone)
|
||||||
|
is earlier than the specified date.
|
||||||
|
|
||||||
|
BODY <string>
|
||||||
|
Messages that contain the specified string in the body of the
|
||||||
|
message.
|
||||||
|
|
||||||
|
CC <string>
|
||||||
|
Messages that contain the specified string in the envelope
|
||||||
|
structure's CC field.
|
||||||
|
|
||||||
|
DELETED
|
||||||
|
Messages with the \Deleted flag set.
|
||||||
|
|
||||||
|
DRAFT
|
||||||
|
Messages with the \Draft flag set.
|
||||||
|
|
||||||
|
FLAGGED
|
||||||
|
Messages with the \Flagged flag set.
|
||||||
|
|
||||||
|
FROM <string>
|
||||||
|
Messages that contain the specified string in the envelope
|
||||||
|
structure's FROM field.
|
||||||
|
|
||||||
|
HEADER <field-name> <string>
|
||||||
|
Messages that have a header with the specified field-name (as
|
||||||
|
defined in [RFC-2822]) and that contains the specified string
|
||||||
|
in the text of the header (what comes after the colon). If the
|
||||||
|
string to search is zero-length, this matches all messages that
|
||||||
|
have a header line with the specified field-name regardless of
|
||||||
|
the contents.
|
||||||
|
|
||||||
|
KEYWORD <flag>
|
||||||
|
Messages with the specified keyword flag set.
|
||||||
|
|
||||||
|
LARGER <n>
|
||||||
|
Messages with an [RFC-2822] size larger than the specified
|
||||||
|
number of octets.
|
||||||
|
|
||||||
|
NEW
|
||||||
|
Messages that have the \Recent flag set but not the \Seen flag.
|
||||||
|
This is functionally equivalent to "(RECENT UNSEEN)".
|
||||||
|
|
||||||
|
NOT <search-key>
|
||||||
|
Messages that do not match the specified search key.
|
||||||
|
|
||||||
|
OLD
|
||||||
|
Messages that do not have the \Recent flag set. This is
|
||||||
|
functionally equivalent to "NOT RECENT" (as opposed to "NOT
|
||||||
|
NEW").
|
||||||
|
|
||||||
|
ON <date>
|
||||||
|
Messages whose internal date (disregarding time and timezone)
|
||||||
|
is within the specified date.
|
||||||
|
|
||||||
|
OR <search-key1> <search-key2>
|
||||||
|
Messages that match either search key.
|
||||||
|
|
||||||
|
RECENT
|
||||||
|
Messages that have the \Recent flag set.
|
||||||
|
|
||||||
|
SEEN
|
||||||
|
Messages that have the \Seen flag set.
|
||||||
|
|
||||||
|
SENTBEFORE <date>
|
||||||
|
Messages whose [RFC-2822] Date: header (disregarding time and
|
||||||
|
timezone) is earlier than the specified date.
|
||||||
|
|
||||||
|
SENTON <date>
|
||||||
|
Messages whose [RFC-2822] Date: header (disregarding time and
|
||||||
|
timezone) is within the specified date.
|
||||||
|
|
||||||
|
SENTSINCE <date>
|
||||||
|
Messages whose [RFC-2822] Date: header (disregarding time and
|
||||||
|
timezone) is within or later than the specified date.
|
||||||
|
|
||||||
|
SINCE <date>
|
||||||
|
Messages whose internal date (disregarding time and timezone)
|
||||||
|
is within or later than the specified date.
|
||||||
|
|
||||||
|
SMALLER <n>
|
||||||
|
Messages with an [RFC-2822] size smaller than the specified
|
||||||
|
number of octets.
|
||||||
|
|
||||||
|
SUBJECT <string>
|
||||||
|
Messages that contain the specified string in the envelope
|
||||||
|
structure's SUBJECT field.
|
||||||
|
|
||||||
|
TEXT <string>
|
||||||
|
Messages that contain the specified string in the header or
|
||||||
|
body of the message.
|
||||||
|
|
||||||
|
TO <string>
|
||||||
|
Messages that contain the specified string in the envelope
|
||||||
|
structure's TO field.
|
||||||
|
|
||||||
|
UID <sequence set>
|
||||||
|
Messages with unique identifiers corresponding to the specified
|
||||||
|
unique identifier set. Sequence set ranges are permitted.
|
||||||
|
|
||||||
|
UNANSWERED
|
||||||
|
Messages that do not have the \Answered flag set.
|
||||||
|
|
||||||
|
UNDELETED
|
||||||
|
Messages that do not have the \Deleted flag set.
|
||||||
|
|
||||||
|
UNDRAFT
|
||||||
|
Messages that do not have the \Draft flag set.
|
||||||
|
|
||||||
|
UNFLAGGED
|
||||||
|
Messages that do not have the \Flagged flag set.
|
||||||
|
|
||||||
|
UNKEYWORD <flag>
|
||||||
|
Messages that do not have the specified keyword flag set.
|
||||||
|
|
||||||
|
UNSEEN
|
||||||
|
Messages that do not have the \Seen flag set.
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
44
FAQ.d/FAQ.Passwords_on_Windows.txt
Normal file
44
FAQ.d/FAQ.Passwords_on_Windows.txt
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/cat
|
||||||
|
$Id: FAQ.Passwords_on_Windows.txt,v 1.2 2016/05/10 19:19:16 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
|
======================================================
|
||||||
|
Imapsync issues with passwords on Windows.
|
||||||
|
======================================================
|
||||||
|
|
||||||
|
|
||||||
|
http://www.robvanderwoude.com/escapechars.php
|
||||||
|
http://stackoverflow.com/questions/3288552/how-can-i-escape-an-exclamation-mark-in-cmd-scripts
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. On Windows, some passwords contain $ characters. Login fails.
|
||||||
|
|
||||||
|
R1. Enclose passwords between ""
|
||||||
|
|
||||||
|
imapsync ... --password1 "zzz$zz$$z"
|
||||||
|
|
||||||
|
R2. Prefix each $ character with a ^ since ^ is the escape character
|
||||||
|
on Windows
|
||||||
|
|
||||||
|
imapsync ... --password1 zzz^$zz^$^$z
|
||||||
|
|
||||||
|
For a password that is exactly the 8 characters string $%&<>|^"
|
||||||
|
you have to enter
|
||||||
|
|
||||||
|
imapsync ... --password1 "$%%&<>|^"^"
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. On Windows, some passwords begin with an equal = character.
|
||||||
|
Login fails. What can I do?
|
||||||
|
|
||||||
|
R. Use twice equals == characters instead; For example, if =secret
|
||||||
|
is the password then use:
|
||||||
|
|
||||||
|
imapsync ... --password1 ==secret
|
||||||
|
|
||||||
|
or even
|
||||||
|
|
||||||
|
imapsync ... --password1 "==secret"
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: FAQ.Security.txt,v 1.6 2016/02/07 21:49:52 gilles Exp gilles $
|
# $Id: FAQ.Security.txt,v 1.9 2016/08/19 17:53:21 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also at http://imapsync.lamiral.info/#doc
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
@ -64,32 +64,40 @@ b OK 73 good day (Success)
|
|||||||
The client part to type is "a LOGIN ..." and "b LOGOUT" without
|
The client part to type is "a LOGIN ..." and "b LOGOUT" without
|
||||||
the double-quotes.
|
the double-quotes.
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q.How to test a ssl imap connection without imapsync?
|
||||||
|
|
||||||
|
R1.Use openssl command like the following,
|
||||||
|
an example with imap.gmail.com server:
|
||||||
|
|
||||||
|
openssl s_client -crlf -connect imap.gmail.com:993
|
||||||
|
|
||||||
|
The previous command is an interactive connection, hit ctrl-c
|
||||||
|
to finish it. If you want to finish it gently, then use:
|
||||||
|
|
||||||
|
{ sleep 2; echo "a logout"; sleep 1; } | openssl s_client -crlf -connect imap.gmail.com:993
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
Q. Imapsync used to use SSL_VERIFY_PEER now it uses SSL_VERIFY_NONE.
|
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?
|
How can I change this back to the more secure SSL_VERIFY_PEER?
|
||||||
|
|
||||||
|
|
||||||
R1. In function "sub set_ssl", replace
|
R2. After imapsync 1.673,
|
||||||
IO::Socket::SSL::SSL_VERIFY_NONE()
|
|
||||||
by
|
|
||||||
IO::Socket::SSL::SSL_VERIFY_PEER()
|
|
||||||
|
|
||||||
R2. After imapsync 1.673, for example
|
|
||||||
to set SSL_verify_mode to SSL_VERIFY_PEER on host1
|
to set SSL_verify_mode to SSL_VERIFY_PEER on host1
|
||||||
and SSL_verify_mode to SSL_VERIFY_NONE on host2
|
and SSL_verify_mode to SSL_VERIFY_NONE on host2
|
||||||
|
|
||||||
imapsync ... --ssl1 --ssl2 \
|
imapsync ... --ssl1 --ssl2 \
|
||||||
--sslargs1 SSL_verify_mode=1 \
|
--sslargs1 SSL_verify_mode=1 \
|
||||||
--sslargs2 SSL_verify_mode=0 \
|
--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
|
http://search.cpan.org/perldoc?IO%3A%3ASocket%3A%3ASSL
|
||||||
|
|
||||||
C1. Don't do this manual change in function "sub set_tls",
|
It might be possible you need an extra:
|
||||||
it won't work by principle, because tls is done AFTER
|
--sslargs1 SSL_ca_file=/etc/ssl/certs/ca-certificates.crt
|
||||||
the application level connexion is established.
|
to help the ssl software verifying the server certificate.
|
||||||
|
The file ca-certificates.crt may be elsewhere on your system, even
|
||||||
|
named differently.
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. How can I manually test a login via ssl?
|
Q. How can I manually test a login via ssl?
|
||||||
|
30
FAQ.d/FAQ.Use_addheader.txt
Normal file
30
FAQ.d/FAQ.Use_addheader.txt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/cat
|
||||||
|
$Id: FAQ.Use_addheader.txt,v 1.1 2016/06/01 12:25:56 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
|
============================================
|
||||||
|
Imapsync --addheader suggestion.
|
||||||
|
============================================
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. What means this log message:
|
||||||
|
"Host1 Sent/1234 ignored (no wanted headers so we ignore this message.
|
||||||
|
To solve this: use --addheader)"
|
||||||
|
|
||||||
|
R. In order to sync messages from one account to another Imapsync has
|
||||||
|
to identify messages on both sides, and compare them.
|
||||||
|
Imapsync can use two completely different methods to identify
|
||||||
|
messages on each account.
|
||||||
|
The first one, the default one, uses some headers of messages,
|
||||||
|
Real world syncs with various imap servers have bring to use
|
||||||
|
two headers "Message-Id:" and "Received:". It works for most
|
||||||
|
messages except for special folders like Sent or Draft where
|
||||||
|
messages in those folders don't have "Message-Id:" nor
|
||||||
|
"Received:" headers.
|
||||||
|
Here comes -addheader option. Option --addheader adds
|
||||||
|
a "Message-Id" header consisting of the imap UID of the message
|
||||||
|
on the host1 folder, like "Message-Id: 12345@imapsync".
|
||||||
|
This way, messages are well identified on both sides.
|
||||||
|
|
||||||
|
=======================================================================
|
35
FAQ.d/FAQ.User_Concurrent_Access.txt
Normal file
35
FAQ.d/FAQ.User_Concurrent_Access.txt
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/cat
|
||||||
|
$Id: FAQ.User_Concurrent_Access.txt,v 1.1 2016/07/22 00:00:08 gilles Exp gilles $
|
||||||
|
|
||||||
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
|
=======================================
|
||||||
|
Imapsync and user concurrent access.
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. What happens if a user access the mailbox during the transfer process?
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
* Reading: no problem anywhere, anytime.
|
||||||
|
|
||||||
|
* 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
|
||||||
|
* 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
|
||||||
|
|
||||||
|
=======================================================================
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
$Id: FAQ.XOAUTH2.txt,v 1.9 2016/01/28 14:34:15 gilles Exp gilles $
|
$Id: FAQ.XOAUTH2.txt,v 1.11 2016/07/27 23:08:19 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also at http://imapsync.lamiral.info/#doc
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
@ -14,8 +14,64 @@ Q. Is XOAUTH2 authentication available with imapsync?
|
|||||||
R. Yes, but XOAUTH2 has been really tested on Unix systems,
|
R. Yes, but XOAUTH2 has been really tested on Unix systems,
|
||||||
less profund on Windows but it should work.
|
less profund on Windows but it should work.
|
||||||
|
|
||||||
|
Two file formats are available from Gmail: json and pk12.
|
||||||
|
json is easier to manage than pk12.
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
Q. How to use XOAUTH2 to globally authenticate gmail users?
|
Q. Imapsync XOAUTH2 fails with the following message, how to fix that?
|
||||||
|
{
|
||||||
|
"error": "unauthorized_client",
|
||||||
|
"error_description": "Unauthorized client or scope in request."
|
||||||
|
}
|
||||||
|
|
||||||
|
R. In order to work you also have to allow the service https://mail.google.com/
|
||||||
|
in the Google client API manager for OAUTH2.
|
||||||
|
"Select OAuth 2.0 scopes:"
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. How to use XOAUTH2 via a json file to globally authenticate gmail users?
|
||||||
|
|
||||||
|
R. Unless you use an imapsync binary like imapsync.exe or imapsync_bin_Darwin,
|
||||||
|
Perl modules needed for xoauth2 are:
|
||||||
|
|
||||||
|
Crypt::OpenSSL::RSA
|
||||||
|
JSON
|
||||||
|
JSON::WebToken
|
||||||
|
LWP
|
||||||
|
HTML::Entities
|
||||||
|
Encode::Byte
|
||||||
|
|
||||||
|
A easy way to install or upgrade Perl modules is to use cpanm command,
|
||||||
|
also called cpanminus. On Linux it is something like
|
||||||
|
|
||||||
|
sudo cpanm JSON::WebToken JSON Crypt::OpenSSL::RSA LWP HTML::Entities Encode::Byte
|
||||||
|
|
||||||
|
The json file patch code and explanation comes from Secretion at
|
||||||
|
https://github.com/imapsync/imapsync/pull/68
|
||||||
|
|
||||||
|
Here is a complete example for Gmail. It is a little stupid
|
||||||
|
since it is the same account as source and destination but
|
||||||
|
it's just to get the picture for xoauth2 authentication.
|
||||||
|
|
||||||
|
All xoauth2 config is given via the --password1 parameter.
|
||||||
|
It has the form:
|
||||||
|
|
||||||
|
--password1 secret.xoauth2.json
|
||||||
|
|
||||||
|
where secret.xoauth2.json is the json file given by Gmail.
|
||||||
|
|
||||||
|
|
||||||
|
imapsync \
|
||||||
|
--host1 imap.gmail.com --ssl1 --user1 gilles.lamiral@gmail.com \
|
||||||
|
--password1 secret.xoauth2.json --authmech1 XOAUTH2 \
|
||||||
|
--host2 imap.gmail.com --ssl2 --user2 gilles.lamiral@gmail.com \
|
||||||
|
--password2 secret.xoauth2.json --authmech2 XOAUTH2 \
|
||||||
|
--justlogin --debug
|
||||||
|
|
||||||
|
Use your own xoauth2 values.
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Q. How to use XOAUTH2 via pk12 file to globally authenticate gmail users?
|
||||||
|
|
||||||
R. First, consider the XOAUTH2 feature at a prototype level.
|
R. First, consider the XOAUTH2 feature at a prototype level.
|
||||||
|
|
||||||
@ -115,7 +171,8 @@ R2. In case you still have to use XOAUTH, here is the method:
|
|||||||
--password2 secret2 \
|
--password2 secret2 \
|
||||||
--authmech2 XOAUTH
|
--authmech2 XOAUTH
|
||||||
|
|
||||||
Google Apps is a paid service, but you can try it for 30 days without any cost.
|
Google Apps is a paid service, but you can try it for 30 days without any cost,
|
||||||
|
or you could try, time goes on on free trial offers.
|
||||||
|
|
||||||
Some notes about configuring the Google Apps XOAUTH:
|
Some notes about configuring the Google Apps XOAUTH:
|
||||||
|
|
||||||
|
31
FAQ.d/htaccess.txt
Normal file
31
FAQ.d/htaccess.txt
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
# $Id: htaccess.txt,v 1.10 2016/07/22 00:20:13 gilles Exp gilles $
|
||||||
|
|
||||||
|
AddDescription "<b>Back to Imapsync main page</b>." ..
|
||||||
|
AddDescription "<b>Archiving tips</b>." FAQ.Archiving.txt
|
||||||
|
AddDescription "<b>Connection issues</b>." FAQ.Connection.txt
|
||||||
|
AddDescription "<b>Contacts & Calendars issues</b>." FAQ.Contacts_Calendars.txt
|
||||||
|
AddDescription "<b>Dates issues</b>." FAQ.Dates.txt
|
||||||
|
AddDescription "<b>Domino</b>." FAQ.Domino.txt
|
||||||
|
AddDescription "<b>Dovecot</b>." FAQ.Dovecot.txt
|
||||||
|
AddDescription "<b>Duplicated</b> messages issues." FAQ.Duplicates.txt
|
||||||
|
AddDescription "<b>Emptying</b> an account." FAQ.Emptying.txt
|
||||||
|
AddDescription "<b>Exchange 20xx</b> and <b>Office365</b>." FAQ.Exchange.txt
|
||||||
|
AddDescription "<b>Changing folders names</b>." FAQ.Folders_Mapping.txt
|
||||||
|
AddDescription "<b>Selecting folders</b>." FAQ.Folders_Selection.txt
|
||||||
|
AddDescription "<b>Flags</b>." FAQ.Flags.txt
|
||||||
|
AddDescription "<b>Gmail</b> accounts." FAQ.Gmail.txt
|
||||||
|
AddDescription "<b>ISP tips</b>." FAQ.ISP.txt
|
||||||
|
AddDescription "<b>Massive/bulk migrations</b>." FAQ.Massive.txt
|
||||||
|
AddDescription "<b>Memory issues</b>." FAQ.Memory.txt
|
||||||
|
AddDescription "<b>Password & special characters on Windows</b>." FAQ.Passwords_on_Windows.txt
|
||||||
|
AddDescription "<b>Selecting messages</b>." FAQ.Messages_Selection.txt
|
||||||
|
AddDescription "<b>Oracle-UCS</b>." FAQ.Oracle-UCS.txt
|
||||||
|
AddDescription "<b>Security</b>." FAQ.Security.txt
|
||||||
|
AddDescription "<b>SmarterMail</b>." FAQ.SmarterMail.txt
|
||||||
|
AddDescription "<b>User concurrent access</b>." FAQ.User_Concurrent_Access.txt
|
||||||
|
AddDescription "<b>Why use --addheader?</b>." FAQ.Use_addheader.txt
|
||||||
|
AddDescription "<b>Various imap server</b> softwares." FAQ.Various_Server_Softwares.txt
|
||||||
|
AddDescription "<b>XOAUTH2</b> (<b>Gmail</b>)." FAQ.XOAUTH2.txt
|
||||||
|
AddDescription "<b>Where this Description column comes from</b>." htaccess.txt
|
||||||
|
|
@ -1,11 +1,12 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: INSTALL.Darwin.txt,v 1.11 2016/01/05 23:43:26 gilles Exp gilles $
|
# $Id: INSTALL.Darwin.txt,v 1.14 2016/06/22 19:57:00 gilles Exp gilles $
|
||||||
|
|
||||||
===================================================
|
===================================================
|
||||||
= Installing imapsync binary on Darwin / Mac OS X =
|
= Installing imapsync binary on Darwin / Mac OS X =
|
||||||
===================================================
|
===================================================
|
||||||
|
|
||||||
There is a standalone imapsync binary for Mac OS X called imapsync_bin_Darwin,
|
There is a standalone imapsync binary for Mac OS X
|
||||||
|
called "imapsync_bin_Darwin" (without the quotes),
|
||||||
available in the compressed tarball called imapsync-1.xxx.tgz
|
available in the compressed tarball called imapsync-1.xxx.tgz
|
||||||
where 1.xxx is the version number. I suppose this tarball is put
|
where 1.xxx is the version number. I suppose this tarball is put
|
||||||
under your $HOME directory, let say /Users/gilles/, but you can
|
under your $HOME directory, let say /Users/gilles/, but you can
|
||||||
@ -35,7 +36,21 @@ real IMAP server accounts:
|
|||||||
./imapsync_bin_Darwin --testslive
|
./imapsync_bin_Darwin --testslive
|
||||||
|
|
||||||
If this sync works fine then imapsync_bin_Darwin is ready for any
|
If this sync works fine then imapsync_bin_Darwin is ready for any
|
||||||
imap account synchronization.
|
imap account synchronization.
|
||||||
|
|
||||||
|
When reading the documentation with imapsync command lines
|
||||||
|
examples, you have to replace the command "imapsync" by "imapsync_bin_Darwin"
|
||||||
|
For example, instead of the command:
|
||||||
|
|
||||||
|
./imapsync \
|
||||||
|
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
||||||
|
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
||||||
|
|
||||||
|
you have to use:
|
||||||
|
|
||||||
|
./imapsync_bin_Darwin \
|
||||||
|
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
||||||
|
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
||||||
|
|
||||||
|
|
||||||
===================================================
|
===================================================
|
||||||
@ -59,6 +74,7 @@ sh prerequisites_imapsync
|
|||||||
cpanm Authen::NTLM
|
cpanm Authen::NTLM
|
||||||
cpanm File::Copy::Recursive IO::Tee
|
cpanm File::Copy::Recursive IO::Tee
|
||||||
cpanm Mail::IMAPClient
|
cpanm Mail::IMAPClient
|
||||||
|
cpanm Readonly
|
||||||
cpanm Unicode::String
|
cpanm Unicode::String
|
||||||
|
|
||||||
wget -c http://imapsync.lamiral.info/imapsync
|
wget -c http://imapsync.lamiral.info/imapsync
|
||||||
@ -94,7 +110,6 @@ pp -o imapsync.bin imapsync
|
|||||||
./imapsync.bin --module
|
./imapsync.bin --module
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
==========================================
|
==========================================
|
||||||
== Installing imapsync Mac OS X Leopard ==
|
== Installing imapsync Mac OS X Leopard ==
|
||||||
==========================================
|
==========================================
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: INSTALL.Debian.txt,v 1.6 2016/01/21 15:10:01 gilles Exp gilles $
|
# $Id: INSTALL.Debian.txt,v 1.7 2016/06/22 19:58:32 gilles Exp gilles $
|
||||||
|
|
||||||
There is one section for Debian 7 and one for Debian 6.
|
There is one section for Debian 7 and one for Debian 6.
|
||||||
|
|
||||||
@ -24,6 +24,7 @@ libio-tee-perl \
|
|||||||
libmodule-scandeps-perl \
|
libmodule-scandeps-perl \
|
||||||
libnet-ssleay-perl \
|
libnet-ssleay-perl \
|
||||||
libpar-packer-perl \
|
libpar-packer-perl \
|
||||||
|
libreadonly-perl \
|
||||||
libterm-readkey-perl \
|
libterm-readkey-perl \
|
||||||
libtest-pod-perl \
|
libtest-pod-perl \
|
||||||
libtest-simple-perl \
|
libtest-simple-perl \
|
||||||
@ -87,6 +88,7 @@ libio-tee-perl \
|
|||||||
libmodule-scandeps-perl \
|
libmodule-scandeps-perl \
|
||||||
libnet-ssleay-perl \
|
libnet-ssleay-perl \
|
||||||
libpar-packer-perl \
|
libpar-packer-perl \
|
||||||
|
libreadonly-perl \
|
||||||
libterm-readkey-perl \
|
libterm-readkey-perl \
|
||||||
libtest-pod-perl \
|
libtest-pod-perl \
|
||||||
libtest-simple-perl \
|
libtest-simple-perl \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: INSTALL.Ubuntu.txt,v 1.5 2016/01/21 15:10:01 gilles Exp gilles $
|
# $Id: INSTALL.Ubuntu.txt,v 1.7 2016/06/22 19:58:32 gilles Exp gilles $
|
||||||
|
|
||||||
=================================================
|
=================================================
|
||||||
= Installing imapsync on Ubuntu 12.04 or higher =
|
= Installing imapsync on Ubuntu 12.04 or higher =
|
||||||
@ -23,6 +23,7 @@ libio-tee-perl \
|
|||||||
libmodule-scandeps-perl \
|
libmodule-scandeps-perl \
|
||||||
libnet-ssleay-perl \
|
libnet-ssleay-perl \
|
||||||
libpar-packer-perl \
|
libpar-packer-perl \
|
||||||
|
libreadonly-perl \
|
||||||
libterm-readkey-perl \
|
libterm-readkey-perl \
|
||||||
libtest-pod-perl \
|
libtest-pod-perl \
|
||||||
libtest-simple-perl \
|
libtest-simple-perl \
|
||||||
@ -35,7 +36,7 @@ because Debian hasn't made it available via a package yet.
|
|||||||
It also install manually Perl module Mail::IMAPClient because
|
It also install manually Perl module Mail::IMAPClient because
|
||||||
it is good to be up to date:
|
it is good to be up to date:
|
||||||
|
|
||||||
cpanm Data::Uniqid Mail::IMAPClient
|
sudo cpanm Data::Uniqid Mail::IMAPClient
|
||||||
|
|
||||||
After installing the dependencies, imapsync should be working.
|
After installing the dependencies, imapsync should be working.
|
||||||
|
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# $Id: prerequisites_imapsync,v 1.12 2015/07/06 03:12:43 gilles Exp gilles $
|
# $Id: prerequisites_imapsync,v 1.16 2016/08/16 16:25:01 gilles Exp gilles $
|
||||||
|
|
||||||
MODULES_MANDATORY='
|
MODULES_MANDATORY='
|
||||||
Digest::HMAC_MD5
|
|
||||||
Authen::NTLM
|
Authen::NTLM
|
||||||
Compress::Zlib
|
Compress::Zlib
|
||||||
Data::Dumper
|
Data::Dumper
|
||||||
Data::Uniqid
|
Data::Uniqid
|
||||||
|
Digest::HMAC_MD5
|
||||||
Digest::HMAC
|
Digest::HMAC
|
||||||
Digest::MD5
|
Digest::MD5
|
||||||
File::Copy::Recursive
|
File::Copy::Recursive
|
||||||
@ -15,9 +15,12 @@ IO::Socket::INET
|
|||||||
IO::Socket::INET6
|
IO::Socket::INET6
|
||||||
IO::Socket::SSL
|
IO::Socket::SSL
|
||||||
IO::Tee
|
IO::Tee
|
||||||
|
JSON::WebToken
|
||||||
Mail::IMAPClient
|
Mail::IMAPClient
|
||||||
Parse::RecDescent
|
Parse::RecDescent
|
||||||
|
Readonly
|
||||||
Term::ReadKey
|
Term::ReadKey
|
||||||
|
Test::MockObject
|
||||||
Test::More
|
Test::More
|
||||||
Test::Pod
|
Test::Pod
|
||||||
Unicode::String
|
Unicode::String
|
||||||
@ -53,6 +56,7 @@ test_module() {
|
|||||||
echo "Failure: Not found Perl module $M_tested $@"
|
echo "Failure: Not found Perl module $M_tested $@"
|
||||||
LIST_TO_INSTALL="$LIST_TO_INSTALL $M_tested"
|
LIST_TO_INSTALL="$LIST_TO_INSTALL $M_tested"
|
||||||
fi
|
fi
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
test_mandatory_modules() {
|
test_mandatory_modules() {
|
||||||
@ -79,15 +83,15 @@ search_modules_any() {
|
|||||||
|
|
||||||
# no yum, no apt-get
|
# no yum, no apt-get
|
||||||
{
|
{
|
||||||
search_modules_cpan "$@"
|
search_modules_cpanm "$@"
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
search_modules_cpan() {
|
search_modules_cpanm() {
|
||||||
cat <<EOD
|
cat <<EOD
|
||||||
Here is a cpan command to install missing Perl modules:
|
Here is a cpanm command to install missing Perl modules:
|
||||||
cpan -i $@
|
cpanm "$@"
|
||||||
EOD
|
EOD
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,12 +125,14 @@ search_modules_apt() {
|
|||||||
|
|
||||||
|
|
||||||
list_to_install() {
|
list_to_install() {
|
||||||
test -n "$LIST_TO_INSTALL" || return
|
test -n "$LIST_TO_INSTALL" || return 0
|
||||||
echo
|
echo
|
||||||
echo 'What you have to do before using imapsync:'
|
echo 'What you have to do before using imapsync:'
|
||||||
for M in $LIST_TO_INSTALL ; do
|
for M in $LIST_TO_INSTALL ; do
|
||||||
echo "Install Perl module $M"
|
echo "Install Perl module $M"
|
||||||
done
|
done
|
||||||
|
# return false/bad if some modules are missing.
|
||||||
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
test_unix() {
|
test_unix() {
|
||||||
@ -143,5 +149,8 @@ test_unix
|
|||||||
test_perl || exit
|
test_perl || exit
|
||||||
test_mandatory_modules
|
test_mandatory_modules
|
||||||
list_to_install
|
list_to_install
|
||||||
#search_modules_cpan $MODULES_MANDATORY
|
EXIT=$?
|
||||||
|
|
||||||
|
# Help the user to install missing modules
|
||||||
search_modules_any $LIST_TO_INSTALL
|
search_modules_any $LIST_TO_INSTALL
|
||||||
|
exit $EXIT
|
||||||
|
164
Makefile
164
Makefile
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
# $Id: Makefile,v 1.222 2016/03/07 15:56:21 gilles Exp gilles $
|
# $Id: Makefile,v 1.239 2016/08/19 14:17:26 gilles Exp gilles $
|
||||||
|
|
||||||
.PHONY: help usage all doc
|
.PHONY: help usage all doc
|
||||||
|
|
||||||
@ -20,6 +20,7 @@ usage:
|
|||||||
@echo "make W/test2.bat # run W/test2.bat 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/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_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_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 examples/sync_loop_windows.bat # run examples/sync_loop_windows.bat on win32"
|
||||||
|
|
||||||
@ -28,16 +29,20 @@ usage:
|
|||||||
@echo "make all "
|
@echo "make all "
|
||||||
@echo "make upload_tests # upload tests.sh"
|
@echo "make upload_tests # upload tests.sh"
|
||||||
@echo "make upload_index"
|
@echo "make upload_index"
|
||||||
@echo "make upload_FAQ # upload FAQs and documentation"
|
@echo "make upload_FAQ # upload FAQs and documentation"
|
||||||
|
@echo "make upload_latest # upload latest imapsync and binaries (dev)"
|
||||||
@echo "make valid_index # check index.shtml for good syntax"
|
@echo "make valid_index # check index.shtml for good syntax"
|
||||||
@echo "make upload_ks"
|
@echo "make upload_ks"
|
||||||
@echo "make imapsync.exe"
|
@echo "make imapsync.exe"
|
||||||
@echo "make bin"
|
@echo "make bin # build mac & win & linux binaries"
|
||||||
|
@echo "make mac # build mac binary"
|
||||||
|
@echo "make win # build win binary"
|
||||||
|
@echo "make lin # build linux binary"
|
||||||
@echo "make publish"
|
@echo "make publish"
|
||||||
@echo "make perlcritic"
|
@echo "make perlcritic"
|
||||||
@echo "make prereq # Generates W/prereq.*"
|
@echo "make prereq # Generates W/prereq.*"
|
||||||
@echo "make checklink # Check links"
|
@echo "make cl # Check links of index.shtml"
|
||||||
@echo "make checklinkext # Check links of S/*.shtml"
|
@echo "make cle # Check links of S/*.shtml"
|
||||||
|
|
||||||
|
|
||||||
PREFIX ?= /usr
|
PREFIX ?= /usr
|
||||||
@ -46,6 +51,7 @@ DIST_FILE=$(DIST_NAME).tgz
|
|||||||
DEB_FILE=$(DIST_NAME).deb
|
DEB_FILE=$(DIST_NAME).deb
|
||||||
|
|
||||||
VERSION=$(shell perl -I$(IMAPClient) ./imapsync --version 2>/dev/null || cat VERSION)
|
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)
|
VERSION_EXE=$(shell cat ./VERSION_EXE)
|
||||||
|
|
||||||
HELLO=$(shell date;uname -a)
|
HELLO=$(shell date;uname -a)
|
||||||
@ -66,7 +72,7 @@ hello:
|
|||||||
@echo "$(BIN_NAME)"
|
@echo "$(BIN_NAME)"
|
||||||
|
|
||||||
|
|
||||||
all: doc VERSION biz prereq allcritic bin mac imapsync.exe VERSION_EXE
|
all: doc VERSION biz prereq allcritic bin VERSION_EXE
|
||||||
|
|
||||||
testp :
|
testp :
|
||||||
sh INSTALL.d/prerequisites_imapsync
|
sh INSTALL.d/prerequisites_imapsync
|
||||||
@ -142,7 +148,7 @@ install: testp W/imapsync.1
|
|||||||
ci: cidone
|
ci: cidone
|
||||||
|
|
||||||
cidone:
|
cidone:
|
||||||
rcsdiff W/*.bat W/*.out W/*.txt W/*.htaccess
|
rcsdiff W/*.bat W/*.sh W/*.out W/*.txt W/*.htaccess
|
||||||
rcsdiff S/*.txt S/*.shtml S/*.html
|
rcsdiff S/*.txt S/*.shtml S/*.html
|
||||||
rcsdiff doc/*.t2t
|
rcsdiff doc/*.t2t
|
||||||
rcsdiff INSTALL.d/*.txt INSTALL.d/prerequisites_imapsync
|
rcsdiff INSTALL.d/*.txt INSTALL.d/prerequisites_imapsync
|
||||||
@ -154,12 +160,20 @@ cidone:
|
|||||||
# Local goals
|
# Local goals
|
||||||
###############
|
###############
|
||||||
|
|
||||||
.PHONY: prereq test tests testp testf test3xx testv3 perlcritic allcritic
|
.PHONY: prereq test tests testp testf test3xx testv3 perlcritic allcritic compok
|
||||||
|
|
||||||
|
compok: W/.compok
|
||||||
|
|
||||||
|
|
||||||
|
W/.compok: imapsync
|
||||||
|
perl -c imapsync
|
||||||
|
touch W/.compok
|
||||||
|
|
||||||
prereq: W/prereq.scandeps
|
prereq: W/prereq.scandeps
|
||||||
|
|
||||||
W/prereq.scandeps: INSTALL.d/prerequisites_imapsync imapsync
|
W/prereq.scandeps: INSTALL.d/prerequisites_imapsync imapsync
|
||||||
scandeps -c -x imapsync | tee W/prereq.scandeps
|
scandeps -c -x imapsync | tee W/prereq.scandeps
|
||||||
|
rcsdiff W/prereq.scandeps || { echo 'rcsdiff detected a diff' | ci -l W/prereq.scandeps ; }
|
||||||
./INSTALL.d/prerequisites_imapsync | tee W/prereq.`lsb_release -i -s || echo Unknown`
|
./INSTALL.d/prerequisites_imapsync | tee W/prereq.`lsb_release -i -s || echo Unknown`
|
||||||
|
|
||||||
|
|
||||||
@ -168,20 +182,20 @@ perlcritic: W/perlcritic_3.out W/perlcritic_2.out
|
|||||||
|
|
||||||
allcritic: W/perlcritic_4.out W/perlcritic_3.out W/perlcritic_2.out W/perlcritic_1.out
|
allcritic: W/perlcritic_4.out W/perlcritic_3.out W/perlcritic_2.out W/perlcritic_1.out
|
||||||
|
|
||||||
W/perlcritic_1.out: imapsync
|
W/perlcritic_1.out: imapsync W/.compok
|
||||||
perlcritic -1 imapsync > W/perlcritic_1.out || :
|
perlcritic --statistics -1 imapsync > W/perlcritic_1.out || :
|
||||||
echo | ci -l W/perlcritic_1.out
|
echo | ci -l W/perlcritic_1.out
|
||||||
|
|
||||||
W/perlcritic_2.out: imapsync
|
W/perlcritic_2.out: imapsync W/.compok
|
||||||
perlcritic -2 imapsync > W/perlcritic_2.out || :
|
perlcritic --statistics -2 imapsync > W/perlcritic_2.out || :
|
||||||
echo | ci -l W/perlcritic_2.out
|
echo | ci -l W/perlcritic_2.out
|
||||||
|
|
||||||
W/perlcritic_3.out: imapsync
|
W/perlcritic_3.out: imapsync W/.compok
|
||||||
perlcritic -3 imapsync > W/perlcritic_3.out || :
|
perlcritic --statistics -3 imapsync > W/perlcritic_3.out || :
|
||||||
echo | ci -l W/perlcritic_3.out
|
echo | ci -l W/perlcritic_3.out
|
||||||
|
|
||||||
W/perlcritic_4.out: imapsync
|
W/perlcritic_4.out: imapsync W/.compok
|
||||||
perlcritic -4 imapsync > W/perlcritic_4.out || :
|
perlcritic --statistics -4 imapsync > W/perlcritic_4.out || :
|
||||||
echo | ci -l W/perlcritic_4.out
|
echo | ci -l W/perlcritic_4.out
|
||||||
|
|
||||||
|
|
||||||
@ -218,7 +232,7 @@ copy_win32:
|
|||||||
W/test.bat:
|
W/test.bat:
|
||||||
unix2dos W/test.bat
|
unix2dos W/test.bat
|
||||||
scp imapsync W/test.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
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 --tests_debug'
|
# ssh Admin@c 'perl C:/msys/1.0/home/Admin/imapsync/imapsync --testsdebug'
|
||||||
ssh Admin@c 'perl C:/msys/1.0/home/Admin/imapsync/imapsync --tests'
|
ssh Admin@c 'perl C:/msys/1.0/home/Admin/imapsync/imapsync --tests'
|
||||||
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test.bat'
|
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test.bat'
|
||||||
# ssh Admin@c 'tasklist /FI "PID eq 0"'
|
# ssh Admin@c 'tasklist /FI "PID eq 0"'
|
||||||
@ -229,6 +243,15 @@ W/test_tests.bat:
|
|||||||
unix2dos W/test_tests.bat
|
unix2dos W/test_tests.bat
|
||||||
scp imapsync W/test_tests.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
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'
|
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_tests.bat'
|
||||||
|
./W/check_winerr test_tests.bat
|
||||||
|
|
||||||
|
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'
|
||||||
|
./W/check_winerr test_testsdebug.bat
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: W/*.bat examples/*
|
.PHONY: W/*.bat examples/*
|
||||||
|
|
||||||
@ -271,15 +294,35 @@ W/test3_gmail.bat:
|
|||||||
scp imapsync W/test3_gmail.bat /g/var/pass/secret.gilles_gmail Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
scp imapsync W/test3_gmail.bat /g/var/pass/secret.gilles_gmail Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||||
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test3_gmail.bat'
|
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test3_gmail.bat'
|
||||||
|
|
||||||
test_exe:
|
test_exe: W/test_exe.bat
|
||||||
|
|
||||||
|
W/test_exe.bat:
|
||||||
unix2dos W/test_exe.bat
|
unix2dos W/test_exe.bat
|
||||||
scp W/test_exe.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
scp W/test_exe.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||||
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_exe.bat'
|
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_exe.bat'
|
||||||
|
./W/check_winerr test_exe.bat
|
||||||
|
|
||||||
win32_prereq:
|
W/build_exe.bat:
|
||||||
|
unix2dos W/build_exe.bat
|
||||||
|
scp W/build_exe.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||||
|
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/build_exe.bat'
|
||||||
|
./W/check_winerr build_exe.bat
|
||||||
|
|
||||||
|
|
||||||
|
W/learn_func.bat:
|
||||||
|
unix2dos W/learn_func.bat
|
||||||
|
scp W/learn_func.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||||
|
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/learn_func.bat'
|
||||||
|
./W/check_winerr learn_func.bat
|
||||||
|
|
||||||
|
win32_prereq: W/install_modules.bat
|
||||||
|
|
||||||
|
W/install_modules.bat:
|
||||||
unix2dos W/install_modules.bat
|
unix2dos W/install_modules.bat
|
||||||
scp W/install_modules.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
scp W/install_modules.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||||
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/install_modules.bat'
|
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/install_modules.bat'
|
||||||
|
./W/check_winerr install_modules.bat
|
||||||
|
|
||||||
|
|
||||||
win32_update_ssl:
|
win32_update_ssl:
|
||||||
scp W/install_module_ssl.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
scp W/install_module_ssl.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||||
@ -295,24 +338,28 @@ imapsync.exe: imapsync
|
|||||||
ssh Admin@c 'perl -V'
|
ssh Admin@c 'perl -V'
|
||||||
(date "+%s"| tr "\n" " "; echo -n "BEGIN " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
(date "+%s"| tr "\n" " "; echo -n "BEGIN " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||||
unix2dos W/build_exe.bat W/test_exe.bat W/install_modules.bat
|
unix2dos W/build_exe.bat W/test_exe.bat W/install_modules.bat
|
||||||
scp W/install_modules.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
scp imapsync W/build_exe.bat W/test_exe.bat W/install_modules.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||||
scp imapsync W/build_exe.bat W/test_exe.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
|
||||||
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/build_exe.bat'
|
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/build_exe.bat'
|
||||||
|
./W/check_winerr build_exe.bat
|
||||||
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_exe.bat'
|
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_exe.bat'
|
||||||
|
./W/check_winerr test_exe.bat
|
||||||
rm -f imapsync.exe
|
rm -f imapsync.exe
|
||||||
scp Admin@c:'C:/msys/1.0/home/Admin/imapsync/imapsync.exe' .
|
scp Admin@c:'C:/msys/1.0/home/Admin/imapsync/imapsync.exe' .
|
||||||
(date "+%s"| tr "\n" " "; echo -n "END " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
(date "+%s"| tr "\n" " "; echo -n "END " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||||
|
|
||||||
exe: imapsync W/build_exe.bat dosify_bat
|
exe: imapsync
|
||||||
(date "+%s"| tr "\n" " "; echo -n "BEGIN " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
(date "+%s"| tr "\n" " "; echo -n "BEGIN " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||||
scp imapsync W/build_exe.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
scp imapsync W/build_exe.bat W/install_modules.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
|
||||||
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/build_exe.bat'
|
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/build_exe.bat'
|
||||||
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/imapsync.exe --modules_version'
|
./W/check_winerr build_exe.bat
|
||||||
|
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/imapsync.exe --justbanner'
|
||||||
rm -f imapsync.exe
|
rm -f imapsync.exe
|
||||||
scp Admin@c:'C:/msys/1.0/home/Admin/imapsync/imapsync.exe' .
|
scp Admin@c:'C:/msys/1.0/home/Admin/imapsync/imapsync.exe' .
|
||||||
(date "+%s"| tr "\n" " "; echo -n "END " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
(date "+%s"| tr "\n" " "; echo -n "END " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
zip: dosify_bat
|
zip: dosify_bat
|
||||||
rm -rfv ../prepa_zip/imapsync_$(VERSION_EXE)/
|
rm -rfv ../prepa_zip/imapsync_$(VERSION_EXE)/
|
||||||
mkdir -p ../prepa_zip/imapsync_$(VERSION_EXE)/FAQ.d/ ../prepa_zip/imapsync_$(VERSION_EXE)/Cook/
|
mkdir -p ../prepa_zip/imapsync_$(VERSION_EXE)/FAQ.d/ ../prepa_zip/imapsync_$(VERSION_EXE)/Cook/
|
||||||
@ -329,17 +376,21 @@ zip: dosify_bat
|
|||||||
|
|
||||||
# C:\Users\mansour\Desktop\imapsync
|
# C:\Users\mansour\Desktop\imapsync
|
||||||
|
|
||||||
.PHONY: mac bin
|
.PHONY: mac bin win lin
|
||||||
|
|
||||||
mac: imapsync_bin_Darwin
|
mac: imapsync_bin_Darwin
|
||||||
|
|
||||||
imapsync_bin_Darwin: imapsync
|
imapsync_bin_Darwin: imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync
|
||||||
rcsdiff imapsync
|
rcsdiff imapsync
|
||||||
rsync -p -e 'ssh -p 995' imapsync W/build_mac.sh gilleslamira@gate.polarhome.com:
|
rsync -p -e 'ssh -p 995' imapsync W/build_mac.sh INSTALL.d/prerequisites_imapsync gilleslamira@gate.polarhome.com:
|
||||||
ssh -p 995 gilleslamira@gate.polarhome.com 'sh build_mac.sh'
|
ssh -p 995 gilleslamira@gate.polarhome.com 'sh build_mac.sh'
|
||||||
rsync -P -e 'ssh -p 995' gilleslamira@gate.polarhome.com:imapsync_bin_Darwin .
|
rsync -P -e 'ssh -p 995' gilleslamira@gate.polarhome.com:imapsync_bin_Darwin .
|
||||||
|
|
||||||
bin: $(BIN_NAME)
|
bin: lin mac win
|
||||||
|
|
||||||
|
lin: $(BIN_NAME)
|
||||||
|
|
||||||
|
win: imapsync.exe
|
||||||
|
|
||||||
$(BIN_NAME): imapsync
|
$(BIN_NAME): imapsync
|
||||||
rcsdiff imapsync
|
rcsdiff imapsync
|
||||||
@ -359,6 +410,7 @@ lfo: upload_lfo
|
|||||||
tarball: ../prepa_dist/$(DIST_FILE)
|
tarball: ../prepa_dist/$(DIST_FILE)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
../prepa_dist/$(DIST_FILE): imapsync
|
../prepa_dist/$(DIST_FILE): imapsync
|
||||||
echo making tarball ../prepa_dist/$(DIST_FILE)
|
echo making tarball ../prepa_dist/$(DIST_FILE)
|
||||||
rcsdiff RCS/*
|
rcsdiff RCS/*
|
||||||
@ -373,6 +425,7 @@ tarball: ../prepa_dist/$(DIST_FILE)
|
|||||||
ls -l ../prepa_dist/$(DIST_FILE)
|
ls -l ../prepa_dist/$(DIST_FILE)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DIST_PATH := ./dist/
|
DIST_PATH := ./dist/
|
||||||
|
|
||||||
dist: cidone test clean all perlcritic dist_prepa dist_zip README_dist.txt
|
dist: cidone test clean all perlcritic dist_prepa dist_zip README_dist.txt
|
||||||
@ -384,11 +437,17 @@ md5:
|
|||||||
sha:
|
sha:
|
||||||
cd $(DIST_PATH)/ && sha512sum *
|
cd $(DIST_PATH)/ && sha512sum *
|
||||||
|
|
||||||
|
.PHONY: moveoldrelease
|
||||||
|
|
||||||
dist_prepa: tarball
|
moveoldrelease:
|
||||||
|
ls -dl dist/imapsync dist/imapsync-$(VERSION_PREVIOUS).tgz dist/imapsync_$(VERSION_PREVIOUS).zip
|
||||||
|
test -d dist/old_releases/$(VERSION_PREVIOUS) || mkdir dist/old_releases/$(VERSION_PREVIOUS) && cd dist/old_releases/$(VERSION_PREVIOUS)
|
||||||
|
mv -vf dist/imapsync dist/imapsync-$(VERSION_PREVIOUS).tgz dist/imapsync_$(VERSION_PREVIOUS).zip dist/old_releases/$(VERSION_PREVIOUS)
|
||||||
|
|
||||||
|
dist_prepa: tarball moveoldrelease
|
||||||
ln -f ../prepa_dist/$(DIST_FILE) $(DIST_PATH)/
|
ln -f ../prepa_dist/$(DIST_FILE) $(DIST_PATH)/
|
||||||
rcsdiff imapsync
|
rcsdiff imapsync
|
||||||
cp -a imapsync $(DIST_PATH)/
|
cp -a ../prepa_dist/$(DIST_NAME)/imapsync $(DIST_PATH)/
|
||||||
#cd $(DIST_PATH)/ && md5sum $(DIST_FILE) > $(DIST_FILE).md5.txt
|
#cd $(DIST_PATH)/ && md5sum $(DIST_FILE) > $(DIST_FILE).md5.txt
|
||||||
#cd $(DIST_PATH)/ && md5sum -c $(DIST_FILE).md5.txt
|
#cd $(DIST_PATH)/ && md5sum -c $(DIST_FILE).md5.txt
|
||||||
ls -l $(DIST_PATH)/
|
ls -l $(DIST_PATH)/
|
||||||
@ -454,28 +513,37 @@ upload_lfo:
|
|||||||
/home/gilles/public_html/www.linux-france.org/html/prj/imapsync/.htaccess
|
/home/gilles/public_html/www.linux-france.org/html/prj/imapsync/.htaccess
|
||||||
sh ~/memo/lfo-rsync
|
sh ~/memo/lfo-rsync
|
||||||
|
|
||||||
valid_index: .valid.index.shtml
|
valid_index: W/.valid.index.shtml
|
||||||
|
|
||||||
checklink: index.shtml
|
cl: ./W/checklink.txt
|
||||||
checklink -b -q http://lamiral.info/~gilles/imapsync/
|
|
||||||
|
|
||||||
checklinkext: S/news.shtml S/external.shtml S/imapservers.shtml S/template.shtml
|
./W/checklink.txt: index.shtml
|
||||||
|
checklink -b -q http://lamiral.info/~gilles/imapsync/ |tee ./W/checklink.txt
|
||||||
|
|
||||||
|
cle: ./W/checklinkext.txt
|
||||||
|
|
||||||
|
./W/checklinkext.txt: S/news.shtml S/external.shtml S/imapservers.shtml S/template_xhtml1.shtml
|
||||||
checklink -b -q \
|
checklink -b -q \
|
||||||
http://lamiral.info/~gilles/imapsync/S/template.shtml \
|
http://lamiral.info/~gilles/imapsync/S/template_xhtml1.shtml \
|
||||||
http://lamiral.info/~gilles/imapsync/S/news.shtml \
|
http://lamiral.info/~gilles/imapsync/S/news.shtml \
|
||||||
http://lamiral.info/~gilles/imapsync/S/external.shtml \
|
http://lamiral.info/~gilles/imapsync/S/external.shtml \
|
||||||
http://lamiral.info/~gilles/imapsync/S/imapservers.shtml
|
http://lamiral.info/~gilles/imapsync/S/imapservers.shtml \
|
||||||
|
| tee ./W/checklinkext.txt
|
||||||
.valid.index.shtml: index.shtml S/*.shtml
|
|
||||||
|
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
|
for f in index.shtml S/*.shtml; do echo tidy -q $$f; tidy -q $$f > /dev/null; done
|
||||||
validate --verbose index.shtml S/*.shtml
|
./W/tools/validate_xml_html5 index.shtml S/*.shtml
|
||||||
touch .valid.index.shtml
|
touch W/.valid.index.shtml
|
||||||
|
|
||||||
.PHONY: upload_index upload_FAQ
|
.PHONY: upload_index upload_FAQ ci_imapsync upload_bin
|
||||||
|
|
||||||
upload_index: .valid.index.shtml
|
upload_bin:
|
||||||
rcsdiff index.shtml S/*.shtml FAQ FAQ.d/*.txt INSTALL LICENSE CREDITS TODO W/*.bat examples/*.bat index.shtml INSTALL.d/*.txt imapsync
|
rsync -a imapsync.exe imapsync_bin_Darwin imapsync_bin_Linux_i686 imapsync ../imapsync_website/
|
||||||
rsync -avH index.shtml FAQ INSTALL OPTIONS NOLIMIT LICENSE CREDITS TODO imapsync imapsync.exe $(BIN_NAME) imapsync_bin_Darwin ../imapsync_website/
|
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
|
||||||
|
|
||||||
|
upload_index: W/.valid.index.shtml
|
||||||
|
rcsdiff index.shtml S/*.shtml FAQ FAQ.d/*.txt INSTALL LICENSE CREDITS TODO W/*.bat examples/*.bat index.shtml INSTALL.d/*.txt
|
||||||
|
rsync -avH index.shtml FAQ INSTALL OPTIONS NOLIMIT LICENSE CREDITS TODO ../imapsync_website/
|
||||||
rsync -avH S/ ../imapsync_website/S/
|
rsync -avH S/ ../imapsync_website/S/
|
||||||
rsync -aHv --delete ./examples/ ../imapsync_website/examples/
|
rsync -aHv --delete ./examples/ ../imapsync_website/examples/
|
||||||
rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/
|
rsync -aHv --delete ./INSTALL.d/ ../imapsync_website/INSTALL.d/
|
||||||
@ -484,6 +552,13 @@ upload_index: .valid.index.shtml
|
|||||||
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
|
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
|
||||||
|
|
||||||
|
|
||||||
|
ci_imapsync:
|
||||||
|
rcsdiff imapsync
|
||||||
|
|
||||||
|
upload_latest: ci_imapsync bin
|
||||||
|
rsync -a imapsync imapsync_bin_Linux_i686 imapsync_bin_Darwin imapsync.exe ../imapsync_website/
|
||||||
|
rsync -aHvz --delete ../imapsync_website/ root@ks.lamiral.info:/var/www/imapsync/
|
||||||
|
|
||||||
upload_FAQ:
|
upload_FAQ:
|
||||||
rcsdiff FAQ FAQ.d/*.txt INSTALL LICENSE CREDITS TODO INSTALL.d/*.txt
|
rcsdiff FAQ FAQ.d/*.txt INSTALL LICENSE CREDITS TODO INSTALL.d/*.txt
|
||||||
rsync -avH FAQ INSTALL OPTIONS CREDITS TODO ../imapsync_website/
|
rsync -avH FAQ INSTALL OPTIONS CREDITS TODO ../imapsync_website/
|
||||||
@ -495,7 +570,6 @@ upload_FAQ:
|
|||||||
|
|
||||||
upload_ks: ci tarball
|
upload_ks: ci tarball
|
||||||
rsync -aHv $(PUBLIC) ../imapsync_website/
|
rsync -aHv $(PUBLIC) ../imapsync_website/
|
||||||
rsync -aHv $(PUBLIC_W) ../imapsync_website/W/
|
|
||||||
rsync -aHv --delete ./W/ks.htaccess ../imapsync_website/.htaccess
|
rsync -aHv --delete ./W/ks.htaccess ../imapsync_website/.htaccess
|
||||||
rsync -avH ./S/ ../imapsync_website/S/
|
rsync -avH ./S/ ../imapsync_website/S/
|
||||||
rsync -aHv --delete ./dist/ ../imapsync_website/dist/
|
rsync -aHv --delete ./dist/ ../imapsync_website/dist/
|
||||||
|
18
OPTIONS
18
OPTIONS
@ -36,8 +36,8 @@
|
|||||||
See all possibilities in the new() method of IO::Socket::SSL
|
See all possibilities in the new() method of IO::Socket::SSL
|
||||||
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
||||||
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
||||||
See --sslargs1
|
See --sslargs1
|
||||||
|
|
||||||
--timeout1 int : Connection timeout in seconds for host1.
|
--timeout1 int : Connection timeout in seconds for host1.
|
||||||
Default is 120 and 0 means no timeout at all.
|
Default is 120 and 0 means no timeout at all.
|
||||||
--timeout2 int : Connection timeout in seconds for host2.
|
--timeout2 int : Connection timeout in seconds for host2.
|
||||||
@ -91,9 +91,9 @@
|
|||||||
It does it by adding two --regextrans2 options before
|
It does it by adding two --regextrans2 options before
|
||||||
all others. Add --debug to see what's really going on.
|
all others. Add --debug to see what's really going on.
|
||||||
|
|
||||||
--automap : guesses folders mapping, for folders like
|
--automap : guesses folders mapping, for folders like
|
||||||
"Sent", "Junk", "Drafts", "All", "Archive", "Flagged".
|
"Sent", "Junk", "Drafts", "All", "Archive", "Flagged".
|
||||||
--f1f2 str1=str2 : Force folder str1 to be synced to str2,
|
--f1f2 str1=str2 : Force folder str1 to be synced to str2,
|
||||||
--f1f2 overrides --automap and --regextrans2.
|
--f1f2 overrides --automap and --regextrans2.
|
||||||
--regextrans2 reg : Apply the whole regex to each destination folders.
|
--regextrans2 reg : Apply the whole regex to each destination folders.
|
||||||
--regextrans2 reg : and this one. etc.
|
--regextrans2 reg : and this one. etc.
|
||||||
@ -134,7 +134,7 @@
|
|||||||
--pipemess cmd : Apply this cmd command to each message content
|
--pipemess cmd : Apply this cmd command to each message content
|
||||||
before the copy.
|
before the copy.
|
||||||
--pipemess cmd : and this one, etc.
|
--pipemess cmd : and this one, etc.
|
||||||
|
|
||||||
--disarmreadreceipts : Disarms read receipts (host2 Exchange issue)
|
--disarmreadreceipts : Disarms read receipts (host2 Exchange issue)
|
||||||
|
|
||||||
--regexmess reg : Apply the whole regex to each message before transfer.
|
--regexmess reg : Apply the whole regex to each message before transfer.
|
||||||
@ -274,10 +274,10 @@
|
|||||||
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
||||||
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
||||||
|
|
||||||
Here is a [linux] system (Linux petite 3.2.0-97-generic #137-Ubuntu SMP Thu Dec 17 21:14:00 UTC 2015 i686)
|
Here is a [linux] system (Linux petite 3.13.0-92-generic #139-Ubuntu SMP Tue Jun 28 20:42:32 UTC 2016 i686)
|
||||||
With perl 5.14.2 Mail::IMAPClient 3.38
|
with Perl 5.18.2 Mail::IMAPClient 3.38
|
||||||
$Id: imapsync,v 1.684 2016/03/17 08:35:03 gilles Exp gilles $
|
$Id: imapsync,v 1.727 2016/08/19 10:30:36 gilles Exp gilles $
|
||||||
This current imapsync is up to date
|
This imapsync is up to date
|
||||||
|
|
||||||
Homepage: http://imapsync.lamiral.info/
|
Homepage: http://imapsync.lamiral.info/
|
||||||
|
|
||||||
|
203
README
203
README
@ -1,15 +1,17 @@
|
|||||||
NAME
|
NAME
|
||||||
imapsync - IMAP synchronisation, sync, copy or migration tool.
|
imapsync - Email IMAP tool for syncing, copying and migrating email
|
||||||
Synchronises mailboxes between two imap servers. Good at IMAP migration.
|
mailboxes.
|
||||||
More than 66 different IMAP server softwares supported with success, few
|
|
||||||
|
The imapsync command synchronises mailboxes between two imap servers.
|
||||||
|
More than 69 different IMAP server softwares supported with success, few
|
||||||
failures.
|
failures.
|
||||||
|
|
||||||
$Revision: 1.684 $
|
$Revision: 1.727 $
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
To synchronize the source imap account
|
To synchronize the source imap account
|
||||||
"test1" on server "test1.lamiral.info" with password "secret1"
|
"test1" on server "test1.lamiral.info" with password "secret1"
|
||||||
to the destination imap account
|
to the destination imap account
|
||||||
"test2" on server "test2.lamiral.info" with password "secret2"
|
"test2" on server "test2.lamiral.info" with password "secret2"
|
||||||
do:
|
do:
|
||||||
|
|
||||||
@ -17,11 +19,16 @@ SYNOPSIS
|
|||||||
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
||||||
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
||||||
|
|
||||||
|
REQUIRED ARGUMENTS
|
||||||
|
The required argmuments are the six values, three on each sides, needed
|
||||||
|
to login into the IMAP servers, a host, a username, and a password, two
|
||||||
|
times.
|
||||||
|
|
||||||
INSTALL
|
INSTALL
|
||||||
Imapsync works under any Unix with perl.
|
Imapsync works under any Unix with perl.
|
||||||
Imapsync works under Windows (2000, XP, Vista, Seven)
|
Imapsync works under Windows (2000, XP, Vista, Seven)
|
||||||
as a standalone binary software called imapsync.exe
|
as a standalone binary software called imapsync.exe
|
||||||
Imapsync works under OS X as a standalone binary
|
Imapsync works under OS X as a standalone binary
|
||||||
software called imapsync_bin_Darwin.
|
software called imapsync_bin_Darwin.
|
||||||
|
|
||||||
Purchase latest imapsync at
|
Purchase latest imapsync at
|
||||||
@ -35,11 +42,15 @@ INSTALL
|
|||||||
|
|
||||||
Go into the directory imapsync-x.xx and read the INSTALL file.
|
Go into the directory imapsync-x.xx and read the INSTALL file.
|
||||||
As mentioned at http://imapsync.lamiral.info/#install
|
As mentioned at http://imapsync.lamiral.info/#install
|
||||||
the INSTALL file can also be found at
|
the INSTALL file can also be found at
|
||||||
http://imapsync.lamiral.info/INSTALL
|
http://imapsync.lamiral.info/INSTALL
|
||||||
It is now split in several files for each system
|
It is now split in several files for each system
|
||||||
http://imapsync.lamiral.info/INSTALL.d/
|
http://imapsync.lamiral.info/INSTALL.d/
|
||||||
|
|
||||||
|
CONFIGURATION
|
||||||
|
There is no specific configuration file for imapsync, everything is
|
||||||
|
specified by the command line parameteres and the default behavior.
|
||||||
|
|
||||||
USAGE
|
USAGE
|
||||||
To get a description of each option just run imapsync with no argument,
|
To get a description of each option just run imapsync with no argument,
|
||||||
like this:
|
like this:
|
||||||
@ -50,16 +61,16 @@ USAGE
|
|||||||
http://imapsync.lamiral.info/OPTIONS and is reproduced here:
|
http://imapsync.lamiral.info/OPTIONS and is reproduced here:
|
||||||
|
|
||||||
usage: ./imapsync [options]
|
usage: ./imapsync [options]
|
||||||
|
|
||||||
Several options are mandatory.
|
Several options are mandatory.
|
||||||
str means string
|
str means string
|
||||||
int means integer
|
int means integer
|
||||||
reg means regular expression
|
reg means regular expression
|
||||||
cmd means command
|
cmd means command
|
||||||
|
|
||||||
--dry : Makes imapsync doing nothing, just print what would
|
--dry : Makes imapsync doing nothing, just print what would
|
||||||
be done without --dry.
|
be done without --dry.
|
||||||
|
|
||||||
--host1 str : Source or "from" imap server. Mandatory.
|
--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. Default is 143, 993 if --ssl1
|
||||||
--user1 str : User to login on host1. Mandatory.
|
--user1 str : User to login on host1. Mandatory.
|
||||||
@ -70,12 +81,12 @@ USAGE
|
|||||||
--port2 int : Port to connect on host2. Default is 143, 993 if --ssl2
|
--port2 int : Port to connect on host2. Default is 143, 993 if --ssl2
|
||||||
--user2 str : User to login on host2. Mandatory.
|
--user2 str : User to login on host2. Mandatory.
|
||||||
--password2 str : Password for the user2.
|
--password2 str : Password for the user2.
|
||||||
|
|
||||||
--passfile1 str : Password file for the user1. It must contain the
|
--passfile1 str : Password file for the user1. It must contain the
|
||||||
password on the first line. This option avoids to show
|
password on the first line. This option avoids to show
|
||||||
the password on the command line like --password1 does.
|
the password on the command line like --password1 does.
|
||||||
--passfile2 str : Password file for the user2. Contains the password.
|
--passfile2 str : Password file for the user2. Contains the password.
|
||||||
|
|
||||||
--ssl1 : Use a SSL connection on host1.
|
--ssl1 : Use a SSL connection on host1.
|
||||||
--ssl2 : Use a SSL connection on host2.
|
--ssl2 : Use a SSL connection on host2.
|
||||||
--tls1 : Use a TLS connection on host1.
|
--tls1 : Use a TLS connection on host1.
|
||||||
@ -86,45 +97,45 @@ USAGE
|
|||||||
See all possibilities in the new() method of IO::Socket::SSL
|
See all possibilities in the new() method of IO::Socket::SSL
|
||||||
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
||||||
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
||||||
See --sslargs1
|
See --sslargs1
|
||||||
|
|
||||||
--timeout1 int : Connection timeout in seconds for host1.
|
--timeout1 int : Connection timeout in seconds for host1.
|
||||||
Default is 120 and 0 means no timeout at all.
|
Default is 120 and 0 means no timeout at all.
|
||||||
--timeout2 int : Connection timeout in seconds for host2.
|
--timeout2 int : Connection timeout in seconds for host2.
|
||||||
Default is 120 and 0 means no timeout at all.
|
Default is 120 and 0 means no timeout at all.
|
||||||
|
|
||||||
--authmech1 str : Auth mechanism to use with host1:
|
--authmech1 str : Auth mechanism to use with host1:
|
||||||
PLAIN, LOGIN, CRAM-MD5 etc. Use UPPERCASE.
|
PLAIN, LOGIN, CRAM-MD5 etc. Use UPPERCASE.
|
||||||
--authmech2 str : Auth mechanism to use with host2. See --authmech1
|
--authmech2 str : Auth mechanism to use with host2. See --authmech1
|
||||||
|
|
||||||
--authuser1 str : User to auth with on host1 (admin user).
|
--authuser1 str : User to auth with on host1 (admin user).
|
||||||
Avoid using --authmech1 SOMETHING with --authuser1.
|
Avoid using --authmech1 SOMETHING with --authuser1.
|
||||||
--authuser2 str : User to auth with on host2 (admin user).
|
--authuser2 str : User to auth with on host2 (admin user).
|
||||||
--proxyauth1 : Use proxyauth on host1. Requires --authuser1.
|
--proxyauth1 : Use proxyauth on host1. Requires --authuser1.
|
||||||
Required by Sun/iPlanet/Netscape IMAP servers to
|
Required by Sun/iPlanet/Netscape IMAP servers to
|
||||||
be able to use an administrative user.
|
be able to use an administrative user.
|
||||||
--proxyauth2 : Use proxyauth on host2. Requires --authuser2.
|
--proxyauth2 : Use proxyauth on host2. Requires --authuser2.
|
||||||
|
|
||||||
--authmd51 : Use MD5 authentification for host1.
|
--authmd51 : Use MD5 authentification for host1.
|
||||||
--authmd52 : Use MD5 authentification for host2.
|
--authmd52 : Use MD5 authentification for host2.
|
||||||
--domain1 str : Domain on host1 (NTLM authentication).
|
--domain1 str : Domain on host1 (NTLM authentication).
|
||||||
--domain2 str : Domain on host2 (NTLM authentication).
|
--domain2 str : Domain on host2 (NTLM authentication).
|
||||||
|
|
||||||
|
|
||||||
--folder str : Sync this folder.
|
--folder str : Sync this folder.
|
||||||
--folder str : and this one, etc.
|
--folder str : and this one, etc.
|
||||||
--folderrec str : Sync this folder recursively.
|
--folderrec str : Sync this folder recursively.
|
||||||
--folderrec str : and this one, etc.
|
--folderrec str : and this one, etc.
|
||||||
|
|
||||||
--folderfirst str : Sync this folder first. --folderfirst "Work"
|
--folderfirst str : Sync this folder first. --folderfirst "Work"
|
||||||
--folderfirst str : then this one, etc.
|
--folderfirst str : then this one, etc.
|
||||||
--folderlast str : Sync this folder last. --folderlast "[Gmail]/All Mail"
|
--folderlast str : Sync this folder last. --folderlast "[Gmail]/All Mail"
|
||||||
--folderlast str : then this one, etc.
|
--folderlast str : then this one, etc.
|
||||||
|
|
||||||
--nomixfolders : Do not merge folders when host1 is case sensitive
|
--nomixfolders : Do not merge folders when host1 is case sensitive
|
||||||
while host2 is not (like Exchange). Only the first
|
while host2 is not (like Exchange). Only the first
|
||||||
similar folder is synced (ex: Sent SENT sent -> Sent).
|
similar folder is synced (ex: Sent SENT sent -> Sent).
|
||||||
|
|
||||||
--skipemptyfolders : Empty host1 folders are not created on host2.
|
--skipemptyfolders : Empty host1 folders are not created on host2.
|
||||||
|
|
||||||
--f1f2 str1=str2 : Force folder str1 to be synced to str2.
|
--f1f2 str1=str2 : Force folder str1 to be synced to str2.
|
||||||
@ -136,12 +147,12 @@ USAGE
|
|||||||
Several folders to avoid:
|
Several folders to avoid:
|
||||||
--exclude 'fold1|fold2|f3' skips fold1, fold2 and f3.
|
--exclude 'fold1|fold2|f3' skips fold1, fold2 and f3.
|
||||||
--exclude reg : or this one, etc.
|
--exclude reg : or this one, etc.
|
||||||
|
|
||||||
--subfolder2 str : Move whole host1 folders hierarchy under this
|
--subfolder2 str : Move whole host1 folders hierarchy under this
|
||||||
host2 folder str .
|
host2 folder str .
|
||||||
It does it by adding two --regextrans2 options before
|
It does it by adding two --regextrans2 options before
|
||||||
all others. Add --debug to see what's really going on.
|
all others. Add --debug to see what's really going on.
|
||||||
|
|
||||||
--regextrans2 reg : Apply the whole regex to each destination folders.
|
--regextrans2 reg : Apply the whole regex to each destination folders.
|
||||||
--regextrans2 reg : and this one. etc.
|
--regextrans2 reg : and this one. etc.
|
||||||
When you play with the --regextrans2 option, first
|
When you play with the --regextrans2 option, first
|
||||||
@ -149,21 +160,21 @@ USAGE
|
|||||||
Then, when happy, remove --dry, remove --justfolders.
|
Then, when happy, remove --dry, remove --justfolders.
|
||||||
Have in mind that --regextrans2 is applied after prefix
|
Have in mind that --regextrans2 is applied after prefix
|
||||||
and separator inversion.
|
and separator inversion.
|
||||||
|
|
||||||
--tmpdir str : Where to store temporary files and subdirectories.
|
--tmpdir str : Where to store temporary files and subdirectories.
|
||||||
Will be created if it doesn't exist.
|
Will be created if it doesn't exist.
|
||||||
Default is system specific, Unix is /tmp but
|
Default is system specific, Unix is /tmp but
|
||||||
it's often small and deleted at reboot.
|
it's often small and deleted at reboot.
|
||||||
--tmpdir /var/tmp should be better.
|
--tmpdir /var/tmp should be better.
|
||||||
--pidfile str : The file where imapsync pid is written.
|
--pidfile str : The file where imapsync pid is written.
|
||||||
--pidfilelocking : Abort if pidfile already exists. Usefull to avoid
|
--pidfilelocking : Abort if pidfile already exists. Usefull to avoid
|
||||||
concurrent transfers on the same mailbox.
|
concurrent transfers on the same mailbox.
|
||||||
|
|
||||||
--nolog : Turn off logging on file
|
--nolog : Turn off logging on file
|
||||||
--logfile str : Change the default log filename (can be dirname/filename).
|
--logfile str : Change the default log filename (can be dirname/filename).
|
||||||
--logdir str : Change the default log directory. Default is LOG_imapsync
|
--logdir str : Change the default log directory. Default is LOG_imapsync
|
||||||
|
|
||||||
--prefix1 str : Remove prefix to all destination folders
|
--prefix1 str : Remove prefix to all destination folders
|
||||||
(usually INBOX. or INBOX/ or an empty string "")
|
(usually INBOX. or INBOX/ or an empty string "")
|
||||||
you have to use --prefix1 if host1 imap server
|
you have to use --prefix1 if host1 imap server
|
||||||
does not have NAMESPACE capability, so imapsync
|
does not have NAMESPACE capability, so imapsync
|
||||||
@ -171,16 +182,16 @@ USAGE
|
|||||||
--prefix2 str : Add prefix to all host2 folders. See --prefix1
|
--prefix2 str : Add prefix to all host2 folders. See --prefix1
|
||||||
--sep1 str : Host1 separator in case NAMESPACE is not supported.
|
--sep1 str : Host1 separator in case NAMESPACE is not supported.
|
||||||
--sep2 str : Host2 separator in case NAMESPACE is not supported.
|
--sep2 str : Host2 separator in case NAMESPACE is not supported.
|
||||||
|
|
||||||
--skipmess reg : Skips messages maching the regex.
|
--skipmess reg : Skips messages maching the regex.
|
||||||
Example: 'm/[\x80-ff]/' # to avoid 8bits messages.
|
Example: 'm/[\x80-ff]/' # to avoid 8bits messages.
|
||||||
--skipmess is applied before --regexmess
|
--skipmess is applied before --regexmess
|
||||||
--skipmess reg : or this one, etc.
|
--skipmess reg : or this one, etc.
|
||||||
|
|
||||||
--pipemess cmd : Apply this cmd command to each message content
|
--pipemess cmd : Apply this cmd command to each message content
|
||||||
before the copy.
|
before the copy.
|
||||||
--pipemess cmd : and this one, etc.
|
--pipemess cmd : and this one, etc.
|
||||||
|
|
||||||
--disarmreadreceipts : Disarms read receipts (host2 Exchange issue)
|
--disarmreadreceipts : Disarms read receipts (host2 Exchange issue)
|
||||||
|
|
||||||
--regexmess reg : Apply the whole regex to each message before transfer.
|
--regexmess reg : Apply the whole regex to each message before transfer.
|
||||||
@ -190,20 +201,20 @@ USAGE
|
|||||||
--regexflag reg : Apply the whole regex to each flags list.
|
--regexflag reg : Apply the whole regex to each flags list.
|
||||||
Example: 's/"Junk"//g' # to remove "Junk" flag.
|
Example: 's/"Junk"//g' # to remove "Junk" flag.
|
||||||
--regexflag reg : and this one, etc.
|
--regexflag reg : and this one, etc.
|
||||||
|
|
||||||
--delete : Deletes messages on host1 server after a successful
|
--delete : Deletes messages on host1 server after a successful
|
||||||
transfer. Option --delete has the following behavior:
|
transfer. Option --delete has the following behavior:
|
||||||
it marks messages as deleted with the IMAP flag
|
it marks messages as deleted with the IMAP flag
|
||||||
\Deleted, then messages are really deleted with an
|
\Deleted, then messages are really deleted with an
|
||||||
EXPUNGE IMAP command.
|
EXPUNGE IMAP command.
|
||||||
|
|
||||||
--delete2 : Delete messages in host2 that are not in
|
--delete2 : Delete messages in host2 that are not in
|
||||||
host1 server. Useful for backup or pre-sync.
|
host1 server. Useful for backup or pre-sync.
|
||||||
--delete2duplicates : Delete messages in host2 that are duplicates.
|
--delete2duplicates : Delete messages in host2 that are duplicates.
|
||||||
Works only without --useuid since duplicates are
|
Works only without --useuid since duplicates are
|
||||||
detected with an header part of each message.
|
detected with an header part of each message.
|
||||||
|
|
||||||
--delete2folders : Delete folders in host2 that are not in host1 server.
|
--delete2folders : Delete folders in host2 that are not in host1 server.
|
||||||
For safety, first try it like this (it is safe):
|
For safety, first try it like this (it is safe):
|
||||||
--delete2folders --dry --justfolders --nofoldersizes
|
--delete2folders --dry --justfolders --nofoldersizes
|
||||||
--delete2foldersonly reg : Deleted only folders matching regex.
|
--delete2foldersonly reg : Deleted only folders matching regex.
|
||||||
@ -212,8 +223,8 @@ USAGE
|
|||||||
Example: --delete2foldersbutnot "/Tasks$|Contacts$|Foo$/"
|
Example: --delete2foldersbutnot "/Tasks$|Contacts$|Foo$/"
|
||||||
--noexpunge : Do not expunge messages on host1.
|
--noexpunge : Do not expunge messages on host1.
|
||||||
Expunge really deletes messages marked deleted.
|
Expunge really deletes messages marked deleted.
|
||||||
Expunge is made at the beginning, on host1 only.
|
Expunge is made at the beginning, on host1 only.
|
||||||
Newly transferred messages are also expunged if
|
Newly transferred messages are also expunged if
|
||||||
option --delete is given.
|
option --delete is given.
|
||||||
No expunge is done on host2 account (unless --expunge2)
|
No expunge is done on host2 account (unless --expunge2)
|
||||||
--expunge1 : Expunge messages on host1 after messages transfer.
|
--expunge1 : Expunge messages on host1 after messages transfer.
|
||||||
@ -221,13 +232,13 @@ USAGE
|
|||||||
--uidexpunge2 : uidexpunge messages on the host2 account
|
--uidexpunge2 : uidexpunge messages on the host2 account
|
||||||
that are not on the host1 account, requires --delete2
|
that are not on the host1 account, requires --delete2
|
||||||
--nomixfolders : Avoid merging folders that are considered different on
|
--nomixfolders : Avoid merging folders that are considered different on
|
||||||
host1 but the same on destination host2 because of
|
host1 but the same on destination host2 because of
|
||||||
case sensitivities and insensitivities.
|
case sensitivities and insensitivities.
|
||||||
|
|
||||||
--syncinternaldates : Sets the internal dates on host2 same as host1.
|
--syncinternaldates : Sets the internal dates on host2 same as host1.
|
||||||
Turned on by default. Internal date is the date
|
Turned on by default. Internal date is the date
|
||||||
a message arrived on a host (mtime).
|
a message arrived on a host (mtime).
|
||||||
--idatefromheader : Sets the internal dates on host2 same as the
|
--idatefromheader : Sets the internal dates on host2 same as the
|
||||||
"Date:" headers.
|
"Date:" headers.
|
||||||
|
|
||||||
--maxsize int : Skip messages larger (or equal) than int bytes
|
--maxsize int : Skip messages larger (or equal) than int bytes
|
||||||
@ -242,48 +253,48 @@ USAGE
|
|||||||
past|+++++++++++++++minage---->now
|
past|+++++++++++++++minage---->now
|
||||||
past|----maxage+++++minage---->now (intersection)
|
past|----maxage+++++minage---->now (intersection)
|
||||||
past|++++minage-----maxage++++>now (union)
|
past|++++minage-----maxage++++>now (union)
|
||||||
|
|
||||||
--search str : Selects only messages returned by this IMAP SEARCH
|
--search str : Selects only messages returned by this IMAP SEARCH
|
||||||
command. Applied on both sides.
|
command. Applied on both sides.
|
||||||
--search1 str : Same as --search for selecting host1 messages only.
|
--search1 str : Same as --search for selecting host1 messages only.
|
||||||
--search2 str : Same as --search for selecting host2 messages only.
|
--search2 str : Same as --search for selecting host2 messages only.
|
||||||
--search CRIT equals --search1 CRIT --search2 CRIT
|
--search CRIT equals --search1 CRIT --search2 CRIT
|
||||||
|
|
||||||
--exitwhenover int : Stop syncing when total bytes transferred reached.
|
--exitwhenover int : Stop syncing when total bytes transferred reached.
|
||||||
Gmail per day allows
|
Gmail per day allows
|
||||||
2500000000 = 2.5 GB downloaded from Gmail as host2
|
2500000000 = 2.5 GB downloaded from Gmail as host2
|
||||||
500000000 = 500 MB uploaded to Gmail as host1.
|
500000000 = 500 MB uploaded to Gmail as host1.
|
||||||
|
|
||||||
--maxlinelength int : skip messages with a line length longer than int bytes.
|
--maxlinelength int : skip messages with a line length longer than int bytes.
|
||||||
RFC 2822 says it must be no more than 1000 bytes.
|
RFC 2822 says it must be no more than 1000 bytes.
|
||||||
|
|
||||||
--useheader str : Use this header to compare messages on both sides.
|
--useheader str : Use this header to compare messages on both sides.
|
||||||
Ex: Message-ID or Subject or Date.
|
Ex: Message-ID or Subject or Date.
|
||||||
--useheader str and this one, etc.
|
--useheader str and this one, etc.
|
||||||
|
|
||||||
--subscribed : Transfers subscribed folders.
|
--subscribed : Transfers subscribed folders.
|
||||||
--subscribe : Subscribe to the folders transferred on the
|
--subscribe : Subscribe to the folders transferred on the
|
||||||
host2 that are subscribed on host1. On by default.
|
host2 that are subscribed on host1. On by default.
|
||||||
--subscribeall : Subscribe to the folders transferred on the
|
--subscribeall : Subscribe to the folders transferred on the
|
||||||
host2 even if they are not subscribed on host1.
|
host2 even if they are not subscribed on host1.
|
||||||
|
|
||||||
--nofoldersizes : Do not calculate the size of each folder in bytes
|
--nofoldersizes : Do not calculate the size of each folder in bytes
|
||||||
and message counts. Default is to calculate them.
|
and message counts. Default is to calculate them.
|
||||||
--nofoldersizesatend: Do not calculate the size of each folder in bytes
|
--nofoldersizesatend: Do not calculate the size of each folder in bytes
|
||||||
and message counts at the end. Default is on.
|
and message counts at the end. Default is on.
|
||||||
--justfoldersizes : Exit after having printed the folder sizes.
|
--justfoldersizes : Exit after having printed the folder sizes.
|
||||||
|
|
||||||
--syncacls : Synchronises acls (Access Control Lists).
|
--syncacls : Synchronises acls (Access Control Lists).
|
||||||
--nosyncacls : Does not synchronize acls. This is the default.
|
--nosyncacls : Does not synchronize acls. This is the default.
|
||||||
Acls in IMAP are not standardized, be careful.
|
Acls in IMAP are not standardized, be careful.
|
||||||
|
|
||||||
--usecache : Use cache to speedup.
|
--usecache : Use cache to speedup.
|
||||||
--nousecache : Do not use cache. Caveat: --useuid --nousecache creates
|
--nousecache : Do not use cache. Caveat: --useuid --nousecache creates
|
||||||
duplicates on multiple runs.
|
duplicates on multiple runs.
|
||||||
--useuid : Use uid instead of header as a criterium to recognize
|
--useuid : Use uid instead of header as a criterium to recognize
|
||||||
messages. Option --usecache is then implied unless
|
messages. Option --usecache is then implied unless
|
||||||
--nousecache is used.
|
--nousecache is used.
|
||||||
|
|
||||||
--debug : Debug mode.
|
--debug : Debug mode.
|
||||||
--debugfolders : Debug mode for the folders part only.
|
--debugfolders : Debug mode for the folders part only.
|
||||||
--debugcontent : Debug content of the messages transfered. Huge ouput.
|
--debugcontent : Debug content of the messages transfered. Huge ouput.
|
||||||
@ -296,7 +307,7 @@ USAGE
|
|||||||
--errorsmax int : Exit when int number of errors is reached. Default is 50.
|
--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.
|
--tests : Run local non-regression tests. Exit code 0 means all ok.
|
||||||
--testslive : Run a live test with test1.lamiral.info imap server.
|
--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 connexion.
|
||||||
|
|
||||||
--version : Print only software version.
|
--version : Print only software version.
|
||||||
@ -305,19 +316,19 @@ USAGE
|
|||||||
--noid : Do not send/receive ID command to imap servers.
|
--noid : Do not send/receive ID command to imap servers.
|
||||||
--justconnect : Just connect to both servers and print useful
|
--justconnect : Just connect to both servers and print useful
|
||||||
information. Need only --host1 and --host2 options.
|
information. Need only --host1 and --host2 options.
|
||||||
--justlogin : Just login to both host1 and host2 with users
|
--justlogin : Just login to both host1 and host2 with users
|
||||||
credentials, then exit.
|
credentials, then exit.
|
||||||
--justfolders : Do only things about folders (ignore messages).
|
--justfolders : Do only things about folders (ignore messages).
|
||||||
|
|
||||||
--help : print this help.
|
--help : print this help.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
To synchronize the source imap account
|
To synchronize the source imap account
|
||||||
"test1" on server "test1.lamiral.info" with password "secret1"
|
"test1" on server "test1.lamiral.info" with password "secret1"
|
||||||
to the destination imap account
|
to the destination imap account
|
||||||
"test2" on server "test2.lamiral.info" with password "secret2"
|
"test2" on server "test2.lamiral.info" with password "secret2"
|
||||||
do:
|
do:
|
||||||
|
|
||||||
imapsync \
|
imapsync \
|
||||||
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
||||||
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
||||||
@ -365,6 +376,8 @@ OPTIONS
|
|||||||
|
|
||||||
imapsync
|
imapsync
|
||||||
|
|
||||||
|
or read the previous section named USAGE,
|
||||||
|
|
||||||
or read http://imapsync.lamiral.info/OPTIONS
|
or read http://imapsync.lamiral.info/OPTIONS
|
||||||
|
|
||||||
HISTORY
|
HISTORY
|
||||||
@ -429,15 +442,21 @@ EXIT STATUS
|
|||||||
So if you have an unreliable internet connection, you can use this loop
|
So if you have an unreliable internet connection, you can use this loop
|
||||||
in a Bourne shell:
|
in a Bourne shell:
|
||||||
|
|
||||||
while ! imapsync ...; do
|
while ! imapsync ...; do
|
||||||
echo imapsync not complete
|
echo imapsync not complete
|
||||||
done
|
done
|
||||||
|
|
||||||
LICENSE
|
LICENSE AND COPYRIGHT
|
||||||
imapsync is free, open, public but not always gratis software cover by
|
imapsync is free, open, public but not always gratis software cover by
|
||||||
the NOLIMIT Public License. See the LICENSE file included in the
|
the NOLIMIT Public License. See the LICENSE file included in the
|
||||||
distribution or just read this simple sentence as it is the licence
|
distribution or just read this simple sentence as it is the licence
|
||||||
text: No limit to do anything with this work and this license.
|
text:
|
||||||
|
|
||||||
|
"No limit 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."
|
||||||
|
|
||||||
MAILING-LIST
|
MAILING-LIST
|
||||||
The public mailing-list may be the best way to get free support.
|
The public mailing-list may be the best way to get free support.
|
||||||
@ -473,13 +492,13 @@ AUTHOR
|
|||||||
good way to stay maintening and supporting free open public softwares
|
good way to stay maintening and supporting free open public softwares
|
||||||
(see the license) over decades.
|
(see the license) over decades.
|
||||||
|
|
||||||
BUG REPORT GUIDELINES
|
BUGS AND LIMITATIONS
|
||||||
Help me to help you: follow the following guidelines.
|
Help me to help you: follow the following guidelines.
|
||||||
|
|
||||||
Report any bugs or feature requests to the public mailing-list or to the
|
Report any bugs or feature requests to the public mailing-list or to the
|
||||||
author.
|
author.
|
||||||
|
|
||||||
Before reporting bugs, read the FAQ, the README and the TODO files.
|
Before reporting bugs, read the FAQs, the README and the TODO files.
|
||||||
http://imapsync.lamiral.info/
|
http://imapsync.lamiral.info/
|
||||||
|
|
||||||
Upgrade to last imapsync release, maybe the bug is already fixed.
|
Upgrade to last imapsync release, maybe the bug is already fixed.
|
||||||
@ -498,23 +517,23 @@ BUG REPORT GUIDELINES
|
|||||||
- imapsync version.
|
- imapsync version.
|
||||||
|
|
||||||
- output near the first failures, a few lines before is good to get the context
|
- output near the first failures, a few lines before is good to get the context
|
||||||
of the issue. First failures messages are often more significant than
|
of the issue. First failures messages are often more significant than
|
||||||
the last ones.
|
the last ones.
|
||||||
|
|
||||||
- if the issue is always related to the same messages, include the output
|
|
||||||
with --debug --debugimap, near the failure point. For example,
|
|
||||||
Isolate a buggy message or two in a folder 'BUG' and use
|
|
||||||
|
|
||||||
imapsync ... --folder 'BUG' --debug --debugimap
|
- if the issue is always related to the same messages, include the output
|
||||||
|
with --debug --debugimap, near the failure point. For example,
|
||||||
|
Isolate a buggy message or two in a folder 'BUG' and use
|
||||||
|
|
||||||
|
imapsync ... --folder 'BUG' --debug --debugimap
|
||||||
|
|
||||||
- imap server softwares on both sides and their version number.
|
- imap server softwares on both sides and their version number.
|
||||||
|
|
||||||
- imapsync with all the options you use, the full command line
|
- imapsync with all the options you use, the full command line
|
||||||
you use (except the passwords of course).
|
you use (except the passwords of course).
|
||||||
|
|
||||||
- IMAPClient.pm version.
|
- IMAPClient.pm version.
|
||||||
|
|
||||||
- the run context. Do you run imapsync.exe, a unix binary
|
- the run context. Do you run imapsync.exe, a unix binary
|
||||||
or the perl script imapsync.
|
or the perl script imapsync.
|
||||||
|
|
||||||
- operating system running imapsync.
|
- operating system running imapsync.
|
||||||
@ -554,7 +573,7 @@ HUGE MIGRATION
|
|||||||
|
|
||||||
On Unix the shell program can be:
|
On Unix the shell program can be:
|
||||||
|
|
||||||
{ while IFS=';' read u1 p1 u2 p2; do
|
{ while IFS=';' read u1 p1 u2 p2; do
|
||||||
imapsync --host1 imap.side1.org --user1 "$u1" --password1 "$p1" \
|
imapsync --host1 imap.side1.org --user1 "$u1" --password1 "$p1" \
|
||||||
--host2 imap.side2.org --user2 "$u2" --password2 "$p2" ...
|
--host2 imap.side2.org --user2 "$u2" --password2 "$p2" ...
|
||||||
done ; } < file.txt
|
done ; } < file.txt
|
||||||
@ -571,10 +590,10 @@ HUGE MIGRATION
|
|||||||
You will find already written scripts at
|
You will find already written scripts at
|
||||||
http://imapsync.lamiral.info/examples/
|
http://imapsync.lamiral.info/examples/
|
||||||
|
|
||||||
Hacking
|
HACKING
|
||||||
Feel free to hack imapsync as the NOLIMIT license permits it.
|
Feel free to hack imapsync as the NOLIMIT license permits it.
|
||||||
|
|
||||||
Links
|
LINKS
|
||||||
Entries for imapsync:
|
Entries for imapsync:
|
||||||
https://web.archive.org/web/20070202005121/http://www.imap.org/products/
|
https://web.archive.org/web/20070202005121/http://www.imap.org/products/
|
||||||
showall.php
|
showall.php
|
||||||
@ -598,5 +617,5 @@ SIMILAR SOFTWARES
|
|||||||
|
|
||||||
Feedback (good or bad) will often be welcome.
|
Feedback (good or bad) will often be welcome.
|
||||||
|
|
||||||
$Id: imapsync,v 1.684 2016/03/17 08:35:03 gilles Exp gilles $
|
$Id: imapsync,v 1.727 2016/08/19 10:30:36 gilles Exp gilles $
|
||||||
|
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
|
|
||||||
<!-- $Id: bc-payment.html,v 1.3 2016/02/07 21:45:35 gilles Exp gilles $ -->
|
<!-- $Id: bc-payment.html,v 1.4 2016/07/27 21:51:57 gilles Exp gilles $ -->
|
||||||
|
|
||||||
<a
|
<a
|
||||||
class="coinbase-button"
|
class="coinbase-button"
|
||||||
data-code="c85b7c5aea8a50cc69c3f3a9afb96f91"
|
data-code="5c8544cfe2d17f92401e60fd9299760f"
|
||||||
href="https://www.coinbase.com/checkouts/c85b7c5aea8a50cc69c3f3a9afb96f91">Pay with bitcoins</a>
|
href="https://www.coinbase.com/checkouts/5c8544cfe2d17f92401e60fd9299760f">Pay with bitcoins</a>
|
||||||
<script
|
<script
|
||||||
src="https://www.coinbase.com/assets/button.js"
|
src="https://www.coinbase.com/assets/button.js"
|
||||||
type="text/javascript">
|
type="text/javascript">
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,6 +42,8 @@
|
|||||||
<a href="http://freecode.com/projects/imap-repl/">http://freecode.com/projects/imap-repl/</a></li>
|
<a href="http://freecode.com/projects/imap-repl/">http://freecode.com/projects/imap-repl/</a></li>
|
||||||
<li> imapcopy (Pascal): <a href="http://home.arcor.de/armin.diehl/imapcopy/imapcopy.html">http://home.arcor.de/armin.diehl/imapcopy/imapcopy.html</a></li>
|
<li> imapcopy (Pascal): <a href="http://home.arcor.de/armin.diehl/imapcopy/imapcopy.html">http://home.arcor.de/armin.diehl/imapcopy/imapcopy.html</a></li>
|
||||||
<li> imapcopy (Java): <a href="https://code.google.com/p/imapcopy/">https://code.google.com/p/imapcopy/</a></li>
|
<li> imapcopy (Java): <a href="https://code.google.com/p/imapcopy/">https://code.google.com/p/imapcopy/</a></li>
|
||||||
|
|
||||||
|
<li> imapsize: <a href="http://www.broobles.com/imapsize/">http://www.broobles.com/imapsize/</a></li>
|
||||||
<li> migrationtool: <a href="http://sourceforge.net/projects/migrationtool/">http://sourceforge.net/projects/migrationtool/</a></li>
|
<li> migrationtool: <a href="http://sourceforge.net/projects/migrationtool/">http://sourceforge.net/projects/migrationtool/</a></li>
|
||||||
<li> imapmigrate: <a href="http://sourceforge.net/projects/cyrus-utils/">http://sourceforge.net/projects/cyrus-utils/</a></li>
|
<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> larch: <a href="https://github.com/rgrove/larch">https://github.com/rgrove/larch</a> (derived from wonko_imapsync, good at Gmail)</li>
|
||||||
@ -98,7 +100,7 @@ alt="Viewable With Any Browser" />
|
|||||||
<!--#config timefmt="%D" -->
|
<!--#config timefmt="%D" -->
|
||||||
<!--#config timefmt="%A %B %d, %Y" -->
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
($Id: external.shtml,v 1.6 2016/03/03 22:36:57 gilles Exp gilles $)<br/>
|
($Id: external.shtml,v 1.7 2016/03/19 22:05:24 gilles Exp gilles $)<br/>
|
||||||
<a href="#TOP">Top of the page</a>
|
<a href="#TOP">Top of the page</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
5
S/fb-like.html
Executable file → Normal file
5
S/fb-like.html
Executable file → Normal file
@ -1,3 +1,8 @@
|
|||||||
|
|
||||||
|
|
||||||
|
<div id="fb-root"></div>
|
||||||
|
<script src="S/fb-root.js" type="text/javascript"></script>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="fb-like"
|
class="fb-like"
|
||||||
data-href="https://www.facebook.com/imapsync"
|
data-href="https://www.facebook.com/imapsync"
|
||||||
|
BIN
S/images/valid-W3C-html5.png
Normal file
BIN
S/images/valid-W3C-html5.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
BIN
S/images/valid-html5.png
Normal file
BIN
S/images/valid-html5.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.6 KiB |
@ -5,9 +5,9 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>Imapsync list of imap server softwares supported (and the failures one)</title>
|
<title>Imapsync list of imap server softwares supported (and the failures one)</title>
|
||||||
<meta name="generator" content="Bluefish 1.0.7"/>
|
<meta name="generator" content="Bluefish 2.2.2" />
|
||||||
<meta name="author" content="Gilles LAMIRAL"/>
|
<meta name="author" content="Gilles LAMIRAL" />
|
||||||
<meta name="date" content="2015-01-30T17:30:18+0100"/>
|
<meta name="date" content="2016-04-10T00:24:15+0200" />
|
||||||
<meta name="copyright" content="None"/>
|
<meta name="copyright" content="None"/>
|
||||||
<meta name="keywords" content="imap, transfer, migration"/>
|
<meta name="keywords" content="imap, transfer, migration"/>
|
||||||
<meta name="description" content="imap migration tool"/>
|
<meta name="description" content="imap migration tool"/>
|
||||||
@ -29,23 +29,25 @@
|
|||||||
|
|
||||||
|
|
||||||
<p>Let's start with the long reported <b>success stories</b> list: <b>
|
<p>Let's start with the long reported <b>success stories</b> list: <b>
|
||||||
66 different imap server softwares supported!</b><br/>
|
67 different imap server softwares supported!</b><br/>
|
||||||
[host1] means "source server" and [host2] means "destination server":
|
[host1] means "source server" and [host2] means "destination server":
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>Please report to the author (gilles.lamiral@laposte.net) any success or bad story with
|
<p>Please report to the author (gilles.lamiral@laposte.net) any success or bad story with
|
||||||
imapsync and do not forget to mention the IMAP server
|
imapsync and, if you know them, mention the IMAP server
|
||||||
software names and version on both sides. This will help
|
software names and version on both sides. This will help
|
||||||
future users. To help the author maintaining this section
|
future users. You can grab these values, software name and release number,
|
||||||
report the two lines at the begining of the output if they
|
by looking at two lines at the beginning of the output. Example:
|
||||||
are useful to know the softwares. Example:
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
Host1 software:* OK louloutte Cyrus IMAP4 v1.5.19 server ready
|
...
|
||||||
Host2 software:* OK Courier-IMAP ready
|
Host1 banner:* OK louloutte Cyrus IMAP4 v1.5.19 server ready
|
||||||
|
Host2 banner:* OK Courier-IMAP ready
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p>You can use option --justconnect to get those lines.
|
<p>You can use option --justconnect to get those lines.
|
||||||
Examples:</p>
|
Examples (really working)):</p>
|
||||||
<pre>
|
<pre>
|
||||||
imapsync --host1 test1.lamiral.info --host2 test2.lamiral.info --justconnect
|
imapsync --host1 test1.lamiral.info --host2 test2.lamiral.info --justconnect
|
||||||
|
|
||||||
@ -76,13 +78,14 @@ Examples:</p>
|
|||||||
(<a href="http://cyrusimap.web.cmu.edu/">http://cyrusimap.web.cmu.edu/</a>)
|
(<a href="http://cyrusimap.web.cmu.edu/">http://cyrusimap.web.cmu.edu/</a>)
|
||||||
</li>
|
</li>
|
||||||
<li>David Tobit V8. (<a href="http://de.tobit.com/">http://de.tobit.com/</a>) </li>
|
<li>David Tobit V8. (<a href="http://de.tobit.com/">http://de.tobit.com/</a>) </li>
|
||||||
|
<li>David.fx Mail Access Server MA-12.00a (0188) [host1] </li>
|
||||||
<li>DBMail 1.2.1, 2.0.4, 2.0.9, 2.2rc1 (GPL).
|
<li>DBMail 1.2.1, 2.0.4, 2.0.9, 2.2rc1 (GPL).
|
||||||
2.0.7 seems buggy. (<a href="http://www.dbmail.org/">http://www.dbmail.org/</a>) </li>
|
2.0.7 seems buggy. (<a href="http://www.dbmail.org/">http://www.dbmail.org/</a>) </li>
|
||||||
<li>DBOX 2.41 System [host1] (<a href="http://www.dbox.handshake.de/">http://www.dbox.handshake.de/</a>).</li>
|
<li>DBOX 2.41 System [host1] (<a href="http://www.dbox.handshake.de/">http://www.dbox.handshake.de/</a>).</li>
|
||||||
<li>Deerfield VisNetic MailServer 5.8.6 [host1]
|
<li>Deerfield VisNetic MailServer 5.8.6 [host1]
|
||||||
(<a href="http://www.deerfield.net/products/visnetic-mailserver/">http://www.deerfield.net/products/visnetic-mailserver/</a>) </li>
|
(<a href="http://www.deerfield.net/products/visnetic-mailserver/">http://www.deerfield.net/products/visnetic-mailserver/</a>) </li>
|
||||||
<li>dkimap4 [host1] </li>
|
<li>dkimap4 [host1] </li>
|
||||||
<li>Domino (Notes) 4.61[host1], 6.5, 5.0.6, 5.0.7, 7.0.2, 6.0.2CF1, 7.0.1[host1], 8.0.1[host1]
|
<li>Domino (IBM Notes) 4.61[host1], 6.5, 5.0.6, 5.0.7, 7.0.2, 6.0.2CF1, 7.0.1[host1], 8.0.1[host1]
|
||||||
(<a href="http://www-03.ibm.com/software/products/en/ibmnotes">http://www-03.ibm.com/software/products/en/ibmnotes</a>) </li>
|
(<a href="http://www-03.ibm.com/software/products/en/ibmnotes">http://www-03.ibm.com/software/products/en/ibmnotes</a>) </li>
|
||||||
<li><b>Dovecot</b> 0.99.10.4, 0.99.14, 0.99.14-8.fc4, 1.0-0.beta2.7,
|
<li><b>Dovecot</b> 0.99.10.4, 0.99.14, 0.99.14-8.fc4, 1.0-0.beta2.7,
|
||||||
1.0.0 [dest/source] (LGPL) (http://www.dovecot.org/) (<a href="http://www.dovecot.org/">http://www.dovecot.org/</a>) </li>
|
1.0.0 [dest/source] (LGPL) (http://www.dovecot.org/) (<a href="http://www.dovecot.org/">http://www.dovecot.org/</a>) </li>
|
||||||
@ -91,7 +94,8 @@ Examples:</p>
|
|||||||
6.5.7638.1 [host2], 6.5 [host1], Exchange 2007 SP1 (with Update Rollup 2),
|
6.5.7638.1 [host2], 6.5 [host1], Exchange 2007 SP1 (with Update Rollup 2),
|
||||||
Exchange2007-EP-SP2,
|
Exchange2007-EP-SP2,
|
||||||
Exchange 2010 RTM (Release to Manufacturing) [host2],
|
Exchange 2010 RTM (Release to Manufacturing) [host2],
|
||||||
Exchange 2010 SP1 RU2 [host2]
|
Exchange 2010 SP1 RU2 [host2],
|
||||||
|
Exchange 2010 SP3 [host2],
|
||||||
(<a href="http://www.microsoft.com/exchange/">http://www.microsoft.com/exchange/</a>)
|
(<a href="http://www.microsoft.com/exchange/">http://www.microsoft.com/exchange/</a>)
|
||||||
</li>
|
</li>
|
||||||
<li>FirtClass 12 [host1] hard so read the FAQ! (<a href="http://www.firstclass.com/">http://www.firstclass.com/</a>)</li>
|
<li>FirtClass 12 [host1] hard so read the FAQ! (<a href="http://www.firstclass.com/">http://www.firstclass.com/</a>)</li>
|
||||||
@ -105,8 +109,9 @@ Examples:</p>
|
|||||||
<li>hMailServer 5.40-B1950 [host12], 5.3.3 [host2], 4.4.1 [host1], 5.3.2-B1769 [host2], 5.6 [host2]
|
<li>hMailServer 5.40-B1950 [host12], 5.3.3 [host2], 4.4.1 [host1], 5.3.2-B1769 [host2], 5.6 [host2]
|
||||||
(<a href="https://www.hmailserver.com/">https://www.hmailserver.com/</a>) </li>
|
(<a href="https://www.hmailserver.com/">https://www.hmailserver.com/</a>) </li>
|
||||||
<li><b>Hotmail</b> hotmail.com is outlook.com and live.com now.</li>
|
<li><b>Hotmail</b> hotmail.com is outlook.com and live.com now.</li>
|
||||||
<li>IceWarp 10.4.5 [host1] 11.2.1.1 [host2] (<a href="https://www.icewarp.com/">https://www.icewarp.com/</a>)</li>
|
<li>IceWarp 10.4.5 [host1] 11.2.1.1 [host2] 11.4.1.0 [host2] (<a href="https://www.icewarp.com/">https://www.icewarp.com/</a>)</li>
|
||||||
<li>iPlanet Messaging server 4.15, 5.1, 5.2
|
<li>IdeaImapServer v0.80.1 [host1] </li>
|
||||||
|
<li>iPlanet Messaging server 4.15, 5.1, 5.2
|
||||||
(<a href="http://en.wikipedia.org/wiki/Oracle_Communications_Messaging_Server">http://en.wikipedia.org/wiki/Oracle_Communications_Messaging_Server</a>) </li>
|
(<a href="http://en.wikipedia.org/wiki/Oracle_Communications_Messaging_Server">http://en.wikipedia.org/wiki/Oracle_Communications_Messaging_Server</a>) </li>
|
||||||
<li>IMail 7.15 (Ipswitch/Win2003), 8.12, 11.03 [host1] (<a href="http://www.imailserver.com/">http://www.imailserver.com/</a>) </li>
|
<li>IMail 7.15 (Ipswitch/Win2003), 8.12, 11.03 [host1] (<a href="http://www.imailserver.com/">http://www.imailserver.com/</a>) </li>
|
||||||
<li>Kerio 7.2.0P1 [host1] (<a href="http://www.kerio.com/">http://www.kerio.com/</a>) </li>
|
<li>Kerio 7.2.0P1 [host1] (<a href="http://www.kerio.com/">http://www.kerio.com/</a>) </li>
|
||||||
@ -135,7 +140,7 @@ Examples:</p>
|
|||||||
<li>RackSpace hoster secure.emailsrvr.com:993 <a href="http://www.rackspace.com/">http://www.rackspace.com/</a>)</li>
|
<li>RackSpace hoster secure.emailsrvr.com:993 <a href="http://www.rackspace.com/">http://www.rackspace.com/</a>)</li>
|
||||||
<li>QQMail IMAP4Server [host1] [host2] (See FAQ) <a href="https://en.mail.qq.com/">https://en.mail.qq.com/</a> </li>
|
<li>QQMail IMAP4Server [host1] [host2] (See FAQ) <a href="https://en.mail.qq.com/">https://en.mail.qq.com/</a> </li>
|
||||||
<li>Samsung Contact IMAP server 8.5.0 </li>
|
<li>Samsung Contact IMAP server 8.5.0 </li>
|
||||||
<li>Scalix v10.1, 10.0.1.3, 11.0.0.431, 11.4.6 (<a href="http://www.scalix.com/">http://www.scalix.com/</a>) </li>
|
<li>Scalix v10.1, 10.0.1.3, 11.0.0.431, 11.4.5, 11.4.6 (<a href="http://www.scalix.com/">http://www.scalix.com/</a>) </li>
|
||||||
<li>Sendmail Mail Store IMAP4rev1 (5.5.6/mstore-5-5-build-1874 [host1].</li>
|
<li>Sendmail Mail Store IMAP4rev1 (5.5.6/mstore-5-5-build-1874 [host1].</li>
|
||||||
<li>SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1], SmarterMail Professional 10.2 [host1],
|
<li>SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1], SmarterMail Professional 10.2 [host1],
|
||||||
Smarter Mail 11.7 [host1][host2].
|
Smarter Mail 11.7 [host1][host2].
|
||||||
@ -203,7 +208,7 @@ alt="Viewable With Any Browser" />
|
|||||||
<!--#config timefmt="%D" -->
|
<!--#config timefmt="%D" -->
|
||||||
<!--#config timefmt="%A %B %d, %Y" -->
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
($Id: imapservers.shtml,v 1.10 2016/03/03 22:36:57 gilles Exp gilles $)<br/>
|
($Id: imapservers.shtml,v 1.15 2016/06/13 22:52:46 gilles Exp gilles $)<br/>
|
||||||
<a href="#TOP">Top of the page</a>
|
<a href="#TOP">Top of the page</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -1,83 +1,86 @@
|
|||||||
1156 Etats-Unis_d'Amerique___ 25.47 % 25.47 % 1
|
1225 Etats-Unis______________ 24.84 % 25 % 1
|
||||||
832 Allemagne_______________ 18.33 % 43.81 % 2
|
918 Allemagne_______________ 18.62 % 43 % 2
|
||||||
427 Royaume-Uni_____________ 9.41 % 53.22 % 3
|
454 Royaume-Uni_____________ 9.21 % 53 % 3
|
||||||
220 Italie__________________ 4.85 % 58.07 % 4
|
253 Italie__________________ 5.13 % 58 % 4
|
||||||
219 France__________________ 4.83 % 62.89 % 5
|
243 France__________________ 4.93 % 63 % 5
|
||||||
202 Canada__________________ 4.45 % 67.34 % 6
|
219 Canada__________________ 4.44 % 67 % 6
|
||||||
184 Suisse__________________ 4.05 % 71.40 % 7
|
199 Suisse__________________ 4.04 % 71 % 7
|
||||||
160 Pays-Bas________________ 3.53 % 74.92 % 8
|
183 Pays-Bas________________ 3.71 % 75 % 8
|
||||||
158 Australie_______________ 3.48 % 78.40 % 9
|
172 Australie_______________ 3.49 % 78 % 9
|
||||||
92 Autriche________________ 2.03 % 80.43 % 10
|
98 Autriche________________ 1.99 % 80 % 10
|
||||||
83 Espagne_________________ 1.83 % 82.26 % 11
|
91 Espagne_________________ 1.85 % 82 % 11
|
||||||
83 Belgique________________ 1.83 % 84.09 % 12
|
88 Belgique________________ 1.78 % 84 % 12
|
||||||
65 Suede___________________ 1.43 % 85.52 % 13
|
71 Suede___________________ 1.44 % 85 % 13
|
||||||
56 Danemark________________ 1.23 % 86.76 % 14
|
58 Danemark________________ 1.18 % 87 % 14
|
||||||
48 Bresil__________________ 1.06 % 87.81 % 15
|
51 Bresil__________________ 1.03 % 88 % 15
|
||||||
41 Norvege_________________ 0.90 % 88.72 % 16
|
43 Norvege_________________ 0.87 % 89 % 16
|
||||||
31 Pologne_________________ 0.68 % 89.40 % 17
|
36 Pologne_________________ 0.73 % 89 % 17
|
||||||
31 Finlande________________ 0.68 % 90.08 % 18
|
33 Finlande________________ 0.67 % 90 % 18
|
||||||
26 Japon___________________ 0.57 % 90.66 % 19
|
28 Republique_tcheque______ 0.57 % 91 % 19
|
||||||
25 Republique_tcheque______ 0.55 % 91.21 % 20
|
26 Russie__________________ 0.53 % 91 % 20
|
||||||
25 ________________________ 0.55 % 91.76 % 21
|
26 Japon___________________ 0.53 % 92 % 21
|
||||||
23 Irlande_________________ 0.51 % 92.27 % 22
|
25 ________________________ 0.51 % 92 % 22
|
||||||
22 Russie__________________ 0.48 % 92.75 % 23
|
23 Nouvelle-Zelande________ 0.47 % 93 % 23
|
||||||
21 Nouvelle-Zelande________ 0.46 % 93.21 % 24
|
23 Irlande_________________ 0.47 % 93 % 24
|
||||||
20 Hongrie_________________ 0.44 % 93.65 % 25
|
23 Hongrie_________________ 0.47 % 93 % 25
|
||||||
16 Hong-Kong_______________ 0.35 % 94.01 % 26
|
19 Portugal________________ 0.39 % 94 % 26
|
||||||
15 Portugal________________ 0.33 % 94.34 % 27
|
18 Hong-Kong_______________ 0.37 % 94 % 27
|
||||||
15 Afrique_du_Sud__________ 0.33 % 94.67 % 28
|
18 Grece___________________ 0.37 % 95 % 28
|
||||||
13 Slovaquie_______________ 0.29 % 94.95 % 29
|
18 Afrique_du_Sud__________ 0.37 % 95 % 29
|
||||||
13 Malaisie________________ 0.29 % 95.24 % 30
|
14 Slovaquie_______________ 0.28 % 95 % 30
|
||||||
13 Luxembourg______________ 0.29 % 95.53 % 31
|
14 Malaisie________________ 0.28 % 96 % 31
|
||||||
13 Grece___________________ 0.29 % 95.81 % 32
|
13 Luxembourg______________ 0.26 % 96 % 32
|
||||||
12 Inde____________________ 0.26 % 96.08 % 33
|
13 Inde____________________ 0.26 % 96 % 33
|
||||||
12 Argentine_______________ 0.26 % 96.34 % 34
|
12 Singapour_______________ 0.24 % 96 % 34
|
||||||
11 Singapour_______________ 0.24 % 96.58 % 35
|
12 Mexique_________________ 0.24 % 97 % 35
|
||||||
11 Israel__________________ 0.24 % 96.83 % 36
|
12 Argentine_______________ 0.24 % 97 % 36
|
||||||
11 Chine___________________ 0.24 % 97.07 % 37
|
11 Israel__________________ 0.22 % 97 % 37
|
||||||
11 Chili___________________ 0.24 % 97.31 % 38
|
11 Chine___________________ 0.22 % 97 % 38
|
||||||
10 Roumanie________________ 0.22 % 97.53 % 39
|
11 Chili___________________ 0.22 % 97 % 39
|
||||||
10 Mexique_________________ 0.22 % 97.75 % 40
|
10 Roumanie________________ 0.20 % 98 % 40
|
||||||
8 Slovenie________________ 0.18 % 97.93 % 41
|
9 Slovenie________________ 0.18 % 98 % 41
|
||||||
8 Emirats_Arabes_Unis_____ 0.18 % 98.10 % 42
|
9 Lettonie________________ 0.18 % 98 % 42
|
||||||
7 Lettonie________________ 0.15 % 98.26 % 43
|
9 Emirats_Arabes_Unis_____ 0.18 % 98 % 43
|
||||||
5 Thailande_______________ 0.11 % 98.37 % 44
|
7 Croatie_________________ 0.14 % 98 % 44
|
||||||
5 Malte___________________ 0.11 % 98.48 % 45
|
6 Thailande_______________ 0.12 % 98 % 45
|
||||||
5 Islande_________________ 0.11 % 98.59 % 46
|
5 Malte___________________ 0.10 % 99 % 46
|
||||||
4 Turquie_________________ 0.09 % 98.68 % 47
|
5 Islande_________________ 0.10 % 99 % 47
|
||||||
4 Indonesie_______________ 0.09 % 98.77 % 48
|
4 Turquie_________________ 0.08 % 99 % 48
|
||||||
4 Egypte__________________ 0.09 % 98.85 % 49
|
4 Indonesie_______________ 0.08 % 99 % 49
|
||||||
4 Croatie_________________ 0.09 % 98.94 % 50
|
4 Estonie_________________ 0.08 % 99 % 50
|
||||||
4 Bulgarie________________ 0.09 % 99.03 % 51
|
4 Egypte__________________ 0.08 % 99 % 51
|
||||||
3 Venezuela_______________ 0.07 % 99.10 % 52
|
4 Bulgarie________________ 0.08 % 99 % 52
|
||||||
3 Serbie__________________ 0.07 % 99.16 % 53
|
3 Venezuela_______________ 0.06 % 99 % 53
|
||||||
3 Philippines_____________ 0.07 % 99.23 % 54
|
3 Serbie__________________ 0.06 % 99 % 54
|
||||||
3 Estonie_________________ 0.07 % 99.29 % 55
|
3 Philippines_____________ 0.06 % 99 % 55
|
||||||
2 Vietnam_________________ 0.04 % 99.34 % 56
|
2 Vietnam_________________ 0.04 % 99 % 56
|
||||||
2 Uruguay_________________ 0.04 % 99.38 % 57
|
2 Uruguay_________________ 0.04 % 99 % 57
|
||||||
2 Lituanie________________ 0.04 % 99.43 % 58
|
2 Perou___________________ 0.04 % 99 % 58
|
||||||
2 Costa_Rica______________ 0.04 % 99.47 % 59
|
2 Lituanie________________ 0.04 % 99 % 59
|
||||||
2 Chypre__________________ 0.04 % 99.52 % 60
|
2 Costa_Rica______________ 0.04 % 99 % 60
|
||||||
1 Ukraine_________________ 0.02 % 99.54 % 61
|
2 Chypre__________________ 0.04 % 99 % 61
|
||||||
1 Trinite-et-Tobago_______ 0.02 % 99.56 % 62
|
2 Antilles_neerlandaises__ 0.04 % 100 % 62
|
||||||
1 Tanzanie________________ 0.02 % 99.58 % 63
|
1 Ukraine_________________ 0.02 % 100 % 63
|
||||||
1 Taiwan__________________ 0.02 % 99.60 % 64
|
1 Trinite-et-Tobago_______ 0.02 % 100 % 64
|
||||||
1 Senegal_________________ 0.02 % 99.63 % 65
|
1 Tanzanie________________ 0.02 % 100 % 65
|
||||||
1 Saint_Christophe-Nevis-Anguilla__ 0.02 % 99.65 % 66
|
1 Taiwan__________________ 0.02 % 100 % 66
|
||||||
1 Qatar___________________ 0.02 % 99.67 % 67
|
1 Senegal_________________ 0.02 % 100 % 67
|
||||||
1 Perou___________________ 0.02 % 99.69 % 68
|
1 Saint_Christophe-Nevis-Anguilla__ 0.02 % 100 % 68
|
||||||
1 Panama__________________ 0.02 % 99.71 % 69
|
1 Qatar___________________ 0.02 % 100 % 69
|
||||||
1 Nouvelle-Caledonie______ 0.02 % 99.74 % 70
|
1 Panama__________________ 0.02 % 100 % 70
|
||||||
1 Nigeria_________________ 0.02 % 99.76 % 71
|
1 Nouvelle-Caledonie______ 0.02 % 100 % 71
|
||||||
1 Namibie_________________ 0.02 % 99.78 % 72
|
1 Nigeria_________________ 0.02 % 100 % 72
|
||||||
1 Mongolie________________ 0.02 % 99.80 % 73
|
1 Namibie_________________ 0.02 % 100 % 73
|
||||||
1 Moldavie________________ 0.02 % 99.82 % 74
|
1 Mongolie________________ 0.02 % 100 % 74
|
||||||
1 Maldives________________ 0.02 % 99.85 % 75
|
1 Moldavie________________ 0.02 % 100 % 75
|
||||||
1 Îles_Vierges_britanniques__ 0.02 % 99.87 % 76
|
1 Maldives________________ 0.02 % 100 % 76
|
||||||
1 Koweit__________________ 0.02 % 99.89 % 77
|
1 Koweit__________________ 0.02 % 100 % 77
|
||||||
1 Jordanie________________ 0.02 % 99.91 % 78
|
1 Jordanie________________ 0.02 % 100 % 78
|
||||||
1 Colombie________________ 0.02 % 99.93 % 79
|
1 Iles_Vierges_britanniques__ 0.02 % 100 % 79
|
||||||
1 Cameroun________________ 0.02 % 99.96 % 80
|
1 Grenade_________________ 0.02 % 100 % 80
|
||||||
1 Bahrein_________________ 0.02 % 99.98 % 81
|
1 Coree_du_Sud____________ 0.02 % 100 % 81
|
||||||
1 Antilles_neerlandaises__ 0.02 % 100.00 % 82
|
1 Colombie________________ 0.02 % 100 % 82
|
||||||
TOTAL = 4538 sales over 82 countries on Thu Mar 17 09:36:49 CET 2016
|
1 Cameroun________________ 0.02 % 100 % 83
|
||||||
|
1 Burkina_Faso____________ 0.02 % 100 % 84
|
||||||
|
1 Bahrein_________________ 0.02 % 100 % 85
|
||||||
|
TOTAL = 4931 sales 219147 EUR over 85 countries on Fri Aug 19 12:49:52 CEST 2016
|
||||||
|
112
S/mailing_list.shtml
Normal file
112
S/mailing_list.shtml
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html lang="en" id="TOP">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" >
|
||||||
|
<title>The English imapsync mailing-list</title>
|
||||||
|
<meta name="author" content="Gilles LAMIRAL" >
|
||||||
|
<meta name="copyright" content="None">
|
||||||
|
|
||||||
|
<link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" >
|
||||||
|
<link href="../S/style.css" rel="stylesheet" type="text/css">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The link to the HTML5Shiv must be placed in the <head> element, after any stylesheets
|
||||||
|
http://www.w3schools.com/html/html5_browsers.asp
|
||||||
|
-->
|
||||||
|
<!--[if lt IE 9]>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.js"></script>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
|
||||||
|
<h1>Discuss or search on the English imapsync mailing-list <a href="../#TOP" id="MAILING-LIST"><small>(back to menu)</small></a>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The English public mailing-list may be the best way to get free and gratis support (not as quick as the professional support).<br />
|
||||||
|
You can write to the mailing-list even if you're not subscribed to it.<br />
|
||||||
|
In that case you will receive a confirmation message each time you post (to avoid spam).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
To <b>write</b> on the mailing-list, the address is:
|
||||||
|
<b>imapsync@linux-france.org</b> (English language list, hosted in France)<br />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
To <b>subscribe</b>, send a message to:
|
||||||
|
<b>imapsync-subscribe@listes.linux-france.org</b><br />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
To <b>unsubscribe</b>, send a message to:
|
||||||
|
<b>imapsync-unsubscribe@listes.linux-france.org</b><br />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
To <b>contact</b> the person in charge for the list:
|
||||||
|
<b>imapsync-request@listes.linux-france.org</b><br />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The <b>list archives</b> are available at
|
||||||
|
<a href="http://www.linux-france.org/prj/imapsync_list/">
|
||||||
|
http://linux-france.org/prj/imapsync_list/</a><br />
|
||||||
|
So consider that the list is public, anyone can see your post.<br />
|
||||||
|
<i>Use a pseudonym or do not post to
|
||||||
|
this list if you want to stay private</i>.<br />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<form action="https://www.google.com/search" method="get">
|
||||||
|
<p> <b>Search</b> in the imapsync list <b>archives</b>:
|
||||||
|
<input type="text" size="30" value="Gmail Exchange" name="q" />
|
||||||
|
<input type="hidden" value="www.linux-france.org/prj/imapsync_list/" name="as_sitesearch" />
|
||||||
|
(change the keywords with your own request and press <b>Enter</b>)
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<b>Thank you for your participation to the English imapsync mailing-list!</b>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<a href="http://validator.w3.org/check?uri=referer"><img
|
||||||
|
src="../S/images/valid-W3C-html5.png"
|
||||||
|
alt="Valid HTML5" height="31" width="88"
|
||||||
|
></a>
|
||||||
|
|
||||||
|
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img
|
||||||
|
style="border:0;width:88px;height:31px"
|
||||||
|
src="../S/images/vcss-blue"
|
||||||
|
alt="CSS Valide !"
|
||||||
|
></a>
|
||||||
|
|
||||||
|
<a href="http://www.anybrowser.org/campaign/"><img
|
||||||
|
style="border:0;width:88px;height:31px"
|
||||||
|
src="../S/images/ab_jlh.png"
|
||||||
|
alt="Viewable With Any Browser"
|
||||||
|
></a>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p>
|
||||||
|
<!--#config timefmt="%D" -->
|
||||||
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
|
<b>This document was last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
|
($Id: mailing_list.shtml,v 1.2 2016/08/05 14:24:46 gilles Exp gilles $)<br>
|
||||||
|
<a href="#TOP">Top of the page</a>
|
||||||
|
</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
74
S/news.shtml
74
S/news.shtml
@ -21,24 +21,19 @@
|
|||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
|
||||||
<h1>News about imapsync <!--#exec cmd="cat ../VERSION" --> and previous releases <a href="../#TOP" id="latest"><small>(back to menu)</small></a>
|
<h1>News about next imapsync, currently distributed <!--#exec cmd="cat ../VERSION" -->, next and previous releases <a href="../#TOP" id="latest"><small>(back to menu)</small></a>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p>imapsync <!--#exec cmd="cat ../VERSION" --> was written on <!--#flastmod file="VERSION" -->
|
<p>imapsync <!--#exec cmd="cat ../VERSION" --> was written on <!--#flastmod file="VERSION" -->
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="osw_imapsync"></div>
|
|
||||||
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
|
|
||||||
<script type="text/javascript" src="http://static.oswatershed.org/js/package_badge.js"></script>
|
|
||||||
<script type="text/javascript">$(document).ready(function(){ package_badge("imapsync", "#osw_imapsync"); });</script>
|
|
||||||
|
|
||||||
<p>See <b><a href="../ChangeLog">ChangeLog</a></b> to read what has been done in details since 2001.</p>
|
<p>See <b><a href="../ChangeLog">ChangeLog</a></b> to read what has been done in details since 2001.</p>
|
||||||
|
|
||||||
<p>New features or bugfixes since previous releases:</p>
|
<p>New features or bugfixes since previous releases:</p>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>1.683</b></li>
|
<li><b>1.694</b></li>
|
||||||
<li><b>Enhancement</b>: </li>
|
<li><b>Enhancement</b>: </li>
|
||||||
<li><b>Enhancement</b>: </li>
|
<li><b>Enhancement</b>: </li>
|
||||||
<li><b>Enhancement</b>: </li>
|
<li><b>Enhancement</b>: </li>
|
||||||
@ -54,8 +49,65 @@
|
|||||||
|
|
||||||
<li><b>Refactoring</b>: </li>
|
<li><b>Refactoring</b>: </li>
|
||||||
<li><b>Refactoring</b>: </li>
|
<li><b>Refactoring</b>: </li>
|
||||||
|
|
||||||
|
<li><b>Security</b>: </li>
|
||||||
|
<li><b>Dependency</b>: </li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><b>1.727</b> https website and CGI on the way!</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><b>Security</b>: Thanks to free and easy <b>letsencrypt</b>,
|
||||||
|
Imapsync website is available in https:
|
||||||
|
<a href="https://imapsync.lamiral.info/"><b>https://imapsync.lamiral.info/</b></a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li><b>Enhancement</b>: Added option <tt>--delete1emptyfolders</tt>. It deletes empty folders on host1, INBOX excepted.
|
||||||
|
Useful with <tt>--delete</tt> since what remains on host1 is only what failed to be synced.</li>
|
||||||
|
|
||||||
|
<li><b>Enhancement</b>: Imapsync can be used as a CGI program. Still experimental. The web UI interface has to be written.</li>
|
||||||
|
<li><b>Enhancement</b>: <b>XOAUTH2</b> authentication works with <b>json</b> files without extra tool openssl. Old pk12 files are still supported (still with openssl).</li>
|
||||||
|
<li><b>Enhancement</b>: Memory usage passed from <b>5x to 2x of the biggest message size</b>.
|
||||||
|
Some users do send 700MB messages, imapsync needed 3.5 GB of RAM, now it crunches only 1.4 GB,
|
||||||
|
a more common RAM value available on small hosts.</li>
|
||||||
|
|
||||||
|
<li><b>Enhancement</b>: Added option <tt>--inet4</tt> to force ipv4 in ssl and tls modes.
|
||||||
|
Useful with Gmail and Office365 when ipv6 is disable on the imapsync host but not ipv6 resolution.</li>
|
||||||
|
|
||||||
|
<li><b>Enhancement</b>: Reconnect to imap servers with a Ctrl-c. Exit with two Ctrl-c within one second or one Ctrl-\</li>
|
||||||
|
<li><b>Enhancement</b>: Copy is not done when one --pipemess command ends with an empty message generated.</li>
|
||||||
|
<li><b>Enhancement</b>: STDERR of --pipemess commands are reported on STDOUT and in the logfile (they were ignored before).</li>
|
||||||
|
<li><b>Enhancement</b>: </li>
|
||||||
|
|
||||||
|
<li><b>Dependency</b>: Added Perl module dependency of Readonly to transform hard coded magic numbers into names. Mandatory module.</li>
|
||||||
|
<li><b>Dependency</b>: Added Perl module dependency of Test::MockObject for some tests. Only a "require" for now.</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><b>Security</b>: In CGI mode, remove all content in the unsafe "eval"uated options
|
||||||
|
(--regextrans2 --regexflag --regexmess --skipmess --pipemess --delete2foldersonly --delete2foldersbutnot).
|
||||||
|
Consider these options not available in CGI mode.</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><b>Bug fix</b>: Fixed -1 wrong output in statistics for big accounts (%d => %s) in printf.</li>
|
||||||
|
<li><b>Bug fix</b>: Uncommented call to $test_builder->reset( ) Don't know why it was commented but it was bad for knowing tests go wrong.</li>
|
||||||
|
<li><b>Bug fix</b>: Check connected state in sub create_folder(). Avoid multiple useless failures.</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><b>Refactoring</b>: Wrote Perl package Imapsync::Getopt::Long to handle CGI requests like command line options.
|
||||||
|
Started as a copy of Luke Ross Getopt::Long::CGI</li>
|
||||||
|
<li><b>Refactoring</b>: Perlcritic cleanup 627 violations of CodeLayout::ProhibitTrailingWhitespace.</li>
|
||||||
|
<li><b>Refactoring</b>: Perlcritic cleanup 60 Double-sigil dereferences.</li>
|
||||||
|
<li><b>Refactoring</b>: Perlcritic cleanup 458 ValuesAndExpressions::ProhibitInterpolationOfLiterals. "Useless interpolation of literal string"</li>
|
||||||
|
<li><b>Refactoring</b>: Perlcritic cleanup 420 CodeLayout::ProhibitParensWithBuiltins. "Builtin function called with parentheses". (Severity: 1).</li>
|
||||||
|
<li><b>Refactoring</b>: Perlcritic cleanup, various small advices.</li>
|
||||||
|
|
||||||
|
<li><b>Refactoring</b>: Replaced print by myprint, printf by myprintf, sprinf by mysprintf.
|
||||||
|
Will ease <tt>--quiet</tt> mode and general output handling.</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>1.684</b> Small changes, bugfixes</li>
|
<li><b>1.684</b> Small changes, bugfixes</li>
|
||||||
@ -78,13 +130,13 @@ in ssl or tls mode. Was due to "'SSL_version' => undef".</li>
|
|||||||
Example: <tt>--sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3</tt></li>
|
Example: <tt>--sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3</tt></li>
|
||||||
<li><b>Enhancement</b>: Added <tt>--timeout1 int</tt> and <tt>--timeout2 int</tt> in seconds (<tt>--timeout int</tt> still available to set both with the same value)</li>
|
<li><b>Enhancement</b>: Added <tt>--timeout1 int</tt> and <tt>--timeout2 int</tt> in seconds (<tt>--timeout int</tt> still available to set both with the same value)</li>
|
||||||
<li><b>Enhancement</b>: Added <tt>--debugssl int</tt>. Default is like <tt>--debugssl 1</tt> (Only print out errors).</li>
|
<li><b>Enhancement</b>: Added <tt>--debugssl int</tt>. Default is like <tt>--debugssl 1</tt> (Only print out errors).</li>
|
||||||
<li><b>Enhancement</b>: Added several <a href="../#polls">polls</a> to know where I shall focus improvements.</li>
|
<li><b>Enhancement</b>: Added several <a href="./poll.shtml">polls</a> to know where I shall focus improvements.</li>
|
||||||
|
|
||||||
|
|
||||||
<li><b>Usability</b>: Added env_proxy call in <tt>sub xoauth2()</tt>
|
<li><b>Usability</b>: Added env_proxy call in <tt>sub xoauth2()</tt>
|
||||||
to read proxy settings from environment variable <tt>http_proxy</tt>
|
to read proxy settings from environment variable <tt>http_proxy</tt>
|
||||||
without using <tt>PERL_LWP_ENV_PROXY=1</tt></li>
|
without using <tt>PERL_LWP_ENV_PROXY=1</tt></li>
|
||||||
<li><b>Usability</b>: Wrote <a href="../TUTORIAL_Unix.html">TUTORIAL_Unix</a>.</li>
|
<li><b>Usability</b>: Wrote <a href="../doc/TUTORIAL_Unix.html">TUTORIAL_Unix</a>.</li>
|
||||||
<li><b>Usability</b>: Check f1 folder exists when specified by <tt>--f1f2</tt> and warns when it doesn't</li>
|
<li><b>Usability</b>: Check f1 folder exists when specified by <tt>--f1f2</tt> and warns when it doesn't</li>
|
||||||
<li><b>Usability</b>: Added <tt>--automap --justfolders --dry</tt> in <tt>imapsync_example.sh</tt> and <tt>imapsync_example.bat</tt></li>
|
<li><b>Usability</b>: Added <tt>--automap --justfolders --dry</tt> in <tt>imapsync_example.sh</tt> and <tt>imapsync_example.bat</tt></li>
|
||||||
|
|
||||||
@ -403,7 +455,7 @@ by ignoring PERMANENTFLAGS (Exchange tests)</li>
|
|||||||
<!--#config timefmt="%D" -->
|
<!--#config timefmt="%D" -->
|
||||||
<!--#config timefmt="%A %B %d, %Y" -->
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
($Id: news.shtml,v 1.15 2016/03/17 19:59:00 gilles Exp gilles $)<br />
|
($Id: news.shtml,v 1.28 2016/08/19 14:16:58 gilles Exp gilles $)<br />
|
||||||
<a href="#TOP">Top of the page</a>
|
<a href="#TOP">Top of the page</a>
|
||||||
</p>
|
</p>
|
||||||
</body></html>
|
</body></html>
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
<head>
|
<head>
|
||||||
<title>imapsync download</title>
|
<title>imapsync download</title>
|
||||||
<meta name="generator" content="Bluefish 2.2.2" />
|
<meta name="generator" content="Bluefish 2.2.5" />
|
||||||
<meta name="author" content="Gilles LAMIRAL" />
|
<meta name="author" content="Gilles LAMIRAL" />
|
||||||
<meta name="date" content="2016-01-20T11:18:20+0100" />
|
<meta name="date" content="2016-08-16T19:20:38+0200" />
|
||||||
<meta name="copyright" content=""/>
|
<meta name="copyright" content=""/>
|
||||||
<meta name="keywords" content=""/>
|
<meta name="keywords" content=""/>
|
||||||
<meta name="description" content=""/>
|
<meta name="description" content=""/>
|
||||||
@ -47,6 +47,8 @@ and the latest <b>imapsync source code</b> release <!--#exec cmd="cat ../VERSION
|
|||||||
<a href="../dist/"><b>download page</b></a>.
|
<a href="../dist/"><b>download page</b></a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>Old imapsync releases are in the <a href="../dist/old_releases/">dist/old_releases/</a> directory.</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Next steps are the imapsync <a href="../#install" >installation</a>
|
Next steps are the imapsync <a href="../#install" >installation</a>
|
||||||
and then your first runs following the <a href="../#doc" >tutorial</a>.
|
and then your first runs following the <a href="../#doc" >tutorial</a>.
|
||||||
@ -66,8 +68,8 @@ and <b>succeed</b> your migration in the best conditions, <b>contact me</b>
|
|||||||
(Gilles LAMIRAL) by email or phone at:</p>
|
(Gilles LAMIRAL) by email or phone at:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Email address: <b>gilles.lamiral@laposte.net</b>.</li>
|
<li>Email address: <b>gilles.lamiral@laposte.net</b>.</li>
|
||||||
<li>Professionnal phone number: <b>+33 951 84 42 42</b> (in France) I can <b>call you back</b> toll-free in many countries.</li>
|
<li>Professionnal phone number: <b>+33 9 51 84 42 42</b> (in France) I can <b>call you back</b> toll-free in many countries.</li>
|
||||||
<li>Mobile phone number: <b>+33 620 79 76 06</b> (in France).</li>
|
<li>Mobile phone number: <b>+33 6 19 22 03 54</b> (in France).</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
@ -81,22 +83,38 @@ and <b>succeed</b> your migration in the best conditions, <b>contact me</b>
|
|||||||
<p><b>Gilles LAMIRAL</b><br/>
|
<p><b>Gilles LAMIRAL</b><br/>
|
||||||
gilles.lamiral@laposte.net</p>
|
gilles.lamiral@laposte.net</p>
|
||||||
|
|
||||||
<hr/>
|
<hr />
|
||||||
<p>
|
<p>
|
||||||
<a href="http://validator.w3.org/check?uri=referer"><img
|
|
||||||
src="http://www.w3.org/Icons/valid-xhtml10"
|
|
||||||
alt="Valid XHTML 1.0 Strict" height="31" width="88" /></a>
|
|
||||||
|
|
||||||
<a href="http://jigsaw.w3.org/css-validator/check/referer">
|
<a href="https://validator.w3.org/check?uri=referer"><img
|
||||||
<img style="border:0;width:88px;height:31px"
|
width="88"
|
||||||
src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
|
height="31"
|
||||||
alt="CSS Valide !" />
|
alt="Valid XHTML 1.0 Strict"
|
||||||
</a>
|
src="S/images/valid-xhtml10"
|
||||||
<br/>
|
/></a>
|
||||||
|
|
||||||
|
<a href="https://jigsaw.w3.org/css-validator/check/referer">
|
||||||
|
<img
|
||||||
|
alt="CSS Valide !"
|
||||||
|
src="S/images/vcss-blue"
|
||||||
|
style="border:0;width:88px;height:31px"
|
||||||
|
/></a>
|
||||||
|
|
||||||
|
<a href="https://www.anybrowser.org/campaign/">
|
||||||
|
<img
|
||||||
|
alt="Viewable With Any Browser"
|
||||||
|
src="S/images/ab_jlh.png"
|
||||||
|
style="border:0;width:88px;height:31px"
|
||||||
|
/></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
<p>
|
||||||
<!--#config timefmt="%D" -->
|
<!--#config timefmt="%D" -->
|
||||||
<!--#config timefmt="%A %B %d, %Y" -->
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b><br/>
|
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
($Id: paypal_return.shtml,v 1.23 2016/03/03 22:36:57 gilles Exp gilles $)
|
($Id: paypal_return.shtml,v 1.27 2016/08/18 09:53:42 gilles Exp gilles $)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
98
S/poll.shtml
Normal file
98
S/poll.shtml
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="TOP">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>Imapsync template file</title>
|
||||||
|
<meta name="generator" content="Bluefish 2.2.2" />
|
||||||
|
<meta name="author" content="Gilles LAMIRAL" />
|
||||||
|
<meta name="date" content="2016-07-22T00:55:20+0200" />
|
||||||
|
<meta name="copyright" content="None"/>
|
||||||
|
<meta name="keywords" content="imap, transfer, migration"/>
|
||||||
|
<meta name="description" content="imap migration tool"/>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
|
||||||
|
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
|
||||||
|
<meta http-equiv="content-style-type" content="text/css"/>
|
||||||
|
<meta http-equiv="expires" content="0"/>
|
||||||
|
<link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" />
|
||||||
|
<link href="../S/style.css" rel="stylesheet" type="text/css"/>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>Vote for a better imapsync and better services <a id="title1" href="../#TOP"><small>(back to menu)</small></a>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<!-- Website -->
|
||||||
|
<div class="poll">
|
||||||
|
<script src="http://www.micropoll.com/a/MicroPoll?id=4847676" type="text/javascript">
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Before buying -->
|
||||||
|
<div class="poll">
|
||||||
|
<script src="http://www.micropoll.com/a/MicroPoll?id=4847713" type="text/javascript">
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Price -->
|
||||||
|
<div class="poll">
|
||||||
|
<script src="http://www.micropoll.com/a/MicroPoll?id=4847628" type="text/javascript">
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Selling process -->
|
||||||
|
<div class="poll">
|
||||||
|
<script src="http://www.micropoll.com/a/MicroPoll?id=4395606" type="text/javascript">
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Usage -->
|
||||||
|
<div class="poll">
|
||||||
|
<script src="http://www.micropoll.com/a/MicroPoll?id=4847629" type="text/javascript">
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Features -->
|
||||||
|
<div class="poll">
|
||||||
|
<script src="http://www.micropoll.com/a/MicroPoll?id=3880191" type="text/javascript">
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
<div>
|
||||||
|
<a href="http://validator.w3.org/check?uri=referer">
|
||||||
|
<img
|
||||||
|
src="../S/images/valid-xhtml10"
|
||||||
|
alt="Valid XHTML 1.0 Strict" height="31" width="88" />
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="http://jigsaw.w3.org/css-validator/check/referer">
|
||||||
|
<img style="border:0;width:88px;height:31px"
|
||||||
|
src="../S/images/vcss-blue"
|
||||||
|
alt="CSS Valide !" />
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="http://www.anybrowser.org/campaign/">
|
||||||
|
<img style="border:0;width:88px;height:31px"
|
||||||
|
src="../S/images/ab_jlh.png"
|
||||||
|
alt="Viewable With Any Browser" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr/>
|
||||||
|
<p>
|
||||||
|
<!--#config timefmt="%D" -->
|
||||||
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
|
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
|
($Id: poll.shtml,v 1.2 2016/07/21 22:55:54 gilles Exp gilles $)<br/>
|
||||||
|
<a href="#TOP">Top of the page</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -1,6 +1,11 @@
|
|||||||
|
|
||||||
/* $Id: style.css,v 1.8 2016/01/21 00:58:22 gilles Exp gilles $ */
|
/* $Id: style.css,v 1.8 2016/01/21 00:58:22 gilles Exp gilles $ */
|
||||||
|
|
||||||
|
/* http://www.w3schools.com/html/html5_browsers.asp */
|
||||||
|
header, section, footer, aside, nav, main, article, figure {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
color: black;
|
color: black;
|
||||||
background-color: #eeffff
|
background-color: #eeffff
|
||||||
|
76
S/template_html5.shtml
Executable file
76
S/template_html5.shtml
Executable file
@ -0,0 +1,76 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html lang="en" id="TOP">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" >
|
||||||
|
<title>Template file Title</title>
|
||||||
|
<meta name="author" content="Gilles LAMIRAL" >
|
||||||
|
<meta name="copyright" content="None">
|
||||||
|
|
||||||
|
<link rel="icon" type="image/png" href="../S/images/logo_imapsync_s.png" >
|
||||||
|
<link href="../S/style.css" rel="stylesheet" type="text/css">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The link to the HTML5Shiv must be placed in the <head> element, after any stylesheets
|
||||||
|
http://www.w3schools.com/html/html5_browsers.asp
|
||||||
|
-->
|
||||||
|
<!--[if lt IE 9]>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.js"></script>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
<section>
|
||||||
|
|
||||||
|
|
||||||
|
<h1>Tittle 1 <a id="title1" href="../#TOP"><small>(back to menu)</small></a>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<p>Blabla 1</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h1>Tittle 2 <a id="title2" href="../#TOP"><small>(back to menu)</small></a>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<p>Blabla 2</p>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<a href="http://validator.w3.org/check?uri=referer">
|
||||||
|
<img
|
||||||
|
src="../S/images/valid-W3C-html5.png"
|
||||||
|
alt="Valid HTML5" height="31" width="88" >
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="http://jigsaw.w3.org/css-validator/check/referer">
|
||||||
|
<img style="border:0;width:88px;height:31px"
|
||||||
|
src="../S/images/vcss-blue"
|
||||||
|
alt="CSS Valide !" >
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="http://www.anybrowser.org/campaign/">
|
||||||
|
<img style="border:0;width:88px;height:31px"
|
||||||
|
src="../S/images/ab_jlh.png"
|
||||||
|
alt="Viewable With Any Browser" >
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<p>
|
||||||
|
<!--#config timefmt="%D" -->
|
||||||
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
|
<b>This document was last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
|
($Id: template_html5.shtml,v 1.1 2016/08/05 14:27:39 gilles Exp gilles $)<br>
|
||||||
|
<a href="#TOP">Top of the page</a>
|
||||||
|
</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -59,7 +59,7 @@ alt="Viewable With Any Browser" />
|
|||||||
<!--#config timefmt="%D" -->
|
<!--#config timefmt="%D" -->
|
||||||
<!--#config timefmt="%A %B %d, %Y" -->
|
<!--#config timefmt="%A %B %d, %Y" -->
|
||||||
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
|
||||||
($Id: template.shtml,v 1.4 2016/03/03 22:36:57 gilles Exp gilles $)<br/>
|
($Id: template_xhtml1.shtml,v 1.5 2016/08/03 18:18:40 gilles Exp gilles $)<br/>
|
||||||
<a href="#TOP">Top of the page</a>
|
<a href="#TOP">Top of the page</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
154
TODO
154
TODO
@ -1,14 +1,127 @@
|
|||||||
#!/bin/cat
|
#!/bin/cat
|
||||||
# $Id: TODO,v 1.155 2016/03/13 13:01:26 gilles Exp gilles $
|
# $Id: TODO,v 1.168 2016/08/19 14:17:53 gilles Exp gilles $
|
||||||
|
|
||||||
This documentation is also at http://imapsync.lamiral.info/#doc
|
This documentation is also at http://imapsync.lamiral.info/#doc
|
||||||
|
|
||||||
|
===========================================================================
|
||||||
TODO file for imapsync
|
TODO file for imapsync
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|
SUGGESTED 2016_08_19 by Gilles
|
||||||
|
Go back to SSL_VERIFY_PEER but include
|
||||||
|
SSL_ca_file inside imapsync or near.
|
||||||
|
|
||||||
|
SUGGESTED 2016_08_07 by Gilles
|
||||||
|
Add a meaningful exit value to all die:
|
||||||
|
* fatal software dependency, Perl modules
|
||||||
|
* fatal parameter issue
|
||||||
|
* fatal connect issue
|
||||||
|
* fatal login issue
|
||||||
|
* fatal permission file issue (open)
|
||||||
|
* fatal IMAP issue
|
||||||
|
* fatal IMAP disconnection
|
||||||
|
Add a meaningful exit value to all exit
|
||||||
|
* exit at end but with errors
|
||||||
|
* exit at middle because of errormax
|
||||||
|
* exit by signal
|
||||||
|
|
||||||
|
|
||||||
|
SUGGESTED 2016_07_29 by Gilles from CSS3 Coursera course
|
||||||
|
Take a look at
|
||||||
|
https://modernizr.com/
|
||||||
|
|
||||||
|
SUGGESTED 2016_07_29 by Gilles
|
||||||
|
Move website to HTML5
|
||||||
|
https://about.validator.nu/
|
||||||
|
|
||||||
|
SUGGESTED 2016_07_12 by Fronik
|
||||||
|
With --automap apply the mapping to subfolders of mapped folders.
|
||||||
|
If
|
||||||
|
Sent => Envoyes
|
||||||
|
then
|
||||||
|
Sent.Foo => Envoyes.Foo
|
||||||
|
Sent.Foo.Bar => Envoyes.Foo.bar
|
||||||
|
|
||||||
|
SUGGESTED 2016_07_07 by Jean-Dominique Delyon.
|
||||||
|
Add a way to know easily which account transfers went wrong.
|
||||||
|
Générer un fichier des comptes qui ont rencontré des problèmes
|
||||||
|
et afficher le contenu à la fin de la boucle sur les comptes.
|
||||||
|
|
||||||
|
SUGGESTED 2016_06_29 by Gilles
|
||||||
|
Clarify system flags in RFC
|
||||||
|
Example to add:
|
||||||
|
If \Forwarded is not in PERMANENTFLAGS but \* is then transform
|
||||||
|
\Forwarded to Forwarded. And by default.
|
||||||
|
|
||||||
|
SUGGESTED 2016_06_29 by Gilles
|
||||||
|
Add --gmail1 --gmail2 --gmail12 to set automatically advices from
|
||||||
|
https://imapsync.lamiral.info/FAQ.d/FAQ.Gmail.txt
|
||||||
|
Add --exchange --office365 to set automatically advices from
|
||||||
|
https://imapsync.lamiral.info/FAQ.d/FAQ.Exchange.txt
|
||||||
|
|
||||||
|
|
||||||
|
SUGGESTED 2016_06_13 by David Carter
|
||||||
|
--pipemess could also treat stderr
|
||||||
|
` $command < $input_tmpfile > $output_tmpfile 2> $error_tmpfile `
|
||||||
|
|
||||||
|
|
||||||
|
SUGGESTED 2016_06_22 by Gilles
|
||||||
|
Add --quiet mode
|
||||||
|
Make --quiet mode being switched by a signal
|
||||||
|
|
||||||
|
SUGGESTED by Gilles
|
||||||
Try to act as --tls if CAPABILITY allows it and if there is no --notls.
|
Try to act as --tls if CAPABILITY allows it and if there is no --notls.
|
||||||
Fallback without --tls if --tls fails.
|
Fallback without --tls if --tls fails.
|
||||||
|
|
||||||
|
DONE 2016_07_27 by Gilles
|
||||||
|
SUGGESTED 2016_06_15 by Gilles
|
||||||
|
Fix sub check_lib_version and its call.
|
||||||
|
It was ok because of the Perl line "use Mail::IMAPClient 3.30".
|
||||||
|
|
||||||
|
SUGGESTED 2016_06_12 by Gilles
|
||||||
|
Fix many perlcritic, all?
|
||||||
|
DONE * 60 perlcritic Double-sigil dereference (Severity 2)
|
||||||
|
DONE * 627 perlcritic violations of CodeLayout::ProhibitTrailingWhitespace. (Severity 1).
|
||||||
|
DONE * 458 perlcritic violations of ValuesAndExpressions::ProhibitInterpolationOfLiterals. "Useless interpolation of literal string"
|
||||||
|
DONE * 420 perlcritic violations of CodeLayout::ProhibitParensWithBuiltins. "Builtin function called with parentheses". (Severity: 1).
|
||||||
|
|
||||||
|
* 304 violations of ValuesAndExpressions::ProhibitMagicNumbers.
|
||||||
|
* 236 violations of InputOutput::RequireCheckedSyscalls. "Return value of flagged function ignored". (Severity: 1).
|
||||||
|
* 115 violations of ControlStructures::ProhibitPostfixControls. Postfix control "if" used. (Severity: 2).
|
||||||
|
* 90 violations of ValuesAndExpressions::ProhibitNoisyQuotes.
|
||||||
|
* 86 violations of ValuesAndExpressions::RequireInterpolationOfMetachars.
|
||||||
|
* 85 violations of RegularExpressions::RequireLineBoundaryMatching.
|
||||||
|
* 85 violations of RegularExpressions::RequireDotMatchAnything.
|
||||||
|
* 37 violations of Variables::ProhibitPunctuationVars.
|
||||||
|
* 30 violations of RegularExpressions::RequireExtendedFormatting.
|
||||||
|
* 30 violations of NamingConventions::Capitalization.
|
||||||
|
* 24 violations of ValuesAndExpressions::RequireNumberSeparators.
|
||||||
|
* 20 violations of RegularExpressions::ProhibitEscapedMetacharacters.
|
||||||
|
* 19 violations of ControlStructures::ProhibitUnlessBlocks.
|
||||||
|
* 14 violations of Variables::ProhibitReusedNames.
|
||||||
|
* 11 violations of Subroutines::ProhibitManyArgs.
|
||||||
|
|
||||||
|
SUGGESTED 2016_06_09 by Gilles and David Carter
|
||||||
|
In order to avoid useless headaches from --regexmess, add
|
||||||
|
--regexheader
|
||||||
|
--regexbody
|
||||||
|
|
||||||
|
SUGGESTED 2016_06_09 by David Carter
|
||||||
|
Add --pipemess-on-fail
|
||||||
|
If, and only if, the target server responses with NO or BAD then have another go
|
||||||
|
with a sanitized version of the message.
|
||||||
|
|
||||||
|
SUGGESTED 2016_06_01 by M. Beaubien
|
||||||
|
Add flag --noheaderwarnings or better name
|
||||||
|
no header by parse_headers so taking whole header with BODY.PEEK[HEADER]
|
||||||
|
no header found so adding our own [Message-Id: <151648@imapsync>]
|
||||||
|
|
||||||
|
SUGGESTED 2016_04_17 by Gilles
|
||||||
|
Add a --passfile to allow user=>password style file.
|
||||||
|
|
||||||
|
SUGGESTED 2016_04_13 by Gilles
|
||||||
|
Split --noabletosearch in --noabletosearch1 --noabletosearch2
|
||||||
|
|
||||||
WANTED 2016_03_11
|
WANTED 2016_03_11
|
||||||
Add a FAQ about Authentication failures and quoting.
|
Add a FAQ about Authentication failures and quoting.
|
||||||
|
|
||||||
@ -167,9 +280,6 @@ http://www.linux-france.org/prj/imapsync_list/msg00022.html
|
|||||||
http://mail.google.com/support/bin/answer.py?hl=en&answer=77657
|
http://mail.google.com/support/bin/answer.py?hl=en&answer=77657
|
||||||
http://mail.google.com/support/bin/answer.py?answer=78892
|
http://mail.google.com/support/bin/answer.py?answer=78892
|
||||||
|
|
||||||
Look at larch https://github.com/rgrove/larch/
|
|
||||||
http://wonko.com/
|
|
||||||
|
|
||||||
Add and option to sync to & from files.
|
Add and option to sync to & from files.
|
||||||
|
|
||||||
Add an --aclregextrans2 flag.
|
Add an --aclregextrans2 flag.
|
||||||
@ -178,9 +288,6 @@ their ACLs. Syncing ACLs vom Cyrus to Dovecot (at least 1.2) doesn't
|
|||||||
work. Cyrus uses c and d, Dovecot uses k and x instead."
|
work. Cyrus uses c and d, Dovecot uses k and x instead."
|
||||||
Peer Heinlein.
|
Peer Heinlein.
|
||||||
|
|
||||||
Add different levels of output to see clearly the
|
|
||||||
problem by default.
|
|
||||||
|
|
||||||
Add more information about skipped messages.
|
Add more information about skipped messages.
|
||||||
|
|
||||||
Add Rick Romero patch with
|
Add Rick Romero patch with
|
||||||
@ -199,30 +306,18 @@ Fix bug "not possible to use space in the imap password"
|
|||||||
|
|
||||||
Add kerberos authentification
|
Add kerberos authentification
|
||||||
|
|
||||||
|
|
||||||
Fix bug with folder names starting with an asterisk: *Archiv
|
Fix bug with folder names starting with an asterisk: *Archiv
|
||||||
Sending: 220 SELECT *Archiv/Support/foobar
|
Sending: 220 SELECT *Archiv/Support/foobar
|
||||||
Read: 220 BAD Protokollfehler: "Invalid folder specified in SELECT command"
|
Read: 220 BAD Protokollfehler: "Invalid folder specified in SELECT command"
|
||||||
|
|
||||||
Compare speed between 1.182 and 1.217
|
|
||||||
"un mailbox de 90MB, ~2400 fichiers prends 80s avec la version 1.182
|
|
||||||
vs 250s avec la version 1.217". Marc Jauvin
|
|
||||||
|
|
||||||
Add LITERAL+ [RFC 2088] support to imapsync.
|
Add LITERAL+ [RFC 2088] support to imapsync.
|
||||||
|
|
||||||
Make a m4 file for lsm.imapsync and generate it at each public release.
|
Make a m4 file for lsm.imapsync and generate it at each public release.
|
||||||
|
|
||||||
Add an option to tell imapsync that the domain
|
|
||||||
is changing and have it replace the domain in all user names that are
|
|
||||||
related to ACLs.
|
|
||||||
See patches/imapsync-acls-users
|
|
||||||
|
|
||||||
Add --verbose from Kjetil jumbo patch.
|
Add --verbose from Kjetil jumbo patch.
|
||||||
|
|
||||||
Read the IMAP RFC http://www.faqs.org/rfcs/rfc3501.html
|
Read the IMAP RFC http://www.faqs.org/rfcs/rfc3501.html
|
||||||
|
|
||||||
Interface with external software like procmail
|
|
||||||
|
|
||||||
Read:
|
Read:
|
||||||
http://www.washington.edu/imap/documentation/commndmt.txt.html
|
http://www.washington.edu/imap/documentation/commndmt.txt.html
|
||||||
|
|
||||||
@ -233,6 +328,27 @@ http://asg.web.cmu.edu/cyrus/download/imapd/altnamespace.html
|
|||||||
Now the TODO done! (or not)
|
Now the TODO done! (or not)
|
||||||
===========================================================================
|
===========================================================================
|
||||||
|
|
||||||
|
SUGGESTED 2016_06_22 by Gilles
|
||||||
|
DONE 2016_07_29 by Gilles
|
||||||
|
Make reconnections launched by a signal Ctrl-c, aka INT signal.
|
||||||
|
2 consecutive Ctrl-c within 1 second then exit the program.
|
||||||
|
Inline help when Ctrl-c is hit
|
||||||
|
|
||||||
|
SUGGESTED 2016_07_15 by Alan Williams
|
||||||
|
DONE 2016_07_20 for IO::Socket::SSL
|
||||||
|
Add --inet4 --inet6 to force AF_INET or AF_INET6 ip connexion,
|
||||||
|
aka ipv4 or ipv6.
|
||||||
|
|
||||||
|
SUGGESTED 2016_06_24 by Jean-Dominique Delyon
|
||||||
|
DONE 2016_06_30 by Gilles
|
||||||
|
Add --delete1emptyfolders
|
||||||
|
Destroy host1 empty folders.
|
||||||
|
Be carefull of non-empty subfolders!
|
||||||
|
|
||||||
|
|
||||||
|
SUGGESTED 2016_07_01 by Gilles
|
||||||
|
DONE 2016_07_01 by Gilles
|
||||||
|
Add exit explanation after errorsdump
|
||||||
|
|
||||||
DONE 2016_01_06. Write a Unix tutorial, TUTORIAL_Unix.html.
|
DONE 2016_01_06. Write a Unix tutorial, TUTORIAL_Unix.html.
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
1.684
|
1.727
|
||||||
|
@ -380,3 +380,64 @@
|
|||||||
1458206536 END 1.684 : jeudi 17 mars 2016, 10:22:16 (UTC+0100)
|
1458206536 END 1.684 : jeudi 17 mars 2016, 10:22:16 (UTC+0100)
|
||||||
1458216703 BEGIN 1.684 : jeudi 17 mars 2016, 13:11:43 (UTC+0100)
|
1458216703 BEGIN 1.684 : jeudi 17 mars 2016, 13:11:43 (UTC+0100)
|
||||||
1458217520 END 1.684 : jeudi 17 mars 2016, 13:25:20 (UTC+0100)
|
1458217520 END 1.684 : jeudi 17 mars 2016, 13:25:20 (UTC+0100)
|
||||||
|
1458428579 BEGIN 1.684 : dimanche 20 mars 2016, 00:02:59 (UTC+0100)
|
||||||
|
1458428756 END 1.684 : dimanche 20 mars 2016, 00:05:56 (UTC+0100)
|
||||||
|
1458433683 BEGIN 1.684 : dimanche 20 mars 2016, 01:28:03 (UTC+0100)
|
||||||
|
1458434445 END 1.684 : dimanche 20 mars 2016, 01:40:45 (UTC+0100)
|
||||||
|
1458436534 BEGIN 1.684 : dimanche 20 mars 2016, 02:15:34 (UTC+0100)
|
||||||
|
1458437310 END 1.684 : dimanche 20 mars 2016, 02:28:30 (UTC+0100)
|
||||||
|
1463261525 BEGIN 1.690 : samedi 14 mai 2016, 23:32:05 (UTC+0200)
|
||||||
|
1463261701 END 1.690 : samedi 14 mai 2016, 23:35:01 (UTC+0200)
|
||||||
|
1463261777 BEGIN 1.690 : samedi 14 mai 2016, 23:36:17 (UTC+0200)
|
||||||
|
1463262258 END 1.690 : samedi 14 mai 2016, 23:44:18 (UTC+0200)
|
||||||
|
1464194085 BEGIN 1.692 : mercredi 25 mai 2016, 18:34:45 (UTC+0200)
|
||||||
|
1464194868 END 1.692 : mercredi 25 mai 2016, 18:47:49 (UTC+0200)
|
||||||
|
1465431106 BEGIN 1.694 : jeudi 9 juin 2016, 02:11:46 (UTC+0200)
|
||||||
|
1465431905 END 1.694 : jeudi 9 juin 2016, 02:25:05 (UTC+0200)
|
||||||
|
1465864115 BEGIN 1.701 : mardi 14 juin 2016, 02:28:35 (UTC+0200)
|
||||||
|
1465864364 END 1.701 : mardi 14 juin 2016, 02:32:44 (UTC+0200)
|
||||||
|
1465865557 BEGIN 1.701 : mardi 14 juin 2016, 02:52:37 (UTC+0200)
|
||||||
|
1465866291 END 1.701 : mardi 14 juin 2016, 03:04:51 (UTC+0200)
|
||||||
|
1466171000 BEGIN 1.706 : vendredi 17 juin 2016, 15:43:20 (UTC+0200)
|
||||||
|
1466171789 END 1.706 : vendredi 17 juin 2016, 15:56:29 (UTC+0200)
|
||||||
|
1466210899 BEGIN 1.707 : samedi 18 juin 2016, 02:48:19 (UTC+0200)
|
||||||
|
1466211650 END 1.707 : samedi 18 juin 2016, 03:00:50 (UTC+0200)
|
||||||
|
1466610746 BEGIN 1.710 : mercredi 22 juin 2016, 17:52:26 (UTC+0200)
|
||||||
|
1466611426 END 1.710 : mercredi 22 juin 2016, 18:03:46 (UTC+0200)
|
||||||
|
1466627202 BEGIN 1.711 : mercredi 22 juin 2016, 22:26:42 (UTC+0200)
|
||||||
|
1466627955 END 1.711 : mercredi 22 juin 2016, 22:39:15 (UTC+0200)
|
||||||
|
1467069519 BEGIN 1.711 : mardi 28 juin 2016, 01:18:39 (UTC+0200)
|
||||||
|
1467069574 END 1.711 : mardi 28 juin 2016, 01:19:34 (UTC+0200)
|
||||||
|
1467069750 BEGIN 1.711 : mardi 28 juin 2016, 01:22:30 (UTC+0200)
|
||||||
|
1467069794 END 1.711 : mardi 28 juin 2016, 01:23:14 (UTC+0200)
|
||||||
|
1467069926 BEGIN 1.711 : mardi 28 juin 2016, 01:25:26 (UTC+0200)
|
||||||
|
1467070138 BEGIN 1.711 : mardi 28 juin 2016, 01:28:58 (UTC+0200)
|
||||||
|
1467070225 BEGIN 1.711 : mardi 28 juin 2016, 01:30:25 (UTC+0200)
|
||||||
|
1467070345 BEGIN 1.711 : mardi 28 juin 2016, 01:32:25 (UTC+0200)
|
||||||
|
1467070391 BEGIN 1.711 : mardi 28 juin 2016, 01:33:11 (UTC+0200)
|
||||||
|
1467070514 BEGIN 1.711 : mardi 28 juin 2016, 01:35:14 (UTC+0200)
|
||||||
|
1467070588 BEGIN 1.711 : mardi 28 juin 2016, 01:36:28 (UTC+0200)
|
||||||
|
1467070950 BEGIN 1.711 : mardi 28 juin 2016, 01:42:30 (UTC+0200)
|
||||||
|
1467255653 BEGIN 1.712 : jeudi 30 juin 2016, 05:00:53 (UTC+0200)
|
||||||
|
1467255813 END 1.712 : jeudi 30 juin 2016, 05:03:33 (UTC+0200)
|
||||||
|
1467755793 BEGIN 1.715 : mardi 5 juillet 2016, 23:56:34 (UTC+0200)
|
||||||
|
1467756564 END 1.715 : mercredi 6 juillet 2016, 00:09:24 (UTC+0200)
|
||||||
|
1469013686 BEGIN 1.718 : mercredi 20 juillet 2016, 13:21:26 (UTC+0200)
|
||||||
|
1469014489 BEGIN 1.718 : mercredi 20 juillet 2016, 13:34:49 (UTC+0200)
|
||||||
|
1469814584 BEGIN 1.721 : vendredi 29 juillet 2016, 19:49:44 (UTC+0200)
|
||||||
|
1469815484 END 1.721 : vendredi 29 juillet 2016, 20:04:44 (UTC+0200)
|
||||||
|
1469828350 BEGIN 1.722 : vendredi 29 juillet 2016, 23:39:10 (UTC+0200)
|
||||||
|
1469829123 END 1.722 : vendredi 29 juillet 2016, 23:52:03 (UTC+0200)
|
||||||
|
1469831589 BEGIN 1.723 : samedi 30 juillet 2016, 00:33:09 (UTC+0200)
|
||||||
|
1469832393 END 1.723 : samedi 30 juillet 2016, 00:46:33 (UTC+0200)
|
||||||
|
1471305986 BEGIN 1.725 : mardi 16 août 2016, 02:06:26 (UTC+0200)
|
||||||
|
1471306861 END 1.725 : mardi 16 août 2016, 02:21:01 (UTC+0200)
|
||||||
|
1471390396 BEGIN 1.726 : mercredi 17 août 2016, 01:33:16 (UTC+0200)
|
||||||
|
1471391143 END 1.726 : mercredi 17 août 2016, 01:45:43 (UTC+0200)
|
||||||
|
1471399447 BEGIN 1.726 : mercredi 17 août 2016, 04:04:07 (UTC+0200)
|
||||||
|
1471399633 END 1.726 : mercredi 17 août 2016, 04:07:13 (UTC+0200)
|
||||||
|
1471514233 BEGIN 1.726 : jeudi 18 août 2016, 11:57:13 (UTC+0200)
|
||||||
|
1471515101 END 1.726 : jeudi 18 août 2016, 12:11:41 (UTC+0200)
|
||||||
|
1471606171 BEGIN 1.727 : vendredi 19 août 2016, 13:29:31 (UTC+0200)
|
||||||
|
1471616659 BEGIN 1.727 : vendredi 19 août 2016, 16:24:19 (UTC+0200)
|
||||||
|
1471617309 END 1.727 : vendredi 19 août 2016, 16:35:09 (UTC+0200)
|
||||||
|
0
W/.checklinkext
Normal file
0
W/.checklinkext
Normal file
61
W/.tests.errors.txt
Normal file
61
W/.tests.errors.txt
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
2016_08_16_22_49_23 : FAILED 1/4 TESTS: ll_authmech_xoauth2_json_gmail
|
||||||
|
2016_08_16_22_52_37 : FAILED 1/2 TESTS: ll_authmech_XOAUTH2_json_gmail
|
||||||
|
2016_08_16_22_55_09 : FAILED 1/2 TESTS: ll_authmech_XOAUTH2_gmail
|
||||||
|
2016_08_16_22_56_48 : FAILED 1/2 TESTS: ll_pipemess
|
||||||
|
2016_08_16_23_59_51 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_16_23_59_56 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_17_00_00_27 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_17_00_24_36 : ALL 114 TESTS SUCCESSFUL
|
||||||
|
2016_08_17_00_48_26 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_17_01_20_59 : ALL 114 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_10_22_53 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_10_22_59 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_45_57 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_46_02 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_48_53 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_48_58 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_49_28 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_49_32 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_50_21 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_50_25 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_52_06 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_52_11 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_53_49 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_53_53 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_55_13 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_55_18 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_57_16 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_57_21 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_58_33 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_11_58_58 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_12_29_48 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_33_39 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_33_46 : FAILED 1/2 TESTS: ll_ssl_justconnect_SSL_VERIFY_PEER
|
||||||
|
2016_08_19_16_34_36 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_34_41 : FAILED 1/2 TESTS: ll_ssl_justconnect_SSL_VERIFY_PEER
|
||||||
|
2016_08_19_16_38_37 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_38_42 : FAILED 1/2 TESTS: ll_ssl_justconnect_SSL_VERIFY_PEER
|
||||||
|
2016_08_19_16_41_01 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_41_05 : FAILED 1/2 TESTS: ll_ssl_justconnect_SSL_VERIFY_PEER
|
||||||
|
2016_08_19_16_41_27 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_41_32 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_42_51 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_42_56 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_43_21 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_43_26 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_44_25 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_44_29 : FAILED 1/2 TESTS: ll_ssl_justconnect_SSL_VERIFY_PEER
|
||||||
|
2016_08_19_16_50_18 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_50_26 : FAILED 1/2 TESTS: l_office365_justlogin_2
|
||||||
|
2016_08_19_16_51_12 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_52_50 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_52_56 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_53_30 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_54_47 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_54_54 : FAILED 1/2 TESTS: l_office365_justconnect_tls_SSL_verify_mode
|
||||||
|
2016_08_19_16_55_13 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_55_19 : FAILED 1/2 TESTS: l_office365_justconnect_tls_SSL_verify_mode
|
||||||
|
2016_08_19_16_55_37 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_16_55_43 : ALL 2 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_19_54_03 : ALL 1 TESTS SUCCESSFUL
|
||||||
|
2016_08_19_20_18_58 : ALL 115 TESTS SUCCESSFUL
|
0
W/.valid.index.shtml
Normal file
0
W/.valid.index.shtml
Normal file
1
W/LOG_bat/learn_func.bat.txt
Normal file
1
W/LOG_bat/learn_func.bat.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Failure running NOEXIST
|
127
W/build_exe.bat
127
W/build_exe.bat
@ -1,19 +1,55 @@
|
|||||||
|
|
||||||
REM $Id: build_exe.bat,v 1.35 2015/12/14 15:15:36 gilles Exp gilles $
|
REM $Id: build_exe.bat,v 1.40 2016/08/19 14:12:29 gilles Exp gilles $
|
||||||
@ECHO OFF
|
|
||||||
|
@SETLOCAL
|
||||||
|
ECHO Currently running through %0 %*
|
||||||
|
|
||||||
ECHO Building imapsync.exe
|
ECHO Building imapsync.exe
|
||||||
|
|
||||||
@REM the following command change current directory to the dirname of the current batch pathname
|
@REM the following command change current directory to the dirname of the current batch pathname
|
||||||
CD /D %~dp0
|
CD /D %~dp0
|
||||||
|
|
||||||
|
REM Remove the error file because its existence means an error occured during this script execution
|
||||||
|
IF EXIST LOG_bat\%~nx0.txt DEL LOG_bat\%~nx0.txt
|
||||||
|
|
||||||
|
|
||||||
|
CALL :handle_error CALL :detect_perl
|
||||||
|
CALL :handle_error CALL :check_modules
|
||||||
|
CALL :handle_error CALL :pp_exe
|
||||||
|
|
||||||
|
|
||||||
|
@ENDLOCAL
|
||||||
|
EXIT /B
|
||||||
|
|
||||||
|
|
||||||
|
:pp_exe
|
||||||
|
@SETLOCAL
|
||||||
|
CALL pp -o imapsync.exe --link libeay32_.dll --link zlib1_.dll --link ssleay32_.dll .\imapsync
|
||||||
|
IF ERRORLEVEL 1 CALL pp -o imapsync.exe .\imapsync
|
||||||
|
@ENDLOCAL
|
||||||
|
EXIT /B
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
::------------------------------------------------------
|
||||||
|
::--------------- Detect Perl --------------------------
|
||||||
|
:detect_perl
|
||||||
|
@SETLOCAL
|
||||||
perl -v
|
perl -v
|
||||||
IF ERRORLEVEL 1 ECHO Perl needed. Install Strawberry Perl. Get it at http://strawberryperl.com/ ^
|
@ENDLOCAL
|
||||||
&& PAUSE && EXIT /B 3
|
EXIT /B
|
||||||
|
::------------------------------------------------------
|
||||||
|
|
||||||
REM CALL .\install_modules.bat
|
|
||||||
|
|
||||||
|
::------------------------------------------------------
|
||||||
|
::--------------- Check modules are here --------------
|
||||||
|
:check_modules
|
||||||
|
@SETLOCAL
|
||||||
perl ^
|
perl ^
|
||||||
|
-mTest::MockObject ^
|
||||||
|
-mPAR::Packer ^
|
||||||
|
-mReadonly ^
|
||||||
-mAuthen::NTLM ^
|
-mAuthen::NTLM ^
|
||||||
-mData::Dumper ^
|
-mData::Dumper ^
|
||||||
-mData::Uniqid ^
|
-mData::Uniqid ^
|
||||||
@ -39,66 +75,29 @@ perl ^
|
|||||||
-mCrypt::OpenSSL::RSA ^
|
-mCrypt::OpenSSL::RSA ^
|
||||||
-mEncode::Byte ^
|
-mEncode::Byte ^
|
||||||
-e ''
|
-e ''
|
||||||
|
IF ERRORLEVEL 1 CALL .\install_modules.bat
|
||||||
|
@ENDLOCAL
|
||||||
|
EXIT /B
|
||||||
|
::------------------------------------------------------
|
||||||
|
|
||||||
@ECHO ON
|
|
||||||
DEL imapsync.exe
|
|
||||||
pp -o imapsync.exe ^
|
|
||||||
--link libeay32_.dll ^
|
|
||||||
--link zlib1_.dll ^
|
|
||||||
--link ssleay32_.dll ^
|
|
||||||
.\imapsync
|
|
||||||
|
|
||||||
ECHO Done building imapsync.exe
|
|
||||||
|
|
||||||
@REM Previous options to pp
|
|
||||||
@REM Previous options to pp
|
|
||||||
@REM --link libeay32_.dll ^
|
|
||||||
@REM --link zlib1_.dll ^
|
|
||||||
@REM --link ssleay32_.dll ^
|
|
||||||
@REM -M Mail::IMAPClient ^
|
|
||||||
@REM -M IO::Socket ^
|
|
||||||
@REM -M IO::Socket::IP ^
|
|
||||||
@REM -M IO::Socket::SSL ^
|
|
||||||
@REM -M IO::Socket::INET ^
|
|
||||||
@REM -M Digest::MD5 ^
|
|
||||||
@REM -M Digest::HMAC_MD5 ^
|
|
||||||
@REM -M Digest::HMAC_SHA1 ^
|
|
||||||
@REM -M Term::ReadKey ^
|
|
||||||
@REM -M File::Spec ^
|
|
||||||
@REM -M Authen::NTLM ^
|
|
||||||
@REM -M Time::Local ^
|
|
||||||
@REM -M URI::Escape ^
|
|
||||||
@REM -M Data::Uniqid ^
|
|
||||||
@REM -M File::Copy::Recursive ^
|
|
||||||
@REM -M IO::Tee ^
|
|
||||||
@REM -M Unicode::String ^
|
|
||||||
@REM -M JSON::WebToken ^
|
|
||||||
@REM -M LWP::UserAgent ^
|
|
||||||
@REM -M HTML::Entities ^
|
|
||||||
@REM -M JSON ^
|
|
||||||
@REM -M Encode::Byte ^
|
|
||||||
EXIT /B
|
|
||||||
|
|
||||||
-M Mail::IMAPClient ^
|
::------------------------------------------------------
|
||||||
-M IO::Socket ^
|
::--------------- Handle error -------------------------
|
||||||
-M IO::Socket::IP ^
|
:handle_error
|
||||||
-M IO::Socket::SSL ^
|
SETLOCAL
|
||||||
-M IO::Socket::INET ^
|
ECHO IN %0 with parameters %*
|
||||||
-M Digest::MD5 ^
|
%*
|
||||||
-M Digest::HMAC_MD5 ^
|
SET CMD_RETURN=%ERRORLEVEL%
|
||||||
-M Digest::HMAC_SHA1 ^
|
|
||||||
-M Term::ReadKey ^
|
IF %CMD_RETURN% EQU 0 (
|
||||||
-M File::Spec ^
|
ECHO GOOD END
|
||||||
-M Authen::NTLM ^
|
) ELSE (
|
||||||
-M Time::Local ^
|
ECHO BAD END
|
||||||
-M URI::Escape ^
|
IF NOT EXIST LOG_bat MKDIR LOG_bat
|
||||||
-M Data::Uniqid ^
|
ECHO Failure calling: %* >> LOG_bat\%~nx0.txt
|
||||||
-M File::Copy::Recursive ^
|
)
|
||||||
-M IO::Tee ^
|
ENDLOCAL
|
||||||
-M Unicode::String ^
|
EXIT /B
|
||||||
-M JSON::WebToken ^
|
::------------------------------------------------------
|
||||||
-M LWP::UserAgent ^
|
|
||||||
-M HTML::Entities ^
|
|
||||||
-M Crypt::OpenSSL::RSA ^
|
|
||||||
-M JSON ^
|
|
||||||
-M Encode::Byte ^
|
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# $Id: build_mac.sh,v 1.2 2015/11/04 18:19:48 gilles Exp gilles $
|
# $Id: build_mac.sh,v 1.6 2016/06/22 20:04:16 gilles Exp gilles $
|
||||||
|
|
||||||
|
# exit on any failure
|
||||||
|
set -e
|
||||||
|
|
||||||
eval `perl -I $HOME/perl5/lib/perl5 -Mlocal::lib`
|
eval `perl -I $HOME/perl5/lib/perl5 -Mlocal::lib`
|
||||||
export MANPATH=$HOME/perl5/man:$MANPATH
|
export MANPATH=$HOME/perl5/man:$MANPATH
|
||||||
@ -10,10 +13,15 @@ ARCH=`uname -m`
|
|||||||
KERNEL=`uname -s`
|
KERNEL=`uname -s`
|
||||||
echo "$HOSTNAME $ARCH $KERNEL"
|
echo "$HOSTNAME $ARCH $KERNEL"
|
||||||
|
|
||||||
VERSION=`./imapsync --version`
|
|
||||||
BIN_NAME=imapsync_bin_Darwin
|
BIN_NAME=imapsync_bin_Darwin
|
||||||
|
|
||||||
cpanm Mail::IMAPClient
|
# exit if known needed modules are missing
|
||||||
|
sh prerequisites_imapsync
|
||||||
|
|
||||||
|
VERSION=`./imapsync --version`
|
||||||
|
|
||||||
|
# Update important Perl modules
|
||||||
|
cpanm Mail::IMAPClient IO::Socket::SSL PAR::Packer
|
||||||
|
|
||||||
pp -o $BIN_NAME \
|
pp -o $BIN_NAME \
|
||||||
-M Mail::IMAPClient -M IO::Socket -M IO::Socket::SSL \
|
-M Mail::IMAPClient -M IO::Socket -M IO::Socket::SSL \
|
||||||
@ -22,6 +30,6 @@ pp -o $BIN_NAME \
|
|||||||
-M Crypt::OpenSSL::RSA -M JSON -M JSON::WebToken -M LWP -M HTML::Entities \
|
-M Crypt::OpenSSL::RSA -M JSON -M JSON::WebToken -M LWP -M HTML::Entities \
|
||||||
imapsync
|
imapsync
|
||||||
|
|
||||||
./imapsync_bin_Darwin
|
./imapsync_bin_Darwin
|
||||||
./imapsync_bin_Darwin --tests
|
./imapsync_bin_Darwin --tests
|
||||||
./imapsync_bin_Darwin --testslive
|
./imapsync_bin_Darwin --testslive
|
||||||
|
17
W/check_winerr
Executable file
17
W/check_winerr
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# $Id: check_winerr,v 1.4 2016/06/30 11:10:37 gilles Exp gilles $
|
||||||
|
|
||||||
|
test -n "$1" || { echo usage: "$0 script.bat" && exit 1 ; }
|
||||||
|
|
||||||
|
test -d W/LOG_bat || mkdir W/LOG_bat
|
||||||
|
ERROR_FILENAME=$1.txt
|
||||||
|
rm -f "W/LOG_bat/$ERROR_FILENAME"
|
||||||
|
if scp Admin@c:'C:/msys/1.0/home/Admin/imapsync/LOG_bat/'"$ERROR_FILENAME" W/LOG_bat/ > /dev/null 2>&1 ; then
|
||||||
|
#echo -n "W/LOG_bat/$ERROR_FILENAME : "
|
||||||
|
#cat "W/LOG_bat/$ERROR_FILENAME"
|
||||||
|
sed -e "s#^#W/LOG_bat/$ERROR_FILENAME : #" "W/LOG_bat/$ERROR_FILENAME"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo NO errror
|
||||||
|
fi
|
11
W/checklink.txt
Normal file
11
W/checklink.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
Processing http://lamiral.info/~gilles/imapsync/
|
||||||
|
|
||||||
|
|
||||||
|
List of broken links and other issues:
|
||||||
|
http://fr.linkedin.com/in/gilleslamiral
|
||||||
|
Line: 185
|
||||||
|
Code: 405 Method Not Allowed
|
||||||
|
To do: The server does not allow HTTP HEAD requests, which prevents the
|
||||||
|
Link Checker to check the link automatically. Check the link
|
||||||
|
manually.
|
44
W/checklinkext.txt
Normal file
44
W/checklinkext.txt
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
Processing http://lamiral.info/~gilles/imapsync/S/news.shtml
|
||||||
|
|
||||||
|
|
||||||
|
List of broken links and other issues:
|
||||||
|
http://lamiral.info/~gilles/imapsync/
|
||||||
|
Line: 135
|
||||||
|
Code: 200 OK
|
||||||
|
To do: Some of the links to this resource point to broken URI fragments
|
||||||
|
(such as index.html#fragment).
|
||||||
|
The following fragments need to be fixed:
|
||||||
|
poll Line: 135
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
Processing http://lamiral.info/~gilles/imapsync/S/external.shtml
|
||||||
|
|
||||||
|
|
||||||
|
List of broken links and other issues:
|
||||||
|
https://bl0rg.net/software/
|
||||||
|
Line: 41
|
||||||
|
Code: 500 Can't connect to bl0rg.net:443
|
||||||
|
To do: This is a server side problem. Check the URI.
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
Processing http://lamiral.info/~gilles/imapsync/S/imapservers.shtml
|
||||||
|
|
||||||
|
|
||||||
|
List of broken links and other issues:
|
||||||
|
http://www.mirapoint.com/
|
||||||
|
Line: 126
|
||||||
|
Code: 404 Not Found
|
||||||
|
To do: The link is broken. Double-check that you have not made any typo,
|
||||||
|
or mistake in copy-pasting. If the link points to a resource that
|
||||||
|
no longer exists, you may want to remove or fix the link.
|
||||||
|
|
||||||
|
http://www.kerio.com/
|
||||||
|
Line: 117
|
||||||
|
Code: 302 -> 302 Found
|
||||||
|
To do: This is a temporary redirect. Update the link if you believe it
|
||||||
|
makes sense, or leave it as is.
|
1108
W/dprof2_bigmail_tmon.out
Normal file
1108
W/dprof2_bigmail_tmon.out
Normal file
File diff suppressed because it is too large
Load Diff
299
W/imapsync.1
299
W/imapsync.1
@ -1,4 +1,4 @@
|
|||||||
.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
|
.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
|
||||||
.\"
|
.\"
|
||||||
.\" Standard preamble:
|
.\" Standard preamble:
|
||||||
.\" ========================================================================
|
.\" ========================================================================
|
||||||
@ -38,6 +38,8 @@
|
|||||||
. ds PI \(*p
|
. ds PI \(*p
|
||||||
. ds L" ``
|
. ds L" ``
|
||||||
. ds R" ''
|
. ds R" ''
|
||||||
|
. ds C`
|
||||||
|
. ds C'
|
||||||
'br\}
|
'br\}
|
||||||
.\"
|
.\"
|
||||||
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
||||||
@ -48,17 +50,24 @@
|
|||||||
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
|
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
|
||||||
.\" entries marked with X<> in POD. Of course, you'll have to process the
|
.\" entries marked with X<> in POD. Of course, you'll have to process the
|
||||||
.\" output yourself in some meaningful fashion.
|
.\" output yourself in some meaningful fashion.
|
||||||
.ie \nF \{\
|
.\"
|
||||||
. de IX
|
.\" Avoid warning from groff about undefined register 'F'.
|
||||||
. tm Index:\\$1\t\\n%\t"\\$2"
|
.de IX
|
||||||
..
|
..
|
||||||
. nr % 0
|
.nr rF 0
|
||||||
. rr F
|
.if \n(.g .if rF .nr rF 1
|
||||||
.\}
|
.if (\n(rF:(\n(.g==0)) \{
|
||||||
.el \{\
|
. if \nF \{
|
||||||
. de IX
|
. de IX
|
||||||
|
. tm Index:\\$1\t\\n%\t"\\$2"
|
||||||
..
|
..
|
||||||
|
. if !\nF==2 \{
|
||||||
|
. nr % 0
|
||||||
|
. nr F 2
|
||||||
|
. \}
|
||||||
|
. \}
|
||||||
.\}
|
.\}
|
||||||
|
.rr rF
|
||||||
.\"
|
.\"
|
||||||
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
|
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
|
||||||
.\" Fear. Run. Save yourself. No user-serviceable parts.
|
.\" Fear. Run. Save yourself. No user-serviceable parts.
|
||||||
@ -124,24 +133,25 @@
|
|||||||
.\" ========================================================================
|
.\" ========================================================================
|
||||||
.\"
|
.\"
|
||||||
.IX Title "IMAPSYNC 1"
|
.IX Title "IMAPSYNC 1"
|
||||||
.TH IMAPSYNC 1 "2016-03-17" "perl v5.14.2" "User Contributed Perl Documentation"
|
.TH IMAPSYNC 1 "2016-08-19" "perl v5.18.2" "User Contributed Perl Documentation"
|
||||||
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
||||||
.\" way too many mistakes in technical documents.
|
.\" way too many mistakes in technical documents.
|
||||||
.if n .ad l
|
.if n .ad l
|
||||||
.nh
|
.nh
|
||||||
.SH "NAME"
|
.SH "NAME"
|
||||||
imapsync \- IMAP synchronisation, sync, copy or migration tool.
|
imapsync \- Email IMAP tool for syncing, copying and migrating email mailboxes.
|
||||||
Synchronises mailboxes between two imap servers.
|
|
||||||
Good at IMAP migration. More than 66 different IMAP server softwares
|
|
||||||
supported with success, few failures.
|
|
||||||
.PP
|
.PP
|
||||||
$Revision: 1.684 $
|
The imapsync command synchronises mailboxes between two imap servers.
|
||||||
|
More than 69 different IMAP server softwares supported with success,
|
||||||
|
few failures.
|
||||||
|
.PP
|
||||||
|
$Revision: 1.727 $
|
||||||
.SH "SYNOPSIS"
|
.SH "SYNOPSIS"
|
||||||
.IX Header "SYNOPSIS"
|
.IX Header "SYNOPSIS"
|
||||||
.Vb 5
|
.Vb 5
|
||||||
\& To synchronize the source imap account
|
\& To synchronize the source imap account
|
||||||
\& "test1" on server "test1.lamiral.info" with password "secret1"
|
\& "test1" on server "test1.lamiral.info" with password "secret1"
|
||||||
\& to the destination imap account
|
\& to the destination imap account
|
||||||
\& "test2" on server "test2.lamiral.info" with password "secret2"
|
\& "test2" on server "test2.lamiral.info" with password "secret2"
|
||||||
\& do:
|
\& do:
|
||||||
\&
|
\&
|
||||||
@ -149,13 +159,18 @@ $Revision: 1.684 $
|
|||||||
\& \-\-host1 test1.lamiral.info \-\-user1 test1 \-\-password1 secret1 \e
|
\& \-\-host1 test1.lamiral.info \-\-user1 test1 \-\-password1 secret1 \e
|
||||||
\& \-\-host2 test2.lamiral.info \-\-user2 test2 \-\-password2 secret2
|
\& \-\-host2 test2.lamiral.info \-\-user2 test2 \-\-password2 secret2
|
||||||
.Ve
|
.Ve
|
||||||
|
.SH "REQUIRED ARGUMENTS"
|
||||||
|
.IX Header "REQUIRED ARGUMENTS"
|
||||||
|
The required argmuments are the six values, three on each sides,
|
||||||
|
needed to login into the \s-1IMAP\s0 servers,
|
||||||
|
a host, a username, and a password, two times.
|
||||||
.SH "INSTALL"
|
.SH "INSTALL"
|
||||||
.IX Header "INSTALL"
|
.IX Header "INSTALL"
|
||||||
.Vb 5
|
.Vb 5
|
||||||
\& Imapsync works under any Unix with perl.
|
\& Imapsync works under any Unix with perl.
|
||||||
\& Imapsync works under Windows (2000, XP, Vista, Seven)
|
\& Imapsync works under Windows (2000, XP, Vista, Seven)
|
||||||
\& as a standalone binary software called imapsync.exe
|
\& as a standalone binary software called imapsync.exe
|
||||||
\& Imapsync works under OS X as a standalone binary
|
\& Imapsync works under OS X as a standalone binary
|
||||||
\& software called imapsync_bin_Darwin.
|
\& software called imapsync_bin_Darwin.
|
||||||
\&
|
\&
|
||||||
\& Purchase latest imapsync at
|
\& Purchase latest imapsync at
|
||||||
@ -169,14 +184,19 @@ $Revision: 1.684 $
|
|||||||
\&
|
\&
|
||||||
\& Go into the directory imapsync\-x.xx and read the INSTALL file.
|
\& Go into the directory imapsync\-x.xx and read the INSTALL file.
|
||||||
\& As mentioned at http://imapsync.lamiral.info/#install
|
\& As mentioned at http://imapsync.lamiral.info/#install
|
||||||
\& the INSTALL file can also be found at
|
\& the INSTALL file can also be found at
|
||||||
\& http://imapsync.lamiral.info/INSTALL
|
\& http://imapsync.lamiral.info/INSTALL
|
||||||
\& It is now split in several files for each system
|
\& It is now split in several files for each system
|
||||||
\& http://imapsync.lamiral.info/INSTALL.d/
|
\& http://imapsync.lamiral.info/INSTALL.d/
|
||||||
.Ve
|
.Ve
|
||||||
|
.SH "CONFIGURATION"
|
||||||
|
.IX Header "CONFIGURATION"
|
||||||
|
There is no specific configuration file for imapsync,
|
||||||
|
everything is specified by the command line parameteres
|
||||||
|
and the default behavior.
|
||||||
.SH "USAGE"
|
.SH "USAGE"
|
||||||
.IX Header "USAGE"
|
.IX Header "USAGE"
|
||||||
To get a description of each option just run imapsync
|
To get a description of each option just run imapsync
|
||||||
with no argument, like this:
|
with no argument, like this:
|
||||||
.PP
|
.PP
|
||||||
.Vb 1
|
.Vb 1
|
||||||
@ -189,16 +209,16 @@ reproduced here:
|
|||||||
.PP
|
.PP
|
||||||
.Vb 1
|
.Vb 1
|
||||||
\& usage: ./imapsync [options]
|
\& usage: ./imapsync [options]
|
||||||
\&
|
\&
|
||||||
\& Several options are mandatory.
|
\& Several options are mandatory.
|
||||||
\& str means string
|
\& str means string
|
||||||
\& int means integer
|
\& int means integer
|
||||||
\& reg means regular expression
|
\& reg means regular expression
|
||||||
\& cmd means command
|
\& cmd means command
|
||||||
\&
|
\&
|
||||||
\& \-\-dry : Makes imapsync doing nothing, just print what would
|
\& \-\-dry : Makes imapsync doing nothing, just print what would
|
||||||
\& be done without \-\-dry.
|
\& be done without \-\-dry.
|
||||||
\&
|
\&
|
||||||
\& \-\-host1 str : Source or "from" imap server. Mandatory.
|
\& \-\-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. Default is 143, 993 if \-\-ssl1
|
||||||
\& \-\-user1 str : User to login on host1. Mandatory.
|
\& \-\-user1 str : User to login on host1. Mandatory.
|
||||||
@ -209,12 +229,12 @@ reproduced here:
|
|||||||
\& \-\-port2 int : Port to connect on host2. Default is 143, 993 if \-\-ssl2
|
\& \-\-port2 int : Port to connect on host2. Default is 143, 993 if \-\-ssl2
|
||||||
\& \-\-user2 str : User to login on host2. Mandatory.
|
\& \-\-user2 str : User to login on host2. Mandatory.
|
||||||
\& \-\-password2 str : Password for the user2.
|
\& \-\-password2 str : Password for the user2.
|
||||||
\&
|
\&
|
||||||
\& \-\-passfile1 str : Password file for the user1. It must contain the
|
\& \-\-passfile1 str : Password file for the user1. It must contain the
|
||||||
\& password on the first line. This option avoids to show
|
\& password on the first line. This option avoids to show
|
||||||
\& the password on the command line like \-\-password1 does.
|
\& the password on the command line like \-\-password1 does.
|
||||||
\& \-\-passfile2 str : Password file for the user2. Contains the password.
|
\& \-\-passfile2 str : Password file for the user2. Contains the password.
|
||||||
\&
|
\&
|
||||||
\& \-\-ssl1 : Use a SSL connection on host1.
|
\& \-\-ssl1 : Use a SSL connection on host1.
|
||||||
\& \-\-ssl2 : Use a SSL connection on host2.
|
\& \-\-ssl2 : Use a SSL connection on host2.
|
||||||
\& \-\-tls1 : Use a TLS connection on host1.
|
\& \-\-tls1 : Use a TLS connection on host1.
|
||||||
@ -225,45 +245,45 @@ reproduced here:
|
|||||||
\& See all possibilities in the new() method of IO::Socket::SSL
|
\& See all possibilities in the new() method of IO::Socket::SSL
|
||||||
\& http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
\& http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
||||||
\& \-\-sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
\& \-\-sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
||||||
\& See \-\-sslargs1
|
\& See \-\-sslargs1
|
||||||
\&
|
\&
|
||||||
\& \-\-timeout1 int : Connection timeout in seconds for host1.
|
\& \-\-timeout1 int : Connection timeout in seconds for host1.
|
||||||
\& Default is 120 and 0 means no timeout at all.
|
\& Default is 120 and 0 means no timeout at all.
|
||||||
\& \-\-timeout2 int : Connection timeout in seconds for host2.
|
\& \-\-timeout2 int : Connection timeout in seconds for host2.
|
||||||
\& Default is 120 and 0 means no timeout at all.
|
\& Default is 120 and 0 means no timeout at all.
|
||||||
\&
|
\&
|
||||||
\& \-\-authmech1 str : Auth mechanism to use with host1:
|
\& \-\-authmech1 str : Auth mechanism to use with host1:
|
||||||
\& PLAIN, LOGIN, CRAM\-MD5 etc. Use UPPERCASE.
|
\& PLAIN, LOGIN, CRAM\-MD5 etc. Use UPPERCASE.
|
||||||
\& \-\-authmech2 str : Auth mechanism to use with host2. See \-\-authmech1
|
\& \-\-authmech2 str : Auth mechanism to use with host2. See \-\-authmech1
|
||||||
\&
|
\&
|
||||||
\& \-\-authuser1 str : User to auth with on host1 (admin user).
|
\& \-\-authuser1 str : User to auth with on host1 (admin user).
|
||||||
\& Avoid using \-\-authmech1 SOMETHING with \-\-authuser1.
|
\& Avoid using \-\-authmech1 SOMETHING with \-\-authuser1.
|
||||||
\& \-\-authuser2 str : User to auth with on host2 (admin user).
|
\& \-\-authuser2 str : User to auth with on host2 (admin user).
|
||||||
\& \-\-proxyauth1 : Use proxyauth on host1. Requires \-\-authuser1.
|
\& \-\-proxyauth1 : Use proxyauth on host1. Requires \-\-authuser1.
|
||||||
\& Required by Sun/iPlanet/Netscape IMAP servers to
|
\& Required by Sun/iPlanet/Netscape IMAP servers to
|
||||||
\& be able to use an administrative user.
|
\& be able to use an administrative user.
|
||||||
\& \-\-proxyauth2 : Use proxyauth on host2. Requires \-\-authuser2.
|
\& \-\-proxyauth2 : Use proxyauth on host2. Requires \-\-authuser2.
|
||||||
\&
|
\&
|
||||||
\& \-\-authmd51 : Use MD5 authentification for host1.
|
\& \-\-authmd51 : Use MD5 authentification for host1.
|
||||||
\& \-\-authmd52 : Use MD5 authentification for host2.
|
\& \-\-authmd52 : Use MD5 authentification for host2.
|
||||||
\& \-\-domain1 str : Domain on host1 (NTLM authentication).
|
\& \-\-domain1 str : Domain on host1 (NTLM authentication).
|
||||||
\& \-\-domain2 str : Domain on host2 (NTLM authentication).
|
\& \-\-domain2 str : Domain on host2 (NTLM authentication).
|
||||||
\&
|
\&
|
||||||
\&
|
\&
|
||||||
\& \-\-folder str : Sync this folder.
|
\& \-\-folder str : Sync this folder.
|
||||||
\& \-\-folder str : and this one, etc.
|
\& \-\-folder str : and this one, etc.
|
||||||
\& \-\-folderrec str : Sync this folder recursively.
|
\& \-\-folderrec str : Sync this folder recursively.
|
||||||
\& \-\-folderrec str : and this one, etc.
|
\& \-\-folderrec str : and this one, etc.
|
||||||
\&
|
\&
|
||||||
\& \-\-folderfirst str : Sync this folder first. \-\-folderfirst "Work"
|
\& \-\-folderfirst str : Sync this folder first. \-\-folderfirst "Work"
|
||||||
\& \-\-folderfirst str : then this one, etc.
|
\& \-\-folderfirst str : then this one, etc.
|
||||||
\& \-\-folderlast str : Sync this folder last. \-\-folderlast "[Gmail]/All Mail"
|
\& \-\-folderlast str : Sync this folder last. \-\-folderlast "[Gmail]/All Mail"
|
||||||
\& \-\-folderlast str : then this one, etc.
|
\& \-\-folderlast str : then this one, etc.
|
||||||
\&
|
\&
|
||||||
\& \-\-nomixfolders : Do not merge folders when host1 is case sensitive
|
\& \-\-nomixfolders : Do not merge folders when host1 is case sensitive
|
||||||
\& while host2 is not (like Exchange). Only the first
|
\& while host2 is not (like Exchange). Only the first
|
||||||
\& similar folder is synced (ex: Sent SENT sent \-> Sent).
|
\& similar folder is synced (ex: Sent SENT sent \-> Sent).
|
||||||
\&
|
\&
|
||||||
\& \-\-skipemptyfolders : Empty host1 folders are not created on host2.
|
\& \-\-skipemptyfolders : Empty host1 folders are not created on host2.
|
||||||
\&
|
\&
|
||||||
\& \-\-f1f2 str1=str2 : Force folder str1 to be synced to str2.
|
\& \-\-f1f2 str1=str2 : Force folder str1 to be synced to str2.
|
||||||
@ -275,12 +295,12 @@ reproduced here:
|
|||||||
\& Several folders to avoid:
|
\& Several folders to avoid:
|
||||||
\& \-\-exclude \*(Aqfold1|fold2|f3\*(Aq skips fold1, fold2 and f3.
|
\& \-\-exclude \*(Aqfold1|fold2|f3\*(Aq skips fold1, fold2 and f3.
|
||||||
\& \-\-exclude reg : or this one, etc.
|
\& \-\-exclude reg : or this one, etc.
|
||||||
\&
|
\&
|
||||||
\& \-\-subfolder2 str : Move whole host1 folders hierarchy under this
|
\& \-\-subfolder2 str : Move whole host1 folders hierarchy under this
|
||||||
\& host2 folder str .
|
\& host2 folder str .
|
||||||
\& It does it by adding two \-\-regextrans2 options before
|
\& It does it by adding two \-\-regextrans2 options before
|
||||||
\& all others. Add \-\-debug to see what\*(Aqs really going on.
|
\& all others. Add \-\-debug to see what\*(Aqs really going on.
|
||||||
\&
|
\&
|
||||||
\& \-\-regextrans2 reg : Apply the whole regex to each destination folders.
|
\& \-\-regextrans2 reg : Apply the whole regex to each destination folders.
|
||||||
\& \-\-regextrans2 reg : and this one. etc.
|
\& \-\-regextrans2 reg : and this one. etc.
|
||||||
\& When you play with the \-\-regextrans2 option, first
|
\& When you play with the \-\-regextrans2 option, first
|
||||||
@ -288,21 +308,21 @@ reproduced here:
|
|||||||
\& Then, when happy, remove \-\-dry, remove \-\-justfolders.
|
\& Then, when happy, remove \-\-dry, remove \-\-justfolders.
|
||||||
\& Have in mind that \-\-regextrans2 is applied after prefix
|
\& Have in mind that \-\-regextrans2 is applied after prefix
|
||||||
\& and separator inversion.
|
\& and separator inversion.
|
||||||
\&
|
\&
|
||||||
\& \-\-tmpdir str : Where to store temporary files and subdirectories.
|
\& \-\-tmpdir str : Where to store temporary files and subdirectories.
|
||||||
\& Will be created if it doesn\*(Aqt exist.
|
\& Will be created if it doesn\*(Aqt exist.
|
||||||
\& Default is system specific, Unix is /tmp but
|
\& Default is system specific, Unix is /tmp but
|
||||||
\& it\*(Aqs often small and deleted at reboot.
|
\& it\*(Aqs often small and deleted at reboot.
|
||||||
\& \-\-tmpdir /var/tmp should be better.
|
\& \-\-tmpdir /var/tmp should be better.
|
||||||
\& \-\-pidfile str : The file where imapsync pid is written.
|
\& \-\-pidfile str : The file where imapsync pid is written.
|
||||||
\& \-\-pidfilelocking : Abort if pidfile already exists. Usefull to avoid
|
\& \-\-pidfilelocking : Abort if pidfile already exists. Usefull to avoid
|
||||||
\& concurrent transfers on the same mailbox.
|
\& concurrent transfers on the same mailbox.
|
||||||
\&
|
\&
|
||||||
\& \-\-nolog : Turn off logging on file
|
\& \-\-nolog : Turn off logging on file
|
||||||
\& \-\-logfile str : Change the default log filename (can be dirname/filename).
|
\& \-\-logfile str : Change the default log filename (can be dirname/filename).
|
||||||
\& \-\-logdir str : Change the default log directory. Default is LOG_imapsync
|
\& \-\-logdir str : Change the default log directory. Default is LOG_imapsync
|
||||||
\&
|
\&
|
||||||
\& \-\-prefix1 str : Remove prefix to all destination folders
|
\& \-\-prefix1 str : Remove prefix to all destination folders
|
||||||
\& (usually INBOX. or INBOX/ or an empty string "")
|
\& (usually INBOX. or INBOX/ or an empty string "")
|
||||||
\& you have to use \-\-prefix1 if host1 imap server
|
\& you have to use \-\-prefix1 if host1 imap server
|
||||||
\& does not have NAMESPACE capability, so imapsync
|
\& does not have NAMESPACE capability, so imapsync
|
||||||
@ -310,16 +330,16 @@ reproduced here:
|
|||||||
\& \-\-prefix2 str : Add prefix to all host2 folders. See \-\-prefix1
|
\& \-\-prefix2 str : Add prefix to all host2 folders. See \-\-prefix1
|
||||||
\& \-\-sep1 str : Host1 separator in case NAMESPACE is not supported.
|
\& \-\-sep1 str : Host1 separator in case NAMESPACE is not supported.
|
||||||
\& \-\-sep2 str : Host2 separator in case NAMESPACE is not supported.
|
\& \-\-sep2 str : Host2 separator in case NAMESPACE is not supported.
|
||||||
\&
|
\&
|
||||||
\& \-\-skipmess reg : Skips messages maching the regex.
|
\& \-\-skipmess reg : Skips messages maching the regex.
|
||||||
\& Example: \*(Aqm/[\ex80\-ff]/\*(Aq # to avoid 8bits messages.
|
\& Example: \*(Aqm/[\ex80\-ff]/\*(Aq # to avoid 8bits messages.
|
||||||
\& \-\-skipmess is applied before \-\-regexmess
|
\& \-\-skipmess is applied before \-\-regexmess
|
||||||
\& \-\-skipmess reg : or this one, etc.
|
\& \-\-skipmess reg : or this one, etc.
|
||||||
\&
|
\&
|
||||||
\& \-\-pipemess cmd : Apply this cmd command to each message content
|
\& \-\-pipemess cmd : Apply this cmd command to each message content
|
||||||
\& before the copy.
|
\& before the copy.
|
||||||
\& \-\-pipemess cmd : and this one, etc.
|
\& \-\-pipemess cmd : and this one, etc.
|
||||||
\&
|
\&
|
||||||
\& \-\-disarmreadreceipts : Disarms read receipts (host2 Exchange issue)
|
\& \-\-disarmreadreceipts : Disarms read receipts (host2 Exchange issue)
|
||||||
\&
|
\&
|
||||||
\& \-\-regexmess reg : Apply the whole regex to each message before transfer.
|
\& \-\-regexmess reg : Apply the whole regex to each message before transfer.
|
||||||
@ -329,20 +349,20 @@ reproduced here:
|
|||||||
\& \-\-regexflag reg : Apply the whole regex to each flags list.
|
\& \-\-regexflag reg : Apply the whole regex to each flags list.
|
||||||
\& Example: \*(Aqs/"Junk"//g\*(Aq # to remove "Junk" flag.
|
\& Example: \*(Aqs/"Junk"//g\*(Aq # to remove "Junk" flag.
|
||||||
\& \-\-regexflag reg : and this one, etc.
|
\& \-\-regexflag reg : and this one, etc.
|
||||||
\&
|
\&
|
||||||
\& \-\-delete : Deletes messages on host1 server after a successful
|
\& \-\-delete : Deletes messages on host1 server after a successful
|
||||||
\& transfer. Option \-\-delete has the following behavior:
|
\& transfer. Option \-\-delete has the following behavior:
|
||||||
\& it marks messages as deleted with the IMAP flag
|
\& it marks messages as deleted with the IMAP flag
|
||||||
\& \eDeleted, then messages are really deleted with an
|
\& \eDeleted, then messages are really deleted with an
|
||||||
\& EXPUNGE IMAP command.
|
\& EXPUNGE IMAP command.
|
||||||
\&
|
\&
|
||||||
\& \-\-delete2 : Delete messages in host2 that are not in
|
\& \-\-delete2 : Delete messages in host2 that are not in
|
||||||
\& host1 server. Useful for backup or pre\-sync.
|
\& host1 server. Useful for backup or pre\-sync.
|
||||||
\& \-\-delete2duplicates : Delete messages in host2 that are duplicates.
|
\& \-\-delete2duplicates : Delete messages in host2 that are duplicates.
|
||||||
\& Works only without \-\-useuid since duplicates are
|
\& Works only without \-\-useuid since duplicates are
|
||||||
\& detected with an header part of each message.
|
\& detected with an header part of each message.
|
||||||
\&
|
\&
|
||||||
\& \-\-delete2folders : Delete folders in host2 that are not in host1 server.
|
\& \-\-delete2folders : Delete folders in host2 that are not in host1 server.
|
||||||
\& For safety, first try it like this (it is safe):
|
\& For safety, first try it like this (it is safe):
|
||||||
\& \-\-delete2folders \-\-dry \-\-justfolders \-\-nofoldersizes
|
\& \-\-delete2folders \-\-dry \-\-justfolders \-\-nofoldersizes
|
||||||
\& \-\-delete2foldersonly reg : Deleted only folders matching regex.
|
\& \-\-delete2foldersonly reg : Deleted only folders matching regex.
|
||||||
@ -351,8 +371,8 @@ reproduced here:
|
|||||||
\& Example: \-\-delete2foldersbutnot "/Tasks$|Contacts$|Foo$/"
|
\& Example: \-\-delete2foldersbutnot "/Tasks$|Contacts$|Foo$/"
|
||||||
\& \-\-noexpunge : Do not expunge messages on host1.
|
\& \-\-noexpunge : Do not expunge messages on host1.
|
||||||
\& Expunge really deletes messages marked deleted.
|
\& Expunge really deletes messages marked deleted.
|
||||||
\& Expunge is made at the beginning, on host1 only.
|
\& Expunge is made at the beginning, on host1 only.
|
||||||
\& Newly transferred messages are also expunged if
|
\& Newly transferred messages are also expunged if
|
||||||
\& option \-\-delete is given.
|
\& option \-\-delete is given.
|
||||||
\& No expunge is done on host2 account (unless \-\-expunge2)
|
\& No expunge is done on host2 account (unless \-\-expunge2)
|
||||||
\& \-\-expunge1 : Expunge messages on host1 after messages transfer.
|
\& \-\-expunge1 : Expunge messages on host1 after messages transfer.
|
||||||
@ -360,13 +380,13 @@ reproduced here:
|
|||||||
\& \-\-uidexpunge2 : uidexpunge messages on the host2 account
|
\& \-\-uidexpunge2 : uidexpunge messages on the host2 account
|
||||||
\& that are not on the host1 account, requires \-\-delete2
|
\& that are not on the host1 account, requires \-\-delete2
|
||||||
\& \-\-nomixfolders : Avoid merging folders that are considered different on
|
\& \-\-nomixfolders : Avoid merging folders that are considered different on
|
||||||
\& host1 but the same on destination host2 because of
|
\& host1 but the same on destination host2 because of
|
||||||
\& case sensitivities and insensitivities.
|
\& case sensitivities and insensitivities.
|
||||||
\&
|
\&
|
||||||
\& \-\-syncinternaldates : Sets the internal dates on host2 same as host1.
|
\& \-\-syncinternaldates : Sets the internal dates on host2 same as host1.
|
||||||
\& Turned on by default. Internal date is the date
|
\& Turned on by default. Internal date is the date
|
||||||
\& a message arrived on a host (mtime).
|
\& a message arrived on a host (mtime).
|
||||||
\& \-\-idatefromheader : Sets the internal dates on host2 same as the
|
\& \-\-idatefromheader : Sets the internal dates on host2 same as the
|
||||||
\& "Date:" headers.
|
\& "Date:" headers.
|
||||||
\&
|
\&
|
||||||
\& \-\-maxsize int : Skip messages larger (or equal) than int bytes
|
\& \-\-maxsize int : Skip messages larger (or equal) than int bytes
|
||||||
@ -381,48 +401,48 @@ reproduced here:
|
|||||||
\& past|+++++++++++++++minage\-\-\-\->now
|
\& past|+++++++++++++++minage\-\-\-\->now
|
||||||
\& past|\-\-\-\-maxage+++++minage\-\-\-\->now (intersection)
|
\& past|\-\-\-\-maxage+++++minage\-\-\-\->now (intersection)
|
||||||
\& past|++++minage\-\-\-\-\-maxage++++>now (union)
|
\& past|++++minage\-\-\-\-\-maxage++++>now (union)
|
||||||
\&
|
\&
|
||||||
\& \-\-search str : Selects only messages returned by this IMAP SEARCH
|
\& \-\-search str : Selects only messages returned by this IMAP SEARCH
|
||||||
\& command. Applied on both sides.
|
\& command. Applied on both sides.
|
||||||
\& \-\-search1 str : Same as \-\-search for selecting host1 messages only.
|
\& \-\-search1 str : Same as \-\-search for selecting host1 messages only.
|
||||||
\& \-\-search2 str : Same as \-\-search for selecting host2 messages only.
|
\& \-\-search2 str : Same as \-\-search for selecting host2 messages only.
|
||||||
\& \-\-search CRIT equals \-\-search1 CRIT \-\-search2 CRIT
|
\& \-\-search CRIT equals \-\-search1 CRIT \-\-search2 CRIT
|
||||||
\&
|
\&
|
||||||
\& \-\-exitwhenover int : Stop syncing when total bytes transferred reached.
|
\& \-\-exitwhenover int : Stop syncing when total bytes transferred reached.
|
||||||
\& Gmail per day allows
|
\& Gmail per day allows
|
||||||
\& 2500000000 = 2.5 GB downloaded from Gmail as host2
|
\& 2500000000 = 2.5 GB downloaded from Gmail as host2
|
||||||
\& 500000000 = 500 MB uploaded to Gmail as host1.
|
\& 500000000 = 500 MB uploaded to Gmail as host1.
|
||||||
\&
|
\&
|
||||||
\& \-\-maxlinelength int : skip messages with a line length longer than int bytes.
|
\& \-\-maxlinelength int : skip messages with a line length longer than int bytes.
|
||||||
\& RFC 2822 says it must be no more than 1000 bytes.
|
\& RFC 2822 says it must be no more than 1000 bytes.
|
||||||
\&
|
\&
|
||||||
\& \-\-useheader str : Use this header to compare messages on both sides.
|
\& \-\-useheader str : Use this header to compare messages on both sides.
|
||||||
\& Ex: Message\-ID or Subject or Date.
|
\& Ex: Message\-ID or Subject or Date.
|
||||||
\& \-\-useheader str and this one, etc.
|
\& \-\-useheader str and this one, etc.
|
||||||
\&
|
\&
|
||||||
\& \-\-subscribed : Transfers subscribed folders.
|
\& \-\-subscribed : Transfers subscribed folders.
|
||||||
\& \-\-subscribe : Subscribe to the folders transferred on the
|
\& \-\-subscribe : Subscribe to the folders transferred on the
|
||||||
\& host2 that are subscribed on host1. On by default.
|
\& host2 that are subscribed on host1. On by default.
|
||||||
\& \-\-subscribeall : Subscribe to the folders transferred on the
|
\& \-\-subscribeall : Subscribe to the folders transferred on the
|
||||||
\& host2 even if they are not subscribed on host1.
|
\& host2 even if they are not subscribed on host1.
|
||||||
\&
|
\&
|
||||||
\& \-\-nofoldersizes : Do not calculate the size of each folder in bytes
|
\& \-\-nofoldersizes : Do not calculate the size of each folder in bytes
|
||||||
\& and message counts. Default is to calculate them.
|
\& and message counts. Default is to calculate them.
|
||||||
\& \-\-nofoldersizesatend: Do not calculate the size of each folder in bytes
|
\& \-\-nofoldersizesatend: Do not calculate the size of each folder in bytes
|
||||||
\& and message counts at the end. Default is on.
|
\& and message counts at the end. Default is on.
|
||||||
\& \-\-justfoldersizes : Exit after having printed the folder sizes.
|
\& \-\-justfoldersizes : Exit after having printed the folder sizes.
|
||||||
\&
|
\&
|
||||||
\& \-\-syncacls : Synchronises acls (Access Control Lists).
|
\& \-\-syncacls : Synchronises acls (Access Control Lists).
|
||||||
\& \-\-nosyncacls : Does not synchronize acls. This is the default.
|
\& \-\-nosyncacls : Does not synchronize acls. This is the default.
|
||||||
\& Acls in IMAP are not standardized, be careful.
|
\& Acls in IMAP are not standardized, be careful.
|
||||||
\&
|
\&
|
||||||
\& \-\-usecache : Use cache to speedup.
|
\& \-\-usecache : Use cache to speedup.
|
||||||
\& \-\-nousecache : Do not use cache. Caveat: \-\-useuid \-\-nousecache creates
|
\& \-\-nousecache : Do not use cache. Caveat: \-\-useuid \-\-nousecache creates
|
||||||
\& duplicates on multiple runs.
|
\& duplicates on multiple runs.
|
||||||
\& \-\-useuid : Use uid instead of header as a criterium to recognize
|
\& \-\-useuid : Use uid instead of header as a criterium to recognize
|
||||||
\& messages. Option \-\-usecache is then implied unless
|
\& messages. Option \-\-usecache is then implied unless
|
||||||
\& \-\-nousecache is used.
|
\& \-\-nousecache is used.
|
||||||
\&
|
\&
|
||||||
\& \-\-debug : Debug mode.
|
\& \-\-debug : Debug mode.
|
||||||
\& \-\-debugfolders : Debug mode for the folders part only.
|
\& \-\-debugfolders : Debug mode for the folders part only.
|
||||||
\& \-\-debugcontent : Debug content of the messages transfered. Huge ouput.
|
\& \-\-debugcontent : Debug content of the messages transfered. Huge ouput.
|
||||||
@ -435,7 +455,7 @@ reproduced here:
|
|||||||
\& \-\-errorsmax int : Exit when int number of errors is reached. Default is 50.
|
\& \-\-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.
|
\& \-\-tests : Run local non\-regression tests. Exit code 0 means all ok.
|
||||||
\& \-\-testslive : Run a live test with test1.lamiral.info imap server.
|
\& \-\-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 connexion.
|
||||||
\&
|
\&
|
||||||
\& \-\-version : Print only software version.
|
\& \-\-version : Print only software version.
|
||||||
@ -444,19 +464,19 @@ reproduced here:
|
|||||||
\& \-\-noid : Do not send/receive ID command to imap servers.
|
\& \-\-noid : Do not send/receive ID command to imap servers.
|
||||||
\& \-\-justconnect : Just connect to both servers and print useful
|
\& \-\-justconnect : Just connect to both servers and print useful
|
||||||
\& information. Need only \-\-host1 and \-\-host2 options.
|
\& information. Need only \-\-host1 and \-\-host2 options.
|
||||||
\& \-\-justlogin : Just login to both host1 and host2 with users
|
\& \-\-justlogin : Just login to both host1 and host2 with users
|
||||||
\& credentials, then exit.
|
\& credentials, then exit.
|
||||||
\& \-\-justfolders : Do only things about folders (ignore messages).
|
\& \-\-justfolders : Do only things about folders (ignore messages).
|
||||||
\&
|
\&
|
||||||
\& \-\-help : print this help.
|
\& \-\-help : print this help.
|
||||||
\&
|
\&
|
||||||
\& Example:
|
\& Example:
|
||||||
\& To synchronize the source imap account
|
\& To synchronize the source imap account
|
||||||
\& "test1" on server "test1.lamiral.info" with password "secret1"
|
\& "test1" on server "test1.lamiral.info" with password "secret1"
|
||||||
\& to the destination imap account
|
\& to the destination imap account
|
||||||
\& "test2" on server "test2.lamiral.info" with password "secret2"
|
\& "test2" on server "test2.lamiral.info" with password "secret2"
|
||||||
\& do:
|
\& do:
|
||||||
\&
|
\&
|
||||||
\& imapsync \e
|
\& imapsync \e
|
||||||
\& \-\-host1 test1.lamiral.info \-\-user1 test1 \-\-password1 secret1 \e
|
\& \-\-host1 test1.lamiral.info \-\-user1 test1 \-\-password1 secret1 \e
|
||||||
\& \-\-host2 test2.lamiral.info \-\-user2 test2 \-\-password2 secret2
|
\& \-\-host2 test2.lamiral.info \-\-user2 test2 \-\-password2 secret2
|
||||||
@ -466,42 +486,42 @@ reproduced here:
|
|||||||
Imapsync command is a tool allowing incremental and
|
Imapsync command is a tool allowing incremental and
|
||||||
recursive imap transfers from one mailbox to another.
|
recursive imap transfers from one mailbox to another.
|
||||||
.PP
|
.PP
|
||||||
By default all folders are transferred, recursively, all
|
By default all folders are transferred, recursively, all
|
||||||
possible flags (\eSeen \eAnswered \eFlagged etc.) are synced too.
|
possible flags (\eSeen \eAnswered \eFlagged etc.) are synced too.
|
||||||
.PP
|
.PP
|
||||||
We sometimes need to transfer mailboxes from one imap server to
|
We sometimes need to transfer mailboxes from one imap server to
|
||||||
another. This is called migration.
|
another. This is called migration.
|
||||||
.PP
|
.PP
|
||||||
Imapsync reduces the amount
|
Imapsync reduces the amount
|
||||||
of data transferred by not transferring a given message
|
of data transferred by not transferring a given message
|
||||||
if it resides already on both sides. Same specific headers
|
if it resides already on both sides. Same specific headers
|
||||||
and the transfer is done only once; taken into account are by default
|
and the transfer is done only once; taken into account are by default
|
||||||
Message-Id and Received header lines.
|
Message-Id and Received header lines.
|
||||||
All flags are
|
All flags are
|
||||||
preserved, unread will stay unread, read will stay read,
|
preserved, unread will stay unread, read will stay read,
|
||||||
deleted will stay deleted. You can stop the transfer at any
|
deleted will stay deleted. You can stop the transfer at any
|
||||||
time and restart it later, imapsync works well with bad
|
time and restart it later, imapsync works well with bad
|
||||||
connections and interruptions.
|
connections and interruptions.
|
||||||
.PP
|
.PP
|
||||||
You can decide to delete the messages from the source mailbox
|
You can decide to delete the messages from the source mailbox
|
||||||
after a successful transfer, it can be a good feature when migrating
|
after a successful transfer, it can be a good feature when migrating
|
||||||
live mailboxes since messages will be only on one side.
|
live mailboxes since messages will be only on one side.
|
||||||
In that case, use the \-\-delete option. Option \-\-delete implies
|
In that case, use the \-\-delete option. Option \-\-delete implies
|
||||||
also option \-\-expunge so all messages marked deleted on host1
|
also option \-\-expunge so all messages marked deleted on host1
|
||||||
will be really deleted.
|
will be really deleted.
|
||||||
(you can use \-\-noexpunge to avoid this but I don't see any
|
(you can use \-\-noexpunge to avoid this but I don't see any
|
||||||
good real world scenario for the combination \-\-delete \-\-noexpunge).
|
good real world scenario for the combination \-\-delete \-\-noexpunge).
|
||||||
.PP
|
.PP
|
||||||
A different scenario is synchronizing a mailbox B from another mailbox A
|
A different scenario is synchronizing a mailbox B from another mailbox A
|
||||||
in case you just want to keep a \*(L"live\*(R" copy of A in B.
|
in case you just want to keep a \*(L"live\*(R" copy of A in B.
|
||||||
In that case \-\-delete2 has to be used, it deletes messages in host2
|
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
|
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
|
host2 folders that are not in host1 then use \-\-delete2folders (see also
|
||||||
\&\-\-delete2foldersonly and \-\-delete2foldersbutnot).
|
\&\-\-delete2foldersonly and \-\-delete2foldersbutnot).
|
||||||
.PP
|
.PP
|
||||||
Imapsync is not adequate for maintaining two active imap accounts
|
Imapsync is not adequate for maintaining two active imap accounts
|
||||||
in synchronization when the user plays independently on both sides.
|
in synchronization when the user plays independently on both sides.
|
||||||
Use offlineimap (written by John Goerzen) or mbsync (written by
|
Use offlineimap (written by John Goerzen) or mbsync (written by
|
||||||
Michael R. Elkins) for 2 ways synchronizations.
|
Michael R. Elkins) for 2 ways synchronizations.
|
||||||
.SH "OPTIONS"
|
.SH "OPTIONS"
|
||||||
.IX Header "OPTIONS"
|
.IX Header "OPTIONS"
|
||||||
@ -511,6 +531,8 @@ To get a description of each option just invoke:
|
|||||||
\& imapsync
|
\& imapsync
|
||||||
.Ve
|
.Ve
|
||||||
.PP
|
.PP
|
||||||
|
or read the previous section named \s-1USAGE,\s0
|
||||||
|
.PP
|
||||||
or read http://imapsync.lamiral.info/OPTIONS
|
or read http://imapsync.lamiral.info/OPTIONS
|
||||||
.SH "HISTORY"
|
.SH "HISTORY"
|
||||||
.IX Header "HISTORY"
|
.IX Header "HISTORY"
|
||||||
@ -528,8 +550,8 @@ While working on imapsync parameters please run imapsync in
|
|||||||
dry mode (no modification induced) with the \-\-dry
|
dry mode (no modification induced) with the \-\-dry
|
||||||
option. Nothing bad can be done this way.
|
option. Nothing bad can be done this way.
|
||||||
.PP
|
.PP
|
||||||
To synchronize the imap account \*(L"buddy\*(R" (with password \*(L"secret1\*(R")
|
To synchronize the imap account \*(L"buddy\*(R" (with password \*(L"secret1\*(R")
|
||||||
on host \*(L"imap.src.fr\*(R" to the imap account \*(L"max\*(R" (with password \*(L"secret2\*(R")
|
on host \*(L"imap.src.fr\*(R" to the imap account \*(L"max\*(R" (with password \*(L"secret2\*(R")
|
||||||
on host \*(L"imap.dest.fr\*(R":
|
on host \*(L"imap.dest.fr\*(R":
|
||||||
.PP
|
.PP
|
||||||
.Vb 2
|
.Vb 2
|
||||||
@ -542,7 +564,7 @@ mailbox.
|
|||||||
.SH "SECURITY"
|
.SH "SECURITY"
|
||||||
.IX Header "SECURITY"
|
.IX Header "SECURITY"
|
||||||
You can use \-\-passfile1 instead of \-\-password1 to give the
|
You can use \-\-passfile1 instead of \-\-password1 to give the
|
||||||
password since it is safer. With \-\-password1 option any user
|
password since it is safer. With \-\-password1 option any user
|
||||||
on your host can see the password by using the 'ps auxwwww'
|
on your host can see the password by using the 'ps auxwwww'
|
||||||
command. Using a variable (like \f(CW$PASSWORD1\fR) is also
|
command. Using a variable (like \f(CW$PASSWORD1\fR) is also
|
||||||
dangerous because of the 'ps auxwwwwe' command. So, saving
|
dangerous because of the 'ps auxwwwwe' command. So, saving
|
||||||
@ -552,7 +574,7 @@ the best solution.
|
|||||||
imasync is not totally protected against sniffers on the
|
imasync is not totally protected against sniffers on the
|
||||||
network since passwords may be transferred in plain text
|
network since passwords may be transferred in plain text
|
||||||
if \s-1CRAM\-MD5\s0 is not supported by your imap servers. Use
|
if \s-1CRAM\-MD5\s0 is not supported by your imap servers. Use
|
||||||
\&\-\-ssl1 (or \-\-tls1) and \-\-ssl2 (or \-\-tls2) to enable
|
\&\-\-ssl1 (or \-\-tls1) and \-\-ssl2 (or \-\-tls2) to enable
|
||||||
encryption on host1 and host2.
|
encryption on host1 and host2.
|
||||||
.PP
|
.PP
|
||||||
You may authenticate as one user (typically an admin user),
|
You may authenticate as one user (typically an admin user),
|
||||||
@ -566,8 +588,8 @@ Same behavior with the \-\-authuser2 option.
|
|||||||
Authenticate with an admin account must be supported by your
|
Authenticate with an admin account must be supported by your
|
||||||
imap server to work with imapsync.
|
imap server to work with imapsync.
|
||||||
.PP
|
.PP
|
||||||
When working on Sun/iPlanet/Netscape \s-1IMAP\s0 servers you must use
|
When working on Sun/iPlanet/Netscape \s-1IMAP\s0 servers you must use
|
||||||
\&\-\-proxyauth1 to enable administrative user to masquerade as another user.
|
\&\-\-proxyauth1 to enable administrative user to masquerade as another user.
|
||||||
Can also be used on destination server with \-\-proxyauth2
|
Can also be used on destination server with \-\-proxyauth2
|
||||||
.PP
|
.PP
|
||||||
You can authenticate with \s-1OAUTH\s0 when transfering from Google Apps.
|
You can authenticate with \s-1OAUTH\s0 when transfering from Google Apps.
|
||||||
@ -579,21 +601,30 @@ with Google Apps free edition.
|
|||||||
imapsync will exit with a 0 status (return code) if everything went good.
|
imapsync will exit with a 0 status (return code) if everything went good.
|
||||||
Otherwise, it exits with a non-zero status.
|
Otherwise, it exits with a non-zero status.
|
||||||
.PP
|
.PP
|
||||||
So if you have an unreliable internet connection, you can use this loop
|
So if you have an unreliable internet connection, you can use this loop
|
||||||
in a Bourne shell:
|
in a Bourne shell:
|
||||||
.PP
|
.PP
|
||||||
.Vb 3
|
.Vb 3
|
||||||
\& while ! imapsync ...; do
|
\& while ! imapsync ...; do
|
||||||
\& echo imapsync not complete
|
\& echo imapsync not complete
|
||||||
\& done
|
\& done
|
||||||
.Ve
|
.Ve
|
||||||
.SH "LICENSE"
|
.SH "LICENSE AND COPYRIGHT"
|
||||||
.IX Header "LICENSE"
|
.IX Header "LICENSE AND COPYRIGHT"
|
||||||
imapsync is free, open, public but not always gratis software
|
imapsync is free, open, public but not always gratis software
|
||||||
cover by the \s-1NOLIMIT\s0 Public License.
|
cover by the \s-1NOLIMIT\s0 Public License.
|
||||||
See the \s-1LICENSE\s0 file included in the distribution or just read this
|
See the \s-1LICENSE\s0 file included in the distribution or just read this
|
||||||
simple sentence as it is the licence text:
|
simple sentence as it is the licence text:
|
||||||
No limit to do anything with this work and this license.
|
.PP
|
||||||
|
.Vb 1
|
||||||
|
\& "No limit to do anything with this work and this license."
|
||||||
|
.Ve
|
||||||
|
.PP
|
||||||
|
In case it is not long enough I repeat:
|
||||||
|
.PP
|
||||||
|
.Vb 1
|
||||||
|
\& "No limit to do anything with this work and this license."
|
||||||
|
.Ve
|
||||||
.SH "MAILING-LIST"
|
.SH "MAILING-LIST"
|
||||||
.IX Header "MAILING-LIST"
|
.IX Header "MAILING-LIST"
|
||||||
The public mailing-list may be the best way to get free support.
|
The public mailing-list may be the best way to get free support.
|
||||||
@ -628,16 +659,16 @@ Gilles \s-1LAMIRAL\s0 earns his living by writing, installing,
|
|||||||
configuring and teaching free, open and often gratis
|
configuring and teaching free, open and often gratis
|
||||||
softwares. It used to be \*(L"always gratis\*(R" but now it is
|
softwares. It used to be \*(L"always gratis\*(R" but now it is
|
||||||
\&\*(L"often\*(R" because imapsync is sold by its author, a good
|
\&\*(L"often\*(R" because imapsync is sold by its author, a good
|
||||||
way to stay maintening and supporting free open public
|
way to stay maintening and supporting free open public
|
||||||
softwares (see the license) over decades.
|
softwares (see the license) over decades.
|
||||||
.SH "BUG REPORT GUIDELINES"
|
.SH "BUGS AND LIMITATIONS"
|
||||||
.IX Header "BUG REPORT GUIDELINES"
|
.IX Header "BUGS AND LIMITATIONS"
|
||||||
Help me to help you: follow the following guidelines.
|
Help me to help you: follow the following guidelines.
|
||||||
.PP
|
.PP
|
||||||
Report any bugs or feature requests to the public mailing-list
|
Report any bugs or feature requests to the public mailing-list
|
||||||
or to the author.
|
or to the author.
|
||||||
.PP
|
.PP
|
||||||
Before reporting bugs, read the \s-1FAQ\s0, the \s-1README\s0 and the
|
Before reporting bugs, read the FAQs, the \s-1README\s0 and the
|
||||||
\&\s-1TODO\s0 files. http://imapsync.lamiral.info/
|
\&\s-1TODO\s0 files. http://imapsync.lamiral.info/
|
||||||
.PP
|
.PP
|
||||||
Upgrade to last imapsync release, maybe the bug
|
Upgrade to last imapsync release, maybe the bug
|
||||||
@ -647,7 +678,7 @@ Upgrade to last Mail-IMAPClient Perl module.
|
|||||||
http://search.cpan.org/dist/Mail\-IMAPClient/
|
http://search.cpan.org/dist/Mail\-IMAPClient/
|
||||||
maybe the bug is already fixed there.
|
maybe the bug is already fixed there.
|
||||||
.PP
|
.PP
|
||||||
Make a good title with word \*(L"imapsync\*(R" in it (my spam filters won't filter it),
|
Make a good title with word \*(L"imapsync\*(R" in it (my spam filters won't filter it),
|
||||||
Try to write an email title with more words than just \*(L"imapsync\*(R" or \*(L"problem\*(R",
|
Try to write an email title with more words than just \*(L"imapsync\*(R" or \*(L"problem\*(R",
|
||||||
a good title is made of keywords summary, but not too long (one visible line).
|
a good title is made of keywords summary, but not too long (one visible line).
|
||||||
.PP
|
.PP
|
||||||
@ -657,23 +688,23 @@ Help us to help you: in your report, please include:
|
|||||||
\& \- imapsync version.
|
\& \- imapsync version.
|
||||||
\&
|
\&
|
||||||
\& \- output near the first failures, a few lines before is good to get the context
|
\& \- output near the first failures, a few lines before is good to get the context
|
||||||
\& of the issue. First failures messages are often more significant than
|
\& of the issue. First failures messages are often more significant than
|
||||||
\& the last ones.
|
\& the last ones.
|
||||||
\&
|
|
||||||
\& \- if the issue is always related to the same messages, include the output
|
|
||||||
\& with \-\-debug \-\-debugimap, near the failure point. For example,
|
|
||||||
\& Isolate a buggy message or two in a folder \*(AqBUG\*(Aq and use
|
|
||||||
\&
|
\&
|
||||||
\& imapsync ... \-\-folder \*(AqBUG\*(Aq \-\-debug \-\-debugimap
|
\& \- if the issue is always related to the same messages, include the output
|
||||||
|
\& with \-\-debug \-\-debugimap, near the failure point. For example,
|
||||||
|
\& Isolate a buggy message or two in a folder \*(AqBUG\*(Aq and use
|
||||||
|
\&
|
||||||
|
\& imapsync ... \-\-folder \*(AqBUG\*(Aq \-\-debug \-\-debugimap
|
||||||
\&
|
\&
|
||||||
\& \- imap server softwares on both sides and their version number.
|
\& \- imap server softwares on both sides and their version number.
|
||||||
\&
|
\&
|
||||||
\& \- imapsync with all the options you use, the full command line
|
\& \- imapsync with all the options you use, the full command line
|
||||||
\& you use (except the passwords of course).
|
\& you use (except the passwords of course).
|
||||||
\&
|
\&
|
||||||
\& \- IMAPClient.pm version.
|
\& \- IMAPClient.pm version.
|
||||||
\&
|
\&
|
||||||
\& \- the run context. Do you run imapsync.exe, a unix binary
|
\& \- the run context. Do you run imapsync.exe, a unix binary
|
||||||
\& or the perl script imapsync.
|
\& or the perl script imapsync.
|
||||||
\&
|
\&
|
||||||
\& \- operating system running imapsync.
|
\& \- operating system running imapsync.
|
||||||
@ -687,7 +718,7 @@ Help us to help you: in your report, please include:
|
|||||||
Most of those values can be found as a copy/paste at the begining of the output,
|
Most of those values can be found as a copy/paste at the begining of the output,
|
||||||
so a carbon copy of the output is a very easy and very good debug report for me.
|
so a carbon copy of the output is a very easy and very good debug report for me.
|
||||||
.PP
|
.PP
|
||||||
One time in your life, read the paper
|
One time in your life, read the paper
|
||||||
\&\*(L"How To Ask Questions The Smart Way\*(R"
|
\&\*(L"How To Ask Questions The Smart Way\*(R"
|
||||||
http://www.catb.org/~esr/faqs/smart\-questions.html
|
http://www.catb.org/~esr/faqs/smart\-questions.html
|
||||||
and then forget it.
|
and then forget it.
|
||||||
@ -696,7 +727,7 @@ and then forget it.
|
|||||||
See http://imapsync.lamiral.info/S/imapservers.shtml
|
See http://imapsync.lamiral.info/S/imapservers.shtml
|
||||||
.SH "HUGE MIGRATION"
|
.SH "HUGE MIGRATION"
|
||||||
.IX Header "HUGE MIGRATION"
|
.IX Header "HUGE MIGRATION"
|
||||||
Pay special attention to options
|
Pay special attention to options
|
||||||
\&\-\-subscribed
|
\&\-\-subscribed
|
||||||
\&\-\-subscribe
|
\&\-\-subscribe
|
||||||
\&\-\-delete
|
\&\-\-delete
|
||||||
@ -725,7 +756,7 @@ user005_1;password005_1;user005_2;password005_2
|
|||||||
On Unix the shell program can be:
|
On Unix the shell program can be:
|
||||||
.PP
|
.PP
|
||||||
.Vb 4
|
.Vb 4
|
||||||
\& { while IFS=\*(Aq;\*(Aq read u1 p1 u2 p2; do
|
\& { while IFS=\*(Aq;\*(Aq read u1 p1 u2 p2; do
|
||||||
\& imapsync \-\-host1 imap.side1.org \-\-user1 "$u1" \-\-password1 "$p1" \e
|
\& imapsync \-\-host1 imap.side1.org \-\-user1 "$u1" \-\-password1 "$p1" \e
|
||||||
\& \-\-host2 imap.side2.org \-\-user2 "$u2" \-\-password2 "$p2" ...
|
\& \-\-host2 imap.side2.org \-\-user2 "$u2" \-\-password2 "$p2" ...
|
||||||
\& done ; } < file.txt
|
\& done ; } < file.txt
|
||||||
@ -742,13 +773,13 @@ On Windows the batch program can be:
|
|||||||
The ... have to be replaced by nothing or any imapsync option.
|
The ... have to be replaced by nothing or any imapsync option.
|
||||||
Welcome in shell programming !
|
Welcome in shell programming !
|
||||||
.PP
|
.PP
|
||||||
You will find already written scripts at
|
You will find already written scripts at
|
||||||
http://imapsync.lamiral.info/examples/
|
http://imapsync.lamiral.info/examples/
|
||||||
.SH "Hacking"
|
.SH "HACKING"
|
||||||
.IX Header "Hacking"
|
.IX Header "HACKING"
|
||||||
Feel free to hack imapsync as the \s-1NOLIMIT\s0 license permits it.
|
Feel free to hack imapsync as the \s-1NOLIMIT\s0 license permits it.
|
||||||
.SH "Links"
|
.SH "LINKS"
|
||||||
.IX Header "Links"
|
.IX Header "LINKS"
|
||||||
Entries for imapsync:
|
Entries for imapsync:
|
||||||
https://web.archive.org/web/20070202005121/http://www.imap.org/products/showall.php
|
https://web.archive.org/web/20070202005121/http://www.imap.org/products/showall.php
|
||||||
.SH "SIMILAR SOFTWARES"
|
.SH "SIMILAR SOFTWARES"
|
||||||
@ -773,4 +804,4 @@ https://web.archive.org/web/20070202005121/http://www.imap.org/products/showall.
|
|||||||
.PP
|
.PP
|
||||||
Feedback (good or bad) will often be welcome.
|
Feedback (good or bad) will often be welcome.
|
||||||
.PP
|
.PP
|
||||||
\&\f(CW$Id:\fR imapsync,v 1.684 2016/03/17 08:35:03 gilles Exp gilles $
|
\&\f(CW$Id:\fR imapsync,v 1.727 2016/08/19 10:30:36 gilles Exp gilles $
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
|
|
||||||
@REM $Id: install_module_one.bat,v 1.1 2015/11/23 16:49:17 gilles Exp gilles $
|
@REM $Id: install_module_one.bat,v 1.4 2016/07/20 21:44:40 gilles Exp gilles $
|
||||||
|
|
||||||
@ECHO OFF
|
@ECHO OFF
|
||||||
SET SHELL=
|
SET SHELL=
|
||||||
SET
|
SET
|
||||||
REM EXIT
|
REM EXIT
|
||||||
|
|
||||||
ECHO Installing Perl module IO::Socket::SSL for imapsync
|
|
||||||
REM CD /D %~dp0
|
REM CD /D %~dp0
|
||||||
|
|
||||||
perl -v
|
perl -v
|
||||||
@ -16,9 +15,9 @@ IF ERRORLEVEL 1 ECHO Perl needed. Install Strawberry Perl. Get it at http://stra
|
|||||||
@ECHO perl is here
|
@ECHO perl is here
|
||||||
|
|
||||||
FOR %%M in (
|
FOR %%M in (
|
||||||
IO::Socket::SSL ^
|
IO::Socket::SSL Net::SSLeay PAR::Packer^
|
||||||
) DO perl -m%%M -e "print qq{Updating %%M $%%M::VERSION \n}" ^
|
) DO perl -m%%M -e "print qq{Updating %%M $%%M::VERSION \n}" ^
|
||||||
& cpanm %%M
|
& cpanm --force %%M
|
||||||
|
|
||||||
REM IO::Socket::SSL
|
REM IO::Socket::SSL
|
||||||
|
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
|
REM $Id: install_modules.bat,v 1.27 2016/08/17 02:03:46 gilles Exp gilles $
|
||||||
|
|
||||||
REM $Id: install_modules.bat,v 1.22 2015/12/26 02:10:15 gilles Exp gilles $
|
::------------------------------------------------------
|
||||||
|
::--------------- Main of install_modules.bat ----------
|
||||||
|
@SETLOCAL
|
||||||
@ECHO OFF
|
@ECHO OFF
|
||||||
|
ECHO Currently running through %0 %*
|
||||||
|
|
||||||
@REM Needed with remote ssh
|
@REM Needed with remote ssh
|
||||||
SET SHELL=
|
SET SHELL=
|
||||||
SET
|
SET
|
||||||
@ -9,13 +13,34 @@ ECHO Installing Perl modules for imapsync
|
|||||||
|
|
||||||
CD /D %~dp0
|
CD /D %~dp0
|
||||||
|
|
||||||
|
CALL :handle_error CALL :detect_perl
|
||||||
|
CALL :handle_error CALL :update_modules
|
||||||
|
|
||||||
|
@ENDLOCAL
|
||||||
|
EXIT /B
|
||||||
|
::------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
::------------------------------------------------------
|
||||||
|
::--------------- Detect Perl --------------------------
|
||||||
|
:detect_perl
|
||||||
|
@SETLOCAL
|
||||||
perl -v
|
perl -v
|
||||||
IF ERRORLEVEL 1 ECHO Perl needed. Install Strawberry Perl. Get it at http://strawberryperl.com/ ^
|
IF ERRORLEVEL 1 ECHO Perl needed. Install Strawberry Perl. Get it at http://strawberryperl.com/ ^
|
||||||
&& PAUSE && EXIT /B 3
|
&& PAUSE && EXIT 3
|
||||||
|
|
||||||
ECHO perl is there
|
ECHO perl is there
|
||||||
|
@ENDLOCAL
|
||||||
|
EXIT /B
|
||||||
|
::------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
::------------------------------------------------------
|
||||||
|
::---------------- Update modules ----------------------
|
||||||
|
:update_modules
|
||||||
|
@SETLOCAL
|
||||||
FOR %%M in ( ^
|
FOR %%M in ( ^
|
||||||
|
Test::MockObject ^
|
||||||
|
Readonly ^
|
||||||
Filesys::DfPortable ^
|
Filesys::DfPortable ^
|
||||||
Authen::NTLM ^
|
Authen::NTLM ^
|
||||||
Crypt::SSLeay ^
|
Crypt::SSLeay ^
|
||||||
@ -49,5 +74,27 @@ FOR %%M in ( ^
|
|||||||
|
|
||||||
ECHO Perl modules for imapsync updated
|
ECHO Perl modules for imapsync updated
|
||||||
REM PAUSE
|
REM PAUSE
|
||||||
|
@ENDLOCAL
|
||||||
|
EXIT /B
|
||||||
|
::------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
::------------------------------------------------------
|
||||||
|
::----------- Handle errors in LOG_bat\ directory ------
|
||||||
|
:handle_error
|
||||||
|
SETLOCAL
|
||||||
|
ECHO IN %0 with parameters %*
|
||||||
|
%*
|
||||||
|
SET CMD_RETURN=%ERRORLEVEL%
|
||||||
|
|
||||||
|
IF %CMD_RETURN% EQU 0 (
|
||||||
|
ECHO GOOD END
|
||||||
|
) ELSE (
|
||||||
|
ECHO BAD END
|
||||||
|
IF NOT EXIST LOG_bat MKDIR LOG_bat
|
||||||
|
ECHO Failure calling with extra %* >> LOG_bat\%~nx0.txt
|
||||||
|
)
|
||||||
|
ENDLOCAL
|
||||||
|
EXIT /B
|
||||||
|
::------------------------------------------------------
|
||||||
|
|
||||||
|
11
W/learn/automap_languages
Normal file
11
W/learn/automap_languages
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
From
|
||||||
|
http://stackoverflow.com/questions/2185391/localized-gmail-imap-folders/2185548#2185548
|
||||||
|
|
||||||
|
drafts Borradores, Borradores, Bozze, Brouillons, Concepten, Entwürfe, Kladder, Koncepty, Kopie robocze, Rascunhos, Rascunhos, Taslaklar, Utkast, Utkast, Πρόχειρα, Черновики, 下書き, 草稿, 草稿, 임시보관함
|
||||||
|
inbox Bandeja de entrada, Boîte de réception, Caixa de entrada, Caixa de entrada, Doručená pošta, Gelen Kutusu, Indbakke, Inkorgen, Innboks, Odebrane, Posta in arrivo, Posteingang, Postvak IN, Recibidos, Εισερχόμενα, Входящие, 受信トレイ, 收件匣, 收件箱, 받은편지함
|
||||||
|
junk Correio electrónico não solicitado, Correo basura, Junk, Junk, Lixo, Nettsøppel, Nevyžádaná pošta, No solicitado, Ongewenst, Posta indesiderata, Skräp, Spam, Wiadomości-śmieci, Önemsiz, Ανεπιθύμητα, Спам, 垃圾邮件, 垃圾郵件, 迷惑メール, 스팸
|
||||||
|
outbox Bandeja de salida, Boîte d'envoi, Caixa de saída, Caixa de saída, Do wysłania, Enviados, Giden Kutusu, Posta in uscita, Postausgang, Postvak UIT, Pošta k odeslání, Udbakke, Utboks, Utkorgen, Εξερχόμενα, Исходящие, 发件箱, 寄件匣, 送信トレイ, 보낼편지함
|
||||||
|
sent E-mails enviados, Enviada, Enviado, Enviado, Gesendet, Gönderildi, Inviati, Odeslaná pošta, Sendt, Sendt, Skickat, Verzonden, Wysłane, Éléments envoyés, Απεσταλμένα, Отправленные, 寄件備份, 已发送邮件, 送信済み, 보낸편지함
|
||||||
|
trash Cestino, Corbeille, Kosz, Koš, Lixeira, Lixo, Papelera, Papelera, Papierkorb, Papirkurv, Papirkurv, Papperskorgen, Prullenbak, Çöp Kutusu, Κάδος απορριμμάτων, Корзина, ゴミ箱, 垃圾桶, 已删除邮件, 휴지통
|
||||||
|
|
29
W/learn/create_folder
Executable file
29
W/learn/create_folder
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
use Mail::IMAPClient;
|
||||||
|
|
||||||
|
$ARGV[2] or die "usage: $0 host user password folder1 folder2 ...\n";
|
||||||
|
|
||||||
|
$host = $ARGV[0];
|
||||||
|
$user = $ARGV[1];
|
||||||
|
$password = $ARGV[2];
|
||||||
|
|
||||||
|
my $imap = Mail::IMAPClient->new();
|
||||||
|
$imap->Debug(1);
|
||||||
|
$imap->Server($host);
|
||||||
|
$imap->connect() or die;
|
||||||
|
$imap->User($user);
|
||||||
|
$imap->Password($password);
|
||||||
|
$imap->login() or die;
|
||||||
|
$imap->Uid(1);
|
||||||
|
$imap->Peek(1);
|
||||||
|
|
||||||
|
foreach $folder (@ARGV[3..$#ARGV]) {
|
||||||
|
print "creating folder $folder\n";
|
||||||
|
$imap->create($folder);
|
||||||
|
}
|
||||||
|
|
||||||
|
$imap->logout();
|
||||||
|
# $imap->close();
|
||||||
|
|
||||||
|
|
36
W/learn/delete_all_folders
Executable file
36
W/learn/delete_all_folders
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
# $Id: delete_folder,v 1.1 2016/07/05 20:59:43 gilles Exp gilles $
|
||||||
|
|
||||||
|
use Mail::IMAPClient;
|
||||||
|
|
||||||
|
$ARGV[2] or die "usage: $0 host user password folder1 folder2 ...\n";
|
||||||
|
|
||||||
|
$host = $ARGV[0];
|
||||||
|
$user = $ARGV[1];
|
||||||
|
$password = $ARGV[2];
|
||||||
|
|
||||||
|
my $imap = Mail::IMAPClient->new();
|
||||||
|
$imap->Debug(1);
|
||||||
|
$imap->Server($host);
|
||||||
|
$imap->Ssl( 1 ) ;
|
||||||
|
$imap->connect() or die;
|
||||||
|
$imap->User($user);
|
||||||
|
$imap->Password($password);
|
||||||
|
$imap->login() or die;
|
||||||
|
$imap->Uid(1);
|
||||||
|
$imap->Peek(1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
my @folders = $imap->folders( ) ;
|
||||||
|
print map { "$_\n" } @folders ;
|
||||||
|
foreach $folder ( @folders) {
|
||||||
|
print "deleting folder $folder\n";
|
||||||
|
$imap->delete( $folder ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
$imap->logout();
|
||||||
|
# $imap->close();
|
||||||
|
|
||||||
|
|
36
W/learn/delete_folder
Executable file
36
W/learn/delete_folder
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
# $Id: delete_folder,v 1.1 2016/07/05 20:59:43 gilles Exp gilles $
|
||||||
|
|
||||||
|
use Mail::IMAPClient;
|
||||||
|
|
||||||
|
$ARGV[2] or die "usage: $0 host user password folder1 folder2 ...\n";
|
||||||
|
|
||||||
|
$host = $ARGV[0];
|
||||||
|
$user = $ARGV[1];
|
||||||
|
$password = $ARGV[2];
|
||||||
|
|
||||||
|
my $imap = Mail::IMAPClient->new();
|
||||||
|
$imap->Debug(1);
|
||||||
|
$imap->Server($host);
|
||||||
|
$imap->Ssl( 1 ) ;
|
||||||
|
$imap->connect() or die;
|
||||||
|
$imap->User($user);
|
||||||
|
$imap->Password($password);
|
||||||
|
$imap->login() or die;
|
||||||
|
$imap->Uid(1);
|
||||||
|
$imap->Peek(1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
my @folders = $imap->folders( ) ;
|
||||||
|
print map { "$_\n" } @folders ;
|
||||||
|
foreach $folder (@ARGV[3..$#ARGV]) {
|
||||||
|
print "deleting folder $folder\n";
|
||||||
|
$imap->delete( $folder ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
$imap->logout();
|
||||||
|
# $imap->close();
|
||||||
|
|
||||||
|
|
205
W/learn/dns_srv_imap
Executable file
205
W/learn/dns_srv_imap
Executable file
@ -0,0 +1,205 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# $Id: dns_srv_imap,v 1.5 2016/08/15 01:24:20 gilles Exp gilles $
|
||||||
|
|
||||||
|
use strict ;
|
||||||
|
use warnings ;
|
||||||
|
use English ;
|
||||||
|
use Test::More ;
|
||||||
|
use Net::DNS ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
foreach my $email ( @ARGV ) {
|
||||||
|
my $domain = domain_name_of( $email ) ;
|
||||||
|
print "Domain for email $email: $domain\n" ;
|
||||||
|
my ( $host, $port ) = host_port_from_lookup_srv( '_imaps._tcp.' . $domain ) ;
|
||||||
|
$host ||= q{} ;
|
||||||
|
$port ||= q{} ;
|
||||||
|
print "IMAPS server name and port for $email: $host $port\n" ;
|
||||||
|
|
||||||
|
( $host, $port ) = host_port_from_lookup_srv( '_imap._tcp.' . $domain ) ;
|
||||||
|
$host ||= q{} ;
|
||||||
|
$port ||= q{} ;
|
||||||
|
print "IMAP server name and port for $email: $host $port\n" ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
tests_server_name_from_srv_string( ) ;
|
||||||
|
tests_server_port_from_srv_string( ) ;
|
||||||
|
tests_domain_name_of( ) ;
|
||||||
|
tests_host_port_ssl_from_user( ) ;
|
||||||
|
done_testing( ) ;
|
||||||
|
|
||||||
|
my $debug = 1 ;
|
||||||
|
|
||||||
|
|
||||||
|
sub host_port_ssl_from_user {
|
||||||
|
my $user = shift @ARG ;
|
||||||
|
|
||||||
|
if ( ! $user ) {
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $domain = domain_name_of( $user ) ;
|
||||||
|
if ( ! $domain ) {
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
my ( $host, $port ) = host_port_from_lookup_srv( qq{_imaps._tcp.$domain} ) ;
|
||||||
|
my $ssl = 1 ;
|
||||||
|
if ( $host and $port ) {
|
||||||
|
return ( $host, $port, $ssl ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
# fallback to imap in clear
|
||||||
|
$ssl = 0 ;
|
||||||
|
( $host, $port ) = host_port_from_lookup_srv( qq{_imap._tcp.$domain} ) ;
|
||||||
|
|
||||||
|
if ( $host and $port ) {
|
||||||
|
return ( $host, $port, $ssl ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tests_host_port_ssl_from_user {
|
||||||
|
is( undef, host_port_ssl_from_user( ), 'host_port_ssl_from_user: no args => undef' ) ;
|
||||||
|
is_deeply( [qw( imap.gmail.com. 993 1 )], [host_port_ssl_from_user( 'gilles.lamiral@gmail.com' )],
|
||||||
|
'host_port_ssl_from_user: gilles.lamiral@gmail.com => imap.gmail.com. 993 1 (ssl)' ) ;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub host_port_from_lookup_srv {
|
||||||
|
my $request = shift @ARG ;
|
||||||
|
|
||||||
|
my $lookup = lookup_srv_string( $request ) ;
|
||||||
|
if ( ! $lookup ) {
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $host = server_name_from_srv_string( $lookup ) ;
|
||||||
|
my $port = server_port_from_srv_string( $lookup ) ;
|
||||||
|
|
||||||
|
if( $host and $port ) {
|
||||||
|
return ( $host, $port ) ;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub domain_name_of_email {
|
||||||
|
my $email = shift ;
|
||||||
|
|
||||||
|
return( undef ) if ( not $email ) ;
|
||||||
|
|
||||||
|
my $domain ;
|
||||||
|
|
||||||
|
if ( $email =~ /^.*@([^@]+)$/ ) {
|
||||||
|
$domain = $1 ;
|
||||||
|
$debug and print "domain: $domain\n" ;
|
||||||
|
return( $domain ) ;
|
||||||
|
}
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub domain_name_of {
|
||||||
|
my $email = shift ;
|
||||||
|
|
||||||
|
return( undef ) if ( not $email ) ;
|
||||||
|
|
||||||
|
my $domain = domain_name_of_email( $email ) ;
|
||||||
|
|
||||||
|
if ( ! $domain ) {
|
||||||
|
$domain = $email ;
|
||||||
|
}
|
||||||
|
|
||||||
|
return( $domain ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tests_domain_name_of {
|
||||||
|
ok( not( domain_name_of( '' ) ), 'domain_name_of: void => undef' ) ;
|
||||||
|
ok( not( domain_name_of( ) ), 'domain_name_of: undef => undef' ) ;
|
||||||
|
ok( 'foo' eq domain_name_of( 'foo' ), 'domain_name_of: foo => foo' ) ;
|
||||||
|
#ok( 'foo' eq domain_name_of( 'foo ' ), 'domain_name_of: foo => foo' ) ;
|
||||||
|
#ok( 'foo' eq domain_name_of( 'foo ' ), 'domain_name_of: foo => foo' ) ;
|
||||||
|
ok( 'example.com' eq domain_name_of( 'foo@example.com' ), 'domain_name_of: foo@example.com => example.com' ) ;
|
||||||
|
ok( 'example.com' eq domain_name_of( '@foo@example.com' ), 'domain_name_of: @foo@example.com => example.com' ) ;
|
||||||
|
ok( 'example.com' eq domain_name_of( 'bar@foo@example.com' ), 'domain_name_of: bar@foo@example.com => example.com' ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub lookup_srv_string {
|
||||||
|
my $name = shift ;
|
||||||
|
|
||||||
|
my $resolver = new Net::DNS::Resolver( ) ;
|
||||||
|
my $reply = $resolver->query( $name, 'SRV' ) ;
|
||||||
|
|
||||||
|
my $string ;
|
||||||
|
if ( $reply ) {
|
||||||
|
#($reply->answer)[0]->print;
|
||||||
|
foreach my $rr ( $reply->answer ) {
|
||||||
|
$debug and print 'name: ' . $rr->name . "\n" ;
|
||||||
|
$debug and print 'class: ' . $rr->class . "\n" ;
|
||||||
|
$debug and print 'type: ' . $rr->type . "\n" ;
|
||||||
|
$debug and print 'ttl: ' . $rr->ttl . "\n" ;
|
||||||
|
$debug and print 'string: ' . $rr->string . "\n" ;
|
||||||
|
next if ( 'SRV' ne $rr->type ) ;
|
||||||
|
next if ( not( $rr->string ) ) ;
|
||||||
|
$string = $rr->string ;
|
||||||
|
return( $string ) ;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print "Query failed SRV for domain $name: ", $resolver->errorstring, "\n" ;
|
||||||
|
return( undef ) ;
|
||||||
|
}
|
||||||
|
return( $string ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
sub server_name_from_srv_string {
|
||||||
|
my $srv_string = shift ;
|
||||||
|
|
||||||
|
return( undef ) if ( not $srv_string ) ;
|
||||||
|
my $server_name = (split( /\s+/ , $srv_string ) )[7] ;
|
||||||
|
return( undef ) if ( '.' eq $server_name ) ;
|
||||||
|
return( $server_name ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tests_server_name_from_srv_string {
|
||||||
|
ok( not( server_name_from_srv_string( '' ) ), 'server_name_from_srv_string: void' ) ;
|
||||||
|
ok( not( server_name_from_srv_string( ) ), 'server_name_from_srv_string: undef' ) ;
|
||||||
|
ok( 'imap.gmail.com.' eq
|
||||||
|
server_name_from_srv_string( '_imaps._tcp.gmail.com. 82466 IN SRV 5 0 993 imap.gmail.com.' ),
|
||||||
|
'server_name_from_srv_string: _imaps._tcp.gmail.com. => imap.gmail.com.' ) ;
|
||||||
|
ok( not( server_name_from_srv_string( '_imap._tcp.gmail.com. 81999 IN SRV 0 0 0 .' ) ),
|
||||||
|
'server_name_from_srv_string: _imap._tcp.gmail.com. => undef' ) ;
|
||||||
|
|
||||||
|
return( ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub server_port_from_srv_string {
|
||||||
|
my $srv_string = shift ;
|
||||||
|
|
||||||
|
return( undef ) if ( not $srv_string ) ;
|
||||||
|
my $server_port = (split( /\s+/ , $srv_string ) )[6] ;
|
||||||
|
return( undef ) if ( 0 == $server_port ) ;
|
||||||
|
return( $server_port ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tests_server_port_from_srv_string {
|
||||||
|
ok( not( server_port_from_srv_string( '' ) ), 'server_port_from_srv_string: void' ) ;
|
||||||
|
ok( not( server_port_from_srv_string( ) ), 'server_port_from_srv_string: undef' ) ;
|
||||||
|
ok( '993' eq
|
||||||
|
server_port_from_srv_string( '_imaps._tcp.gmail.com. 82466 IN SRV 5 0 993 imap.gmail.com.' ),
|
||||||
|
'server_port_from_srv_string: _imaps._tcp.gmail.com. => 993' ) ;
|
||||||
|
ok( not( server_port_from_srv_string( '_imap._tcp.gmail.com. 81999 IN SRV 0 0 0 .' ) ),
|
||||||
|
'server_port_from_srv_string: _imap._tcp.gmail.com. => undef' ) ;
|
||||||
|
|
||||||
|
return( ) ;
|
||||||
|
}
|
249
W/learn/dns_srv_imap.tdy
Executable file
249
W/learn/dns_srv_imap.tdy
Executable file
@ -0,0 +1,249 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# $Id: dns_srv_imap,v 1.5 2016/08/15 01:24:20 gilles Exp gilles $
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use English;
|
||||||
|
use Test::More;
|
||||||
|
use Net::DNS;
|
||||||
|
|
||||||
|
# _imaps._tcp.gmail.com. 86183 IN SRV 5 0 993 imap.gmail.com.
|
||||||
|
lookup_srv_string('_imaps._tcp.gmail.com');
|
||||||
|
|
||||||
|
#lookup_srv( '_imap._tcp.gmail.com' ) ;
|
||||||
|
#lookup_srv( '_imaps._tcp.lamiral.info' ) ;
|
||||||
|
#lookup_srv( '_imap._tcp.lamiral.info' ) ;
|
||||||
|
|
||||||
|
foreach my $email (@ARGV) {
|
||||||
|
my $domain = domain_name_of($email);
|
||||||
|
print "Domain for email $email: $domain\n";
|
||||||
|
my ( $host, $port ) = host_port_from_lookup_srv( '_imaps._tcp.' . $domain );
|
||||||
|
$host ||= q{};
|
||||||
|
$port ||= q{};
|
||||||
|
print "IMAPS server name and port for $email: $host $port\n";
|
||||||
|
|
||||||
|
( $host, $port ) = host_port_from_lookup_srv( '_imap._tcp.' . $domain );
|
||||||
|
$host ||= q{};
|
||||||
|
$port ||= q{};
|
||||||
|
print "IMAP server name and port for $email: $host $port\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
tests_server_name_from_srv_string();
|
||||||
|
tests_server_port_from_srv_string();
|
||||||
|
tests_domain_name_of();
|
||||||
|
tests_host_port_ssl_from_user();
|
||||||
|
done_testing();
|
||||||
|
|
||||||
|
my $debug = 1;
|
||||||
|
|
||||||
|
sub host_port_ssl_from_user {
|
||||||
|
my $user = shift @ARG;
|
||||||
|
|
||||||
|
if ( !$user ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $domain = domain_name_of($user);
|
||||||
|
if ( !$domain ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
my ( $host, $port ) = host_port_from_lookup_srv(qq{_imaps._tcp.$domain});
|
||||||
|
my $ssl = 1;
|
||||||
|
if ( $host and $port ) {
|
||||||
|
return ( $host, $port, $ssl );
|
||||||
|
}
|
||||||
|
|
||||||
|
# fallback to imap in clear
|
||||||
|
$ssl = 0;
|
||||||
|
( $host, $port ) = host_port_from_lookup_srv(qq{_imap._tcp.$domain});
|
||||||
|
|
||||||
|
if ( $host and $port ) {
|
||||||
|
return ( $host, $port, $ssl );
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tests_host_port_ssl_from_user {
|
||||||
|
is( undef, host_port_ssl_from_user(),
|
||||||
|
'host_port_ssl_from_user: no args => undef' );
|
||||||
|
is_deeply(
|
||||||
|
[qw( imap.gmail.com. 993 1 )],
|
||||||
|
[ host_port_ssl_from_user('gilles.lamiral@gmail.com') ],
|
||||||
|
'host_port_ssl_from_user: gilles.lamiral@gmail.com => imap.gmail.com. 993 1 (ssl)'
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub host_port_from_lookup_srv {
|
||||||
|
my $request = shift @ARG;
|
||||||
|
|
||||||
|
my $lookup = lookup_srv_string($request);
|
||||||
|
if ( !$lookup ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $host = server_name_from_srv_string($lookup);
|
||||||
|
my $port = server_port_from_srv_string($lookup);
|
||||||
|
|
||||||
|
if ( $host and $port ) {
|
||||||
|
return ( $host, $port );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub domain_name_of_email {
|
||||||
|
my $email = shift;
|
||||||
|
|
||||||
|
return (undef) if ( not $email );
|
||||||
|
|
||||||
|
my $domain;
|
||||||
|
|
||||||
|
if ( $email =~ /^.*@([^@]+)$/ ) {
|
||||||
|
$domain = $1;
|
||||||
|
$debug and print "domain: $domain\n";
|
||||||
|
return ($domain);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub domain_name_of {
|
||||||
|
my $email = shift;
|
||||||
|
|
||||||
|
return (undef) if ( not $email );
|
||||||
|
|
||||||
|
my $domain = domain_name_of_email($email);
|
||||||
|
|
||||||
|
if ( !$domain ) {
|
||||||
|
$domain = $email;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ($domain);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tests_domain_name_of {
|
||||||
|
ok( not( domain_name_of('') ), 'domain_name_of: void => undef' );
|
||||||
|
ok( not( domain_name_of() ), 'domain_name_of: undef => undef' );
|
||||||
|
ok( 'foo' eq domain_name_of('foo'), 'domain_name_of: foo => foo' );
|
||||||
|
|
||||||
|
#ok( 'foo' eq domain_name_of( 'foo ' ), 'domain_name_of: foo => foo' ) ;
|
||||||
|
#ok( 'foo' eq domain_name_of( 'foo ' ), 'domain_name_of: foo => foo' ) ;
|
||||||
|
ok(
|
||||||
|
'example.com' eq domain_name_of('foo@example.com'),
|
||||||
|
'domain_name_of: foo@example.com => example.com'
|
||||||
|
);
|
||||||
|
ok(
|
||||||
|
'example.com' eq domain_name_of('@foo@example.com'),
|
||||||
|
'domain_name_of: @foo@example.com => example.com'
|
||||||
|
);
|
||||||
|
ok(
|
||||||
|
'example.com' eq domain_name_of('bar@foo@example.com'),
|
||||||
|
'domain_name_of: bar@foo@example.com => example.com'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub lookup_srv_string {
|
||||||
|
my $name = shift;
|
||||||
|
|
||||||
|
my $resolver = new Net::DNS::Resolver();
|
||||||
|
my $reply = $resolver->query( $name, 'SRV' );
|
||||||
|
|
||||||
|
my $string;
|
||||||
|
if ($reply) {
|
||||||
|
|
||||||
|
#($reply->answer)[0]->print;
|
||||||
|
foreach my $rr ( $reply->answer ) {
|
||||||
|
$debug and print 'name: ' . $rr->name . "\n";
|
||||||
|
$debug and print 'class: ' . $rr->class . "\n";
|
||||||
|
$debug and print 'type: ' . $rr->type . "\n";
|
||||||
|
$debug and print 'ttl: ' . $rr->ttl . "\n";
|
||||||
|
$debug and print 'string: ' . $rr->string . "\n";
|
||||||
|
next if ( 'SRV' ne $rr->type );
|
||||||
|
next if ( not( $rr->string ) );
|
||||||
|
$string = $rr->string;
|
||||||
|
return ($string);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "Query failed SRV for domain $name: ", $resolver->errorstring,
|
||||||
|
"\n";
|
||||||
|
return (undef);
|
||||||
|
}
|
||||||
|
return ($string);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub server_name_from_srv_string {
|
||||||
|
my $srv_string = shift;
|
||||||
|
|
||||||
|
return (undef) if ( not $srv_string );
|
||||||
|
my $server_name = ( split( /\s+/, $srv_string ) )[7];
|
||||||
|
return (undef) if ( '.' eq $server_name );
|
||||||
|
return ($server_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tests_server_name_from_srv_string {
|
||||||
|
ok(
|
||||||
|
not( server_name_from_srv_string('') ),
|
||||||
|
'server_name_from_srv_string: void'
|
||||||
|
);
|
||||||
|
ok(
|
||||||
|
not( server_name_from_srv_string() ),
|
||||||
|
'server_name_from_srv_string: undef'
|
||||||
|
);
|
||||||
|
ok(
|
||||||
|
'imap.gmail.com.' eq server_name_from_srv_string(
|
||||||
|
'_imaps._tcp.gmail.com. 82466 IN SRV 5 0 993 imap.gmail.com.'
|
||||||
|
),
|
||||||
|
'server_name_from_srv_string: _imaps._tcp.gmail.com. => imap.gmail.com.'
|
||||||
|
);
|
||||||
|
ok(
|
||||||
|
not(
|
||||||
|
server_name_from_srv_string(
|
||||||
|
'_imap._tcp.gmail.com. 81999 IN SRV 0 0 0 .')
|
||||||
|
),
|
||||||
|
'server_name_from_srv_string: _imap._tcp.gmail.com. => undef'
|
||||||
|
);
|
||||||
|
|
||||||
|
return ();
|
||||||
|
}
|
||||||
|
|
||||||
|
sub server_port_from_srv_string {
|
||||||
|
my $srv_string = shift;
|
||||||
|
|
||||||
|
return (undef) if ( not $srv_string );
|
||||||
|
my $server_port = ( split( /\s+/, $srv_string ) )[6];
|
||||||
|
return (undef) if ( 0 == $server_port );
|
||||||
|
return ($server_port);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub tests_server_port_from_srv_string {
|
||||||
|
ok(
|
||||||
|
not( server_port_from_srv_string('') ),
|
||||||
|
'server_port_from_srv_string: void'
|
||||||
|
);
|
||||||
|
ok(
|
||||||
|
not( server_port_from_srv_string() ),
|
||||||
|
'server_port_from_srv_string: undef'
|
||||||
|
);
|
||||||
|
ok(
|
||||||
|
'993' eq server_port_from_srv_string(
|
||||||
|
'_imaps._tcp.gmail.com. 82466 IN SRV 5 0 993 imap.gmail.com.'
|
||||||
|
),
|
||||||
|
'server_port_from_srv_string: _imaps._tcp.gmail.com. => 993'
|
||||||
|
);
|
||||||
|
ok(
|
||||||
|
not(
|
||||||
|
server_port_from_srv_string(
|
||||||
|
'_imap._tcp.gmail.com. 81999 IN SRV 0 0 0 .')
|
||||||
|
),
|
||||||
|
'server_port_from_srv_string: _imap._tcp.gmail.com. => undef'
|
||||||
|
);
|
||||||
|
|
||||||
|
return ();
|
||||||
|
}
|
9
W/learn/imap_utf7_tests
Executable file
9
W/learn/imap_utf7_tests
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo 收件箱
|
||||||
|
|
||||||
|
touch './+ZyhnUA-'
|
||||||
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
perl -I../Mail-IMAPClient-2.2.9 "$@"
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
perl -I../Mail-IMAPClient-3.28/lib "$@"
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
use strict ;
|
|
||||||
use warnings ;
|
|
||||||
use Net::DNS;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lookup_srv( '_imaps._tcp.gmail.com' ) ;
|
|
||||||
lookup_srv( '_imap._tcp.gmail.com' ) ;
|
|
||||||
|
|
||||||
sub lookup_srv {
|
|
||||||
my $name = shift ;
|
|
||||||
|
|
||||||
my $resolver = new Net::DNS::Resolver( ) ;
|
|
||||||
my $reply = $resolver->query( $name, 'SRV' ) ;
|
|
||||||
|
|
||||||
if ( $reply ) {
|
|
||||||
#($reply->answer)[0]->print;
|
|
||||||
foreach my $rr ($reply->answer) {
|
|
||||||
print $rr->name . "\n" ;
|
|
||||||
print $rr->class . "\n" ;
|
|
||||||
print $rr->type . "\n" ;
|
|
||||||
print $rr->ttl . "\n" ;
|
|
||||||
print $rr->string . "\n" ;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print "query failed: ", $resolver->errorstring, "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub lookup_address {
|
|
||||||
# Perform a lookup, using the searchlist if appropriate.
|
|
||||||
my $resolver = new Net::DNS::Resolver( ) ;
|
|
||||||
my $reply = $resolver->search( 'example.com' );
|
|
||||||
if ($reply) {
|
|
||||||
foreach my $rr ($reply->answer) {
|
|
||||||
next unless $rr->type eq "A";
|
|
||||||
print $rr->address, "\n";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
warn "query failed: ", $resolver->errorstring, "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
16
W/learn/perlcritic_ProhibitInterpolationOfLiterals
Executable file
16
W/learn/perlcritic_ProhibitInterpolationOfLiterals
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# $Id: perlcritic_ProhibitInterpolationOfLiterals,v 1.3 2016/06/15 22:18:23 gilles Exp gilles $
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
our $VERSION = q$Revision: 1.3 $;
|
||||||
|
|
||||||
|
if ( "\1foo" eq '\1foo' ) {
|
||||||
|
print "equal\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "not equal\n";
|
||||||
|
}
|
||||||
|
|
16
W/learn/perlcritic_ProhibitInterpolationOfLiterals_2
Executable file
16
W/learn/perlcritic_ProhibitInterpolationOfLiterals_2
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# $Id: perlcritic_ProhibitInterpolationOfLiterals,v 1.3 2016/06/15 22:18:23 gilles Exp gilles $
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
our $VERSION = q$Revision: 1.3 $;
|
||||||
|
|
||||||
|
if ( "\afoo" eq '\afoo' ) {
|
||||||
|
print "equal\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "not equal\n";
|
||||||
|
}
|
||||||
|
|
27
W/learn/print
Executable file
27
W/learn/print
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# $Id: print,v 1.1 2016/06/16 19:10:04 gilles Exp gilles $
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use English;
|
||||||
|
|
||||||
|
our $VERSION = q$Revision: 1.1 $;
|
||||||
|
|
||||||
|
# myprint( STDOUT "Hello\n" ) ; # DO NOT WORK
|
||||||
|
|
||||||
|
open my $stdout, ">-" ;
|
||||||
|
#myprint( $stdout, "Hello from myprint & filehandle\n" ) ; # DO NOT WORK
|
||||||
|
close $stdout ;
|
||||||
|
|
||||||
|
myprint( "Hello\n" ) ; # WORKS
|
||||||
|
|
||||||
|
myprint( << 'EOF' ) ;
|
||||||
|
lalala
|
||||||
|
myprint inline
|
||||||
|
EOF
|
||||||
|
|
||||||
|
exit;
|
||||||
|
|
||||||
|
sub myprint { print @ARG ; }
|
||||||
|
|
24
W/learn/quotes
Executable file
24
W/learn/quotes
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict ;
|
||||||
|
use warnings ;
|
||||||
|
|
||||||
|
print "123456789\\" ."\n" ;
|
||||||
|
print '123456789\\' ."\n" ;
|
||||||
|
print "123456789\"" ."\n" ;
|
||||||
|
print '123456789\'' ."\n" ;
|
||||||
|
|
||||||
|
print "\\" ."\n" ;
|
||||||
|
print q{\\} ."\n" ;
|
||||||
|
|
||||||
|
print qq{ !"#$%&'()*+,-./0123456789:;<=>?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg\n} ;
|
||||||
|
|
||||||
|
print "\1auth=Bearer " . "\1\1" . "\n" ;
|
||||||
|
print '\1auth=Bearer ' . '\1\1' . "\n" ;
|
||||||
|
|
||||||
|
if ( "\1foo" eq '\1foo' ) {
|
||||||
|
print "equal\n" ;
|
||||||
|
}else{
|
||||||
|
print "not equal\n" ;
|
||||||
|
}
|
||||||
|
|
12
W/learn/ref
Executable file
12
W/learn/ref
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
|
||||||
|
my $debug = 'val_debug' ;
|
||||||
|
|
||||||
|
print "ref(\\\$debug)=" . ref(\$debug) . "\n" ;
|
||||||
|
print "ref(\$debug)=" . ref($debug) . "\n" ;
|
||||||
|
print "\n$debug=$debug\n" ;
|
0
W/learn/tmp/+ZyhnUA-
Normal file
0
W/learn/tmp/+ZyhnUA-
Normal file
0
W/learn/tmp/收件箱
Normal file
0
W/learn/tmp/收件箱
Normal file
21
W/learn/utf7_to_utf7imap
Executable file
21
W/learn/utf7_to_utf7imap
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# $Id: utf7_to_utf7imap,v 1.1 2016/08/08 22:57:44 gilles Exp gilles $
|
||||||
|
|
||||||
|
use strict ;
|
||||||
|
use warnings ;
|
||||||
|
|
||||||
|
foreach my $str_utf7 ( @ARGV ) {
|
||||||
|
my $str_utf7imap = utf7_to_uft7imap( $str_utf7 ) ;
|
||||||
|
print qq{mv '$str_utf7' '$str_utf7imap'\n} ;
|
||||||
|
}
|
||||||
|
|
||||||
|
# http://cpansearch.perl.org/src/FABPOT/Unicode-IMAPUtf7-2.01/lib/Unicode/IMAPUtf7.pm
|
||||||
|
sub utf7_to_uft7imap {
|
||||||
|
my ( $s ) = @_ ;
|
||||||
|
|
||||||
|
$s =~ s/\+([^\/&\-]*)\/([^\/\-&]*)\-/\+$1,$2\-/g ;
|
||||||
|
$s =~ s/&/&\-/g ;
|
||||||
|
$s =~ s/\+([^+\-]+)?\-/&$1\-/g ;
|
||||||
|
return( $s ) ;
|
||||||
|
}
|
39
W/learn_func.bat
Normal file
39
W/learn_func.bat
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
REM $Id: learn_func.bat,v 1.2 2016/06/28 11:39:42 gilles Exp gilles $
|
||||||
|
|
||||||
|
@SETLOCAL
|
||||||
|
@ECHO OFF
|
||||||
|
|
||||||
|
ECHO Currently running through %0 %*
|
||||||
|
|
||||||
|
CD /D %~dp0
|
||||||
|
|
||||||
|
REM Remove the error file because its existence means an error occured during this script execution
|
||||||
|
IF EXIST LOG_bat\%~nx0.txt DEL LOG_bat\%~nx0.txt
|
||||||
|
|
||||||
|
CALL :handle_error EXIT /B 1
|
||||||
|
CALL :handle_error EXIT /B 0
|
||||||
|
CALL :handle_error NOEXIST
|
||||||
|
CALL :handle_error ECHO "STILL THERE? FIRST"
|
||||||
|
CALL :handle_error EXIT 0
|
||||||
|
CALL :handle_error ECHO "STILL THERE? SECOND"
|
||||||
|
@ENDLOCAL
|
||||||
|
@EXIT /B
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
:handle_error
|
||||||
|
SETLOCAL
|
||||||
|
ECHO IN %0 with parameters %*
|
||||||
|
%*
|
||||||
|
SET CMD_RETURN=%ERRORLEVEL%
|
||||||
|
|
||||||
|
IF %CMD_RETURN% EQU 0 (
|
||||||
|
ECHO GOOD END
|
||||||
|
) ELSE (
|
||||||
|
ECHO BAD END
|
||||||
|
IF NOT EXIST LOG_bat MKDIR LOG_bat
|
||||||
|
ECHO Failure running %* >> LOG_bat\%~nx0.txt
|
||||||
|
)
|
||||||
|
ENDLOCAL
|
||||||
|
EXIT /B
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
m4_dnl $Id: ml_announce.in,v 1.12 2016/01/21 02:22:24 gilles Exp gilles $
|
m4_dnl $Id: ml_announce.in,v 1.16 2016/08/18 09:38:48 gilles Exp gilles $
|
||||||
m4_dnl
|
m4_dnl
|
||||||
m4_define(`M4_imapsync_VERSION',m4_esyscmd(cat VERSION|tr -d '\n'))m4_dnl
|
m4_define(`M4_imapsync_VERSION',m4_esyscmd(cat VERSION|tr -d '\n'))m4_dnl
|
||||||
m4_define(`M4_SECRET_PATH',m4_esyscmd(cat dist/path_last.txt|tr -d '\n'))m4_dnl
|
m4_define(`M4_SECRET_PATH',m4_esyscmd(cat dist/path_last.txt|tr -d '\n'))m4_dnl
|
||||||
@ -14,14 +14,15 @@ You're subscribed to the newsletter announcing imapsync new releases
|
|||||||
(very few traffic) and the way to get them. Send me a note if you
|
(very few traffic) and the way to get them. Send me a note if you
|
||||||
don't want to receive those announces anymore.
|
don't want to receive those announces anymore.
|
||||||
|
|
||||||
You will find the latest imapsync.exe binary (release M4_imapsync_VERSION)
|
You will find the latest imapsync.exe binary (release M4_imapsync_VERSION),
|
||||||
and the latest imapsync source code (release M4_imapsync_VERSION) at the following link:
|
the latest imapsync source code (release M4_imapsync_VERSION),
|
||||||
|
OS X and Linux (i386) binaries at the following link:
|
||||||
|
|
||||||
http://imapsync.lamiral.info/dist/M4_SECRET_PATH/
|
https://imapsync.lamiral.info/dist/M4_SECRET_PATH
|
||||||
|
|
||||||
or also more permanently from this page
|
or also more permanently from this page
|
||||||
|
|
||||||
http://imapsync.lamiral.info/paypal_return.shtml
|
https://imapsync.lamiral.info/paypal_return.shtml
|
||||||
|
|
||||||
Three important files are there:
|
Three important files are there:
|
||||||
* imapsync is directly the perl script (also found in the tarball and zip) for a fast upgrade.
|
* imapsync is directly the perl script (also found in the tarball and zip) for a fast upgrade.
|
||||||
@ -29,20 +30,20 @@ Three important files are there:
|
|||||||
* imapsync.M4_imapsync_VERSION.zip is the win32 zip archive including standalone binary imapsync.exe.
|
* imapsync.M4_imapsync_VERSION.zip is the win32 zip archive including standalone binary imapsync.exe.
|
||||||
|
|
||||||
What's new in this M4_imapsync_VERSION release can be found at
|
What's new in this M4_imapsync_VERSION release can be found at
|
||||||
http://imapsync.lamiral.info/S/news.shtml
|
https://imapsync.lamiral.info/S/news.shtml
|
||||||
|
|
||||||
Vote for better imapsync and services at
|
Vote for better imapsync and services at
|
||||||
http://imapsync.lamiral.info/#poll
|
http://imapsync.lamiral.info/poll.shtml
|
||||||
|
|
||||||
I thank you again for buying and using imapsync,
|
I thank you again for buying and using imapsync,
|
||||||
I wish you successful imap transfers!
|
I wish you successful imap transfers!
|
||||||
|
|
||||||
Feedback is welcome!
|
Feedback is welcome!
|
||||||
|
|
||||||
Web site: http://imapsync.lamiral.info/
|
Web site: https://imapsync.lamiral.info/
|
||||||
|
|
||||||
--
|
--
|
||||||
Au revoir.
|
Au revoir.
|
||||||
Gilles Lamiral, La Billais, 35580 Baulon, France
|
Gilles Lamiral, La Billais, 35580 Baulon, France
|
||||||
tel +33 951 84 42 42
|
tel +33 951 84 42 42
|
||||||
mob +33 620 79 76 06
|
mob +33 619 22 03 54
|
||||||
|
@ -1,82 +1,86 @@
|
|||||||
1145 Etats-Unis_d'Amerique___ 25.78 % 25.78 % 1
|
1225 Etats-Unis______________ 24.84 % 25 % 1
|
||||||
813 Allemagne_______________ 18.30 % 44.08 % 2
|
918 Allemagne_______________ 18.62 % 43 % 2
|
||||||
418 Royaume-Uni_____________ 9.41 % 53.49 % 3
|
454 Royaume-Uni_____________ 9.21 % 53 % 3
|
||||||
213 France__________________ 4.80 % 58.28 % 4
|
253 Italie__________________ 5.13 % 58 % 4
|
||||||
212 Italie__________________ 4.77 % 63.06 % 5
|
243 France__________________ 4.93 % 63 % 5
|
||||||
202 Canada__________________ 4.55 % 67.60 % 6
|
219 Canada__________________ 4.44 % 67 % 6
|
||||||
180 Suisse__________________ 4.05 % 71.66 % 7
|
199 Suisse__________________ 4.04 % 71 % 7
|
||||||
156 Pays-Bas________________ 3.51 % 75.17 % 8
|
183 Pays-Bas________________ 3.71 % 75 % 8
|
||||||
151 Australie_______________ 3.40 % 78.57 % 9
|
172 Australie_______________ 3.49 % 78 % 9
|
||||||
90 Autriche________________ 2.03 % 80.59 % 10
|
98 Autriche________________ 1.99 % 80 % 10
|
||||||
80 Belgique________________ 1.80 % 82.40 % 11
|
91 Espagne_________________ 1.85 % 82 % 11
|
||||||
76 Espagne_________________ 1.71 % 84.11 % 12
|
88 Belgique________________ 1.78 % 84 % 12
|
||||||
65 Suede___________________ 1.46 % 85.57 % 13
|
71 Suede___________________ 1.44 % 85 % 13
|
||||||
53 Danemark________________ 1.19 % 86.76 % 14
|
58 Danemark________________ 1.18 % 87 % 14
|
||||||
48 Bresil__________________ 1.08 % 87.84 % 15
|
51 Bresil__________________ 1.03 % 88 % 15
|
||||||
41 Norvege_________________ 0.92 % 88.77 % 16
|
43 Norvege_________________ 0.87 % 89 % 16
|
||||||
31 Finlande________________ 0.70 % 89.46 % 17
|
36 Pologne_________________ 0.73 % 89 % 17
|
||||||
29 Pologne_________________ 0.65 % 90.12 % 18
|
33 Finlande________________ 0.67 % 90 % 18
|
||||||
26 Japon___________________ 0.59 % 90.70 % 19
|
28 Republique_tcheque______ 0.57 % 91 % 19
|
||||||
25 Republique_tcheque______ 0.56 % 91.27 % 20
|
26 Russie__________________ 0.53 % 91 % 20
|
||||||
25 ________________________ 0.56 % 91.83 % 21
|
26 Japon___________________ 0.53 % 92 % 21
|
||||||
22 Russie__________________ 0.50 % 92.32 % 22
|
25 ________________________ 0.51 % 92 % 22
|
||||||
22 Irlande_________________ 0.50 % 92.82 % 23
|
23 Nouvelle-Zelande________ 0.47 % 93 % 23
|
||||||
21 Nouvelle-Zelande________ 0.47 % 93.29 % 24
|
23 Irlande_________________ 0.47 % 93 % 24
|
||||||
18 Hongrie_________________ 0.41 % 93.70 % 25
|
23 Hongrie_________________ 0.47 % 93 % 25
|
||||||
15 Hong-Kong_______________ 0.34 % 94.03 % 26
|
19 Portugal________________ 0.39 % 94 % 26
|
||||||
15 Afrique_du_Sud__________ 0.34 % 94.37 % 27
|
18 Hong-Kong_______________ 0.37 % 94 % 27
|
||||||
14 Portugal________________ 0.32 % 94.69 % 28
|
18 Grece___________________ 0.37 % 95 % 28
|
||||||
13 Slovaquie_______________ 0.29 % 94.98 % 29
|
18 Afrique_du_Sud__________ 0.37 % 95 % 29
|
||||||
13 Malaisie________________ 0.29 % 95.27 % 30
|
14 Slovaquie_______________ 0.28 % 95 % 30
|
||||||
12 Luxembourg______________ 0.27 % 95.54 % 31
|
14 Malaisie________________ 0.28 % 96 % 31
|
||||||
12 Inde____________________ 0.27 % 95.81 % 32
|
13 Luxembourg______________ 0.26 % 96 % 32
|
||||||
12 Grece___________________ 0.27 % 96.08 % 33
|
13 Inde____________________ 0.26 % 96 % 33
|
||||||
12 Argentine_______________ 0.27 % 96.35 % 34
|
12 Singapour_______________ 0.24 % 96 % 34
|
||||||
11 Singapour_______________ 0.25 % 96.60 % 35
|
12 Mexique_________________ 0.24 % 97 % 35
|
||||||
11 Israel__________________ 0.25 % 96.85 % 36
|
12 Argentine_______________ 0.24 % 97 % 36
|
||||||
11 Chine___________________ 0.25 % 97.10 % 37
|
11 Israel__________________ 0.22 % 97 % 37
|
||||||
11 Chili___________________ 0.25 % 97.34 % 38
|
11 Chine___________________ 0.22 % 97 % 38
|
||||||
10 Mexique_________________ 0.23 % 97.57 % 39
|
11 Chili___________________ 0.22 % 97 % 39
|
||||||
9 Roumanie________________ 0.20 % 97.77 % 40
|
10 Roumanie________________ 0.20 % 98 % 40
|
||||||
8 Slovenie________________ 0.18 % 97.95 % 41
|
9 Slovenie________________ 0.18 % 98 % 41
|
||||||
8 Emirats_Arabes_Unis_____ 0.18 % 98.13 % 42
|
9 Lettonie________________ 0.18 % 98 % 42
|
||||||
7 Lettonie________________ 0.16 % 98.29 % 43
|
9 Emirats_Arabes_Unis_____ 0.18 % 98 % 43
|
||||||
5 Thailande_______________ 0.11 % 98.40 % 44
|
7 Croatie_________________ 0.14 % 98 % 44
|
||||||
5 Malte___________________ 0.11 % 98.51 % 45
|
6 Thailande_______________ 0.12 % 98 % 45
|
||||||
5 Islande_________________ 0.11 % 98.63 % 46
|
5 Malte___________________ 0.10 % 99 % 46
|
||||||
4 Turquie_________________ 0.09 % 98.72 % 47
|
5 Islande_________________ 0.10 % 99 % 47
|
||||||
4 Indonesie_______________ 0.09 % 98.81 % 48
|
4 Turquie_________________ 0.08 % 99 % 48
|
||||||
4 Egypte__________________ 0.09 % 98.90 % 49
|
4 Indonesie_______________ 0.08 % 99 % 49
|
||||||
4 Croatie_________________ 0.09 % 98.99 % 50
|
4 Estonie_________________ 0.08 % 99 % 50
|
||||||
4 Bulgarie________________ 0.09 % 99.08 % 51
|
4 Egypte__________________ 0.08 % 99 % 51
|
||||||
3 Venezuela_______________ 0.07 % 99.14 % 52
|
4 Bulgarie________________ 0.08 % 99 % 52
|
||||||
3 Philippines_____________ 0.07 % 99.21 % 53
|
3 Venezuela_______________ 0.06 % 99 % 53
|
||||||
3 Estonie_________________ 0.07 % 99.28 % 54
|
3 Serbie__________________ 0.06 % 99 % 54
|
||||||
2 Vietnam_________________ 0.05 % 99.32 % 55
|
3 Philippines_____________ 0.06 % 99 % 55
|
||||||
2 Uruguay_________________ 0.05 % 99.37 % 56
|
2 Vietnam_________________ 0.04 % 99 % 56
|
||||||
2 Lituanie________________ 0.05 % 99.41 % 57
|
2 Uruguay_________________ 0.04 % 99 % 57
|
||||||
2 Costa_Rica______________ 0.05 % 99.46 % 58
|
2 Perou___________________ 0.04 % 99 % 58
|
||||||
2 Chypre__________________ 0.05 % 99.50 % 59
|
2 Lituanie________________ 0.04 % 99 % 59
|
||||||
1 Ukraine_________________ 0.02 % 99.53 % 60
|
2 Costa_Rica______________ 0.04 % 99 % 60
|
||||||
1 Trinite-et-Tobago_______ 0.02 % 99.55 % 61
|
2 Chypre__________________ 0.04 % 99 % 61
|
||||||
1 Tanzanie________________ 0.02 % 99.57 % 62
|
2 Antilles_neerlandaises__ 0.04 % 100 % 62
|
||||||
1 Taiwan__________________ 0.02 % 99.59 % 63
|
1 Ukraine_________________ 0.02 % 100 % 63
|
||||||
1 Serbie__________________ 0.02 % 99.62 % 64
|
1 Trinite-et-Tobago_______ 0.02 % 100 % 64
|
||||||
1 Senegal_________________ 0.02 % 99.64 % 65
|
1 Tanzanie________________ 0.02 % 100 % 65
|
||||||
1 Saint_Christophe-Nevis-Anguilla__ 0.02 % 99.66 % 66
|
1 Taiwan__________________ 0.02 % 100 % 66
|
||||||
1 Qatar___________________ 0.02 % 99.68 % 67
|
1 Senegal_________________ 0.02 % 100 % 67
|
||||||
1 Perou___________________ 0.02 % 99.71 % 68
|
1 Saint_Christophe-Nevis-Anguilla__ 0.02 % 100 % 68
|
||||||
1 Panama__________________ 0.02 % 99.73 % 69
|
1 Qatar___________________ 0.02 % 100 % 69
|
||||||
1 Nouvelle-Caledonie______ 0.02 % 99.75 % 70
|
1 Panama__________________ 0.02 % 100 % 70
|
||||||
1 Nigeria_________________ 0.02 % 99.77 % 71
|
1 Nouvelle-Caledonie______ 0.02 % 100 % 71
|
||||||
1 Namibie_________________ 0.02 % 99.80 % 72
|
1 Nigeria_________________ 0.02 % 100 % 72
|
||||||
1 Mongolie________________ 0.02 % 99.82 % 73
|
1 Namibie_________________ 0.02 % 100 % 73
|
||||||
1 Moldavie________________ 0.02 % 99.84 % 74
|
1 Mongolie________________ 0.02 % 100 % 74
|
||||||
1 Maldives________________ 0.02 % 99.86 % 75
|
1 Moldavie________________ 0.02 % 100 % 75
|
||||||
1 Îles_Vierges_britanniques__ 0.02 % 99.89 % 76
|
1 Maldives________________ 0.02 % 100 % 76
|
||||||
1 Koweit__________________ 0.02 % 99.91 % 77
|
1 Koweit__________________ 0.02 % 100 % 77
|
||||||
1 Jordanie________________ 0.02 % 99.93 % 78
|
1 Jordanie________________ 0.02 % 100 % 78
|
||||||
1 Colombie________________ 0.02 % 99.95 % 79
|
1 Iles_Vierges_britanniques__ 0.02 % 100 % 79
|
||||||
1 Bahrein_________________ 0.02 % 99.98 % 80
|
1 Grenade_________________ 0.02 % 100 % 80
|
||||||
1 Antilles_neerlandaises__ 0.02 % 100.00 % 81
|
1 Coree_du_Sud____________ 0.02 % 100 % 81
|
||||||
TOTAL = 4442 sales over 81 countries on Sat Jan 23 10:46:48 CET 2016
|
1 Colombie________________ 0.02 % 100 % 82
|
||||||
|
1 Cameroun________________ 0.02 % 100 % 83
|
||||||
|
1 Burkina_Faso____________ 0.02 % 100 % 84
|
||||||
|
1 Bahrein_________________ 0.02 % 100 % 85
|
||||||
|
TOTAL = 4931 sales 219147 EUR over 85 countries on Tue Aug 16 19:44:43 CEST 2016
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# $Id: memo,v 1.18 2015/12/03 16:47:48 gilles Exp gilles $
|
# $Id: memo,v 1.19 2016/08/09 10:50:30 gilles Exp gilles $
|
||||||
|
|
||||||
|
|
||||||
echo paypal_bilan_todo
|
echo paypal_bilan_todo
|
||||||
@ -29,6 +29,49 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
echo paypal_bilan_changefix_Commission_Frais
|
||||||
|
paypal_bilan_changefix_Commission_Frais() {
|
||||||
|
# DID output diff between
|
||||||
|
(
|
||||||
|
#set -x
|
||||||
|
perl -c /g/public_html/imapsync/W/paypal_reply/paypal_bilan || return 1
|
||||||
|
cd /g/var/paypal_bilan_changefix_Commission_Frais || return 1
|
||||||
|
/g/public_html/imapsync/W/paypal_reply/paypal_bilan_1.81 \
|
||||||
|
--debug --debug_csv --debug_email --details --debug_invoice \
|
||||||
|
--dir_invoices /g/var/paypal_invoices_dev --first_in 40001 \
|
||||||
|
2016_07_old.csv \
|
||||||
|
> 2016_07_old.out1 2>&1 || return 1
|
||||||
|
|
||||||
|
/g/public_html/imapsync/W/paypal_reply/paypal_bilan \
|
||||||
|
--debug --debug_csv --debug_email --details --debug_invoice \
|
||||||
|
--dir_invoices /g/var/paypal_invoices_dev --first_in 40001 \
|
||||||
|
2016_07_old.csv \
|
||||||
|
> 2016_07_old.out2 2>&1 || return 1
|
||||||
|
|
||||||
|
echo diff 2016_07_old.out1 2016_07_old.out2
|
||||||
|
diff 2016_07_old.out1 2016_07_old.out2
|
||||||
|
|
||||||
|
|
||||||
|
/g/public_html/imapsync/W/paypal_reply/paypal_bilan \
|
||||||
|
--debug --debug_csv --debug_email --details --debug_invoice \
|
||||||
|
--dir_invoices /g/var/paypal_invoices_dev --first_in 40001 \
|
||||||
|
2016_07_old.csv \
|
||||||
|
> 2016_07_old.out3 2>&1 || return 1
|
||||||
|
|
||||||
|
/g/public_html/imapsync/W/paypal_reply/paypal_bilan \
|
||||||
|
--debug --debug_csv --debug_email --details --debug_invoice \
|
||||||
|
--dir_invoices /g/var/paypal_invoices_dev --first_in 40001 \
|
||||||
|
2016_07_new.csv \
|
||||||
|
> 2016_07_new.out3 2>&1 || return 1
|
||||||
|
|
||||||
|
echo diff 2016_07_old.out3 2016_07_new.out3
|
||||||
|
diff 2016_07_old.out3 2016_07_new.out3
|
||||||
|
|
||||||
|
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
echo paypal_bilan_licence_support_only_csv
|
echo paypal_bilan_licence_support_only_csv
|
||||||
paypal_bilan_licence_support_only_csv() {
|
paypal_bilan_licence_support_only_csv() {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
# $Id: paypal_bilan,v 1.81 2016/01/23 09:37:19 gilles Exp gilles $
|
# $Id: paypal_bilan,v 1.83 2016/08/18 09:43:40 gilles Exp gilles $
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
@ -13,7 +13,7 @@ use Test::More 'no_plan' ;
|
|||||||
|
|
||||||
die unless (utf8_supported_charset('ISO-8859-1'));
|
die unless (utf8_supported_charset('ISO-8859-1'));
|
||||||
|
|
||||||
my $rcs = '$Id: paypal_bilan,v 1.81 2016/01/23 09:37:19 gilles Exp gilles $ ' ;
|
my $rcs = '$Id: paypal_bilan,v 1.83 2016/08/18 09:43:40 gilles Exp gilles $ ' ;
|
||||||
$rcs =~ m/,v (\d+\.\d+)/ ;
|
$rcs =~ m/,v (\d+\.\d+)/ ;
|
||||||
my $VERSION = ($1) ? $1: "UNKNOWN" ;
|
my $VERSION = ($1) ? $1: "UNKNOWN" ;
|
||||||
|
|
||||||
@ -592,6 +592,18 @@ sub compute_line {
|
|||||||
|
|
||||||
( $A->{Etat} ) = @action{ ( 'Etat' ) } || @action{ ( 'État' ) } ;
|
( $A->{Etat} ) = @action{ ( 'Etat' ) } || @action{ ( 'État' ) } ;
|
||||||
( $A->{Hors_taxe_paypal} ) = @action{ ( 'Hors taxe' ) } || @action{ ( 'Avant commission' ) } ;
|
( $A->{Hors_taxe_paypal} ) = @action{ ( 'Hors taxe' ) } || @action{ ( 'Avant commission' ) } ;
|
||||||
|
|
||||||
|
# August 2016
|
||||||
|
( $A->{N_de_transaction} ) = @action{ ( 'N° de transaction' ) } || @action{ ( 'Numéro de transaction' ) } ;
|
||||||
|
#( $A->{} ) = @action{ ( '' ) } || @action{ ( '' ) } ;
|
||||||
|
#( $A->{} ) = @action{ ( '' ) } || @action{ ( '' ) } ;
|
||||||
|
#( $A->{} ) = @action{ ( '' ) } || @action{ ( '' ) } ;
|
||||||
|
#( $A->{} ) = @action{ ( '' ) } || @action{ ( '' ) } ;
|
||||||
|
#( $A->{} ) = @action{ ( '' ) } || @action{ ( '' ) } ;
|
||||||
|
#( $A->{} ) = @action{ ( '' ) } || @action{ ( '' ) } ;
|
||||||
|
#( $A->{} ) = @action{ ( '' ) } || @action{ ( '' ) } ;
|
||||||
|
|
||||||
|
#
|
||||||
$A->{Impact_sur_le_solde} ||= '' ;
|
$A->{Impact_sur_le_solde} ||= '' ;
|
||||||
$A->{invoice} = 'NONE' ;
|
$A->{invoice} = 'NONE' ;
|
||||||
$A->{Montant} = $action->{ 'Net' } if not defined $A->{Montant};
|
$A->{Montant} = $action->{ 'Net' } if not defined $A->{Montant};
|
||||||
@ -700,6 +712,16 @@ sub build_invoice {
|
|||||||
'Etat/Province/Région/Comté/Territoire/Préfecture/République', 'Code postal', 'Pays', 'line_number', 'line_csv', 'file_csv',
|
'Etat/Province/Région/Comté/Territoire/Préfecture/République', 'Code postal', 'Pays', 'line_number', 'line_csv', 'file_csv',
|
||||||
'Nom Option 2', 'Option 2 Valeur' ) } ;
|
'Nom Option 2', 'Option 2 Valeur' ) } ;
|
||||||
|
|
||||||
|
# August 2016
|
||||||
|
$F->{Commission} = $action->{'Commission'} || $action->{'Frais'} ;
|
||||||
|
$F->{N_de_transaction} = $action->{'N° de transaction'} || $action->{'Numéro de transaction'} ;
|
||||||
|
$F->{Adresse_1} = $action->{'Adresse 1'} || $action->{'Adresse (ligne 1)'} ;
|
||||||
|
#$F->{} = $action->{''} || $action->{''} ;
|
||||||
|
#$F->{} = $action->{''} || $action->{''} ;
|
||||||
|
#$F->{} = $action->{''} || $action->{''} ;
|
||||||
|
#$F->{} = $action->{''} || $action->{''} ;
|
||||||
|
#
|
||||||
|
|
||||||
$F->{Etat_Province} = $action->{'Etat/Province/Région/Comté/Territoire/Préfecture/République'}
|
$F->{Etat_Province} = $action->{'Etat/Province/Région/Comté/Territoire/Préfecture/République'}
|
||||||
|| $action->{'État/Province/Région/Comté/Territoire/Préfecture/République'}
|
|| $action->{'État/Province/Région/Comté/Territoire/Préfecture/République'}
|
||||||
|| '' ;
|
|| '' ;
|
||||||
@ -918,11 +940,14 @@ or any other gpg graphical tool.
|
|||||||
|
|
||||||
Once more, thank you for buying and using imapsync $F->{object_type}.
|
Once more, thank you for buying and using imapsync $F->{object_type}.
|
||||||
|
|
||||||
Any feedback is welcome.
|
Any feedback is welcome!
|
||||||
|
Best Regards.
|
||||||
|
|
||||||
--
|
--
|
||||||
Best Regards, 09 51 84 42 42
|
Gilles Lamiral.
|
||||||
Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06
|
add: La Billais 35580 Baulon, France
|
||||||
|
mob: +33 6 19 22 03 54
|
||||||
|
fix: +33 9 51 84 42 42
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
# $Id: paypal_build_invoice_from_email,v 1.2 2013/02/08 14:59:34 gilles Exp gilles $
|
# $Id: paypal_build_invoice_from_email,v 1.3 2016/08/18 09:51:17 gilles Exp gilles $
|
||||||
|
|
||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
@ -136,7 +136,7 @@ while(<>) {
|
|||||||
|
|
||||||
my $address = 'gilles.lamiral@laposte.net';
|
my $address = 'gilles.lamiral@laposte.net';
|
||||||
my $address2 = 'gilles@lamiral.info';
|
my $address2 = 'gilles@lamiral.info';
|
||||||
my $rcstag = '$Id: paypal_build_invoice_from_email,v 1.2 2013/02/08 14:59:34 gilles Exp gilles $';
|
my $rcstag = '$Id: paypal_build_invoice_from_email,v 1.3 2016/08/18 09:51:17 gilles Exp gilles $';
|
||||||
|
|
||||||
my $download_info = "You will find the latest imapsync.exe binary (release $release_exe)
|
my $download_info = "You will find the latest imapsync.exe binary (release $release_exe)
|
||||||
and the latest imapsync source code (release $release) at the following link:
|
and the latest imapsync source code (release $release) at the following link:
|
||||||
@ -160,8 +160,8 @@ my $support_info = 'Now you have access to imapsync professional support.
|
|||||||
You can contact me (Gilles LAMIRAL) by email or phone.
|
You can contact me (Gilles LAMIRAL) by email or phone.
|
||||||
|
|
||||||
Email address: gilles.lamiral@laposte.net.
|
Email address: gilles.lamiral@laposte.net.
|
||||||
Professionnal phone number: +33 951 84 42 42 (France)
|
Professionnal phone number: +33 9 51 84 42 42 (France)
|
||||||
Mobile phone number: +33 620 79 76 06 (France).
|
Mobile phone number: +33 6 19 22 03 54 (France).
|
||||||
|
|
||||||
I can call you back for free in many countries on landline telephone numbers
|
I can call you back for free in many countries on landline telephone numbers
|
||||||
and to mobile numbers in the United States and France. So do not hesitate
|
and to mobile numbers in the United States and France. So do not hesitate
|
||||||
@ -214,15 +214,15 @@ Gilles LAMIRAL
|
|||||||
35580 Baulon
|
35580 Baulon
|
||||||
FRANCE
|
FRANCE
|
||||||
|
|
||||||
Tel: +33 951 84 42 42
|
Tel: +33 9 51 84 42 42
|
||||||
Mob: +33 620 79 76 06
|
Mob: +33 6 19 22 03 54
|
||||||
Fax: +33 956 84 42 42
|
Fax: +33 9 56 84 42 42
|
||||||
|
|
||||||
email: $address
|
email: $address
|
||||||
|
|
||||||
--
|
--
|
||||||
Au revoir, 09 51 84 42 42
|
Au revoir,
|
||||||
Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06
|
Gilles Lamiral.
|
||||||
EOM
|
EOM
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# $Id: paypal_build_invoices,v 1.103 2016/03/17 20:37:06 gilles Exp gilles $
|
# $Id: paypal_build_invoices,v 1.111 2016/08/09 02:10:07 gilles Exp gilles $
|
||||||
|
|
||||||
# usage: sh paypal_build_invoices /g/var/paypal_invoices/????
|
# usage: sh paypal_build_invoices /g/var/paypal_invoices/????
|
||||||
|
|
||||||
@ -74,9 +74,14 @@ cp /home/gilles/public_html/AGIL/factures/000/facture_imapsync-000.tex /g/var/pa
|
|||||||
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4506 /g/paypal/paypal_2015_12_complet.csv
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4506 /g/paypal/paypal_2015_12_complet.csv
|
||||||
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4575 /g/paypal/paypal_2016_01_complet.csv
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4575 /g/paypal/paypal_2016_01_complet.csv
|
||||||
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4642 /g/paypal/paypal_2016_02_complet.csv
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4642 /g/paypal/paypal_2016_02_complet.csv
|
||||||
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4695 /g/paypal/paypal_2016_03_complet.csv
|
||||||
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4776 /g/paypal/paypal_2016_04_complet.csv
|
||||||
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4860 /g/paypal/paypal_2016_05_complet.csv
|
||||||
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4931 /g/paypal/paypal_2016_06_complet.csv
|
||||||
|
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 5009 /g/paypal/paypal_2016_07_complet.csv
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 4695 /g/paypal/paypal_2016_03_complet.csv
|
/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 5081 /g/paypal/paypal_2016_08_complet.csv
|
||||||
set +x
|
set +x
|
||||||
|
|
||||||
|
|
||||||
@ -131,24 +136,29 @@ set +x
|
|||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3614 /g/paypal/virements_2014_10.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3614 /g/paypal/virements_2014_10.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3618 /g/paypal/paypal_2014_10_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3618 /g/paypal/paypal_2014_10_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3691 /g/paypal/paypal_2014_11_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3691 /g/paypal/paypal_2014_11_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3750 /g/paypal/paypal_2014_12_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3750 /g/paypal/paypal_2014_12_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3809 /g/paypal/paypal_2015_01_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3809 /g/paypal/paypal_2015_01_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3877 /g/paypal/paypal_2015_02_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3877 /g/paypal/paypal_2015_02_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3959 /g/paypal/paypal_2015_03_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3959 /g/paypal/paypal_2015_03_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4031 /g/paypal/paypal_2015_04_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4031 /g/paypal/paypal_2015_04_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4085 /g/paypal/paypal_2015_05_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4085 /g/paypal/paypal_2015_05_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4139 /g/paypal/paypal_2015_06_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4139 /g/paypal/paypal_2015_06_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4196 /g/paypal/paypal_2015_07_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4196 /g/paypal/paypal_2015_07_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4263 /g/paypal/paypal_2015_08_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4263 /g/paypal/paypal_2015_08_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4317 /g/paypal/paypal_2015_09_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4317 /g/paypal/paypal_2015_09_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4383 /g/paypal/paypal_2015_10_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4383 /g/paypal/paypal_2015_10_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4451 /g/paypal/paypal_2015_11_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4451 /g/paypal/paypal_2015_11_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4506 /g/paypal/paypal_2015_12_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4506 /g/paypal/paypal_2015_12_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4575 /g/paypal/paypal_2016_01_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4575 /g/paypal/paypal_2016_01_complet.csv
|
||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4642 /g/paypal/paypal_2016_02_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4642 /g/paypal/paypal_2016_02_complet.csv
|
||||||
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4695 /g/paypal/paypal_2016_03_complet.csv
|
||||||
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4776 /g/paypal/paypal_2016_04_complet.csv
|
||||||
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4860 /g/paypal/paypal_2016_05_complet.csv
|
||||||
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4931 /g/paypal/paypal_2016_06_complet.csv
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
: g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 4695 /g/paypal/paypal_2016_03_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 5009 /g/paypal/paypal_2016_07_complet.csv
|
||||||
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 5081 /g/paypal/paypal_2016_08_complet.csv
|
||||||
set +x
|
set +x
|
||||||
|
|
||||||
# La totale
|
# La totale
|
||||||
@ -218,10 +228,10 @@ set +x
|
|||||||
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 147 --avoid_numbers '' /g/paypal/paypal_2010_??_complet.csv
|
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 147 --avoid_numbers '' /g/paypal/paypal_2010_??_complet.csv
|
||||||
|
|
||||||
|
|
||||||
echo 'sh paypal_build_invoices /g/var/paypal_invoices/4???'
|
echo 'sh paypal_build_invoices /g/var/paypal_invoices/5???'
|
||||||
|
|
||||||
# USD de 147 à 340
|
# USD de 147 \E0 340
|
||||||
# EUR de 341 à ...
|
# EUR de 341 \E0 ...
|
||||||
|
|
||||||
# 20110413 Found problems with 189 199 249 258 263 359 537
|
# 20110413 Found problems with 189 199 249 258 263 359 537
|
||||||
# 20110412 Found problems with 189 199 242 249 258 263 359 382 537
|
# 20110412 Found problems with 189 199 242 249 258 263 359 382 537
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
# $Id: paypal_build_reply,v 1.28 2016/03/03 13:36:18 gilles Exp gilles $
|
# $Id: paypal_build_reply,v 1.29 2016/08/18 09:48:27 gilles Exp gilles $
|
||||||
|
|
||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
@ -107,7 +107,7 @@ while( my $line = shift @input ) {
|
|||||||
|
|
||||||
my $address = 'gilles.lamiral@laposte.net';
|
my $address = 'gilles.lamiral@laposte.net';
|
||||||
my $address2 = 'gilles@lamiral.info';
|
my $address2 = 'gilles@lamiral.info';
|
||||||
my $rcstag = '$Id: paypal_build_reply,v 1.28 2016/03/03 13:36:18 gilles Exp gilles $';
|
my $rcstag = '$Id: paypal_build_reply,v 1.29 2016/08/18 09:48:27 gilles Exp gilles $';
|
||||||
|
|
||||||
my $download_info = "You will find the latest imapsync.exe binary (release $release_exe)
|
my $download_info = "You will find the latest imapsync.exe binary (release $release_exe)
|
||||||
and the latest imapsync source code (release $release) at the following link:
|
and the latest imapsync source code (release $release) at the following link:
|
||||||
@ -129,8 +129,8 @@ my $support_info = 'For imapsync professional support,
|
|||||||
contact me (Gilles LAMIRAL) by email or phone at:
|
contact me (Gilles LAMIRAL) by email or phone at:
|
||||||
|
|
||||||
Email address: gilles.lamiral@laposte.net.
|
Email address: gilles.lamiral@laposte.net.
|
||||||
Professionnal phone number: +33 951 84 42 42 (France)
|
Professionnal phone number: +33 9 51 84 42 42 (France)
|
||||||
Mobile phone number: +33 620 79 76 06 (France).
|
Mobile phone number: +33 6 19 22 03 54 (France, SFR operator).
|
||||||
|
|
||||||
I can call you back toll-free in many countries on landline telephone numbers
|
I can call you back toll-free in many countries on landline telephone numbers
|
||||||
and to mobile numbers in the United States and France. So do not hesitate
|
and to mobile numbers in the United States and France. So do not hesitate
|
||||||
@ -178,15 +178,15 @@ La Billais
|
|||||||
35580 Baulon
|
35580 Baulon
|
||||||
FRANCE
|
FRANCE
|
||||||
|
|
||||||
Tel: +33 951 84 42 42
|
Tel: +33 9 51 84 42 42
|
||||||
Mob: +33 620 79 76 06
|
Mob: +33 6 19 22 03 54
|
||||||
Fax: +33 956 84 42 42
|
Fax: +33 9 56 84 42 42
|
||||||
|
|
||||||
email: $address
|
email: $address
|
||||||
|
|
||||||
--
|
--
|
||||||
Au revoir, 09 51 84 42 42
|
Au revoir,
|
||||||
Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06
|
Gilles Lamiral.
|
||||||
EOM
|
EOM
|
||||||
;
|
;
|
||||||
|
|
||||||
|
28
W/paypal_reply/postsave
Executable file
28
W/paypal_reply/postsave
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# $Id: postsave,v 1.2 2016/08/08 15:22:57 gilles Exp gilles $
|
||||||
|
|
||||||
|
use strict ;
|
||||||
|
use warnings ;
|
||||||
|
use English ;
|
||||||
|
use CGI ;
|
||||||
|
use URL::Encode ;
|
||||||
|
|
||||||
|
my $query = CGI->new( ) ;
|
||||||
|
|
||||||
|
my $data = $query->param('POSTDATA') || q{} ;
|
||||||
|
|
||||||
|
print "\n\n" ;
|
||||||
|
my $datadec = URL::Encode::url_decode($data);
|
||||||
|
#print $data ;
|
||||||
|
if ( ! -d "/var/tmp/postsave" ) {
|
||||||
|
mkdir '/var/tmp/postsave' or die $! ;
|
||||||
|
}
|
||||||
|
|
||||||
|
open (OUT,'>', "/var/tmp/postsave/postsave.$BASETIME.txt") || die;
|
||||||
|
#open (OUT,'>>', "/var/tmp/postsave/postsave.dev.txt") || die;
|
||||||
|
|
||||||
|
print OUT "$datadec\n" ;
|
||||||
|
close OUT ;
|
||||||
|
|
||||||
|
|
16
W/paypal_reply/urldecode
Executable file
16
W/paypal_reply/urldecode
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict ;
|
||||||
|
use warnings ;
|
||||||
|
use English ;
|
||||||
|
use URL::Encode ;
|
||||||
|
|
||||||
|
|
||||||
|
my $data = 'POSTDATA=%7B%22order%22%3A%7B%22id%22%3Anull%2C%22uuid%22%3A%223c632dae-c20e-5447-bcf8-418409f44cc4%22%2C%22resource_path%22%3A%22%2Fv2%2Forders%2F3c632dae-c20e-5447-bcf8-418409f44cc4%22%2C%22metadata%22%3Anull%2C%22created_at%22%3Anull%2C%22status%22%3A%22completed%22%2C%22event%22%3Anull%2C%22total_btc%22%3A%7B%22cents%22%3A100000000.0%2C%22currency_iso%22%3A%22BTC%22%7D%2C%22total_native%22%3A%7B%22cents%22%3A59430.0%2C%22currency_iso%22%3A%22EUR%22%7D%2C%22total_payout%22%3A%7B%22cents%22%3A59430.0%2C%22currency_iso%22%3A%22EUR%22%7D%2C%22custom%22%3A%22123456789%22%2C%22receive_address%22%3A%221GEZK4EuxmYKc22mTEYnZMUSpyjW9a52Hd%22%2C%22button%22%3A%7B%22type%22%3A%22buy_now%22%2C%22subscription%22%3Afalse%2C%22repeat%22%3Anull%2C%22name%22%3A%22Test%20Item%22%2C%22description%22%3Anull%2C%22id%22%3Anull%2C%22uuid%22%3A%22859232d4-b3bc-5240-b1cf-7b62566b6c54%22%2C%22resource_path%22%3A%22%2Fv2%2Fcheckouts%2F859232d4-b3bc-5240-b1cf-7b62566b6c54%22%7D%2C%22transaction%22%3A%7B%22id%22%3A%2257992060c04ee00001899f33%22%2C%22hash%22%3A%224a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b%22%2C%22confirmations%22%3A0%7D%7D%7D' ;
|
||||||
|
|
||||||
|
print "\n\n" ;
|
||||||
|
print "$data\n" ;
|
||||||
|
print URL::Encode::url_decode($data), "\n" ;
|
||||||
|
|
||||||
|
|
||||||
|
|
3583
W/perlcritic_1.out
3583
W/perlcritic_1.out
File diff suppressed because it is too large
Load Diff
1455
W/perlcritic_2.out
1455
W/perlcritic_2.out
File diff suppressed because it is too large
Load Diff
@ -1,78 +1,174 @@
|
|||||||
Main code has high complexity score (400) at line 1, column 1. Consider refactoring. (Severity: 3)
|
Main code has high complexity score (401) at line 1, column 1. Consider refactoring. (Severity: 3)
|
||||||
"$ssl1_SSL_version" is declared but not used at line 712, column 1. Unused variables clutter code and make it harder to read. (Severity: 3)
|
"$ssl1_ssl_version" is declared but not used at line 814, column 1. Unused variables clutter code and make it harder to read. (Severity: 3)
|
||||||
"$ssl2_SSL_version" is declared but not used at line 712, column 1. Unused variables clutter code and make it harder to read. (Severity: 3)
|
"$ssl2_ssl_version" is declared but not used at line 814, column 1. Unused variables clutter code and make it harder to read. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 1341, column 33. See page 236 of PBP. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 1442, column 3. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 1350, column 33. See page 236 of PBP. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 1443, column 3. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Code structure is deeply nested at line 1875, column 41. Consider refactoring. (Severity: 3)
|
Regular expression without "/x" flag at line 1481, column 33. See page 236 of PBP. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2040, column 2. Invent unique variable names. (Severity: 3)
|
Regular expression without "/x" flag at line 1490, column 33. See page 236 of PBP. (Severity: 3)
|
||||||
Hard tabs used at line 2066, column 22. See page 20 of PBP. (Severity: 3)
|
Code structure is deeply nested at line 2013, column 41. Consider refactoring. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2150, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2255, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 2199, column 29. See page 236 of PBP. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2365, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 2221, column 31. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 2414, column 29. See page 236 of PBP. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2230, column 2. Invent unique variable names. (Severity: 3)
|
Regular expression without "/x" flag at line 2436, column 31. See page 236 of PBP. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2253, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2445, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 2286, column 30. See page 236 of PBP. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2468, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2297, column 53. Invent unique variable names. (Severity: 3)
|
Regular expression without "/x" flag at line 2501, column 30. See page 236 of PBP. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2305, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2512, column 53. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $sync at line 2353, column 2. Invent unique variable names. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2520, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 2389, column 26. See page 236 of PBP. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 2570, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $nb_errors at line 2437, column 2. Invent unique variable names. (Severity: 3)
|
Regular expression without "/x" flag at line 2607, column 26. See page 236 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 2473, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 2727, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 2491, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 2745, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 2501, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 2755, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Subroutine "modules_VERSION" with high complexity score (26) at line 2619, column 1. Consider refactoring. (Severity: 3)
|
Subroutine "modulesversion" with high complexity score (27) at line 2868, column 1. Consider refactoring. (Severity: 3)
|
||||||
Too many arguments at line 2782, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 3075, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Subroutine "authenticate_imap" with high complexity score (21) at line 2851, column 1. Consider refactoring. (Severity: 3)
|
Subroutine "authenticate_imap" with high complexity score (21) at line 3144, column 1. Consider refactoring. (Severity: 3)
|
||||||
Too many arguments at line 2851, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 3144, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Too many arguments at line 2981, column 1. See page 182 of PBP. (Severity: 3)
|
Too many arguments at line 3274, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3057, column 62. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3358, column 32. See page 236 of PBP. (Severity: 3)
|
||||||
Backtick operator used at line 3065, column 19. Use IPC::Open3 instead. (Severity: 3)
|
Use "local $/ = undef" or File::Slurp instead of joined readline at line 3363, column 43. See page 213 of PBP. (Severity: 3)
|
||||||
Return value of eval not tested at line 3203, column 2. You can't depend upon the value of $@/$EVAL_ERROR to tell whether an eval failed. (Severity: 3)
|
Regular expression without "/x" flag at line 3373, column 69. See page 236 of PBP. (Severity: 3)
|
||||||
"die" used instead of "croak" at line 3248, column 2. See page 283 of PBP. (Severity: 3)
|
Backtick operator used at line 3381, column 20. Use IPC::Open3 instead. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3356, column 15. See page 236 of PBP. (Severity: 3)
|
Return value of eval not tested at line 3538, column 2. You can't depend upon the value of $@/$EVAL_ERROR to tell whether an eval failed. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3357, column 15. See page 236 of PBP. (Severity: 3)
|
"die" used instead of "croak" at line 3606, column 2. See page 283 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3358, column 15. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3714, column 15. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3367, column 8. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3715, column 15. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3368, column 8. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3716, column 15. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3369, column 8. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3725, column 8. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3395, column 31. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3726, column 8. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3477, column 25. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3727, column 8. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3480, column 20. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3770, column 31. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3681, column 24. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3857, column 24. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3682, column 19. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 3860, column 20. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3686, column 19. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 4061, column 24. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3756, column 39. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 4062, column 19. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3757, column 39. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 4066, column 19. See page 236 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 3758, column 41. See page 236 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 4136, column 39. See page 236 of PBP. (Severity: 3)
|
||||||
Hard tabs used at line 3772, column 106. See page 20 of PBP. (Severity: 3)
|
Regular expression without "/x" flag at line 4137, column 39. See page 236 of PBP. (Severity: 3)
|
||||||
Expression form of "eval" at line 4012, column 13. See page 161 of PBP. (Severity: 5)
|
Regular expression without "/x" flag at line 4138, column 41. See page 236 of PBP. (Severity: 3)
|
||||||
Expression form of "eval" at line 4242, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 4391, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Subroutine "copy_message" with high complexity score (25) at line 4603, column 1. Consider refactoring. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 4522, column 6. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Too many arguments at line 4603, column 1. See page 182 of PBP. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 4522, column 45. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Too many arguments at line 4679, column 1. See page 182 of PBP. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 4528, column 6. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Too many arguments at line 4713, column 1. See page 182 of PBP. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 4528, column 38. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Too many arguments at line 4902, column 1. See page 182 of PBP. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 4529, column 17. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $total_bytes_transferred at line 4963, column 2. Invent unique variable names. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 4530, column 39. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $nb_msg_transferred at line 4963, column 2. Invent unique variable names. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 4534, column 6. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $nb_msg_transferred at line 4976, column 9. Invent unique variable names. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 4534, column 40. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $maxmessagespersecond at line 4976, column 9. Invent unique variable names. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 4537, column 45. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $total_bytes_transferred at line 4997, column 9. Invent unique variable names. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 4538, column 45. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Reused variable name in lexical scope: $maxbytespersecond at line 4997, column 9. Invent unique variable names. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 4539, column 22. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Expression form of "eval" at line 6186, column 13. See page 161 of PBP. (Severity: 5)
|
Single-quote used as quote-like operator delimiter at line 4541, column 17. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 6421, column 22. See page 236 of PBP. (Severity: 3)
|
Single-quote used as quote-like operator delimiter at line 4550, column 17. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Expression form of "eval" at line 6426, column 13. See page 161 of PBP. (Severity: 5)
|
Single-quote used as quote-like operator delimiter at line 4556, column 17. Using quotes as delimiters for quote-like operators obfuscates code. (Severity: 3)
|
||||||
Too many arguments at line 6589, column 1. See page 182 of PBP. (Severity: 3)
|
Expression form of "eval" at line 4629, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Backtick operator used at line 6756, column 4. Use IPC::Open3 instead. (Severity: 3)
|
Subroutine "copy_message" with high complexity score (25) at line 4990, column 1. Consider refactoring. (Severity: 3)
|
||||||
Backtick operator used at line 6963, column 12. Use IPC::Open3 instead. (Severity: 3)
|
Too many arguments at line 4990, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Backtick operator used at line 6983, column 11. Use IPC::Open3 instead. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 4993, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Split long regexps into smaller qr// chunks at line 7145, column 12. See page 261 of PBP. (Severity: 3)
|
Too many arguments at line 5074, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Split long regexps into smaller qr// chunks at line 7171, column 12. See page 261 of PBP. (Severity: 3)
|
Subroutine "message_for_host2" with high complexity score (27) at line 5107, column 1. Consider refactoring. (Severity: 3)
|
||||||
Split long regexps into smaller qr// chunks at line 7212, column 12. See page 261 of PBP. (Severity: 3)
|
Too many arguments at line 5107, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Split long regexps into smaller qr// chunks at line 7224, column 12. See page 261 of PBP. (Severity: 3)
|
Reused variable name in lexical scope: $sync at line 5129, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Expression form of "eval" at line 7330, column 43. See page 161 of PBP. (Severity: 5)
|
Reused variable name in lexical scope: $sync at line 5223, column 9. Invent unique variable names. (Severity: 3)
|
||||||
Expression form of "eval" at line 7334, column 45. See page 161 of PBP. (Severity: 5)
|
Reused variable name in lexical scope: $string_ref at line 5242, column 25. Invent unique variable names. (Severity: 3)
|
||||||
Split long regexps into smaller qr// chunks at line 7539, column 20. See page 261 of PBP. (Severity: 3)
|
Too many arguments at line 5419, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
Regular expression without "/x" flag at line 7706, column 19. See page 236 of PBP. (Severity: 3)
|
Reused variable name in lexical scope: $total_bytes_transferred at line 5486, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Close filehandles as soon as possible after opening them at line 7750, column 2. See page 209 of PBP. (Severity: 4)
|
Reused variable name in lexical scope: $nb_msg_transferred at line 5486, column 2. Invent unique variable names. (Severity: 3)
|
||||||
Magic variable "*STDERR" should be assigned as "local" at line 7753, column 10. See pages 81,82 of PBP. (Severity: 4)
|
Reused variable name in lexical scope: $nb_msg_transferred at line 5499, column 9. Invent unique variable names. (Severity: 3)
|
||||||
One-argument "select" used at line 7754, column 2. See page 224 of PBP. (Severity: 4)
|
Reused variable name in lexical scope: $maxmessagespersecond at line 5499, column 9. Invent unique variable names. (Severity: 3)
|
||||||
|
Reused variable name in lexical scope: $total_bytes_transferred at line 5520, column 9. Invent unique variable names. (Severity: 3)
|
||||||
|
Reused variable name in lexical scope: $maxbytespersecond at line 5520, column 9. Invent unique variable names. (Severity: 3)
|
||||||
|
Reused variable name in lexical scope: $h1_nb_msg_start at line 5557, column 2. Invent unique variable names. (Severity: 3)
|
||||||
|
Reused variable name in lexical scope: $h1_nb_msg_start at line 5568, column 2. Invent unique variable names. (Severity: 3)
|
||||||
|
Expression form of "eval" at line 6706, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
|
Expression form of "eval" at line 6942, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
|
Regular expression without "/x" flag at line 7132, column 21. See page 236 of PBP. (Severity: 3)
|
||||||
|
Too many arguments at line 7204, column 1. See page 182 of PBP. (Severity: 3)
|
||||||
|
Close filehandles as soon as possible after opening them at line 7338, column 9. See page 209 of PBP. (Severity: 4)
|
||||||
|
Literal line breaks in a string at line 7379, column 1. See pages 60,61 of PBP. (Severity: 3)
|
||||||
|
Backtick operator used at line 7403, column 17. Use IPC::Open3 instead. (Severity: 3)
|
||||||
|
Split long regexps into smaller qr// chunks at line 7489, column 32. See page 261 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7489, column 32. See page 236 of PBP. (Severity: 3)
|
||||||
|
Split long regexps into smaller qr// chunks at line 7493, column 32. See page 261 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7493, column 32. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7502, column 33. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7507, column 33. See page 236 of PBP. (Severity: 3)
|
||||||
|
Split long regexps into smaller qr// chunks at line 7511, column 33. See page 261 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7511, column 33. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7515, column 33. See page 236 of PBP. (Severity: 3)
|
||||||
|
Split long regexps into smaller qr// chunks at line 7521, column 24. See page 261 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7521, column 24. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7671, column 33. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7672, column 33. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7673, column 43. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7675, column 36. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7676, column 37. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7677, column 38. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 7679, column 30. See page 236 of PBP. (Severity: 3)
|
||||||
|
Backtick operator used at line 7696, column 12. Use IPC::Open3 instead. (Severity: 3)
|
||||||
|
Backtick operator used at line 7718, column 11. Use IPC::Open3 instead. (Severity: 3)
|
||||||
|
Split long regexps into smaller qr// chunks at line 7866, column 12. See page 261 of PBP. (Severity: 3)
|
||||||
|
Split long regexps into smaller qr// chunks at line 7892, column 12. See page 261 of PBP. (Severity: 3)
|
||||||
|
Split long regexps into smaller qr// chunks at line 7933, column 12. See page 261 of PBP. (Severity: 3)
|
||||||
|
Split long regexps into smaller qr// chunks at line 7945, column 12. See page 261 of PBP. (Severity: 3)
|
||||||
|
Expression form of "eval" at line 8051, column 42. See page 161 of PBP. (Severity: 5)
|
||||||
|
Expression form of "eval" at line 8055, column 44. See page 161 of PBP. (Severity: 5)
|
||||||
|
Reused variable name in lexical scope: $sync at line 8072, column 9. Invent unique variable names. (Severity: 3)
|
||||||
|
Reused variable name in lexical scope: $sync at line 8093, column 9. Invent unique variable names. (Severity: 3)
|
||||||
|
Reused variable name in lexical scope: $sync at line 8145, column 9. Invent unique variable names. (Severity: 3)
|
||||||
|
Split long regexps into smaller qr// chunks at line 8481, column 20. See page 261 of PBP. (Severity: 3)
|
||||||
|
Close filehandles as soon as possible after opening them at line 8693, column 2. See page 209 of PBP. (Severity: 4)
|
||||||
|
Magic variable "*STDERR" should be assigned as "local" at line 8696, column 10. See pages 81,82 of PBP. (Severity: 4)
|
||||||
|
One-argument "select" used at line 8697, column 2. See page 224 of PBP. (Severity: 4)
|
||||||
|
Multiple "package" declarations at line 9395, column 1. Limit to one per file. (Severity: 4)
|
||||||
|
Subroutine "GetOptions" with high complexity score (32) at line 9407, column 1. Consider refactoring. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 9425, column 22. See page 236 of PBP. (Severity: 3)
|
||||||
|
Capture variable used outside conditional at line 9430, column 32. See page 253 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 9438, column 42. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 9439, column 30. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 9443, column 35. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 9460, column 30. See page 236 of PBP. (Severity: 3)
|
||||||
|
Regular expression without "/x" flag at line 9462, column 35. See page 236 of PBP. (Severity: 3)
|
||||||
|
|
||||||
|
1 files.
|
||||||
|
263 subroutines/methods.
|
||||||
|
8,603 statements.
|
||||||
|
|
||||||
|
9,486 lines, consisting of:
|
||||||
|
1,684 blank lines.
|
||||||
|
551 comment lines.
|
||||||
|
0 data lines.
|
||||||
|
6,579 lines of Perl code.
|
||||||
|
672 lines of POD.
|
||||||
|
|
||||||
|
Average McCabe score of subroutines was 4.35.
|
||||||
|
|
||||||
|
131 violations.
|
||||||
|
Violations per file was 131.000.
|
||||||
|
Violations per statement was 0.015.
|
||||||
|
Violations per line of code was 0.014.
|
||||||
|
|
||||||
|
6 severity 5 violations.
|
||||||
|
5 severity 4 violations.
|
||||||
|
120 severity 3 violations.
|
||||||
|
|
||||||
|
6 violations of BuiltinFunctions::ProhibitStringyEval.
|
||||||
|
1 violations of ControlStructures::ProhibitDeepNests.
|
||||||
|
1 violations of ErrorHandling::RequireCarping.
|
||||||
|
1 violations of ErrorHandling::RequireCheckingReturnValueOfEval.
|
||||||
|
4 violations of InputOutput::ProhibitBacktickOperators.
|
||||||
|
1 violations of InputOutput::ProhibitJoinedReadline.
|
||||||
|
1 violations of InputOutput::ProhibitOneArgSelect.
|
||||||
|
2 violations of InputOutput::RequireBriefOpen.
|
||||||
|
1 violations of Modules::ProhibitExcessMainComplexity.
|
||||||
|
1 violations of Modules::ProhibitMultiplePackages.
|
||||||
|
1 violations of RegularExpressions::ProhibitCaptureWithoutTest.
|
||||||
|
9 violations of RegularExpressions::ProhibitComplexRegexes.
|
||||||
|
44 violations of RegularExpressions::RequireExtendedFormatting.
|
||||||
|
5 violations of Subroutines::ProhibitExcessComplexity.
|
||||||
|
11 violations of Subroutines::ProhibitManyArgs.
|
||||||
|
1 violations of ValuesAndExpressions::ProhibitImplicitNewlines.
|
||||||
|
16 violations of ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters.
|
||||||
|
22 violations of Variables::ProhibitReusedNames.
|
||||||
|
2 violations of Variables::ProhibitUnusedVariables.
|
||||||
|
1 violations of Variables::RequireLocalizedPunctuationVars.
|
||||||
|
@ -1,9 +1,38 @@
|
|||||||
Expression form of "eval" at line 4012, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 4391, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Expression form of "eval" at line 4242, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 4629, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Expression form of "eval" at line 6186, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 6706, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Expression form of "eval" at line 6426, column 13. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 6942, column 13. See page 161 of PBP. (Severity: 5)
|
||||||
Expression form of "eval" at line 7330, column 43. See page 161 of PBP. (Severity: 5)
|
Close filehandles as soon as possible after opening them at line 7338, column 9. See page 209 of PBP. (Severity: 4)
|
||||||
Expression form of "eval" at line 7334, column 45. See page 161 of PBP. (Severity: 5)
|
Expression form of "eval" at line 8051, column 42. See page 161 of PBP. (Severity: 5)
|
||||||
Close filehandles as soon as possible after opening them at line 7750, column 2. See page 209 of PBP. (Severity: 4)
|
Expression form of "eval" at line 8055, column 44. See page 161 of PBP. (Severity: 5)
|
||||||
Magic variable "*STDERR" should be assigned as "local" at line 7753, column 10. See pages 81,82 of PBP. (Severity: 4)
|
Close filehandles as soon as possible after opening them at line 8693, column 2. See page 209 of PBP. (Severity: 4)
|
||||||
One-argument "select" used at line 7754, column 2. See page 224 of PBP. (Severity: 4)
|
Magic variable "*STDERR" should be assigned as "local" at line 8696, column 10. See pages 81,82 of PBP. (Severity: 4)
|
||||||
|
One-argument "select" used at line 8697, column 2. See page 224 of PBP. (Severity: 4)
|
||||||
|
Multiple "package" declarations at line 9395, column 1. Limit to one per file. (Severity: 4)
|
||||||
|
|
||||||
|
1 files.
|
||||||
|
263 subroutines/methods.
|
||||||
|
8,603 statements.
|
||||||
|
|
||||||
|
9,486 lines, consisting of:
|
||||||
|
1,684 blank lines.
|
||||||
|
551 comment lines.
|
||||||
|
0 data lines.
|
||||||
|
6,579 lines of Perl code.
|
||||||
|
672 lines of POD.
|
||||||
|
|
||||||
|
Average McCabe score of subroutines was 4.35.
|
||||||
|
|
||||||
|
11 violations.
|
||||||
|
Violations per file was 11.000.
|
||||||
|
Violations per statement was 0.001.
|
||||||
|
Violations per line of code was 0.001.
|
||||||
|
|
||||||
|
6 severity 5 violations.
|
||||||
|
5 severity 4 violations.
|
||||||
|
|
||||||
|
6 violations of BuiltinFunctions::ProhibitStringyEval.
|
||||||
|
1 violations of InputOutput::ProhibitOneArgSelect.
|
||||||
|
2 violations of InputOutput::RequireBriefOpen.
|
||||||
|
1 violations of Modules::ProhibitMultiplePackages.
|
||||||
|
1 violations of Variables::RequireLocalizedPunctuationVars.
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
$SHELL says /bin/bash
|
$SHELL says /bin/bash
|
||||||
$0 gives ./INSTALL.d/prerequisites_imapsync
|
$0 gives ./INSTALL.d/prerequisites_imapsync
|
||||||
ps -ef gives gilles 1314 1313 0 09:43 pts/31 00:00:00 /bin/sh ./INSTALL.d/prerequisites_imapsync
|
ps -ef gives gilles 11305 11304 0 12:55 pts/27 00:00:00 /bin/sh ./INSTALL.d/prerequisites_imapsync
|
||||||
Distributor ID: Ubuntu
|
Distributor ID: Ubuntu
|
||||||
Description: Ubuntu 12.04.5 LTS
|
Description: Ubuntu 14.04.5 LTS
|
||||||
Release: 12.04
|
Release: 14.04
|
||||||
Codename: precise
|
Codename: trusty
|
||||||
Linux petite 3.2.0-97-generic #137-Ubuntu SMP Thu Dec 17 21:14:00 UTC 2015 i686 i686 i386 GNU/Linux
|
Linux petite 3.13.0-92-generic #139-Ubuntu SMP Tue Jun 28 20:42:32 UTC 2016 i686 i686 i686 GNU/Linux
|
||||||
Ok: Found Perl 5.14.2
|
Ok: Found Perl 5.18.2
|
||||||
Ok: Found Perl module Digest::HMAC_MD5
|
|
||||||
Ok: Found Perl module Authen::NTLM
|
Ok: Found Perl module Authen::NTLM
|
||||||
Ok: Found Perl module Compress::Zlib
|
Ok: Found Perl module Compress::Zlib
|
||||||
Ok: Found Perl module Data::Dumper
|
Ok: Found Perl module Data::Dumper
|
||||||
Ok: Found Perl module Data::Uniqid
|
Ok: Found Perl module Data::Uniqid
|
||||||
|
Ok: Found Perl module Digest::HMAC_MD5
|
||||||
Ok: Found Perl module Digest::HMAC
|
Ok: Found Perl module Digest::HMAC
|
||||||
Ok: Found Perl module Digest::MD5
|
Ok: Found Perl module Digest::MD5
|
||||||
Ok: Found Perl module File::Copy::Recursive
|
Ok: Found Perl module File::Copy::Recursive
|
||||||
@ -19,9 +19,12 @@ Ok: Found Perl module IO::Socket::INET
|
|||||||
Ok: Found Perl module IO::Socket::INET6
|
Ok: Found Perl module IO::Socket::INET6
|
||||||
Ok: Found Perl module IO::Socket::SSL
|
Ok: Found Perl module IO::Socket::SSL
|
||||||
Ok: Found Perl module IO::Tee
|
Ok: Found Perl module IO::Tee
|
||||||
|
Ok: Found Perl module JSON::WebToken
|
||||||
Ok: Found Perl module Mail::IMAPClient
|
Ok: Found Perl module Mail::IMAPClient
|
||||||
Ok: Found Perl module Parse::RecDescent
|
Ok: Found Perl module Parse::RecDescent
|
||||||
|
Ok: Found Perl module Readonly
|
||||||
Ok: Found Perl module Term::ReadKey
|
Ok: Found Perl module Term::ReadKey
|
||||||
|
Ok: Found Perl module Test::MockObject
|
||||||
Ok: Found Perl module Test::More
|
Ok: Found Perl module Test::More
|
||||||
Ok: Found Perl module Test::Pod
|
Ok: Found Perl module Test::Pod
|
||||||
Ok: Found Perl module Unicode::String
|
Ok: Found Perl module Unicode::String
|
||||||
|
@ -36,8 +36,8 @@
|
|||||||
See all possibilities in the new() method of IO::Socket::SSL
|
See all possibilities in the new() method of IO::Socket::SSL
|
||||||
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods
|
||||||
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
--sslargs2 str : Pass any ssl parameter for host2 ssl or tls connection.
|
||||||
See --sslargs1
|
See --sslargs1
|
||||||
|
|
||||||
--timeout1 int : Connection timeout in seconds for host1.
|
--timeout1 int : Connection timeout in seconds for host1.
|
||||||
Default is 120 and 0 means no timeout at all.
|
Default is 120 and 0 means no timeout at all.
|
||||||
--timeout2 int : Connection timeout in seconds for host2.
|
--timeout2 int : Connection timeout in seconds for host2.
|
||||||
@ -91,9 +91,9 @@
|
|||||||
It does it by adding two --regextrans2 options before
|
It does it by adding two --regextrans2 options before
|
||||||
all others. Add --debug to see what's really going on.
|
all others. Add --debug to see what's really going on.
|
||||||
|
|
||||||
--automap : guesses folders mapping, for folders like
|
--automap : guesses folders mapping, for folders like
|
||||||
"Sent", "Junk", "Drafts", "All", "Archive", "Flagged".
|
"Sent", "Junk", "Drafts", "All", "Archive", "Flagged".
|
||||||
--f1f2 str1=str2 : Force folder str1 to be synced to str2,
|
--f1f2 str1=str2 : Force folder str1 to be synced to str2,
|
||||||
--f1f2 overrides --automap and --regextrans2.
|
--f1f2 overrides --automap and --regextrans2.
|
||||||
--regextrans2 reg : Apply the whole regex to each destination folders.
|
--regextrans2 reg : Apply the whole regex to each destination folders.
|
||||||
--regextrans2 reg : and this one. etc.
|
--regextrans2 reg : and this one. etc.
|
||||||
@ -134,7 +134,7 @@
|
|||||||
--pipemess cmd : Apply this cmd command to each message content
|
--pipemess cmd : Apply this cmd command to each message content
|
||||||
before the copy.
|
before the copy.
|
||||||
--pipemess cmd : and this one, etc.
|
--pipemess cmd : and this one, etc.
|
||||||
|
|
||||||
--disarmreadreceipts : Disarms read receipts (host2 Exchange issue)
|
--disarmreadreceipts : Disarms read receipts (host2 Exchange issue)
|
||||||
|
|
||||||
--regexmess reg : Apply the whole regex to each message before transfer.
|
--regexmess reg : Apply the whole regex to each message before transfer.
|
||||||
@ -274,65 +274,52 @@
|
|||||||
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
--host1 test1.lamiral.info --user1 test1 --password1 secret1 \
|
||||||
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
--host2 test2.lamiral.info --user2 test2 --password2 secret2
|
||||||
|
|
||||||
Here is a [linux] system (Linux petite 3.2.0-97-generic #137-Ubuntu SMP Thu Dec 17 21:14:00 UTC 2015 i686)
|
Here is a [linux] system (Linux petite 3.13.0-92-generic #139-Ubuntu SMP Tue Jun 28 20:42:32 UTC 2016 i686)
|
||||||
With perl 5.14.2 Mail::IMAPClient 3.30
|
with Perl 5.18.2 Mail::IMAPClient 3.35
|
||||||
$Id: imapsync,v 1.684 2016/03/17 08:35:03 gilles Exp gilles $
|
$Id: prereq.scandeps,v 1.4 2016/08/19 10:55:47 gilles Exp gilles $
|
||||||
This current imapsync is up to date
|
This imapsync is up to date
|
||||||
|
|
||||||
Homepage: http://imapsync.lamiral.info/
|
Homepage: http://imapsync.lamiral.info/
|
||||||
|
|
||||||
[MSG] No '/home/gilles/.cpanplus/custom-sources' dir, skipping custom sources
|
[MSG] No '/home/gilles/.cpanplus/custom-sources' dir, skipping custom sources
|
||||||
[MSG] No '/home/gilles/.cpanplus/custom-sources' dir, skipping custom sources
|
[MSG] No '/home/gilles/.cpanplus/custom-sources' dir, skipping custom sources
|
||||||
[MSG] No '/home/gilles/.cpanplus/custom-sources' dir, skipping custom sources
|
[MSG] No '/home/gilles/.cpanplus/custom-sources' dir, skipping custom sources
|
||||||
'Tie::Hash::NamedCapture' => '0.08',
|
'Tie::Hash::NamedCapture' => '0.09',
|
||||||
'Authen::NTLM::DES' => '1.02',
|
'Authen::NTLM::DES' => '1.02',
|
||||||
'Authen::NTLM::MD4' => '1.02',
|
'Authen::NTLM::MD4' => '1.02',
|
||||||
'IO::Compress::Gzip' => '2.048',
|
'IO::Compress::Gzip' => '2.063',
|
||||||
'IO::Uncompress::Gunzip' => '2.048',
|
'IO::Compress::Base::Common' => '2.063',
|
||||||
'IO::Compress::Gzip::Constants' => '2.048',
|
'IO::Compress::Gzip::Constants' => '2.063',
|
||||||
'IO::Compress::Base::Common' => '2.048',
|
'IO::Uncompress::Gunzip' => '2.063',
|
||||||
'Compress::Raw::Zlib' => '2.048',
|
'Compress::Raw::Zlib' => '2.063',
|
||||||
'Convert::ASN1::IO' => 'undef',
|
'Convert::ASN1::IO' => '0.26',
|
||||||
'Convert::ASN1::_decode' => 'undef',
|
'Convert::ASN1::_decode' => '0.26',
|
||||||
'Convert::ASN1::_encode' => 'undef',
|
'Convert::ASN1::_encode' => '0.26',
|
||||||
'Convert::ASN1::parser' => 'undef',
|
'Convert::ASN1::parser' => '0.26',
|
||||||
'Crypt::SSLeay::X509' => 'undef',
|
'Crypt::SSLeay::X509' => 'undef',
|
||||||
'Crypt::SSLeay::CTX' => 'undef',
|
'Crypt::SSLeay::CTX' => 'undef',
|
||||||
'Digest::HMAC' => '1.03',
|
'Digest::HMAC' => '1.03',
|
||||||
'Encode::HanExtra' => '0.23',
|
'Encode::HanExtra' => '0.23',
|
||||||
'Cwd' => '3.33',
|
'HTML::Parser' => '3.71',
|
||||||
'HTML::Parser' => '3.69',
|
|
||||||
'HTTP::Cookies::Netscape' => '6.00',
|
'HTTP::Cookies::Netscape' => '6.00',
|
||||||
'Time::Zone' => '2.24',
|
'Time::Zone' => '2.24',
|
||||||
'IO::Compress::Bzip2' => '2.048',
|
'IO::Compress::Bzip2' => '2.063',
|
||||||
'IO::Compress::Deflate' => '2.048',
|
'IO::Compress::Deflate' => '2.063',
|
||||||
'IO::Uncompress::Bunzip2' => '2.048',
|
'IO::HTML' => '1.00',
|
||||||
'IO::Uncompress::Inflate' => '2.048',
|
'IO::Uncompress::Bunzip2' => '2.063',
|
||||||
'IO::Uncompress::RawInflate' => '2.048',
|
'IO::Uncompress::Inflate' => '2.063',
|
||||||
'HTTP::Message' => '6.01',
|
'IO::Uncompress::RawInflate' => '2.063',
|
||||||
|
'HTTP::Message' => '6.06',
|
||||||
'File::GlobMapper' => '1.000',
|
'File::GlobMapper' => '1.000',
|
||||||
'IO::Compress::Base' => '2.048',
|
'IO::Compress::Base' => '2.063',
|
||||||
'IO::Compress::Adapter::Bzip2' => '2.048',
|
'IO::Compress::Adapter::Bzip2' => '2.063',
|
||||||
'IO::Compress::RawDeflate' => '2.048',
|
'IO::Compress::Zlib::Constants' => '2.063',
|
||||||
'IO::Compress::Adapter::Deflate' => '2.048',
|
'IO::Compress::RawDeflate' => '2.063',
|
||||||
'IO::Compress::Zlib::Extra' => '2.048',
|
'IO::Compress::Adapter::Deflate' => '2.063',
|
||||||
'Socket6' => '0.23',
|
'Socket6' => '0.25',
|
||||||
'IO::Socket::INET6' => '2.69',
|
|
||||||
'Net::SSLeay' => '1.42',
|
|
||||||
'Compress::Raw::Bzip2' => '2.048',
|
|
||||||
'IO::Uncompress::Adapter::Bunzip2' => '2.048',
|
|
||||||
'IO::Uncompress::Base' => '2.048',
|
|
||||||
'IO::Compress::Zlib::Constants' => '2.048',
|
|
||||||
'IO::Uncompress::Adapter::Inflate' => '2.048',
|
|
||||||
'JSON::WebToken::Constants' => 'undef',
|
|
||||||
'JSON::WebToken::Exception' => 'undef',
|
|
||||||
'Module::Runtime' => '0.011',
|
|
||||||
'JSON::WebToken::Crypt' => 'undef',
|
|
||||||
'common::sense' => '3.4',
|
|
||||||
'Authen::NTLM' => '1.09',
|
|
||||||
'CPAN::Config' => 'undef',
|
|
||||||
'URI' => '1.59',
|
|
||||||
'URI::data' => 'undef',
|
'URI::data' => 'undef',
|
||||||
|
'URI::_idna' => 'undef',
|
||||||
|
'URI::_generic' => 'undef',
|
||||||
'URI::mailto' => 'undef',
|
'URI::mailto' => 'undef',
|
||||||
'URI::_query' => 'undef',
|
'URI::_query' => 'undef',
|
||||||
'URI::QueryParam' => 'undef',
|
'URI::QueryParam' => 'undef',
|
||||||
@ -369,72 +356,90 @@ Homepage: http://imapsync.lamiral.info/
|
|||||||
'URI::news' => 'undef',
|
'URI::news' => 'undef',
|
||||||
'URI::rtsp' => 'undef',
|
'URI::rtsp' => 'undef',
|
||||||
'URI::Heuristic' => '4.20',
|
'URI::Heuristic' => '4.20',
|
||||||
'URI::_userpass' => 'undef',
|
|
||||||
'URI::sip' => '0.11',
|
'URI::sip' => '0.11',
|
||||||
|
'URI::_userpass' => 'undef',
|
||||||
'URI::_login' => 'undef',
|
'URI::_login' => 'undef',
|
||||||
'URI::_idna' => 'undef',
|
'URI::file' => '4.21',
|
||||||
'URI::_generic' => 'undef',
|
'URI::WithBase' => '2.20',
|
||||||
'LWP::MediaTypes' => '6.01',
|
'URI' => '1.60',
|
||||||
'File::Listing' => '6.03',
|
'URI::_server' => 'undef',
|
||||||
'HTTP::Negotiate' => '6.00',
|
'Net::SSLeay' => '1.58',
|
||||||
'Net::HTTP' => '6.02',
|
'Compress::Raw::Bzip2' => '2.063',
|
||||||
'Net::HTTPS' => '6.02',
|
'IO::Uncompress::Adapter::Bunzip2' => '2.063',
|
||||||
'LWP::Debug' => 'undef',
|
'IO::Uncompress::Base' => '2.063',
|
||||||
'Net::LDAP' => '0.43',
|
'IO::Compress::Zlib::Extra' => '2.063',
|
||||||
'Net::LDAP::LDIF' => '0.18',
|
'IO::Uncompress::Adapter::Inflate' => '2.063',
|
||||||
'Mail::Internet' => '2.08',
|
'JSON::WebToken::Constants' => 'undef',
|
||||||
'HTTP::Status' => '6.00',
|
'JSON::WebToken::Exception' => 'undef',
|
||||||
|
'Module::Runtime' => '0.013',
|
||||||
|
'JSON::WebToken::Crypt' => 'undef',
|
||||||
|
'common::sense' => '3.72',
|
||||||
|
'Authen::NTLM' => '1.09',
|
||||||
|
'HTTP::Status' => '6.03',
|
||||||
'LWP::Protocol' => '6.00',
|
'LWP::Protocol' => '6.00',
|
||||||
'HTTP::Response' => '6.01',
|
'HTTP::Response' => '6.04',
|
||||||
|
'CPAN::Config' => 'undef',
|
||||||
|
'LWP::MediaTypes' => '6.02',
|
||||||
'HTTP::Request' => '6.00',
|
'HTTP::Request' => '6.00',
|
||||||
'HTML::HeadParser' => '3.69',
|
'HTTP::Date' => '6.02',
|
||||||
|
'File::Listing' => '6.04',
|
||||||
|
'HTTP::Negotiate' => '6.00',
|
||||||
|
'Net::HTTP' => '6.06',
|
||||||
|
'Net::HTTPS' => '6.04',
|
||||||
|
'Net::SSL' => '2.85',
|
||||||
|
'LWP::Debug' => 'undef',
|
||||||
|
'Net::LDAP::DSML' => '0.16',
|
||||||
|
'Net::LDAP' => '0.58',
|
||||||
|
'Net::LDAP::LDIF' => '0.22',
|
||||||
|
'Mail::Internet' => '2.12',
|
||||||
|
'HTML::HeadParser' => '3.71',
|
||||||
'HTTP::Config' => '6.00',
|
'HTTP::Config' => '6.00',
|
||||||
'HTTP::Request::Common' => '6.00',
|
'HTTP::Request::Common' => '6.04',
|
||||||
'LWP::ConnCache' => '6.02',
|
'LWP::ConnCache' => '6.02',
|
||||||
'HTTP::Cookies' => '6.00',
|
'HTTP::Cookies' => '6.00',
|
||||||
'HTTP::Headers' => '6.00',
|
'HTTP::Headers' => '6.05',
|
||||||
'Encode::Locale' => '1.02',
|
'Encode::Locale' => '1.03',
|
||||||
'HTTP::Headers::Util' => '6.00',
|
'HTTP::Headers::Util' => '6.03',
|
||||||
'LWP::MemberMixin' => 'undef',
|
'LWP::MemberMixin' => 'undef',
|
||||||
'LWP' => '6.03',
|
'LWP' => '6.05',
|
||||||
'HTTP::Date' => '6.00',
|
'Compress::Zlib' => '2.063',
|
||||||
'Compress::Zlib' => '2.048',
|
|
||||||
'Mail::IMAPClient::MessageSet' => 'undef',
|
'Mail::IMAPClient::MessageSet' => 'undef',
|
||||||
'Digest::HMAC_MD5' => '1.01',
|
'Digest::HMAC_MD5' => '1.01',
|
||||||
'Mail::Address' => '2.08',
|
'Mail::Address' => '2.12',
|
||||||
'Mail::Header' => '2.08',
|
'Mail::Header' => '2.12',
|
||||||
'Mail::Mailer' => '2.08',
|
'Mail::Mailer' => '2.12',
|
||||||
'Mail::Util' => '2.08',
|
'Mail::Util' => '2.12',
|
||||||
'Params::Classify' => '0.013',
|
'Net::HTTP::Methods' => '6.06',
|
||||||
'Net::HTTP::Methods' => '6.00',
|
'Net::LDAP::Bind' => '1.04',
|
||||||
'Net::SSL' => '2.84',
|
'Net::LDAP::Extension' => '1.03',
|
||||||
'Net::LDAP::Bind' => '1.03',
|
'Net::LDAP::RootDSE' => '0.02',
|
||||||
'Net::LDAP::Extension' => '1.02',
|
'Net::LDAP::Search' => '0.14',
|
||||||
'Net::LDAP::RootDSE' => '0.01',
|
'Convert::ASN1::Debug' => '0.26',
|
||||||
'Net::LDAP::Schema' => '0.9905',
|
'Convert::ASN1' => '0.26',
|
||||||
'Net::LDAP::Search' => '0.13',
|
'Net::LDAP::Constant' => '0.22',
|
||||||
'Convert::ASN1::Debug' => 'undef',
|
'Net::LDAP::ASN' => '0.11',
|
||||||
'Convert::ASN1' => '0.22',
|
'Net::LDAP::Message' => '1.12',
|
||||||
'Net::LDAP::Entry' => '0.24',
|
'Net::LDAP::Filter' => '0.19',
|
||||||
'Net::LDAP::ASN' => '0.08',
|
'XML::SAX::Base' => '1.07',
|
||||||
'Net::LDAP::Constant' => '0.08',
|
'Net::LDAP::Schema' => '0.9908',
|
||||||
'Net::LDAP::Filter' => '0.15',
|
'Net::LDAP::Entry' => '0.26',
|
||||||
'Net::LDAP::Message' => '1.11',
|
'Net::LDAP::Control' => '0.15',
|
||||||
'Net::LDAP::Util' => '0.11',
|
'Net::LDAP::Util' => '0.18',
|
||||||
'Net::LDAP::Control' => '0.09',
|
'Net::LDAP::Intermediate' => '0.04',
|
||||||
'Net::LDAP::Intermediate' => '0.02',
|
|
||||||
'Crypt::SSLeay::Conn' => 'undef',
|
'Crypt::SSLeay::Conn' => 'undef',
|
||||||
'Crypt::SSLeay::Err' => 'undef',
|
'Crypt::SSLeay::Err' => 'undef',
|
||||||
'Crypt::SSLeay::MainContext' => 'undef',
|
'Crypt::SSLeay::MainContext' => 'undef',
|
||||||
'Crypt::SSLeay' => '0.57',
|
'Crypt::SSLeay' => '0.58',
|
||||||
|
'Readonly::Array' => '1.04',
|
||||||
|
'Readonly::Hash' => '1.04',
|
||||||
|
'Readonly::Scalar' => '1.04',
|
||||||
'Test::Builder::IO::Scalar' => '2.110',
|
'Test::Builder::IO::Scalar' => '2.110',
|
||||||
'threads::shared' => '1.40',
|
'UNIVERSAL::can' => '1.20140124',
|
||||||
'Test::Builder' => '0.98',
|
'UNIVERSAL::isa' => '1.20120726',
|
||||||
'Test::Builder::Module' => '0.98',
|
'Test::Builder' => '1.001002',
|
||||||
'URI::WithBase' => '2.20',
|
'Test::Builder::Module' => '1.001002',
|
||||||
'URI::file' => '4.21',
|
|
||||||
'URI::_server' => 'undef',
|
|
||||||
'Unicode::CharName' => '1.07',
|
'Unicode::CharName' => '1.07',
|
||||||
|
'XML::SAX::Exception' => '1.07',
|
||||||
'Crypt::OpenSSL::Bignum' => '0.04',
|
'Crypt::OpenSSL::Bignum' => '0.04',
|
||||||
'Crypt::OpenSSL::Random' => '0.04',
|
'Crypt::OpenSSL::Random' => '0.04',
|
||||||
'Data::Uniqid' => '0.12',
|
'Data::Uniqid' => '0.12',
|
||||||
@ -443,20 +448,26 @@ Homepage: http://imapsync.lamiral.info/
|
|||||||
'IO::Tee' => '0.64',
|
'IO::Tee' => '0.64',
|
||||||
'JSON::WebToken' => '0.10',
|
'JSON::WebToken' => '0.10',
|
||||||
'JSON::WebToken::Crypt::RSA' => 'undef',
|
'JSON::WebToken::Crypt::RSA' => 'undef',
|
||||||
'Term::ReadKey' => '2.30',
|
'Readonly' => '1.04',
|
||||||
'Test::More' => '0.98',
|
'Term::ReadKey' => '2.31',
|
||||||
|
'Test::MockObject' => '1.20120301',
|
||||||
|
'Test::More' => '1.001002',
|
||||||
'Unicode::String' => '2.09',
|
'Unicode::String' => '2.09',
|
||||||
'File::Spec::Unix' => '3.33',
|
'File::Spec::Unix' => '3.40',
|
||||||
'File::Spec' => '3.33',
|
'File::Spec' => '3.40',
|
||||||
'JSON::PP' => '2.27203',
|
'Cwd' => '3.40',
|
||||||
'JSON::PP::Boolean' => 'undef',
|
'URI::http' => 'undef',
|
||||||
'JSON::XS::Boolean' => 'undef',
|
'URI::URL' => '5.04',
|
||||||
'JSON' => '2.53',
|
|
||||||
'Crypt::OpenSSL::RSA' => '0.27',
|
|
||||||
'JSON::XS' => '2.32',
|
|
||||||
'LWP::UserAgent' => '6.03',
|
|
||||||
'HTML::Entities' => '3.69',
|
|
||||||
'URI::Escape' => '3.31',
|
'URI::Escape' => '3.31',
|
||||||
|
'JSON' => '2.61',
|
||||||
|
'JSON::XS::Boolean' => 'undef',
|
||||||
|
'JSON::XS' => '2.34',
|
||||||
|
'Crypt::OpenSSL::RSA' => '0.28',
|
||||||
|
'LWP::UserAgent' => '6.05',
|
||||||
|
'HTML::Entities' => '3.69',
|
||||||
|
'LWP::Protocol::http' => 'undef',
|
||||||
|
'IO::Socket::SSL' => '1.965',
|
||||||
|
'LWP::Protocol::ldap' => '1.25',
|
||||||
'LWP::Authen::Digest' => 'undef',
|
'LWP::Authen::Digest' => 'undef',
|
||||||
'LWP::Authen::Ntlm' => '6.00',
|
'LWP::Authen::Ntlm' => '6.00',
|
||||||
'LWP::Protocol::GHTTP' => 'undef',
|
'LWP::Protocol::GHTTP' => 'undef',
|
||||||
@ -465,15 +476,11 @@ Homepage: http://imapsync.lamiral.info/
|
|||||||
'LWP::Protocol::file' => 'undef',
|
'LWP::Protocol::file' => 'undef',
|
||||||
'LWP::Protocol::ftp' => 'undef',
|
'LWP::Protocol::ftp' => 'undef',
|
||||||
'LWP::Protocol::gopher' => 'undef',
|
'LWP::Protocol::gopher' => 'undef',
|
||||||
'LWP::Protocol::https' => '6.02',
|
'LWP::Protocol::https' => '6.04',
|
||||||
|
'LWP::Protocol::ldapi' => 'undef',
|
||||||
'LWP::Protocol::ldaps' => 'undef',
|
'LWP::Protocol::ldaps' => 'undef',
|
||||||
'LWP::Protocol::loopback' => 'undef',
|
'LWP::Protocol::loopback' => 'undef',
|
||||||
'LWP::Protocol::mailto' => 'undef',
|
'LWP::Protocol::mailto' => 'undef',
|
||||||
'LWP::Protocol::nntp' => 'undef',
|
'LWP::Protocol::nntp' => 'undef',
|
||||||
'LWP::Protocol::nogo' => 'undef',
|
'LWP::Protocol::nogo' => 'undef',
|
||||||
'LWP::Authen::Basic' => 'undef',
|
'LWP::Authen::Basic' => 'undef',
|
||||||
'URI::URL' => '5.04',
|
|
||||||
'URI::http' => 'undef',
|
|
||||||
'LWP::Protocol::http' => 'undef',
|
|
||||||
'LWP::Protocol::ldap' => '1.11',
|
|
||||||
'IO::Socket::SSL' => '1.53',
|
|
||||||
|
11
W/test2.bat
11
W/test2.bat
@ -1,11 +1,12 @@
|
|||||||
|
|
||||||
@REM $Id: test2.bat,v 1.20 2015/11/23 16:47:01 gilles Exp gilles $
|
@REM $Id: test2.bat,v 1.21 2016/05/27 23:05:23 gilles Exp gilles $
|
||||||
@REM
|
@REM
|
||||||
|
|
||||||
cd /D %~dp0
|
cd /D %~dp0
|
||||||
|
|
||||||
@REM @ECHO off
|
@REM @ECHO off
|
||||||
.\imapsync.exe --modules_version
|
|
||||||
@PAUSE
|
@REM perl .\imapsync --host1 p --ssl1 --user1 tata --passfile1 secret.tata --host2 p --ssl2 --user2 titi --passfile2 secret.titi --justfoldersizes | findstr /C:"Host2 Total size:"
|
||||||
.\imapsync.exe --testslive
|
|
||||||
@PAUSE
|
|
||||||
|
findstr /l /C:"Error login" LOG_imapsync\*.txt
|
||||||
|
10
W/test3.bat
10
W/test3.bat
@ -1,16 +1,12 @@
|
|||||||
|
|
||||||
@REM $Id: test3.bat,v 1.23 2015/12/14 15:15:12 gilles Exp gilles $
|
@REM $Id: test3.bat,v 1.24 2016/08/05 14:22:42 gilles Exp gilles $
|
||||||
cd /D %~dp0
|
cd /D %~dp0
|
||||||
|
|
||||||
@REM \$1 must be $1 on Windows
|
@REM \$1 must be $1 on Windows
|
||||||
|
|
||||||
@REM ==== password within double-quotes
|
@REM ==== password within double-quotes
|
||||||
perl ./imapsync ^
|
perl ./imapsync --host1 p --user1 tata --passfile1 secret.tata --host2 p --user2 titi --passfile2 secret.titi ^
|
||||||
--host1 p --user1 tata ^
|
--debugimap2 --debugcontent --folder INBOX --maxage 1
|
||||||
--password1 """(secret)""" ^
|
|
||||||
--host2 p --user2 titi ^
|
|
||||||
--passfile2 secret.titi ^
|
|
||||||
--justlogin --debugimap1 --showpassword
|
|
||||||
@EXIT
|
@EXIT
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
@REM $Id: test3_gmail.bat,v 1.3 2015/09/19 08:23:14 gilles Exp gilles $
|
@REM $Id: test3_gmail.bat,v 1.4 2016/08/19 14:11:00 gilles Exp gilles $
|
||||||
|
|
||||||
cd /D %~dp0
|
cd /D %~dp0
|
||||||
|
|
||||||
@REM ./imapsync.exe --modules_version
|
@REM ./imapsync.exe --justbanner
|
||||||
|
|
||||||
@REM perl .\imapsync --host1 imap.gmail.com --ssl1 --user1 gilles.lamiral@gmail.com --passfile1 secret.gilles_gmail ^
|
@REM perl .\imapsync --host1 imap.gmail.com --ssl1 --user1 gilles.lamiral@gmail.com --passfile1 secret.gilles_gmail ^
|
||||||
@REM --host2 imap.gmail.com --ssl2 --user2 gilles.lamiral@gmail.com --passfile2 secret.gilles_gmail ^
|
@REM --host2 imap.gmail.com --ssl2 --user2 gilles.lamiral@gmail.com --passfile2 secret.gilles_gmail ^
|
||||||
@ -13,4 +13,4 @@ cd /D %~dp0
|
|||||||
|
|
||||||
perl .\imapsync --host1 imap.gmail.com --ssl1 --user1 gilles.lamiral@gmail.com --passfile1 secret.gilles_gmail ^
|
perl .\imapsync --host1 imap.gmail.com --ssl1 --user1 gilles.lamiral@gmail.com --passfile1 secret.gilles_gmail ^
|
||||||
--host2 p --user2 tata --passfile2 secret.tata ^
|
--host2 p --user2 tata --passfile2 secret.tata ^
|
||||||
--regextrans2 "s,\[Gmail\].,," --dry --justfolders
|
--regextrans2 "s,\[Gmail\].,," --dry --justfolders
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user