]>
git.g-eek.se Git - interimap.git/log
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.
Guilhem Moulin [Sat, 25 Jul 2015 14:23:45 +0000 (16:23 +0200)]
Add a manpage and improve documentation.
Guilhem Moulin [Sat, 25 Jul 2015 01:29:48 +0000 (03:29 +0200)]
Rename '--check' to '--repair' and improve repairing algorithm.