mirror of
https://github.com/chatmail/relay.git
synced 2026-06-10 05:31:08 +00:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 221f5ed10e | |||
| 4b04aae83b | |||
| 0eed92171c | |||
| a5b9a98baa | |||
| ab2d807084 | |||
| ce05b26c77 | |||
| 77ed93fb7a | |||
| 39d1ecaa03 |
@@ -9,6 +9,7 @@ name: Trigger Docker build
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [main]
|
branches: [main]
|
||||||
|
tags: ['[0-9]+.[0-9]+.[0-9]+']
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions: {}
|
permissions: {}
|
||||||
|
|||||||
@@ -1,5 +1,47 @@
|
|||||||
# Changelog for chatmail deployment
|
# Changelog for chatmail deployment
|
||||||
|
|
||||||
|
## [1.11.0] - 2026-05-15
|
||||||
|
|
||||||
|
### Breaking Changes
|
||||||
|
|
||||||
|
- [**breaking**] Drop passthrough_sender and passthrough_recipients chatmail.ini options to eliminate one more source of unencrypted messages
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- Use filtermail for delivery to remote MTAs
|
||||||
|
- Expose metadata "maxsmtprecipients" value
|
||||||
|
- Support setup without domain, with only an IPv4 address (#963)
|
||||||
|
- *(doc/docker)* Introduce docker images in documentation
|
||||||
|
- DKIM-sign bounce messages (mainly "user does not exist")
|
||||||
|
- *(config)* Load default values from Config(), not chatmail.ini.f (#853)
|
||||||
|
- Make turn_socket_path configurable, and cleanup tests and turnserver code.
|
||||||
|
- Warn about any unused chatmail.ini parameter at the end of "cmdeploy run"
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- Make www tests work with editable instead of just plain installs
|
||||||
|
- Use path with no leading slash for mxdeliv
|
||||||
|
- Increase filtermail-transport concurrency limit
|
||||||
|
- Fix #972 by increasing file descriptors for filtermail
|
||||||
|
- *(mtail)* Correct boot ordering and deploy restart logic
|
||||||
|
- *(cmdeploy)* Stop and disable unbound-resolvconf
|
||||||
|
- *(nginx)* Properly redirect www to mail_domain
|
||||||
|
- *(dns)* Query correct NS if MNAME server is hidden (#954)
|
||||||
|
- Legacy token metadata storage used list type, but if no new setmetadata happened, the user would not be notified at all.
|
||||||
|
- *(logging)* Log all http requests to syslog
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- Document how to upgrade to new version (#965)
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- *(deps)* Upgrade to filtermail v0.6.4
|
||||||
|
|
||||||
|
### Refactor
|
||||||
|
|
||||||
|
- Introduce automated change-tracking across deployers
|
||||||
|
|
||||||
## 1.10.0 2026-04-30
|
## 1.10.0 2026-04-30
|
||||||
|
|
||||||
* start mtail after networking is fully up <https://github.com/chatmail/relay/pull/942>
|
* start mtail after networking is fully up <https://github.com/chatmail/relay/pull/942>
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ dependencies = [
|
|||||||
"pytest-xdist",
|
"pytest-xdist",
|
||||||
"execnet",
|
"execnet",
|
||||||
"imap_tools",
|
"imap_tools",
|
||||||
"deltachat-rpc-client",
|
"deltachat-rpc-client==2.49.0",
|
||||||
"deltachat-rpc-server",
|
"deltachat-rpc-server==2.49.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
|
|||||||
@@ -53,7 +53,8 @@ smtpd_tls_exclude_ciphers = aNULL, RC4, MD5, DES
|
|||||||
# See <https://www.postfix.org/FORWARD_SECRECY_README.html#server_fs>.
|
# See <https://www.postfix.org/FORWARD_SECRECY_README.html#server_fs>.
|
||||||
tls_preempt_cipherlist = yes
|
tls_preempt_cipherlist = yes
|
||||||
|
|
||||||
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
|
# Reject by default, override per smtpd in master.cf
|
||||||
|
smtpd_relay_restrictions = reject
|
||||||
myhostname = {{ config.postfix_myhostname }}
|
myhostname = {{ config.postfix_myhostname }}
|
||||||
alias_maps = hash:/etc/aliases
|
alias_maps = hash:/etc/aliases
|
||||||
alias_database = hash:/etc/aliases
|
alias_database = hash:/etc/aliases
|
||||||
@@ -101,9 +102,24 @@ smtpd_peername_lookup = no
|
|||||||
# so instead this is handled in filtermail.
|
# so instead this is handled in filtermail.
|
||||||
# We use LMTP instead SMTP so we can communicate per-recipient errors back to postfix.
|
# We use LMTP instead SMTP so we can communicate per-recipient errors back to postfix.
|
||||||
default_transport = lmtp-filtermail:inet:[127.0.0.1]:{{ config.filtermail_lmtp_port_transport }}
|
default_transport = lmtp-filtermail:inet:[127.0.0.1]:{{ config.filtermail_lmtp_port_transport }}
|
||||||
|
|
||||||
|
# All deliveries over lmtp-filtermail are treated
|
||||||
|
# as having the same destination [127.0.0.1],
|
||||||
|
# so it is not possible to limit per-destination concurrency here,
|
||||||
|
# it is a job for filtermail-transport.
|
||||||
|
# Total number of parallel deliveries is limited
|
||||||
|
# by "maxproc" column in /etc/postfix/master.cf for lmtp-filtermail.
|
||||||
|
# Settings below are to prevent Postfix queue manager
|
||||||
|
# from limiting the number of LMTP connections to filtermail-transport.
|
||||||
|
# Read <https://www.postfix.org/TUNING_README.html#rope> and
|
||||||
|
# <https://www.postfix.org/SCHEDULER_README.html> for the details
|
||||||
|
# of the Postfix algorithm that we effectively disable here.
|
||||||
lmtp-filtermail_initial_destination_concurrency=10000
|
lmtp-filtermail_initial_destination_concurrency=10000
|
||||||
lmtp-filtermail_destination_concurrency_limit=10000
|
lmtp-filtermail_destination_concurrency_limit=10000
|
||||||
|
|
||||||
|
# Do not try to deliver messages for more than 2 days.
|
||||||
|
maximal_queue_lifetime = 2d
|
||||||
|
|
||||||
{% if not config.ipv4_relay %}
|
{% if not config.ipv4_relay %}
|
||||||
# DKIM-sign locally generated mail (bounces, DSNs).
|
# DKIM-sign locally generated mail (bounces, DSNs).
|
||||||
# These bypass smtpd, so they need explicit milter configuration.
|
# These bypass smtpd, so they need explicit milter configuration.
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ smtp inet n - y - - smtpd
|
|||||||
-o smtpd_tls_security_level=encrypt
|
-o smtpd_tls_security_level=encrypt
|
||||||
-o smtpd_tls_mandatory_protocols=>=TLSv1.2
|
-o smtpd_tls_mandatory_protocols=>=TLSv1.2
|
||||||
-o smtpd_proxy_filter=127.0.0.1:{{ config.filtermail_smtp_port_incoming }}
|
-o smtpd_proxy_filter=127.0.0.1:{{ config.filtermail_smtp_port_incoming }}
|
||||||
|
-o smtpd_relay_restrictions=reject_unauth_destination
|
||||||
submission inet n - y - 5000 smtpd
|
submission inet n - y - 5000 smtpd
|
||||||
-o syslog_name=postfix/submission
|
-o syslog_name=postfix/submission
|
||||||
-o smtpd_tls_security_level=encrypt
|
-o smtpd_tls_security_level=encrypt
|
||||||
@@ -81,12 +82,14 @@ filter unix - n n - - lmtp
|
|||||||
-o syslog_name=postfix/reinject
|
-o syslog_name=postfix/reinject
|
||||||
-o milter_macro_daemon_name=ORIGINATING
|
-o milter_macro_daemon_name=ORIGINATING
|
||||||
-o cleanup_service_name=authclean
|
-o cleanup_service_name=authclean
|
||||||
|
-o smtpd_relay_restrictions=permit_mynetworks,reject
|
||||||
{% if not config.ipv4_relay %} -o smtpd_milters=unix:opendkim/opendkim.sock
|
{% if not config.ipv4_relay %} -o smtpd_milters=unix:opendkim/opendkim.sock
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
# Local SMTP server for reinjecting incoming filtered mail
|
# Local SMTP server for reinjecting incoming filtered mail
|
||||||
127.0.0.1:{{ config.postfix_reinject_port_incoming }} inet n - n - 100 smtpd
|
127.0.0.1:{{ config.postfix_reinject_port_incoming }} inet n - n - 100 smtpd
|
||||||
-o syslog_name=postfix/reinject_incoming
|
-o syslog_name=postfix/reinject_incoming
|
||||||
|
-o smtpd_relay_restrictions=reject_unauth_destination
|
||||||
|
|
||||||
# Cleanup `Received` headers for authenticated mail
|
# Cleanup `Received` headers for authenticated mail
|
||||||
# to avoid leaking client IP.
|
# to avoid leaking client IP.
|
||||||
@@ -102,7 +105,15 @@ filter unix - n n - - lmtp
|
|||||||
authclean unix n - - - 0 cleanup
|
authclean unix n - - - 0 cleanup
|
||||||
-o header_checks=regexp:/etc/postfix/submission_header_cleanup
|
-o header_checks=regexp:/etc/postfix/submission_header_cleanup
|
||||||
|
|
||||||
lmtp-filtermail unix - - y - 10000 lmtp
|
# Reducing `maxproc` here may result in a head of line blocking
|
||||||
|
# when there are many messages sent to unreachable destinations
|
||||||
|
# at the same time.
|
||||||
|
# LMTP clients here talk to filtermail-transport.
|
||||||
|
# LMTP has no pipelining,
|
||||||
|
# so while filtermail-transport tries to deliver the message,
|
||||||
|
# possibly waiting for a long connection timeout
|
||||||
|
# or talking to a slow server, LMTP client cannot be reused.
|
||||||
|
lmtp-filtermail unix - - y - 500 lmtp
|
||||||
-o syslog_name=postfix/lmtp-filtermail
|
-o syslog_name=postfix/lmtp-filtermail
|
||||||
-o lmtp_header_checks=
|
-o lmtp_header_checks=
|
||||||
-o lmtp_tls_security_level=none
|
-o lmtp_tls_security_level=none
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ and run the following commands:
|
|||||||
::
|
::
|
||||||
|
|
||||||
git pull origin main --rebase --autostash
|
git pull origin main --rebase --autostash
|
||||||
|
scripts/initenv.sh
|
||||||
scripts/cmdeploy run
|
scripts/cmdeploy run
|
||||||
|
|
||||||
If you don't want the latest development version,
|
If you don't want the latest development version,
|
||||||
|
|||||||
Reference in New Issue
Block a user