iter_output() waited until its caller's first next() call to spawn
the journalctl tail, which could lead to log traffic being missed,
hanging next() forever: start the tail right away instead.
- Fix dovecot package download URLs for new
[release](https://github.com/chatmail/dovecot/releases/tag/upstream%2F2.3.21%2Bdfsg1-3%2Bchatmail2)
with
- debian-security backport for 12 CVEs
- distro-specific suffix (+deb{release}u1), enabling a simplified
primary URL path and combined github releases
- Use VERSION_ID from os-release as deb_release instead of codename
mapping, reorder hash-dict to match Github release page
- Remove redundant parsing/validation, let function validate against hash dict
- Update test expectations and test new versioning derivation
`cmdeploy run` fails after system upgrade to Debian 13 with "Fatal Python
error: init_fs_encoding: failed to get the Python codec of the filesystem
encoding" indicating a Python version missmatch. Check for both versions and
remove old `remote_venv_dir` on mismatch to allow clean reinitialization by
subsequent pip.virtualenv().
- Install .debs via apt-get install instead of dpkg+fix-broken
- Package hashes are now keyed by (arch, codename, pkg):
- download.delta.chat uploads now go to dovecot/{distro}/{version}/
- GitHub release packages get a _{distro}.deb suffix to allow for
combined releases.
Tests:
- updated to support this and add a test to check for the unsupported
release version case
- fix make_host to accept extra args from Command fact
- assert single apt-get install command
the fixtures from chatmaild and cmdeploy test plugins were clashing,
and the "rpc" fixture was shadowed by deltachat-rpc-client.
We could change the way plugins load but it's also useful to have
disambiguated fixture names as we are often working across the code bases.
also removes a few unused historic fluff.
datetime.now(timezone.utc).timestamp() is actually 7200 seconds in the past.
The Python deprecation warning of utcnow() warning actually pointed there.
Deploy filtermail.mtail program along delivered_mail.mtail, fetched from
upstream; for this, refactor download_executable to accept mode, so we
can use it to upload non-binaries.
refactor: make hashes (for uniformity) and mtail version (for use by
mtail deployer) module constants.
Additionally, gate both mtail programs on mtail_address being set.
turns out Python has the nice https://pypi.org/project/lupa/
that allows us to quite easily test dovecot LUA parts
without figuring out errors on deploy.
The previous blurb still called Madmail an experimental Maddy fork.
That applied to v1. v2 is a Rust rewrite that ships SMTP, IMAP,
encryption enforcement, and real-time services in a single binary.
- The hardcoded root@relaydomain address was unusued/unrooted
and no one knew about it, it was used nowhere.
Better to use privacy_mail which operators can set
which might eventually be shown in the UI's relay list.
- remove generic useless mail_server_comment string.
Clients receive these values as IMAP METADATA /shared/admin and
/shared/comment only for internal debugging/info purposes.
It looks like the reason it exists in the default configuration
is an example for <https://www.postfix.org/FILTER_README.html>
Using this filter requires configuration such as
"-o content_filter=filter:dummy" and we don't have it.
Default behavior is processing headers
that are actually part of the message body.
This is unlikely to be needed
as headers such as Received are not added into MIME parts,
but may result in broken DKIM signatures
if the body is modified.
## 0.7.1 - 2026-06-09
### Bug Fixes
- Switch ratelimiter to MonotonicClock
- *(smtp-server)* Correct error when EOF while reading DATA
- *(resolver)* Disable negative caching
- Ignore CNAME records when resolving TXT records
### Features
- Switch to aws-lc-rs cryptography provider
### Miscellaneous Tasks
- Add filtermail.mtail so filtermail failures can be monitored
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
Previously used colors caused
diagrams to be unreadable in
light mode.
Removing styling completely,
as this was redundant anyway.
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
The original crypt library was last supported in Python 3.12, so it's
not needed until Python 3.13 is default (Trixie)
> The crypt_r module is a renamed copy of the crypt module as it was present in Python 3.12 before it was removed.
Adds a detailed diagram describing
all paths a message can take,
that takes into account postfix services.
Additionally, adds OpenDKIM to dependency
diagram.
Fixes: #771
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
Co-authored-by: missytake <missytake@systemli.org>
This will remove all headers possible during LMTP delivery, except:
- From: required or core does not process the message correctly.
Also required for cleartext compatibility.
- Message-Id: required for clients to know which messages have been
downloaded
- Chat-Is-Post-Message: is required for our attachment previews
- Content-Type: required
- For Cleartext compability: To, CC, In-Reply-To, References, Subject,
and Date
- For Chatmail future expansion, allow Chat-*
- Permit the entire Secure-Join* namespace
Co-authored-by: holger krekel <holger@merlinux.eu>