]>
git.g-eek.se Git - interimap.git/log
Guilhem Moulin [Sun, 13 Mar 2016 15:23:26 +0000 (16:23 +0100)]
pullimap: fix struct flock packing
Guilhem Moulin [Sun, 13 Mar 2016 03:02:27 +0000 (04:02 +0100)]
interimap: reformulation in manpage
Guilhem Moulin [Sat, 12 Mar 2016 23:01:27 +0000 (00:01 +0100)]
interimap: Fix watch value when --watch is not set.
Guilhem Moulin [Sat, 12 Mar 2016 22:47:39 +0000 (23:47 +0100)]
typo
Guilhem Moulin [Sat, 12 Mar 2016 22:38:53 +0000 (23:38 +0100)]
pullimap: use fcntl(2) not flock(2) to lock the statefile.
Guilhem Moulin [Sat, 12 Mar 2016 22:35:59 +0000 (23:35 +0100)]
interimap: use SQLite's own locking mechanism to lock down the database.
(instead of rolling our own)
Guilhem Moulin [Sat, 12 Mar 2016 21:46:46 +0000 (22:46 +0100)]
punct
Guilhem Moulin [Sat, 12 Mar 2016 21:43:14 +0000 (22:43 +0100)]
Use a monotype font for IMAP extensions.
Guilhem Moulin [Sat, 12 Mar 2016 21:14:39 +0000 (22:14 +0100)]
Net::IMAP::InterIMAP, interimap: Add support for IMAP NOTIFY [RFC 5465].
Unsollicited LIST responses are currently ignored, hence interimap won't
detect mailbox creation/deletion/subcription/unsubscription.
Guilhem Moulin [Sat, 12 Mar 2016 02:32:27 +0000 (03:32 +0100)]
interimap: fix memory leak.
Guilhem Moulin [Sat, 12 Mar 2016 00:10:30 +0000 (01:10 +0100)]
Net::IMAP::InterIMAP: quit idling when a time jump of at least 30s is detected
This forces a write, so we can better detect detect dead peers after
hibernation for instance.
Guilhem Moulin [Fri, 11 Mar 2016 23:52:42 +0000 (00:52 +0100)]
Net::IMAP::InterIMAP: set SO_{RCV,SND}TIMEO on the socket so we can detect dead peers
Guilhem Moulin [Fri, 11 Mar 2016 23:52:04 +0000 (00:52 +0100)]
Net::IMAP::InterIMAP: set binmode on the socket (and our pipe ends)
Guilhem Moulin [Fri, 11 Mar 2016 23:50:26 +0000 (00:50 +0100)]
Net::IMAP::InterIMAP optimisation: ignore a new message that's immediately expunged
(before we had a chance to sync it)
Guilhem Moulin [Fri, 11 Mar 2016 21:04:17 +0000 (22:04 +0100)]
Net::IMAP::InterIMAP: Don't increase UIDNEXT when receiving EXISTS responses.
Indeed, if the server sends
* n EXISTS
* n EXPUNGE
meaning a new message is received, and is immediately removed
afterwards, the server might have allocated a new UID for the removed
message.
Guilhem Moulin [Fri, 11 Mar 2016 19:57:24 +0000 (20:57 +0100)]
wibble
Guilhem Moulin [Fri, 11 Mar 2016 18:41:13 +0000 (19:41 +0100)]
Explicitly specify inner links for older pandoc.
Guilhem Moulin [Fri, 11 Mar 2016 18:32:05 +0000 (19:32 +0100)]
interimap: convert manpage to markdown.
Guilhem Moulin [Fri, 11 Mar 2016 13:29:52 +0000 (14:29 +0100)]
pullimap: honor the the four-space rule in the markdown.
Guilhem Moulin [Fri, 11 Mar 2016 13:11:14 +0000 (14:11 +0100)]
pullimap: improve manpage.
Guilhem Moulin [Fri, 11 Mar 2016 03:09:53 +0000 (04:09 +0100)]
wibble
Guilhem Moulin [Fri, 11 Mar 2016 02:47:11 +0000 (03:47 +0100)]
pullimap.md: Fix pandoc syntax.
Guilhem Moulin [Fri, 11 Mar 2016 02:08:21 +0000 (03:08 +0100)]
Convert pullimap's manpage to pandoc.
Guilhem Moulin [Thu, 10 Mar 2016 22:46:50 +0000 (23:46 +0100)]
IDLE: fix race condition when an untagged response is received after the DONE
Guilhem Moulin [Thu, 10 Mar 2016 22:38:33 +0000 (23:38 +0100)]
Net::IMAP::InterIMAP: change argument order in slurp and _resp.
Guilhem Moulin [Thu, 10 Mar 2016 00:34:13 +0000 (01:34 +0100)]
pullimap: check all print statements to the SMTP socket.
Guilhem Moulin [Wed, 9 Mar 2016 20:14:40 +0000 (21:14 +0100)]
Net::IMAP::InterIMAP: don't print undefined cache values in debug messages.
Guilhem Moulin [Wed, 9 Mar 2016 19:59:14 +0000 (20:59 +0100)]
pullimap: keep trying to pull new messages after issuing any IMAP command.
Indeed we might get an untagged EXISTS response, meaning that a new
message has been received meanwhile.
Guilhem Moulin [Wed, 9 Mar 2016 19:28:31 +0000 (20:28 +0100)]
pullimap.1: Work around groff_www rendering bug with nested lists.
Guilhem Moulin [Wed, 9 Mar 2016 19:12:03 +0000 (20:12 +0100)]
Improve mailto: link for groff_www.
Guilhem Moulin [Wed, 9 Mar 2016 16:18:07 +0000 (17:18 +0100)]
pullimap: add control flow details in the manpage.
Guilhem Moulin [Wed, 9 Mar 2016 15:02:29 +0000 (16:02 +0100)]
wibble
Guilhem Moulin [Wed, 9 Mar 2016 14:34:39 +0000 (15:34 +0100)]
typo: F_[GS]ETFL → F_[GS]ETFD
Guilhem Moulin [Wed, 9 Mar 2016 14:04:20 +0000 (15:04 +0100)]
pullimap: purge old messages every 12h.
Guilhem Moulin [Tue, 8 Mar 2016 21:56:53 +0000 (22:56 +0100)]
interimap: improve manpage.
Guilhem Moulin [Tue, 8 Mar 2016 17:03:08 +0000 (18:03 +0100)]
pullimap: add systemd service unit file.
Guilhem Moulin [Tue, 8 Mar 2016 17:02:10 +0000 (18:02 +0100)]
pullimap: Don't rely on the last purged timestamp when purge-after=0.
Guilhem Moulin [Tue, 8 Mar 2016 16:49:47 +0000 (17:49 +0100)]
pullimap: don't FETCH messages BODY if --no-delivery is set.
Guilhem Moulin [Tue, 8 Mar 2016 16:43:14 +0000 (17:43 +0100)]
pullimap: improve doc.
Guilhem Moulin [Tue, 8 Mar 2016 16:30:48 +0000 (17:30 +0100)]
Net::IMAP::InterIMAP: try again if connect(2) was interrupted.
Guilhem Moulin [Mon, 7 Mar 2016 23:01:02 +0000 (00:01 +0100)]
pullimap: set keepalive options on socket.
Guilhem Moulin [Mon, 7 Mar 2016 22:34:08 +0000 (23:34 +0100)]
pullimap: add section name in debug messages.
Guilhem Moulin [Mon, 7 Mar 2016 22:33:45 +0000 (23:33 +0100)]
pullimap: typo
Guilhem Moulin [Mon, 7 Mar 2016 17:33:42 +0000 (18:33 +0100)]
spellcheck
Guilhem Moulin [Mon, 7 Mar 2016 16:33:03 +0000 (17:33 +0100)]
pullimap: add a manpage and a configuration file.
Guilhem Moulin [Mon, 7 Mar 2016 16:32:29 +0000 (17:32 +0100)]
wibble
Guilhem Moulin [Mon, 7 Mar 2016 15:01:51 +0000 (16:01 +0100)]
Add an option "purge-after" to remove old messages.
Guilhem Moulin [Mon, 7 Mar 2016 12:32:13 +0000 (13:32 +0100)]
pullimap: Remove "logfile" config option.
Guilhem Moulin [Mon, 7 Mar 2016 12:30:01 +0000 (13:30 +0100)]
pullimap: add an option '--no-delivery' to prevent SMTP/LMTP delivery.
Guilhem Moulin [Mon, 7 Mar 2016 10:40:38 +0000 (11:40 +0100)]
typo
Guilhem Moulin [Sat, 5 Mar 2016 18:49:08 +0000 (19:49 +0100)]
Ensure the FD_CLOEXEC bit is 1 on sockets, logger and state files.
Guilhem Moulin [Sat, 5 Mar 2016 18:36:20 +0000 (19:36 +0100)]
Terminate the SMTP transmission channel gracefully.
Guilhem Moulin [Sat, 5 Mar 2016 17:36:07 +0000 (18:36 +0100)]
pullimap: add support for IMAP IDLE (RFC 2177).
Guilhem Moulin [Sat, 5 Mar 2016 17:15:25 +0000 (18:15 +0100)]
pullimap: add support for SMTP pipelining (RFC 2920)
Guilhem Moulin [Sat, 5 Mar 2016 16:57:08 +0000 (17:57 +0100)]
pullimap: add sendmail feature (SMTP/LMTP client).
Guilhem Moulin [Sat, 5 Mar 2016 14:52:27 +0000 (15:52 +0100)]
pullimap: mark downloaded messages as \Seen
Guilhem Moulin [Sat, 5 Mar 2016 14:31:36 +0000 (15:31 +0100)]
pullimap (IMAP part only)
Guilhem Moulin [Fri, 4 Mar 2016 10:50:00 +0000 (11:50 +0100)]
Inspect the select(2) syscall's return value.
Guilhem Moulin [Thu, 3 Mar 2016 21:32:41 +0000 (22:32 +0100)]
Remove dependency on IO::Select.
Guilhem Moulin [Thu, 3 Mar 2016 21:28:46 +0000 (22:28 +0100)]
Relax parsing of continuation requests for for empty resp-text.
microsoft's IMAP server violates RFC 3501 by skipping the trailing space
for empty resp-text.
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