feat: add Mailpit SMTP relay and migrate all services

- Add Mailpit service to NET stack with web UI at mailpit.pivoine.art
- Configure Mailpit to relay all emails through IONOS SMTP
- Migrate all 11+ services to use Mailpit instead of direct IONOS SMTP:
  * SEXY: Directus API
  * UTIL: Joplin, Mattermost, Vaultwarden, Tandoor, Linkwarden
  * DEV: Gitea, n8n, Asciinema
  * AI: Open WebUI
  * NET: Netdata (via msmtp)
- Centralize SMTP credentials in mailpit-relay.yaml
- Simplify service configs (no auth/TLS for internal SMTP)
- Enable email monitoring via Mailpit web UI with Basic Auth

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-15 18:34:38 +01:00
parent 5bc790b79b
commit 51267cc674
8 changed files with 90 additions and 58 deletions

View File

@@ -54,11 +54,9 @@ services:
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
MAILER_ENABLED: 1
MAILER_HOST: ${EMAIL_SMTP_HOST}
MAILER_PORT: ${EMAIL_SMTP_PORT}
MAILER_SECURE: 1
MAILER_AUTH_USER: ${EMAIL_SMTP_USER}
MAILER_AUTH_PASSWORD: ${EMAIL_SMTP_PASSWORD}
MAILER_HOST: net_mailpit
MAILER_PORT: 1025
MAILER_SECURE: 0
MAILER_NOREPLY_NAME: Joplin Server
MAILER_NOREPLY_EMAIL: ${EMAIL_FROM}
networks:
@@ -97,7 +95,7 @@ services:
BASE_URL: https://${UTIL_LINKS_TRAEFIK_HOST}
NEXT_PUBLIC_EMAIL_PROVIDER: true
EMAIL_FROM: ${EMAIL_FROM}
EMAIL_SERVER: ${LINKS_EMAIL_SERVER}
EMAIL_SERVER: smtp://net_mailpit:1025
volumes:
- linkwarden_data:/data/data
depends_on:
@@ -156,12 +154,10 @@ services:
MM_SERVICESETTINGS_SITEURL: https://${UTIL_MATTERMOST_TRAEFIK_HOST}
MM_SERVICESETTINGS_ENABLELOCALMODE: "true"
# Email settings
MM_EMAILSETTINGS_ENABLESMTPAUTH: "true"
MM_EMAILSETTINGS_SMTPUSERNAME: ${EMAIL_SMTP_USER}
MM_EMAILSETTINGS_SMTPPASSWORD: ${EMAIL_SMTP_PASSWORD}
MM_EMAILSETTINGS_SMTPSERVER: ${EMAIL_SMTP_HOST}
MM_EMAILSETTINGS_SMTPPORT: ${EMAIL_SMTP_PORT}
MM_EMAILSETTINGS_CONNECTIONSECURITY: TLS
MM_EMAILSETTINGS_ENABLESMTPAUTH: "false"
MM_EMAILSETTINGS_SMTPSERVER: net_mailpit
MM_EMAILSETTINGS_SMTPPORT: 1025
MM_EMAILSETTINGS_CONNECTIONSECURITY: ""
MM_EMAILSETTINGS_FEEDBACKNAME: Mattermost
MM_EMAILSETTINGS_FEEDBACKEMAIL: ${EMAIL_FROM}
MM_EMAILSETTINGS_REPLYTOADDRESS: ${EMAIL_FROM}
@@ -200,13 +196,11 @@ services:
SIGNUPS_ALLOWED: ${UTIL_VAULT_SIGNUPS_ALLOWED:-false}
INVITATIONS_ALLOWED: ${UTIL_VAULT_INVITATIONS_ALLOWED:-true}
SHOW_PASSWORD_HINT: ${UTIL_VAULT_SHOW_PASSWORD_HINT:-false}
SMTP_HOST: ${EMAIL_SMTP_HOST}
SMTP_HOST: net_mailpit
SMTP_FROM: ${EMAIL_FROM}
SMTP_FROM_NAME: Vaultwarden
SMTP_SECURITY: force_tls
SMTP_PORT: ${EMAIL_SMTP_PORT}
SMTP_USERNAME: ${EMAIL_SMTP_USER}
SMTP_PASSWORD: ${EMAIL_SMTP_PASSWORD}
SMTP_SECURITY: off
SMTP_PORT: 1025
networks:
- compose_network
labels:
@@ -248,12 +242,10 @@ services:
REVERSE_PROXY_AUTH: ${UTIL_TANDOOR_REVERSE_PROXY_AUTH:-0}
# Email configuration (IONOS SMTP)
EMAIL_HOST: ${EMAIL_SMTP_HOST}
EMAIL_PORT: ${EMAIL_SMTP_PORT}
EMAIL_HOST_USER: ${EMAIL_SMTP_USER}
EMAIL_HOST_PASSWORD: ${EMAIL_SMTP_PASSWORD}
EMAIL_USE_TLS: ${UTIL_TANDOOR_EMAIL_USE_TLS:-0}
EMAIL_USE_SSL: ${UTIL_TANDOOR_EMAIL_USE_SSL:-1}
EMAIL_HOST: net_mailpit
EMAIL_PORT: 1025
EMAIL_USE_TLS: 0
EMAIL_USE_SSL: 0
DEFAULT_FROM_EMAIL: ${EMAIL_FROM}
# Gunicorn settings