]>
git.g-eek.se Git - interimap.git/log
Guilhem Moulin [Thu, 3 Mar 2016 21:26:33 +0000 (22:26 +0100)]
Don't modify the state when receiving an unsolicited FETCH response without UID
We require QRESYNC support (RFC 7162) for syncing, which requires UID
(MODSEQ) in unsolicited FETCH responses, cf RFC 7162 section 3.2.4.
Guilhem Moulin [Thu, 3 Mar 2016 21:25:29 +0000 (22:25 +0100)]
fix slurp(), useful for IDLE and NOTIFY.
Guilhem Moulin [Thu, 3 Mar 2016 21:03:48 +0000 (22:03 +0100)]
Log and debug messages: don't prefix with a ':' for nameless clients.
Guilhem Moulin [Thu, 3 Mar 2016 18:05:40 +0000 (19:05 +0100)]
Ensure the inbox is always used in upper-case internally.
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.
Guilhem Moulin [Fri, 6 Nov 2015 17:50:56 +0000 (18:50 +0100)]
wibble
Guilhem Moulin [Mon, 19 Oct 2015 15:14:43 +0000 (17:14 +0200)]
Add an option 'SSL_protocols'.
Guilhem Moulin [Tue, 6 Oct 2015 00:25:56 +0000 (02:25 +0200)]
Fix byte count for compression streams.
Guilhem Moulin [Sun, 27 Sep 2015 23:17:42 +0000 (01:17 +0200)]
Bump version number.
Guilhem Moulin [Tue, 22 Sep 2015 18:30:09 +0000 (20:30 +0200)]
Display source UIDs upon APPEND.
Guilhem Moulin [Tue, 22 Sep 2015 18:18:10 +0000 (20:18 +0200)]
Bug fix: don't delete the lockfile if another instance of interimap is running.
Guilhem Moulin [Tue, 22 Sep 2015 18:16:47 +0000 (20:16 +0200)]
wibble
Guilhem Moulin [Thu, 17 Sep 2015 20:05:09 +0000 (22:05 +0200)]
Use TCP keepalive to detect dead peers.
Guilhem Moulin [Wed, 16 Sep 2015 16:28:10 +0000 (18:28 +0200)]
Move SSL fingerprint verification to the the verify callback.
Guilhem Moulin [Wed, 16 Sep 2015 16:05:29 +0000 (18:05 +0200)]
Display the certificate chain, SSL protocol and cipher in debug mode.
Guilhem Moulin [Wed, 16 Sep 2015 14:49:00 +0000 (16:49 +0200)]
Set X.509 certificate purpose to 'SSL Server' for SSL_verify=YES.
Guilhem Moulin [Tue, 15 Sep 2015 16:24:43 +0000 (18:24 +0200)]
Don't set SO_KEEPALIVE on the socket.
This is most likely useless in our case since the TCP keepalive time is
usually much higher than the IMAP timeout.
Guilhem Moulin [Tue, 15 Sep 2015 14:48:29 +0000 (16:48 +0200)]
Remove support for the Binary Content extension [RFC3516].
“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).
Guilhem Moulin [Tue, 15 Sep 2015 03:14:06 +0000 (05:14 +0200)]
Don't catch SIGHUP as it only work during IDLE.
Sending any signal while some mails are being copied interrupts the
syscall (eg, write) and attempting to resume crashes interimap.
Guilhem Moulin [Tue, 15 Sep 2015 00:25:24 +0000 (02:25 +0200)]
wibble
Guilhem Moulin [Tue, 15 Sep 2015 00:10:55 +0000 (02:10 +0200)]
Add the ability to proxy TCP connections through a SOCKSv5 proxy.
Guilhem Moulin [Mon, 14 Sep 2015 19:11:56 +0000 (21:11 +0200)]
Replace IO::Socket::INET dependency by the lower lever Socket to enable IPv6.
Guilhem Moulin [Mon, 14 Sep 2015 11:54:52 +0000 (13:54 +0200)]
Add a SIGNAL section to the manpage.
Guilhem Moulin [Mon, 14 Sep 2015 11:46:02 +0000 (13:46 +0200)]
wibble
Guilhem Moulin [Mon, 14 Sep 2015 00:23:22 +0000 (02:23 +0200)]
Accept non-fully qualified commands.
Guilhem Moulin [Sun, 13 Sep 2015 23:20:53 +0000 (01:20 +0200)]
Pass literals by reference to save memory.
Guilhem Moulin [Sun, 13 Sep 2015 12:04:03 +0000 (14:04 +0200)]
Replace IO::Socket::SSL dependency by the lower level Net::SSLeay.
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.
Guilhem Moulin [Sun, 13 Sep 2015 11:37:50 +0000 (13:37 +0200)]
Fix detection of boolean options.
Guilhem Moulin [Thu, 10 Sep 2015 22:30:23 +0000 (00:30 +0200)]
Use 0/1 internally for 'NO'/'YES'.
Guilhem Moulin [Thu, 10 Sep 2015 22:20:10 +0000 (00:20 +0200)]
Factor the SSL code (imaps and STARTTLS).
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.
Guilhem Moulin [Thu, 10 Sep 2015 18:39:50 +0000 (20:39 +0200)]
Print IMAP traffic stats when receiving a SIGHUP.
Guilhem Moulin [Thu, 10 Sep 2015 18:19:36 +0000 (20:19 +0200)]
Don't warn that no compression is enabled if the server doesn't support it.
Guilhem Moulin [Thu, 10 Sep 2015 01:38:40 +0000 (03:38 +0200)]
wibble
Guilhem Moulin [Wed, 9 Sep 2015 21:32:41 +0000 (23:32 +0200)]
Exit with return value 0 when receiving a TERM signal.
Guilhem Moulin [Wed, 9 Sep 2015 20:44:00 +0000 (22:44 +0200)]
Bump version.
Guilhem Moulin [Wed, 9 Sep 2015 20:30:00 +0000 (22:30 +0200)]
Add a list of supported extensions.
Guilhem Moulin [Wed, 9 Sep 2015 19:37:35 +0000 (21:37 +0200)]
Refactoring.
Guilhem Moulin [Wed, 9 Sep 2015 14:05:36 +0000 (16:05 +0200)]
Add support for the Binary Content extension [RFC3516].
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.)
Guilhem Moulin [Tue, 8 Sep 2015 23:18:14 +0000 (01:18 +0200)]
Add a configuration option 'null-stderr=YES'.
To send STDERR to /dev/null for type=tunnel.
Guilhem Moulin [Tue, 8 Sep 2015 22:44:05 +0000 (00:44 +0200)]
Add support for the IMAP COMPRESS extension [RFC4978].
Also, add traffic statistics after closing the connection to the IMAP
server.
Guilhem Moulin [Mon, 7 Sep 2015 23:02:23 +0000 (01:02 +0200)]
wibble
Guilhem Moulin [Mon, 7 Sep 2015 22:59:39 +0000 (00:59 +0200)]
Add an option --watch to keep the connections open and wait for changes.
Guilhem Moulin [Mon, 7 Sep 2015 22:20:57 +0000 (00:20 +0200)]
wibble
Guilhem Moulin [Mon, 7 Sep 2015 22:17:24 +0000 (00:17 +0200)]
Block SIGINT signals to the children for type=tunnel.
So we can clean after us (and for instance remove the lockfile).
Guilhem Moulin [Mon, 7 Sep 2015 15:36:00 +0000 (17:36 +0200)]
Rename ‘imapsync’ to ‘interimap’.
To avoid confusion with http://imapsync.lamiral.info .
Guilhem Moulin [Mon, 7 Sep 2015 13:49:21 +0000 (15:49 +0200)]
Add a note imapsync vs. offlineimap.
Guilhem Moulin [Mon, 7 Sep 2015 13:16:33 +0000 (15:16 +0200)]
Add instruction for how to build a Debian package from the last release.
Guilhem Moulin [Sun, 6 Sep 2015 20:31:49 +0000 (22:31 +0200)]
Add instructions for how to build the Debian package.
Guilhem Moulin [Sun, 6 Sep 2015 20:28:49 +0000 (22:28 +0200)]
Promote SSH connections to the remote IMAP server.
Guilhem Moulin [Sun, 6 Sep 2015 19:44:43 +0000 (21:44 +0200)]
wibble
Guilhem Moulin [Sun, 6 Sep 2015 19:26:00 +0000 (21:26 +0200)]
Getopt::Long is a core module.
Guilhem Moulin [Sun, 6 Sep 2015 18:58:52 +0000 (20:58 +0200)]
Fix typo: lUID ↔ rUID.
Guilhem Moulin [Sun, 6 Sep 2015 18:51:37 +0000 (20:51 +0200)]
Message Sequence Match Data: sequence set come before UIDs.
Cf. RFC 7162:
seq-match-data = "(" known-sequence-set SP known-uid-set ")"
Guilhem Moulin [Sat, 5 Sep 2015 15:30:07 +0000 (17:30 +0200)]
Add README file.
Guilhem Moulin [Sat, 5 Sep 2015 15:20:21 +0000 (17:20 +0200)]
Add INSTALL file.
Guilhem Moulin [Sat, 5 Sep 2015 15:04:14 +0000 (17:04 +0200)]
typo
Guilhem Moulin [Sat, 5 Sep 2015 14:44:51 +0000 (16:44 +0200)]
Sample UIDs in SELECT $mailbox (QRESYNC ...) commands.
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].
Guilhem Moulin [Tue, 1 Sep 2015 12:59:00 +0000 (14:59 +0200)]
typo
Guilhem Moulin [Tue, 1 Sep 2015 01:14:58 +0000 (03:14 +0200)]
typo
Guilhem Moulin [Tue, 1 Sep 2015 00:16:03 +0000 (02:16 +0200)]
Use groff's mailto markup.
Guilhem Moulin [Mon, 31 Aug 2015 23:52:40 +0000 (01:52 +0200)]
typo
Guilhem Moulin [Mon, 31 Aug 2015 22:46:12 +0000 (00:46 +0200)]
Compress "No match for vanished local/remote UID ..." warnings.
Guilhem Moulin [Thu, 20 Aug 2015 17:11:36 +0000 (19:11 +0200)]
Unconditionally restart the systemd service.
It's unfortunate in that the service keep restarting every n secs in
case the remote server is down.
Ideally systemd would offer a way to restart services with a
non-constant (e.g., exponential) progression in case of failure.
Guilhem Moulin [Sun, 9 Aug 2015 18:38:30 +0000 (20:38 +0200)]
Add support for SASL-IR (RFC 4959) to save a round-trip in AUTHENTICATE commands.
Guilhem Moulin [Fri, 31 Jul 2015 20:41:24 +0000 (22:41 +0200)]
Log high precision timestamps in the logfile.
Also, don't try to import POSIX or Time::HiRes unless the logfile is
configured.
Guilhem Moulin [Fri, 31 Jul 2015 20:40:28 +0000 (22:40 +0200)]
Log debug messages to STDERR unless 'logfile' is set.
However don't include timestamps to STDERR, that's the job of the
syslog.
Guilhem Moulin [Fri, 31 Jul 2015 15:20:44 +0000 (17:20 +0200)]
Add a note regrading the default database with type=tunnel.
Guilhem Moulin [Fri, 31 Jul 2015 15:17:29 +0000 (17:17 +0200)]
typo
Guilhem Moulin [Wed, 29 Jul 2015 23:39:30 +0000 (01:39 +0200)]
Log out before exiting.
Guilhem Moulin [Wed, 29 Jul 2015 23:26:16 +0000 (01:26 +0200)]
Don't try to rename children of mailboxes with \NoInferiors or \HasNoChildren attribute.
Guilhem Moulin [Wed, 29 Jul 2015 23:16:51 +0000 (01:16 +0200)]
Add a $try parameter to create, delete, rename, etc.
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.
Guilhem Moulin [Wed, 29 Jul 2015 22:57:14 +0000 (00:57 +0200)]
Ignore mailboxes with '\NoSelect' attribute.
Guilhem Moulin [Wed, 29 Jul 2015 22:39:58 +0000 (00:39 +0200)]
Don't initialize cache for ignore mailboxes.
Guilhem Moulin [Wed, 29 Jul 2015 22:39:33 +0000 (00:39 +0200)]
typo
Guilhem Moulin [Wed, 29 Jul 2015 22:07:07 +0000 (00:07 +0200)]
Reformulation.
Guilhem Moulin [Wed, 29 Jul 2015 22:01:35 +0000 (00:01 +0200)]
wibble
Guilhem Moulin [Wed, 29 Jul 2015 22:10:28 +0000 (00:10 +0200)]
Don't push non-existing mailboxes to @MAILBOXES.
Guilhem Moulin [Tue, 28 Jul 2015 10:31:49 +0000 (12:31 +0200)]
Don't set to a ignored mailbox.
Guilhem Moulin [Mon, 27 Jul 2015 22:47:32 +0000 (00:47 +0200)]
typo
Guilhem Moulin [Mon, 27 Jul 2015 22:12:44 +0000 (00:12 +0200)]
Update systemd service file.
Guilhem Moulin [Mon, 27 Jul 2015 22:12:14 +0000 (00:12 +0200)]
Update default config file.
Guilhem Moulin [Mon, 27 Jul 2015 21:45:09 +0000 (23:45 +0200)]
Enable fine-grained control on the mailboxes to consider.
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.
Guilhem Moulin [Mon, 27 Jul 2015 20:52:21 +0000 (22:52 +0200)]
Drop the 'read-only' option.
It didn't really work since STORE commands are answered with a tagged OK
response for instance.
Guilhem Moulin [Mon, 27 Jul 2015 20:49:07 +0000 (22:49 +0200)]
bugfix: Don't exist with the children's exist status upon error.
Guilhem Moulin [Mon, 27 Jul 2015 20:02:17 +0000 (22:02 +0200)]
No longer try to guess whether a mailbox was deleted or renamed.
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.
Guilhem Moulin [Sun, 26 Jul 2015 18:02:01 +0000 (20:02 +0200)]
Reformulate introduction in the manpage.
Guilhem Moulin [Sun, 26 Jul 2015 17:52:52 +0000 (19:52 +0200)]
Make --oneshot the default mode and disable watch mode.
Due to multiple bugs in dovecot 2.13 and 2.18's implementation of the
NOTIFY extension [RFC5465]:
http://dovecot.org/pipermail/dovecot/2015-July/101473.html
http://dovecot.org/pipermail/dovecot/2015-July/101474.html
http://dovecot.org/pipermail/dovecot/2015-July/101514.html
Guilhem Moulin [Sun, 26 Jul 2015 17:42:35 +0000 (19:42 +0200)]
typo
Guilhem Moulin [Sun, 26 Jul 2015 13:53:13 +0000 (15:53 +0200)]
bugfix: Fetching new messages from local and adding them to remote modifies its UIDNEXT.
So we need to check again the first $source (remote) whenever the last
one (local) added new messages to it.
Guilhem Moulin [Sun, 26 Jul 2015 13:50:44 +0000 (15:50 +0200)]
wibble
Guilhem Moulin [Sun, 26 Jul 2015 04:59:52 +0000 (06:59 +0200)]
typo
Guilhem Moulin [Sun, 26 Jul 2015 04:59:00 +0000 (06:59 +0200)]
Fix typo in systemd service file.
Guilhem Moulin [Sun, 26 Jul 2015 04:58:27 +0000 (06:58 +0200)]
Fix bug in synchronizing the subscription list.
Guilhem Moulin [Sun, 26 Jul 2015 04:57:22 +0000 (06:57 +0200)]
wibble
Guilhem Moulin [Sun, 26 Jul 2015 04:56:04 +0000 (06:56 +0200)]
Check return value after a SQL UPDATE.
Guilhem Moulin [Sun, 26 Jul 2015 01:00:33 +0000 (03:00 +0200)]
Add a brief help.
Guilhem Moulin [Sun, 26 Jul 2015 00:42:32 +0000 (02:42 +0200)]
Add an option 'logfile' to log debug messages.
Guilhem Moulin [Sat, 25 Jul 2015 23:36:48 +0000 (01:36 +0200)]
Don't use readline with non-blocking IO.
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.
Guilhem Moulin [Sat, 25 Jul 2015 23:14:39 +0000 (01:14 +0200)]
Clean how we're sending commands to the server.
Guilhem Moulin [Sat, 25 Jul 2015 22:58:12 +0000 (00:58 +0200)]
LOGINDISABLED only disables plain-text mechanisms.
Also, LOGIN is always supported.
Guilhem Moulin [Sat, 25 Jul 2015 22:57:30 +0000 (00:57 +0200)]
Fix documentation.