mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2026-11-13 13:31:31 +00:00
Production-ready fullstack but simple mail server (SMTP, IMAP, LDAP, Antispam, Antivirus, etc.) running inside a container.
https://docker-mailserver.github.io/docker-mailserver/latest/
antispam
antivirus
container
docker
dovecot
fail2ban
imap
kubernetes
ldap
mail
mailserver
postfix
rspamd
smtp
- Shell 97.1%
- Dockerfile 1.7%
- Makefile 0.5%
- Python 0.3%
- PHP 0.2%
- Other 0.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
`_setup_docker_permit` always parsed an IPv4 address from `NETWORK_INTERFACE` and aborted startup when there was none, even for the default `PERMIT_DOCKER=none`, which does not need it. DMS therefore failed to start in IPv6-only networks. Replace `PERMIT_DOCKER` with `DMS_TRUSTED_NETWORKS`, which no longer implies Docker, carries the `DMS_` prefix and supports IPv6: - `none` (default): trust no client - `host`, `subnet`: delegate to Postfix `mynetworks_style`, so no `ip addr` parsing is needed - a list of CIDR ranges (IPv4 and IPv6, separated by spaces or commas) The ranges Postfix derives or the user provides are normalized (lower case, compressed IPv6, host bits masked) before they are added to the OpenDKIM and OpenDMARC trust lists, as both only match that text form. An invalid value now stops the startup instead of being cleared with a warning. `NETWORK_INTERFACE` is removed together with `helpers/network.sh`. `PERMIT_DOCKER` and `NETWORK_INTERFACE` log an error when still set and are ignored, so no client is trusted until the user migrates: - `container` => `host` - `host`, `connected-networks` => `subnet` - `network` => `172.16.0.0/12` (or the exact range of the network) - docs: document `DMS_TRUSTED_NETWORKS` with a migration table and update all pages and demo setups that used the old variables - tests: add `trusted_networks.bats` (no IPv4 address, `host`, CIDR list, invalid value, legacy variables), rename `permit_docker.bats` and migrate all tests to the new variable - changelog: add `Breaking` and `Fixed` entries Closes #4634 Closes #3478 |
||
| .github | ||
| config-examples | ||
| demo-setups | ||
| docs | ||
| target | ||
| test | ||
| .dockerignore | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CODE_OF_CONDUCT.md | ||
| compose.yaml | ||
| Dockerfile | ||
| LICENSE | ||
| mailserver.env | ||
| Makefile | ||
| README.md | ||
| SECURITY.md | ||
| setup.sh | ||
Docker Mailserver
📃 About
A production-ready fullstack but simple containerized mail server (SMTP, IMAP, LDAP, Anti-spam, Anti-virus, etc.).
- Only configuration files, no SQL database. Keep it simple and versioned. Easy to deploy and upgrade.
- Originally created by @tomav, this project is now maintained by volunteers since January 2021.
Tip
Be sure to read our documentation. It provides guidance on initial setup of your mail server.
Important
If you have issues, please search through the documentation for your version before opening an issue.
The issue tracker is for issues, not for personal support.
Make sure the version of the documentation matches the image version you're using!
🔗 Links to Useful Resources
📦 Included Services
- Postfix with SMTP or LDAP authentication and support for extension delimiters
- Dovecot with SASL, IMAP, POP3, LDAP, basic Sieve support and quotas
- Rspamd
- Amavis
- SpamAssassin supporting custom rules
- ClamAV with automatic updates
- OpenDKIM & OpenDMARC
- Fail2ban
- Fetchmail
- Getmail6
- Postscreen
- Postgrey
- Support for LetsEncrypt, manual and self-signed certificates
- A setup script for easy configuration and maintenance
- SASLauthd with LDAP authentication
- OAuth2 authentication (via
XOAUTH2orOAUTHBEARERSASL mechanisms)