Werbehinweise

Startseite » Blog » Mailserver daheim: Senderabhängige Authentifizierung 

Blog

Dezember 2023 November 2023 September 2023 August 2023 März 2023 Dezember 2022 November 2022 Oktober 2022 September 2022 August 2022 Juli 2022 Juni 2022 Mai 2022 März 2022 Januar 2022 Dezember 2021 November 2021 Oktober 2021 August 2021 Juli 2021 Juni 2021 Mai 2021 April 2021 März 2021 Februar 2021 Januar 2021 Dezember 2020 November 2020 Oktober 2020 August 2020 Juli 2020 Juni 2020 Mai 2020 April 2020 März 2020 August 2019 Juni 2019 April 2019 Dezember 2018 September 2018 Februar 2018 Oktober 2017 August 2017 April 2017 März 2017 Februar 2017 Januar 2017 Dezember 2016 Juli 2016 Februar 2016 Januar 2016 Oktober 2015 Juli 2015 Juni 2015 März 2015 Januar 2015 Dezember 2014 November 2014 Oktober 2014 September 2014 Juli 2014 Juni 2014 April 2014 März 2014 Februar 2014 Januar 2014 Dezember 2013 November 2013 Oktober 2013 August 2013 Juli 2013 März 2013 Februar 2013 Januar 2013 Dezember 2012 November 2012 Oktober 2012 September 2012 August 2012 Juli 2012 Juni 2012 Mai 2012 April 2012 März 2012 Februar 2012 Januar 2012 Dezember 2011 November 2011 Oktober 2011 September 2011 August 2011 Juli 2011 Juni 2011 Mai 2011 April 2011 März 2011 Februar 2011 Januar 2011 Dezember 2010 November 2010 Oktober 2010 September 2010 Ein Hoch auf alle Pappkartons dieser Welt! VirtualBox: Netzwerkkarte unter Linux plötzlich eth1 Thunderbird: Adressbuch synchronisieren Roundcube: IMAP Error: Empty startup greeting VirtualBox: Imagedatei »einschrumpfen« LC-Power 525B-PS USB 2.0 Gehäuse 5,25" Eine neue, regelmäßige Besucherin GUI für grub-Konfiguration Mailserver daheim: Senderabhängige Authentifizierung August 2010 Juli 2010 Juni 2010 Mai 2010 April 2010 März 2010 Februar 2010 Januar 2010 Dezember 2009 November 2009 Oktober 2009 September 2009 Januar 2009 Dezember 2008 November 2008 Oktober 2008 September 2008 Juni 2008 Mai 2008 April 2008 März 2008 Februar 2008 Januar 2008 Dezember 2007 November 2007 Oktober 2007 Mai 2007 Februar 2007 Januar 2007 September 2006 August 2006 Juni 2006 Mai 2006 April 2006 März 2006 Februar 2006 November 2005 Oktober 2005 September 2005 Juli 2005 Juni 2005 Mai 2005 Mai 2004 Oktober 2003 September 2003 Juli 2003 Juni 2002 Mai 2002 März 2002 Februar 2002 Januar 2002 November 2001 Oktober 2001 Juli 2001 Juni 2001 Mai 2001 März 2001 Februar 2001 Januar 2001
get Bluefish Editor
Geany – The Flyweight IDE
get Mozilla Firefox
get Opera
get Konqueror
get Mozilla Thunderbird
get Linux Mint
get Ubuntu Linux

Anzeige
ALL-INKL.COM - Webhosting Server Hosting Domain Provider

Werbung

27.

September

2010

Mailserver daheim: Senderabhängige Authentifizierung

Vor einem knappen Monat habe ich die Installation und Konfiguration von Postfix für das Versenden von E-Mails über einen Smarthost beschrieben. Wer mehrere E-Mailadressen hat und diese ebenfalls über seinen eigenen Mailserver nutzen möchte, muss Postfix dafür entsprechend konfigurieren.

Mailserver erkennen inzwischen in der Regel keine E-Mails mehr an wenn die E-Mailadresse des Absenders nicht in die Liste der zulässigen Domains des Mailservers passt. Daher muss man sich beim Versand der E-Mails beim jeweilig zuständigen Mailserver authentifizieren.

In der offiziellen Dokumentation ist dies unter dem Punkt Configuring Sender-Dependent SASL authentication auf Englisch zu finden.

Basierend auf dem bereits ganz oben verlinkten Informationen muss der bereits bestehende Mailserver nun noch entsprechend konfiguriert werden. Die bestehende Konfiguration sendet bereits E-Mails über einen als Smarthost angegebenen Server weiter, lokale Benutzernamen werden über die /etc/postfix/sender_canonical in real existierende E-Mailadressen umgeschrieben.

/etc/postfix/main.cf

In der Konfigurationsdatei /etc/postfix/main.cf müssen ein paar Einträge hinzugefügt werden. Einige Zeilen sind bereits bei der bestehenden Konfiguration vorhanden gewesen. Ich habe sie dennoch mit aufgeführt, da sie für den Betrieb notwendig sind.

smtp_sender_dependent_authentication = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_connection_cache_on_demand = no
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_dependent
sender_canonical_maps = hash:/etc/postfix/sender_canonical

smtp_sender_dependent_authentication = yes aktiviert die senderabhängige Authentifizierung.

smtp_sasl_auth_enable = yes aktiviert die SASL-Authentifikation mit den externen Mailservern.

smtp_sasl_security_options = noanonymous erzwingt die Anmeldung, es werden keine anonyme Anfragen abgeschickt.

smtp_connection_cache_on_demand = no da bei SSL/TLS-Verbindungen ohnehin nicht das »connection cashing« funktioniert, wird es von vorneherein deaktivert.

smtp_sasl_password_maps = hash:/etc/postfix/sasl_password gibt an, wo sich die für die Authentifizierung benötigten Informationen als »lookup table« befinden.

sender_dependent_relayhost_maps = hash:/etc/postfix/sender_dependent gibt an, wo sich die Informationen über die Zuweisung der Absenderadressen zum (externen) Mailserver befinden.

sender_canonical_maps = hash:/etc/postfix/sender_canonical gibt an, wie lokale Benutzernamen in real existierende E-Mailadressen umgeschrieben werden sollen.

Neben dem Aktivieren der senderabhängigen Authentifizierung müssen somit noch zwei weitere Dateien erstellt beziehungsweise mit Informationen gefüllt werden. Der Verweis auf die sender_canonical_maps ist bei diversen Anleitungen nicht zu finden. Ich habe sie dennoch mit aufgeführt, da beim Umschreiben lokaler Benutzer Fehler auftreten können.

/etc/postfix/sender_canonical

In der Datei /etc/postfix/sender_canonical wird angegeben, in welche real existierende E-Mailadresse die Mail lokaler Benutzer umgeschrieben werden soll. Als Beispiel:

amy foo@bar.tld
root foo@bar.tld

Mails der lokalen Benutzer amy und root werden somit durch Postfix umgeschrieben und als foo@bar.tld an den externen Mailserver oder als Default angegebenen Smarthost weitergeleitet.

Die E-Mailadresse muss somit entweder über den Smarthost verschickt werden können oder ein entsprechender Eintrag in der Konfiguration für das senderabhängige Authentifizieren existieren. Ansonsten bleiben die E-Mails in der Queue liegen da sie nicht vom externen Mailserver angenommen werden.

Dies sei nur am Rande zur Vermeidung von Fehlern erwähnt und hat mit der eigentlichen Konfiguration für das senderabhängige Authentifizieren nichts zu tun.

/etc/postfix/sasl_password

In der Konfigurationsdatei /etc/postfix/sasl_password werden die Zugangsdaten für die externen Mailserver abgelegt. Die Passwörter werden dabei im Klartext gespeichert, daher ist nach dem Anlegen der Dateien auf die entsprechenden Rechte zu achten, damit nicht jeder Benutzer die Datei einfach auslesen kann.

Der Aufbau einer Zeile in der Datei kann unterschiedlich ausfallen.

# Authentifizierung anhand der E-Mailadresse des Absenders
# (bezogen auf sender_dependent_relayhost_maps)
foo1@bar.tld        login1:pass1
foo2@bar.tld        login2:pass2

# Authentifizierung anhand der Domain des Absenders 
#(bezogen auf sender_dependent_relayhost_maps)
smtp.foo.tld        login2:pass3
   
# Authentifizierung für den default relayhost
smtp.bar.tld        login:pass

In der Regel werden bei Anleitungen für smtp_sender_dependent_authentication mal die eine, mal die andere Variante für den Eintrag in der /etc/postfix/sasl_password behandelt. Die unterschiedlichen Varianten sind oben eigentlich schon erklärt, dennoch ein paar Zeilen zu den beiden Schreibweisen.

Soll explizit eine bestimmte E-Mailadresse mit einem bestimmten Login verwendet werden, so ist das oberste Beispiel zutreffend. Dies ist bei manchen Mailservern auch zwingend notwendig, bei anderen können alle E-Mails mit gültiger Domain über einen beliebigen Login verschickt werden.

Dafür wäre das zweite Beispiel zutreffen. Alle E-Mails von einer bestimmten Domain werden über die gegebenen Zugangsdaten verschickt. Jedoch ist hier ein Missbrauch möglich. Jede beliebige an den lokalen Postfix gerichtete E-Mail mit der passenden Domain wird über diese Authentifizierung verschickt. Wer die Konfiguration kennt, kann so mit beliebigiem [NAME]@foo.tld E-Mails versenden.

Wobei diese Gefahr natürlich auch beim standardmäßig als Relay angegebenen Mailserver vorhanden ist – sofern der lokale Postfix nicht auf eine Authentifizierung besteht.

/etc/postfix/sender_dependent

Bei meiner Konfiguration befinden sich die Informationen welche Absenderadressen mit einem Mailserver verbinden in der /etc/postfix/sender_dependent. Je nachdem was in der /etc/postfix/main.cf als Wert für sender_dependent_relayhost_maps angegeben wurde, kann es auch eine andere Datei sein. Daher die entsprechend angegebene Datei für die folgenden Zeilen auswählen:

# Nach Absenderadresse aufgelöst (bezogen auf /etc/postfix/sasl_passwd)
foo1@bar.tld        [smtp.bar.tld]
foo2@bar1.tld       [smtp.bar1.tld]:587

# Nach Absenderdomain aufgelöst (bezogen auf /etc/postfix/sasl_passwd)
@foo.tld            [mail.foo.tld]:465

Wird der Standardport für SMTP (25) verwendet, wird keine zusätzliche Angabe hinter dem Namen des Mailservers benötigt. Ansonsten wird sie einfach durch einen Doppelpunkt abgetrennt hinzugefügt.

Nicht dokumentiert aber zumindest bei meiner Version (Postfix 2.5.5) problemlos funktionierend: Nach der Domain der E-Mail aufgelöste Verbindung mit einem SMTP-Server.

postmap nicht vergessen!

Nachdem alle Daten in die Konfigurationsdateien eingegeben wurden, muss mit postmap noch der Hash für die jeweiligen Dateien erzeugt werden:

sudo postmap /etc/postfix/sender_dependent
sudo postmap /etc/postfix/sasl_password
sudo postmap /etc/postfix/sender_canonical

Danach Postfix neu starten damit die Konfiguration übernommen wird:

sudo /etc/init.d/postfix restart

Nun sollte eigentlich alles funktionieren. Wer einen MUA wie Thunderbird oder Roundcube verwendet, kann nun zusätzliche Identitäten bei dem bestehenden Benutzerprofil erstellen. Eingehende E-Mails werden zumindest von diesen beiden MUAs nach einem Klick auf den Beantworten-Button mit der korrekten Identität für den Absender versehen.

Ebenso sollte nun der Versand mit einer solchen zusätzlichen Identität möglich sein. Falls es nicht klappt hilft der nächste Abschnitt eventuell weiter

Fehlersuche

Sollte Postfix bei den ersten Versuchen nicht wie gewünscht funktionieren hilft ein Blick in /var/log/mail.log. Dort teilt Postfix mit wenn etwas mit der Authentifizierung am externen Mailserver nicht funktioniert oder ein anderes Problem aufgetreten ist.

sudo tail /var/log/mail.log

Mit tail lässt man sich einfach die letzten Zeilen der Logdatei anzeigen. Viel bequemer als sie mit einem Editor zu öffnen oder vollständig mit cat ausgeben zu lassen.

Die vorhandenen Logdaten sollten eine Fehlerdiagnose ermögliche, welche schnell zur Problemlösung führt.

Tipp für Googlemail (TLS aktivieren/erzwingen)

Googlemail beziehungsweise gmail wollte zunächst keine Verbindung von meinem Postfix annehmen. Erst der Eintrag folgende Eintrag in der /etc/postfix/main.cf ließ die Verbindung zustandekommen:

smtp_tls_security_level = encrypt

Die Verbindung wurde vermutlich deshalb abgelehnt, da keine TLS-Anfrage an den Server gesendet wurde.

Hintergrund: Die Datenübertragung inklusive der Authentifizierung zwischen meinem lokalen Postfix und dem externen SMTP-Server erfolgt standardmäßig unverschlüsselt. Daher besteht die Gefahr das die Übermittlung der Daten von unbefugten Personen durch einen sogenannten »man in the middle«-Angriff mitgelesen werden.

Damit diese Sicherheitslücke geschlossen wird, kann Postfix angewiesen werden in jedem Fall eine SSL- beziehungsweise TLS-Verbindung (transport layer security) zum externen Server aufzubauen. Die Übermittlung der Daten erfolgt dann verschlüsselt.

Achtung: Nicht die Anmeldung am Server mit einer Verschlüsselung verwechseln. Die Anmeldung am Server ist lediglich der Nachweis dafür, dass man berechtigt ist auf den Server zuzugreifen. Die Datenübertragung selbst ist unverschlüsselt. Erst wenn man eine verschlüsselte Übertragung verlangt, wird das Senden von Passwörtern und dem Inhalt der E-Mail selbst geschützt.

Voraussetzung für eine verschlüsselte Übertragung ist natürlich, dass der externe SMTP-Server auch TLS unterstützt.

Da ich weiß das alle von mir verwendeten externen Mailserver TLS unterstützen, habe ich den Wert auf encrpyt gesetzt. Sollten sich in der Liste der verwendeten externen SMTP-Server auch welche befinden welche kein TLS unterstützen, ist folgender Eintrag vorzunehmen:

smtp_tls_security_level = may

Durch die Angabe von may wird TLS dann aktiviert, wenn der externe SMTP-Server TLS anbietet. Sollte dies nicht der Fall sein, wird eine unverschlüsselte Verbindung aufgebaut.

Googlemail beziehungsweise gmail scheint auf die verschlüsselte Übertragung zu bestehen. Daher war die Angabe dieser Option bei Postfix notwendig.

X_FISH

Datenschutzerklärung
Durch die Nutzung der Website stimmen Sie der Verwendung von Cookies zur Durch­führung von Analysen und zum Erstellen von Inhalten und Werbung, welche an Ihre Interessen angepasst ist, zu.