Jagoda Estera Ślązak
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
54982b1fdd
feat: Save rejected messages to /tmp ( #55 )
2026-02-20 15:38:46 +01:00
missytake
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
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
2ce9e5fe78
dovecot: install also if dovecot.service=False in SystemdEnabled Fact
2026-02-19 16:00:25 +01:00
Jagoda Estera Ślązak
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
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
36eb63faa1
feat: Strip Received headers before delivery
2026-02-17 21:16:11 +01:00
Jagoda Estera Ślązak
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
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
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
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
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
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
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
dependabot[bot]
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
dependabot[bot]
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
dependabot[bot]
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
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
dependabot[bot]
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
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
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
dependabot[bot]
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[Ø]™
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[Ø]™
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
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
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
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
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
Jagoda Estera Ślązak
65b660c413
docs: update information about filtermail ( #824 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-27 13:20:09 +01:00
dependabot[bot]
9a8e4fe65c
chore(deps): Bump taiki-e/install-action from 2.66.7 to 2.67.6 ( #24 )
...
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action ) from 2.66.7 to 2.67.6.
- [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/542cebaaed782771e619bd5609d97659d109c492...8444b4f2165ec93147f3ee41e06495653063ad11 )
---
updated-dependencies:
- dependency-name: taiki-e/install-action
dependency-version: 2.67.6
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-27 10:07:52 +01:00