• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Postfix als smtpauth Schnittstelle für Exchange2007

garwen

Newbie
Hallo zusammen

Ich suche mich schon 3 Tage nach einem HowTo dusselig, wie ich das machen muss :).

Folgende Situation: ich habe auf einem Suse 11.2 Server ein Ticketingsystem laufen (OTRS). Dieses sendet und empfängt Mails von und zu unserem Exchange2007 Server. Empfangen läuft über imaps problemlos, senden geht aber nur intern (mangels Auth). Jetzt habe ich die Anforderung bekommen, dass aus OTRS auch Mails nach extern sollen geschickt werden können.
Dummerweise kann OTRS offenbar kein TLS und der Exchange2007 versteht gemäss unserem Lieferanten nur TLS und kein smtps über openssl.

Jetzt würde ich gerne Postfix so konfigurieren, dass ich aus OTRS die Mails lokal sende und Postfix sie an unseren Exchange2007 mit der nötigen Authentifizierung weiterleitet. Dass das gehen müsste, hat mir jemand gesagt. Dummerweise nicht wie.

Bis jetzt hab ich Postfix mal nach dem HowTo von The Perfect Server eingerichtet. Aber da versucht Postfix dann natürlich als eigenständiger Mailserver zu agieren und das geht nicht, weil der Server auf der Firewall keine Berechtigung für Port 25 hat. Eigentlich sollte er die Mails an den CAS vom Exchange2007 weiterleiten.

Ich hab mich ehrlich gesagt nie so tief mit Mailservern beschäftigt. Weiss grad jemand ein vernünftiges HowTo oder könnte mir mit den nötigen Konfigurations Infos aushelfen ?
 

Tooltime

Advanced Hacker
garwen schrieb:
Dummerweise kann OTRS offenbar kein TLS und der Exchange2007 versteht gemäss unserem Lieferanten nur TLS und kein smtps über openssl.
Was ist der Unterschied zwischen TLS und smtps?

Ich versuche es mal anders. Welche Daten bekommst du für die Verbindung, Benutzername/Passwort oder ein Zertifikat?
 
OP
G

garwen

Newbie
Tooltime schrieb:
Was ist der Unterschied zwischen TLS und smtps?
Das ist vermutlich der Knackpunkt an der ganzen Angelegenheit :)
Auf dem OTRS Forum redete er von "statischem SSL" und meinte damit smtps.
Unser Lieferant meinte aber, dass smtp + TLS = smtps.

Auf dem Exchange haben wir beides eingerichtet. Ich könnte auf Port 25 mit einem Zertifikat verbinden, oder auf Port 587 mit Benutzername/Passwort + TLS.
Je nach dem was mit Postfix einfacher ist und funktioniert.
 

spoensche

Moderator
Teammitglied
Es funktioniert beides. Zertifikate haben den Vorteil, dass sie nicht einfach von einer anderen Person verwendet werden können. Bei der passwortbasierenden Authentifizierung sieht das schon wieder anders aus.

http://www.postfix.org/TLS_README.html
 

Tooltime

Advanced Hacker
garwen schrieb:
Unser Lieferant meinte aber, dass smtp + TLS = smtps.
Genauso kenne ich es auch, daher meine blöde Frage. Bei smtp muss man die Verschlüsselung erst mit einem start tls Kommando einschalten, während bei smtps gleich die verschlüsselte Verbindung aufgebaut wird.

spoensche schrieb:
Zertifikate haben den Vorteil, dass sie nicht einfach von einer anderen Person verwendet werden können.
Sehe ich auch ein bisschen anders. Ob nun die Kombination Benutzer/Passwort in einer Datei steht oder der privat Key. Wenn jemand die entsprechende Datei lesen kann, kann er beides missbrauchen.

Der Vorteil von Benutzer/Passwort, man kann das einfach mit YaST einrichten.
 
OP
G

garwen

Newbie
spoensche schrieb:
Es funktioniert beides. Zertifikate haben den Vorteil, dass sie nicht einfach von einer anderen Person verwendet werden können. Bei der passwortbasierenden Authentifizierung sieht das schon wieder anders aus.

http://www.postfix.org/TLS_README.html

Das Readme ist echt gut. Da kommt der eine oder andere Aha-Effekt :thumbs:
Seltsam, dass ich über google nie da drauf gestossen bin.

Hab jetzt die internen Mails endlich lauffähig, nur mit dem Zertifikat klappt es noch nicht so ganz. Erhalte da im Maillog noch
Code:
certificate verification failed for smtpserver.firma.com[1.1.1.1]:25: untrusted issuer /C=Zertifikatsinfos
Muss ich im Detail noch anschauen, hab jetzt grad nicht die Zeit übrig dafür.

Auf jeden Fall mal ein dickes Danke an Euch 2. Das hat mich schon um einiges weiter gebracht. Nicht nur bezüglich Funktion, sondern auch als Lerneffekt :)
 

Tooltime

Advanced Hacker
garwen schrieb:
Das Readme ist echt gut. Da kommt der eine oder andere Aha-Effekt Seltsam, dass ich über google nie da drauf gestossen bin.
Dann probiere mal folgendes, installiere das Paket postfix-doc und schaue mal unter
  • /usr/share/doc/packages/postfix-doc/html/index.html
bzw.
  • /usr/share/doc/packages/postfix-doc/html/TLS_README.html
nach.

Aber zurück zum Restproblem, stellt sich natürlich die Frage ob das Zertifikat für smtpserver.firma.com von einer offiziellen CA ausgestellt wurde, oder von einer lokalen CA. Im zweiten Fall kann der Postfix-Rechner die CA natürlich nicht kennen.
 
OP
G

garwen

Newbie
Tooltime schrieb:
Dann probiere mal folgendes, installiere das Paket postfix-doc und schaue mal unter
  • /usr/share/doc/packages/postfix-doc/html/index.html
bzw.
  • /usr/share/doc/packages/postfix-doc/html/TLS_README.html
nach.
Okok, rtfm. Hab den Wink verstanden ;)

Aber zurück zum Restproblem, stellt sich natürlich die Frage ob das Zertifikat für smtpserver.firma.com von einer offiziellen CA ausgestellt wurde, oder von einer lokalen CA. Im zweiten Fall kann der Postfix-Rechner die CA natürlich nicht kennen.
Das Zertifikat ist von QuoVadis Limited. Ist meines wissens eine offizielle CA
 

Tooltime

Advanced Hacker
garwen schrieb:
Okok, rtfm. Hab den Wink verstanden
Ich wollte nur zeigen das die besten Informationen manchmal näher sind als man denkt. Früher wurde die Doku (bei manchen Paketen heute immer noch) einfach unter /usr/share/doc/packages/Paketname abgelegt. Da die wenigsten dort aber nachschauen ist man wohl dazu übergegangen die Doku in ein Extrapaket zu stecken und erst garnicht mehr zu installieren. Sei ehrlich hast du schon mal einen Blick in Handbuch von openSUSE geworfen (/usr/share/doc/manual/opensuse-manuals_de/manual/index.html)?

Zurück zum Thema, schau mal hier:
speziel smtp_tls_CAfile und smtp_tls_CApath. Hätte gedacht das postfix die CA's vom System benutzt, tut er anscheinend nicht. Probiere es mal mit smtp_tls_CApath=/etc/ssl/certs in der main.cf.
 
OP
G

garwen

Newbie
Die Einträge hab ich gestern Nachmittag gesehen.

Also...ich hab in /etc/ssl/certs 3 Zertifikate von QuoVadis. Die habe ich alle zusammen in eine Datei server.pem geschrieben.
Dann füge ich folgende Zeilen der main.cf hinzu:
Code:
smtp_tls_CAfile = /etc/postfix/ssl/server.pem
smtp_tls_CApath = /etc/ssl/certs
Darauf meldet unser smtp-server "530 5.7.1 Client was not authenticated"

Gut, er will also noch ein Login. Machen wir doch :). Folgende Zeilen hinzugefügt:
Code:
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
smtp_sasl_security_option = noanonymous
Dann hab ich die Datei smtp_auth erstellt, BN/PW rein geschrieben.
Code:
smtp-server.firma.com      benutzer:passwort
und ins hash-Format umwandeln
Code:
postmap smtp_auth

Jetzt erhalte ich folgende Einträge im Maillog:
Code:
May  5 08:32:00 mein-server postfix/pickup[12353]: 6723A1E01E3: uid=30 from=<helpdesk@firma.com>
May  5 08:32:00 mein-server postfix/cleanup[12368]: 6723A1E01E3: message-id=<1273041120.384423.299521091.133.2@mein-server.firma.com>
May  5 08:32:00 mein-server postfix/qmgr[12354]: 6723A1E01E3: from=<helpdesk@firma.com>, size=4506, nrcpt=1 (queue active)
May  5 08:32:00 mein-server postfix/smtp[12370]: warning: SASL authentication failure: GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information (Credentials cache file '/tmp/krb5cc_51' not found)
May  5 08:32:00 mein-server postfix/smtp[12370]: 6723A1E01E3: to=<externe@adresse.com>, relay=smtp-server.firma.com[1.1.1.1]:587, delay=0.11, delays=0.02/0.02/0.06/0, dsn=4.7.0, status=deferred (SASL authentication failed; cannot authenticate to server smtp-server.firma.com[1.1.1.1]: generic failure)

Was ich jetzt damit anfangen soll, weiss ich grad auch nicht. Das einzige einigermassen vernünftige, das ich dazu finde ist eine Bugmeldung aus einem Ubuntu Forum https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/416264

Hab da die Variante 2) Versucht, ändert aber nix an der Fehlermeldung.
 

Tooltime

Advanced Hacker
garwen schrieb:
Hab da die Variante 2) Versucht, ändert aber nix an der Fehlermeldung.
du meinst /etc/ssh/ssh_config ..., das ist eine ganz andere Baustelle.

Wenn ich das richtig sehe verlangt die Exchange-Kiste eine Auth über Kerberos und unterstützt keine einfachen Benutzer/Passwort Logins. Weiß jetzt nicht wie Kerberos auf Windows heißt, das ist so ein zentraler Schlüsseldienst an den sich sowohl Client und Server anmelden müssen. Der Client bekommt beim Schlüsseldienst ein Ticket für den Server/Dienst das speziell mit einem Schlüssel verschlüsselt ist das nur der Serverdienst auspacken kann, daran ist quasi ein Test den der Client nur mit seinen Schlüssel bestehen kann. Durch diesen gegenseitigen Check wissen sowohl Client als Server das sie mit dem richtigen Partner reden. Jetzt kommt die schlechte Nachricht, ich weiß jetzt auch nicht auf die Schnelle wie man Postfix auf Kerberos umstellt, normaler Weise stellt man das ganze System auf Kerberos um.

Ich würde daher sagen, wir sollten es mit dem Zertifikat weitermachen. Deshalb eine kleine Zusammenfassung, wo man wie etwas Konfigurieren kann.

1. Mit relayhost = nächster_Mailserver definiert wo die Mails abgeliefert werden sollen, Zielport 25. Für einen beliebigen Zielport relayhost = nächster_Mailserver:portnummer

2.
smtp_tls_CAfile und smtp_tls_CApath dienen nur um das Zertifikat des Exchange-Server zu überprüfen.
garwen schrieb:
Also...ich hab in /etc/ssl/certs 3 Zertifikate von QuoVadis. Die habe ich alle zusammen in eine Datei server.pem geschrieben.Dann füge ich folgende Zeilen der main.cf hinzu:
Überflüssig, durch
Tooltime schrieb:
mit smtp_tls_CApath=/etc/ssl/certs in der main.cf.
werden die Zertifikate schon gefunden.

3.
Damit Postfix sich mit einem Zertifikat ausweisen muss man

  • smtp_tls_cert_file
    smtp_tls_key_file
sinnvoll bestücken. Natürlich muss dem Exchange-Server die CA bekannt sein die das Zertifikat für Postfix ausgestellt hat.
 
OP
G

garwen

Newbie
Da müsste ich also die passenden Client Cert und Client Key Files zum verwendeten Server Zertifikat vom Exchange haben.
Mal gucken, wo ich die her bekomme.
 
OP
G

garwen

Newbie
Bekomme voraussichtlich nächste Woche das Client Zertifikat und den Key von unserem Mutterkonzern.
Muss also für den Moment warten...
 

Tooltime

Advanced Hacker
Oder kennst du jemanden der sich mit Exchange auskennt und weiß welche Auth-Typen vom Server unterstützt werden.? Für die Kerberos-Variante benötigt man die Win xxx Professional Versionen, ich kann mir nicht vorstellen das Onkel MS seine Win xxx Home-Varianten vom Mailserver ausschließt.

Oder einfach ohne nachzudenken auf Port 25 anklopfen, vielleicht unterstützt dieser andere Auth-Mechanismen.
 
OP
G

garwen

Newbie
Wir haben auf Port 587 Auth Login eingerichtet. Hab das aber nicht vernünftig zum laufen bekommen.
Ausserdem hoffe ich, dass wir mit der Zertifikats Authentifizierung umgehen könnten, dass beim Absender zwingend der Authuser steht.
 
OP
G

garwen

Newbie
So, jetzt hab ich endlich die Zertifikate.
Habe jetzt 2 pem Dateien, jeweils mit Key und Zertifikat.
Mit denen habe ich smtp_tls_cert_file und smtp_tls_key_file bestückt.
Dazu hab ich noch eine .inf eine .pfx und eine .pse Datei.

Wenn ich jetzt versuche ein Mail nach extern zu schicken, erhalte ich keine TLS Fehler mehr, aber immer noch "unable to relay"
 

Tooltime

Advanced Hacker
Und sonst keine weiteren Meldungen im Logfile von postfix, normaler Weise müsste da irgendwie drinstehen warum er die Mail nicht los wird. Liefert Exchange einen Hinweis warum er den Auftrag ablehnt? So fällt mir nichts ein woran es liegen könnte, mit Exchange selbst kenne ich mich nicht aus.
 
OP
G

garwen

Newbie
Code:
May 28 11:57:49 OTRS-SERVER postfix/qmgr[2832]: 1D8EA1E01F6: from=<helpdesk@firma.com>, size=6855, nrcpt=2 (queue active)
May 28 11:57:49 OTRS-SERVER postfix/qmgr[2832]: AE6A91E0201: from=<helpdesk@firma.com>, size=8009, nrcpt=2 (queue active)
May 28 11:57:54 OTRS-SERVER postfix/smtp[2844]: AE6A91E0201: to=<externe@adresse.com>, relay=smtp-server.firma.com[1.1.1.1]:25, delay=11576, delays=11571/0.03/0.08/5, dsn=5.7.1, status=bounced (host smtp-server.firma.com[1.1.1.1] said: 550 5.7.1 Unable to relay (in reply to RCPT TO command))
May 28 11:57:54 OTRS-SERVER postfix/smtp[2842]: 1D8EA1E01F6: to=<externe@adresse.com>, relay=smtp-server.firma.com[1.1.1.1]:25, delay=11707, delays=11701/0.03/0.1/5, dsn=5.7.1, status=bounced (host smtp-server.firma.com[1.1.1.1] said: 550 5.7.1 Unable to relay (in reply to RCPT TO command))
May 28 11:57:54 OTRS-SERVER postfix/smtp[2844]: AE6A91E0201: to=<zu.mir@firma.com>, relay=smtp-server.firma.com[1.1.1.1]:25, delay=11576, delays=11571/0.03/0.08/5.3, dsn=2.6.0, status=sent (250 2.6.0 <1275029098.770994.595199878.133.2@OTRS-SERVER.micarna.ch> Queued mail for delivery)
May 28 11:57:54 OTRS-SERVER postfix/smtp[2842]: 1D8EA1E01F6: to=<zu.mir@firma.com>, relay=smtp-server.firma.com[1.1.1.1]:25, delay=11707, delays=11701/0.03/0.1/5.3, dsn=2.6.0, status=sent (250 2.6.0 <1275028967.492993.114307708.133.2@OTRS-SERVER.micarna.ch> Queued mail for delivery)
May 28 11:57:54 OTRS-SERVER postfix/cleanup[2850]: EF1451E059D: message-id=<20100528095754.EF1451E059D@OTRS-SERVER.micarna.ch>
May 28 11:57:54 OTRS-SERVER postfix/qmgr[2832]: EF1451E059D: from=<>, size=9946, nrcpt=1 (queue active)
May 28 11:57:54 OTRS-SERVER postfix/bounce[2847]: AE6A91E0201: sender non-delivery notification: EF1451E059D
May 28 11:57:54 OTRS-SERVER postfix/qmgr[2832]: AE6A91E0201: removed
May 28 11:57:54 OTRS-SERVER postfix/cleanup[2850]: F0AC01E0201: message-id=<20100528095754.F0AC01E0201@OTRS-SERVER.micarna.ch>
May 28 11:57:54 OTRS-SERVER postfix/qmgr[2832]: F0AC01E0201: from=<>, size=8792, nrcpt=1 (queue active)
May 28 11:57:54 OTRS-SERVER postfix/bounce[2848]: 1D8EA1E01F6: sender non-delivery notification: F0AC01E0201
May 28 11:57:54 OTRS-SERVER postfix/qmgr[2832]: 1D8EA1E01F6: removed
May 28 11:57:55 OTRS-SERVER postfix/smtp[2844]: EF1451E059D: to=<helpdesk@firma.com>, relay=smtp-server.firma.com[1.1.1.1]:25, delay=0.22, delays=0.02/0/0.08/0.11, dsn=2.6.0, status=sent (250 2.6.0 <20100528095754.EF1451E059D@OTRS-SERVER.micarna.ch> Queued mail for delivery)
May 28 11:57:55 OTRS-SERVER postfix/qmgr[2832]: EF1451E059D: removed
May 28 11:57:55 OTRS-SERVER postfix/smtp[2842]: F0AC01E0201: to=<helpdesk@firma.com>, relay=smtp-server.firma.com[1.1.1.1]:25, delay=0.21, delays=0.02/0/0.08/0.11, dsn=2.6.0, status=sent (250 2.6.0 <20100528095754.F0AC01E0201@OTRS-SERVER.micarna.ch> Queued mail for delivery)
May 28 11:57:55 OTRS-SERVER postfix/qmgr[2832]: F0AC01E0201: removed

Mehr steht nicht im Log.
Sieht so aus, als würde der Exchange Server keine Zertifikats-Authentifizierung akzeptieren.
 

spoensche

Moderator
Teammitglied
Code:
smtp-server.firma.com[1.1.1.1] said: 550 5.7.1 Unable to relay (in reply to RCPT TO command))
May 28 11:57:54 OTRS-SERVER postfix/smtp[2844]: AE6A91E0201: to=<zu.mir@firma.com>, relay=smtp-server.firma.com[1.1.1.1]:25

Der Versuch das Relay zu kontaktieren schlägt fehl und daher geht die Nachricht auch nicht raus. Was gibtt den der Exchange für Meldungen preis?
 

Tooltime

Advanced Hacker
So wie es aussieht verweigert exchange das Relaying von Mails von Haus aus, wenn die Quelle ebenfalls ein Mailrelay ist. Damit es funktioniert muss auf dem exchange-Server ein spezieller connector definiert werden. Wende dich deswegen mal an den Exchange-Admin.

Außerdem bin ich auf einen Artikel gestoßen, der als zweite Fehlerquelle die Absenderadresse nennt. Offenbar lehnt exchange die Mails auch ab, wenn er den Absender nicht kennt. Dabei ging es auch um eine Linux-Kiste wo die Mail per Script mit username@hostname als Absenderadesse verschickt wurde.
 
Oben