| Commit message (Collapse) | Author | Age | Files |
|
|
|
|
|
|
| |
Not a good idea to use a world-writable directory, see ssh_config(5)…
Note that variable expansion is only available in OpenSSH 8.4 and later,
cf. https://bugzilla.mindrot.org/show_bug.cgi?id=3140 .
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is shorter and more future-proof. Quoting the manual:
restrict
Enable all restrictions, i.e. disable port, agent and X11
forwarding, as well as disabling PTY allocation and execution of
~/.ssh/rc. If any future restriction capabilities are added to
authorized_keys files they will be included in this set.
Note that this won't work with Jessie's OpenSSH server.
|
| |
|
|
|
|
|
| |
Also, make use the tag doesn't exist, and fail early if we can't detect
the version.
|
| |
|
|
|
|
|
|
|
|
| |
Using the libssl interface simplifies our protocol black/whitelist
greatly; this only allows simple min/max bounds, but holes are arguably
not very useful here.
Using the new settings bumps the required libssl version to 1.1.0.
|
|
|
|
|
|
|
|
| |
So we can test TLSv1 as well, not just TLSv1.2 and later.
Also, explicitly set ssl_min_protocol=TLSv1 in the Dovecot configuration
file (the default as of 2.3.11.3), hence running TLS tests now require
Dovecot 2.3 or later.
|
| |
|
|
|
|
| |
This avoids maintaing our own map.
|
| |
|
|
|
|
|
|
|
|
| |
Namely, use the system default instead of "!SSLv2 !SSLv3 !TLSv1 !TLSv1.1".
As of Debian Buster (OpenSSL 1.1.1) this does not make a difference,
however using the system default provides better compatibility with
future libssl versions.
|
|
|
|
|
| |
The test suite already required OpenSSL ≥1.1.1 as some tests are using
TLSv1.3.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Also, change the tag format from upstream/$VERSION to v$VERSION.
|
|
|
|
|
|
| |
This is controlled by the new 'SSL_hostname' option. The default value
of that option is the value of the 'host' option when it is hostname,
and the empty string (which disables SNI) when it is an IP literal.
|
|
|
|
|
|
|
|
|
|
| |
More precisely, ensure that the certificate Subject Alternative Name
(SAN) or Subject CommonName (CN) matches the hostname or IP literal
specified by the 'host' option. Previously it was only verifying the
chain of trust.
This bumps the minimum Net::SSLeay version to 1.83 and OpenSSL version
1.0.2.
|
|
|
|
|
| |
Also, document that enclosing 'host' value in square brackets forces its
interpretation as an IP literal (hence skips name resolution).
|
|
|
|
|
| |
In addition, sign test certificates with the same root CA. Hence
running `make test` now requires OpenSSL 1.1.1 or later.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This requires dovecot-imapd 2.2.31 or later.
Certificate generated with:
$ openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -pkeyopt ec_param_enc:named_curve \
-out tests/snippets/dovecot/dovecot.ecdsa.key
$ openssl req -x509 -days 3650 -subj "/CN=InterIMAP test suite" \
-key tests/snippets/dovecot/dovecot.ecdsa.key \
-out tests/snippets/dovecot/dovecot.ecdsa.crt
|
|
|
|
|
|
|
|
|
| |
to pin.
And succeeds if, and only if, the peer certificate SPKI matches one of
the pinned digest values. Specifying multiple digest values can key
useful in key rollover scenarios and/or when the server supports
certificates of different types (for instance RSA+ECDSA).
|
|
|
|
|
|
|
|
|
| |
It's arguably the most common use-case. Generated with
$ openssl genpkey -algorithm RSA -out tests/snippets/dovecot/dovecot.rsa.key
$ openssl req -x509 -days 3650 -subj "/CN=InterIMAP test suite" \
-key tests/snippets/dovecot/dovecot.rsa.key \
-out tests/snippets/dovecot/dovecot.rsa.crt
|
|
|
|
|
|
| |
The standard error is never sent to /dev/null in debug mode.
Closes: deb#968392
|
| |
|
|
|
|
|
| |
Set "STARTTLS = NO" to ignore. This is similar to CVE-2020-12398 and
CVE-2020-14093.
|
|
|
|
| |
For background see https://gitlab.com/muttmua/mutt/-/issues/248 .
|
|
|
|
| |
CAPABILITY listing.
|
| |
|
| |
|
|
|
|
|
|
| |
Honor BUILD_DOCDIR and DESTDIR variables.
Also, remove the `use lib` statement from our executables.
|
|
|
|
| |
comparison tests.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Some LMTP servers, Dovecot's in particular, trims leading dots that are
not doubled (e.g. “.foo” would become “foo”). In RFC 5322 sec. 4.5.2
explicitly says that when an RFC 5322 line starts with a '.', the
character needs to be doubled.
|
| |
|
|
|
|
|
|
| |
Like we do for zero-length messages.
Closes: #944812.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 .
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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⁹).
|
|
|
|
|
| |
SSL connections are accepted on TCP port 10993. Also, fix STARTTLS
directive, broken since fba1c36…
|
| |
|
|
|
|
|
|
|
| |
Also, introduce new option 'logger-prefix' to determine the prefix of
each log line.
Closes: #942725.
|
|
|
|
|
| |
Cf. Compress::Raw::Zlib's documentation. Z_STREAM_END denotes a
successful state.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|