Benutzer-Werkzeuge

Webseiten-Werkzeuge


it-themen:allgemein:mailserver

Dies ist eine alte Version des Dokuments!


# Projekt: Mailserver fĂĽr nctl.de (Docker + Traefik + Mailu)

## Verzeichnisstruktur (empfohlen unter /opt/stacks/mailu)

mailu/
├── .env
├── docker-compose.yml
├── mailu.env
└── data/
    ├── mail/         # Mailspeicher
    ├── certs/        # Zertifikate
    └── db/           # MariaDB

—

### Datei: `.env`

```env DOMAIN=nctl.de HOSTNAME=mail TZ=Europe/Berlin POSTMASTER=admin@nctl.de SECRET=5e8572e2e08a4dd5a44b20d1e4d8cfa6 # Beispiel, mit `openssl rand -hex 16` erzeugen ```

—

### Datei: `mailu.env`

```env # Mailu core config ROOT=/ ADMIN=enabled WEBMAIL=snappymail TLS_FLAVOR=mail HOSTNAMES=imap.nctl.de,smtp.nctl.de,webmail.nctl.de

# Mail settings POSTMASTER=admin@nctl.de DOMAIN=nctl.de

# Authentication AUTH_RATELIMIT=10/minute;1000/day PASSWORD_SCHEME=SHA512-CRYPT

# Database DB_FLAVOR=mysql DB_HOST=db DB_USER=mailu DB_PASSWORD=secretpassword DB_NAME=mailu

# Proxies TRUSTED_PROXIES=172.0.0.0/8 ```

—

### Datei: `docker-compose.yml`

```yaml services:

redis:
  image: redis:alpine
  restart: always
  volumes:
    - "/mailu/redis:/data"
  depends_on:
    - resolver
  dns:
    - 192.168.203.254
  networks:
    - docker_backend
front:
  image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2024.06}
  restart: always
  env_file: mailu.env
  logging:
    driver: journald
    options:
      tag: mailu-front
  networks:
    - docker_backend
  volumes:
    - "/mailu/certs:/certs"
    - "/mailu/overrides/nginx:/overrides:ro"
  depends_on:
    - resolver
  dns:
    - 192.168.203.254
  labels:
    - "traefik.enable=true"
    - "traefik.http.routers.mail.rule=Host(`mail.nctl.de`)"
    - "traefik.http.routers.mail.entrypoints=websecure"
    - "traefik.http.routers.mail.tls.certresolver=letsencrypt"
resolver:
  image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-2024.06}
  env_file: mailu.env
  logging:
    driver: journald
    options:
      tag: mailu-resolver
  restart: always
  networks:
    docker_backend:
      ipv4_address: 192.168.203.254
admin:
  image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-2024.06}
  restart: always
  env_file: mailu.env
  logging:
    driver: journald
    options:
      tag: mailu-admin
  volumes:
    - "/mailu/data:/data"
    - "/mailu/dkim:/dkim"
  depends_on:
    - redis
    - resolver
  dns:
    - 192.168.203.254
  networks:
    - docker_backend
  labels:
    - "traefik.enable=true"
    - "traefik.http.routers.admin.rule=Host(`admin.nctl.de`)"
    - "traefik.http.routers.admin.entrypoints=websecure"
    - "traefik.http.routers.admin.tls.certresolver=letsencrypt"
imap:
  image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2024.06}
  restart: always
  env_file: mailu.env
  logging:
    driver: journald
    options:
      tag: mailu-imap
  volumes:
    - "/mailu/mail:/mail"
    - "/mailu/overrides/dovecot:/overrides:ro"
  networks:
    - docker_backend
  depends_on:
    - front
    - resolver
  dns:
    - 192.168.203.254
smtp:
  image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2024.06}
  restart: always
  env_file: mailu.env
  logging:
    driver: journald
    options:
      tag: mailu-smtp
  volumes:
    - "/mailu/mailqueue:/queue"
    - "/mailu/overrides/postfix:/overrides:ro"
  depends_on:
    - front
    - resolver
  dns:
    - 192.168.203.254
  networks:
    - docker_backend
oletools:
  image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}oletools:${MAILU_VERSION:-2024.06}
  hostname: oletools
  logging:
    driver: journald
    options:
      tag: mailu-oletools
  restart: always
  networks:
    - docker_backend
  depends_on:
    - resolver
  dns:
    - 192.168.203.254
antispam:
  image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-2024.06}
  hostname: antispam
  restart: always
  env_file: mailu.env
  logging:
    driver: journald
    options:
      tag: mailu-antispam
  networks:
    - docker_backend
  volumes:
    - "/mailu/filter:/var/lib/rspamd"
    - "/mailu/overrides/rspamd:/overrides:ro"
  depends_on:
    - front
    - redis
    - oletools
    - antivirus
    - resolver
  dns:
    - 192.168.203.254
antivirus:
  image: clamav/clamav-debian:1.4
  restart: always
  logging:
    driver: journald
    options:
      tag: mailu-antivirus
  networks:
    - docker_backend
  volumes:
    - "/mailu/clamav:/var/lib/clamav"
  healthcheck:
    test: ["CMD-SHELL", "kill -0 `cat /tmp/clamd.pid` && kill -0 `cat /tmp/freshclam.pid`"]
    interval: 10s
    timeout: 5s
    retries: 3
    start_period: 10s
fetchmail:
  image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}fetchmail:${MAILU_VERSION:-2024.06}
  restart: always
  env_file: mailu.env
  logging:
    driver: journald
    options:
      tag: mailu-fetchmail
  volumes:
    - "/mailu/data/fetchmail:/data"
  depends_on:
    - admin
    - smtp
    - imap
    - resolver
  dns:
    - 192.168.203.254
  networks:
    - docker_backend
webmail:
  image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}webmail:${MAILU_VERSION:-2024.06}
  restart: always
  env_file: mailu.env
  logging:
    driver: journald
    options:
      tag: mailu-webmail
  volumes:
    - "/mailu/webmail:/data"
    - "/mailu/overrides/roundcube:/overrides:ro"
  networks:
    - docker_backend
  depends_on:
    - front
  labels:
    - "traefik.enable=true"
    - "traefik.http.routers.webmail.rule=Host(`webmail.nctl.de`)"
    - "traefik.http.routers.webmail.entrypoints=websecure"
    - "traefik.http.routers.webmail.tls.certresolver=letsencrypt"

networks:

docker_backend:
  external: true

```

—

## Wichtige DNS-Einträge:

Typ Name Ziel/IP
—–——————-—————————–
A smtp.nctl.de <Server-IP>
A imap.nctl.de <Server-IP>
A webmail.nctl.de <Server-IP>
A admin.nctl.de <Server-IP>
MX @ smtp.nctl.de (Priorität 10)
TXT @ (SPF) v=spf1 mx ~all
TXT _dmarc v=DMARC1; p=none

Optional: DKIM wird von Mailu automatisch erzeugt, ĂĽber WebGUI exportierbar.

—

Fertig! Du kannst den Stack nun mit folgendem Befehl starten:

```bash cd /opt/stacks/mailu docker compose up -d ```

Die WebGUI ist danach erreichbar unter: - https://webmail.nctl.de (Webmail) - https://admin.nctl.de (Benutzerverwaltung)

it-themen/allgemein/mailserver.1753213423.txt.gz · Zuletzt geändert: von lars