dependabot[bot]
c0104152e8
chore(deps): Bump actions/checkout from 6.0.1 to 6.0.2 ( #25 )
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/8e8c483db84b4bee98b60c0593521ed34d9990e8...de0fac2e4500dabe0009e67214ff5f5447ce83dd )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.2
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-01-27 10:06:35 +01:00
link2xt
aa5999cc25
refactor: remove Mutex around rate limiter
...
Rate limiter handles all the necessary locking internally.
2026-01-26 17:59:12 +00:00
link2xt
3be4c4d5ee
perf: disable Nagle's algorithm and do own buffering on server connections
...
I don't know if Postfix as the client disables delayed ACKs,
but if delayed ACKs are enabled, Nagle's algorithm introduces unnecessary delays.
2026-01-26 14:56:36 +00: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
Jagoda Estera Ślązak
0990a23700
chore(release): prepare for 0.1.2 ( #22 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-22 15:24:33 +01:00
Jagoda Estera Ślązak
cab16fc8f1
fix: Make inbound/outbound log messages consistent ( #23 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-22 15:14:28 +01:00
Jagoda Estera Ślązak
ca6ccd9acf
fix: Set logs required by grafana to INFO ( #21 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-22 14:49:55 +01:00
Jagoda Estera Ślązak
b5a56a6a4e
perf: Use governor for rate limiting ( #20 )
...
Fixes : #19
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-22 14:49:26 +01: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
Jagoda Ślązak
06b7b0ca6d
chore(release): prepare for 0.1.1
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-21 17:22:19 +01:00
Jagoda Ślązak
e214a74252
chore: Configure git-cliff
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-21 17:22:19 +01: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
Jagoda Estera Ślązak
9eb86b23ce
refactor: Apply more lints ( #17 )
...
Sets lint rules and applies required changes.
Fixes : #16
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-21 16:28:24 +01:00
Jagoda Estera Ślązak
aab39be662
feat: Improve logging ( #13 )
...
Improves logs and reduces verbosity.
Fixes : #8
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-21 14:35:52 +01:00
Jagoda Estera Ślązak
2b4205a60a
fix(config): Set default values for internal SMTP ports and max message size ( #12 )
...
Fixes : #7
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-21 14:27:21 +01:00
Jagoda Estera Ślązak
41e9e9f6d0
chore(dist): Configure cargo-dist ( #10 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-21 14:26:37 +01:00
Jagoda Estera Ślązak
c010d999f5
fix: Correct a typo in SMTP answer ( #11 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-21 14:26:20 +01:00
l
f2f7767b71
refactor: get rid of indexing and slicing in check_armored_payload() ( #15 )
...
Indexing can potentially panic, without indexing
it is easier to make sure there will be no crash.
2026-01-21 14:25:40 +01:00
Jagoda Estera Ślązak
353f1dc77d
fix: Improve address extraction from SMTP commands ( #14 )
...
Prevents extraction failing on SRS.
Fixes : #9
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-21 14:06:20 +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
dependabot[bot]
33e975ade3
chore(deps): Bump dtolnay/rust-toolchain ( #4 )
...
Bumps [dtolnay/rust-toolchain](https://github.com/dtolnay/rust-toolchain ) from 6d653acede28d24f02e3cd41383119e8b1b35921 to f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561.
- [Release notes](https://github.com/dtolnay/rust-toolchain/releases )
- [Commits](https://github.com/dtolnay/rust-toolchain/compare/6d653acede28d24f02e3cd41383119e8b1b35921...f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 )
---
updated-dependencies:
- dependency-name: dtolnay/rust-toolchain
dependency-version: f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561
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-01-19 16:59:22 +01:00
dependabot[bot]
86f86515be
chore(deps): Bump Swatinem/rust-cache from 2.8.1 to 2.8.2 ( #5 )
...
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache ) from 2.8.1 to 2.8.2.
- [Release notes](https://github.com/swatinem/rust-cache/releases )
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md )
- [Commits](https://github.com/swatinem/rust-cache/compare/f13886b937689c021905a6b90929199931d60db1...779680da715d629ac1d338a641029a2f4372abb5 )
---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
dependency-version: 2.8.2
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-01-19 16:56:49 +01:00
dependabot[bot]
c15f18685a
chore(deps): Bump thiserror from 2.0.17 to 2.0.18 ( #3 )
...
Bumps [thiserror](https://github.com/dtolnay/thiserror ) from 2.0.17 to 2.0.18.
- [Release notes](https://github.com/dtolnay/thiserror/releases )
- [Commits](https://github.com/dtolnay/thiserror/compare/2.0.17...2.0.18 )
---
updated-dependencies:
- dependency-name: thiserror
dependency-version: 2.0.18
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-01-19 16:55:24 +01:00
dependabot[bot]
00fb3d8156
chore(deps): Bump actions/checkout from 5.0.0 to 6.0.1 ( #6 )
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 5.0.0 to 6.0.1.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/08c6903cd8c0fde910a37f88322edcfb5dd907a8...8e8c483db84b4bee98b60c0593521ed34d9990e8 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.1
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-19 16:53:52 +01:00
dependabot[bot]
c78df0009b
chore(deps): Bump taiki-e/install-action from 2.62.49 to 2.66.7 ( #2 )
...
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action ) from 2.62.49 to 2.66.7.
- [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/44c6d64aa62cd779e873306675c7a58e86d6d532...542cebaaed782771e619bd5609d97659d109c492 )
---
updated-dependencies:
- dependency-name: taiki-e/install-action
dependency-version: 2.66.7
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-19 16:53:01 +01:00
Jagoda Ślązak
d2cca26b1c
chore(cargo): Add metadata
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-19 16:49:50 +01:00
Jagoda Ślązak
d25faf4fdf
docs(license): Add LICENSE
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-19 16:49:50 +01:00
Jagoda Ślązak
392def1322
docs(readme): Add README.md
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-19 16:49:50 +01:00
Jagoda Ślązak
401fd39ec0
chore(dependabot): Add github-actions to dependabot
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-19 16:49:50 +01:00
Jagoda Ślązak
f9abff0764
chore(ci): Setup CI
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-19 16:49:50 +01:00
Jagoda Ślązak
5f4399f54d
chore(dependabot): Setup dependabot
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-19 16:49:50 +01:00
Jagoda Ślązak
6340f479ae
feat: Initial implementation
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-01-19 16:49:50 +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
missytake
56c8f9faae
tests: add test for stripping DKIM + Authentication-Results headers
2026-01-15 15:41:21 +01:00
Mark Felder
203a7da3f4
Strip DKIM-Signature header before LMTP
...
Currently we strip the DKIM-Signature header in the OpenDKIM final.lua
script after validation of the signature. We sign all messages upon
submission, but we do not verify messages which are from a local account
and delivered to another local account.
This corrects the problem and ensures that the plaintext headers of a
local to local delivery are sanitized the same as a message received
from another server.
The functionality in final.lua to strip the DKIM-Signature header can
now be retired.
2026-01-15 15:41:21 +01:00
missytake
a1667ca54d
Update cmdeploy/src/cmdeploy/postfix/deployer.py
2026-01-15 12:51:29 +01:00
holger krekel
6401bbb32c
fix: properly make sure that postfix gets restarted on failure
2026-01-15 12:51:29 +01:00
Mark Felder
325cc7a7b4
expire.py: use absolute path to maildirsize
2026-01-15 12:50:38 +01:00