pate661
Goto Top

Mal.php mit Authentifizierter Anmeldung an einen SBS2008

Hallo Community!

Ich stehe vor der Lösung eines Problems unserer Website, die ich mit Webdesignwissen leider nicht lösen kann. Zur Situation:

- Windows Webserver 2008 (hostet die Website in einem externen Rechenzentrum)
- Windows SBS2008 steht lokal in der Firma

Über ein mail.php script soll der Webserver nun über den SBS Mails versenden können. Hierzu hatte ich mir folgendes Test-Script überlegt:

mail.php
<?php

//$smtpServer = "remote.xxxxxx.de";  //Hierüber ist der SBS von außen erreichbar// 
//$port = "25";   
//$timeout = "30";   
//$username = "DOMÄNE\Benutzer";   
//$password = "Kennwort3";   
//$localhost = "remote.xxxxxx.de"; 
$info="<p>Test Mail</p>";  
sendmail("Test Mail Adresse",'Contact Us',$info);  
function sendmail($emailid,$sub,$info)
{
	include 'class.phpmailer.php';  
	$mail = new PHPMailer;
	
	$mail->IsSMTP();  // Set mailer to use SMTP
	
	$mail->Host = 'remote.xxxxxx.de';    
	$mail->SMTPAuth = true;// 
	$mail->Port = 25; 
	$mail->Username = 'DOMÄNE\Benutzer';   
	$mail->Password = "Kennwort";   
	$mail->From = 'admin@xxxxxx.de';   
	$mail->FromName = 'Admin';  
	$mail->AddAddress($emailid, 'User');   
	$mail->AddReplyTo($emailid, 'User');   
	$mail->Subject = $sub;
	$mail->IsHTML(true);
	$mail->Body    = $info;
	if($mail->Send())	
	{
	echo 'Mail Success';  
	}
	echo 'Mail error: '.$mail->ErrorInfo;  
	return false;
}

?>

So weit so gut! Wenn ich das script nun aufrufe um zu testen, bekomme ich folgende Rückmeldung: SMTP Error: Could not authenticate. Mail error: SMTP Error: Could not authenticate.

Also ein Authentifizierungsfehler. Habe ich im Script was falsch bedacht oder muss ich am SBS Einstellungen prüfen? Mit Exchange Konfiguration kenne ich mich leider nur ein kleines bisschen aus.

Vielen Dank für die Hilfe!

Content-ID: 210998

Url: https://administrator.de/forum/mal-php-mit-authentifizierter-anmeldung-an-einen-sbs2008-210998.html

Ausgedruckt am: 23.12.2024 um 04:12 Uhr

bytecounter
bytecounter 09.07.2013 aktualisiert um 18:39:22 Uhr
Goto Top
Hallo,

also erstmal wäre es schön, wenn auch Du den Code formatieren könntest. Das würde es uns erheblich erleichtern.
Des Weiteren vermute ich mal, dass der Exchange an sich läuft und der SMTP-Port 25 auch offen ist und bereits - zumindest über andere Programme auch funktioniert?
Was sagt ein Testlogin mit z. B. Telnet?

vg
Pate661
Pate661 09.07.2013 um 18:49:00 Uhr
Goto Top
sorry, wegen des codes! Habe es korrigiert face-smile


Bzgl des smtp tests:

Test Result Hide
SMTP Reverse Banner Check OK - 217.XX.57.XX resolves to mail.XXXXXXXX.de

SMTP Reverse DNS Mismatch Warning - Reverse DNS does not match SMTP Banner Ignore
SMTP TLS OK - Supports TLS.
SMTP Connection Time 1.030 seconds - Good on Connection time
SMTP Open Relay OK - Not an open relay.
SMTP Transaction Time 8.658 seconds - Not good! on Transaction Time Ignore
bytecounter
bytecounter 09.07.2013 um 19:58:12 Uhr
Goto Top
In Deinem Test hast Du anscheinend versucht, den Server als Mailrelay zu nutzen (Abensderadresse gehört nicht dem SBS). Das mag er nicht. Und das ist auch gut so. Bringt uns bei Deinem Fehler aber nicht weiter. Versuch doch mal, Dich per Telnet einzuloggen und poste das gesamte Ergebnis.

vg
Pate661
Pate661 09.07.2013 um 20:49:09 Uhr
Goto Top
Lt. Telnet ist der Port 25 offen:

220 server.server.de Microsoft ESMTP MAIL Service ready at ......
110135
110135 09.07.2013 um 23:13:16 Uhr
Goto Top
Halli Hallo,

Hast du einmal versucht dich mit dem Usernamen@Domain anzumelden? In der jetzigen Version würdest du ein Escape-Zeichen vor dem B von Benutzername machen. Sprich das B escapen. Wenn du das so nutzen willst, müsstest du zwei Backslashes nehmen. Ich würde dir allerdings die Kombination mit dem @ empfehlen.

Bitte teste das einmal.

Gruß Florian.
Pate661
Pate661 10.07.2013 um 07:56:50 Uhr
Goto Top
Hallo!

Danke für den Hinweis! Ich habe das direkt mal versucht, leider auch hier nicht der gewünschte Effekt. Die mail.php sieht nach der Änderung so aus:

mail.php<?php

<?php

//$smtpServer = "remote.webadresse.de";   
//$port = "25";   
//$timeout = "30";   
//$username = "Nutzername@DOMÄNE";   
//$password = "Kennwort";   
//$localhost = "SERVER.GRUPPENNAME.local"; 
$info="<p>Test Mail</p>";  
sendmail("info@externe-mailadresse.de",'Contact Us',$info);  
function sendmail($emailid,$sub,$info)
{
	include 'class.phpmailer.php';  
	$mail = new PHPMailer;
	
	$mail->IsSMTP();  // Set mailer to use SMTP
	
	$mail->Host = 'remote.webadresse.de';  // Specify main and backup server. Should be in a config file  
	$mail->SMTPAuth = true;// Enable SMTP authentication.Should be in a 
	$mail->Port = 25; 
	$mail->Username = 'Nutzername@DOMÄNE';//   
	$mail->Password = "Kennwort";//   
	$mail->From = 'email adresse'; //Should be in a config file  
	$mail->FromName = 'Administrator'; //Should be in a config file  
	$mail->AddAddress($emailid, 'User');  // Add a recipient      
	$mail->AddReplyTo($emailid, 'User'); //Should be in a config file  
	$mail->Subject = $sub;
	$mail->IsHTML(true);
	$mail->Body    = $info;
	if($mail->Send())	
	{
	echo 'Mail Success';  
	}
	echo 'Mail error: '.$mail->ErrorInfo;  
	return false;
}

?>

Bzgl. der Angabe des localhost bin ich mit nicht sicher, ob ich hier die richtige Info eingegeben habe. Ich habe hier ebenfalls die smtp Serveradresse eingegeben, da diese der festen IP des Servers entspricht. Da von einem externen System auf den SBS zugegriffen wird, bringt die interne IP ja nix oder?

Ich habe mich auch mal in die Einstellungen des Exchange gewagt und mir dort einige Infos rausgezogen:

Unter dem Reiter Clientzuriff in der Verwaltungskonsole finde ich auf Ebene der Servereinstellungen unter Systemeinstellungen die Info:

Active Directory-Server: SERVER.GRUPENNAME.local

HUB-Transport:
Connectorstatus: Aktiviert
Die IP Adresse des Webservers ist in den Einstellungen Emails von Remoteservern mit folgender IP empfangen eingetragen.
Authentifizierung:
-TLS aktiv
-Standardauthentifizierung aktiv
- Standardauthentifizierung nur nach dem Starten von TLS anbieten aktiv (zack und hier ist das Problem!!!) habe das gerade mal kurz deaktiviert und gemerkt, jetzt klappt es!

Lasse mein geschriebenes jetzt trotzdem mal so stehen, damit man meinen Lösungsweg nachvollziehen kann.

Jetzt zu meinem neuen Problemface-smile :

Wie kann ich meinem .php script denn jetzt beibringen sich vorher per TLS am Exchange anzukündigen? Mit Sicherheit hat das ganze einen Grund warum es so eingestellt war!?

Besten Dank soweit für die Anregungen!
bytecounter
bytecounter 10.07.2013 um 08:55:43 Uhr
Goto Top
Hallo,

nun mit dem Exchange kenne ich mich leider nicht so gut aus, aber aus PHP-Sicht würde ich einfach direkt auf den Port 465 verbinden. Das ist der Standardport für SMTPS.
Dazu musst Du Deinen Mailer auch noch anweisen, dass er TLS verwendet:
$mail->SMTPSecure = 'tls';  

vg