Manchmal ist es sinnvoll, E-Mails von einem Server aus nicht direkt in das Internet zu verschicken, sondern ein E-Mail Gateway / einen Postfix-Relayserver zu nutzen. Der absendende Server funktioniert dann wie ein normaler E-Mail Client und schickt seine E-Mail zuerst an einen zentralen Mailserver, der diese dann an das Ziel weiterleitet. Das kann z.B. aus folgenden Gründen sinnvoll sein:
- Ein Server an einem DSL-Anschluss soll E-Mails versenden. Ein direkter Versand wird aus verschiedenen Gründen nicht empfohlen (Dynamische IP-Adresse, kein passendes Reverse DNS, …)
- Mehrere Server werden betrieben. Um nur einen einzigen Mailserver mit seinen Komponenten warten zu müssen, soll ein zentrales E-Mail Gateway genutzt werden. DKIM müsste dann z.B. nur für das Gateway eingerichtet werden, und nicht für jeden sendenden Server einzeln.
Ich beschreibe hier im folgenden, wie ihr einen bereits bestehenden Postfix-Mailserver zu einem Gateway erweitern könnt, und wie ihr Postfix auf allen anderen Servern einrichtet. Den bereits eingerichteten Postfix-Server nenne ich „Gateway“; alle anderen Server werden „Clients“ genannt (da sie hier nur eine Rolle als Mailclients spielen“).
Authentifizierung
Die Authentifizierung des Clients gegenüber dem Gateway kann auf zwei verschiedene Arten erfolgen:
- 1) Freigabe der Client-IP auf dem Gateway via „mynetworks“
- 2) SMTP-Auth des Clients mittels Mailbox-Account auf dem Gateway-Server (wie bei üblichen Mailclients für den Anwender)
Die Authentifizierung über die IP-Adresse ist praktischer, aber nur möglich, wenn die Adresse des Clients nicht wechselt und garantiert gleich bleibt.
Gateway vorbereiten
Das Gateway muss nur konfiguriert werden, wenn über die IP-Adresse des Clients authentifiziert werden soll. Die IP-Adressen des Clients werden dann am Gateway unter „mynetworks“ eingetragen. Bei einer korrekten Gesamtkonfiguration ist dieser Server dann von relevanten Beschränkungen freigestellt, die für alle anderen Mailclients gelten. Beispiel:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
5.1.76.155/32 [2a00:f820:417::be19:7b23]/128
Durch die zweite Zeile erhält der Client mit den passenden Adressen Zugriff auf das Gateway und kann über dieses beliebig versenden.
Client konfigurieren
Nun muss Postfix auf dem Client (dem sendenden Server) konfiguriert werden. Eine minimale Postfix-Konfiguration für den Versand sieht so aus:
1) Variante mit Auth via IP-Adresse / „mynetworks“
myhostname = backupserver.mydomain.tld inet_protocols = all inet_interfaces = 127.0.0.1, 192.168.2.222 ## ## Mail-Queue Einstellungen ## maximal_queue_lifetime = 1h bounce_queue_lifetime = 1h maximal_backoff_time = 15m minimal_backoff_time = 5m queue_run_delay = 5m ## ## TLS ## smtp_tls_security_level = verify smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt ## ## Relayhost ## relayhost = gateway.mydomain.tld
2) Variante mit SMTP-Auth (wie normaler Mailclient)
myhostname = backupserver.mydomain.tld inet_protocols = all inet_interfaces = 127.0.0.1, 192.168.2.222 ## ## Mail-Queue Einstellungen ## maximal_queue_lifetime = 1h bounce_queue_lifetime = 1h maximal_backoff_time = 15m minimal_backoff_time = 5m queue_run_delay = 5m ## ## TLS ## smtp_tls_security_level = verify smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt ## ## Relayhost ## relayhost = [gateway.mydomain.tld]:587 ## ## Authentifizierung am Relayhost ## smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/relay_passwd smtp_sasl_security_options = noanonymous
Mit welchem Mailbox-Account sich Postfix am Gateway-Server authentifiziert, wird in /etc/postfix/relay_passwd festgelegt. Die Datei enthält einen Eintrag, der festlegt, welcher Account am Gateway mit welchem Passwort für welchen Server verwendet werden soll:
[gateway.mydomain.tld]:587 backup@gateway.mydomain.tld:passwort
Jetzt noch ein „postmap“ für die neue Datei ausführen, damit sie in ein für Postfix lesbares Format konvertiert wird:
postmap hash:/etc/postfix/relay_passwd
Vergesst nicht, die angegebene Mailbox (z.B. backup@gateway.mydomain.tld) auf eurem Gateway-Server anzulegen! ;-)
Denkt daran, dass euer Postfix bei dieser Variante über nur eine einzige Mailbox sendet! Das kann bedeuten, dass ihr nur zugordnete Mailadressen als Absender angeben könnt – andernfalls akzeptiert der Gateway-Server eure Mails möglicherweise nicht.
Startet dann Postfix an eurem Client (und ggf. auch am Gateway) neu. Ihr könnt die Funktion überprüfen, indem ihr vom Client aus eine Mail schickt:
echo "Dies ist eine Testmail." | mailx -r backup@gateway.mydomain.tld -s "Gateway-Testmail" postmaster@gateway.mydomain.tld
Sollte keine E-Mail an der Zieladresse eintreffen, lohnt es sich, einen Blick in die Logfiles beider beteiligter Postfix-Instanzen zu werfen (Gateway und Client).
https://www.house-of-loops.de
Kann es sein, dass in der Anleitung für die Variante smtp auth noch ein postmap schritt fehlt?
postmap hash:/etc/postfix/relay_passwd
Danach funktionierte es bei mir, vorher hatte ich den Fehler relay_passwd.db not found
MfG
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Ist ergänzt. Danke!
https://dschense.de
Ich hatte ein kleines Problem damit von einem lokalen System emails über einen Mailserver als Relay zu versenden:
Ich nutze zum einen ein Proxmox 4.3 Setup was auf Debian beruht.
Fehler war folgender nachdem ich die obige Anleitung befolgt hatte:
Oct 16 10:30:37 proxmox postfix/smtp[5481]: A05DA22FE9: SASL authentication failed; cannot authenticate to server smtp.example.com[2f5603:40250:36:er55230f4::1]: no mechanism available
Oct 16 10:30:38 proxmox postfix/smtp[5481]: warning: SASL authentication failure: No worthy mechs found
Nach einiger suche stellte ich fest, dass libsasl2-modules nicht installiert war.
ein: apt-get install libsasl2-modules
lies den Fehler verschwinden.
Nun hatte ich noch das problem, dass mein lokaler proxmox.fritz.box heißt.
somit will er Emails als root@proxmox.fritz.box verschicken.
Die Mails werden natürlich vom Relay nicht akzeptiert. also müssen die umgeschrieben werden.
/etc/postfix/main.cf
noch ein:
smtp_generic_maps = hash:/etc/postfix/generic
hinzufügen
/etc/postfix/generic erstellen mit Inhalt: (meine Zieladresse ist proxmox@example.com
root@proxmox.fritz.box proxmox@example.com
oder für alle:
@proxmox.fritz.box proxmox@example.com
generic.db noch generieren
postmap /etc/postfix/generic
postfix restarten und alles sollte funktionieren.