Commit Graph

122 Commits

Author SHA1 Message Date
holger krekel e2be5dc92d ci: run cmlxc tests in all classic/classic-ipv4/madmail combinations 2026-05-12 12:46:20 +02:00
Jagoda Estera Ślązak d74e5b85b3 feat: Improved SMTP error responses (#147)
Fixes: #140

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-05-12 12:37:02 +02:00
Jagoda Estera Ślązak b7a213ff1b ci: Remove mac and windows from matrix tests (#154)
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-05-12 12:20:25 +02:00
holger krekel 3896044f36 fix: return HTTP 200 because madmail expects it, and make sure https is immediately retried when SMTP fails (#153) 2026-05-12 12:13:00 +02:00
Jagoda Estera Ślązak e26cca0260 chore(release): prepare for 0.6.5 (#152)
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-05-12 09:52:13 +02:00
dependabot[bot] 272744115f chore(deps): Bump taiki-e/install-action from 2.75.22 to 2.75.28 (#148)
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.75.22 to 2.75.28.
- [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/cf525cb33f51aca27cd6fa02034117ab963ff9f1...51cd0b8c0499559d9a4d75c0f5c67bec3a894ec8)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.75.28
  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-05-12 07:01:30 +02:00
l a65e7a1490 fix: Validate mail data (#150)
Do not allow bare CR and LF etc.
2026-05-12 07:00:21 +02:00
holger krekel 36921dd29f fix: advertise 8BITMIME to prevent conversion after DKIM signing (#149)
for bounces postfix sets Content-Transfer-Encoding: 8bit
which causes a quoted-printable conversion when filtermail SMTP does not offer 8BITMIME,
which in turn breaks DKIM verification.
2026-05-12 06:56:11 +02:00
Jagoda Estera Ślązak 5295d175d6 perf(smtp-client): Use pipelining if server advertises support (#146)
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-05-07 15:05:51 +02:00
Jagoda Estera Ślązak 10119033a3 fix(smtp-client): Handle 421 on reused connection (#145)
If a reused connection was closed
in the meantime, open a new connection,
instead of failing immediately.

Fixes #143

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-05-07 14:20:49 +02:00
Jagoda Estera Ślązak d29cbafda4 chore(deps): Upgrade hickory-resolver (#138) 2026-05-05 02:17:21 +02:00
dependabot[bot] bc769e0d2a chore(deps): Bump webpki-roots from 1.0.6 to 1.0.7 (#136)
Bumps [webpki-roots](https://github.com/rustls/webpki-roots) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/rustls/webpki-roots/releases)
- [Commits](https://github.com/rustls/webpki-roots/compare/v/1.0.6...v/1.0.7)

---
updated-dependencies:
- dependency-name: webpki-roots
  dependency-version: 1.0.7
  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-05-04 12:54:28 +02:00
dependabot[bot] 59944a46ff chore(deps): Bump tokio from 1.51.1 to 1.52.1 (#135)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.51.1 to 1.52.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.51.1...tokio-1.52.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.52.1
  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-05-04 12:52:55 +02:00
dependabot[bot] 457461b4ff chore(deps): Bump lru from 0.16.3 to 0.17.0 (#133)
Bumps [lru](https://github.com/jeromefroe/lru-rs) from 0.16.3 to 0.17.0.
- [Changelog](https://github.com/jeromefroe/lru-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jeromefroe/lru-rs/compare/0.16.3...0.17.0)

---
updated-dependencies:
- dependency-name: lru
  dependency-version: 0.17.0
  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-05-04 09:45:26 +02:00
dependabot[bot] 94dcd6c728 chore(deps): Bump taiki-e/install-action from 2.75.17 to 2.75.22 (#132)
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.75.17 to 2.75.22.
- [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/58e862542551f667fa44c8a2a4a1d64ad477c96a...cf525cb33f51aca27cd6fa02034117ab963ff9f1)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.75.22
  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-05-04 09:44:33 +02:00
holger krekel 36ff21ff91 ci: build and deploy relays with filtermail binary and run interop tests against madmail (#131)
* ci: Run relay integration tests using cmlxc

Builds filtermail and runs cmlxc
tests against a patched chatmail/relay.

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>

* ci: run integration tests with branch filtermail binary deployed with chatmail/relay main code

---------

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
Co-authored-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-05-01 17:58:11 +02:00
Jagoda Estera Ślązak 5b79d2d08a chore(release): prepare for 0.6.4 (#130)
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-05-01 10:39:46 +02:00
Jagoda Estera Ślązak 0a652e61ee feat: https transport channel (#122)
Transport mode:
Implements an additional mail delivery
channel over HTTPS.

Incoming mode:
Adds a http server listening for
incoming messages delivered over HTTPS.

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-05-01 10:30:09 +02:00
Jagoda Ślązak 1b1585eb7d refactor(transport): Explicitly handle RFC7505 null MX
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-04-28 08:24:27 +02:00
Jagoda Ślązak 21aaea0d92 fix: Implement missing "implicit MX" rule
Implements "implicit MX" as described by
https://datatracker.ietf.org/doc/html/rfc5321#section-5.1

Fixes: #126
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-04-27 14:44:21 +02:00
dependabot[bot] c1a4d99d2e chore(deps): Bump taiki-e/install-action from 2.75.5 to 2.75.17 (#125)
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.75.5 to 2.75.17.
- [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/7a4939c09608b2a1986b484eca1d16fd0db8ebef...58e862542551f667fa44c8a2a4a1d64ad477c96a)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.75.17
  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-04-27 10:36:58 +02:00
dependabot[bot] 17ccd3e2ca chore(deps): Bump bnjbvr/cargo-machete from 0.9.1 to 0.9.2 (#124)
Bumps [bnjbvr/cargo-machete](https://github.com/bnjbvr/cargo-machete) from 0.9.1 to 0.9.2.
- [Release notes](https://github.com/bnjbvr/cargo-machete/releases)
- [Changelog](https://github.com/bnjbvr/cargo-machete/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bnjbvr/cargo-machete/compare/7959c845782fed02ee69303126d4a12d64f1db18...ac30a525c0a8d163a92d727b3ff079ee3f6ecb08)

---
updated-dependencies:
- dependency-name: bnjbvr/cargo-machete
  dependency-version: 0.9.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-04-27 10:36:40 +02:00
Jagoda Estera Ślązak 3eb3b86bc9 chore(release): prepare for 0.6.3 (#121)
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-04-20 14:09:53 +02:00
Jagoda Estera Ślązak 1e356315da feat(smtp-server): Log malformed SMTP commands (#118)
Closes #110

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-04-20 13:03:49 +02:00
dependabot[bot] 0e1b7173ab chore(deps): Bump actions/upload-artifact from 7.0.0 to 7.0.1 (#119)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/bbbca2ddaa5d8feaa63e36b76fdaad77386f024f...043fb46d1a93c77aae656e7c1c64a875d1fc6a0a)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.1
  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-04-20 10:39:24 +02:00
dependabot[bot] e156ce9125 chore(deps): Bump taiki-e/install-action from 2.71.2 to 2.75.5 (#120)
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.71.2 to 2.75.5.
- [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/d858f8113943481093e02986a7586a4819a3bfd6...7a4939c09608b2a1986b484eca1d16fd0db8ebef)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.75.5
  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-04-20 10:39:00 +02:00
Jagoda Estera Ślązak dee00ebdcf perf(smtp-client): Cache connections (#117) 2026-04-17 11:37:05 +02:00
Jagoda Estera Ślązak 45eaa2f659 chore(release): prepare for 0.6.2 (#116)
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-04-16 09:25:59 +02:00
Jagoda Estera Ślązak cf64778f71 feat(transport): Remote delivery over SMTP (#104)
Implements a new mode "transport",
that allows filtermail to be used for
remote delivery.

In transport mode, filtermail listens for LMTP
connections, splits messages by domain
and performs delivery to remote MTAs over SMTP.

SMTP client tries to open socket on all resolved
addresses in parallel and uses one that succeeds
the first, fixing the issue described in:
chatmail/relay#900

Extends the built-in SMTP client
with STARTTLS support.

Extends the built-in SMTP server
with LMTP greeting support.

Groundwork required for mxdeliv endpoint
(HTTP channel for MTA-to-MTA communication):
chatmail/relay#900

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-04-15 22:12:09 +02:00
Jagoda Estera Ślązak ec0413bd5f feat: Log disabled recipients (#113)
Logs disabled recipient addresses
when removing them from RCPT TO.

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-04-15 22:00:42 +02:00
Jagoda Estera Ślązak 2450d1d9c7 docs(readme): Reformat README.md (#115)
Fixes: #91

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-04-09 11:27:48 +02:00
Jagoda Estera Ślązak 0feb1371b3 chore(dependabot): Update configuration (#114)
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-04-07 13:53:48 +02:00
dependabot[bot] 8ad65923e9 chore(deps): Bump tokio from 1.50.0 to 1.51.0 (#111)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.50.0 to 1.51.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.50.0...tokio-1.51.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-version: 1.51.0
  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-04-07 12:46:59 +02:00
dependabot[bot] 5575df7510 chore(deps): Bump taiki-e/install-action from 2.69.13 to 2.71.2 (#112)
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.69.13 to 2.71.2.
- [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/704f92c11daa75bff5b4e01fcb083350c16c47b9...d858f8113943481093e02986a7586a4819a3bfd6)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.71.2
  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-04-07 12:46:10 +02:00
Jagoda Estera Ślązak 0f58942998 chore(release): prepare for 0.6.1 (#109)
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-04-01 23:21:32 +02:00
Jagoda Estera Ślązak 05cbf2908c feat: Add experimental option to disable mailboxes (#108)
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-04-01 23:05:02 +02:00
dependabot[bot] 621eaeeffb chore(deps): Bump taiki-e/install-action from 2.69.4 to 2.69.13 (#107)
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.69.4 to 2.69.13.
- [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/a7e592b24782184db1613493a5e65d2e12199f80...704f92c11daa75bff5b4e01fcb083350c16c47b9)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.69.13
  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-03-30 09:46:08 +02:00
dependabot[bot] ca3393cf48 chore(deps): Bump env_logger from 0.11.9 to 0.11.10 (#106)
Bumps [env_logger](https://github.com/rust-cli/env_logger) from 0.11.9 to 0.11.10.
- [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.9...v0.11.10)

---
updated-dependencies:
- dependency-name: env_logger
  dependency-version: 0.11.10
  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-03-30 09:45:50 +02:00
dependabot[bot] a4497bc10d chore(deps): Bump dtolnay/rust-toolchain (#105)
Bumps [dtolnay/rust-toolchain](https://github.com/dtolnay/rust-toolchain) from efa25f7f19611383d5b0ccf2d1c8914531636bf9 to 3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9.
- [Release notes](https://github.com/dtolnay/rust-toolchain/releases)
- [Commits](https://github.com/dtolnay/rust-toolchain/compare/efa25f7f19611383d5b0ccf2d1c8914531636bf9...3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9)

---
updated-dependencies:
- dependency-name: dtolnay/rust-toolchain
  dependency-version: 3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
  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-03-30 09:45:24 +02:00
Jagoda Estera Ślązak fb77c5be81 feat(resolver): Enable DNSSEC (#94)
From hickory-resolver docs:
> To enable DNSSEC, enable the dnssec-ring feature.

Related: https://github.com/chatmail/relay/issues/877
Related: https://github.com/hickory-dns/hickory-dns/issues/3519
Closes: https://github.com/chatmail/filtermail/issues/93

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-03-24 08:27:48 +01:00
dependabot[bot] 7da0c34678 chore(deps): Bump taiki-e/install-action from 2.68.20 to 2.69.4 (#102)
Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.68.20 to 2.69.4.
- [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/4a136ceac97fe29b942ff3b6c749a46c7950d853...a7e592b24782184db1613493a5e65d2e12199f80)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.69.4
  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-03-23 10:11:12 +01:00
Andrey 0xdc09 9a4a54cea8 refactor: derive Default for Envelope (#100) 2026-03-16 10:01:52 +01:00
Andrey 0xdc09 2aa894f48f docs(readme): fix typo (#99)
As suggested in https://github.com/chatmail/filtermail/pull/84#issuecomment-4056084708
2026-03-16 08:49:50 +01:00
dependabot[bot] 23b28bc66e chore(deps): Bump Swatinem/rust-cache from 2.8.2 to 2.9.1 (#96)
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.8.2 to 2.9.1.
- [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/779680da715d629ac1d338a641029a2f4372abb5...c19371144df3bb44fab255c43d04cbc2ab54d1c4)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-version: 2.9.1
  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-03-14 10:29:54 +01:00
dependabot[bot] b47b859fcb chore(deps): Bump actions/download-artifact from 8.0.0 to 8.0.1 (#95)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3...3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 8.0.1
  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-03-14 10:28:29 +01:00
Andrey 0xdc09 49df79bfa0 feat: configurable hosts for listen and reinject (#84)
Adds configurable listen IP and postfix host 
via `filtermail_host` and `postfix_host` chatmail.ini config fields.
2026-03-13 17:04:44 +01:00
Jagoda Estera Ślązak b31e13a417 chore(release): prepare for 0.6.0 (#92)
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-03-13 12:51:38 +01:00
Jagoda Estera Ślązak 8dd9436a0d feat!: Remove IP verification for domain-literals (#90)
BREAKING CHANGE: messages using domain-literal
  addresses don't require to match the origin
  SMTP connection IP anymore.

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-03-13 12:25:45 +01:00
Jagoda Estera Ślązak 82a9850a4b docs(readme): Improve README.md (#88)
Fixes #85

Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com>
2026-03-12 18:15:08 +01:00
Jagoda Estera Ślązak 779e7ca2b4 docs(readme): Clarify licensing of the binaries
Co-authored-by: holger krekel  <holger@merlinux.eu>
2026-03-11 19:00:56 +01:00