PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mail über externen smtp-server verschicken



dsjiern
24.01.06, 00:16
Hallo,
ich habe derzeit ein kleines Problem und zwar haben wir an der Schule einen Linux-Server, der auch gleichzeitig als Webserver für die Schulhomepage verwendet wird. Jetzt wollte (bzw. sollte) ich auf die Homepage ein Kontaktformular erstellen für Ehemalige Schüler. Diese Daten sollten dann per Mail an eine dafür eingerichtete eMail-Adresse geschickt werden (Domain und eMail-Adresse sind bei 1und1 registriert). Jetzt habe ich nur das Problem, dass 1und1 keine eMails von dynamischen IP-Adressen annimmt (genauso wie z.B. web.de,...).
Ist es irgendwie möglich direkt im PHP-Skript eine Verbindung zum 1und1-SMTP-Server herzustellen, dort dann mit dieser Zieladresse anmelden und dann praktisch über diese eMail-Adresse die Mail (dann wieder an die gleiche Adresse) zu verschicken? Ich kann aus diversen Gründen nicht direkt in den PHP- / sendmail-Einstellungen den SMTP-Server eintragen, daher muss es direkt im Skript passieren.

thx
dsjiern

michaxyz
24.01.06, 09:04
Hallo,

mal ne andere Idee:
Ihr habt doch auch sicher einen lokalen MTA laufen, oder?
Dann wäre es vernünftig, die eMail erst mal an den zu schicken, was sicherheitstechnisch unbedenklich ist, weil die Mail ja von innen kommt. Der MTA müsste dann so konfiguriert sein, dass er die Mail richtig weiterleitet.
Solltet ihr keinen MTA laufen haben, so lohnt sich dieInstallation trotzdem, um eben diesem Problem zu begegnen.
Vorteil ist nämlich, dass der MTA sich bei 1und1 authentifizieren kann.

Natürlich kann ich mir auch eine Scriptlösung vorstellen, die auf die Auth-Anfragen von 1und1 richtig reagiert und dann die Mail absetzt.

Mfg Michael

dsjiern
24.01.06, 09:58
Hallo,

mal ne andere Idee:
Ihr habt doch auch sicher einen lokalen MTA laufen, oder?
Dann wäre es vernünftig, die eMail erst mal an den zu schicken, was sicherheitstechnisch unbedenklich ist, weil die Mail ja von innen kommt. Der MTA müsste dann so konfiguriert sein, dass er die Mail richtig weiterleitet.
Solltet ihr keinen MTA laufen haben, so lohnt sich dieInstallation trotzdem, um eben diesem Problem zu begegnen.
Vorteil ist nämlich, dass der MTA sich bei 1und1 authentifizieren kann.

Natürlich kann ich mir auch eine Scriptlösung vorstellen, die auf die Auth-Anfragen von 1und1 richtig reagiert und dann die Mail absetzt.

Mfg Michael

ich wollte es ja zuerst über mail() schicken, aber wie gesagt, akzeptiert 1und1 keine Mails, welche von einer dynamischen IP-Adresse kommen. Geht es, dass der sendmail-MTA für verschiedene eMail-Adressen verschiedene Server mit verschiedenen Passwörtern nimmt? Wir sind nämlich noch mit einer zweiten Schule verbunden, und daher haben wir natürlich auch verschiedene Mail-Adressen. Ich müsste also wenn ich zum Beispiel eine Mail über unsere Schulhomepage verschicken will mit 1und1 verbinden (da wir dort die Domain und die eMail-Postfächer haben) und dort mit einem bestimmten Konto anmelden. Wenn aber die andere Schule eine Mail schicken soll, soll mit freenet verbunden werden.
Unsere Mail soll also an xxx@dhg-rw.de gehen (und auch an diesem Konto [bei 1und1] anmelden), die Mail von der anderen Schule soll dann eben an xxx@amgrw.de gehen (und dementsprechend bei dem freenet-Konto anmelden).

thx
dsjiern

Sargnagel
24.01.06, 10:25
Mahlzeit...

Würde auch sagen, dass man das über den lokalen Mailserver machen sollte.

Es gibt doch massig SMTP-Client-Skriptsammlungen für PHP im Internet. Da sollte doch etwas zu finden sein.
Die Informationen zu Eurem Netzwerk sind recht dürftig :)...

Mein Webserver schickt anfallende Mails an den internen MTA, dieser wiederum stellt sie lokal zu, sofern nötig, oder er versendet sie an ein SMTP-Relay im Internet (über dessen Zugangsdaten er verfügt). Das Routing der Mails überlasse ich den Mailservern anhand der Zieladresse...

Grüzi!
Marc

dsjiern
24.01.06, 22:05
Mahlzeit...

Würde auch sagen, dass man das über den lokalen Mailserver machen sollte.

Es gibt doch massig SMTP-Client-Skriptsammlungen für PHP im Internet. Da sollte doch etwas zu finden sein.
Die Informationen zu Eurem Netzwerk sind recht dürftig :)...

Mein Webserver schickt anfallende Mails an den internen MTA, dieser wiederum stellt sie lokal zu, sofern nötig, oder er versendet sie an ein SMTP-Relay im Internet (über dessen Zugangsdaten er verfügt). Das Routing der Mails überlasse ich den Mailservern anhand der Zieladresse...

Grüzi!
Marc

Hi,
ich habe mir ja ein Script mit Anmeldung selber geschrieben:

<?php

function smtpmail($host, $user, $pass, $emailaddy, $toemail, $subject, $message)
{
$fp = fsockopen($host, 25);
if ($fp)
{
$result=fgets($fp, 1024);
print $result."<br>";

fputs($fp, "EHLO $host\r\n");
$result=fgets($fp, 1024);
print $result."<br>";

fputs($fp, "AUTH LOGIN\r\n");
$result=fgets($fp, 1024);
print $result."<br>";

fputs($fp, base64_encode($user) . "\r\n");
$result=fgets($fp, 1024);
print $result."<br>";

fputs($fp, base64_encode($pass) . "\r\n");
$result=fgets($fp, 1024);
print $result."<br>";

fputs($fp, "MAIL FROM: $emailaddy\r\n");
$result=fgets($fp, 1024);
print $result."<br>";

fputs($fp, "RCPT TO: $toemail\r\n");
$result=fgets($fp, 1024);
print $result."<br>";

fputs($fp, "DATA\r\n");
$result=fgets($fp, 1024);
print $result."<br>";

fputs($fp, "Subject: $subject\r\n");
fputs($fp, "FROM: $emailaddy\r\n");
fputs($fp, "TO: $toemail\r\n\r\n");
fputs($fp, "$message\r\n");
fputs($fp, ".\r\n");
$result=fgets($fp, 1024) ;
print $result."<br>";

fputs($fp, "QUIT\r\n");
$result=fgets($fp, 1024);
print $result."<br>";

fclose($fp);
}
else
{
echo "<b>Es konnte keine Email versandt werden, bitte wenden Sie sich an den Webmaster!</b><br>\n";
}
}

?>

und er zeigt mir dann auch an, dass er angemeldet ist (AUTH erfolgreich), aber er kann trotzdem nichts verschicken!

thx
dsjiern

tschloss
24.01.06, 23:02
Öffentliche SMTP-Server nehmen Mails auch von dnymischen IPs bisweilen an, wenn die Mail für User dieses Servers bestimmt ist.
Und sie nehmen sie zum Weiterleiten und lokale Auslieferung dann an, wenn die Authentifizierung ok ist (SMTP-AUTH oder pop-before-smtp). Das müßtest du deinem lokalen MTA (bei sendmail weiss ich nicht, wie das geht) halt noch beibiegen. Und zwar die richtige Auth-Methode. Hast du das bei deinem Skript berücksichtigt?

Thomas

dsjiern
25.01.06, 01:58
Öffentliche SMTP-Server nehmen Mails auch von dnymischen IPs bisweilen an, wenn die Mail für User dieses Servers bestimmt ist.
Und sie nehmen sie zum Weiterleiten und lokale Auslieferung dann an, wenn die Authentifizierung ok ist (SMTP-AUTH oder pop-before-smtp). Das müßtest du deinem lokalen MTA (bei sendmail weiss ich nicht, wie das geht) halt noch beibiegen. Und zwar die richtige Auth-Methode. Hast du das bei deinem Skript berücksichtigt?

Thomas

thx @all es funktioniert. ich hab einfach davor mit dem pop-server verbinden müssen sch*** SMTP-after-POP-AUTH...

Sargnagel
26.01.06, 13:50
Na prima!

Auch wenn diese Authentifizierungsvariante meines Erachtens für ein Skript unschön ist :) Aber das dürfte vom Provider kommen.

Grüzi!
Marc

heinzelrumpel
26.01.06, 23:46
Hi,

das mit dem lokalen mailserver ist an und für sich kein Problem, selbst bei dynamischer IP. Man muss nur etwas tricksen. Wir haben bei uns qmail laufen und in /etc/qmail/me steht normalerweise die lokale Domain. Nehm ich jetzt zum Beispiel die Domain von unserem Mailanbieter, bei dem wir unsere Domain registriert haben, dann akzeptiert er mich auch als Relay-Client.


Gruß

Torsten

tschloss
27.01.06, 10:22
Hi,

das mit dem lokalen mailserver ist an und für sich kein Problem, selbst bei dynamischer IP. Man muss nur etwas tricksen. Wir haben bei uns qmail laufen und in /etc/qmail/me steht normalerweise die lokale Domain. Nehm ich jetzt zum Beispiel die Domain von unserem Mailanbieter, bei dem wir unsere Domain registriert haben, dann akzeptiert er mich auch als Relay-Client.


Gruß

Torsten

Im Prinzip sollte sich die SMTP-Kommunikation von einem lokalen Client oder einem lokalen Server zu einem Provider MTA ja nicht unterscheiden. Also wenn ein Mailclient etwas beim Provider MTA abliefern kann, dann sollte es der lokale Server auch (Auth + Finetuning ggf. nötig).

Thomas