Zpět na domů

Mailu v Kubernetes: nastavení poštovního serveru pro vývojáře

Článek popisuje proces nasazení poštovního serveru Mailu v clusteru Kubernetes s využitím Helm. Jsou zde popsány příprava DNS záznamů, nastavení síťových politik, řešení problémů s TLS a konfigurace DKIM, DMARC, SPF pro zajištění doručení pošty.

Jak nasadit Mailu v Kubernetes: kompletní průvodce
Advertisement 728x90

Nasazení poštovního serveru Mailu v Kubernetes: praktický průvodce

Mailu je kontejnerizovaný poštovní server optimalizovaný pro prostředí Docker a Kubernetes. Na rozdíl od tradičních řešení založených na Postfix a Dovecot vyžaduje jeho nasazení minimální úsilí při konfiguraci, což ho činí atraktivním pro domácí laboratoře a testovací prostředí. Tento průvodce popisuje proces instalace Mailu v clusteru Kubernetes s využitím Helm, konfiguraci síťových politik, DNS záznamů a zajištění bezpečnosti.

Příprava infrastruktury a DNS

Před instalací Mailu je nutné provést několik povinných kroků přípravy infrastruktury. Za prvé je potřeba mít doménu s možností správy DNS záznamů. Jako příklad se používá doména yourdomain.ru. Za druhé je nezbytná "bílá" IP adresa (např. 1.2.3.4), pro kterou musí poskytovatel internetu nastavit reverzní (PTR) záznam. Bez PTR mnoho poštovních služeb odmítne zprávy jako spam.

Klíčové DNS záznamy, které je třeba vytvořit:

Google AdInline article slot
  • Záznam typu A: mail.yourdomain.ru → 1.2.3.4
  • MX záznam: @ → mail.yourdomain.ru

Po nastavení DNS ověřte, že příkaz nslookup 1.2.3.4 vrací mail.yourdomain.ru. To potvrdí správnost PTR záznamu.

Konfigurace Kubernetes a nasazení Mailu

Pro izolaci poštovního serveru a minimalizaci potenciálních bezpečnostních hrozeb se doporučuje vytvořit samostatný namespace. V tomto příkladu se používá dmz-mailu. Ihned po vytvoření namespace aplikujte síťovou politiku, která blokuje veškerý příchozí a odchozí provoz ve výchozím nastavení, povoluje pouze potřebné porty.

Příklad síťové politiky (network-policy-dmz-mail.yaml):

Google AdInline article slot
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-dmz-mail-deny
  namespace: dmz-mail
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-mailu-ports
  namespace: dmz-mail
spec:
  podSelector: {}
  egress:
    - to:
      - namespaceSelector:
          matchLabels:
            kubernetes.io/metadata.name: kube-system
      ports:
      - protocol: UDP
        port: 53
      - protocol: TCP
        port: 25
      - protocol: TCP
        port: 465

Dále přidejte repozitář Mailu do Helm a připravte soubor values.yaml. Minimální konfigurace zahrnuje nastavení domény, časového pásma, počátečního účtu správce, parametrů úložiště a síťových rozhraní. Je důležité správně specifikovat StorageClass odpovídající vaší infrastruktuře.

Základní parametry values.yaml:

  • hostnames: ["mail.yourdomain.ru"]
  • domain: yourdomain.ru
  • initialAccount pro vytvoření správce
  • Nastavení PostgreSQL nebo MariaDB
  • Parametry persistence (např. size: 50Gi)
  • Konfigurace Ingress s anotacemi pro cert-manager
  • Nastavení frontendu s typem LoadBalancer

Po nastavení values.yaml proveďte instalaci chartu:

Google AdInline article slot
helm install mailu mailu/mailu -n dmz-mailu --values mailu_values.yaml

Řešení problémů s TLS a další konfigurace

Kvůli specifikám práce Mailu s TLS může dojít k chybě SSL při použití Ingress. Jako alternativní řešení se navrhuje vytvořit samostatný Service typu LoadBalancer pro frontend. To umožňuje vystavit webové rozhraní na samostatnou IP adresu, čímž se vyhne konfliktům s ukončením TLS na Ingress.

Příklad manifestu svc-mailu-front-web.yaml:

apiVersion: v1
kind: Service
metadata:
  name: svc-mailu-front-web
  namespace: dmz-mail
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app.kubernetes.io/component: front
    app.kubernetes.io/instance: mailu
    app.kubernetes.io/name: mailu
  type: LoadBalancer
  loadBalancerIP: 192.168.10.201

Po aplikaci tohoto Service je nutné spojit záznam mail-local.yourdomain.ru s odpovídající IP adresou v lokálním DNS nebo souboru hosts. Také je třeba přesměrovat port 25 ze síťové brány na loadBalancerIP uvedený v values.yaml, aby se zajistil příjem příchozí pošty.

Nastavení DKIM, DMARC a SPF

Pro zajištění doručení zpráv na externí poštovní služby (jako je Gmail nebo Seznam.cz) je nutné nastavit DKIM, DMARC a SPF. Tyto autentizační mechanismy pomáhají potvrdit legitimitu odesílatele a snižují pravděpodobnost zařazení zpráv do spamu.

Postup nastavení:

  • Ve webovém rozhraní správce Mailu přejděte do sekce AdministrationMail Domains → vyberte vaši doménu → Upravit.
  • Klepněte na Generate Keys v pravém horním rohu.
  • Zkopírujte vygenerované TXT záznamy pro DKIM, DMARC a SPF do DNS vaší domény.
  • Počkejte na rozšíření DNS záznamů (může trvat až 48 hodin).

Správnost nastavení ověřte pomocí nástrojů jako mxtoolbox.com. Po úspěšném ověření můžete testovat odesílání zpráv na externí adresy. První zprávy mohou skončit ve složce "Spam", proto se doporučuje kontrolovat nevyžádanou poštu.

Optimalizace výkonu a zabezpečení

Mailu zahrnuje několik dalších komponent, které lze vypnout pro úsporu zdrojů nebo zjednodušení konfigurace. Například ClamAV (antivirus), OleTools (analyzátor kancelářských souborů) a Tika (zpracovatel metadat) nejsou pro základní fungování poštovního serveru povinné. Lze je vypnout v values.yaml nastavením příslušných parametrů na false.

Doporučená nastavení pro domácí použití:

  • clamav: false
  • oletools: false
  • tika: false

Rspamd (systém filtrování spamu) by měl zůstat zapnutý, protože zpracovává příchozí a odchozí poštu.

Co je důležité

  • Přítomnost PTR záznamu pro "bílou" IP adresu je kritická pro doručení pošty.
  • Použití samostatného namespace a síťových politik zvyšuje bezpečnost nasazení.
  • Problémy s TLS mezi Ingress a Mailu lze řešit prostřednictvím samostatného Service typu LoadBalancer.
  • Nastavení DKIM, DMARC a SPF je povinné pro odesílání zpráv na externí poštovní služby.
  • Vypnutí volitelných komponent (ClamAV, OleTools, Tika) snižuje spotřebu zdrojů.

— Editorial Team

Advertisement 728x90

Číst dál