문제

이 문제가 발생합니다.

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 

이 스크립트에서:

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

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

서버의 php.ini 섹션:

[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 =

("서버" 및 "도메인"은 실제 서버 및 도메인 이름을 정확하게 나타냄)

IIS에서는 SMTP가 실행 중입니다.아래에 "Access" 탭, "Relay" 버튼을 클릭하면 이 가상 서버를 통해 릴레이할 수 있는 컴퓨터 선택이 다음으로 설정됩니다. checkbox "only the list below" 그리고 그 목록에는 "127.0.0.1(xxx.xxx.xxx.xxx)" (x's representing actual server IP address).

서버가 실행 중입니다. Windows Server 2003 Service Pack 2, 2008년 9월 1일 오후 5시에 완전히 패치되었습니다.실행되고 있다고 가정합니다. IIS7 (어떻게 확인하나요?).

어떤 아이디어가 있나요?

이에 대한 응답으로 에스포:이 머신은 데이터 센터에서 호스팅됩니다.우리는 Gmail 계정을 사용하고 싶지 않습니다(사용하고 있었지만, Gmail 계정에서 벗어나고 싶습니다).Windows Server 2003에는 자체 SMTP 서버가 함께 제공됩니다.

업데이트:Yaakov Ellis의 조언에 따라 모든 릴레이 제한을 삭제하고 (제공된 역방향 DNS 버튼을 사용하여) 서버 IP를 허용 목록에 추가하자 작업이 시작되었습니다.

나를 도와준 Espo와 Yaakov 모두에게 감사드립니다.

도움이 되었습니까?

해결책

SMTP 서버에서 릴레이에 대한 IP 제한을 제거하고 모든 릴레이에 개방해 보세요.이것이 설정되었을 때 작동한다면 문제가 원래 제한 사항과 관련이 있다는 것을 알 수 있습니다.이 경우에는 DNS 문제일 수도 있고 잘못된 IP 주소가 나열되었을 수도 있습니다.

다른 팁

잘못된 SMTP 서버를 사용하고 있습니다.Gmail 계정으로만 이메일을 보내려는 경우 내 답변을 살펴보십시오. 여기.

다른 계정에도 이메일을 보내야 하는 경우 ISP에 SMTP 세부정보를 문의하세요.

편집하다:나는 ISP SMTP 서버를 사용하는 것이 사람들이 메일 대기열을 모니터링하고, 공격을 확인하고, 메일 소프트웨어를 업데이트하도록 해야 하기 때문에 항상 더 좋다고 생각합니다.귀하의 사업이 웹 애플리케이션을 개발하는 경우에는 귀하가 하는 일을 계속하고 다른 사람이 자신의 일(예: 메일 서버 실행)을 하도록 하는 것이 거의 항상 가장 좋습니다.

어떤 이유로든 여전히 로컬 SMTP 서버를 사용하고 싶다면 가장 먼저 해야 할 일은 php-part를 배제하는 것입니다.팔로우해 보세요 KB153119 그런 다음 SMTPServer IISlog에서 오류를 확인하세요.

편집2:해당 KB 기사에는 교환용이라고 나와 있지만 다른 SMTP 서버(IIS 포함)에서도 동일한 명령이 사용되므로 기사의 예제를 사용하여 메일을 보낼 수 있는지 확인해 보시기 바랍니다.

@에스포:KB153119로 할게요.감사해요.

메일 서버 정보:나는 당신의 말을 듣고 있습니다.

더 많은 정보가 나오면 업데이트하겠습니다.

@Espo, 문제의 기사는 IIS7.0 SMTP 서버가 아닌 Exchange 서버와 관련이 있습니다.

요약에서:이 문서에서는 SMTP(Simple Mail Transfer Protocol) 서비스를 실행하는 컴퓨터에서 포트 25에 텔넷 연결하여 SMTP 통신 문제를 해결하는 방법을 설명합니다.오류 메시지를 포함하여 이 문서의 정보는 Microsoft Exchange 기반 서버의 SMTP 통신 문제를 해결하려고 할 때 발생하는 문제에만 적용되며 일반적인 문제 해결 목적으로는 사용할 수 없습니다.

2003년 서버 iis6에서 PHP 5와 같은 문제가 발생했습니다.PHP는 mail()을 사용하려고 할 때 항상 실패했습니다.릴레이 제한을 '아래 목록만'(기본적으로 비어 있음)에서 '아래 목록을 제외하고 모두'로 변경하여 PHP에서 메일을 수락하도록 했습니다.릴레이 제한 사항은 SMTP 서버 속성 화면의 액세스 탭에서 확인할 수 있습니다.물론 서버가 인터넷에 열려 있으면 이러한 릴레이 제한에 대해 더 현명해야 하지만 제 경우에는 개발 상자의 가상 서버에 있습니다.

도움이 되길 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top