Dies ist die archivierte Version des Blogs vom 05.01.2017. Aktuelle Beiträge findest du unter thomas-leister.de
 

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).


Post published on 28. Juni 2016 | Last updated on 16. Oktober 2016
Tags:           

Diesen Blog unterstützen

Wenn Dir der Beitrag gefallen hat, freue ich mich über einen kleinen Obolus :-) Bitcoin QR Code

PayPal-Seite: https://www.paypal.me/ThomasLeister
Meine Bitcoin-Adresse: 15z8 QkNi dHsx q9WW d8nx W9XU hsdf Qe5B 4s

Siehe auch: Unterstützung

Informationen zum Autor

Thomas Leister

Geb. 1995, Kurzhaar-Metaller, Geek und Blogger. Nutzt seit Anfang 2013 ausschließlich Linux auf Desktop und Servern. Student der Automobilinformatik an der Hochschule für angewandte Wissenschaften in Landshut.

3 thoughts on “Postfix als Smarthost / Mail-Relay / Gateway für andere Server

  • 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

  • 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.