Emailserver mit Postfix und Dovecot

From Linuxwiki
Revision as of 10:33, 9 January 2023 by Sunflower (talk | contribs) (→‎TLS)
Jump to navigation Jump to search

Postfix

Postfix ist ein MTA (Mail Transfer Agent), der eine gute Alternative zu anderen gängigen MTAs (Sendmail, Exim) darstellt, da seine Konfiguration gut lesbar ist. In unserem Beispiel soll der MTA mit einem IMAPd (Dovecot) verknüpft werden, so dass Benutzer eine Mailbox direkt auf dem System haben. Das Abholen der Mails erfolgt per IMAPs.

Installation

Zunächst muss das Paket „postfix“ installiert werden. Dabei sind noch ein paar Fragen zu beantworten:

  • Art des Servers: Internet Site
  • Root and postmaster mail recipient: ein Postfach eintragen, z.B.postmaster@example.de
  • Other destinations to accept mail for (blank for none): z.B. mail.example.de, localhost, $mydomain (kann man erstmal die defaults belassen)
  • Force synchronous updates on mail queue: no
  • Local subnets: 127.0.0.1/8, 192.168.63.0/24 (hier das eigene Netz ergänzen)
  • Mailbox size limit: 0 (unbegrenzt)
  • Local address extension character: + (i.a. als default ausreichend)
  • Internet protocols to use: all (wenn man nicht explizit ipv4 oder ipv6 sprechen will)

Diese Einstellungen lassen sich jederzeit mit

 # dpkg-reconfigure postfix

ändern.

Danach befinden sich alle relevanten Dateien im Verzeichnis /etc/postfix.

Konfiguration

Bevor wir zur Postfixconfig kommen, überprüfen wir den Inhalt der Datei /etc/mailname:

 $ cat /etc/mailname

Dort darf nur der Domainname stehen, nicht der Hostname (e.g. example.com). Andernfalls kann das Auswirkungen auf den Emailversand haben, v.a. wenn in der main.cf (s.u.) auf die Datei referenziert wird.

Die wichtigeste Datei zum Anpassen ist zunächst die main.cf. Hier ein Beispiel für den Server „mx“ in der Domain example.de. Folgende Parameter sollten konfiguriert sein (exemplarisch):

 myhostname
 mydomain
 myorigin
 mydestination

Meistens gibt es schon ein paar brauchbare defaults. Der Parameter mynetworks erlaubt es bestimmten Netzen, Emails ohne weitere Einschränkungen einzuliefern.

Beispielconfig:

myhostname = mx01.example.de 
mydomain = example.de 
myorigin = $mydomain 
mydestination = $myhostname, localhost, localhost.$mydomain
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.99.0/24 [2001:780:11b::/48] 214.94.24.154 [2004:780:8:0:5ff0:c5ff:fe09:98f9]

Vor allem der Parameter mynetworks sollte mit Bedacht gewählt werden, denn dies sind alle Hosts und Netze, von denen jegliche Emails angenommen werden (auch von und nach Fremddomains). Fehlkonfigurationen führen hier schnell zum OpenRelay.

Beachte: ipv6-Adressen müssen in [eckigen Klammern] geschrieben werden, sonst werden keine Emails ausgeliefert! Fehler im Logfile:

postfix/smtpd[21928]: warning: smtpd_client_event_limit_exceptions: 2a01:40f8:c013:5050::0/64: table lookup problem

Nach jeder Änderung ist der Dienst zu reloaden mit dem Befehl

 # postfix reload

Ob der Restart ordentlich funktioniert hat, kann man z.B. anhand des Logs überprüfen:

 # tail /var/log/mail.log

master.cf

Das Kernstück des Postfixdaemons. Hier werden die Transports festgelegt Bedeutung der Spalten:

  • service-Feld: Name des Dienstes (smtp, local, procmail, ...) (str)
  • typ-Feld: Verbindungstyp (inet, fifo, unix) (str)
  • Zugriffsrecht: Zugriff auch für externe Programme (default: y) (bool)
  • unpriv-Feld: Start als unprivilegierter Benutzer (default: y) oder root (n) (bool)
  • chroot: Soll der Dienst in einer chroot-Umgebung gestartet werden (default: y) (bool)
  • wakeup-Feld: Sekunden zwischen 2 Aufrufen (default: 0) (int)
  • Prozessmaximum: Wie viele Prozesse maximal gleichzeitig (default: 50) (int)

Danach erfolgt ein Kommando mit Flags und Parametern (optional).

TLS

Optional kann man mit Zertifikaten verschlüsselte Übertragung von Emails konfigurieren. das funktioniert aber nur dann, wenn der Mailserver der Gegenstelle das Zertifikat auch einbindet. Man kann das Zertifikat auch in einen Mailclient einbinden (s. später). Die Zertifikatserzeugung kann mit mit letsencrypt erfolgen. Clients zur Zertifikatserzeugung sind certbot oder dehydrated

Dovecot

Erweiterungen

Postgrey