aboutsummaryrefslogtreecommitdiffstats
path: root/Changelog
Commit message (Collapse)AuthorAgeFiles
* New option 'list-reference' to specify a reference name.Guilhem Moulin2019-05-271
| | | | | | | | This is useful for synchronizing multiple remote servers against different namespaces belonging to the same local IMAP server (using a different InterIMAP instance for each local namespace ↔ remote synchronization, for instance with the newy provided systemd template unit file).
* libinterimap: use socketpair(2) in tunnel mode.Guilhem Moulin2019-05-271
| | | | | | Rather than two pipe(2). Also, use SOCK_CLOEXEC to save a fcntl() call when setting the close-on-exec flag on the socket (even though Perl will likely call fcntl() anyway).
* interimap: fix handling of mod-sequence values greater or equal than 2 << 63.Guilhem Moulin2019-05-271
| | | | | | | | | | | | | | | SQLite processes every INTEGER values as a 8-byte signed integer, so we need to manually do the conversion from/to uint64_t client-side if we don't want to overflow or receive floats. https://www.sqlite.org/datatype3.html#storage_classes_and_datatypes http://jakegoulding.com/blog/2011/02/06/sqlite-64-bit-integers/ We could also do the same trick for local/remote UIDs, UIDVALITY and UIDNEXT values to slim the database down at the expense of pre/post- processing. (Values of SQLite's INTEGER class are 1, 2, 3, 4, 6, or 8 bytes signed integers depending on the manitudes, so we could save some space for values ≥2³¹.) But that seems a little overkill.
* interimap: Enforce SQLite foreign key constraints.Guilhem Moulin2019-05-271
| | | | | | | | Setting the 'foreign_keys' PRAGMA during a multi-statement transaction (when SQLite is not in autocommit mode) is a no-op. https://www.sqlite.org/pragma.html#pragma_foreign_keys https://www.sqlite.org/foreignkeys.html#fk_enable
* interimap: avoid caching hierarchy delimiters forever in the database.Guilhem Moulin2019-05-271
| | | | | | | | | | | | | | | | | | | | Following recommendation from https://www.imapwiki.org/ClientImplementation/MailboxList#Hierarchy_separators Instead, use null characters internally, and substitute them with the local and remote hierarchy delimiters (which thus no longer need to match) for IMAP commands. This require a database schema upgrade to alter the mailbox name column type from TEXT to BLOB. We're using SQLite's user_version PRAGMA to keep track of schema version; beware that `.dump` doesn't export its value! In logging messages, local and remote mailbox names are shown as is (with their respective delimiters) while database mailbox names are shown by replacing null characters with the *local* hierarchy delimiter. Moreover for mailbox names specified on the command line or the configuration file (with the "list-mailbox" option) the *local* hierarchy delimiter should be used.
* interimap: Refactor --target handling.Guilhem Moulin2019-05-271
| | | | Also, accept comma-separated values for --target.
* interimap: fail when two non-INBOX LIST replies return different separators.Guilhem Moulin2019-05-271
| | | | | | This never happens for a single LIST command, but may happen if mailboxes from different namespaces are being listed. The workaround here is to run a new interimap instance for each namespace.
* interimap: accept C-style escape sequences in 'list-mailbox'.Guilhem Moulin2019-05-271
| | | | | This is useful for defining names containing control characters (incl. \0 for unspecified hierarchy delimiter).
* interimap: Factor out error throwing.Guilhem Moulin2019-05-271
| | | | Also, write which --target to use in --delete command suggestions.
* libinterimap: astring is 1*ASTRING-CHAR / string.Guilhem Moulin2019-05-271
| | | | | | | | | | | | | | | Not 1*ATOM-CHAR / string. Also accept LIST responses mailbox names containing '%', '*', or ']'. From RFC 3501: astring = 1*ASTRING-CHAR / string ASTRING-CHAR = ATOM-CHAR / resp-specials list = "LIST" SP mailbox SP list-mailbox list-mailbox = 1*list-char / string list-char = ATOM-CHAR / list-wildcards / resp-specials list-wildcards = "%" / "*" resp-specials = "]"
* libinterimap: quote() the empty string as "" instead of a 0-length literal.Guilhem Moulin2019-05-271
| | | | | Compression asside, this saves 3 bytes and one round-trip on servers not supporting non-synchronizing literals, and 4 bytes otherwise.
* libinterimap: bugfix: fix escaped hierarchy delimiters in LIST reponses.Guilhem Moulin2019-05-271
| | | | | The were returned as escaped quoted specials, like "\\", not as a single character (backslash in this case).
* Prepare new release.upstream/0.4Guilhem Moulin2019-01-221
|
* Change e-mail address.Guilhem Moulin2019-01-221
|
* Net::IMAP::InterIMAP: add support for TLSv1.3 (on recent enough Net::SSLeay).Guilhem Moulin2019-01-221
| | | | | | | Also, change "SSL_protocols" default value from "!SSLv2 !SSLv3" to "!SSLv2 !SSLv3 !TLSv1 !TLSv1.1". I.e., only enable TLSv1.2 and later, which is the default in Debian's OpenSSL as of 1.1.1-2, cf. https://tracker.debian.org/news/998835/accepted-openssl-111-2-source-into-unstable/ .
* pullimap, interimap: don't autocreate statefile or database in long-lived mode.Guilhem Moulin2019-01-211
|
* interimap.service: use --watch=60 rather than --notify.Guilhem Moulin2019-01-201
|
* Specify minimum Perl and Net::SSLeay versions.Guilhem Moulin2019-01-201
|
* pullimap, interimap: Use $XDG_CONFIG_HOME/$NAME/config as config file.Guilhem Moulin2019-01-201
|
* pullimap: use extended SEARCH (RFC 4731) when availableGuilhem Moulin2018-05-101
|
* Improve wording.Guilhem Moulin2018-05-091
|
* Add support for untagged ESEARCH responses from RFC 4731.Guilhem Moulin2018-05-091
|
* Library: new API idle_start() and idle_stop().Guilhem Moulin2018-05-091
|
* Fix manpage generation with pandoc >=2.1Guilhem Moulin2018-04-261
|
* Add missing changelog entry.Guilhem Moulin2017-07-291
|
* Ensure the lower bound of UID ranges is at least 1.Guilhem Moulin2017-05-291
|
* pullimap: replace non RFC 5321-compliant envelope sender addresses by <>.Guilhem Moulin2016-12-061
|
* Update changelog.Guilhem Moulin2016-12-011
|
* pullimap: add a manpage and a configuration file.Guilhem Moulin2016-03-071
|
* 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
|
* Bug fix: don't delete the lockfile if another instance of interimap is running.Guilhem Moulin2015-09-221
|
* Use TCP keepalive to detect dead peers.Guilhem Moulin2015-09-211
|
* 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).
* Don't catch SIGHUP as it only work during IDLE.Guilhem Moulin2015-09-151
| | | | | Sending any signal while some mails are being copied interrupts the syscall (eg, write) and attempting to resume crashes interimap.
* 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
|
* 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.
* 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
|
* Exit with return value 0 when receiving a TERM signal.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.