aboutsummaryrefslogtreecommitdiffstats
path: root/lib
Commit message (Collapse)AuthorAgeFiles
...
* Log and debug messages: don't prefix with a ':' for nameless clients.Guilhem Moulin2016-03-031
|
* Ensure the inbox is always used in upper-case internally.Guilhem Moulin2016-03-031
| | | | | | | | | 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.
* Add an option 'SSL_protocols'.Guilhem Moulin2015-10-191
|
* Fix byte count for compression streams.Guilhem Moulin2015-10-061
|
* Bump version number.Guilhem Moulin2015-09-281
|
* Display source UIDs upon APPEND.upstream/0.2Guilhem Moulin2015-09-221
|
* Use TCP keepalive to detect dead peers.Guilhem Moulin2015-09-211
|
* Move SSL fingerprint verification to the the verify callback.Guilhem Moulin2015-09-161
|
* Display the certificate chain, SSL protocol and cipher in debug mode.Guilhem Moulin2015-09-161
|
* Set X.509 certificate purpose to 'SSL Server' for SSL_verify=YES.Guilhem Moulin2015-09-161
|
* Don't set SO_KEEPALIVE on the socket.Guilhem Moulin2015-09-151
| | | | | This is most likely useless in our case since the TCP keepalive time is usually much higher than the IMAP timeout.
* Remove support for the Binary Content extension [RFC3516].Guilhem Moulin2015-09-151
| | | | | | | | | | | | | “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).
* Add the ability to proxy TCP connections through a SOCKSv5 proxy.Guilhem Moulin2015-09-151
|
* Replace IO::Socket::INET dependency by the lower lever Socket to enable IPv6.Guilhem Moulin2015-09-151
|
* Accept non-fully qualified commands.Guilhem Moulin2015-09-141
|
* Pass literals by reference to save memory.Guilhem Moulin2015-09-141
|
* Replace IO::Socket::SSL dependency by the lower level Net::SSLeay.Guilhem Moulin2015-09-131
| | | | | | | | | | | | 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.
* Fix detection of boolean options.Guilhem Moulin2015-09-131
|
* Use 0/1 internally for 'NO'/'YES'.Guilhem Moulin2015-09-111
|
* Factor the SSL code (imaps and STARTTLS).Guilhem Moulin2015-09-111
| | | | | | | | 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.
* Print IMAP traffic stats when receiving a SIGHUP.Guilhem Moulin2015-09-101
|
* Don't warn that no compression is enabled if the server doesn't support it.Guilhem Moulin2015-09-101
|
* wibbleGuilhem Moulin2015-09-101
|
* Bump version.Guilhem Moulin2015-09-091
|
* Refactoring.Guilhem Moulin2015-09-091
|
* Add support for the Binary Content extension [RFC3516].Guilhem Moulin2015-09-091
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.)
* Add a configuration option 'null-stderr=YES'.Guilhem Moulin2015-09-091
| | | | To send STDERR to /dev/null for type=tunnel.
* Add support for the IMAP COMPRESS extension [RFC4978].Guilhem Moulin2015-09-091
| | | | | Also, add traffic statistics after closing the connection to the IMAP server.
* Add an option --watch to keep the connections open and wait for changes.Guilhem Moulin2015-09-081
|
* Block SIGINT signals to the children for type=tunnel.Guilhem Moulin2015-09-081
| | | | So we can clean after us (and for instance remove the lockfile).
* Rename ‘imapsync’ to ‘interimap’.Guilhem Moulin2015-09-071
| | | | To avoid confusion with http://imapsync.lamiral.info .
* wibbleGuilhem Moulin2015-09-061
|
* Message Sequence Match Data: sequence set come before UIDs.Guilhem Moulin2015-09-061
| | | | | | Cf. RFC 7162: seq-match-data = "(" known-sequence-set SP known-uid-set ")"
* Sample UIDs in SELECT $mailbox (QRESYNC ...) commands.Guilhem Moulin2015-09-051
| | | | | | | | | 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].
* Add support for SASL-IR (RFC 4959) to save a round-trip in AUTHENTICATE ↵Guilhem Moulin2015-08-091
| | | | commands.
* Log high precision timestamps in the logfile.Guilhem Moulin2015-07-311
| | | | | Also, don't try to import POSIX or Time::HiRes unless the logfile is configured.
* Log debug messages to STDERR unless 'logfile' is set.Guilhem Moulin2015-07-311
| | | | | However don't include timestamps to STDERR, that's the job of the syslog.
* Log out before exiting.Guilhem Moulin2015-07-301
|
* Don't try to rename children of mailboxes with \NoInferiors or ↵Guilhem Moulin2015-07-301
| | | | \HasNoChildren attribute.
* Add a $try parameter to create, delete, rename, etc.Guilhem Moulin2015-07-301
| | | | | | 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.
* Enable fine-grained control on the mailboxes to consider.Guilhem Moulin2015-07-271
| | | | | | | | | | | 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.
* Drop the 'read-only' option.Guilhem Moulin2015-07-271
| | | | | It didn't really work since STORE commands are answered with a tagged OK response for instance.
* bugfix: Don't exist with the children's exist status upon error.Guilhem Moulin2015-07-271
|
* No longer try to guess whether a mailbox was deleted or renamed.Guilhem Moulin2015-07-271
| | | | | | 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.
* typoGuilhem Moulin2015-07-261
|
* bugfix: Fetching new messages from local and adding them to remote modifies ↵Guilhem Moulin2015-07-261
| | | | | | | its UIDNEXT. So we need to check again the first $source (remote) whenever the last one (local) added new messages to it.
* Add an option 'logfile' to log debug messages.Guilhem Moulin2015-07-261
|
* Don't use readline with non-blocking IO.Guilhem Moulin2015-07-261
| | | | | | | 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.
* Clean how we're sending commands to the server.Guilhem Moulin2015-07-261
|
* LOGINDISABLED only disables plain-text mechanisms.Guilhem Moulin2015-07-261
| | | | Also, LOGIN is always supported.