Frage

Ich bekomme dieses Problem:

PHP Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for chris.mahan@gmail.com in c:\inetpub\wwwroot\mailtest.php on line 12 

aus diesem Skript:

<?php
$to = "chris.mahan@gmail.com";
$subject = "test";
$body = "this is a test";

if (mail($to, $subject, $body)){
    echo "mail sent";
}
else {
    echo "problem";
}
?>

Abschnitt aus der php.ini auf dem Server:

[mail function]
; For Win32 only.
SMTP = server.domain.com; for Win32 only
smtp_port = 25

; For Win32 only.
sendmail_from = support@domain.com
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =

(Beachten Sie, dass sich „Server“ und „Domäne“ genau auf den tatsächlichen Server- und Domänennamen beziehen.)

In IIS läuft SMTP.Unter "Access" Tab, "Relay" Die Schaltfläche „Wählen Sie aus, welche Computer über diesen virtuellen Server weiterleiten dürfen“ ist auf eingestellt checkbox "only the list below" und auf der Liste steht "127.0.0.1(xxx.xxx.xxx.xxx)" (x's representing actual server IP address).

Server läuft Windows Server 2003 Service Pack 2, vollständig gepatcht, Stand 1. September 2008, 17:00 Uhr.Ich gehe davon aus, dass es läuft IIS7 (wie zu überprüfen?).

Irgendwelche Ideen?

Als Antwort auf Espo:Diese Maschine wird in einem Rechenzentrum gehostet.Wir möchten kein Gmail-Konto verwenden (haben es getan, möchten davon abrücken).Windows Server 2003 verfügt über einen eigenen SMTP-Server.

Aktualisieren:Auf den Rat von Yaakov Ellis hin habe ich alle Relay-Einschränkungen aufgehoben und die Server-IP zur Liste der zulässigen IP-Adressen hinzugefügt (mithilfe der bereitgestellten Reverse-DNS-Schaltfläche), und die Sache begann zu funktionieren.

Vielen Dank an Espo und Yaakov für ihre Hilfe.

War es hilfreich?

Lösung

Versuchen Sie, die IP-Einschränkungen für Relaying im SMTP-Server zu entfernen und ihn für alle Relays zu öffnen.Wenn es bei dieser Einstellung funktioniert, wissen Sie, dass das Problem mit den ursprünglichen Einschränkungen zusammenhängt.In diesem Fall liegt möglicherweise ein DNS-Problem vor oder Sie haben die falsche IP-Adresse angegeben.

Andere Tipps

Sie verwenden den falschen SMTP-Server.Wenn Sie nur E-Mails an Ihr Gmail-Konto senden möchten, schauen Sie sich meine Antwort an Hier.

Wenn Sie auch E-Mails an andere Konten senden müssen, fragen Sie Ihren ISP nach Ihren SMTP-Daten.

BEARBEITEN:Ich denke, es ist immer besser, den SMTP-Server des ISP zu verwenden, da dort Leute die E-Mail-Warteschlangen überwachen, auf Exploits prüfen und die E-Mail-Software aktualisieren sollten.Wenn Ihr Unternehmen Webanwendungen entwickelt, ist es fast immer am besten, bei dem zu bleiben, was Sie tun, und andere Leute ihre Arbeit machen zu lassen (z. B. den Betrieb von Mailservern).

Wenn Sie aus irgendeinem Grund dennoch Ihren lokalen SMTP-Server verwenden möchten, sollten Sie zunächst den PHP-Teil ausschließen.Versuchen Sie es mit Folgendem KB153119 und überprüfen Sie dann Ihr SMTPServer IISlog auf Fehler.

EDIT2:In diesem KB-Artikel heißt es, dass es sich um einen Austausch handelt, aber die gleichen Befehle werden auch für andere SMTP-Server (einschließlich IIS) verwendet. Probieren Sie also bitte aus, ob Sie mithilfe der Beispiele aus dem Artikel E-Mails senden können.

@Espo:Ich mache das bezüglich KB153119.Danke.

Über den Mailserver:Ich höre dich.

Ich werde aktualisieren, wenn ich mehr herausfinde.

@Espo, der fragliche Artikel bezieht sich auf Exchange-Server, nicht auf den IIS7.0-SMTP-Server.

Aus der Zusammenfassung:In diesem Artikel wird beschrieben, wie Sie eine Telnet-Verbindung zu Port 25 auf einem Computer herstellen, auf dem SMTP-Dienste (Simple Mail Transfer Protocol) ausgeführt werden, um SMTP-Kommunikationsprobleme zu beheben.Die Informationen in diesem Artikel, einschließlich Fehlermeldungen, beziehen sich nur auf Probleme beim Versuch, SMTP-Kommunikationsprobleme mit Microsoft Exchange-basierten Servern zu beheben, und sind nicht für allgemeine Fehlerbehebungszwecke gedacht.

Ich hatte das gleiche Problem, PHP 5 auf dem Server iis6, 2003.PHP schlug immer fehl, wenn versucht wurde, mail() zu verwenden.Ich habe es geschafft, E-Mails von PHP zu akzeptieren, indem ich die Relay-Einschränkungen von „Nur die Liste unten“ (die standardmäßig leer ist) in „Alle außer der Liste unten“ geändert habe.Die Relay-Einschränkungen finden Sie auf der Registerkarte „Zugriff“ in den Eigenschaftenbildschirmen des SMTP-Servers.Wenn der Server natürlich für das Internet geöffnet ist, müsste man diese Weiterleitungseinschränkungen vernünftiger berücksichtigen, aber in meinem Fall geschieht dies auf einem virtuellen Server auf einer Entwicklungsbox.

Ich hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top