mirror of
https://github.com/chatmail/relay.git
synced 2026-06-11 06:01:07 +00:00
Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 290525f0fc | |||
| e004a5e2f6 | |||
| acf6e862d0 | |||
| 31faf2c78e | |||
| f8c28d8b9f | |||
| f69a2355f6 | |||
| 388c01105c | |||
| f8996e1d7d | |||
| 6b3d5025d9 | |||
| ed271189d2 | |||
| 65f8a9a652 | |||
| 6c5b9fde1f | |||
| 258436442f | |||
| 05a32efa50 | |||
| 1142d06fdb | |||
| 35fe189be7 | |||
| a78e8e10d2 | |||
| 9af37ccfbf | |||
| 803f3e6181 | |||
| f188aef11e | |||
| 76d7e60018 | |||
| fe749159e4 | |||
| 3c3532a292 | |||
| 710ca0070f | |||
| 4038fefefd | |||
| cdcdc0b724 | |||
| 2313093b55 | |||
| 3f2ec54725 |
+108
-87
@@ -2,69 +2,90 @@
|
|||||||
|
|
||||||
## untagged
|
## untagged
|
||||||
|
|
||||||
|
- Remove `DKIM-Signature` from incoming mails after verifying
|
||||||
|
([#530](https://github.com/chatmail/server/pull/530))
|
||||||
|
|
||||||
|
- Send SNI when connecting to outside servers
|
||||||
|
([#524](https://github.com/chatmail/server/pull/524))
|
||||||
|
|
||||||
|
- Pass through `original_content` instead of `content` in filtermail
|
||||||
|
([#509](https://github.com/chatmail/server/pull/509))
|
||||||
|
|
||||||
|
- Document TLS requirements in the readme
|
||||||
|
([#514](https://github.com/chatmail/server/pull/514))
|
||||||
|
|
||||||
|
- Remove cleanup service from submission ports
|
||||||
|
([#512](https://github.com/chatmail/server/pull/512))
|
||||||
|
|
||||||
|
- cmdeploy dovecot: delete big messages after 7 days
|
||||||
|
([#504](https://github.com/chatmail/server/pull/504))
|
||||||
|
|
||||||
|
- mtail: fix getting logs from STDIN
|
||||||
|
([#502](https://github.com/chatmail/server/pull/502))
|
||||||
|
|
||||||
- filtermail: don't require exactly 2 lines after openPGP payload
|
- filtermail: don't require exactly 2 lines after openPGP payload
|
||||||
([#497](https://github.com/chatmail/chatmail/pull/497))
|
([#497](https://github.com/chatmail/server/pull/497))
|
||||||
|
|
||||||
- cmdeploy dns: offer alternative DKIM record format for some web interfaces
|
- cmdeploy dns: offer alternative DKIM record format for some web interfaces
|
||||||
([#470](https://github.com/deltachat/chatmail/pull/470))
|
([#470](https://github.com/chatmail/server/pull/470))
|
||||||
|
|
||||||
- journald: remove old logs from disk
|
- journald: remove old logs from disk
|
||||||
([#490](https://github.com/deltachat/chatmail/pull/490))
|
([#490](https://github.com/chatmail/server/pull/490))
|
||||||
|
|
||||||
- opendkim: restart once every day to mend RAM leaks
|
- opendkim: restart once every day to mend RAM leaks
|
||||||
([#498](https://github.com/chatmail/chatmail/pull/498)
|
([#498](https://github.com/chatmail/server/pull/498)
|
||||||
|
|
||||||
- migration guide: let opendkim own the DKIM keys directory
|
- migration guide: let opendkim own the DKIM keys directory
|
||||||
([#468](https://github.com/deltachat/chatmail/pull/468))
|
([#468](https://github.com/chatmail/server/pull/468))
|
||||||
|
|
||||||
- improve secure-join message detection
|
- improve secure-join message detection
|
||||||
([#473](https://github.com/deltachat/chatmail/pull/473))
|
([#473](https://github.com/chatmail/server/pull/473))
|
||||||
|
|
||||||
- use old crypt lib in python < 3.11
|
- use old crypt lib in python < 3.11
|
||||||
([#483](https://github.com/deltachat/chatmail/pull/483))
|
([#483](https://github.com/chatmail/server/pull/483))
|
||||||
|
|
||||||
- chatmaild: set umask to 0700 for doveauth + metadata
|
- chatmaild: set umask to 0700 for doveauth + metadata
|
||||||
([#490](https://github.com/deltachat/chatmail/pull/492))
|
([#490](https://github.com/chatmail/server/pull/492))
|
||||||
|
|
||||||
- remove MTA-STS daemon
|
- remove MTA-STS daemon
|
||||||
([#488](https://github.com/deltachat/chatmail/pull/488))
|
([#488](https://github.com/chatmail/server/pull/488))
|
||||||
|
|
||||||
- replace `Subject` with `[...]` for all outgoing mails.
|
- replace `Subject` with `[...]` for all outgoing mails.
|
||||||
([#481](https://github.com/deltachat/chatmail/pull/481))
|
([#481](https://github.com/chatmail/server/pull/481))
|
||||||
|
|
||||||
- opendkim: use su instead of sudo
|
- opendkim: use su instead of sudo
|
||||||
([#491](https://github.com/deltachat/chatmail/pull/491))
|
([#491](https://github.com/chatmail/server/pull/491))
|
||||||
|
|
||||||
## 1.5.0 2024-12-20
|
## 1.5.0 2024-12-20
|
||||||
|
|
||||||
- cmdeploy dns: always show recommended DNS records
|
- cmdeploy dns: always show recommended DNS records
|
||||||
([#463](https://github.com/deltachat/chatmail/pull/463))
|
([#463](https://github.com/chatmail/server/pull/463))
|
||||||
|
|
||||||
- add `--all` to `cmdeploy dns`
|
- add `--all` to `cmdeploy dns`
|
||||||
([#462](https://github.com/deltachat/chatmail/pull/462))
|
([#462](https://github.com/chatmail/server/pull/462))
|
||||||
|
|
||||||
- fix `_mta-sts` TXT DNS record
|
- fix `_mta-sts` TXT DNS record
|
||||||
([#461](https://github.com/deltachat/chatmail/pull/461)
|
([#461](https://github.com/chatmail/server/pull/461)
|
||||||
|
|
||||||
- deploy `iroh-relay` and also update "realtime relay services" in privacy policy.
|
- deploy `iroh-relay` and also update "realtime relay services" in privacy policy.
|
||||||
([#434](https://github.com/deltachat/chatmail/pull/434))
|
([#434](https://github.com/chatmail/server/pull/434))
|
||||||
([#451](https://github.com/deltachat/chatmail/pull/451))
|
([#451](https://github.com/chatmail/server/pull/451))
|
||||||
|
|
||||||
- add guide to migrate chatmail to a new server
|
- add guide to migrate chatmail to a new server
|
||||||
([#429](https://github.com/deltachat/chatmail/pull/429))
|
([#429](https://github.com/chatmail/server/pull/429))
|
||||||
|
|
||||||
- disable anvil authentication penalty
|
- disable anvil authentication penalty
|
||||||
([#414](https://github.com/deltachat/chatmail/pull/444)
|
([#414](https://github.com/chatmail/server/pull/444)
|
||||||
|
|
||||||
- increase `request_queue_size` for UNIX sockets to 1000.
|
- increase `request_queue_size` for UNIX sockets to 1000.
|
||||||
([#437](https://github.com/deltachat/chatmail/pull/437))
|
([#437](https://github.com/chatmail/server/pull/437))
|
||||||
|
|
||||||
- add argument to `cmdeploy run` for specifying
|
- add argument to `cmdeploy run` for specifying
|
||||||
a different SSH host than `mail_domain`
|
a different SSH host than `mail_domain`
|
||||||
([#439](https://github.com/deltachat/chatmail/pull/439))
|
([#439](https://github.com/chatmail/server/pull/439))
|
||||||
|
|
||||||
- query autoritative nameserver to bypass DNS cache
|
- query autoritative nameserver to bypass DNS cache
|
||||||
([#424](https://github.com/deltachat/chatmail/pull/424))
|
([#424](https://github.com/chatmail/server/pull/424))
|
||||||
|
|
||||||
- add mtail support (new optional `mtail_address` ini value)
|
- add mtail support (new optional `mtail_address` ini value)
|
||||||
This defines the address on which [`mtail`](https://google.github.io/mtail/)
|
This defines the address on which [`mtail`](https://google.github.io/mtail/)
|
||||||
@@ -74,195 +95,195 @@
|
|||||||
and assign an IP address from this network to the host.
|
and assign an IP address from this network to the host.
|
||||||
If you do not plan to collect metrics,
|
If you do not plan to collect metrics,
|
||||||
keep this setting unset.
|
keep this setting unset.
|
||||||
([#388](https://github.com/deltachat/chatmail/pull/388))
|
([#388](https://github.com/chatmail/server/pull/388))
|
||||||
|
|
||||||
- fix checking for required DNS records
|
- fix checking for required DNS records
|
||||||
([#412](https://github.com/deltachat/chatmail/pull/412))
|
([#412](https://github.com/chatmail/server/pull/412))
|
||||||
|
|
||||||
- add support for specifying whole domains for recipient passthrough list
|
- add support for specifying whole domains for recipient passthrough list
|
||||||
([#408](https://github.com/deltachat/chatmail/pull/408))
|
([#408](https://github.com/chatmail/server/pull/408))
|
||||||
|
|
||||||
- add a paragraph about "account deletion" to info page
|
- add a paragraph about "account deletion" to info page
|
||||||
([#405](https://github.com/deltachat/chatmail/pull/405))
|
([#405](https://github.com/chatmail/server/pull/405))
|
||||||
|
|
||||||
- avoid nginx listening on ipv6 if v6 is dsiabled
|
- avoid nginx listening on ipv6 if v6 is dsiabled
|
||||||
([#402](https://github.com/deltachat/chatmail/pull/402))
|
([#402](https://github.com/chatmail/server/pull/402))
|
||||||
|
|
||||||
- refactor ssh-based execution to allow organizing remote functions in
|
- refactor ssh-based execution to allow organizing remote functions in
|
||||||
modules.
|
modules.
|
||||||
([#396](https://github.com/deltachat/chatmail/pull/396))
|
([#396](https://github.com/chatmail/server/pull/396))
|
||||||
|
|
||||||
- trigger "apt upgrade" during "cmdeploy run"
|
- trigger "apt upgrade" during "cmdeploy run"
|
||||||
([#398](https://github.com/deltachat/chatmail/pull/398))
|
([#398](https://github.com/chatmail/server/pull/398))
|
||||||
|
|
||||||
- drop hispanilandia passthrough address
|
- drop hispanilandia passthrough address
|
||||||
([#401](https://github.com/deltachat/chatmail/pull/401))
|
([#401](https://github.com/chatmail/server/pull/401))
|
||||||
|
|
||||||
- set CAA record flags to 0
|
- set CAA record flags to 0
|
||||||
|
|
||||||
- add IMAP capabilities instead of overwriting them
|
- add IMAP capabilities instead of overwriting them
|
||||||
([#413](https://github.com/deltachat/chatmail/pull/413))
|
([#413](https://github.com/chatmail/server/pull/413))
|
||||||
|
|
||||||
- fix OpenPGP payload check
|
- fix OpenPGP payload check
|
||||||
([#435](https://github.com/deltachat/chatmail/pull/435))
|
([#435](https://github.com/chatmail/server/pull/435))
|
||||||
|
|
||||||
- fix Dovecot quota_max_mail_size to use max_message_size config value
|
- fix Dovecot quota_max_mail_size to use max_message_size config value
|
||||||
([#438](https://github.com/deltachat/chatmail/pull/438))
|
([#438](https://github.com/chatmail/server/pull/438))
|
||||||
|
|
||||||
|
|
||||||
## 1.4.1 2024-07-31
|
## 1.4.1 2024-07-31
|
||||||
|
|
||||||
- fix metadata dictproxy which would confuse transactions
|
- fix metadata dictproxy which would confuse transactions
|
||||||
resulting in missed notifications and other issues.
|
resulting in missed notifications and other issues.
|
||||||
([#393](https://github.com/deltachat/chatmail/pull/393))
|
([#393](https://github.com/chatmail/server/pull/393))
|
||||||
([#394](https://github.com/deltachat/chatmail/pull/394))
|
([#394](https://github.com/chatmail/server/pull/394))
|
||||||
|
|
||||||
- add optional "imap_rawlog" config option. If true,
|
- add optional "imap_rawlog" config option. If true,
|
||||||
.in/.out files are created in user home dirs
|
.in/.out files are created in user home dirs
|
||||||
containing the imap protocol messages.
|
containing the imap protocol messages.
|
||||||
([#389](https://github.com/deltachat/chatmail/pull/389))
|
([#389](https://github.com/chatmail/server/pull/389))
|
||||||
|
|
||||||
## 1.4.0 2024-07-28
|
## 1.4.0 2024-07-28
|
||||||
|
|
||||||
- Add `disable_ipv6` config option to chatmail.ini.
|
- Add `disable_ipv6` config option to chatmail.ini.
|
||||||
Required if the server doesn't have IPv6 connectivity.
|
Required if the server doesn't have IPv6 connectivity.
|
||||||
([#312](https://github.com/deltachat/chatmail/pull/312))
|
([#312](https://github.com/chatmail/server/pull/312))
|
||||||
|
|
||||||
- allow current K9/Thunderbird-mail releases to send encrypted messages
|
- allow current K9/Thunderbird-mail releases to send encrypted messages
|
||||||
outside by accepting their localized "encrypted subject" strings.
|
outside by accepting their localized "encrypted subject" strings.
|
||||||
([#370](https://github.com/deltachat/chatmail/pull/370))
|
([#370](https://github.com/chatmail/server/pull/370))
|
||||||
|
|
||||||
- Migrate and remove sqlite database in favor of password/lastlogin tracking
|
- Migrate and remove sqlite database in favor of password/lastlogin tracking
|
||||||
in a user's maildir.
|
in a user's maildir.
|
||||||
([#379](https://github.com/deltachat/chatmail/pull/379))
|
([#379](https://github.com/chatmail/server/pull/379))
|
||||||
|
|
||||||
- Require pyinfra V3 installed on the client side,
|
- Require pyinfra V3 installed on the client side,
|
||||||
run `./scripts/initenv.sh` to upgrade locally.
|
run `./scripts/initenv.sh` to upgrade locally.
|
||||||
([#378](https://github.com/deltachat/chatmail/pull/378))
|
([#378](https://github.com/chatmail/server/pull/378))
|
||||||
|
|
||||||
- don't hardcode "/home/vmail" paths but rather set them
|
- don't hardcode "/home/vmail" paths but rather set them
|
||||||
once in the config object and use it everywhere else,
|
once in the config object and use it everywhere else,
|
||||||
thereby also improving testability.
|
thereby also improving testability.
|
||||||
([#351](https://github.com/deltachat/chatmail/pull/351))
|
([#351](https://github.com/chatmail/server/pull/351))
|
||||||
temporarily introduced obligatory "passdb_path" and "mailboxes_dir"
|
temporarily introduced obligatory "passdb_path" and "mailboxes_dir"
|
||||||
settings but they were removed/obsoleted in
|
settings but they were removed/obsoleted in
|
||||||
([#380](https://github.com/deltachat/chatmail/pull/380))
|
([#380](https://github.com/chatmail/server/pull/380))
|
||||||
|
|
||||||
- BREAKING: new required chatmail.ini value 'delete_inactive_users_after = 100'
|
- BREAKING: new required chatmail.ini value 'delete_inactive_users_after = 100'
|
||||||
which removes users from database and mails after 100 days without any login.
|
which removes users from database and mails after 100 days without any login.
|
||||||
([#350](https://github.com/deltachat/chatmail/pull/350))
|
([#350](https://github.com/chatmail/server/pull/350))
|
||||||
|
|
||||||
- Refine DNS checking to distinguish between "required" and "recommended" settings
|
- Refine DNS checking to distinguish between "required" and "recommended" settings
|
||||||
([#372](https://github.com/deltachat/chatmail/pull/372))
|
([#372](https://github.com/chatmail/server/pull/372))
|
||||||
|
|
||||||
- reload nginx in the acmetool cronjob
|
- reload nginx in the acmetool cronjob
|
||||||
([#360](https://github.com/deltachat/chatmail/pull/360))
|
([#360](https://github.com/chatmail/server/pull/360))
|
||||||
|
|
||||||
- remove checking of reverse-DNS PTR records. Chatmail-servers don't
|
- remove checking of reverse-DNS PTR records. Chatmail-servers don't
|
||||||
depend on it and even in the wider e-mail system it's not common anymore.
|
depend on it and even in the wider e-mail system it's not common anymore.
|
||||||
If it's an issue, a chatmail operator can still care to properly set reverse DNS.
|
If it's an issue, a chatmail operator can still care to properly set reverse DNS.
|
||||||
([#348](https://github.com/deltachat/chatmail/pull/348))
|
([#348](https://github.com/chatmail/server/pull/348))
|
||||||
|
|
||||||
- Make DNS-checking faster and more interactive, run it fully during "cmdeploy run",
|
- Make DNS-checking faster and more interactive, run it fully during "cmdeploy run",
|
||||||
also introducing a generic mechanism for rapid remote ssh-based python function execution.
|
also introducing a generic mechanism for rapid remote ssh-based python function execution.
|
||||||
([#346](https://github.com/deltachat/chatmail/pull/346))
|
([#346](https://github.com/chatmail/server/pull/346))
|
||||||
|
|
||||||
- Don't fix file owner ship of /home/vmail
|
- Don't fix file owner ship of /home/vmail
|
||||||
([#345](https://github.com/deltachat/chatmail/pull/345))
|
([#345](https://github.com/chatmail/server/pull/345))
|
||||||
|
|
||||||
- Support iterating over all users with doveadm commands
|
- Support iterating over all users with doveadm commands
|
||||||
([#344](https://github.com/deltachat/chatmail/pull/344))
|
([#344](https://github.com/chatmail/server/pull/344))
|
||||||
|
|
||||||
- Test and fix for attempts to create inadmissible accounts
|
- Test and fix for attempts to create inadmissible accounts
|
||||||
([#333](https://github.com/deltachat/chatmail/pull/321))
|
([#333](https://github.com/chatmail/server/pull/321))
|
||||||
|
|
||||||
- check that OpenPGP has only PKESK, SKESK and SEIPD packets
|
- check that OpenPGP has only PKESK, SKESK and SEIPD packets
|
||||||
([#323](https://github.com/deltachat/chatmail/pull/323),
|
([#323](https://github.com/chatmail/server/pull/323),
|
||||||
[#324](https://github.com/deltachat/chatmail/pull/324))
|
[#324](https://github.com/chatmail/server/pull/324))
|
||||||
|
|
||||||
- improve filtermail checks for encrypted messages and drop support for unencrypted MDNs
|
- improve filtermail checks for encrypted messages and drop support for unencrypted MDNs
|
||||||
([#320](https://github.com/deltachat/chatmail/pull/320))
|
([#320](https://github.com/chatmail/server/pull/320))
|
||||||
|
|
||||||
- replace `bash` with `/bin/sh`
|
- replace `bash` with `/bin/sh`
|
||||||
([#334](https://github.com/deltachat/chatmail/pull/334))
|
([#334](https://github.com/chatmail/server/pull/334))
|
||||||
|
|
||||||
- Increase number of logged in IMAP sessions to 50000
|
- Increase number of logged in IMAP sessions to 50000
|
||||||
([#335](https://github.com/deltachat/chatmail/pull/335))
|
([#335](https://github.com/chatmail/server/pull/335))
|
||||||
|
|
||||||
- filtermail: do not allow ASCII armor without actual payload
|
- filtermail: do not allow ASCII armor without actual payload
|
||||||
([#325](https://github.com/deltachat/chatmail/pull/325))
|
([#325](https://github.com/chatmail/server/pull/325))
|
||||||
|
|
||||||
- Remove sieve to enable hardlink deduplication in LMTP
|
- Remove sieve to enable hardlink deduplication in LMTP
|
||||||
([#343](https://github.com/deltachat/chatmail/pull/343))
|
([#343](https://github.com/chatmail/server/pull/343))
|
||||||
|
|
||||||
- dovecot: enable gzip compression on disk
|
- dovecot: enable gzip compression on disk
|
||||||
([#341](https://github.com/deltachat/chatmail/pull/341))
|
([#341](https://github.com/chatmail/server/pull/341))
|
||||||
|
|
||||||
- DKIM-sign Content-Type and oversign all signed headers
|
- DKIM-sign Content-Type and oversign all signed headers
|
||||||
([#296](https://github.com/deltachat/chatmail/pull/296))
|
([#296](https://github.com/chatmail/server/pull/296))
|
||||||
|
|
||||||
- Add nonci_accounts metric
|
- Add nonci_accounts metric
|
||||||
([#347](https://github.com/deltachat/chatmail/pull/347))
|
([#347](https://github.com/chatmail/server/pull/347))
|
||||||
|
|
||||||
- doveauth: log when a new account is created
|
- doveauth: log when a new account is created
|
||||||
([#349](https://github.com/deltachat/chatmail/pull/349))
|
([#349](https://github.com/chatmail/server/pull/349))
|
||||||
|
|
||||||
- Multiplex HTTPS, IMAP and SMTP on port 443
|
- Multiplex HTTPS, IMAP and SMTP on port 443
|
||||||
([#357](https://github.com/deltachat/chatmail/pull/357))
|
([#357](https://github.com/chatmail/server/pull/357))
|
||||||
|
|
||||||
## 1.3.0 - 2024-06-06
|
## 1.3.0 - 2024-06-06
|
||||||
|
|
||||||
- don't check necessary DNS records on cmdeploy init anymore
|
- don't check necessary DNS records on cmdeploy init anymore
|
||||||
([#316](https://github.com/deltachat/chatmail/pull/316))
|
([#316](https://github.com/chatmail/server/pull/316))
|
||||||
|
|
||||||
- ensure cron and acl are installed
|
- ensure cron and acl are installed
|
||||||
([#293](https://github.com/deltachat/chatmail/pull/293),
|
([#293](https://github.com/chatmail/server/pull/293),
|
||||||
[#310](https://github.com/deltachat/chatmail/pull/310))
|
[#310](https://github.com/chatmail/server/pull/310))
|
||||||
|
|
||||||
- change default for delete_mails_after from 40 to 20 days
|
- change default for delete_mails_after from 40 to 20 days
|
||||||
([#300](https://github.com/deltachat/chatmail/pull/300))
|
([#300](https://github.com/chatmail/server/pull/300))
|
||||||
|
|
||||||
- save journald logs only to memory and save nginx logs to journald instead of file
|
- save journald logs only to memory and save nginx logs to journald instead of file
|
||||||
([#299](https://github.com/deltachat/chatmail/pull/299))
|
([#299](https://github.com/chatmail/server/pull/299))
|
||||||
|
|
||||||
- fix writing of multiple obs repositories in `/etc/apt/sources.list`
|
- fix writing of multiple obs repositories in `/etc/apt/sources.list`
|
||||||
([#290](https://github.com/deltachat/chatmail/pull/290))
|
([#290](https://github.com/chatmail/server/pull/290))
|
||||||
|
|
||||||
- metadata: add support for `/shared/vendor/deltachat/irohrelay`
|
- metadata: add support for `/shared/vendor/deltachat/irohrelay`
|
||||||
([#284](https://github.com/deltachat/chatmail/pull/284))
|
([#284](https://github.com/chatmail/server/pull/284))
|
||||||
|
|
||||||
- Emit "XCHATMAIL" capability from IMAP server
|
- Emit "XCHATMAIL" capability from IMAP server
|
||||||
([#278](https://github.com/deltachat/chatmail/pull/278))
|
([#278](https://github.com/chatmail/server/pull/278))
|
||||||
|
|
||||||
- Move echobot `into /var/lib/echobot`
|
- Move echobot `into /var/lib/echobot`
|
||||||
([#281](https://github.com/deltachat/chatmail/pull/281))
|
([#281](https://github.com/chatmail/server/pull/281))
|
||||||
|
|
||||||
- Accept Let's Encrypt's new Terms of Services
|
- Accept Let's Encrypt's new Terms of Services
|
||||||
([#275](https://github.com/deltachat/chatmail/pull/276))
|
([#275](https://github.com/chatmail/server/pull/276))
|
||||||
|
|
||||||
- Reload Dovecot and Postfix when TLS certificate updates
|
- Reload Dovecot and Postfix when TLS certificate updates
|
||||||
([#271](https://github.com/deltachat/chatmail/pull/271))
|
([#271](https://github.com/chatmail/server/pull/271))
|
||||||
|
|
||||||
- Use forked version of dovecot without hardcoded delays
|
- Use forked version of dovecot without hardcoded delays
|
||||||
([#270](https://github.com/deltachat/chatmail/pull/270))
|
([#270](https://github.com/chatmail/server/pull/270))
|
||||||
|
|
||||||
## 1.2.0 - 2024-04-04
|
## 1.2.0 - 2024-04-04
|
||||||
|
|
||||||
- Install dig on the server to resolve DNS records
|
- Install dig on the server to resolve DNS records
|
||||||
([#267](https://github.com/deltachat/chatmail/pull/267))
|
([#267](https://github.com/chatmail/server/pull/267))
|
||||||
|
|
||||||
- preserve notification order and exponentially backoff with
|
- preserve notification order and exponentially backoff with
|
||||||
retries for tokens where we didn't get a successful return
|
retries for tokens where we didn't get a successful return
|
||||||
([#265](https://github.com/deltachat/chatmail/pull/263))
|
([#265](https://github.com/chatmail/server/pull/263))
|
||||||
|
|
||||||
- Run chatmail-metadata and doveauth as vmail
|
- Run chatmail-metadata and doveauth as vmail
|
||||||
([#261](https://github.com/deltachat/chatmail/pull/261))
|
([#261](https://github.com/chatmail/server/pull/261))
|
||||||
|
|
||||||
- Apply systemd restrictions to echobot
|
- Apply systemd restrictions to echobot
|
||||||
([#259](https://github.com/deltachat/chatmail/pull/259))
|
([#259](https://github.com/chatmail/server/pull/259))
|
||||||
|
|
||||||
- re-enable running the CI in pull requests, but not concurrently
|
- re-enable running the CI in pull requests, but not concurrently
|
||||||
([#258](https://github.com/deltachat/chatmail/pull/258))
|
([#258](https://github.com/chatmail/server/pull/258))
|
||||||
|
|
||||||
|
|
||||||
## 1.1.0 - 2024-03-28
|
## 1.1.0 - 2024-03-28
|
||||||
@@ -270,27 +291,27 @@
|
|||||||
### The changelog starts to record changes from March 15th, 2024
|
### The changelog starts to record changes from March 15th, 2024
|
||||||
|
|
||||||
- Move systemd unit templates to cmdeploy package
|
- Move systemd unit templates to cmdeploy package
|
||||||
([#255](https://github.com/deltachat/chatmail/pull/255))
|
([#255](https://github.com/chatmail/server/pull/255))
|
||||||
|
|
||||||
- Persist push tokens and support multiple device per address
|
- Persist push tokens and support multiple device per address
|
||||||
([#254](https://github.com/deltachat/chatmail/pull/254))
|
([#254](https://github.com/chatmail/server/pull/254))
|
||||||
|
|
||||||
- Avoid warning for regular doveauth protocol's hello message.
|
- Avoid warning for regular doveauth protocol's hello message.
|
||||||
([#250](https://github.com/deltachat/chatmail/pull/250))
|
([#250](https://github.com/chatmail/server/pull/250))
|
||||||
|
|
||||||
- Fix various tests to pass again with "cmdeploy test".
|
- Fix various tests to pass again with "cmdeploy test".
|
||||||
([#245](https://github.com/deltachat/chatmail/pull/245),
|
([#245](https://github.com/chatmail/server/pull/245),
|
||||||
[#242](https://github.com/deltachat/chatmail/pull/242)
|
[#242](https://github.com/chatmail/server/pull/242)
|
||||||
|
|
||||||
- Ensure lets-encrypt certificates are reloaded after renewal
|
- Ensure lets-encrypt certificates are reloaded after renewal
|
||||||
([#244]) https://github.com/deltachat/chatmail/pull/244
|
([#244]) https://github.com/chatmail/server/pull/244
|
||||||
|
|
||||||
- Persist tokens to avoid iOS users loosing push-notifications when the
|
- Persist tokens to avoid iOS users loosing push-notifications when the
|
||||||
chatmail metadata service is restarted (happens regularly during deploys)
|
chatmail metadata service is restarted (happens regularly during deploys)
|
||||||
([#238](https://github.com/deltachat/chatmail/pull/239)
|
([#238](https://github.com/chatmail/server/pull/239)
|
||||||
|
|
||||||
- Fix failing sieve-script compile errors on incoming messages
|
- Fix failing sieve-script compile errors on incoming messages
|
||||||
([#237](https://github.com/deltachat/chatmail/pull/239)
|
([#237](https://github.com/chatmail/server/pull/239)
|
||||||
|
|
||||||
- Fix quota reporting after expunging of old mails
|
- Fix quota reporting after expunging of old mails
|
||||||
([#233](https://github.com/deltachat/chatmail/pull/239)
|
([#233](https://github.com/chatmail/server/pull/239)
|
||||||
|
|||||||
@@ -1,21 +1,55 @@
|
|||||||
|
|
||||||
<img width="800px" src="www/src/collage-top.png"/>
|
<img width="800px" src="www/src/collage-top.png"/>
|
||||||
|
|
||||||
# Chatmail services optimized for Delta Chat apps
|
# Chatmail servers for secure instant messaging
|
||||||
|
|
||||||
This repository helps to setup a ready-to-use chatmail server
|
Chatmail servers are minimal interoperable e-mail routing machines designed for:
|
||||||
|
|
||||||
|
- **Convenience:** Instant onboarding, with optional Google/Apple/Huawei push notifications
|
||||||
|
|
||||||
|
- **Privacy:** Just login, no questions asked, no name, numbers or e-mail needed
|
||||||
|
|
||||||
|
- **Speed:** End-to-End Message delivery in well under a second
|
||||||
|
|
||||||
|
- **Security:** Strict TLS, DKIM and OpenPGP with metadata-minimization enforced.
|
||||||
|
|
||||||
|
- **Relaxation:** No annoying spam-checking, IP reputation or rate limits
|
||||||
|
|
||||||
|
- **Efficiency:** messages are only stored for transit and removed automatically.
|
||||||
|
|
||||||
|
This repository contains everything needed to setup a ready-to-use chatmail server
|
||||||
comprised of a minimal setup of the battle-tested
|
comprised of a minimal setup of the battle-tested
|
||||||
[postfix smtp](https://www.postfix.org) and [dovecot imap](https://www.dovecot.org) services.
|
[postfix smtp](https://www.postfix.org) and [dovecot imap](https://www.dovecot.org) services.
|
||||||
|
|
||||||
The setup is designed and optimized for providing chatmail accounts
|
The automated setup is designed and optimized for providing chatmail addresses
|
||||||
for use by [Delta Chat apps](https://delta.chat).
|
for immediate permission-free onboarding through chat apps and bots.
|
||||||
|
Chatmail addresses are automatically created by a first login,
|
||||||
|
after which the initially specified password is required
|
||||||
|
for sending and receiving messages through them.
|
||||||
|
|
||||||
Chatmail accounts are automatically created by a first login,
|
Please see [this list of known apps and client projects](https://chatmail.at/apps.html) which offer instant onboarding on chatmail servers,
|
||||||
after which the initially specified password is required for using them.
|
and [this list of known public 3rd party chatmail servers](https://delta.chat/en/chatmail).
|
||||||
|
|
||||||
## Deploying your own chatmail server
|
|
||||||
|
|
||||||
To deploy chatmail on your own server, you must have set-up ssh authentication and need to use an ed25519 key, due to an [upstream bug in paramiko](https://github.com/paramiko/paramiko/issues/2191). You also need to add your private key to the local ssh-agent, because you can't type in your password during deployment.
|
## Minimal requirements, Prerequisites
|
||||||
|
|
||||||
|
You will need the following:
|
||||||
|
|
||||||
|
- control over a domain through a DNS provider of your choice,
|
||||||
|
|
||||||
|
- a remote Debian 12 machine with IPV4 and preferably also IPV6 addresses and
|
||||||
|
reachable SMTP/SUBMISSIONS/IMAPS/HTTPS ports.
|
||||||
|
Machine needs 1GB RAM, one slow CPU and maybe 10GB storage for a
|
||||||
|
few thousand active chatmail addresses,
|
||||||
|
|
||||||
|
- a terminal window with password-less ssh root login to the remote machine;
|
||||||
|
you must have set up ssh authentication and need to use an ed25519 key,
|
||||||
|
due to an [upstream bug in paramiko](https://github.com/paramiko/paramiko/issues/2191);
|
||||||
|
you also need to add your private key to the local ssh-agent,
|
||||||
|
because you can't type in your password during deployment.
|
||||||
|
|
||||||
|
|
||||||
|
## Getting started
|
||||||
|
|
||||||
We use `chat.example.org` as the chatmail domain in the following steps.
|
We use `chat.example.org` as the chatmail domain in the following steps.
|
||||||
Please substitute it with your own domain.
|
Please substitute it with your own domain.
|
||||||
@@ -23,7 +57,7 @@ Please substitute it with your own domain.
|
|||||||
1. Install the `cmdeploy` command in a virtualenv
|
1. Install the `cmdeploy` command in a virtualenv
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/deltachat/chatmail
|
git clone https://github.com/chatmail/server
|
||||||
cd chatmail
|
cd chatmail
|
||||||
scripts/initenv.sh
|
scripts/initenv.sh
|
||||||
```
|
```
|
||||||
@@ -82,11 +116,11 @@ scripts/cmdeploy bench
|
|||||||
|
|
||||||
This repository has four directories:
|
This repository has four directories:
|
||||||
|
|
||||||
- [cmdeploy](https://github.com/deltachat/chatmail/tree/main/cmdeploy)
|
- [cmdeploy](https://github.com/chatmail/server/tree/main/cmdeploy)
|
||||||
is a collection of configuration files
|
is a collection of configuration files
|
||||||
and a [pyinfra](https://pyinfra.com)-based deployment script.
|
and a [pyinfra](https://pyinfra.com)-based deployment script.
|
||||||
|
|
||||||
- [chatmaild](https://github.com/deltachat/chatmail/tree/main/chatmaild)
|
- [chatmaild](https://github.com/chatmail/server/tree/main/chatmaild)
|
||||||
is a python package containing several small services
|
is a python package containing several small services
|
||||||
which handle authentication,
|
which handle authentication,
|
||||||
trigger push notifications on new messages,
|
trigger push notifications on new messages,
|
||||||
@@ -95,12 +129,12 @@ This repository has four directories:
|
|||||||
and some other minor things.
|
and some other minor things.
|
||||||
chatmaild can also be installed as a stand-alone python package.
|
chatmaild can also be installed as a stand-alone python package.
|
||||||
|
|
||||||
- [www](https://github.com/deltachat/chatmail/tree/main/www)
|
- [www](https://github.com/chatmail/server/tree/main/www)
|
||||||
contains the html, css, and markdown files
|
contains the html, css, and markdown files
|
||||||
which make up a chatmail server's web page.
|
which make up a chatmail server's web page.
|
||||||
Edit them before deploying to make your chatmail server stand out.
|
Edit them before deploying to make your chatmail server stand out.
|
||||||
|
|
||||||
- [scripts](https://github.com/deltachat/chatmail/tree/main/scripts)
|
- [scripts](https://github.com/chatmail/server/tree/main/scripts)
|
||||||
offers two convenience tools for beginners;
|
offers two convenience tools for beginners;
|
||||||
`initenv.sh` installs the necessary dependencies to a local virtual environment,
|
`initenv.sh` installs the necessary dependencies to a local virtual environment,
|
||||||
and the `scripts/cmdeploy` script enables you
|
and the `scripts/cmdeploy` script enables you
|
||||||
@@ -139,39 +173,39 @@ If you deploy them with cmdeploy,
|
|||||||
they are run by systemd services in the background.
|
they are run by systemd services in the background.
|
||||||
A short overview:
|
A short overview:
|
||||||
|
|
||||||
- [`doveauth`](https://github.com/deltachat/chatmail/blob/main/chatmaild/src/chatmaild/doveauth.py) implements
|
- [`doveauth`](https://github.com/chatmail/server/blob/main/chatmaild/src/chatmaild/doveauth.py) implements
|
||||||
create-on-login account creation semantics and is used
|
create-on-login account creation semantics and is used
|
||||||
by Dovecot during login authentication and by Postfix
|
by Dovecot during login authentication and by Postfix
|
||||||
which in turn uses [Dovecot SASL](https://doc.dovecot.org/configuration_manual/authentication/dict/#complete-example-for-authenticating-via-a-unix-socket)
|
which in turn uses [Dovecot SASL](https://doc.dovecot.org/configuration_manual/authentication/dict/#complete-example-for-authenticating-via-a-unix-socket)
|
||||||
to authenticate users
|
to authenticate users
|
||||||
to send mails for them.
|
to send mails for them.
|
||||||
|
|
||||||
- [`filtermail`](https://github.com/deltachat/chatmail/blob/main/chatmaild/src/chatmaild/filtermail.py) prevents
|
- [`filtermail`](https://github.com/chatmail/server/blob/main/chatmaild/src/chatmaild/filtermail.py) prevents
|
||||||
unencrypted e-mail from leaving the chatmail service
|
unencrypted e-mail from leaving the chatmail service
|
||||||
and is integrated into postfix's outbound mail pipelines.
|
and is integrated into postfix's outbound mail pipelines.
|
||||||
|
|
||||||
- [`chatmail-metadata`](https://github.com/deltachat/chatmail/blob/main/chatmaild/src/chatmaild/metadata.py) is contacted by a
|
- [`chatmail-metadata`](https://github.com/chatmail/server/blob/main/chatmaild/src/chatmaild/metadata.py) is contacted by a
|
||||||
[dovecot lua script](https://github.com/deltachat/chatmail/blob/main/cmdeploy/src/cmdeploy/dovecot/push_notification.lua)
|
[dovecot lua script](https://github.com/chatmail/server/blob/main/cmdeploy/src/cmdeploy/dovecot/push_notification.lua)
|
||||||
to store user-specific server-side config.
|
to store user-specific server-side config.
|
||||||
On new messages,
|
On new messages,
|
||||||
it [passes the user's push notification token](https://github.com/deltachat/chatmail/blob/main/chatmaild/src/chatmaild/notifier.py)
|
it [passes the user's push notification token](https://github.com/chatmail/server/blob/main/chatmaild/src/chatmaild/notifier.py)
|
||||||
to [notifications.delta.chat](https://delta.chat/help#instant-delivery)
|
to [notifications.delta.chat](https://delta.chat/help#instant-delivery)
|
||||||
so the push notifications on the user's phone can be triggered
|
so the push notifications on the user's phone can be triggered
|
||||||
by Apple/Google.
|
by Apple/Google.
|
||||||
|
|
||||||
- [`delete_inactive_users`](https://github.com/deltachat/chatmail/blob/main/chatmaild/src/chatmaild/delete_inactive_users.py)
|
- [`delete_inactive_users`](https://github.com/chatmail/server/blob/main/chatmaild/src/chatmaild/delete_inactive_users.py)
|
||||||
deletes users if they have not logged in for a very long time.
|
deletes users if they have not logged in for a very long time.
|
||||||
The timeframe can be configured in `chatmail.ini`.
|
The timeframe can be configured in `chatmail.ini`.
|
||||||
|
|
||||||
- [`lastlogin`](https://github.com/deltachat/chatmail/blob/main/chatmaild/src/chatmaild/lastlogin.py)
|
- [`lastlogin`](https://github.com/chatmail/server/blob/main/chatmaild/src/chatmaild/lastlogin.py)
|
||||||
is contacted by dovecot when a user logs in
|
is contacted by dovecot when a user logs in
|
||||||
and stores the date of the login.
|
and stores the date of the login.
|
||||||
|
|
||||||
- [`echobot`](https://github.com/deltachat/chatmail/blob/main/chatmaild/src/chatmaild/echo.py)
|
- [`echobot`](https://github.com/chatmail/server/blob/main/chatmaild/src/chatmaild/echo.py)
|
||||||
is a small bot for test purposes.
|
is a small bot for test purposes.
|
||||||
It simply echoes back messages from users.
|
It simply echoes back messages from users.
|
||||||
|
|
||||||
- [`chatmail-metrics`](https://github.com/deltachat/chatmail/blob/main/chatmaild/src/chatmaild/metrics.py)
|
- [`chatmail-metrics`](https://github.com/chatmail/server/blob/main/chatmaild/src/chatmaild/metrics.py)
|
||||||
collects some metrics and displays them at `https://example.org/metrics`.
|
collects some metrics and displays them at `https://example.org/metrics`.
|
||||||
|
|
||||||
### Home page and getting started for users
|
### Home page and getting started for users
|
||||||
@@ -228,8 +262,8 @@ While this file is present, account creation will be blocked.
|
|||||||
Port 443 multiplexes HTTPS, IMAP and SMTP using ALPN to redirect connections to ports 8443, 465 or 993.
|
Port 443 multiplexes HTTPS, IMAP and SMTP using ALPN to redirect connections to ports 8443, 465 or 993.
|
||||||
[acmetool](https://hlandau.github.io/acmetool/) listens on port 80 (http).
|
[acmetool](https://hlandau.github.io/acmetool/) listens on port 80 (http).
|
||||||
|
|
||||||
Delta Chat apps will, however, discover all ports and configurations
|
Chatmail-core based apps will, however, discover all ports and configurations
|
||||||
automatically by reading the [autoconfig XML file](https://www.ietf.org/archive/id/draft-bucksch-autoconfig-00.html) from the chatmail service.
|
automatically by reading the [autoconfig XML file](https://www.ietf.org/archive/id/draft-bucksch-autoconfig-00.html) from the chatmail server.
|
||||||
|
|
||||||
## Email authentication
|
## Email authentication
|
||||||
|
|
||||||
@@ -256,6 +290,32 @@ and rejects incorrectly authenticated emails with [`reject_sender_login_mismatch
|
|||||||
`From:` header must correspond to envelope MAIL FROM,
|
`From:` header must correspond to envelope MAIL FROM,
|
||||||
this is ensured by `filtermail` proxy.
|
this is ensured by `filtermail` proxy.
|
||||||
|
|
||||||
|
## TLS requirements
|
||||||
|
|
||||||
|
Postfix is configured to require valid TLS
|
||||||
|
by setting [`smtp_tls_security_level`](https://www.postfix.org/postconf.5.html#smtp_tls_security_level) to `verify`.
|
||||||
|
If emails don't arrive from a chatmail server to your server,
|
||||||
|
the problem is likely that your server does not have a valid TLS certificate.
|
||||||
|
|
||||||
|
You can test it by resolving `MX` records of your server domain
|
||||||
|
and then connecting to MX servers (e.g `mx.example.org`) with
|
||||||
|
`openssl s_client -connect mx.example.org:25 -verify_hostname mx.example.org -verify_return_error -starttls smtp`
|
||||||
|
from the host that has open port 25 to verify that certificate is valid.
|
||||||
|
|
||||||
|
When providing a TLS certificate to your server,
|
||||||
|
make sure to provide the full certificate chain
|
||||||
|
and not just the last certificate.
|
||||||
|
|
||||||
|
If you are running Exim server and don't see incoming connections
|
||||||
|
from a chatmail server in the logs,
|
||||||
|
make sure `smtp_no_mail` log item is enabled in the config
|
||||||
|
with `log_selector = +smtp_no_mail`.
|
||||||
|
By default Exim does not log sessions that are closed
|
||||||
|
before sending the `MAIL` command.
|
||||||
|
This happens if certificate is not recognized as valid by Postfix,
|
||||||
|
so you might think that connection is not established
|
||||||
|
while actually it is a problem with your TLS certificate.
|
||||||
|
|
||||||
## Migrating chatmail server to a new host
|
## Migrating chatmail server to a new host
|
||||||
|
|
||||||
If you want to migrate chatmail from an old machine
|
If you want to migrate chatmail from an old machine
|
||||||
@@ -290,9 +350,9 @@ to make sure you can connect with SSH.
|
|||||||
5. Now, point DNS to the new IP addresses.
|
5. Now, point DNS to the new IP addresses.
|
||||||
|
|
||||||
You can already remove the old IP addresses from DNS.
|
You can already remove the old IP addresses from DNS.
|
||||||
Existing Delta Chat users will still be able to connect
|
Existing Chatmail app users or bots will still be able to connect
|
||||||
to the old server, send and receive messages,
|
to the old server, send and receive messages,
|
||||||
but new users will fail to create new profiles
|
but new ones will fail to create new profiles
|
||||||
with your chatmail server.
|
with your chatmail server.
|
||||||
|
|
||||||
If other servers try to deliver messages to your new server they will fail,
|
If other servers try to deliver messages to your new server they will fail,
|
||||||
|
|||||||
@@ -196,7 +196,9 @@ class BeforeQueueHandler:
|
|||||||
return error
|
return error
|
||||||
logging.info("re-injecting the mail that passed checks")
|
logging.info("re-injecting the mail that passed checks")
|
||||||
client = SMTPClient("localhost", self.config.postfix_reinject_port)
|
client = SMTPClient("localhost", self.config.postfix_reinject_port)
|
||||||
client.sendmail(envelope.mail_from, envelope.rcpt_tos, envelope.content)
|
client.sendmail(
|
||||||
|
envelope.mail_from, envelope.rcpt_tos, envelope.original_content
|
||||||
|
)
|
||||||
return "250 OK"
|
return "250 OK"
|
||||||
|
|
||||||
def check_DATA(self, envelope):
|
def check_DATA(self, envelope):
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ def _configure_opendkim(domain: str, dkim_selector: str = "dkim") -> bool:
|
|||||||
server.shell(
|
server.shell(
|
||||||
name="Generate OpenDKIM domain keys",
|
name="Generate OpenDKIM domain keys",
|
||||||
commands=[
|
commands=[
|
||||||
f"opendkim-genkey -D /etc/dkimkeys -d {domain} -s {dkim_selector}"
|
f"/usr/sbin/opendkim-genkey -D /etc/dkimkeys -d {domain} -s {dkim_selector}"
|
||||||
],
|
],
|
||||||
_use_su_login=True,
|
_use_su_login=True,
|
||||||
_su_user="opendkim",
|
_su_user="opendkim",
|
||||||
@@ -228,7 +228,6 @@ def _configure_opendkim(domain: str, dkim_selector: str = "dkim") -> bool:
|
|||||||
)
|
)
|
||||||
need_restart |= service_file.changed
|
need_restart |= service_file.changed
|
||||||
|
|
||||||
|
|
||||||
return need_restart
|
return need_restart
|
||||||
|
|
||||||
|
|
||||||
@@ -275,7 +274,18 @@ def _configure_postfix(config: Config, debug: bool = False) -> bool:
|
|||||||
)
|
)
|
||||||
need_restart |= master_config.changed
|
need_restart |= master_config.changed
|
||||||
|
|
||||||
header_cleanup = files.put(
|
incoming_header_cleanup = files.put(
|
||||||
|
src=importlib.resources.files(__package__).joinpath(
|
||||||
|
"postfix/incoming_header_cleanup"
|
||||||
|
),
|
||||||
|
dest="/etc/postfix/incoming_header_cleanup",
|
||||||
|
user="root",
|
||||||
|
group="root",
|
||||||
|
mode="644",
|
||||||
|
)
|
||||||
|
need_restart |= incoming_header_cleanup.changed
|
||||||
|
|
||||||
|
submission_header_cleanup = files.put(
|
||||||
src=importlib.resources.files(__package__).joinpath(
|
src=importlib.resources.files(__package__).joinpath(
|
||||||
"postfix/submission_header_cleanup"
|
"postfix/submission_header_cleanup"
|
||||||
),
|
),
|
||||||
@@ -284,7 +294,7 @@ def _configure_postfix(config: Config, debug: bool = False) -> bool:
|
|||||||
group="root",
|
group="root",
|
||||||
mode="644",
|
mode="644",
|
||||||
)
|
)
|
||||||
need_restart |= header_cleanup.changed
|
need_restart |= submission_header_cleanup.changed
|
||||||
|
|
||||||
# Login map that 1:1 maps email address to login.
|
# Login map that 1:1 maps email address to login.
|
||||||
login_map = files.put(
|
login_map = files.put(
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
"acme-enter-email": "{{ email }}"
|
"acme-enter-email": "{{ email }}"
|
||||||
"acme-agreement:https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf": true
|
"acme-agreement:https://letsencrypt.org/documents/LE-SA-v1.5-February-24-2025.pdf": true
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# delete already seen big mails after 7 days, in the INBOX
|
||||||
|
2 0 * * * vmail find {{ config.mailboxes_dir }} -path '*/cur/*' -mtime +7 -size +200k -type f -delete
|
||||||
# delete all mails after {{ config.delete_mails_after }} days, in the Inbox
|
# delete all mails after {{ config.delete_mails_after }} days, in the Inbox
|
||||||
2 0 * * * vmail find {{ config.mailboxes_dir }} -path '*/cur/*' -mtime +{{ config.delete_mails_after }} -type f -delete
|
2 0 * * * vmail find {{ config.mailboxes_dir }} -path '*/cur/*' -mtime +{{ config.delete_mails_after }} -type f -delete
|
||||||
# or in any IMAP subfolder
|
# or in any IMAP subfolder
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ Description=mtail
|
|||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
ExecStart=/bin/sh -c "journalctl -f -o short-iso -n 0 | /usr/bin/mtail --address={{ address }} --port={{ port }} --progs /etc/mtail --logtostderr --logs -"
|
ExecStart=/bin/sh -c "journalctl -f -o short-iso -n 0 | /usr/bin/mtail --address={{ address }} --port={{ port }} --progs /etc/mtail --logtostderr --logs /dev/stdin"
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
|
|||||||
@@ -46,10 +46,7 @@ http {
|
|||||||
|
|
||||||
server {
|
server {
|
||||||
|
|
||||||
listen 8443 ssl default_server;
|
listen 127.0.0.1:8443 ssl default_server;
|
||||||
{% if not disable_ipv6 %}
|
|
||||||
listen [::]:8443 ssl default_server;
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
root /var/www/html;
|
root /var/www/html;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
/^DKIM-Signature:/ IGNORE
|
||||||
@@ -21,6 +21,9 @@ smtpd_tls_security_level=may
|
|||||||
|
|
||||||
smtp_tls_CApath=/etc/ssl/certs
|
smtp_tls_CApath=/etc/ssl/certs
|
||||||
smtp_tls_security_level=verify
|
smtp_tls_security_level=verify
|
||||||
|
# Send SNI extension when connecting to other servers.
|
||||||
|
# <https://www.postfix.org/postconf.5.html#smtp_tls_servername>
|
||||||
|
smtp_tls_servername = hostname
|
||||||
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
|
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
|
||||||
smtp_tls_policy_maps = inline:{nauta.cu=may}
|
smtp_tls_policy_maps = inline:{nauta.cu=may}
|
||||||
smtpd_tls_protocols = >=TLSv1.2
|
smtpd_tls_protocols = >=TLSv1.2
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ submission inet n - y - 5000 smtpd
|
|||||||
-o milter_macro_daemon_name=ORIGINATING
|
-o milter_macro_daemon_name=ORIGINATING
|
||||||
-o smtpd_client_connection_count_limit=1000
|
-o smtpd_client_connection_count_limit=1000
|
||||||
-o smtpd_proxy_filter=127.0.0.1:{{ config.filtermail_smtp_port }}
|
-o smtpd_proxy_filter=127.0.0.1:{{ config.filtermail_smtp_port }}
|
||||||
-o cleanup_service_name=authclean
|
|
||||||
smtps inet n - y - 5000 smtpd
|
smtps inet n - y - 5000 smtpd
|
||||||
-o syslog_name=postfix/smtps
|
-o syslog_name=postfix/smtps
|
||||||
-o smtpd_tls_wrappermode=yes
|
-o smtpd_tls_wrappermode=yes
|
||||||
@@ -50,10 +49,10 @@ smtps inet n - y - 5000 smtpd
|
|||||||
-o smtpd_client_connection_count_limit=1000
|
-o smtpd_client_connection_count_limit=1000
|
||||||
-o milter_macro_daemon_name=ORIGINATING
|
-o milter_macro_daemon_name=ORIGINATING
|
||||||
-o smtpd_proxy_filter=127.0.0.1:{{ config.filtermail_smtp_port }}
|
-o smtpd_proxy_filter=127.0.0.1:{{ config.filtermail_smtp_port }}
|
||||||
-o cleanup_service_name=authclean
|
|
||||||
#628 inet n - y - - qmqpd
|
#628 inet n - y - - qmqpd
|
||||||
pickup unix n - y 60 1 pickup
|
pickup unix n - y 60 1 pickup
|
||||||
cleanup unix n - y - 0 cleanup
|
cleanup unix n - y - 0 cleanup
|
||||||
|
-o header_checks=regexp:/etc/postfix/incoming_header_cleanup
|
||||||
qmgr unix n - n 300 1 qmgr
|
qmgr unix n - n 300 1 qmgr
|
||||||
#qmgr unix n - n 300 1 oqmgr
|
#qmgr unix n - n 300 1 oqmgr
|
||||||
tlsmgr unix - - y 1000? 1 tlsmgr
|
tlsmgr unix - - y 1000? 1 tlsmgr
|
||||||
@@ -81,6 +80,7 @@ filter unix - n n - - lmtp
|
|||||||
# Local SMTP server for reinjecting filered mail.
|
# Local SMTP server for reinjecting filered mail.
|
||||||
localhost:{{ config.postfix_reinject_port }} inet n - n - 10 smtpd
|
localhost:{{ config.postfix_reinject_port }} inet n - n - 10 smtpd
|
||||||
-o syslog_name=postfix/reinject
|
-o syslog_name=postfix/reinject
|
||||||
|
-o smtpd_milters=unix:opendkim/opendkim.sock
|
||||||
-o cleanup_service_name=authclean
|
-o cleanup_service_name=authclean
|
||||||
|
|
||||||
# Cleanup `Received` headers for authenticated mail
|
# Cleanup `Received` headers for authenticated mail
|
||||||
@@ -89,5 +89,10 @@ localhost:{{ config.postfix_reinject_port }} inet n - n -
|
|||||||
# We do not do this for received mails
|
# We do not do this for received mails
|
||||||
# as this will break DKIM signatures
|
# as this will break DKIM signatures
|
||||||
# if `Received` header is signed.
|
# if `Received` header is signed.
|
||||||
|
#
|
||||||
|
# This service also rewrites
|
||||||
|
# Subject with `[...]`
|
||||||
|
# to make sure the users
|
||||||
|
# cannot send unprotected Subject.
|
||||||
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
|
||||||
|
|||||||
Reference in New Issue
Block a user