|  | Commit message (Collapse) | Author | Age | Files | 
|---|
| | |  | 
| | |  | 
| | |  | 
| | |  | 
| | |  | 
| | 
| 
| 
| 
| | This is most likely useless in our case since the TCP keepalive time is
usually much higher than the IMAP timeout. | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | “If the server does not know how to decode the section's CTE, it MUST
fail the request and issue a "NO" response that contains the
"UNKNOWN-CTE" extended response code.” — [RFC3516 section 4.3]
Unfortunately the client doesn't know which message couldn't be decoded,
so it can't fallback and use BODY instead.
This made ‘use-binary=NO’ pretty much mandatory.  Hence we remove
support for BINARY [RFC3516].  Instead, we increase the thresold for
when to add Zlib full flush points from 4096 to the buffer size (32768). | 
| | |  | 
| | |  | 
| | |  | 
| | |  | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Also,
  * Rename the 'SSL_verify_trusted_peer', 'SSL_ca_path', and
    'SSL_cipher_list' options to 'SSL_CApath', 'SSL_verify' and
    'SSL_cipherlist', respectively.
  * Add an option 'SSL_CAfile' to specify a file containing trusted
    certificates to use during server certificate authentication.
  * Replace Compress::Zlib dependency by the lower level
    Compress::Raw::Zlib. | 
| | |  | 
| | |  | 
| | 
| 
| 
| 
| 
| 
| 
| | Also, add SSL options SINGLE_ECDH_USE, SINGLE_DH_USE, NO_SSLv2, NO_SSLv3
and NO_COMPRESSION to the compiled-in CTX options.
And use SSL_MODE_AUTO_RETRY to avoid SSL_read failures during a
handshake. | 
| | |  | 
| | |  | 
| | |  | 
| | |  | 
| | |  | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Unfortunately as of Debian Wheezy it doesn't work for Dovecot with
COMPRESS=DEFLATE [RFC4978] and non-synchronizing literals.
    perl -e 'use Compress::Raw::Zlib;
             print "a COMPRESS DEFLATE\r\n";
             sleep 1;
             my $d = new Compress::Raw::Zlib::Deflate( -WindowBits => -15 );
             $d->deflate("b APPEND TRASH ~{1+}\r\nx\r\n", my $buf);
             print $buf;
             $d->flush($buf, Z_SYNC_FLUSH);
             print $buf;
             sleep 1;
    ' | /usr/lib/dovecot/imap
    imap(guilhem): Panic: stream doesn't support seeking backwards
Interestingly, it works just fine for non-binary literals:
    perl -e 'use Compress::Raw::Zlib;
             print "a COMPRESS DEFLATE\r\n";
             sleep 1;
             my $d = new Compress::Raw::Zlib::Deflate( -WindowBits => -15 );
             $d->deflate("b APPEND TRASH {1+}\r\nx\r\n", my $buf);
             print $buf;
             $d->flush($buf, Z_SYNC_FLUSH);
             print $buf;
             sleep 1;
    ' | /usr/lib/dovecot/imap
However I can't reproduce the problem Dovecot 2.2.18 and Debian Sid (but
it doesn't help to install Dovecot from testing to my Wheezy box.) | 
| | 
| 
| 
| | To send STDERR to /dev/null for type=tunnel. | 
| | 
| 
| 
| 
| | Also, add traffic statistics after closing the connection to the IMAP
server. | 
| | |  | 
| | 
| 
| 
| | So we can clean after us (and for instance remove the lockfile). | 
| | 
| 
| 
| | To avoid confusion with http://imapsync.lamiral.info . | 
| | |  | 
| | 
| 
| 
| 
| 
| | Cf. RFC 7162:
  seq-match-data = "(" known-sequence-set SP known-uid-set ")" | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | This should avoids most false-positive among messages reported as
VANISHED by the server but unknown from the database.  The reason for
this server behavior is that QRESYNC [RFC7162] doesn't force the server
to remember the MODSEQs of EXPUNGEd messages.  By passing a sample of
known UIDs/sequence numbers we let the server know that the messages
have been EXPUNGEd [RFC7162, section 3.2.5.2]. | 
| | 
| 
| 
| | commands. | 
| | 
| 
| 
| 
| | Also, don't try to import POSIX or Time::HiRes unless the logfile is
configured. | 
| | 
| 
| 
| 
| | However don't include timestamps to STDERR, that's the job of the
syslog. | 
| | |  | 
| | 
| 
| 
| | \HasNoChildren attribute. | 
| | 
| 
| 
| 
| 
| | And no longer crash when trying to create a mailbox that already exists.
This could happen for instance if list-select-opts contains 'SUBSCRIBE'
and the mailbox is not subscribed on one side. | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Add 3 options:
  - list-mailbox
  - list-select-opts
  - ignore-mailbox
The first two control the initial LIST command, while the last one is a
regular expression to filter out mailboxes to exclude from the LIST
response. | 
| | 
| 
| 
| 
| | It didn't really work since STORE commands are answered with a tagged OK
response for instance. | 
| | |  | 
| | 
| 
| 
| 
| 
| | This was too error-prone.  Instead, abort if a naming conflict occurs,
and provide explicit commands --delete and --rename to delete or rename
a mailbox. | 
| | |  | 
| | 
| 
| 
| 
| 
| 
| | its UIDNEXT.
So we need to check again the first $source (remote) whenever the last
one (local) added new messages to it. | 
| | |  | 
| | 
| 
| 
| 
| 
| 
| | Instead use the select(2) syscall to see if there data available while
we're waiting for notifications.
Except for SSL/TLS connections, where we have to check if there is
unprocessed cached data in the current SSL frame. | 
| | |  | 
| | 
| 
| 
| | Also, LOGIN is always supported. | 
| | |  | 
| | |  | 
| | |  | 
| | |  | 
| | |  |