diff -pruN 0.5.6-1/benchmark/run 0.5.7-2/benchmark/run
--- 0.5.6-1/benchmark/run	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/benchmark/run	2022-02-27 15:24:31.000000000 +0000
@@ -198,9 +198,10 @@ cat >"$ROOTDIR/dev/shm/nobody/.offlineim
 EOF
 
 # install interimap's development version
-install -oroot -groot -m0755 -Dt "/$ROOTDIR/usr/bin" \
+install -oroot -groot -m0755 -Dt "$ROOTDIR/usr/bin" \
     ./interimap ./benchmark/random_maildir.pl
-install -oroot -groot -Dm0644 \
+sed -ri "0,/^(use\\s+\lib\\s+)([\"'])[^\"']*\\2\\s*;/ s||#&|" -- "$ROOTDIR/usr/bin/interimap"
+install -oroot -groot -m0644 -DT \
     ./lib/Net/IMAP/InterIMAP.pm "$ROOTDIR/usr/share/perl5/Net/IMAP/InterIMAP.pm"
 
 # create a random mail store at mdbox:~/mail.back
diff -pruN 0.5.6-1/Changelog 0.5.7-2/Changelog
--- 0.5.6-1/Changelog	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/Changelog	2022-02-27 15:24:31.000000000 +0000
@@ -1,3 +1,50 @@
+interimap (0.5.7) upstream;
+
+ * interimap: create database with mode 0600 (but don't change mode of
+   existing databases).  The file was previously created with mode 0644
+   minus umask restrictions, which for permissive umask(2)s is too open.
+   That being said its parent directory is created with restricted mode
+   0700 so the impact is limited.  pullimap, on the other hand, already
+   used mode 0600 for state file creation.
+ * Major Makefile refactoring: improve DESTDIR= handling, add new
+   targets 'all-nodoc', 'install-nodoc', and 'installcheck'.  Also,
+   rename 'test' target to 'check'.
+ * `make install` now installs Net/IMAP/InterIMAP.pm to
+   /usr/local/lib/site_perl by default rather than /usr/local/share/perl5
+   (which is not in @INC as of perl 5.34.0-3 from Debian sid).  The
+   installation directory is configurable with sitelib=.
+ * Refactor test harness so one can check the source with `tests/run
+   foo`; what's been built with `INTERIMAP_I=./lib INTERIMAP_PATH=./build
+   ./tests/run foo`, and what's installed with `INTERIMAP_I=""
+   INTERIMAP_PATH=/usr/bin tests/run foo`.
+ * Split interimap and pullimap test suites.
+ + Improve message for missing untagged UIDNEXT responses, which we
+   require but are omitted from some servers.
+ + tests/tls-protocols: downgrade OpenSSL security level to 0, which is
+   required to test TLS version <1.2 on systems with higher security
+   levels, see SSL_CTX_set_security_level(3ssl).  Adapted from a patch
+   from <xnox> for Unbuntu.
+ + tests/tls-*: bump Dovecot's ssl_min_protocol to TLSv1.2, which is the
+   default as of dovecot 1:2.3.18+dfsg1-1 from Debian sid.
+ + `make clean` now cleans test certificates and key material.
+ + Add 'use lib "./lib";' to interimap and pullimap, so the programs can
+   be run directly from the source directory.  The directory is
+   substituted with $(sitelib) at compile time (and the line is commented
+   out if $(sitelib) is found in @INC).
+ + doc/build.md: update documentation, and add a new section for how to
+   install without root privileges.
+ + Add Documentation=https://guilhem.org/interimap/... URIs to .service
+   files.
+ - Don't hardcode path to interimap/pullimap in .service files, and
+   instead use $(bindir) (expanded at compile time).
+ - tests/certs/generate: redirect known error output to the standard
+   output.
+ - tests/certs/generate: use custom openssl.cnf to avoid depending on
+   the system default.
+ - tests/pullimap: allow easy exclusion of --idle'ing tests.
+
+ -- Guilhem Moulin <guilhem@fripost.org>  Sun, 27 Feb 2022 16:24:31 +0100
+
 interimap (0.5.6) upstream;
 
  - Bump required Net::SSLeay version to 1.86_06 as it's when get_version()
diff -pruN 0.5.6-1/debian/changelog 0.5.7-2/debian/changelog
--- 0.5.6-1/debian/changelog	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/changelog	2023-01-25 01:35:21.000000000 +0000
@@ -1,3 +1,38 @@
+interimap (0.5.7-2) unstable; urgency=medium
+
+  * DEP-8: Name inline tests.
+  * Bump Standards-Version to 4.6.2 (no changes needed).
+  * Salsa CI: Include recipes/debian.yml.
+
+ -- Guilhem Moulin <guilhem@debian.org>  Wed, 25 Jan 2023 02:35:21 +0100
+
+interimap (0.5.7-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * No source change upload to rebuild with debhelper 13.10.
+
+ -- Michael Biebl <biebl@debian.org>  Sat, 15 Oct 2022 11:04:02 +0200
+
+interimap (0.5.7-1) unstable; urgency=low
+
+  * New upstream release.
+  * Set field Upstream-Name in debian/copyright.
+  * Update standards version to 4.6.0, no changes needed.
+  * d/control: Update and improve long descriptions, adding reference to
+    alternative software.
+  * Update d/u/signing-key.asc.
+  * d/watch: Use substitution strings.
+  * d/rules: Adapt to upstream's Makefile refactoring.
+  * d/control, d/rules: Honor 'nodoc' profile.  In particular, exclude 'jq'
+    and 'pandoc' from Build-Depends under that profile.
+  * Update d/patches.
+  * d/patches: Don't exclude non-IDLE'ing pullimap tests.
+  * d/rules: Pass --no-parallel flag to dh_auto_test.
+  * Update copyright years.
+  * Add DEP-8 tests for 'interimap' and 'pullimap' binary packages.
+
+ -- Guilhem Moulin <guilhem@debian.org>  Sun, 27 Feb 2022 16:58:18 +0100
+
 interimap (0.5.6-1) unstable; urgency=high
 
   * New upstream bugfix release with the correct minimum Net::SSLeay version.
diff -pruN 0.5.6-1/debian/control 0.5.7-2/debian/control
--- 0.5.6-1/debian/control	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/control	2023-01-25 01:35:21.000000000 +0000
@@ -5,17 +5,17 @@ Maintainer: Guilhem Moulin <guilhem@debi
 Build-Depends: debhelper-compat (= 13),
                dovecot-imapd (>= 1:2.3~) <!nocheck>,
                dovecot-lmtpd (>= 1:2~) <!nocheck>,
-               jq,
+               jq <!nodoc>,
                libconfig-tiny-perl <!nocheck>,
                libdbd-sqlite3-perl <!nocheck>,
                libnet-ssleay-perl (>= 1.88~) <!nocheck>,
                openssl (>= 1.1.1~) <!nocheck>,
-               pandoc (>= 2.1~),
+               pandoc (>= 2.1~) <!nodoc>,
                procps <!nocheck>,
                sqlite3 <!nocheck>,
                xxd <!nocheck>
 Rules-Requires-Root: no
-Standards-Version: 4.5.1
+Standards-Version: 4.6.2
 Homepage: https://guilhem.org/interimap
 Vcs-Git: https://salsa.debian.org/debian/interimap.git -b debian/latest
 Vcs-Browser: https://salsa.debian.org/debian/interimap
@@ -29,9 +29,9 @@ Depends: libdbd-sqlite3-perl,
 Suggests: dovecot-imapd (>= 1:2~)
 Description: Fast bidirectional synchronization for QRESYNC-capable IMAP servers
  InterIMAP performs stateful bi-directional synchronization between two
- IMAP4rev1 servers.  Compared to the so-called "full" synchronization
- solutions, InterIMAP is both much faster and parsimonious in network
- traffic.
+ IMAP4rev1 servers.  Compared to alternatives such as OfflineIMAP, InterIMAP
+ trades flexibility and IMAPd compatibility for performance; it is both *much*
+ faster and parsimonious in network traffic.
  .
  Stateful synchronization is made possible by the QRESYNC extension from
  [RFC7162]; for convenience reasons servers must also support LIST-EXTENDED
@@ -43,26 +43,30 @@ Description: Fast bidirectional synchron
  thus strongly recommended to use a server supporting these.
  .
  InterIMAP supports the COMPRESS=DEFLATE extension from [RFC4978].  It is
- enabled by default on remote servers advertising it, in order to reduce
- network traffic, especially for long-lived connections.
+ enabled by default on remote servers advertising it in order to reduce network
+ traffic, especially for long-lived connections.
 
 Package: pullimap
 Architecture: all
 Depends: libinterimap (= ${binary:Version}), ${misc:Depends}, ${perl:Depends}
 Description: Pull mails from an IMAP mailbox and deliver them via SMTP or LMTP
  PullIMAP retrieves messages from an IMAP mailbox and deliver them to an
- SMTP or LMTP transmission channel.  It can also remove old messages after
- a configurable retention period.
+ SMTP or LMTP transmission channel.  Compared to alternatives such as fetchmail
+ or getmail, PullIMAP trades flexibility and IMAPd compatibility for
+ performance.
  .
  A statefile is used to keep track of the mailbox's UIDVALIDITY and UIDNEXT
  values.  While PullIMAP is running, the statefile is also used to keep
- track of UIDs being delivered, which avoids duplicate deliveries if the
+ track of UIDs being delivered, which avoids duplicate deliveries in case the
  process is interrupted.
  .
  PullIMAP supports the COMPRESS=DEFLATE extension from [RFC4978].  It is
- enabled by default on servers advertising it, in order to reduce network
+ enabled by default on servers advertising it in order to reduce network
  traffic, especially for long-lived connections (when IDLE commands are
  enabled.)
+ .
+ An optional retention period can be set to automatically remove old messages
+ from the IMAP server.
 
 Package: libinterimap
 Architecture: all
diff -pruN 0.5.6-1/debian/copyright 0.5.7-2/debian/copyright
--- 0.5.6-1/debian/copyright	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/copyright	2023-01-25 01:35:21.000000000 +0000
@@ -1,8 +1,9 @@
 Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 Source: https://git.guilhem.org/interimap/
+Upstream-Name: interimap
 
 Files: *
-Copyright: © 2015-2020  Guilhem Moulin <guilhem@fripost.org>
+Copyright: © 2015-2022  Guilhem Moulin <guilhem@fripost.org>
 License: GPL-3+
 
 License: GPL-3+
diff -pruN 0.5.6-1/debian/interimap.docs 0.5.7-2/debian/interimap.docs
--- 0.5.6-1/debian/interimap.docs	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/interimap.docs	2023-01-25 01:35:21.000000000 +0000
@@ -1,4 +1,4 @@
-share/doc/interimap/README
-share/doc/interimap/getting-started.md
-share/doc/interimap/interimap.sample
-share/doc/interimap/multi-account.md
+usr/share/doc/interimap/README
+usr/share/doc/interimap/getting-started.md
+usr/share/doc/interimap/interimap.sample
+usr/share/doc/interimap/multi-account.md
diff -pruN 0.5.6-1/debian/interimap.install 0.5.7-2/debian/interimap.install
--- 0.5.6-1/debian/interimap.install	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/interimap.install	2023-01-25 01:35:21.000000000 +0000
@@ -1,3 +1,3 @@
-bin/interimap /usr/bin
-lib/systemd/user/interimap.service  usr/lib/systemd/user
-lib/systemd/user/interimap@.service usr/lib/systemd/user
+usr/bin/interimap /usr/bin
+usr/lib/systemd/user/interimap.service  usr/lib/systemd/user
+usr/lib/systemd/user/interimap@.service usr/lib/systemd/user
diff -pruN 0.5.6-1/debian/interimap.manpages 0.5.7-2/debian/interimap.manpages
--- 0.5.6-1/debian/interimap.manpages	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/interimap.manpages	2023-01-25 01:35:21.000000000 +0000
@@ -1 +1 @@
-share/man/man1/interimap.1
+usr/share/man/man1/interimap.1
diff -pruN 0.5.6-1/debian/libinterimap.install 0.5.7-2/debian/libinterimap.install
--- 0.5.6-1/debian/libinterimap.install	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/libinterimap.install	2023-01-25 01:35:21.000000000 +0000
@@ -1 +1 @@
-share/perl5/Net/IMAP/InterIMAP.pm /usr/share/perl5/Net/IMAP
+usr/share/perl5/Net/IMAP/InterIMAP.pm /usr/share/perl5/Net/IMAP
diff -pruN 0.5.6-1/debian/patches/Skip-randomized-tests.patch 0.5.7-2/debian/patches/Skip-randomized-tests.patch
--- 0.5.6-1/debian/patches/Skip-randomized-tests.patch	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/patches/Skip-randomized-tests.patch	2023-01-25 01:35:21.000000000 +0000
@@ -1,6 +1,6 @@
 From: Guilhem Moulin <guilhem@debian.org>
 Date: Wed, 29 Jan 2020 13:49:10 +0100
-Subject: Avoid running randomized tests on the build daemons
+Subject: Avoid running randomized tests on the build daemons.
 
 These tests are racy and can fail in subtle ways depending on the
 machine load and speed.  Basically `interimap --watch=1` is spawnedin
@@ -18,41 +18,43 @@ now we skip them in the Debian context.
 
 Forwarded: not-needed
 ---
- tests/list | 20 ++++++++++----------
- 1 file changed, 10 insertions(+), 10 deletions(-)
+ tests/interimap.list | 8 --------
+ tests/pullimap/t     | 4 ++--
+ 2 files changed, 2 insertions(+), 10 deletions(-)
 
-diff --git a/tests/list b/tests/list
-index d1058ba..d6b3ec0 100644
---- a/tests/list
-+++ b/tests/list
-@@ -41,8 +41,8 @@ repair  --repair
+diff --git a/tests/interimap.list b/tests/interimap.list
+index 559daed..61cb37f 100644
+--- a/tests/interimap.list
++++ b/tests/interimap.list
+@@ -41,8 +41,6 @@ repair  --repair
      preauth-plaintext       abort on MiTM via PREAUTH greeting
  
  compress    COMPRESS=DEFLATE
 -condstore   CONDSTORE
 -split-set   Split large sets to avoid extra-long command lines
-+#condstore   CONDSTORE
-+#split-set   Split large sets to avoid extra-long command lines
  
  . SSL/TLS
      starttls-logindisabled  LOGINDISABLED STARTTLS
-@@ -56,11 +56,11 @@ split-set   Split large sets to avoid extra-long command lines
+@@ -55,9 +53,3 @@ split-set   Split large sets to avoid extra-long command lines
+     tls-sni                 TLS servername extension (SNI)
      tls-protocols           force TLS protocol versions
      tls-ciphers             force TLS cipher list/suites
- 
+-
 -. Live synchronization (60s)
 -    sync-live            local/remote simulation
 -    sync-live-crippled   local/remote simulation (crippled remote)
 -    sync-live-tls        local/remote simulation (TLS remote)
 -    sync-live-multi      local/remote1+remote2+remote3 simulation (3 local namespaces)
--
--. pullimap
--    ... pullimap
-+#. Live synchronization (60s)
-+#    sync-live            local/remote simulation
-+#    sync-live-crippled   local/remote simulation (crippled remote)
-+#    sync-live-tls        local/remote simulation (TLS remote)
-+#    sync-live-multi      local/remote1+remote2+remote3 simulation (3 local namespaces)
-+#
-+#. pullimap
-+#    ... pullimap
+diff --git a/tests/pullimap/t b/tests/pullimap/t
+index 58a19ca..88010c3 100644
+--- a/tests/pullimap/t
++++ b/tests/pullimap/t
+@@ -1,6 +1,6 @@
+ MAILBOX="INBOX"
+-TIMEOUT=60
+-N=2048
++TIMEOUT=0
++N=64
+ 
+ step_start "\`pullimap --idle\` refuses to create the state file"
+ ! pullimap --idle "remote" || error
diff -pruN 0.5.6-1/debian/pullimap.docs 0.5.7-2/debian/pullimap.docs
--- 0.5.6-1/debian/pullimap.docs	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/pullimap.docs	2023-01-25 01:35:21.000000000 +0000
@@ -1 +1 @@
-share/doc/pullimap/pullimap.sample
+usr/share/doc/pullimap/pullimap.sample
diff -pruN 0.5.6-1/debian/pullimap.install 0.5.7-2/debian/pullimap.install
--- 0.5.6-1/debian/pullimap.install	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/pullimap.install	2023-01-25 01:35:21.000000000 +0000
@@ -1,2 +1,2 @@
-bin/pullimap /usr/bin
-lib/systemd/user/pullimap@.service usr/lib/systemd/user
+usr/bin/pullimap /usr/bin
+usr/lib/systemd/user/pullimap@.service usr/lib/systemd/user
diff -pruN 0.5.6-1/debian/pullimap.manpages 0.5.7-2/debian/pullimap.manpages
--- 0.5.6-1/debian/pullimap.manpages	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/pullimap.manpages	2023-01-25 01:35:21.000000000 +0000
@@ -1 +1 @@
-share/man/man1/pullimap.1
+usr/share/man/man1/pullimap.1
diff -pruN 0.5.6-1/debian/rules 0.5.7-2/debian/rules
--- 0.5.6-1/debian/rules	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/rules	2023-01-25 01:35:21.000000000 +0000
@@ -1,11 +1,18 @@
 #!/usr/bin/make -f
 
+MAKEFLAGS = prefix=/usr sitelib=/usr/share/perl5
+
 %:
 	dh $@
 
-override_dh_installsystemduser:
-	dh_installsystemduser --no-enable
+ifneq (,$(findstring nodoc,$(DEB_BUILD_OPTIONS)))
+override_dh_auto_build:
+	dh_auto_build -- all-nodoc
+endif
 
 override_dh_auto_test:
 	# /dev/shm, the default, might be mounted with noexec
-	dh_auto_test -- TMPDIR=/var/tmp
+	dh_auto_test --no-parallel -- TMPDIR=/var/tmp
+
+override_dh_installsystemduser:
+	dh_installsystemduser --no-enable
diff -pruN 0.5.6-1/debian/salsa-ci.yml 0.5.7-2/debian/salsa-ci.yml
--- 0.5.6-1/debian/salsa-ci.yml	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/salsa-ci.yml	2023-01-25 01:35:21.000000000 +0000
@@ -1,7 +1,6 @@
 ---
 include:
-  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
-  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
+  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml
 
 # This test causes `doveadm exec imap` to fail with
 #
diff -pruN 0.5.6-1/debian/tests/control 0.5.7-2/debian/tests/control
--- 0.5.6-1/debian/tests/control	1970-01-01 00:00:00.000000000 +0000
+++ 0.5.7-2/debian/tests/control	2023-01-25 01:35:21.000000000 +0000
@@ -0,0 +1,9 @@
+Features: test-name=installcheck-interimap
+Test-Command: make installcheck-interimap bindir="/usr/bin"
+Restrictions: rw-build-tree
+Depends: dovecot-imapd, interimap, openssl, procps, sqlite3, xxd
+
+Features: test-name=installcheck-pullimap
+Test-Command: make installcheck-pullimap bindir="/usr/bin"
+Restrictions: rw-build-tree
+Depends: dovecot-imapd, dovecot-lmtpd, openssl, pullimap, xxd
diff -pruN 0.5.6-1/debian/upstream/signing-key.asc 0.5.7-2/debian/upstream/signing-key.asc
--- 0.5.6-1/debian/upstream/signing-key.asc	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/upstream/signing-key.asc	2023-01-25 01:35:21.000000000 +0000
@@ -12,203 +12,177 @@ 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
-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
+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
-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
-BHNmy5l+uuvL3PHl/BAlqYa4IvJPBMLl/H5AugbCBx40kSYo50AJdZ2Kt7bpXcoq
-Ex78gFLriFziYYUjqJaNx1DjeTvYE+hCDR2M5DTd3PO2PCeGVpe5IZpPaNusdwg6
-ubreTpWCZft3O1tJoyui4qEChGKVjV5juZIHNhdrXnnW8q+gzIfm221CQHG3R3zX
-YtRHhVTOurQrR3VpbGhlbSBNb3VsaW4gPGd1aWxoZW0ubW91bGluQGNoYWxtZXJz
-LnNlPokCHwQwAQoACQUCV35wugIdIAAKCRA5J42oEJ5iRFB7D/44uGGQbYaxwWo9
-mfzpkS2T3EVpwPzTasuEHB4E4prpP2UYjJP3f0i18K+rVYReHqp8LOXVQvg2HMsr
-EOHoSvdhuZq56glXWyTslCAOQGTc/AbFj/K2C72PhzoaS6Oq5hM4AW6ilMSGbEPR
-rr/Ys7oMhuLv0dlVYOZpcALeDO4c4sXK/XJnAOJgCbHPD+Miw+JSKZzMfQKmNenY
-9vN60zm1ipQDBwt9Z93h8FD+krh/QQYRiVQtIfYhgKw8/xdeVJbL51AYnPkSE7Ld
-6q4rIDASU/9BN1PN1vdhadTBCKd0CxZHfK7332qRdY1wKDHsoe0uVS2S1pUNFHtq
-0FPK7kkJNk5TrPaST1/lwwF1raZxfwMVVHvZnfOvbs0d+rEq6MRqjjfHxYrksXF6
-MLSueddRo+KpGO6FlPI3vRnfDAi0WSdENWAzfEaz3K/ZuodaTzwy35Dg3wxGwHxD
-Y/b11XRwBHjn//Z1hBhw+2Rw7iIFSYMikpMVSZqNDDOcXJ2UXT49f9c3SC7xXz1U
-qJqtvxgS5He1D7pNUP0mrOsETsk4W3cl15Z1tlb6iiWkrK9ZSLIWBxOZSWp5YxVh
-MLssbMAzW3blyKZzAn12Am3ap40Pb0KJBA4cUHKV/Gj3JnSP9CDr0kTerlJKeIga
-wRSc+84HpHHPc/xVxbwFHyzfFN7C+bQrR3VpbGhlbSBNb3VsaW4gPGd1aWxoZW0u
-bW91bGluQGZyaXBvc3Qub3JnPokCUQQwAQoAOwUCVmx7AjQdAFN1YnN1bWVkIGJ5
-ICJHdWlsaGVtIE1vdWxpbiA8Z3VpbGhlbUBmcmlwb3N0Lm9yZz4iAAoJEDknjagQ
-nmJESF0QALfe4R+HP+L8ScT4msHjhc6bqlJkckaYO4An7mNUe7IEMoRirYET226x
-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
-GJEHV3ge20qUwbV/0n1xVgRnKAM=
-=R/AC
+BwMFFQoJCAsFFgIDAQACHgECF4AWIQR0IN+GvOFaRY3OmXY5J42oEJ5iRAUCYWGZ
+EAUJFPpMKQAKCRA5J42oEJ5iRGieD/9GsiHSRcR6jiIsN7EENcChd7xk0MbVbyHF
+I+cD7IaeJGt7maun1VLL37MHhesZay7uapvQnS274akNfWTX3NSVPKmcZ9OY/lWM
+eCdwzqfAm6vZV3zTfm6W+9y99Hns9M3fvnprNZ0GARmbnbzcA5VwipJooonWFuG5
+2qVfO0JxSJQNaDAfMmP9n2L6aehbWEO6EcmHuzXbFPZi3GKxspNxZQft8YyW9/gz
+X8qufngvy2M2u2qhp8M5PN6gxxIHzLRkqW+6MU63fIYsupC887QLUCEG0Q9XLu0J
+0D6C59Tfo9p1ANDJuqLjRq0fEijmj/GIhn2GhwxUJH8wHXhfXZrpV6v/33Hs4UhX
+lllGdYF9kTzJxmq7ZbFTr05pMAjIUnkIxPaBIM/TdkzG6eT+EwX759Cqkg+LwhCF
+YGSdjfwti0LAxysw9Di7MYbR7uc/4XOHYTZ5QuiwUZZXt6QIXlEznMAfRWge2pQA
+lzqVaF3/H+S4PUKMi2J0m3XNjhVpBgcwKUR1ovWdyICDdxRQjn9/0Dsu+My18Usw
+ySHUXF4D5yIMAobMYZe4GEKFxlDQ5q1PgDwErHzFd+6UCt9qLJWIkbaLJzyfs9V9
+1TCiqrmVXQURJvIwcfY/VAaFCBKwlKniuJKFefLbJBt+lb183ZBVC9iLcx4eKlvP
+lhsdqoyE3rQsR3VpbGhlbSBNb3VsaW4gPGd1aWxoZW0ubW91bGluQGVucy1seW9u
+Lm9yZz6JAlQEEwEKAD4CGwEFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AWIQR0IN+G
+vOFaRY3OmXY5J42oEJ5iRAUCYWGZEAUJFPpMKQAKCRA5J42oEJ5iRPHaD/9Xh9Cz
+h23Zw/loU68aEJaTPSpzaDqJ5nig9jeqLIG2vH+bvHWqgZ51OnI66GdAnmb9RHp4
+iqSNiJPfE6KpYz6+Phdspf+q4YQ2N+Qpu55sHh7ssbfTkgOH+kErk9u1/cRRJ7ID
+HUc0+LIFqLp9KZAQQ46KzMkFfEMmBC0+Yl5iSk9wS9F2nMQG06RxnoyXvfJzkj7F
+wrO7whza0AVDVtluvKetBVe7FJrRrSAibyIhsoK2IF5mRayZqfWm6hbB560EjiXf
+SHnzAgdOBLkqPw9poYjONpVgbSvDQhE5Sj+MYVwNFAKHSmDMgvz3ftzXNpTPUamQ
+i+LZhrtlThRkNthp4Eq4UUCCnWXhLTdwMCpXOd0JnMGFnD16vRe0uLZjA96WhN/n
+4mk/LZDNXikgYPC/0a6VuWUb7lGssHKUSCzquidXRDHbNfIhhdsgqppSAbuDH7W9
+lJmmZg3hAqEU3taTzsGAzBtMXGMCSp1n5e5P3zCl+da0/mtP74VJac+Uby7ucA6X
+ZtopKI1Omeb4MfCo7PMuxpAt7lEM9eNIpdpb6Bmk4/iSaNrH699YAVwqRdp7VSSc
+qOLA4NGtDwYQ/dfbP+XSA5EdSNGxspmVtit2TBT93p8AE7kY0VOk4wvdIUt77qiK
+6Lu9B4EHEf8BRt983RalUDAFgkHkEbUYoVCMLrQkR3VpbGhlbSBNb3VsaW4gPGd1
+aWxoZW1AZ3VpbGhlbS5vcmc+iQJUBBMBCgA+AhsBBQsJCAcDBRUKCQgLBRYCAwEA
+Ah4BAheAFiEEdCDfhrzhWkWNzpl2OSeNqBCeYkQFAmFhmRAFCRT6TCkACgkQOSeN
+qBCeYkRShQ//VslSEgHqhnctdzwZULpLsOIZ92Cfyy/dG2JjSAsLQQVYaeMpKOaN
+4vNHA9teAbdsbSeuze3/udwyG8/kmjUrUv2Csq2aaso5newTsf4cjTTSG3f82kje
+H0ZeLBGTlWi9Z6aEDzioayVZmzK+os2d0xIuN0tOdaQc68d1rKGezECyUy8PB/Yq
+84DERFe9q053+XD4nWHmcVmhzcy6O2RMJoS7jLtMn6wGpD9AMnWHN4X6oaS1rkxZ
+EPnPrm+C0fsO+qV9zmsesahG+osCA8Tkd7ks1wd1EJNRXa6iSomdugdJX+HFgDR6
+WpKacNeYbW53UAhFASiJdsvkjPLYQoNF3rMzlcblUGdFWwEsOnRC6+GHA5zWkZJj
+s5AswLqeWMqACWiNniGiJ8UPE3d1Q0ltshdfUI0MRTQElQZ7kM/VcJgQM7y1IXTw
+7qLs5E+ziKRKA7/d9f2cPnejMz79CeDlXeWzh5JU8DudJ7Dk3mtumE/xy9FhwaPE
+Eg8zzadzxjSZC0X30PZWom+sK1I/gpU7Qh62oVzqjzZdBfo9x7h1oM7z4olbqY/K
+3zkq+dkUGTa3mqL+ms4Tiv7A9M0x8eQvoattK0oe840eDRtxF2djmgVS3Rtx1N2z
+zeUoLB+hlOCdgnjN63Pp/5V4LyLtFIjgEgFFForTOJCySsINnQSarDW0KEd1aWxo
+ZW0gTW91bGluIDxndWlsaGVtQGxpYnJlb2ZmaWNlLm9yZz6JAlMEEwEKAD0CGwEE
+CwkIBwUVCgkICwUWAgMBAAIeAQIXgBYhBHQg34a84VpFjc6ZdjknjagQnmJEBQJh
+YZkQBQkU+kwpAAoJEDknjagQnmJEuMAP/3wnnXZSAr4B1U9mk0tI2Om1mEr9fewD
+gpcA115+LBtJQqtawqC4VnkbOk2Q8SGIju1jQrh4GYvOyEE+sUx2vISn6/kHdHxn
+bxsHs2dWNNnS6Sa0v3oqL/Rdaic3HzfL15P9O/WPdXdEYmSlwmUzHyiXL5DkBlEN
+FmKYISionoGz785043DRUnky9+hsbsF+oYfE3Nmd6HR2M/ekTdxo4Tj/qAjHgusk
+qSz8m2hfebZAMlBDq/NCQgBDUifeA6wLe0wtz/cdtC6XMxYZ2JUWP8C4b5bXvUcW
+sRNu5l0bWGD1f2LrDvjNfHSthEByIsl5K/DjQN+aEzx6tfDN3VDRui46ud9FFkxG
+IploDLD744eP7o0s7lXqQhY/8cRm9AsjU6/xvGzMrG/dWiEj6z5AoNAtSFPj3oHM
+iRyhlyf+jizyoPJb7VqyvTAPMEeBeH89V7oIGUp/N3q8NLTm9ybamZu9U8/aZENh
+5/fPzpR5LngQt1kg9eI0D9ugy1dArjGKo9FhvNHRPtl9Ymg8bfZS0PvAkMddBqnK
+v72rj8JhmgVz0rshXaSuWn8fA1KTpVrJz05ZdJvKohpHfqBezPfeziemt5kFjTmE
+9Lp8ROgO1cqCYr+6CD+fAInvBlwZP3CK2cx2jjM9UObUxjDJtiyAGc6rf9EDUsyA
+orvj1PMSZ/zktCNHdWlsaGVtIE1vdWxpbiA8Z3VpbGhlbUBkZWJpYW4ub3JnPokC
+UwQTAQoAPQIbAQQLCQgHBRUKCQgLBRYCAwEAAh4BAheAFiEEdCDfhrzhWkWNzpl2
+OSeNqBCeYkQFAmFhmRAFCRT6TCkACgkQOSeNqBCeYkQCOQ//fK0eykmcKlEW2gVR
+IE2eA+NkVpJgW0DGGIvolqIbqGA/sVFvv6H3GpxvgH9+huFsmRIFmf/Ub3CBPHSI
+XvseMO3elQHM/IosVIrY0IJtZax8WNknvbzLx2m2766HSPB8xjwNL5eZ0xTZ1g89
+E5iUAw3Wt5BLPni9iRW1zIQvVIg+CTaIkpGth5RqOuzCRI36QUtyvohOLcCnhxEl
+k3brdUEcCsmbrem09HcIltrDttoNtsCZtrYy8cX6ffLrVZW6Lr8z24sUpgpCimgH
+bp6g5HXHpIaBcgGkzuvx8msW8ci9QKBVdl1xrZ2nfJ2LyEGMBybceK56cgRD9Eie
+nwtyA0gjlrIsv0sV556FhrmWQYI6yUuC1p8DlEvZZ1Ee/cMlKEgmpoF2FQEZH+L6
+avf49q5EIUZpOfn9hlB7UJIgIiAbHpySrIuXnbMKKQOlskZdPBo1WbAMHrP92LM5
+MPSTJvt/gPs2k2AGcTJWWlFgUxzlIQ1RrBegtCRE+gTbtSjQwUyiOYW7acTRr9NR
+XVI5WcXT3GSJvFxsP0cyshnRUNTdMaH0xEGeNIQj5+lcjl7mi4mISJ0goCfFw7n/
+7tokTf2ZeLwUcEUDv9/cenIFJ6HB8iCxZJEzAh8l55ULaJOHlWXYN731eAvXQi9x
+zCVRv8fdWicPMUgvJka6VnB55ia5Ag0EUJchEQEQAM4vkd/TxCle7C53DBL1h0E0
+xklDUUg+IRDoQfj1YTlJow0sIJYBg2eMH4ypppoB0RCBkmp+m1zl1t/CHqXPlwdz
+bhoDGR4KOeZpkScnQ6hQthz+NQq7rvdZjpDsky28oOJTO3n4tuMXNwT7sVeLhbBC
+mh1HYUU6ohE8UU16kAqKKlHlrA2XXO7iVLXVe9E+x/J/2B0bSZwrnta/EGT9N1c7
+mr9ClwdmneGqkwGHmc+AtG6nySNjWBCm2XP+hArANZxBn+LeTOW6FoGAEBCx7hzz
+JfvplgBxkJMJX5NjBDxUTElOfvDvFeR+9H3OXjqRIc/fQDhSp7JLzrLDIk4ucgNB
+8vSlyxUtIfeSmPGn7EHXPLk8I8HJ2hc+v/RBADfG9SPXu+Hl5Emkix8cm+dxLIl/
+J1RL2Dw8NBKtm4HPzl4kd9OyQqnT2QH0Ykyrdj0MhUrr3/cBzuVxWB0xHreM1NlY
+kEaBFmKnKIZt4Bq1NDpjkKeAMltkCAGx8uCtSj9xi5su7S5eWvVc62uRLwrcZ8gc
+0jeQmtr8lk84eNcn/vvH6gTKFf870c9Z2fTG2ozVzD7n9sBS8S8w1fLweUz5n9T+
+T0LZEv04nuseey6XktWyZdL7PvDHVgL56cRV+i95SKt6+6F55SXHjuVWqTJHZvXh
+9Wnaa+BH/87ewdpPfLOTABEBAAGJBFsEGAEKACYCGwIWIQR0IN+GvOFaRY3OmXY5
+J42oEJ5iRAUCYWGY5wUJFPpLVgIpwV0gBBkBCAAGBQJQlyERAAoJENOaSZw8IaVS
+VYYQAIaMn/jjc6hjWnFgdZFkJZrsj5q2qC4hpPYWP00a/YOoOFR6kX35mlvoqlJg
+Sm+MYkZAGfmBH7a7g7nbB8ibFcsNfNZpBy7zy3+MHP2MGs/jua2Pv4zudsOU/mMe
+c8VW7h5y9WdmKiDb2z1q1GvbO+/z0zdUX9H/hMt8jbY3iF4kbtWtvcwk/sUfGFUi
+Kfh5sylnp6QfaMOjH78MagI48XW1PQFCZLmMVxdz2WM7ivetG73JNpIt6uJhS9Cw
+BdKRyRML524Hw4MycFmc+wFT+jPZOttGfXBevkTFx5KzJqclgL6DqQR0WRgj5kQ5
+8HbpqohmXEwK1nEkzst+T4twkGFFupzOP08/ZzRy5oesak5l6ZrIF+syhOiZlYvx
+jvSc2cOcUKnXEpb6ZzL3ZPkSbugtDhpWTr+wEHL9aw2gIR0PkY30xfaKAq38Mjoi
+bf09zyUItWEFMfPI1WvRkN38G7max/c8qOMtxVnsDHoVNjRtTRwoDwmL0Iv0zFzf
+3MSX5HqiyI7KFWrHCKrg3aVeZ+2iO25Krbs/4KstBaTxYXHaX8raVWwoho8uluzj
+nCtkB3/ird8+owmMUHf0ifDEYIKqXPs1bzgfpeetlRGS9lbO1C79ApUeaYEjtMO5
+0dwIsSpO6ahWrY640klnXtT1ND9nfAo2fmUPuX//579QMXyeCRA5J42oEJ5iRIvS
+EADCVqQGNTjYrrSa9l5vKfwGuxJty+WGq7aUOIVQNdV+gg4vCbYEM+ssKy6BG1zT
+agjD2cxpoauN/jgFQEmJhzLITdAMlInU+Nq0QKqsi9D9QEaltSwcfjYhCHJf0Z2s
+cztA67XX2Jk9Xh+7nH152087qkh8eUWkbXyR0XucUDWGbLBk01jxZNoRp35QyYBL
+vQvGDdStQF24CxJmoZIuRsqFYvjlE9FzB/DBrSX9L/ZOqYjes+nbfVhZuP59W/GY
+STN6jeejG4Mq9aAegZjRUy9O9fUvYPjQnG+kFyPur+lq9LbKopsAW2PMy9z40neC
+BRSBss4DeewNvrBKed+HEiiwjAe9lDOmXIz27OOvw2R9RKZ9cAUCcUML9882n2cd
+eI5OB4eZMdSWyXdL8KRLN84g0WlLZ3g+sX2YzD0987vudA+5Aodlnfhst4aIsFvt
+2MDiV9URATUFeEFWYJtI+mIoOn9U+2B0hgLr3vClHBcEYJq4XHheAQFSOnEn/kHi
+ZkW3+4T1WUnHFXGnQdul5s7C0sLyxTHU+up/UQtiYg4rsvdrLuhddjM0yr+jxToU
+V0b9MVSSdCt8vScJ5SRod/hf1EnYcKB8akchVPsK+521RwUfF5IrMMnYPawnA2GE
+DCSYiR55MsxmvD/6vyGDXTwAAortKuavGnMGA9z+3I4WO7kCDQRQlyFpARAA2KsS
+1P4h24c7BYdLkcOF8FYWsJlLFkl8nEKfW5/mgxvaE2/1WIEA6RxMBF97m2uKgknj
+nVfVbNmpLM+8SOMDVBY6yCKc5DybYdW7tqm1GLXs4KtBzLktsPwW57qDW7wUypeb
+xIxNfwJi8j/bTKUmYwSKjyncbZCtJ6dzTsY3dNA4/mHHkSmtkmVNLnqoflUMs32k
+37qTDDbiNA6TdUOq469orB71NKmxyk8EOkysh8ETFwv6THUa+nn+li+NTQBmZc6v
++38mxEFu6gMfnOX3OkNS/Q0T12cHAM57Qc936Gpng1pUtk3t3QdRR91qbsL68wBk
+K+16cdhl5+VFoptjFGJMFwAh/7dW2s90q7aVMCEk9ceihuY5s6EZU7r70Vb4Lcyw
+GGZ91DwpryX2KIOwNL1UYH9K8gTRN9mTyHr0TSU/0lQySKbdCQEc1XSqZEBvHipx
+9RB54EAxJwQj2Dqy96zsTTlaqFgctg1JB6b4Qp6MDQ9Vvrd8mv61xM3xKt0jnN+E
+/8HHJRiXSbZE0uNe4sdYsXhJeyGw6r+Yt71yqT5Pjurd9EpOUGaULvn2p5SSQI2U
+rWSZ9W2zRTsfF9a+9/Ek5Opoak/PvGf+HIhRu35x+AEFvpgGSfGZ3b8+z71cI/hl
+cOPbrZsA8wgoR4EsA5fnlFiROiINNSaLMxO81x8AEQEAAYkCPAQYAQoAJgIbDBYh
+BHQg34a84VpFjc6ZdjknjagQnmJEBQJhYZjuBQkU+kr+AAoJEDknjagQnmJELcwP
+/3mMnPXR7aFtZTmQHmj+Fe58XBiTO1AMCpZdGR6eA3PkAQR23XJTtqC8vesMxtb8
+KZK3kQIndr3/Pj6MMRhIeLlggM1xoOnbmb1r4lakWGbrHukVFCyvyMTi/HTqkmJQ
+VTX+tmIR4mSgb+RazCQ5R68pvQ31pML9idJ/W0HvQit1S6ZrrddBJnv3QzA0ay0u
+HI75sNwx4ByGGa2KrU0QlqjaIWaCM86WTPbY57t0u6vk8AoLLE2XvhbFTIGOgn+R
+6Nq+ySetAek29V8NXxIJ3v13jqlDhF/EL09lRBkTSWxROZzgHdDjo5bdqqWSpzZu
+v2KJ5txaJJhN8o137+sTlrP97/aw9eH1fFIJs30xtV0HiLYRa0uuYG2oxExRe5vP
+xSqMbb68TgHmc8cTINjV7z+RARqUnRatULR6k+A04WDx00XRKsfnjuY+E4xeq7hH
+9ezTvOePx8NzhINRM7/VzBW6D+KeV+Q5UePJohXzCOBUpiJUIZ/p69J9RTrnW9oA
+RZtdEDWHhGIC6lW6HJyhBUZ5rHJGqi8rceVWms74IpyZ+BUDaS8WdOCvtpxkQ6wU
+hXD+3TEgQmwhiZ6FpopOpCy9GcLBhHG+Fxc+ksTSuQvdtYOah5+b4kb3Y7+uMgA9
++5rk49OPpvRMnr12YoeKNPPCtV9ruCQVtbMqs2p0RE2AuQINBFCXIa8BEACzq6qQ
+j3Xa/Dz03UQZkhqK6sHZpE1BzzUXd+lW0CTybdP/GQCYeieSmaPQc79JxNOyMHM+
+W3r+4gjPXU0dFGi4+85UvlcBW3VJo38YnvIiJWQeJd6Zil0oWoPcyU2Mrf9B1FN0
+crSaIhooLFV9Tv6jUjPkFsazxrCIPGJkUm0Nz8DrHOLnRAKi9v6WZ4vq2n/0wEvE
+kGyR5tivXmx0kPGQW72qdAAimfHjzRmMFvQQAv/7nEOrz6w8TZ+4tSDqREYR3Krj
+UP+qs63vFWJh6JOuQhS3sswnVW/0F65P66eG5f2bq4IydtllCfewBWiqNa4DKaCl
+cxlxCn0m70PU29AV/n/VrOhr1+Wx9tkW0Clacx9iPyCoaESFLCZDz6l/dGA8C4an
+NfPIFZnysfUlu9DMKmGPaJrNEVzLsZncIqFmBxOcAoTWUKHJx29n58LgJqGc0Y+y
+Gc3LGb2D6U+i3f3SllZyDFmmd77EMeMhdpqK1Cx9GK2+MK18ytbwEg0YFvRtiJv8
+u8KGZ+tPa9yzQNhC4qBBxY9YUMndcKoCEVw77PZbTOMWbrBDuzHEvchf2MJvBI1m
+ls52mw/zjqPLpdTc0drCoqqIwsjoHD2KeLnStHu/uBZ7ShImpZcrhUI2wOkRs2bJ
+7CdvFMm96n0AkCcs0S/nE3ZQjPdhMH4B1ZyT1wARAQABiQI8BBgBCgAmAhsgFiEE
+dCDfhrzhWkWNzpl2OSeNqBCeYkQFAmFhmO4FCRT6SrgACgkQOSeNqBCeYkT0lw//
+aVV861PFbP4MIYrzwU+fqTUjlkG8LDpzkgQjEfOls8TmRyTjBo1w5XFilUVGWCg7
+AI2ZptmYHkAWfz7oYao8SRIDiCQLqjScfLpZzNkKIGAJwEckYY7hscO7Cs486Edj
+K4a6SefZHH6vT7NH039U/xng2a3xD07zeJFEmox0iu0BEfUkSMemHGm5chPUhGCm
+IUl6r7e2nRNiBo4y8yunmPz7ukBm0z8/ed8HoS1FvbyvTU/SgXUm5wSXgVQQjhs0
+v13ajQCGjSVPRArB5WsgT7Vf2NLkBIyfJRk/+BJuZEqr9RCrCA78gCaD53e1lIEw
+y8kAsPHkD81cYOMKQG7Lbo1sRBmWgDYSeOsmwTxQuqY+UGcswnNzaVy96Gyd6T02
+CYGvaA1fsFsTA2l5uXRGE9Zx8HqInSZ4WQEaTjruFYIVMZv1SPXVrbE3Qp+IVL0Y
+Q1oZ+LdgqwYx8sQdxac1g0AiNqmz9psTApYWFKQbZfWjPafEz2k7a1ULwIC6c8xr
++Padk/NmOO+ayQ9J6BqQeQWJMzKw0IoSJGoxo48vVE/bRMjHqEOd1ny+bX87P1Yc
+8l+Xoc+UFtHKGsbF0qZU0I3iZwJlLKIgCySQxKPQO6ed84j/x5Vv9wnW7G+Ar6Mz
+nge0LOLFp0nO327S0TBFXIbXsXNlxJevhe1Y+VrkzRy4MwRXfnHgFgkrBgEEAdpH
+DwEBB0D+N4ETqNXynzzqV4Nwrwnt2t8XeALicUpE5NL7P/mA8okCPAQYAQoAJgIb
+IBYhBHQg34a84VpFjc6ZdjknjagQnmJEBQJhYZjuBQkOEvqHAAoJEDknjagQnmJE
+/Z0P/22JvR2QSUTSQs4Dx1vbLUJOE0lH16bzOxBX9UfReY3CpMUbKsmMOMqY1BfE
+ZCtjzG8fFViX2yq3MwZA7l2tq9L/fhLfI9Z8ChjRy7kZWDCcebku2QZYfYWtHlHZ
+KFrFvCBFNOcIbs7KMlUeSnZ1HqAxmjkPeXsHR/sST1ivUypGKY/clQ5413XfzhfU
+E8td0R7WdU3VfbfEvBdOLUH+plmFERqozYJfun4MFNR8tMImk5JOU9BeSPQuZcxW
+3H0cVeV3AhGdwVeX7kuJzCCyNxyh15GOqhofaED8B63hBvspEkTMGwLK8Tf/hVFr
+8iO/lHy8nKEGcDgBcNuDDO+jb5kv9w+dsogclcJI/1IQtPul/6yoWGa9PV/AggSS
+3QQR/fajuAMKq3X4Rg+eEv8pqIZ3KHvwGk/WarIULwrbX3O9UOGpbOMhX2U6vCkK
+Y3AHJUnPSMivyEuW7ZXycIKKrdN9maHPKvLEHH27pmYRQF1WFTyC5FnADA1kWjgh
+Unot0C6kOkWhx9ZHcjtljCdfICE4HFQwGDlczbgKKwCO4Rc0uJp+/sJTuj/FuyfC
+b+f6IsqOCY+NCKlAQFz5UZ37ww/QmRUn2FHyRxhN76maoX5/+ekNKQOxnno8k2DB
+z4HT+7qwz6AEuQ/kpSwvzj/uvuE2pvdrm0zoUGFkF8OmsWVk
+=fR9h
 -----END PGP PUBLIC KEY BLOCK-----
diff -pruN 0.5.6-1/debian/watch 0.5.7-2/debian/watch
--- 0.5.6-1/debian/watch	2021-01-01 15:20:51.000000000 +0000
+++ 0.5.7-2/debian/watch	2023-01-25 01:35:21.000000000 +0000
@@ -1,3 +1,4 @@
 version=4
 opts="mode=git,pgpmode=gittag" \
-https://git.guilhem.org/interimap/ refs/tags/v([\d\.]+)
+  https://git.guilhem.org/interimap.git \
+  refs/tags/v?@ANY_VERSION@
diff -pruN 0.5.6-1/doc/benchmark.md 0.5.7-2/doc/benchmark.md
--- 0.5.6-1/doc/benchmark.md	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/doc/benchmark.md	2022-02-27 15:24:31.000000000 +0000
@@ -48,8 +48,8 @@ by placing packet counters on the interf
 [OfflineIMAP]: https://www.offlineimap.org/
 [benchmark-script]: https://git.guilhem.org/interimap/plain/benchmark/run
 [Dovecot]: https://dovecot.org
-[dbox]: https://wiki.dovecot.org/MailboxFormat/dbox
-[maildir]: https://wiki.dovecot.org/MailboxFormat/Maildir
+[dbox]: https://doc.dovecot.org/admin_manual/mailbox_formats/dbox/
+[maildir]: https://doc.dovecot.org/admin_manual/mailbox_formats/maildir/
 
 -----------------------------------------------------------------------
 
diff -pruN 0.5.6-1/doc/build.md 0.5.7-2/doc/build.md
--- 0.5.6-1/doc/build.md	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/doc/build.md	2022-02-27 15:24:31.000000000 +0000
@@ -38,10 +38,10 @@ Additional packages are required in orde
 
     $ sudo apt install dovecot-imapd dovecot-lmtpd openssl procps sqlite3 xxd
 <!-- -->
-    $ make test
+    $ make check
 
-(The test suite also needs to bind to TCP ports 10024, 10143 and 10993
-on the loopback interface.)
+(Note also that the test suite needs to bind to TCP ports 10024, 10143
+and 10993 on the loopback interface.)
 
 Generate documentation
 ======================
@@ -51,32 +51,53 @@ Yet another set of packages is needed to
     $ sudo apt install jq pandoc
 
 Run `` `make manual` `` (or just `` `make` ``) in order to generate the
-manpages.  You'll find them at `doc/*.[1-9]`.  Use for instance `` `man
--l doc/interimap.1` `` in order to read your copy of the [`interimap`(1)]
-manpage.
-
-The HTML documentation can be built with `` `make html` ``.  HTML files
-are generated alongside their Markdown source by default, but you can
-choose another target directory using the `HTML_ROOTDIR` environment
-variable (the value of which defaults to `./doc`).  Moreover the
-[`libjs-bootstrap`](https://tracker.debian.org/libjs-bootstrap) is
-needed by default for the local CSS file; this can be controlled with
-the `CSS` environment variable (the value of which defaults to
-`/usr/share/javascript/bootstrap/css/bootstrap.min.css`).
-
-For instance, use
-
-    $ env CSS="https://guilhem.org/static/css/bootstrap.min.css" \
-		HTML_ROOTDIR="$XDG_RUNTIME_DIR/interimap" \
-		make html
+manuals.  You'll find them at `build/doc/*.[1-9]`.  Then use for
+instance `` `man -l build/doc/interimap.1` `` to read your local copy of
+the [`interimap`(1)] manual.
+
+The HTML documentation can be built with `` `make html` ``.  By default
+HTML files are generated at `build/doc/*.html`, and a local CSS file is
+used — namely `/usr/share/javascript/bootstrap4/css/bootstrap.css`,
+shipped the by [`libjs-bootstrap`](https://tracker.debian.org/libjs-bootstrap)
+package.  But this is configurable: use for instance
 
-to generate the HTML documentation under directory `$XDG_RUNTIME_DIR/interimap`
-(which needs to exist) using a remote CSS file.
+    $ make html builddir="$XDG_RUNTIME_DIR/interimap" \
+		CSS="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css"
 
-The `doc` target generates all documentation, manpages as well as HTML
+to generate the HTML documentation under `$XDG_RUNTIME_DIR/interimap/doc`
+using a remote CSS file.
+
+The `doc` target generates all documentation, manuals as well as HTML
 pages.
 
 
+Installation without root privileges
+====================================
+
+By default `` `make install` `` installs [`interimap`(1)] under
+`/usr/local`, hence requires root privileges.  However another prefix
+can be used in order to perform the (un)installation as an unprivileged
+user.  For instance
+
+    $ install -m0700 -vd ${XDG_DATA_HOME:-~/.local/share}/interimap
+    $ make install-nodoc \
+		prefix=$HOME/.local \
+		sitelib=${XDG_DATA_HOME:-~/.local/share}/interimap/lib \
+		systemd_userunitdir=${XDG_DATA_HOME:-~/.local/share}/systemd/user
+
+skips documentation and installs
+
+  * executables into `~/.local/bin` (instead of `/usr/local/bin`);
+  * libraries into `$XDG_DATA_HOME/interimap/lib` or `~/.local/share/interimap/lib`
+    (instead of `/usr/local/lib/site_perl`); and
+  * [systemd user unit files][`systemd.unit`(5)] into `$XDG_DATA_HOME/systemd/user`
+    or `~/.local/share/systemd/user` (instead of `/usr/local/lib/systemd/user`).
+
+Note that for uninstallation one must call `` `make uninstall prefix=…` ``
+with the very same assignment(s) used for installation.
+
+[`systemd.unit`(5)]: https://www.freedesktop.org/software/systemd/man/systemd.unit.html
+
 Build custom Debian packages
 ============================
 
diff -pruN 0.5.6-1/doc/development.md 0.5.7-2/doc/development.md
--- 0.5.6-1/doc/development.md	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/doc/development.md	2022-02-27 15:24:31.000000000 +0000
@@ -136,7 +136,7 @@ and `remote` accounts.
 
 Run [`interimap`(1)] without `--watch` in order to create the database.
 
-    $ env -i PATH="$PATH" perl -I./lib -T ./interimap --config="$BASEDIR/interimap.conf"
+    $ env -i PATH="$PATH" perl -T ./interimap --config="$BASEDIR/interimap.conf"
     Creating new schema in database file …/interimap.db
     database: Created mailbox INBOX
     […]
@@ -144,7 +144,7 @@ Run [`interimap`(1)] without `--watch` i
 You can now run [`interimap`(1)] with `--watch` set, here to one second
 to observe synchronization steps early.
 
-    $ env -i PATH="$PATH" perl -I./lib -T ./interimap --config="$BASEDIR/interimap.conf" \
+    $ env -i PATH="$PATH" perl -T ./interimap --config="$BASEDIR/interimap.conf" \
 		--watch=1 --debug
 
 Use instructions from the [previous section][Mail storage access]
@@ -168,12 +168,12 @@ Create a [`pullimap`(1)] configuration f
 
 Run [`pullimap`(1)] without `--idle` in order to create the state file.
 
-    $ env -i PATH="$PATH" perl -I./lib -T ./pullimap --config="$BASEDIR/pullimap.conf" \
+    $ env -i PATH="$PATH" perl -T ./pullimap --config="$BASEDIR/pullimap.conf" \
 		--no-delivery foo
 
 You can now run [`pullimap`(1)] with `--idle` set.
 
-    $ env -i PATH="$PATH" perl -I./lib -T ./pullimap --config="$BASEDIR/pullimap.conf" \
+    $ env -i PATH="$PATH" perl -T ./pullimap --config="$BASEDIR/pullimap.conf" \
 		--no-delivery --idle --debug foo
 
 Use instructions from the [previous section][Mail storage access]
@@ -194,10 +194,10 @@ recursively remove the directory `$BASED
 [IMAP4rev1]: https://tools.ietf.org/html/rfc3501
 [Dovecot]: https://dovecot.org
 [Dovecot Logging]: https://doc.dovecot.org/admin_manual/logging/
-[Dovecot LDA]: https://wiki.dovecot.org/LDA
+[Dovecot LDA]: https://doc.dovecot.org/configuration_manual/protocols/lda/
 [`getlogin`(3)]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getlogin.html
 [User Databases]: https://doc.dovecot.org/configuration_manual/authentication/user_databases_userdb/
-[Maildir]: https://wiki.dovecot.org/MailLocation/Maildir
+[Maildir]: https://doc.dovecot.org/configuration_manual/mail_location/Maildir/
 [RFC 2342]: https://tools.ietf.org/html/rfc2342
 [Dovecot Namespaces]: https://doc.dovecot.org/configuration_manual/namespace/
 [`interimap`(1)]: interimap.1.html
diff -pruN 0.5.6-1/doc/getting-started.md 0.5.7-2/doc/getting-started.md
--- 0.5.6-1/doc/getting-started.md	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/doc/getting-started.md	2022-02-27 15:24:31.000000000 +0000
@@ -84,7 +84,7 @@ mailbox delivery) then don't disable the
 wide configuration instead.  Same thing if your mail client isn't able
 to spawn a command for IMAP communication, and instead insists on
 connecting to a network socket (in that case you'll even need to
-configure [user authentication](https://wiki.dovecot.org/Authentication)
+configure [user authentication](https://doc.dovecot.org/configuration_manual/authentication/)
 for the IMAP service, which is out of scope for the present document).
 
 Run the following command to terminate and disable the system-wide
@@ -113,7 +113,8 @@ Some remarks on the above:
     running `` `doveconf -nc ${XDG_CONFIG_HOME:-~/.config}/dovecot/dovecot.conf` ``.
   * Messages will be stored in Maildir format under `~/Mail`.  Ensure
     the directory is either *empty* or *doesn't exist* before
-    continuing!  You may want to choose a different [format](https://wiki.dovecot.org/MailboxFormat)
+    continuing!  You may want to choose a different
+    [format](https://doc.dovecot.org/admin_manual/mailbox_formats/)
     here, or simply append `:LAYOUT=fs` to the `mail_location` value in
     order to use a nicer (File System like) Maildir layout.
   * The `separator` setting defines the IMAP hierarchy delimiter.  This
diff -pruN 0.5.6-1/.gitignore 0.5.7-2/.gitignore
--- 0.5.6-1/.gitignore	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/.gitignore	2022-02-27 15:24:31.000000000 +0000
@@ -1,6 +1,4 @@
 *~
 *.bak
-/doc/*.1
-/doc/*.html
-!/doc/template.html
+/build/
 /.pc/
diff -pruN 0.5.6-1/interimap 0.5.7-2/interimap
--- 0.5.6-1/interimap	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/interimap	2022-02-27 15:24:31.000000000 +0000
@@ -2,7 +2,7 @@
 
 #----------------------------------------------------------------------
 # Fast bidirectional synchronization for QRESYNC-capable IMAP servers
-# Copyright © 2015-2020 Guilhem Moulin <guilhem@fripost.org>
+# Copyright © 2015-2022 Guilhem Moulin <guilhem@fripost.org>
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -22,17 +22,18 @@ use v5.14.2;
 use strict;
 use warnings;
 
-our $VERSION = '0.5.6';
+our $VERSION = '0.5.7';
 my $NAME = 'interimap';
 my $DATABASE_VERSION = 1;
 use Getopt::Long qw/:config posix_default no_ignore_case gnu_compat
                             bundling auto_version/;
 use DBI ':sql_types';
 use DBD::SQLite::Constants ':file_open';
-use Fcntl qw/F_GETFD F_SETFD FD_CLOEXEC/;
+use Fcntl qw/O_WRONLY O_CREAT O_EXCL F_GETFD F_SETFD FD_CLOEXEC/;
 use List::Util 'first';
 
-use Net::IMAP::InterIMAP 0.5.6 qw/xdg_basedir read_config compact_set/;
+use lib "./lib";
+use Net::IMAP::InterIMAP 0.5.7 qw/xdg_basedir read_config compact_set/;
 
 # Clean up PATH
 $ENV{PATH} = join ':', qw{/usr/bin /bin};
@@ -159,6 +160,12 @@ $SIG{TERM} = sub { cleanup(); exit 0; };
 # Open (and maybe create) the database
 
 {
+    # don't auto-create in long-lived mode
+    unless ($CONFIG{watch} or -e $DBFILE) {
+        sysopen(my $fh, $DBFILE, O_WRONLY | O_CREAT | O_EXCL, 0600) or die "Can't create $DBFILE: $!";
+        close $fh or warn "close: $!";
+    }
+
     my $dbi_data_source = "dbi:SQLite:dbname=".$DBFILE;
     my %dbi_attrs = (
         AutoCommit => 0,
@@ -166,8 +173,6 @@ $SIG{TERM} = sub { cleanup(); exit 0; };
         sqlite_use_immediate_transaction => 1,
         sqlite_open_flags => SQLITE_OPEN_READWRITE
     );
-    # don't auto-create in long-lived mode
-    $dbi_attrs{sqlite_open_flags} |= SQLITE_OPEN_CREATE unless defined $CONFIG{watch};
 
     $DBH = DBI::->connect($dbi_data_source, undef, undef, \%dbi_attrs);
     $DBH->sqlite_busy_timeout(250);
diff -pruN 0.5.6-1/interimap.service 0.5.7-2/interimap.service
--- 0.5.6-1/interimap.service	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/interimap.service	2022-02-27 15:24:31.000000000 +0000
@@ -1,11 +1,12 @@
 [Unit]
 Description=Fast bidirectional synchronization for QRESYNC-capable IMAP servers
 Documentation=man:interimap(1)
+Documentation=https://guilhem.org/interimap/interimap.1.html
 Wants=network-online.target
 After=network-online.target
 
 [Service]
-ExecStart=/usr/bin/interimap --watch=60
+ExecStart=@bindir@/interimap --watch=60
 RestartSec=10min
 Restart=on-failure
 
diff -pruN 0.5.6-1/interimap@.service 0.5.7-2/interimap@.service
--- 0.5.6-1/interimap@.service	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/interimap@.service	2022-02-27 15:24:31.000000000 +0000
@@ -1,12 +1,13 @@
 [Unit]
 Description=Fast bidirectional synchronization for QRESYNC-capable IMAP servers (instance %i)
 Documentation=man:interimap(1)
+Documentation=https://guilhem.org/interimap/interimap.1.html
 PartOf=interimap.service
 Wants=network-online.target
 After=network-online.target
 
 [Service]
-ExecStart=/usr/bin/interimap --config=%i --watch=60
+ExecStart=@bindir@/interimap --config=%i --watch=60
 RestartSec=10min
 Restart=on-failure
 
diff -pruN 0.5.6-1/lib/Net/IMAP/InterIMAP.pm 0.5.7-2/lib/Net/IMAP/InterIMAP.pm
--- 0.5.6-1/lib/Net/IMAP/InterIMAP.pm	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/lib/Net/IMAP/InterIMAP.pm	2022-02-27 15:24:31.000000000 +0000
@@ -1,6 +1,6 @@
 #----------------------------------------------------------------------
 # A minimal IMAP4 client for QRESYNC-capable servers
-# Copyright © 2015-2020 Guilhem Moulin <guilhem@fripost.org>
+# Copyright © 2015-2022 Guilhem Moulin <guilhem@fripost.org>
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
 #----------------------------------------------------------------------
 
-package Net::IMAP::InterIMAP v0.5.6;
+package Net::IMAP::InterIMAP v0.5.7;
 use v5.20.0;
 use warnings;
 use strict;
@@ -1312,7 +1312,8 @@ sub pull_new_messages($$&@) {
         # 2^32-1: don't use '*' since the highest UID can be known already
         $range .= "$since:4294967295";
 
-        $UIDNEXT = $cache->{UIDNEXT} // $self->panic(); # sanity check
+        $UIDNEXT = $cache->{UIDNEXT} //
+            $self->panic("Unknown UIDNEXT value - non-compliant server?");
         $self->fetch($range, "($attrs)", sub($) {
             my $mail = shift;
             $UIDNEXT = $mail->{UID} + 1 if $UIDNEXT <= $mail->{UID};
diff -pruN 0.5.6-1/Makefile 0.5.7-2/Makefile
--- 0.5.6-1/Makefile	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/Makefile	2022-02-27 15:24:31.000000000 +0000
@@ -1,80 +1,117 @@
-DESTDIR ?= /usr/local
-BUILD_DOCDIR ?= ./doc
+srcdir ?= .
+builddir ?= build
+prefix ?= /usr/local
+exec_prefix ?= $(prefix)
+bindir ?= $(exec_prefix)/bin
+libdir ?= $(exec_prefix)/lib
+sitelib ?= $(libdir)/site_perl
+datarootdir ?= $(prefix)/share
+mandir ?= $(datarootdir)/man
+man1dir ?= $(mandir)/man1
+systemd_userunitdir ?= $(libdir)/systemd/user
+
 CSS ?= /usr/share/javascript/bootstrap4/css/bootstrap.css
-HTML_TEMPLATE ?= ./doc/template.html
+HTML_TEMPLATE ?= $(srcdir)/doc/template.html
 
-HTML_FILES = $(addprefix $(BUILD_DOCDIR)/,$(patsubst ./doc/%.md,%.html,$(wildcard ./doc/*.md)))
-MANUAL_FILES = $(addprefix $(BUILD_DOCDIR)/,$(patsubst ./doc/%.md,%,$(wildcard ./doc/*.[1-9].md)))
+PROGRAMS = $(addprefix $(builddir)/,interimap pullimap)
+HTML_FILES = $(patsubst $(srcdir)/doc/%.md,$(builddir)/doc/%.html,$(wildcard $(srcdir)/doc/*.md))
+MANUAL_FILES = $(patsubst $(srcdir)/doc/%.md,$(builddir)/doc/%,$(wildcard $(srcdir)/doc/*.[1-9].md))
+SERVICE_FILES = $(patsubst $(srcdir)/%.service,$(builddir)/%.service,$(wildcard $(srcdir)/*.service))
 
-all: manual
+all: all-nodoc manual
+all-nodoc: $(PROGRAMS) $(SERVICE_FILES)
 
+doc: manual html
 manual: $(MANUAL_FILES)
 html: $(HTML_FILES)
 
-# upper case the headers and remove the links
-$(MANUAL_FILES): $(BUILD_DOCDIR)/%: ./doc/%.md
-	pandoc -f markdown -t json -- "$<" | ./pandoc2man.jq | pandoc -s -f json -t man -o "$@"
+$(PROGRAMS): $(builddir)/%: $(srcdir)/%
+	@mkdir -vp $(dir $@)
+	perl -Te "print \"\$$_\\0\" foreach @INC;" | grep -Fxzq -e "$(sitelib)" && prefix="#" || prefix=""; \
+	sed -r "0,/^(use\\s+\lib\\s+)([\"'])[^\"']*\\2\\s*;/ s||$$prefix\\1\"$(sitelib)\";|" <"$<" >"$@"
+	chmod --reference="$<" -- "$@"
 
-test:
-	./tests/certs/generate
-	./tests/run-all
+# upper case the headers and remove the links
+$(MANUAL_FILES): $(builddir)/doc/%: $(srcdir)/doc/%.md
+	@mkdir -vp $(dir $@)
+	pandoc -f markdown -t json -- "$<" | $(srcdir)/pandoc2man.jq | pandoc -s -f json -t man -o "$@"
+
+$(SERVICE_FILES): $(builddir)/%.service: $(srcdir)/%.service
+	@mkdir -vp $(dir $@)
+	sed "s|@bindir@|$(bindir)|" <"$<" >"$@"
+
+testcerts:
+	$(srcdir)/tests/certs/generate
+
+check: check-interimap check-pullimap
+check-interimap: $(builddir)/interimap testcerts
+	INTERIMAP_I=$(srcdir)/lib INTERIMAP_PATH=$(builddir) $(srcdir)/tests/run-all interimap.list
+check-pullimap: $(builddir)/pullimap testcerts
+	INTERIMAP_I=$(srcdir)/lib INTERIMAP_PATH=$(builddir) $(srcdir)/tests/run-all pullimap.list
+
+installcheck: installcheck-interimap installcheck-pullimap
+installcheck-interimap: testcerts
+	INTERIMAP_I="" INTERIMAP_PATH=$(bindir) $(srcdir)/tests/run-all interimap.list
+installcheck-pullimap: testcerts
+	INTERIMAP_I="" INTERIMAP_PATH=$(bindir) $(srcdir)/tests/run-all pullimap.list
 
 release:
-	@if ! git diff HEAD --quiet -- ./Changelog ./interimap ./pullimap ./lib/Net/IMAP/InterIMAP.pm; then \
+	@if ! git -C $(srcdir) diff --quiet HEAD -- Changelog interimap pullimap lib/Net/IMAP/InterIMAP.pm; then \
 		echo "Dirty state, refusing to release!" >&2; \
 		exit 1; \
 	fi
-	VERS=$$(dpkg-parsechangelog -l Changelog -SVersion 2>/dev/null) && \
-		if git rev-parse -q --verify "refs/tags/v$$VERS" >/dev/null; then echo "tag exists" 2>/dev/null; exit 1; fi && \
-		sed -ri "0,/^( -- .*)  .*/ s//\\1  $(shell date -R)/" ./Changelog && \
+	VERS=$$(dpkg-parsechangelog -l $(srcdir)/Changelog -SVersion 2>/dev/null) && \
+		if git -C $(srcdir) rev-parse -q --verify "refs/tags/v$$VERS" >/dev/null; then echo "tag exists" 2>/dev/null; exit 1; fi && \
+		sed -ri "0,/^( -- .*)  .*/ s//\\1  $(shell date -R)/" $(srcdir)/Changelog && \
 		sed -ri "0,/^(our\\s+\\\$$VERSION\\s*=\\s*)'[0-9.]+'\\s*;/ s//\\1'$$VERS';/" \
-			-- ./interimap ./pullimap && \
+			-- $(srcdir)/interimap $(srcdir)/pullimap && \
 		sed -ri "0,/^(package\\s+Net::IMAP::InterIMAP\\s+)v[0-9.]+\\s*;/ s//\\1v$$VERS;/" \
-			-- ./lib/Net/IMAP/InterIMAP.pm && \
+			-- $(srcdir)/lib/Net/IMAP/InterIMAP.pm && \
 		sed -ri "0,/^(use\\s+Net::IMAP::InterIMAP\\s+)[0-9.]+(\\s|\\$$)/ s//\\1$$VERS\\2/" \
-			-- ./interimap ./pullimap && \
-		git commit -m "Prepare new release v$$VERS." \
-			-- ./Changelog ./interimap ./pullimap ./lib/Net/IMAP/InterIMAP.pm && \
-		git tag -sm "Release version $$VERS" "v$$VERS"
-
-## make html CSS="https://guilhem.org/static/css/bootstrap.min.css" BUILD_DOCDIR="$XDG_RUNTIME_DIR/Downloads"
-$(HTML_FILES): $(BUILD_DOCDIR)/%.html: ./doc/%.md $(HTML_TEMPLATE)
-	mtime="$$(git --no-pager log -1 --pretty="format:%ct" -- "$<" 2>/dev/null)"; \
+			-- $(srcdir)/interimap $(srcdir)/pullimap && \
+		git -C $(srcdir) commit -m "Prepare new release v$$VERS." \
+			-- Changelog interimap pullimap lib/Net/IMAP/InterIMAP.pm && \
+		git -C $(srcdir) tag -sm "Release version $$VERS" "v$$VERS"
+
+$(HTML_FILES): $(builddir)/doc/%.html: $(srcdir)/doc/%.md $(HTML_TEMPLATE)
+	@mkdir -vp $(dir $@)
+	mtime="$$(git -C $(srcdir) --no-pager log -1 --pretty="format:%ct" -- "$<" 2>/dev/null)"; \
 	[ -n "$$mtime" ] || mtime="$$(date +%s -r "$<")"; \
-	[ "$<" = "doc/index.md" ] && parent="" || parent="./index.html"; \
 	pandoc -sp -f markdown -t html+smart --css=$(CSS) --template=$(HTML_TEMPLATE) \
 		--variable=date:"$$(LC_TIME=C date +"Last modified on %a, %d %b %Y at %T %z" -d @"$$mtime")" \
 		--variable=keywords:"interimap" \
 		--variable=lang:"en" \
-		--variable=parent:"$$parent" \
+		--variable=parent:"$(if $(filter $@,$(builddir)/doc/index.html),,./index.html)" \
 		--output="$@" -- "$<"
 
-doc: manual html
-
-prefix ?= $(DESTDIR)
-exec_prefix ?= $(prefix)
-bindir ?= $(exec_prefix)/bin
-libdir ?= $(exec_prefix)/lib
-datarootdir ?= $(prefix)/share
-mandir ?= $(datarootdir)/man
-man1dir ?= $(mandir)/man1
-
-install: all
-	install -m0755 -vDt $(bindir) ./interimap ./pullimap
-	install -m0644 -vDT ./lib/Net/IMAP/InterIMAP.pm $(datarootdir)/perl5/Net/IMAP/InterIMAP.pm
-	install -m0644 -vDt $(man1dir) $(BUILD_DOCDIR)/interimap.1 $(BUILD_DOCDIR)/pullimap.1
-	install -m0644 -vDt $(datarootdir)/doc/pullimap ./pullimap.sample
-	install -m0644 -vDt $(datarootdir)/doc/interimap ./interimap.sample ./doc/getting-started.md ./doc/multi-account.md README
-	install -m0644 -vDt $(libdir)/systemd/user ./*.service
+INSTALL ?= install
+INSTALL_PROGRAM ?= $(INSTALL)
+INSTALL_DATA ?= $(INSTALL) -m0644
+
+install: install-nodoc
+	-$(INSTALL_DATA) -vDt $(DESTDIR)$(man1dir) $(builddir)/doc/interimap.1 $(builddir)/doc/pullimap.1
+	$(INSTALL_DATA) -vDt $(DESTDIR)$(datarootdir)/doc/pullimap $(srcdir)/pullimap.sample
+	$(INSTALL_DATA) -vDt $(DESTDIR)$(datarootdir)/doc/interimap $(srcdir)/interimap.sample \
+		$(srcdir)/doc/getting-started.md $(srcdir)/doc/multi-account.md $(srcdir)/README
+
+install-nodoc: all-nodoc
+	$(INSTALL_PROGRAM) -vDt $(DESTDIR)$(bindir) $(builddir)/interimap $(builddir)/pullimap
+	$(INSTALL_DATA) -vDT $(srcdir)/lib/Net/IMAP/InterIMAP.pm $(DESTDIR)$(sitelib)/Net/IMAP/InterIMAP.pm
+	$(INSTALL_DATA) -vDt $(DESTDIR)$(systemd_userunitdir) $(SERVICE_FILES)
 
 uninstall:
-	rm -vf -- $(bindir)/interimap $(man1dir)/interimap.1 $(libdir)/systemd/user/interimap*.service
-	rm -vf -- $(bindir)/pullimap $(man1dir)/pullimap.1 $(libdir)/systemd/user/pullimap*.service
-	rm -vf -- $(datarootdir)/perl5/Net/IMAP/InterIMAP.pm
-	rm -rvf -- $(datarootdir)/doc/interimap $(datarootdir)/doc/pullimap
-	rm -vf -- $(BUILD_DOCDIR)/interimap.1 $(BUILD_DOCDIR)/pullimap.1
+	rm -vf -- $(DESTDIR)$(bindir)/interimap $(DESTDIR)$(man1dir)/interimap.1 $(DESTDIR)$(systemd_userunitdir)/interimap*.service
+	rm -vf -- $(DESTDIR)$(bindir)/pullimap $(DESTDIR)$(man1dir)/pullimap.1 $(DESTDIR)$(systemd_userunitdir)/pullimap*.service
+	rm -vf -- $(DESTDIR)$(sitelib)/Net/IMAP/InterIMAP.pm
+	rm -rvf -- $(DESTDIR)$(datarootdir)/doc/interimap $(DESTDIR)$(datarootdir)/doc/pullimap
 
 clean:
-	rm -vf -- $(MANUAL_FILES) $(HTML_FILES)
-
-.PHONY: all manual html doc test release install uninstall clean
+	rm -vf -- $(PROGRAMS) $(MANUAL_FILES) $(HTML_FILES) $(SERVICE_FILES)
+	rm -vf -- $(srcdir)/tests/certs/*.key $(srcdir)/tests/certs/*.crt $(srcdir)/tests/certs/*.pem
+	-rmdir -vp --ignore-fail-on-non-empty -- $(builddir)/doc
+
+.PHONY: all all-nodoc manual html doc release testcerts \
+	check check-interimap check-pullimap \
+	install install-nodoc \
+	installcheck installcheck-interimap installcheck-pullimap \
+	uninstall clean
diff -pruN 0.5.6-1/pullimap 0.5.7-2/pullimap
--- 0.5.6-1/pullimap	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/pullimap	2022-02-27 15:24:31.000000000 +0000
@@ -2,7 +2,7 @@
 
 #----------------------------------------------------------------------
 # Pull mails from an IMAP mailbox and deliver them to an SMTP session
-# Copyright © 2016-2020 Guilhem Moulin <guilhem@fripost.org>
+# Copyright © 2016-2022 Guilhem Moulin <guilhem@fripost.org>
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -22,7 +22,7 @@ use v5.20.2;
 use strict;
 use warnings;
 
-our $VERSION = '0.5.6';
+our $VERSION = '0.5.7';
 my $NAME = 'pullimap';
 
 use Errno 'EINTR';
@@ -31,7 +31,8 @@ use Getopt::Long qw/:config posix_defaul
 use List::Util 'first';
 use Socket qw/PF_INET PF_INET6 SOCK_STREAM IPPROTO_TCP/;
 
-use Net::IMAP::InterIMAP 0.5.6 qw/xdg_basedir read_config compact_set/;
+use lib "./lib";
+use Net::IMAP::InterIMAP 0.5.7 qw/xdg_basedir read_config compact_set/;
 
 # Clean up PATH
 $ENV{PATH} = join ':', qw{/usr/bin /bin};
diff -pruN 0.5.6-1/pullimap@.service 0.5.7-2/pullimap@.service
--- 0.5.6-1/pullimap@.service	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/pullimap@.service	2022-02-27 15:24:31.000000000 +0000
@@ -1,11 +1,12 @@
 [Unit]
 Description=Pull mails from an IMAP mailbox and deliver them to an SMTP session (instance %i)
 Documentation=man:pullimap(1)
+Documentation=https://guilhem.org/interimap/pullimap.1.html
 Wants=network-online.target
 After=network-online.target
 
 [Service]
-ExecStart=/usr/bin/pullimap --idle %i
+ExecStart=@bindir@/pullimap --idle %i
 RestartSec=2min
 Restart=always
 
diff -pruN 0.5.6-1/README 0.5.7-2/README
--- 0.5.6-1/README	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/README	2022-02-27 15:24:31.000000000 +0000
@@ -77,6 +77,6 @@ sockets (type=imaps or type=imap).
 
 ______________________________________________________________________________
 
-InterIMAP is Copyright© 2015-2020 Guilhem Moulin ⟨guilhem@fripost.org⟩, and
-licensed for use under the GNU General Public License version 3 or later.  See
-‘COPYING’ for specific terms and distribution information.
+InterIMAP is Copyright © 2015-2022 Guilhem Moulin ⟨guilhem@fripost.org⟩, and
+is licensed for use under the GNU General Public License version 3 or later.
+See ‘COPYING’ for specific terms and distribution information.
diff -pruN 0.5.6-1/tests/certs/generate 0.5.7-2/tests/certs/generate
--- 0.5.6-1/tests/certs/generate	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/tests/certs/generate	2022-02-27 15:24:31.000000000 +0000
@@ -8,12 +8,20 @@ BASEDIR="$(dirname -- "$0")"
 OU="InterIMAP test suite"
 cd "$BASEDIR"
 
+OPENSSL_CONF="./openssl.cnf"
+export OPENSSL_CONF
+
 cadir="$(mktemp --tmpdir --directory)"
 trap 'rm -rf -- "$cadir"' EXIT INT TERM
+genpkey() {
+    local key="$1"
+    shift
+    openssl genpkey -out "$key" "$@" 2>&1
+}
 
 # generate CA (we intentionally throw away the private key and serial
 # file to avoid reuse)
-openssl genpkey -algorithm RSA -out "$cadir/ca.key"
+genpkey "$cadir/ca.key" -algorithm RSA
 openssl req -new -x509 -rand /dev/urandom -subj "/OU=$OU/CN=Fake Root CA" -key "$cadir/ca.key" -out ./ca.crt
 
 SERIAL=1
@@ -31,14 +39,14 @@ new() {
         printf "subjectAltName = %s\\n" "$3" >>"$cadir/new-ext.cnf"
     fi
     openssl x509 -req -in "$cadir/new.csr" -CA ./ca.crt -CAkey "$cadir/ca.key" \
-        -CAserial "$cadir/ca.srl" -CAcreateserial -extfile "$cadir/new-ext.cnf"
+        -CAserial "$cadir/ca.srl" -CAcreateserial -extfile "$cadir/new-ext.cnf" 2>&1
 }
 
-openssl genpkey -algorithm RSA -out ./dovecot.rsa.key
+genpkey ./dovecot.rsa.key -algorithm RSA
 new ./dovecot.rsa.key "localhost" "DNS:localhost,DNS:ip6-localhost,IP:127.0.0.1,IP:::1" >./dovecot.rsa.crt
 
-openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -pkeyopt ec_param_enc:named_curve -out ./dovecot.ecdsa.key
+genpkey ./dovecot.ecdsa.key -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -pkeyopt ec_param_enc:named_curve
 new ./dovecot.ecdsa.key "localhost" >./dovecot.ecdsa.crt
 
-openssl genpkey -algorithm RSA -out ./dovecot.rsa2.key
+genpkey ./dovecot.rsa2.key -algorithm RSA
 new ./dovecot.rsa2.key "imap.example.net" "DNS:imap.example.net,DNS:localhost" >./dovecot.rsa2.crt
diff -pruN 0.5.6-1/tests/certs/openssl.cnf 0.5.7-2/tests/certs/openssl.cnf
--- 0.5.6-1/tests/certs/openssl.cnf	1970-01-01 00:00:00.000000000 +0000
+++ 0.5.7-2/tests/certs/openssl.cnf	2022-02-27 15:24:31.000000000 +0000
@@ -0,0 +1,4 @@
+[ req ]
+distinguished_name = req_distinguished_name
+
+[ req_distinguished_name ]
diff -pruN 0.5.6-1/tests/config/dovecot/ssl.conf 0.5.7-2/tests/config/dovecot/ssl.conf
--- 0.5.6-1/tests/config/dovecot/ssl.conf	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/tests/config/dovecot/ssl.conf	2022-02-27 15:24:31.000000000 +0000
@@ -2,4 +2,5 @@ ssl = required
 ssl_cert = <dovecot.rsa.crt
 ssl_key = <dovecot.rsa.key
 ssl_dh = <dhparams.pem
-ssl_min_protocol = TLSv1
+ssl_min_protocol = TLSv1.2
+ssl_cipher_list = DEFAULT@SECLEVEL=2
diff -pruN 0.5.6-1/tests/db-exclusive-lock/t 0.5.7-2/tests/db-exclusive-lock/t
--- 0.5.6-1/tests/db-exclusive-lock/t	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/tests/db-exclusive-lock/t	2022-02-27 15:24:31.000000000 +0000
@@ -10,7 +10,7 @@ sleep .5
 # subsequent runs fail as we can't acquire the exclusive lock
 ! interimap || error
 
-grep -Fx "DBD::SQLite::db do failed: database is locked at ./interimap line 176." <"$STDERR" \
-    || error "Is \$DBH->do(\"PRAGMA locking_mode = EXCLUSIVE\"); at line 176?"
+grep -Ex "DBD::SQLite::db do failed: database is locked at (\S+/)?interimap line 181\." <"$STDERR" \
+    || error "Is \$DBH->do(\"PRAGMA locking_mode = EXCLUSIVE\"); at line 181?"
 
 # vim: set filetype=sh :
diff -pruN 0.5.6-1/tests/db-no-create--watch/t 0.5.7-2/tests/db-no-create--watch/t
--- 0.5.6-1/tests/db-no-create--watch/t	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/tests/db-no-create--watch/t	2022-02-27 15:24:31.000000000 +0000
@@ -1,6 +1,6 @@
 ! interimap --watch=60 || error
 
-grep -Ex "DBI connect\(.*\) failed: unable to open database file at \./interimap line 172\." <"$STDERR" || error
+grep -Ex "DBI connect\(.*\) failed: unable to open database file at (\S+/)?interimap line 177\." <"$STDERR" || error
 test \! -e "$XDG_DATA_HOME/interimap/remote.db" || error
 
 # vim: set filetype=sh :
diff -pruN 0.5.6-1/tests/interimap.list 0.5.7-2/tests/interimap.list
--- 0.5.6-1/tests/interimap.list	1970-01-01 00:00:00.000000000 +0000
+++ 0.5.7-2/tests/interimap.list	2022-02-27 15:24:31.000000000 +0000
@@ -0,0 +1,63 @@
+db-no-create--watch     `interimap --watch` refuses to create the database
+db-exclusive-lock       mutually exclusive DB access
+
+. DB schema upgrade (v0 -> v1)
+    db-upgrade-0-1                              migrate
+    # may happen if the server(s) software or its configuration changed
+    db-upgrade-0-1-delim-mismatch               abort on hierarchy delimiter mismatch
+    # foreign key checking was broken until v0.5
+    db-migration-0-1-foreign-key-violation      abort on foreign key contraint violation
+
+. Mailbox deletion
+    ... delete
+
+. Mailbox renaming
+    rename-exists-db        abort if target exists in the DB
+    rename-exists-local     abort if target exists locally
+    rename-exists-remote    abort if target exists remotely
+    ... rename-simple
+    ... rename-inferiors
+
+# try values beyond the signed integer limit
+largeint  Large UIDVALIDITY/UIDNEXT/HIGHESTMODSEQ values
+
+. Mailbox synchronization
+    ... sync-mailbox-list
+    list-reference      list-reference
+    list-mailbox        list-mailbox = foo "foo bar" "f\\\"o\x21o.*" "f\0o\0o"
+    list-select-opts    list-select-opts = SUBSCRIBED
+    ignore-mailbox      ignore-mailbox = ^virtual(?:\x00|$)
+    delimiter-change    doesn't choke on delimiter change
+
+resume  Resume when aborted
+repair  --repair
+
+. Authentication
+    auth-sasl-plain         AUTHENTICATE (SASL PLAIN)
+    auth-sasl-plain-no-ir   AUTHENTICATE (SASL PLAIN, no SASL-IR)
+    auth-login              LOGIN
+    auth-logindisabled      LOGINDISABLED
+    auth-noplaintext        abort when STARTTLS is not offered
+    preauth-plaintext       abort on MiTM via PREAUTH greeting
+
+compress    COMPRESS=DEFLATE
+condstore   CONDSTORE
+split-set   Split large sets to avoid extra-long command lines
+
+. SSL/TLS
+    starttls-logindisabled  LOGINDISABLED STARTTLS
+    starttls                STARTTLS
+    starttls-injection      STARTTLS response injection
+    tls                     SSL/TLS handshake
+    ... tls-verify-peer
+    tls-pin-fingerprint     pubkey fingerprint pinning
+    tls-rsa+ecdsa           pubkey fingerprint pinning for dual-cert RSA+ECDSA
+    tls-sni                 TLS servername extension (SNI)
+    tls-protocols           force TLS protocol versions
+    tls-ciphers             force TLS cipher list/suites
+
+. Live synchronization (60s)
+    sync-live            local/remote simulation
+    sync-live-crippled   local/remote simulation (crippled remote)
+    sync-live-tls        local/remote simulation (TLS remote)
+    sync-live-multi      local/remote1+remote2+remote3 simulation (3 local namespaces)
diff -pruN 0.5.6-1/tests/list 0.5.7-2/tests/list
--- 0.5.6-1/tests/list	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/tests/list	1970-01-01 00:00:00.000000000 +0000
@@ -1,66 +0,0 @@
-db-no-create--watch     `interimap --watch` refuses to create the database
-db-exclusive-lock       mutually exclusive DB access
-
-. DB schema upgrade (v0 -> v1)
-    db-upgrade-0-1                              migrate
-    # may happen if the server(s) software or its configuration changed
-    db-upgrade-0-1-delim-mismatch               abort on hierarchy delimiter mismatch
-    # foreign key checking was broken until v0.5
-    db-migration-0-1-foreign-key-violation      abort on foreign key contraint violation
-
-. Mailbox deletion
-    ... delete
-
-. Mailbox renaming
-    rename-exists-db        abort if target exists in the DB
-    rename-exists-local     abort if target exists locally
-    rename-exists-remote    abort if target exists remotely
-    ... rename-simple
-    ... rename-inferiors
-
-# try values beyond the signed integer limit
-largeint  Large UIDVALIDITY/UIDNEXT/HIGHESTMODSEQ values
-
-. Mailbox synchronization
-    ... sync-mailbox-list
-    list-reference      list-reference
-    list-mailbox        list-mailbox = foo "foo bar" "f\\\"o\x21o.*" "f\0o\0o"
-    list-select-opts    list-select-opts = SUBSCRIBED
-    ignore-mailbox      ignore-mailbox = ^virtual(?:\x00|$)
-    delimiter-change    doesn't choke on delimiter change
-
-resume  Resume when aborted
-repair  --repair
-
-. Authentication
-    auth-sasl-plain         AUTHENTICATE (SASL PLAIN)
-    auth-sasl-plain-no-ir   AUTHENTICATE (SASL PLAIN, no SASL-IR)
-    auth-login              LOGIN
-    auth-logindisabled      LOGINDISABLED
-    auth-noplaintext        abort when STARTTLS is not offered
-    preauth-plaintext       abort on MiTM via PREAUTH greeting
-
-compress    COMPRESS=DEFLATE
-condstore   CONDSTORE
-split-set   Split large sets to avoid extra-long command lines
-
-. SSL/TLS
-    starttls-logindisabled  LOGINDISABLED STARTTLS
-    starttls                STARTTLS
-    starttls-injection      STARTTLS response injection
-    tls                     SSL/TLS handshake
-    ... tls-verify-peer
-    tls-pin-fingerprint     pubkey fingerprint pinning
-    tls-rsa+ecdsa           pubkey fingerprint pinning for dual-cert RSA+ECDSA
-    tls-sni                 TLS servername extension (SNI)
-    tls-protocols           force TLS protocol versions
-    tls-ciphers             force TLS cipher list/suites
-
-. Live synchronization (60s)
-    sync-live            local/remote simulation
-    sync-live-crippled   local/remote simulation (crippled remote)
-    sync-live-tls        local/remote simulation (TLS remote)
-    sync-live-multi      local/remote1+remote2+remote3 simulation (3 local namespaces)
-
-. pullimap
-    ... pullimap
diff -pruN 0.5.6-1/tests/pullimap/t 0.5.7-2/tests/pullimap/t
--- 0.5.6-1/tests/pullimap/t	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/tests/pullimap/t	2022-02-27 15:24:31.000000000 +0000
@@ -6,6 +6,13 @@ step_start "\`pullimap --idle\` refuses
 ! pullimap --idle "remote" || error
 step_done
 
+step_start "\`pullimap\` creates statefile with mode 0600"
+pullimap "remote" || error
+if ! st="$(stat -c"%#a" -- "$XDG_DATA_HOME/pullimap/remote")" || [ "$st" != "0600" ]; then
+    error "$XDG_DATA_HOME/pullimap/remote has mode $st != 0600"
+fi
+step_done
+
 # compare mailboxes (can't compare the RFC 3501 TEXT as the LMTPd inconditionally
 # adds a Return-Path: header -- and also Delivered-To: and Received: to by default)
 list_mails_sha256() {
@@ -104,29 +111,31 @@ doveadm -u "remote" search mailbox "$MAI
 step_done
 
 
-step_start "--idle (${TIMEOUT}s)"
+if [ $TIMEOUT -gt 0 ]; then
+    step_start "--idle (${TIMEOUT}s)"
 
-pullimap --idle "remote" & PID=$!
-trap "ptree_abort $PID" EXIT INT TERM
+    pullimap --idle "remote" & PID=$!
+    trap "ptree_abort $PID" EXIT INT TERM
 
-timer=$(( $(date +%s) + TIMEOUT ))
-while [ $(date +%s) -le $timer ]; do
-    n="$(shuf -n1 -i1-5)"
-    for (( i=0; i < n; i++)); do
-        sample_message | deliver -u "remote"  -- -m "$MAILBOX"
+    timer=$(( $(date +%s) + TIMEOUT ))
+    while [ $(date +%s) -le $timer ]; do
+        n="$(shuf -n1 -i1-5)"
+        for (( i=0; i < n; i++)); do
+            sample_message | deliver -u "remote"  -- -m "$MAILBOX"
+        done
+
+        s=$(shuf -n1 -i1-1500)
+        [ $s -ge 1000 ] && s="$(printf "1.%03d" $((s-1000)))" || s="$(printf "0.%03d" $s)"
+        sleep "$s"
     done
 
-    s=$(shuf -n1 -i1-1500)
-    [ $s -ge 1000 ] && s="$(printf "1.%03d" $((s-1000)))" || s="$(printf "0.%03d" $s)"
-    sleep "$s"
-done
-
-sleep 5
-ptree_abort $PID
-trap - EXIT INT TERM
-
-check
-step_done
+    sleep 5
+    ptree_abort $PID
+    trap - EXIT INT TERM
+
+    check
+    step_done
+fi
 
 
 step_start "Purging"
diff -pruN 0.5.6-1/tests/pullimap.list 0.5.7-2/tests/pullimap.list
--- 0.5.6-1/tests/pullimap.list	1970-01-01 00:00:00.000000000 +0000
+++ 0.5.7-2/tests/pullimap.list	2022-02-27 15:24:31.000000000 +0000
@@ -0,0 +1,2 @@
+. pullimap
+    ... pullimap
diff -pruN 0.5.6-1/tests/run 0.5.7-2/tests/run
--- 0.5.6-1/tests/run	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/tests/run	2022-02-27 15:24:31.000000000 +0000
@@ -38,6 +38,12 @@ fi
 # cleanup environment
 unset OPENSSL_CONF SSL_CERT_FILE SSL_CERT_DIR
 
+if [ -z "${INTERIMAP_PATH+x}" ]; then
+    INTERIMAP_PATH="./"
+elif [ -n "$INTERIMAP_PATH" ]; then
+    INTERIMAP_PATH="${INTERIMAP_PATH%/}/"
+fi
+
 ROOTDIR="$(mktemp --tmpdir="${TMPDIR:-/dev/shm}" --directory "$1.XXXXXXXXXX")"
 declare -a DOVECOT_SERVER=()
 trap cleanup EXIT INT TERM
@@ -206,26 +212,32 @@ prepare
 interimap() { _interimap_cmd "interimap" "$@"; }
 pullimap()  { _interimap_cmd "pullimap"  "$@"; }
 _interimap_cmd() {
-    declare -a ENVIRON=()
+    declare -a ENVIRON=() args=()
     local script="$1" rv=0
     shift
     environ_set "local"
     [ -z "${OPENSSL_CONF+x}" ]  || ENVIRON+=( OPENSSL_CONF="$OPENSSL_CONF" )
     [ -z "${SSL_CERT_FILE+x}" ] || ENVIRON+=( SSL_CERT_FILE="$SSL_CERT_FILE" )
     [ -z "${SSL_CERT_DIR+x}" ]  || ENVIRON+=( SSL_CERT_DIR="$SSL_CERT_DIR" )
-    env -i "${ENVIRON[@]}" perl -I./lib -T "./$script" "$@" 2>"$STDERR" || rv=$?
+    [ -z "${INTERIMAP_I:+x}" ] || args+=( perl -I"$INTERIMAP_I" -T )
+    args+=( "$INTERIMAP_PATH$script" "$@" )
+    #printf "I: Running \`%s\`\\n" "${args[*]}" >&3
+    env -i "${ENVIRON[@]}" "${args[@]}" 2>"$STDERR" || rv=$?
     cat <"$STDERR" >&2
     return $rv
 }
 interimap_init() {
     local u="${1-remote}"
-    local db="$XDG_DATA_HOME/interimap/$u.db"
+    local db="$XDG_DATA_HOME/interimap/$u.db" st
     local cfg="config${u#remote}"
 
     test \! -e "$db"          || error "Database already exists" 1
     interimap --config "$cfg" || error "Couldn't initialize interimap" 1
     test -f "$db"             || error "Database is still missing" 1
     grep -Fx "Creating new schema in database file $db" <"$STDERR" || error "DB wasn't created" 1
+    if ! st="$(stat -c"%#a" -- "$db")" || [ "$st" != "0600" ]; then
+        error "$db has mode $st != 0600" 1
+    fi
 }
 doveadm() {
     if [ $# -le 2 ] || [ "$1" != "-u" ]; then
@@ -449,7 +461,7 @@ passed() {
 # Run test in a sub-shell
 declare -a ENVIRON=()
 environ_set "local"
-export TMPDIR TESTDIR STDERR "${ENVIRON[@]}"
+export TMPDIR TESTDIR INTERIMAP_PATH INTERIMAP_I STDERR "${ENVIRON[@]}"
 export -f environ_set doveadm interimap interimap_init pullimap _interimap_cmd
 export -f sqlite3 sample_message deliver ptree_abort step_start step_done passed
 export -f check_mailbox_status check_mailbox_status_values check_mailbox_status2
diff -pruN 0.5.6-1/tests/run-all 0.5.7-2/tests/run-all
--- 0.5.6-1/tests/run-all	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/tests/run-all	2022-02-27 15:24:31.000000000 +0000
@@ -24,6 +24,7 @@ export PATH
 
 BASEDIR="$(dirname -- "$0")"
 RUN="$BASEDIR/run"
+list="$1"
 
 failed=0
 
@@ -54,7 +55,7 @@ while IFS="" read -r x; do
     fi
 
     INDENT="$indent" "$RUN" "$t" ${desc+"$desc"} || failed=$(( failed+1 ))
-done <"$BASEDIR/list"
+done <"$BASEDIR/$list"
 
 if [ $failed -eq 0 ]; then
     printf "All tests passed.\\n"
diff -pruN 0.5.6-1/tests/tls-protocols/openssl.cnf 0.5.7-2/tests/tls-protocols/openssl.cnf
--- 0.5.6-1/tests/tls-protocols/openssl.cnf	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/tests/tls-protocols/openssl.cnf	2022-02-27 15:24:31.000000000 +0000
@@ -11,4 +11,4 @@ system_default = system_default_sect
 
 [system_default_sect]
 MinProtocol = None
-CipherString = DEFAULT
+CipherString = DEFAULT@SECLEVEL=0
diff -pruN 0.5.6-1/tests/tls-protocols/remote.conf 0.5.7-2/tests/tls-protocols/remote.conf
--- 0.5.6-1/tests/tls-protocols/remote.conf	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/tests/tls-protocols/remote.conf	2022-02-27 15:24:31.000000000 +0000
@@ -1,2 +1,4 @@
 !include conf.d/imapd.conf
 !include conf.d/ssl.conf
+ssl_min_protocol = TLSv1
+ssl_cipher_list = DEFAULT@SECLEVEL=0
diff -pruN 0.5.6-1/tests/tls-rsa+ecdsa/t 0.5.7-2/tests/tls-rsa+ecdsa/t
--- 0.5.6-1/tests/tls-rsa+ecdsa/t	2021-01-01 15:05:53.000000000 +0000
+++ 0.5.7-2/tests/tls-rsa+ecdsa/t	2022-02-27 15:24:31.000000000 +0000
@@ -28,7 +28,7 @@ interimap_init
 check_mailbox_status "INBOX"
 
 interimap --debug || error
-# which peer certificate is used is up to libssl 
+# which peer certificate is used is up to libssl
 grep -Fx -e "remote: Peer certificate fingerprint: sha256\$$X509_SHA256" \
          -e "remote: Peer certificate fingerprint: sha256\$$X509_ALT_SHA256" \
          <"$STDERR" || error
