aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFiles
...
* Makefile: factor out jq script for roff generation.Guilhem Moulin2019-11-132
|
* Fix minor space damage.Guilhem Moulin2019-11-131
|
* Test suite: add new test for pullimap(1).Guilhem Moulin2019-11-139
| | | | | This adds a dependency on Dovecot's LMTPd, which will bind to to TCP port 10024 on the loopback interface.
* Avoid sending large UID EXPUNGE|FETCH|STORE and APPEND commands.Guilhem Moulin2019-11-138
| | | | | | | | | | | | | | | | | | | | | | UID EXPUNGE|FETCH|STORE commands are now split into multiple (sequential) commands when their set representation exceeds 4096 bytes in size. Without splitting logic set representations could grow arbitrarily large, and exceed the server's maximum command size. This adds roundtrips which could be eliminated by pipelining, but it's unlikely to make any difference in typical synchronization work. While set representations seem to remain small in practice, they might grow significantly if many non-contiguous UIDs were flagged and/or expunged, and later synchronized at once. Furthermore, for MULTIAPPEND-capable servers, the number of messages is limited to 128 per APPEND command (also subject to a combined literal size of 1MiB like before). These numbers are currently not configurable. They're intentionally lower than Dovecot's default maximum command size (64k) in order to avoid a deadlock situation after sending 8k-long commands under COMPRESS=DEFLATE: https://dovecot.org/pipermail/dovecot/2019-November/117522.html .
* Net::IMAP::InterIMAP: Don't export $IMAP_text and $IMAP_cond.Guilhem Moulin2019-11-131
|
* Net::IMAP::InterIMAP::push_flag_updates() bugfixes.Guilhem Moulin2019-11-134
| | | | | | | | | | | | | | The UNCHANGEDSINCE test from the CONDSTORE extension was incorrectly placed after the flag list in UID STORE commands. In practice this meant the server didn't add the MODIFIED code when needed. The server won't send an untagged FETCH command (and won't increase the message's MODSEQ) if no change was made to the flag list. A panic() was incorrectly triggered in that case. When the flag list was set (by another client) to a superset of the UID STORE command currently processed, the extra flags were not synchronized. Cf. RFC 7162 sec. 3.1.3 ex. 10.
* interimap: raise SELECT sample set size from 64 to 256 bytes.Guilhem Moulin2019-11-132
| | | | | | | | | | | | | | A n-bytes set covers at least ⌊(n+1)/11⌋ UIDs (UIDs are at most 10 bytes of size), hence 23 UIDs for 256 bytes long sets. However we exceed it by another range, so in the worst case (if the the higher UIDs are sparse) we'll sample ⌊(n+1)/11+1⌋ UIDs: 1000000000,1000000002,1000000004,…,1000000046 This was 6 UIDs for n=64 which is a tad low; this is now raised to 24 UIDs. The actual set size returned by sample() is of max size n+22 bytes (extra "$UID1:$UID2," where $UID1 and $UID2 are both ≥10⁹).
* Bump minimum Perl for Net::IMAP::InterIMAP to v5.20.Guilhem Moulin2019-11-132
| | | | | We're using s///r which was introduced in 5.14, and hash slices which were introduced in 5.20.
* Test suite: add new test for COMPRESS=DEFLATE.Guilhem Moulin2019-11-134
| | | | | An imapd is required as `doveadm exec imap` won't offer COMPRESS=DEFLATE in its capability list.
* Test suite: add new tests for SSL/TLS.Guilhem Moulin2019-11-1330
| | | | | SSL connections are accepted on TCP port 10993. Also, fix STARTTLS directive, broken since fba1c36…
* Test suite: don't treat broken symlinks as missing.Guilhem Moulin2019-11-131
| | | | | `test -f` deferences paths so fails on broken symlinks, yielding an incorrect test environment and perhaps even a false negative.
* Test suite: add new tests for authentication.Guilhem Moulin2019-11-1321
| | | | | | | | | This can't be done with `doveadm exec imap`, so the IMAPd needs to bind to TCP port 10143 on the loopback interface. Also, no longer pass ‘imap_capability’ Dovecot setting explicitely to `doveadm exec imap`; changed tests/sync-live-crippled to use type=imap instead of type=tunnel.
* Refactor and improve test suite.Guilhem Moulin2019-11-13118
|
* interimap.sample: remove leading `exec`.Guilhem Moulin2019-11-091
| | | | | | The value is passed to `/bin/sh -c` if it contains shell metacharacters; otherwise it is split into words and the resulting list is passed to execvp(3).
* Remove deprecated/buggy 'o' regexp modifier.Guilhem Moulin2019-11-083
|
* libinterimap: honor compress={Yes/No}.Guilhem Moulin2019-11-082
|
* Refactor logging logic.Guilhem Moulin2019-11-0710
| | | | | | | Also, introduce new option 'logger-prefix' to determine the prefix of each log line. Closes: #942725.
* libinterimap: Don't panic at the end of the compressed stream.Guilhem Moulin2019-11-072
| | | | | Cf. Compress::Raw::Zlib's documentation. Z_STREAM_END denotes a successful state.
* libinterimap: Free reference to $self in _start_ssl().Guilhem Moulin2019-11-071
| | | | | | | | (We don't need the function anymore once the handshake is established). Otherwise the reference count of that IMAP client never gets to 0 before the global destruction phase. For interimap, this causes traffic stats to be printed not by the cleanup() function as intended, but just before the program exits.
* typofixGuilhem Moulin2019-11-071
|
* wibbleGuilhem Moulin2019-11-072
|
* interimap.1.md: Hint to `doveadm-deduplicate` to weed out duplicates.Guilhem Moulin2019-11-061
|
* interimap.1.md: Document that DELETE and RENAME commands should be avoided.Guilhem Moulin2019-11-061
|
* Update copyright years.Guilhem Moulin2019-11-062
|
* interimap.sample: don't hardcode Dovecot's libexec dir.Guilhem Moulin2019-11-061
|
* Allow lowercase SASL mechanisms.Guilhem Moulin2019-11-061
| | | | | | RFC 2222 sec. 3 says that values are “from 1 to 20 characters in length, consisting of upper-case letters, digits, hyphens, and/or underscores” so we always upper-case the value.
* pullimap, interimap: redact AUTHENTICATE and LOGIN commandsGuilhem Moulin2019-11-066
| | | | | | In --debug mode in order to avoid inadvertently receiving credentials in bug reports. --debug can be set twice to spell out these commands in full.
* typofixGuilhem Moulin2019-08-281
|
* libinterimap: use directories relative to $HOME for the XDG defaults.Guilhem Moulin2019-07-082
| | | | | | | | | | | | Previously getpwuid() was called to determine the user's home directory, while the XDG specification explicitely mentions $HOME. Conveniently our docs always mentioned ~/, which on POSIX-compliant systems expands to the value of the variable HOME (and the result is unspecified when the variable is unset). Cf. Shell and Utilities volume of POSIX.1-2017, sec. 2.6.1: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_01
* interimap.1: Clarify handling of delimiter in mailbox names.Guilhem Moulin2019-07-072
|
* interimap: clarify that 'ignore-mailbox' is matched against internal names.Guilhem Moulin2019-07-073
| | | | | | | That is, without leading reference, and where the hierarchy delimiter is replaced with null characters. /!\ This changes breaks backward compatibility!
* doc/*: Fix minor space damage.Guilhem Moulin2019-07-063
| | | | Also, set tab size to 4 spaces in the HTML for consistency.
* doc/template.html: Justify paragraphs on larger screens.Guilhem Moulin2019-07-051
|
* doc/*.md: Improve wording.Guilhem Moulin2019-07-053
|
* doc/*.html: Add 'keywords' and 'lang' tags.Guilhem Moulin2019-07-051
|
* doc/template.html: Fix minor space damage.Guilhem Moulin2019-07-051
|
* doc/template.html: Add parent links at the top.Grégoire Détrez2019-07-052
|
* Use mailto: links for names of copyright holders.Guilhem Moulin2019-07-053
|
* typofixGuilhem Moulin2019-07-051
|
* Refactor documentation.Guilhem Moulin2019-07-0511
| | | | | In particular, move manpages to the 'doc' directory, and generate HTML documentation with `make html`.
* Fix minor space damage.Guilhem Moulin2019-07-054
|
* New file doc/development.md.Guilhem Moulin2019-07-051
| | | | | Explaining how to setup a test environment for interimap(1) and pullimap(1).
* test suite: import+dump before comparing SQLite dumps.Gustav Eek2019-06-271
| | | | | The dumping quoting style differ between sqlite versions. Compensate with re-dumping also the reference file
* tests/run: fix minor space damageGuilhem Moulin2019-06-271
|
* test suite: make sqlite3 ignore ~/.sqlitercGuilhem Moulin2019-06-271
|
* `make test`: Only consider tests/*/run.Guilhem Moulin2019-06-031
|
* long-lived tests: sleep between 1ms and 999ms.Guilhem Moulin2019-06-032
| | | | | | | `shuf -n1 -i1-99` produces a number between 1 and 99, hence `sleep "0.$(shuf -n1 -i1-99)"` pauses for some time between 100ms and 990ms. Moreover it's not uniformly distributed as multiples of 100ms (0.100, 0.200, …, 0.900) have twice the probability of other numbers.
* Improve wording.Guilhem Moulin2019-05-301
|
* tests/run: use the current date as Message-ID in `sample_message`.Guilhem Moulin2019-05-281
| | | | | | A random 128-bit UUID obtained from /proc/sys/kernel/random/uuid works too but is Linux-specific and requires the proc(5) pseudo-filesystem to be mounted at /proc.
* typo fixesGuilhem Moulin2019-05-287
|