# E-Mail / dkim / Spam & Co



## xamunrax (26. April 2016)

Hallo zusammen,

leider kann ich den Thread nicht besser beschreiben da mir hier einfach das Verständnis zu E-Mails und deren Validierung fehlt.

Mein Setup:
- Ich habe eine Domain bei All-Inkl (alle DNS-Records kann ich setzen)
- Um die administration eines E-Mail-Servers zu vermeiden, nutze ich den Server von All-Inkl.
- Mein Server an sich liegt jedoch bei digitalocean (ubuntu) (der DNS-Eintrag * CNAME verweisst auf den Server bei DigitalOcean)

Nun zu meinem Problem:
Ich verschicke E-Mails via PHP über SMTP (All-Inkl Server) von dem Ubuntu-Server (digitalocean), bei vielen großen E-Mail-Hostern werden meine E-Mails abgelehnt oder landen im SPAM, das ist soweit auch nachvollziehbar da diese vom "from localhost [127.0.0.1]" aus gesendet werden.

Ich habe dieses Problem bereits ausgiebig gegoogled jedoch verstehe ich nicht was dkim (domainKeys) sind wie die Authentifizierung in meinem Fall funktionieren soll, etc.

Evtl. würde mir ja jemand von euch das ganze mal so erklären als wäre ich vier Jahre alt (vorzugsweise passend auf mein Setup).

Vielen Dank im voraus, 
Marco


----------



## sheel (26. April 2016)

Hi

das "from localhost" und DKIM sind zwei Paar Schuhe.

Das Erste ist ein Einstellungsproblem beim Mailserver.
Wenn man selber keinen Zugriff hat hilft wohl nur, sich mit dem Support herumzuärgern.

...
Unabhängig davon:

Mit einem (halb-)eigenen Mailserver kann man als Absender beliebige Adressen nehmen, auch solche, bei denen man nicht Besitzer der Domain ist. Aber eben nur beim eigenen Server, bei dem man Vollzugriff hat, und sich selbst natürlich keine Beschränkungen gibt.

Weil solche Fälschungen ziemlich zugenommen haben hat man sich überlegt, wie man beim Empfängerserver prüfen kann, ob der Absender richtig ist. Prinzipiell könnte man (als Empfängerserver) die IP vom Sendeserver hernehmen, per ReverseDNS die Domains dazu finden, und mit der angeblichen Absenderadresse im Mail vergleichen. Das Problem ist, es gibt auch legitime Fälle, bei denen man durch so eine Erkenunng rausgefiltert wird. Zum Beispiel:
a) STMP erlaubt, dass das Mail nicht direkt von Server A zu Server B gehen muss, sondern auch Umwege nehmen kann. Bei einem Mail von user1@A zu user2@B, das mit A->C->B einen Umweg über Server C nimmt, kann der Endempfänger B nur erkennen, dass user1@A und Server C nicht zusammenpassen ... obwohl es ja nicht gefälscht war. Solche Umleitungen findet man bei größeren Firmen etc. oft. Mitarbeiter -> hauseigener Server -> dann erst Provider usw.
b) Ähnlich zu oben: Man besitzt zwei Mailadressen bei verschiedenen Anbietern und hat eine so eingestellt, dass alles zur anderen weitergeleitet wird
c) ...

Der reine IP-Domain-Check ist also zu streng. Deswegen wurde dann DKIM (Und ein zweites Verfahren: SPF) erfunden, dass die ganzen Umleitungsprobleme nicht hat DKIM funktioniert auf der Basis von kryptographischen Signaturen:

Es gibt zunächst mal zwei Keys (=sehr lange, nicht zu erratende Passwörter), einen "privaten" und einen "öffentlichen". Wenn man den priv.Key hat kann man sich den öff.Key daraus ausrechnen, aber nicht umgekehrt. Der Sendeserver hat den priv.Key, und haltet den möglichst geheim. Wenn der Sendeserver jetzt ein Mail senden soll kann mit dem privKey eine Prüfsumme zum Mailinhalt ausgerechnet werden, die wird mit dem Mail mitgesendet.

Jemand, der das Mail mit Prüfsumme bekommt und den öff.Key weiß könnte damit überprüfen, a) ob der Mailinhalt unverändert ist, also so wie bei der Prüfsummenerstellung, und b) ob der Prüfsummenersteller wirklich den priv.Key kannte (der, der zum eigenen öff.Key dazupasst).

Die "Pointe" von DKIM ist, der öff.Key ist ein DNS-Eintrag, unabhängig vom Mailserver.
Der Empfängerserver prüft jetzt, ob die Prüfsumme vom Sendeserver zum öff.Key vom DNS passt. Wenn ja ist damit bewiesen, dass der, der den öff.Key ins DNS gestellt hat, auch Zugriff auf den Mailserver hatte (um dort den priv.Key einzustellen). Also Domainbesitzer = Serverbesitzer, und wenn das stimmt ist die angebliche Absenderdomain nicht gefälscht.

Hoffe, das ist wenigstens halbwegs verständlich  Wie die Berechnungen mit den Keys funktionieren und warum sie sicher sind braucht einiges an Mathematik, wahrscheinlich nicht so interessant (?)


----------



## xamunrax (27. April 2016)

besten Dank! Super verständlich.

Kurze Frage noch: 
Auf Server A (MailServer) habe ich nur eingeschränkten Zugriff.
Auf Server B (WebServer) habe ich Vollzugriff (root).

Der Mailversand wird ja via PHP auf Server B ausgelöst (und über SMTP Server A) versendet. So wie ich das jetzt verstanden habe ist dann die SPF-Einstellungen auf Server B vorzunehmen, korrekt?


----------



## sheel (27. April 2016)

Gehts jetzt um DKIM oder SPF?

SPF hat, so wie die "Einfachmethode" oben, auch das Weiterleitungsproblem.
(SPF und die Einfachmethode sind relativ ähnlich)

Jedenfalls, nein. Wenn auf Server B keine SMTP-Software ist, sondern der erste Punkt wirklich A ist, muss A sich darum kümmern dass es von anderen Mailservern akzeptiert wird. Die Übergabe vom Mail von B zu A ist vergleichbar zu "von Thunderbird daheim zu A" - ob A das akzeptiert hängt allein von A ab (zB. im Idealfall nur, wenn Benutzername+Passwort passen).

SMTP-Server haben immer zwei Empfangskanäle, daran muss man denken.
Der eine ist für Mails von anderen SMTP-Servern, da kann man mit DKIM DNS und Keys prüfen usw.usw.,
der andere ist für neue Mails von den Benutzern (die oft keinen DNS-Eintrag etc. haben, sind ja nicht alles Webserver)


----------

