l
3ac927ed2d
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-08-18 12:21:27 +02:00
Jagoda Estera Ślązak
6f5dd21c8e
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-08-18 12:21:27 +02:00
dependabot[bot]
2350cbabeb
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-08-18 12:21:27 +02:00
dependabot[bot]
ba11f37eed
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-08-18 12:21:27 +02:00
dependabot[bot]
91f5fbf193
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-08-18 12:21:27 +02:00
dependabot[bot]
cfd1092d21
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-08-18 12:21:27 +02:00
dependabot[bot]
94b582681e
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-08-18 12:21:27 +02:00
Jagoda Ślązak
324a6f3da9
chore(cargo): Add metadata
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-08-18 12:21:27 +02:00
Jagoda Ślązak
a8119e125f
docs(license): Add LICENSE
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-08-18 12:21:27 +02:00
Jagoda Ślązak
1e16b4de52
docs(readme): Add README.md
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-08-18 12:21:27 +02:00
Jagoda Ślązak
e0b24715e0
chore(dependabot): Add github-actions to dependabot
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-08-18 12:21:27 +02:00
Jagoda Ślązak
11034c9374
chore(ci): Setup CI
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-08-18 12:21:27 +02:00
Jagoda Ślązak
b5f7169337
chore(dependabot): Setup dependabot
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-08-18 12:21:27 +02:00
Jagoda Ślązak
81b4aecce9
feat: Initial implementation
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-08-18 12:21:27 +02:00
Jagoda Ślązak
61261170ad
chore: Init repository
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-08-18 12:21:27 +02:00
holger krekel
33f9cddb1b
feat: serve an APPVERSIONS.json index file to clients via IMAP metadata
...
This is designed to help implement self-updating APKs (and later other clients),
see counterpart https://github.com/chatmail/core/pull/8557
2026-08-13 12:54:47 +02:00
missytake
dc8e0a34a2
chore(release): prepare for 1.12.0 ( #1034 )
1.12.0
2026-07-31 11:48:16 +02:00
holger krekel
efc24fcdf3
cleanup: contents:read not needed for relay repo
...
public repos need no contents::read and there were permissions: {}
2026-07-30 20:44:04 +02:00
missytake
9a9bda80b1
fix: ss -tulpn can sometimes show dovecot first
2026-07-30 12:12:27 +02:00
missytake
74f4721f2b
ci: fix docs upload path
2026-07-30 09:38:41 +02:00
holger krekel
14f829003d
fix: List Iroh proxy endpoints used by 0.35 and 1.0, drop stale /relay/probe from earlier versions
2026-07-29 22:44:21 +02:00
link2xt
5da9aaeb37
refactor: install dns-root-data instead of using unbound-anchor
...
unbound-anchor retrieves root trust anchor directly via HTTPS,
but Debian already distributes the same files in dns-root-data package.
2026-07-29 19:28:06 +00:00
holger krekel
d068052f0c
restrict usable workflow to read permissions
2026-07-29 14:15:35 +02:00
holger krekel
fa5afadaaa
feat!: introduce configurable system limits to reject new address creation and limit imap/smtp connections.
...
The default values are geared towards minimal-requirements server.
If you have a big server, you will need to set chatmail.ini parameters.
2026-07-28 19:08:19 +02:00
j4n
eb862f1645
chore(ci): update doc staging upload path
2026-07-27 17:38:50 +02:00
holger krekel
6f3039509c
feat(dovecot): advertise privacy_mail as admin contact, drop server comment
...
- The hardcoded root@relaydomain address was unusued/unrooted
and no one knew about it, it was used nowhere.
Better to use privacy_mail which operators can set
which might eventually be shown in the UI's relay list.
- remove generic useless mail_server_comment string.
Clients receive these values as IMAP METADATA /shared/admin and
/shared/comment only for internal debugging/info purposes.
2026-07-26 14:13:08 +02:00
link2xt
504fb249a9
refactor(postfix): remove unused "filter" lmtp service
...
It looks like the reason it exists in the default configuration
is an example for <https://www.postfix.org/FILTER_README.html >
Using this filter requires configuration such as
"-o content_filter=filter:dummy" and we don't have it.
2026-07-22 20:28:36 +00:00
link2xt
deca1ef2a3
feat(postfix): disable processing of MIME headers
...
Default behavior is processing headers
that are actually part of the message body.
This is unlikely to be needed
as headers such as Received are not added into MIME parts,
but may result in broken DKIM signatures
if the body is modified.
2026-07-13 09:46:32 +00:00
W0rmsy
0323e757a9
chore: update Let's Encrypt Subscriber Agreement to 1.8
...
The changes are described in the announcement:
https://community.letsencrypt.org/t/updating-the-let-s-encrypt-subscriber-agreement-to-v1-8/248355
2026-07-13 09:45:41 +00:00
j4n
752957dae8
feat(mtail): add incoming_mailer_daemon_mail_count
...
Track volume of mailer-daemon messages separately from unencrypted.
2026-07-13 11:43:44 +02:00
Jagoda Estera Ślązak
3a553f2286
chore(deps): Upgrade filtermail to v0.7.4 ( #1014 )
...
## 0.7.4 - 2026-07-01
### Features
- *(logs)* Log incoming mailer-daemon message sources
### Miscellaneous Tasks
- Update filtermail.mtail
### Testing
- Place #[tokio::test] after rstest case macros
## 0.7.3 - 2026-06-27
### Features
- *(transport)* Worker eviction
## 0.7.2 - 2026-06-26
### Documentation
- *(readme)* Disable colors in mermaid diagrams
- *(readme)* Update Transport mode doc
### Features
- *(transport)* Destination worker pool
### Refactor
- Implement Display for AddressDomain
### Testing
- Test filtermail-transport
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-07-04 15:01:06 +09:00
Hocuri
cb1e4ff5bb
docs(README.md): Clarify security enforcement ( #1011 )
...
Make it clear which security enforcement properties a chatmail server has
2026-06-17 12:38:37 +02:00
Jagoda Ślązak
8d7870db55
chore(deps): Upgrade filtermail to v0.7.1
...
## 0.7.1 - 2026-06-09
### Bug Fixes
- Switch ratelimiter to MonotonicClock
- *(smtp-server)* Correct error when EOF while reading DATA
- *(resolver)* Disable negative caching
- Ignore CNAME records when resolving TXT records
### Features
- Switch to aws-lc-rs cryptography provider
### Miscellaneous Tasks
- Add filtermail.mtail so filtermail failures can be monitored
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-06-17 10:16:35 +02:00
Jagoda Estera Ślązak
5a31ff475f
docs(overview): Remove mermaid styles from 'Accepting and delivering mail' ( #1009 )
...
Previously used colors caused
diagrams to be unreadable in
light mode.
Removing styling completely,
as this was redundant anyway.
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-06-10 22:31:26 +02:00
missytake
8c18aea18e
fix: pass kwargs to files.put()
2026-06-10 16:49:34 +02:00
missytake
ebf5a51964
fix: still overwrite /etc/resolv.conf if it is a symbolic link
2026-06-10 16:49:34 +02:00
feld
f596d4b56d
Merge pull request #1003 from chatmail/feld/crypt-r
...
fix: crypt-r dependency was declared for wrong Python version
2026-06-09 12:38:45 -07:00
Mark Felder
8e3c18019b
fix: crypt-r dependency was declared for wrong Python version
...
The original crypt library was last supported in Python 3.12, so it's
not needed until Python 3.13 is default (Trixie)
> The crypt_r module is a renamed copy of the crypt module as it was present in Python 3.12 before it was removed.
2026-06-09 12:38:07 -07:00
missytake
9da3f5c235
fix(acmetool): update let's encrypt ToS link
2026-06-08 16:28:21 +02:00
feld
6def189d16
Revert "Aggressive LMTP header cleanup ( #816 )"
...
This reverts commit 921080125f .
2026-06-05 22:28:16 +02:00
Mark Felder
24612e9121
fix(deps): Remove domain-validator dependency
...
It is broken in multiple ways
2026-06-05 09:39:27 +02:00
Jagoda Estera Ślązak
a9dd9fe3e0
docs: Update overview diagrams ( #995 )
...
Adds a detailed diagram describing
all paths a message can take,
that takes into account postfix services.
Additionally, adds OpenDKIM to dependency
diagram.
Fixes : #771
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
Co-authored-by: missytake <missytake@systemli.org >
2026-06-03 12:24:32 +02:00
missytake
aa846c3478
fix: expire empty directories ( #994 )
...
* fix: respect --dry when expiring empty directories
Co-authored-by: j4n <j4n@systemli.org >
2026-06-03 10:42:28 +02:00
feld
921080125f
Aggressive LMTP header cleanup ( #816 )
...
This will remove all headers possible during LMTP delivery, except:
- From: required or core does not process the message correctly.
Also required for cleartext compatibility.
- Message-Id: required for clients to know which messages have been
downloaded
- Chat-Is-Post-Message: is required for our attachment previews
- Content-Type: required
- For Cleartext compability: To, CC, In-Reply-To, References, Subject,
and Date
- For Chatmail future expansion, allow Chat-*
- Permit the entire Secure-Join* namespace
Co-authored-by: holger krekel <holger@merlinux.eu >
2026-06-03 08:43:36 +02:00
Jagoda Estera Ślązak
d898f41064
fix: Always deploy unbound.conf.d/chatmail.conf ( #993 )
...
This fixes issue with negative cache
only disabled in ipv4-only mode.
Follow up to #992
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-06-02 12:02:07 +02:00
Jagoda Estera Ślązak
e9e012234b
feat: Disable negative cache in unbound ( #992 )
...
Related:
- https://github.com/chatmail/relay/issues/543
- https://github.com/chatmail/filtermail/pull/170
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-06-02 10:48:28 +02:00
Jagoda Estera Ślązak
bb40c5bb21
fix: Check if all required ports are available for filtermail ( #983 )
...
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-06-01 11:10:25 +02:00
Jagoda Estera Ślązak
a229f1bc45
chore(deps): Upgrade filtermail to v0.7 ( #982 )
...
## 0.7.0 - 2026-05-26
### Bug Fixes
- Do not crash if accepting new connection fails
### Documentation
- *(readme)* Remove docs for options removed in da9a116
### Features
- [**breaking**] Remove passthrough options that allowed unencrypted mail to pass
Signed-off-by: Jagoda Ślązak <jslazak@jslazak.com >
2026-06-01 09:55:50 +02:00
link2xt
4ba19b0031
test: set socket security for IMAP and SMTP to "TLS" in "dclogin"
...
With "default" (like it was for SMTP) or not set (like it was for IMAP),
both TLS and STARTTLS are tried.
Trying STARTTLS against TLS port is going to timeout
because in STARTTLS server talks first,
but when connected to TLS port the server
waits for TLS client hello and does not send anything.
Should not actually matter in tests which connect successfully
on the first try because implicit TLS is tried first.
2026-05-28 22:29:08 +00:00
holger krekel
5eab3a5a25
try using cmlxc main branch fix for delete-server issue
2026-05-28 21:40:05 +02:00