aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFiles
* 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
|
* Net::IMAP::InterIMAP: call shutdown(2) on teardown also for type=tunnel.Guilhem Moulin2019-05-281
| | | | | | Since we now use socketpair(2) for type=tunnel (instead of a pair of unnamed pipes) we can unify communication endpoints creation and teardown.
* .gitignore update.Guilhem Moulin2019-05-281
|
* Add .gitignore.Gustav Eek2019-05-281
|
* typofixGuilhem Moulin2019-05-282
|
* tests/run: set 'mailbox_list_index = yes' in dovecot.conf.Guilhem Moulin2019-05-281
| | | | | LAYOUT=index requires mailbox_list_index = yes. It's the default since dovecot 2.3, but we set it explicitly to support older versions.
* tests: don't fail when a pid can't be killed.Guilhem Moulin2019-05-283
| | | | (Usually on ESRCH.)
* tests/run: Don't void the command's standard error.Guilhem Moulin2019-05-281
|
* tests/run: Honor $TMPDIR if the variable is set.Guilhem Moulin2019-05-281
| | | | Otherwise use /dev/shm.
* typofixGuilhem Moulin2019-05-271
|
* Manpages: clarify that the tunnel command is run following Perl's `exec` ↵Guilhem Moulin2019-05-273
| | | | | | | | | | | | semantics. It is passed to `/bin/sh -c` when it contains shell metacharacters; and split into words and passed to execvp(3) otherwise. https://perldoc.perl.org/functions/exec.html (Since c8fb54897f046a5a3fb4c1d45dc21fd8bcd882e3 the value no longer needs to stard with a forward slash.)
* Add test-suite (requires dovecot-imapd).Guilhem Moulin2019-05-2760
|
* New option 'list-reference' to specify a reference name.Guilhem Moulin2019-05-274
| | | | | | | | 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-273
| | | | | | 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-272
| | | | | | | | | | | | | | | 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-272
| | | | | | | | 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-272
| | | | | | | | | | | | | | | | | | | | 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.