===== Email Versand =====
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
\\
|**Parameter**|**Wert**|**Erklärung**|
|myhostname|servername.mydomain.de|Der Hostname des Servers. Dies\\ sollte dem Domainnamen deines\\ Servers entsprechen.|
|mydomain|mydomain.de|Der Domainname, unter dem der Server\\ erreichbar ist.|
|myorigin|/etc/mailname|Der Ursprung der E-Mails, wenn sie\\ gesendet werden. Normalerweise der\\ Domainname des Servers.|
|inet_interfaces|loopback-only|Postfix hört nur auf der lokalen\\ Netzwerk-Schnittstelle (127.0.0.1).\\ Dies bedeutet, dass der Server\\ keine eingehenden E-Mails akzeptiert.|
|inet_protocols|ipv4|Postfix wird nur das IPv4-Protokoll\\ verwenden. Verhindert, dass der Server\\ IPv6 verwendet, wenn es nicht\\ benötigt wird.|
|mydestination|$myhostname, localhost.$mydomain, localhost|Bestimmt, 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]:587|Der Strato SMTP-Server, über den\\ E-Mails gesendet werden. Der Port\\ 587 ist für verschlüsseltes SMTP\\ (TLS).|
|smtp_sasl_auth_enable|yes|Aktiviert die SASL-Authentifizierung\\ für den ausgehenden SMTP-Verkehr,\\ um sich beim Strato-Server anzumelden.|
|smtp_sasl_password_maps|hash:/etc/postfix/sasl_passwd|Gibt den Speicherort der Datei an,\\ die die SMTP-Authentifizierungsdaten\\ enthält (Benutzername und Passwort).|
|smtp_sasl_security_options|noanonymous|Verhindert anonyme Authentifizierung\\ und stellt sicher, dass eine\\ ordnungsgemäße Benutzeridentifikation\\ erfolgt.|
|smtp_tls_security_level|may|TLS (Transport Layer Security) wird\\ verwendet, wenn der SMTP-Server es\\ unterstützt, ist aber nicht\\ zwingend erforderlich.|
|smtp_tls_loglevel|1|Setzt das Log-Level für TLS-Verbindungen.\\ Wert 1 zeigt grundlegende TLS-Fehler\\ an.|
|smtp_tls_CAfile|/etc/ssl/certs/ca-certificates.crt|Der Pfad zu den Zertifikaten von\\ vertrauenswürdigen Zertifizierungsstellen,\\ um TLS-Verbindungen abzusichern.|
|smtp_connect_timeout|60s|Legt die maximale Zeit fest, die Postfix\\ wartet, um eine Verbindung zum SMTP-Server\\ herzustellen, bevor ein Timeout\\ erfolgt.|
|smtp_helo_timeout|60s|Legt den Timeout-Wert für den `HELO`-Befehl\\ fest, der zu Beginn der SMTP-Verbindung\\ gesendet wird.|
|smtp_send_xforward_command|no|Verhindert das Senden des `XFORWARD`-Befehls,\\ um unnötige Informationen zu vermeiden.|
|smtpd_banner|$myhostname ESMTP Postfix|Definiert das Banner, das der Server\\ anzeigt, wenn er sich mit einem anderen\\ SMTP-Server verbindet.|
|smtpd_tls_security_level|none|Deaktiviert TLS für eingehende\\ Verbindungen (da der Server keine\\ E-Mails von außen empfängt).|
|smtpd_sasl_auth_enable|no|Deaktiviert SASL-Authentifizierung für\\ eingehende Verbindungen (da keine\\ externen E-Mails empfangen werden).|
|smtpd_recipient_restrictions|reject|Verhindert das Akzeptieren von\\ eingehenden E-Mails, indem alle\\ Empfängeranfragen abgelehnt werden.|
|local_recipient_maps||Keine lokalen Empfänger, da der Server\\ keine E-Mails empfängt.|
|mynetworks|127.0.0.0/8|Beschränkt den Zugang zum Server nur\\ auf die lokale Maschine (127.0.0.1).|
|relay_domains||Leere Einstellung, da der Server\\ keine externen E-Mails empfangen\\ kann.|
|smtpd_helo_required|yes|Erfordert, dass der SMTP-Client beim\\ Verbinden einen gültigen `HELO`-Befehl\\ sendet.|
|smtpd_helo_restrictions|reject_invalid_helo_hostname|Verweigert Verbindungen mit ungültigen\\ `HELO`-Hostnamen, um Missbrauch\\ zu verhindern.|
\\
Jetz muss die Passwortdatei /etc/postfix/sasl_passwd erstellt werden.\\
nano /etc/postfix/sasl_passwd
[smtp.strato.de]:587 deinBenutzername:deinPasswort
postmap /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd*
\\
==== Test ====
Zunächst müssen wir prüfen ob wir den SMTP Server von Strato erreichen.
Dies kann mit netcat erfolgen.
nc -vz smtp.strato.de 587
Connection to smtp.strato.de (81.169.145.133) 587 port [tcp/submission] succeeded!
\\
Eine Testmail kann mit dem Paket mail-utils versendet werden.
echo -e "Subject: Test\n\nDies ist eine Testmail." | sendmail -v deinemail@zieladresse.de