# SMTP-Host automatisch ermittlen



## chaostheory (5. Dez 2012)

Hallo,
 ich schreibe ein Programm, das Benutzer über bestimmte Ereignisse per E-Mail benachrichtigt.
Der E-Mail Versand funktioniert so weit gut, aber ich muss bisher den Benutzer erst nach dem SMTP-Host fragen.
Nirgendwo im Internet muss man zu seiner E-Mail-Adresse den Host mit angeben und die meisten Leute wissen auch gar nicht was das ist. Gibt es eine Möglichkeit den Host per Java automatisch aus der Adresse zu ermitteln oder den Versand irgendwie weiter zu reichen?

Vielen Dank!


----------



## nillehammer (5. Dez 2012)

Zunächst zum technischen Hintergrund:
Das ist eine Funktionalität des DNS und heißt Mail Exchanger Record (MX Record). Dabei fragt man das DNS nach dem für eine Domain (der Teil nach dem @ in der Mailadresse) zuständigen Mail Exchanger (also einem SMTP-Server) ab. Auf der Kommandozeile kannst Du das mal mit folgendem Kommando ausprobieren: 
	
	
	
	





```
nslookup -type=mx google.de
```
 In Java geht das natürlich auch. Der Code ist aber etwas umfangreicher als man denkt. Hier ist ein recht gut kommentierter Code als Kopiervorlage: https://www.eyeasme.com/Shayne/MAILHOSTS/mailHostsLookup.html

Eigentlich brauchst Du aber nicht direkt mit dem SMTP-Server des Kunden zu kommunizieren. Du hast i.d.R. einen eigenen, an den Du alle Mails weiterreichst und der schickt das dann ans Ziel. Dein Java-Programm ist dabei ein Mailclient wie z.B. Outlook. Bei Outlook trägst Du ja auch nur Deinen eigenen SMTP-Server ein.


----------



## chaostheory (5. Dez 2012)

Vielen Dank für die ausführliche Antwort! Ich kann also einfach alle meine Mails an den SMTP-Server meiner Absenderadresse schicken? Das würde natürlich vieles vereinfachen...


----------



## Marcinek (5. Dez 2012)

Vielleicht geht das so in einigen Fällen, aber sicher nicht mit allen.

Wenn du Mails verschicken willst, dann brauchst die die Angabe eines SMTP.

Afaik steht in den MX-Records nicht der SMPT sondern der MTA drin.

Weiterhin braucht man bei seriösen SMTPs immer eine Authentifizierung.

Wenn ich also dein Programm nutze und meine @xxx.de andresse angebe, dann kannst du nicht annehmen, dass xxx.de mein SMTP ist und vor allem brauchst du noch einen Login.

Gruß,

MArtin


----------



## nillehammer (5. Dez 2012)

chaostheory hat gesagt.:
			
		

> Vielen Dank für die ausführliche Antwort! Ich kann also einfach alle meine Mails an den SMTP-Server meiner Absenderadresse schicken? Das würde natürlich vieles vereinfachen...


Ja, genauso geht es. Konfigurier den SMTP-Server (Adresse plus Logindaten) und schicke alle Mails über den raus.


			
				Marcinek hat gesagt.:
			
		

> Afaik steht in den MX-Records nicht der SMPT sondern der MTA drin.


Der MTA ist ein SMTP-Server.


			
				Marcinek hat gesagt.:
			
		

> Weiterhin braucht man bei seriösen SMTPs immer eine Authentifizierung.


Bei Mails, für die der MTA selbst zuständig ist, braucht man das i.d.R nicht. Sonst könnten MTAs sich untereinander keine Mails weiterreichen.


			
				Marcinek hat gesagt.:
			
		

> Wenn ich also dein Programm nutze und meine @xxx.de andresse angebe, dann kannst du nicht annehmen, dass xxx.de mein SMTP ist und vor allem brauchst du noch einen Login.


Das kann man tatsächlich nicht annehmen. Wenn man aber eine MX-Anfrage nach xxx.de macht, bekommt man als Antwort den zuständigen MTA. Mit dem mus man sich dann verbinden.

Aber wie gesagt, sollte alles nicht nötig sein. Man schickt Mails über den eigenen MTA raus und der kümmert sich um den Rest.


----------



## TheDarkRose (5. Dez 2012)

nillehammer hat gesagt.:


> Der MTA ist ein SMTP-Server.


Mail Transfer Agent, nicht immer dafür gedacht, das dort Clients einliefern, sondern oft nur für MTA zu MTA.



nillehammer hat gesagt.:


> Bei Mails, für die der MTA selbst zuständig ist, braucht man das i.d.R nicht. Sonst könnten MTAs sich untereinander keine Mails weiterreichen.


Eher doch, sonst könnte man einfach jeder zuspammen. Das andere MTA einliefern können, liegt eher an korrekter Konfiguration (saubereres HELO, korrekter PTR-Eintrag im DNS, oft auch richtiger MX Eintrag wichtig) und einer statischen IP-Adresse. Dynamisch ist immer eine Auth erforderlich, weil man meist dort Client ist. Vorallem sollte man als Client nicht als jeder senden dürfen, sondern nur mit dem Absender, mit dem man sich Authentifiziert hat.


----------



## trääät (5. Dez 2012)

das problem ist von dir nicht eindeutig erklärt ...

redest du von einem programm das auf dem user-rechner läuft und diesen dann selbst per e-mail über irgendwas informieren soll ?

was bitte soll das denn ?

warum bitte sollte ein programm auf meinem rechner mir selbst eine e-mail schicken nur um mich über etwas zu informieren anstatt einfach einen dialog zu öffnen ?

oder läuft das ding auf nem server als überwachung ? dann nutzt du einfach den mail-server des user-servers selbst ...

das ganze hat auch nicht wirklich was mit MX-record oder der gleichen zu tun ...

die frage ist eigentlich nur : hast du eine zentrale stelle die die mails verteilen soll oder schickt das programm des users sich selbst ne mail ...

oder geht es darum das das programm auf dem user-rechner DIR ne mail schicken soll ? dann muss natürlich der user seine daten ganz normal wie bei jedem anderen mailer eingeben ...


also um dir zu antworten hätte ich persönlich einfach zu wenig infos ...


----------



## chaostheory (5. Dez 2012)

In Thunderbird habe ich bei allen meinen Adressen auch einfach den eigenen SMTP-Server angegeben bzw. hat Thunderbird selbst ermittelt. Das sollte demnach wirklich funktionieren, meine bisherigen Tests funktionierten auch zwischen unterschiedlichen Domains mit dem gleichen, eigenen SMTP-Server gut.

@trääät: Das Programm läuft auf einem Server und informiert die Nutzer per Mail über Änderungen im Vertretungsplan. Allerdings wir es wohl auf einem kleinen, normalen Rechner in der Schule laufen und nicht auf einem professionellen Server...


----------



## TheDarkRose (5. Dez 2012)

chaostheory hat gesagt.:


> In Thunderbird habe ich bei allen meinen Adressen auch einfach den eigenen SMTP-Server angegeben bzw. hat Thunderbird selbst ermittelt. Das sollte demnach wirklich funktionieren, meine bisherigen Tests funktionierten auch zwischen unterschiedlichen Domains mit dem gleichen, eigenen SMTP-Server gut.



Liegt daran, das Thunderbird selbst Listen verwaltet, bzw. eben manchmal erratene Standarddomains funktionieren oder auch wirklich mal der MX Eintrag (bei kleinen Domains) auch der SMTP für Clients ist.


----------



## nillehammer (5. Dez 2012)

Wie man sieht, ist sowas simples wie Mail schon Stoff für ausgiebige Diskussionen und Fehlinterpretationen. Ich hätte da zwar noch was zu zu sagen, aber verkneife es mir...



			
				chaostheory hat gesagt.:
			
		

> In Thunderbird habe ich bei allen meinen Adressen auch einfach den eigenen SMTP-Server angegeben bzw. hat Thunderbird selbst ermittelt. Das sollte demnach wirklich funktionieren, meine bisherigen Tests funktionierten auch zwischen unterschiedlichen Domains mit dem gleichen, eigenen SMTP-Server gut.


Heißt das, Du kommst jetzt klar?


----------



## chaostheory (5. Dez 2012)

Ich weiß nicht ob das für alle Anbieter funktioniert, aber momentan komme ich klar, ja.


----------



## tröööt (5. Dez 2012)

-.- ... darum geht es also ...
gut ... dann ist die lösung einfach

1) um die smtp-server der empfänger musst du dich nicht kümmern
2) entweder du baust die software so das sie deinen mail account nutzt ... also die mails von dir kommen ... oder du nutzt den mail-server der schule ...

warum gibt es immer wieder leute die es nicht packen sich klar auszudrücken und zusammenhängende themen auch als solche in einem thread zu behandeln ...


----------



## chaostheory (5. Dez 2012)

tröööt hat gesagt.:


> -.- ... darum geht es also ...
> gut ... dann ist die lösung einfach
> 
> 1) um die smtp-server der empfänger musst du dich nicht kümmern
> ...



Es tut mir Leid, dass ich mich unverständlich ausgedrückt habe.
Aber ich habe gesagt ich suchte eine Möglichkeit den Benutzer nicht nach seinem SMTP-Server fragen zu müssen oder den Versand an den entsprechenden SMTP-Server von wem anders übernehmen zu lassen. Daraus sollte doch eigentlich ersichtlich sein, dass es mir nicht um den SMTP-Server an sich, sondern um einen komfortablen E-Mail-Versand geht.


----------



## trääät (5. Dez 2012)

sorry ... aber zumindest mir wurde das nicht klar ... mal vom zusammenhang zum anderen thread abgesehen ...

deutlich wäre es gewesen wenn sowas gekommen wäre wie das du einene app hast die halt von einem rechner aus mails an andere senden soll ... also ein ganz normales "mail-programm" halt ... was eben nur die einzige aufgabe hat e-mails zu versenden ...

und ob das wie gesagt als absender über deinen mail-account bei deinem mail-provider läuft ... in diesem fall müsstest du diese daten eingeben ... oder eben über den schul-"server" selbst direkt ist völlig egal ...

die meisten staatlichen "lehranstalten" besitzen einen vom bund gestellt zugang zum jeweiligen landes-server der im landesbildungs-irgendwasgedöns steht über den sowohl web-präsenz als auch e-mail-verkehr abgewickelt werden KÖNNEN ...
es gibt auch einige schulen die dies durch eigene server übernehmen ... andere leiten es schlicht weiter durch ne art "proxy" ... und wieder andere nehmen dies halt komplett in kauf ...

grundsätzlich SOLLTE also deine schule ein postfach auf dem entsprechenden bildungs-server besitzen und von diesem aus via SMTP einfach e-mails senden können ... ich weis allerdings nicht ob als absender dann irgendwie n rechner im jeweiligen schul-netz stehen muss oder ob dieses postfach public zugänglich ist ... hab meinen info-lehrer damals nicht so genau ausgefragt und ist auch schon ne weile her ...

da man allerdings jetzt auch n bezug zum eigentlichen thema hat : warum machst du dir eigentlich immer noch darüber gedanken wenn nicht mal feststeht ob deine schul-leitung sich überhaupt auf deine software einlässt ?


----------



## Bernd Hohmann (5. Dez 2012)

TheDarkRose hat gesagt.:


> Das andere MTA einliefern können, liegt eher an korrekter Konfiguration (saubereres HELO, korrekter PTR-Eintrag im DNS, oft auch richtiger MX Eintrag wichtig) und einer statischen IP-Adresse. Dynamisch ist immer eine Auth erforderlich, weil man meist dort Client ist.



Letzteres ist nicht korrekt - der IP sieht man nicht an, ob sie "statisch" oder "dynamisch" ist.

Auf sowas wie *.dip0.t-dialin.net zu filtern ist nicht spassig weil zB. die DTAG grössere Ex-DSL-Blöcke mit Zwangstrennung jetzt als "DSL-Standleitung" vertickert ohne die Reverse-Delegation geändert zu haben 

Bernd


----------



## Bernd Hohmann (5. Dez 2012)

chaostheory hat gesagt.:


> Es tut mir Leid, dass ich mich unverständlich ausgedrückt habe.
> Aber ich habe gesagt ich suchte eine Möglichkeit den Benutzer nicht nach seinem SMTP-Server fragen zu müssen oder den Versand an den entsprechenden SMTP-Server von wem anders übernehmen zu lassen. Daraus sollte doch eigentlich ersichtlich sein, dass es mir nicht um den SMTP-Server an sich, sondern um einen komfortablen E-Mail-Versand geht.



Mail soll grundsätzlich über das System versendet werden, das dem Benutzer zugeteilt ist (Smarthost). Der Versuch, über seinen PC direkt am Zielsystem zuzustellen geht in der heutigen Zeit immer mehr in die Hose.

Den für sich zuständigen Smarthost kann man im günstigsten Fall erraten:

1) Er heisst "mail.meinedomain.tld"
2) Der Mailexchanger für "meinedomain.tld" ist oft auch Einwurfpunkt für Usermail

Auf den gefundenen Hosts kann man mal einen Socket auf Port 587 (Auth-SMTP) und/oder Port 25 (SMTP) aufmachen, die Capabilities abfragen und die damit in Erfahrung gebrachten Authentifizierungsmöglichkeiten abklappern bis man eine Testmail an sich selber los wird und die auch ankommt.

Thunderbird macht das auch so, kommuniziert aber nicht eine eventuelle Fehlermeldung und besteht darauf dass die alleinige Ursache nur ein falscher Username/Password sein kann.

Bernd


----------

