{"id":17846487,"url":"https://github.com/technicalguru/docker-mailserver","last_synced_at":"2025-04-02T15:41:17.048Z","repository":{"id":41841517,"uuid":"256316754","full_name":"technicalguru/docker-mailserver","owner":"technicalguru","description":"Main mailserver project to compose various containers","archived":false,"fork":false,"pushed_at":"2024-12-18T10:16:58.000Z","size":86,"stargazers_count":21,"open_issues_count":0,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-02-08T06:31:01.181Z","etag":null,"topics":["amavisd","clamav","clamav-antivirus","dovecot","dovecot-docker","email","email-platform","postfix","postfix-docker","postfixadmin","postfixadmin-docker","roundcube","roundcube-docker","roundcube-webmail","roundcubemail","spamassassin"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/technicalguru.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-16T19:58:25.000Z","updated_at":"2025-01-06T19:57:13.000Z","dependencies_parsed_at":"2024-12-15T08:41:42.506Z","dependency_job_id":"8c6df8e0-c481-4de4-a50a-51893d46d8ff","html_url":"https://github.com/technicalguru/docker-mailserver","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalguru%2Fdocker-mailserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalguru%2Fdocker-mailserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalguru%2Fdocker-mailserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technicalguru%2Fdocker-mailserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/technicalguru","download_url":"https://codeload.github.com/technicalguru/docker-mailserver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246847052,"owners_count":20843438,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amavisd","clamav","clamav-antivirus","dovecot","dovecot-docker","email","email-platform","postfix","postfix-docker","postfixadmin","postfixadmin-docker","roundcube","roundcube-docker","roundcube-webmail","roundcubemail","spamassassin"],"created_at":"2024-10-27T21:40:03.299Z","updated_at":"2025-04-02T15:41:17.021Z","avatar_url":"https://github.com/technicalguru.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# docker-mailserver\nThis is a project that aims at putting a mailserver into Docker containers. The obvious reason is \nthat a good mailserver setup requires time and effort. And even when you have it installed on \none server, you will need to migrate it sooner or later to another server or upgrade \ncomponents of it. Why not locking the whole mailserver into a defined setup that can be moved easily\nfrom one server to the next or from one Kubernetes cluster to the other.\n\nThis project tries to fulfill this goal by providing the appropriate Docker images and their respective\nconfiguration scripts.\n\n# Features\n* A complete SMTP mailserver using TLS, DKIM, SPF and other modern capabilities\n* Administrating domains and mailboxes via a Web UI\n* Scanning incoming and outgoing e-mails for viruses and spam\n* Moves spam into Spam folder of your mailbox automatically (when spam recognition is on)\n* User-specific sieve rules enabled\n* Reading and writing e-mails from anywhere in the world using a Web UI\n* Maintaining all meta information in a database instead of files\n\n# Sub-projects\n\n* [docker-mailserver-postfix](https://github.com/technicalguru/docker-mailserver-postfix) - Postfix/Dovecot image (mailserver component)\n* [docker-mailserver-opendkim](https://github.com/technicalguru/docker-mailserver-opendkim) - OpenDKIM image (DKIM signing milter component)\n* [docker-mailserver-postfixadmin](https://github.com/technicalguru/docker-mailserver-postfixadmin) - Image for PostfixAdmin (Web UI to manage mailboxes and domain in Postfix)\n* [docker-mailserver-amavis](https://github.com/technicalguru/docker-mailserver-amavis) - Amavis, ClamAV and SpamAssassin (provides spam and virus detection)\n* [docker-mailserver-roundcube](https://github.com/technicalguru/docker-mailserver-roundcube) - Roundcube Webmailer\n\n# Versions\nThe following versions are available as releases. Sub-projects have their own lifecycle.\n\n* [3.0.1, 3.0, 3, latest](https://github.com/technicalguru/docker-mailserver/tree/v3.0.1)\n* [1.3.0, 1.3, 1](https://github.com/technicalguru/docker-mailserver/tree/v1.3.0)\n* [1.2.0, 1.2](https://github.com/technicalguru/docker-mailserver/tree/v1.2.0)\n* [1.1.1, 1.1](https://github.com/technicalguru/docker-mailserver/tree/v1.1.1)\n* [1.0.0, 1.0](https://github.com/technicalguru/docker-mailserver/tree/v1.0.0)\n\n# License\n_docker-mailserver_  is licensed under [GNU LGPL 3.0](LICENSE.md).\n\n# How to create your mailserver\nA complete mailserver is the coordinated setup of multiple components. Various docker images come into play to fulfill this goal. You shall set them up in the following order:\n\n1. [MySQL \u003e8.0](https://hub.docker.com/\\_/mysql) or [MariaDB \u003e10.4](https://hub.docker.com/\\_/mariadb) as the database backend\n1. [Postfix/Dovecot instance](https://hub.docker.com/repository/docker/technicalguru/mailserver-postfix)\n1. [OpenDKIM instance](https://github.com/technicalguru/docker-mailserver-opendkim) (optional)\n1. [Amavis/ClamAV/SpamAssassin instance](https://hub.docker.com/repository/docker/technicalguru/mailserver-amavis)\n1. [PostfixAdmin instance](https://hub.docker.com/repository/docker/technicalguru/mailserver-postfixadmin)\n1. [Roundcube](https://hub.docker.com/repository/docker/technicalguru/mailserver-roundcube)\n1. Securing the web interfaces with a Reverse Proxy or Ingress Controller. (see section \"Security Considerations\" below)\n\nThe following sections will help you to setup your own mailserver using different infrastructures.\n\n## Setup the mailserver with docker-compose\nPlease refer to the special [docker-compose](examples/docker-compose) section.\n\n## Setup the mailserver with plain Kubernetes YAML files\nPlease refer to the special [Kubernetes](examples/kubernetes) section.\n\n## Setup the mailserver with HELM charts on a Kubernetes cluster\nPlease refer to the special [HELM](examples/helm-charts) section.\n\n# Security Considerations\n\n* It is crucial that you do not expose port 10025 of the [mailserver-postfix](https://hub.docker.com/repository/docker/technicalguru/mailserver-postfix)\n  container. It can be misused as a SPAM relay as it does not restrict senders that deliver mail to it. This port is intended for\n  internal purposes only. The same is valid for the port 10024 of the [mailserver-amavis](https://hub.docker.com/repository/docker/technicalguru/mailserver-amavis)\n  container.\n* Postfix's main ports can be protected by TLS. Please make use of this as it increases security of your setup. In fact,\n  the Postfix setup was never tested thoroughly without TLS so it is possible it will not work properly - especially when\n  passwords are required.\n* PostfixAdmin, OpenDKIM and Roundcube provide Web User Interfaces that are exposed as HTTP only. An attacker could easily copy your network\n  traffic and read your passwords. Make sure you have an appropriate Ingress Controller or Reverse Proxy in front and your traffic\n  is routed internally on your host only. \n* If your internal network traffix in a Kubernetes cluster is crossing node borders, you will need to ensure that it is encrypted.\n  The default setup of these containers do not configure this. However, you can use Istio, Consul or linkerd in order to achieve\n  this goal.\n\n# Issues\nI use this composition of Docker images in a Kubernetes cluster to run my own mailserver productively. Minor issues exist at the moment (see sub-projects). \nBut it runs stable and you can be ensured I release image fixes as soon as I detect any bugs or security flaws. :).\n\n# Contribution\nReport a bug, request an enhancement or pull request at the [GitHub Issue Tracker](https://github.com/technicalguru/docker-mailserver/issues). Make sure you have checked out the [Contribution Guideline](CONTRIBUTING.md)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnicalguru%2Fdocker-mailserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechnicalguru%2Fdocker-mailserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnicalguru%2Fdocker-mailserver/lists"}