Skip to content
Thilo Fromm edited this page May 3, 2023 · 22 revisions

Set up the mail server

To get started, you'll need an internet-connected server as well as a DNS name pointing to it. DNS is a requirement for getting letsencrypt certificates.

See the set-up instructions for more.

Operate the mail server

Operations docs include day-to-day tasks like adding and removing users, managing aliases, changing users' passwords etc. It also includes backup and restore instructions, and there's a section on importing existing mailboxes. The documentation covers location of the service configuration files and mailboxes, and renewing letsencrypt certificates. See the operations instructions for details.

Mail client settings

The server supports plain SMTP (enforces STARTTLS), SMTP over SSL, IMAP, and IMAP over SSL.

  • The server name (for both sending and receiving) is HOSTNAME.
  • SMTP:
    • Port 25 w/ STARTTLS
    • Port 465 w/ SSL/TLS
  • IMAP:
    • Port 143 (STARTTLS)
    • Port 993 w/ SSL/TLS

Either "plain" or "login" login is supported. Username is the full user@domain name supplied to user.sh add .... Password is the password provided (or generated).

Mailserver architecture

The Mailserver includes pre-configured services:

  • Postfix for handling SMTP[S]
  • Dovecot for IMAP[S]
  • Caddy for HTTP (letsencrypt) and optionally HTTPS for monitoring / Grafana
  • Fail2ban for monitoring Postfix, Dovecot, and (optionally) Grafana logs. Fail2ban runs inside the Mailserver container in a separate network namespace and therefore should not affect connections on the Host.

More details are available on the Mailserver architecture page.

Monitoring suite

The Mailserver ships with a comprehensive monitoring suite to monitor all included services. The suite uses stock Grafana and Prometheus containers and wires these up to the mailserver container. A Pushserver is included to allow the mailserver container to publish additional statistics from a script.

A number of pre-configured dashboards for all services as well as a "home" dashboard with selected metrics from all services are shipped and provisioned to the Grafana container.

More details at the monitoring page.

Issues and Workarounds

Contributing

Check out the repository layout to get started. If you'd like to work on a feature please state so in the corresponding feature issue. Please create a new issue if none exists for the feature you're aiming to implement.

Build the container

A Dockerfile is provided with this repo. (Re-)Build the container by issuing

$ docker build -t myemailserver .

Then update start_mailserver.sh and replace ghcr.io/t-lo/mailserver with myemailserver (or any other tag you've used in the docker build command above). Start your build:

./start_mailserver.sh