Eigener Mailserver mit Postfix & Dovecot: Installation und Konfiguration
Ein eigener Mailserver mit Postfix und Dovecot bringt Unabhängigkeit und Kontrolle. In diesem Artikel zeige ich Schritt für Schritt, wie man ihn installiert, absichert und richtig konfiguriert – ohne Schnickschnack, dafür mit klaren Anleitungen.
Basisinformation
Ich benutze meinen Server, den ich bei 1Blu hoste, als Mailserver. Auf meinem Server läuft Proxmox und in einem eigenen LXC läuft der Mailserver. Dafür müssen die Ports freigegeben werden.
Vorbereitung
Zunächst ändert man den Hostnamen. Dieser muss dem FQDN (Fully Qualifty Domain Name) entsprechen.
hostnamectl set-hostname <fqdn>Im weiteren muss beim Provider ein MX-Record in den DNS Einstellungen auf die Domain des Mailservers weisen. Wenn der FQDN des Mailservers mail.example.com ist und die Domain @example.com für die Mailkonten sein soll, so muss bei der Domain example.com ein MX Record auf mail.example.com gesetzt werden.
Postfix installieren
apt install postfix -ySollte Postfix schon installiert sein so kann man den Konfigurationsdialog mit folgendem Befehl wieder aufrufen:
dpkg-configure postfixNun öffnet sich ein Fenster wählt man Internet-Site aus und gibt nun bei System-Mail-Name die Stammdomain an (example.com).
Im weiteren überprüft man die Version.
postconf mail_versionNun schaut man sich die Socket Statistics an um zu schauen ob Port 25 geöffnet wurde.
ss -lnpt | grep masterÜberprüfen des Outbound für Port 25
apt install telnet
tenet gmail-smtp-in.google.com 25Hier sollte 220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp das stehen. Der Wert 220 sagt, das der Service ok ist.
Grundkonfiguration testen
Zum Test versendet man über das System eine E-Mail an eine bestehende E-Mail-Adresse.
echo "test email" | sendmail your-account@gmail.com
Im weiteren wird mit dem Mail User Agent eine Mail verschickt. Hier können weitere Parameter, wie Absender, Betreff und ein CC verwendet werden.
apt install mailutils
mail -a FROM:account@deine-domain.com empaenger@domain.comDanach sollte die weitere Ausgabe wie folgt aussehen
Cc:
Subject: Eine E-Mail zum verlieben
Dies ist die erste richtige E-Mail, obwohl ich die zweite E-Mail bin.Mit STRG + D wird die E-Mail verschickt.
Maximale Größe von Anhang ändern
Erstmal lässt man sich die Größe für Anhänge anzeigen:
postconf| grep message:size_limitDieser liegt bei der Standardkonfiguration bei 10MB. Nun soll dieser Maximalwert auf 50MB angehoben werden.
postconf -e message_size_limit=52428800Größe der Mailbox ändern
Zunächst, dass selbe prozetere wie bei den Anhängen, man lässt sich anzeigen, welche Größe aktuell eingestellt ist.
postconf | grep mailbox_size_limitHier steht oft 0, dies heißt, dass es keine Beschränkung für das Postfach gibt. Mit diesem Befehl ändert man die Größe auf 48MB.
postconf -e mailbox_size_limit=51200000Danach wird Postfix neu gestartet.
systemctl restart postfixHostnamen in Postfix ändern
In der Datei /etc/postfix/main.cf wird ein Teil der Postfix Konfiguration gesichert. Hier muss die eigene Domain eingepflegt werden als Hostname.
myhostname = mail.yourdomain.comDanach wieder neustarten.
systemctl restart postfixE-Mail Alias erstellen
Bei Produktivsystemen sollten Alias E-Mail Adressen angelegt werden, die später E-Mails an andere Konten weitergeben.
nano /etc/aliasespostmaster: root
root: <eigenen Benutzer>Danach muss dies neu in die Datenbank eingelesen werden
newaliasesWenn nun eine E-Mail an postmaster@deine-domain.com geht wird diese an root@deine-domain.com geschickt. Die zweite Reihe besagt, dass alle Mails von Root an den angegebenen Benutzer geschickt werden.
E-Mail Verkehr mit TLS absichern
E-Mails sollten stehts verschlüsselt versendet werden!
Submisson Service von Postfix aktivieren
Hier stellt man die SMTP Einstellungen ein und kann hier die einzelnen Ports aktivieren.
nano /etc/postfix/master.cfWir fügen in die Datei folgendes ein. Damit geben wir Port 465 frei. Microsoft Outlook unterstützt Submission.
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_tls_wrappermode=no
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/authDann öffnet man den Port 587 für SMTPS
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/authDamit auch Port 25 offen ist, muss folgende Zeile für SMTP enthalten sein:
smtp inet n - y - - smtpd
Nun muss der Ort, der TLS Zertifikate angegeben werden.
nano /etc/postfix/main.cf#Enable TLS Encryption when Postfix receives incoming emails
smtpd_tls_cert_file=<PFAD><FullChain>.pem
smtpd_tls_key_file=<PFAD><PrivKey>.pem
smtpd_tls_security_level=may
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
#Enable TLS Encryption when Postfix sends outgoing emails
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
#Enforce TLSv1.3 or TLSv1.2
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1In dieser Sammlung an Befehlen muss diese beiden Zeilen geändert werden: <PFAD><FullChain>.pem <PFAD><PrivKey>.pem.
Danach wird Postfix neu gestartet.
systemctl restart postfix
ss -lnpt | grep masterMit dem zweiten Befehl sieht man die geöffneten Ports. Das sollte so nun aussehen:
LISTEN 0 100 0.0.0.0:465 0.0.0.0:* users:(("master",pid=24699,fd=20))
LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:(("master",pid=24699,fd=13))
LISTEN 0 100 0.0.0.0:587 0.0.0.0:* users:(("master",pid=24699,fd=17))Dovecot für IMAP installieren
Dafür müssen die benötigten Pakete geladen werden:
apt install dovecot-core dovecot-imapd dovecot-lmtpdDovecot-Imapd ist der Service für IMAP und Dovecot-Lmtpd ist die spätere Brücke, dass E-Mails an den Message Store weitergeleitet werden.
Darauffolgend wird nun IMAP aktiviert.
nano /etc/dovecot/dovecot.confDafür wird protocols = imap lmtp hinzugefügt. Das lmtp wird später für die Brücke gebraucht.
protocols = imap lmtpDie Mailbox Location wird auch geändert, so das die E-Mails nicht mehr im Verzeichnis /var/mail/%u liegen, sondern im Maildir im vom Benutzerkonto.
sudo nano /etc/dovecot/conf.d/10-mail.confDafür wird mail_location abgeändert:
mail_location = maildir:~/MaildirDanach wird überprüft, ob folgende Zeile schon existiert. Sonst muss diese hinzugefügt werden.
mail_privileged_group = mailDanach wird Dovecot noch in die Gruppe mail aufgenommen.
adduser dovecot mailIm weiteren wird die Brücke zum Mailstore erstellt.
nano /etc/dovecot/conf.d/10-master.confHier wird der Service LMTP so abgeändert:
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}Damit die Brücke funktioniert, muss dies auch Postfix mitgeteilt werden.
nano /etc/postfix/main.cfDa wird der Transport über LMTP eingefügt.
mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtputf8_enable = noDovecot Authentifikation konfigurieren
Zunächst deaktiviert man den Login ohne SSL/TLS und ändert das Username Format, da wir hier auf PAM User zugreifen und diese User keine Domainendung besitzen:
nano /etc/dovecot/conf.d/10-auth.confDiese Zeile wird entkommentiert:
disable_plaintext_auth = yesDann nach wird diese Zeile:
#auth_username_format = %Lu
So geändert:
auth_username_format = %nDas Anmeldeverfahren muss ebenso noch geändert werden von plain auf plain login
auth_mechanisms = plain loginSSL in Dovecot konfigurieren
Öffne die /etc/dovecot/conf.d/10-ssl.conf da ändert man ssl = yes auf ssl = required. Ich benutze hier Zertifikate die ich mit Letsencrypt erstellen lasse. Dies kann man über eine DNS Challenge machen, oder über einen Webserver.
Danach müssen die SSL Zertifikate implementiert werden:
ssl_cert = </etc/letsencrypt/live/mail.your-domain.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.your-domain.com/privkey.pemDann wird der Chipher aktiviert und die minimum Version von SSL/TLS angegeben:
ssl_min_protocol = TLSv1.2Der FIPS Provider muss ebenso ausgeschaltet werden:
nano /etc/openssl/openssl.cnfDafür wird diese Zeile aus kommentiert:
#providers = provider_sectSASL konfigurieren
SASL ist ein Framework, welches es ermöglicht Authentifikation über Netzwerke abzusichern.
nano /etc/dovecot/conf.d/10-master.conf
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}Auto-Create von Sent und Trash Ordnern
Dafür wird die Konfiguration um eine Zeile pro Ordner ergänzt:
nano /etc/dovecot/conf.d/15-mailboxes.conf mailbox Trash {
auto = create
special_use = \Trash
}Es wurde das auto = create hinzugefügt, damit diese Ordner beim Login erstellt werden. Bei den Meisten Mailclients muss sich nach der Einrichtung nochmal neu angemeldet werden, damit diese nachgeladen werden.
E-Mail Konto erstellen
Dazu erstellt man einen Systemnutzer. Dieser wird dann mit syncronisiert.
adduser user1doveadm user '*'systemctl restart dovecot
Postfix main.conf
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mynetworks = Netzwerk des Servers, 127.0.0.0/8
inet_interfaces = all
recipient_delimiter = +
compatibility_level = 2
mailbox_size_limit = 0
inet_protocols = ipv4
message_size_limit = 52428800
#OWN
myhostname = mail.domain.com
mydomain = domain.com
mydestination = $myhostname, localhost.localdomain, localhost, $mydoamin
myorigin = $mydomain
#Enable TLS Encryption when Postfix receives incoming emails
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.zipperling.net/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.zipperling.net/privkey.pem
smtpd_tls_security_level=may
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
#Enable TLS Encryption when Postfix sends outgoing emails
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
#Enforce TLSv1.3 or TLSv1.2
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
#LMTP SUPPORT
mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtputf8_enable = no
Das könnte dich interessieren!
