373[Ø]™
50ecc2b315
Merge pull request #868 from chatmail/hpk/simplify-cooldown
...
refactor(benchmark): move rate-limit cooldown to benchmark fixture
2026-02-22 18:05:19 +00:00
holger krekel
7b5b180b4b
refactor(benchmark): move rate-limit cooldown to benchmark fixture
2026-02-22 18:26:15 +01:00
373[Ø]™
193624e522
fix(benchmark): add rate-limit refill cooldown for send_10_receive_10 and avoid fixture signature mismatch
2026-02-22 15:58:21 +00:00
373[Ø]™
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
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
missytake
2ce9e5fe78
dovecot: install also if dovecot.service=False in SystemdEnabled Fact
2026-02-19 16:00:25 +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
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
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
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
65b660c413
docs: update information about filtermail ( #824 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-27 13:20:09 +01:00
link2xt
dd2beb226a
test(test_exceed_rate_limit): print timestamps when sending messages
2026-01-26 14:25:06 +00:00
link2xt
9c7508cc33
test: fix flaky test_exceed_rate_limit
...
filtermail rate limiter is using leaky bucket
algorithm (GCRA).
Exceeting the limit requires sending
at least max_user_send_per_minute
messages to exhaust allowed burst,
and then sending messages faster
than the leak rate.
As we don't know how fast is the network
between the server and test runner,
try to send 3 times max_user_send_per_minute
messages to ensure the test does not
fail randomly.
2026-01-26 12:07:10 +00:00
Jagoda Estera Ślązak
ab3492d9a1
feat(filtermail): Replace filtermail with rust reimplementation ( #808 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-23 16:31:45 +01:00
Jagoda Estera Ślązak
032faf0a94
feat(config): Set default internal SMTP ports in Config ( #819 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-23 09:34:16 +01:00
link2xt
c45fe03652
fix(mtail): separate metrics for incoming and outgoing messages
2026-01-22 14:45:33 +00:00
feld
08bf4c234b
Merge pull request #815 from chatmail/dovecot_lmtp_header
...
Dovecot: disable appending the Received header
2026-01-21 12:18:54 -08:00
j4n
2d0ccdb4a3
cmdeploy/{postfix,dovecot}/deployer.py: check config before restarting
...
postfix: also fail on warnings
2026-01-21 16:33:38 +01:00
j4n
3abba6f2fa
dovecot.conf: fix the stats syntax
...
The ! character in != is an invalid token in Dovecot's unified filter
language (2.3.12+). The parser expected a comparison operator (=, >, <)
and choked on !.
2026-01-21 16:33:38 +01:00
missytake
f9aaeb0f42
ci: enable mtail for CI
...
github deployments: be lenient on the whitespace in sed replace of
mtail_address
2026-01-21 16:33:38 +01:00
missytake
e0c44bf04f
Reapply "cmdeploy/dovecot/dovecot.conf.j2: tweak idle/hibernate metrics"
...
This reverts commit 0aa0324c81 .
2026-01-21 16:33:38 +01:00
Mark Felder
8ff53d12cb
Dovecot: disable appending the Received header
...
This suppresses a Received header only applied during LMTP processing
and includes a timestamp.
2026-01-20 15:16:33 -08:00
missytake
0aa0324c81
Revert "cmdeploy/dovecot/dovecot.conf.j2: tweak idle/hibernate metrics"
...
This reverts commit bfcfc9b090 .
2026-01-20 19:11:24 +01:00
j4n
bfcfc9b090
cmdeploy/dovecot/dovecot.conf.j2: tweak idle/hibernate metrics
...
Tune stats collection in tandem with the dashboard.
2026-01-20 17:38:04 +01:00
j4n
e101c36ab4
fix(cmdeploy): comiit typo
2026-01-20 17:38:04 +01:00
j4n
be7aa21039
feat(dovecot): add config flag to export statistics ( #806 )
...
This adds exporting of some dovecot event metrics to help debugging slow IMAP login and hibernation. For now, re-using mtail_address config flag and configure the port of the dovecot exporter to be 3904.
2026-01-16 11:35:19 +01:00
adbenitez
4906b82e44
add --website-only option to run subcommand
2026-01-15 16:58:06 +01:00
missytake
5d49b4c0fd
postfix: also strip Authentication-Results header
2026-01-15 15:41:21 +01:00