Emailserver mit Postfix und Dovecot: Difference between revisions
(→TLS) |
|||
Line 84: | Line 84: | ||
== TLS == |
== 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). |
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 [https://letsencrypt.org letsencrypt] erfolgen. |
Die Zertifikatserzeugung kann mit mit [https://letsencrypt.org letsencrypt] erfolgen. Clients zur Zertifikatserzeugung sind [[Webserver_mit_Apache#Alternative_letsencrypt | certbot ]] oder [[Webserver_mit_Apache#Dehydrated | dehydrated]] |
||
= Dovecot = |
= Dovecot = |
Revision as of 10:33, 9 January 2023
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