| Commit message (Collapse) | Author | Age | Files | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
| 
|  | 
microsoft's IMAP server violates RFC 3501 by skipping the trailing space
for empty resp-text.
 | 
| | 
| 
| 
| 
|  | 
We require QRESYNC support (RFC 7162) for syncing, which requires UID
(MODSEQ) in unsolicited FETCH responses, cf RFC 7162 section 3.2.4.
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
RFC 3501:
    INBOX is case-insensitive.  All case variants of INBOX (e.g., "iNbOx") MUST
    be interpreted as INBOX not as an astring.  An astring which consists of
    the case-insensitive sequence "I" "N" "B" "O" "X" is considered to be INBOX
    and not an astring.
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| |  | 
 | 
| | 
| 
| 
| 
|  | 
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.
 |