[gelöst] Formular->Mail->OTRS Best Practice? SPF/DMARC

Hilfe zu Znuny Problemen aller Art
Locked
thermoman
Znuny newbie
Posts: 7
Joined: 02 Oct 2014, 11:09
Znuny Version: 3.3.3
Real Name: Marcel

[gelöst] Formular->Mail->OTRS Best Practice? SPF/DMARC

Post by thermoman »

Hi,

neben einer Support-Email-Adresse, an die Kunden sich via E-Mail wenden können (die von OTRS via IMAP/POP3 abgeholt werden), haben wir auch ein Kontakt-Formular auf der Webseite, über die Kunden sich an uns wenden können.

Der Kunde gibt seine E-Mail-adresse ein, seinen Text und klickt auf Absenden.

Der Webserver generierte eine E-Mail, als From: wird die E-Mail-Adresse des Kunden eingetragen, adressiert ist die E-Mail an ticketsystem@unseredomain.example.com.

E-Mails, die an unseredomain.example.com gesendet werden, werden von einem Drittanbieter entgegengenommen, der SPF- und DMARC-Einträge prüft, die E-Mails in einem Postfach abgelegt und OTRS holt sie von da ab.

Das Problem tritt nun auf, wenn z.B. ein User eine yahoo.com E-Mail-Adresse angibt.

Der Mail-Server des Drittanbieters verweigert dann die Annahme der E-Mail, weil laut Yahoo's DMARC Regeln unser aussendender Mailserver nicht berechtigt ist, E-Mails mit Absenderadresse irgendwas@yahoo.com zu versenden.

Das ist komplett richtig und nachvollziehbar wegen SPAM.

Wir könnten die E-Mail mit einer anderen From: Adresse generieren, z.B. noreply@unseredomain.example.com und die E-Mail-Adresse des Kunden in den Reply-To: Header schreiben. Dann würde OTRS beim Antworten auch an den Kunden antworten.

Problem dabei: Wir verwenden eine externe Customer-DB, um Zusatzinformationen über den Kunden im OTRS anzuzeigen.

D.h. OTRS müsste in diesem Fall in der Customer-DB nicht nach der E-Mail-Adresse im From: Header suchen, sondern nach der im Reply-To: Header.

Frage:

Wie löst man dieses Problem elegant?

Es müssen beide Fälle abgedeckt sein:

1. E-Mail kommt vom Kunden, im From: Header steht die Adresse mit der in der Customer-DB gesucht werden muss.
2. E-Mail kommt vom eigenen Webserver, im Reply-To: Header steht die Adresse des Kunden.

Können wir die Customer-ID in einem Extra-Header übergeben, so dass OTRS bei Vorhandensein dieses Headers in der Customer-DB danach sucht anstatt die From-Adresse zu nehmen?

Können wir mit einem Filter (Perl-Skript?) bei Vorhandensein des Reply-To: Headers dessen Inhalt einfach in den From: Header schreiben? Das wäre meiner Meinung nach das einfachste. Die Nachgelagerten Prozesse in OTRS könnten dann ganz normal auf die Info des From: Headers zugreifen, die Suche in der Customer-DB würde funktionieren, Antworten via OTRS gingen dann auch an die Adresse des Kunden.

Wie haben andere Firmen dieses Problem gelöst?

PS: Der OTRS-Server steht hinter einer Firewall, kann vom Webserver also nicht direkt erreicht werden, es muss also über SMTP laufen.

Gruß
thermoman
Last edited by thermoman on 02 Oct 2014, 15:21, edited 2 times in total.
reneeb
Znuny guru
Posts: 5018
Joined: 13 Mar 2011, 09:54
Znuny Version: 6.0.x
Real Name: Renée Bäcker
Company: Perl-Services.de
Contact:

Re: Best Practice? Formular->Mail->OTRS | SPF/DMARC Problem

Post by reneeb »

*) Wenn Du das mit dem Formular schon machen kannst, kannst Du direkt in der Mail den Header X-OTRS-CustomerNo bzw. X-OTRS-CustomerUser setzen.

*) Wenn Die Mailadresse in Reply-To auch die CustomerNo ist, dann kannst Du das auch mit einem einfachen Postmaster-Filter erledigen...

*) Natürlich kannst Du auch einen Postmaster-Prefilter mit Perl schreiben, der das From überschreibt
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
thermoman
Znuny newbie
Posts: 7
Joined: 02 Oct 2014, 11:09
Znuny Version: 3.3.3
Real Name: Marcel

Re: Best Practice? Formular->Mail->OTRS | SPF/DMARC Problem

Post by thermoman »

Hi reneeb,

danke für die Infos.

Kannst Du mir sagen, ob folgendes Vorgehen mich zum Ziel führen würde?

Vom Webserver generierte E-Mails ans Ticketsystem

1. verwenden als From: "noreply@unseredomain.example.com"
2. setzen den Reply-To: Header auf die E-Mail-Adresse des Kunden
3. setzen den X-OTRS-CustomerUser: Header auf die E-Mail-Adresse des Kunden (Mapping erfolgt anhand E-Mail-Adresse)

Müsste ich in OTRS noch weitere Einstellungen vornehmen oder wertet OTRS den X-OTRS Header automatisch aus wenn er vorhanden ist?

Gruß
Marcel
reneeb
Znuny guru
Posts: 5018
Joined: 13 Mar 2011, 09:54
Znuny Version: 6.0.x
Real Name: Renée Bäcker
Company: Perl-Services.de
Contact:

Re: Best Practice? Formular->Mail->OTRS | SPF/DMARC Problem

Post by reneeb »

Der Header wird automatisch ausgewertet wenn er da ist (https://github.com/OTRS/otrs/blob/rel-3 ... et.pm#L115)
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
thermoman
Znuny newbie
Posts: 7
Joined: 02 Oct 2014, 11:09
Znuny Version: 3.3.3
Real Name: Marcel

*** LÖSUNG ***

Post by thermoman »

Hi,

das setzen von X-OTRS-CustomerUser würde grundsätzlich funktionieren, jedoch zeigt OTRS in der Queue-Übersicht dann immernoch den Inhalt des From Headers an, was unschön ist.

Ich habe eine bessere Lösung gefunden, die meiner Meinung nach auch als Best Practice durchgeht:
replace-from-with-reply-to-content.png
Sobald in einer E-Mail, die von OTRS verarbeitet wird, der Header X-My-Secret-Header den Wert true aufweist, wird der Inhalt des Reply-To Headers in den From Header kopiert (sofern im Reply-To was sinnvolles drinsteht).

Somit stimmt anschließend die Verknüpfung zum CustomerDB-Objekt und auch in der Queue-Übersicht wird der richtige Name angezeigt.

Das ist meiner Meinung nach die eleganteste Lösung.

Der serverseitige Code des Kontaktformulars muss entsprechend geändert werden, was aber kein Problem darstellt.

Gruß
thermoman
You do not have the required permissions to view the files attached to this post.
Locked