373[Ø]™ and GitHub
437287fadc
feat(tests): add optional benchmark cooldown between iterations
2026-02-22 15:55:03 +00:00
link2xt
0ad679997a
feat: reconfigure acmetool from redirector to proxy mode
...
This elimitates the problem of acmetool failing
to start when nginx is installed already and uses port 80.
This also makes nginx redirect HTTP requests to HTTPS
for setups that don't have acmetool.
2026-02-21 22:10:20 +00:00
Jagoda Estera Ślązak and GitHub
288afa3273
chore(release): prepare for 0.5.0 ( #56 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-02-20 18:12:35 +01:00
Jagoda Estera Ślązak and GitHub
54982b1fdd
feat: Save rejected messages to /tmp ( #55 )
2026-02-20 15:38:46 +01:00
missytake and GitHub
38cc1c7cd6
fix(cmdeploy): make tests work with --ssh-host localhost ( #856 )
...
* tests: fix test_remote[imap]
* cmdeploy: call LocalExec directly, not .logged()
* tests: fix TestSSHExecutor.test_logged
* tests: fix test_status_cmd with --ssh-host @local
* tests: fix test_logged with --ssh-host localhost
* tests: fix TestSSHExecutor::test_exception with --ssh-host localhost
* ci: deploy with --ssh-host localhost on staging-ipv4
* metadata: lower RestartSec
2026-02-19 21:34:39 +01:00
link2xt
7a6ed8340e
test: mark f-string with f prefix in test_expunged
...
This one was not marked accidentally.
2026-02-19 19:41:14 +00:00
l and GitHub
94f1b29917
refactor: do not copy the mail in memory for DKIM verification ( #54 )
...
`String::from_utf8_lossy` always copies the data
for the case when it needs to replace invalid UTF-8,
but we don't want invalid UTF-8 anyway as replacing
invalid UTF-8 characters will break DKIM signature.
2026-02-19 19:06:08 +01:00
missytake and j4n
2ce9e5fe78
dovecot: install also if dovecot.service=False in SystemdEnabled Fact
2026-02-19 16:00:25 +01:00
Jagoda Estera Ślązak and GitHub
7d4fac698f
fix(dkim): Make simple header canonicalization work properly ( #53 )
...
Previously header parsing caused leading whitespaces to be
trimmed in HeaderBody, which resulted in incorrect simple
header canonicalization.
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-02-19 14:33:40 +01:00
holger krekel and GitHub
cf96be2cbb
feat: support self-signed chatmail relays ( #855 )
...
feat: support self-signed TLS via underscore domain convention
Domains starting with "_" (e.g. _chat.example.org) automatically use
self-signed TLS certificates instead of ACME/Let's Encrypt. The TLS
mode is derived from the domain name — no separate config option needed.
Internally, when config.tls_cert_mode is "self" (underscore domain):
- Generate self-signed certificates via openssl
- Set Postfix smtp_tls_security_level to "encrypt" (opportunistic TLS)
- Add smtp_tls_policy_map entry for underscore domains
- Skip ACME, MTA-STS and www CNAME checks in `cmdeploy dns`
- Serve /new via GET (not redirect to dcaccount:) with rate-limiting
(nginx limit_req, 2r/s burst=5)
- Return dclogin: URLs with ic=3 (AcceptInvalidCertificates) from /new
- Render QR codes client-side via JavaScript and qrcode-svg
- Use config.tls_cert_path/tls_key_path in Postfix, Dovecot and nginx
templates instead of hardcoded ACME paths
2026-02-19 10:27:41 +01:00
Mark Felder and missytake
36eb63faa1
feat: Strip Received headers before delivery
2026-02-17 21:16:11 +01:00
Jagoda Estera Ślązak and GitHub
083ec1a60b
chore(release): prepare for 0.4.1 ( #51 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-02-17 13:07:46 +01:00
Jagoda Estera Ślązak and GitHub
6e2a37956c
chore(tests): Add a way to disable DKIM for tests ( #50 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-02-17 13:00:31 +01:00
Jagoda Estera Ślązak and GitHub
4eb7e9fd63
chore(release): prepare for 0.4.0 ( #49 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-02-17 10:38:31 +01:00
Jagoda Estera Ślązak and GitHub
4837754245
feat: Support addresses using domain literals ( #42 )
...
If the incoming email comes from address that uses
domain literals `[<ipv4>]` or `[IPv6:<ipv6>]`,
skip DKIM verification and instead check IP
alignment with originating IP from XFORWARD
command.
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-02-16 18:25:21 +01:00
Jagoda Estera Ślązak and GitHub
a096d0550f
feat!: DKIM verifier ( #35 )
...
* feat!: DKIM verifier
This implements a DKIM verification as well as a strict
DKIM signature alignment check with domain in `From`
header address.
Caches the retrieved RDATA using in-memory LRU.
BREAKING CHANGE: incoming messages now require DKIM signatures
aligned to domain of the `From` header address.
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
* chore(license): License binaries under GPLv3
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
---------
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-02-16 09:50:55 +01:00
Jagoda Estera Ślązak and GitHub
91df11015e
chore(deps): upgrade to filtermail v0.3 ( #850 )
...
## 0.3.0 - 2026-02-14
### Features
- Support legacy, pre-OpenPGP packet format
### Miscellaneous Tasks
- *(dist)* Switch to musl targets
### Refactor
- Remove unnecessary Arc
- Use a custom, minimal SMTP client instead of lettre
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-02-14 18:02:05 +01:00
Jagoda Estera Ślązak and GitHub
3bf8395ef6
chore(release): prepare for 0.3.0 ( #45 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-02-14 14:42:55 +01:00
85d6c381b3
chore(deps): Bump dtolnay/rust-toolchain ( #46 )
...
Bumps [dtolnay/rust-toolchain](https://github.com/dtolnay/rust-toolchain ) from f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 to efa25f7f19611383d5b0ccf2d1c8914531636bf9.
- [Release notes](https://github.com/dtolnay/rust-toolchain/releases )
- [Commits](https://github.com/dtolnay/rust-toolchain/compare/f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561...efa25f7f19611383d5b0ccf2d1c8914531636bf9 )
---
updated-dependencies:
- dependency-name: dtolnay/rust-toolchain
dependency-version: efa25f7f19611383d5b0ccf2d1c8914531636bf9
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-14 14:36:27 +01:00
21f0614b5d
chore(deps): Bump taiki-e/install-action from 2.67.24 to 2.67.30 ( #48 )
...
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action ) from 2.67.24 to 2.67.30.
- [Release notes](https://github.com/taiki-e/install-action/releases )
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md )
- [Commits](https://github.com/taiki-e/install-action/compare/4573997e3b6c0fbc22f7acab193b00a8a3ca817d...288875dd3d64326724fa6d9593062d9f8ba0b131 )
---
updated-dependencies:
- dependency-name: taiki-e/install-action
dependency-version: 2.67.30
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-14 14:35:33 +01:00
10fd148155
chore(deps): Bump env_logger from 0.11.8 to 0.11.9 ( #47 )
...
Bumps [env_logger](https://github.com/rust-cli/env_logger ) from 0.11.8 to 0.11.9.
- [Release notes](https://github.com/rust-cli/env_logger/releases )
- [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-cli/env_logger/compare/v0.11.8...v0.11.9 )
---
updated-dependencies:
- dependency-name: env_logger
dependency-version: 0.11.9
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-14 14:34:36 +01:00
Jagoda Estera Ślązak and GitHub
cc1604b0b2
feat: Support legacy, pre-OpenPGP packet format ( #44 )
...
Support legacy packet format for compatibility with GnuPG.
Closes : #43
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-02-13 12:31:39 +01:00
link2xt
d4f8a29243
docs: fix link to Maddy and update madmail URL
2026-02-13 09:49:29 +00:00
missytake
0144fc3ea8
postfix: only look for square brackets, they are only allowed for address literals
2026-02-12 10:45:15 +01:00
missytake
e7ce6679b9
postfix: IPv6 literals have a prefix
2026-02-12 10:45:15 +01:00
missytake
d1adf52f89
postfix: also accept self-signed for IPv6-only
2026-02-12 10:45:15 +01:00
missytake
56d0e2ca27
postfix: be more exact with nauta.cu
2026-02-12 10:45:15 +01:00
missytake
2613558db6
postfix uses POSIX EREs, not PCRE, so some stuff doesn't work
2026-02-12 10:45:15 +01:00
missytake
6843fcb1a0
postfix: fix tls policy regexp map
2026-02-12 10:45:15 +01:00
missytake
ff54ad88d8
postfix: use regexp to match IPv4 addresses
2026-02-12 10:45:15 +01:00
missytake
cce2b27ae7
postfix: accept self-signed certificates for IP-only relays
2026-02-12 10:45:15 +01:00
j4n
87022e3681
fix(cmdeploy): check if dns_check_disabled before trying to warn about LE
...
If --skip-dns-check is used and retcode != 0, remote_data is undefined.
2026-02-11 12:13:24 +01:00
j4n
06560dd071
feat(postfix): bind to mail_domain's A/AAAA addresses for outbound mail
...
Carry forward A/AAAA address from the DNS check to the postfix deploy
stage and set accordingly in main.cf.
2026-02-11 12:13:24 +01:00
j4n
1b0337a5f7
fix(cmdeploy): port check: check addresses, fix single services
...
Ensure that the interface for mtail_address is available and fix a bug
in port checking where single services were always passing regardless of
the specified service name.
2026-02-11 09:36:04 +01:00
c1f728535f
chore(deps): Bump taiki-e/install-action from 2.67.16 to 2.67.24 ( #37 )
...
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action ) from 2.67.16 to 2.67.24.
- [Release notes](https://github.com/taiki-e/install-action/releases )
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md )
- [Commits](https://github.com/taiki-e/install-action/compare/a362280ea100b5bb920cf9040c038ce9a50c7943...4573997e3b6c0fbc22f7acab193b00a8a3ca817d )
---
updated-dependencies:
- dependency-name: taiki-e/install-action
dependency-version: 2.67.24
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-10 11:29:31 +01:00
Jagoda Estera Ślązak and GitHub
0ee1e9924c
refactor: Use a custom, minimal SMTP client instead of lettre ( #33 )
...
This disables the Nagle's algorithm on re-insertion.
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-02-06 11:15:14 +01:00
Jagoda Estera Ślązak and GitHub
8d18b73681
refactor: Remove unnecessary Arc ( #36 )
...
`Arc` around handler configs are not needed,
as they are not shared.
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-02-05 16:42:06 +01:00
47f16360a4
chore(deps): Bump taiki-e/install-action from 2.67.6 to 2.67.16 ( #34 )
...
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action ) from 2.67.6 to 2.67.16.
- [Release notes](https://github.com/taiki-e/install-action/releases )
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md )
- [Commits](https://github.com/taiki-e/install-action/compare/8444b4f2165ec93147f3ee41e06495653063ad11...a362280ea100b5bb920cf9040c038ce9a50c7943 )
---
updated-dependencies:
- dependency-name: taiki-e/install-action
dependency-version: 2.67.16
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-02 11:05:48 +01:00
373[Ø]™ and GitHub
dfcaf415b1
Merge pull request #834 from chatmail/373/fix-dns-resolver-injection
...
fix: remediates issue with improper concat on resolver injection
2026-01-30 23:36:46 +00:00
ccclxxiii
c0718325ef
fix: simplify resolver fix
2026-01-30 22:17:53 +00:00
ccclxxiii
7d72b0e592
fix:[wip] fix concact issue which causes dns failure
2026-01-30 21:10:19 +00:00
373[Ø]™ and GitHub
8f1e23d98e
Merge pull request #832 from chatmail/373/respect-ipv4-ipv6-boolean-config
...
remediates ipv6 boolean not being respected during operations
2026-01-30 17:53:36 +00:00
ccclxxiii
56aaf2649b
chore: fixes bug in dovecot template
2026-01-30 15:52:32 +00:00
ccclxxiii
2660b4d24c
feat: updates postfix for ipv4/v6
2026-01-30 15:27:02 +00:00
ccclxxiii
ea60ecfb57
feat: updates deployers for ipv4/v6 bool
2026-01-30 15:26:45 +00:00
ccclxxiii
2a3a224cc2
feat: adds template for unbound v4/v6
2026-01-30 15:24:26 +00:00
Jagoda Ślązak and l
e42139e97b
chore(deps): upgrade to filtermail v0.2
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-28 20:46:02 +00:00
Jagoda Estera Ślązak and GitHub
7be2004051
chore(dist): Switch to musl targets ( #31 )
...
Ensures filtermail binaries are 100% statically linked.
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-28 20:06:04 +01:00
Jagoda Estera Ślązak and GitHub
95fd106e43
chore(release): prepare for 0.2.0 ( #30 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-28 18:22:53 +01:00
Jagoda Estera Ślązak and GitHub
23231d462c
feat: Configurable rate limiter max burst size ( #28 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-28 17:47:48 +01:00