home-harmening:sicherheit:email_versand

Dies ist eine alte Version des Dokuments!


Der Server sollte in der Lage sein Emails bei bestimmen Vorkommnissen
zum Beispiel einem Virusfund dem Administrator zu melden.

Ich möchte hier keinen kompletten Email Server aufsetzen. Stattdessen soll der Emailserver nur lokale Email entgegennehmen und über einen externen
SMTP Server versenden.

Postfix Installation

Als Email Server verwende ich Postfix.

apt install postfix ca-certificates libsasl2-modules


Bei der Serverauswahl bitte den „internet“ Server auswählen.

Postfix Konfigurieren

Wir benötigen zwei Dateien
die main.cf als Hauptkonfigurationsdatei von Postfix und die sasl_passwd Datei für unseren Benutzernamen und das Passwort des SMTP Servers.

nano /etc/postfix/main.cf
# Allgemeine Postfix-Konfiguration
myhostname = servername.mydomain.de
mydomain = mydomain.de
myorigin = /etc/mailname
inet_interfaces = loopback-only
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost
 
# Relaying über den Strato SMTP-Server
relayhost = [smtp.strato.de]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
 
# Erhöhte Timeout-Werte
smtp_connect_timeout = 60s
smtp_helo_timeout = 60s
smtp_send_xforward_command = no
 
# Verhindert das Akzeptieren von eingehenden E-Mails
smtpd_banner = $myhostname ESMTP Postfix
smtpd_tls_security_level = none
smtpd_sasl_auth_enable = no
smtpd_recipient_restrictions = reject
 
# Weiterleitung von Nachrichten, die keine lokalen Empfänger haben
local_recipient_maps = 
 
# Weitere Einstellungen für Sicherheit und Performance
mynetworks = 127.0.0.0/8
relay_domains =
smtpd_helo_required = yes
smtpd_helo_restrictions = reject_invalid_helo_hostname
ParameterWertErklärung
myhostnamemail.deinedomain.deDer Hostname des Servers. Dies
sollte dem Domainnamen deines
Servers entsprechen.
mydomaindeinedomain.deDer Domainname, unter dem der Server erreichbar ist.
myorigin/etc/mailnameDer Ursprung der E-Mails, wenn sie gesendet werden. Normalerweise der Domainname des Servers.
inet_interfacesloopback-onlyPostfix hört nur auf der lokalen Netzwerk-Schnittstelle (127.0.0.1). Dies bedeutet, dass der Server keine eingehenden E-Mails akzeptiert.
inet_protocolsipv4Postfix wird nur das IPv4-Protokoll verwenden. Verhindert, dass der Server IPv6 verwendet, wenn es nicht benötigt wird.
mydestination$myhostname, localhost.$mydomain, localhostBestimmt, welche Domains als Ziel für eingehende E-Mails akzeptiert werden. Da `inet_interfaces = loopback-only`, sind keine externen Ziele erlaubt.
relayhost[smtp.strato.de]:587Der Strato SMTP-Server, über den E-Mails gesendet werden. Der Port 587 ist für verschlüsseltes SMTP (TLS).
smtp_sasl_auth_enableyesAktiviert die SASL-Authentifizierung für den ausgehenden SMTP-Verkehr, um sich beim Strato-Server anzumelden.
smtp_sasl_password_mapshash:/etc/postfix/sasl_passwdGibt den Speicherort der Datei an, die die SMTP-Authentifizierungsdaten enthält (Benutzername und Passwort).
smtp_sasl_security_optionsnoanonymousVerhindert anonyme Authentifizierung und stellt sicher, dass eine ordnungsgemäße Benutzeridentifikation erfolgt.
smtp_tls_security_levelmayTLS (Transport Layer Security) wird verwendet, wenn der SMTP-Server es unterstützt, ist aber nicht zwingend erforderlich.
smtp_tls_loglevel1Setzt das Log-Level für TLS-Verbindungen. Wert 1 zeigt grundlegende TLS-Fehler an.
smtp_tls_CAfile/etc/ssl/certs/ca-certificates.crtDer Pfad zu den Zertifikaten von vertrauenswürdigen Zertifizierungsstellen, um TLS-Verbindungen abzusichern.
smtp_connect_timeout60sLegt die maximale Zeit fest, die Postfix wartet, um eine Verbindung zum SMTP-Server herzustellen, bevor ein Timeout erfolgt.
smtp_helo_timeout60sLegt den Timeout-Wert für den `HELO`-Befehl fest, der zu Beginn der SMTP-Verbindung gesendet wird.
smtp_send_xforward_commandnoVerhindert das Senden des `XFORWARD`-Befehls, um unnötige Informationen zu vermeiden.
smtpd_banner$myhostname ESMTP PostfixDefiniert das Banner, das der Server anzeigt, wenn er sich mit einem anderen SMTP-Server verbindet.
smtpd_tls_security_levelnoneDeaktiviert TLS für eingehende Verbindungen (da der Server keine E-Mails von außen empfängt).
smtpd_sasl_auth_enablenoDeaktiviert SASL-Authentifizierung für eingehende Verbindungen (da keine externen E-Mails empfangen werden).
smtpd_recipient_restrictionsrejectVerhindert das Akzeptieren von eingehenden E-Mails, indem alle Empfängeranfragen abgelehnt werden.
local_recipient_mapsKeine lokalen Empfänger, da der Server keine E-Mails empfängt.
mynetworks127.0.0.0/8Beschränkt den Zugang zum Server nur auf die lokale Maschine (127.0.0.1).
relay_domainsLeere Einstellung, da der Server keine externen E-Mails empfangen kann.
smtpd_helo_requiredyesErfordert, dass der SMTP-Client beim Verbinden einen gültigen `HELO`-Befehl sendet.
smtpd_helo_restrictionsreject_invalid_helo_hostnameVerweigert Verbindungen mit ungültigen `HELO`-Hostnamen, um Missbrauch zu verhindern.