PHP邮件、DNS请求超时和FQDN

PHP邮件、DNS请求超时和FQDN,dns,smtp,windows-server-2012-r2,nslookup,fqdn,Dns,Smtp,Windows Server 2012 R2,Nslookup,Fqdn,我想让PHP的mail()在我的Windows Server 2012 R2中工作。为此,我首先通过以下方式安装了SMTP 让我困惑的一件事是完全限定域名WIN-RFELH8GM0KN是它的建议。我的服务器有几个网站,有人知道我应该在这里指定哪个网站吗 我没有改变这一点,因此,mail www.google.cominnslookup返回DNS请求超时。这是一个错误吗 当然,我的test.php不会发送邮件: <?php mail('mymail@gmail.com', 'title',

我想让PHP的
mail()
在我的
Windows Server 2012 R2
中工作。为此,我首先通过以下方式安装了
SMTP

让我困惑的一件事是
完全限定域名
<默认情况下,代码>WIN-RFELH8GM0KN是它的建议。我的服务器有几个网站,有人知道我应该在这里指定哪个网站吗

我没有改变这一点,因此,
mail www.google.com
in
nslookup
返回
DNS请求超时。
这是一个错误吗

当然,我的
test.php
不会发送邮件:

<?php
mail('mymail@gmail.com', 'title', 'content');
?>

有人能帮忙吗

更新1在@LittleAI的回答之后,我启动了SMTP,但
DNS请求超时
仍然存在:

更新2这里是
php.ini

telnet localhost 25
返回以下内容:

更新3这里有一个测试,效果很好:我确实在
softtitmur@gmail.com
。但是,如果我在
update1
中重新进行测试,则仍有
DNS请求的超时。
。而且
test.php
仍然无法发送邮件

更新4我刚刚意识到,在中,它是
mail.vsysad.com
下的
nslookup
(我认为它是
mail vsysad.com
,这就是为什么我尝试
mail www.google.com
,但没有意义)。因此,它也可以在我的服务器中工作,并且没有
DNS请求超时


然后,我再次检查了
php.ini
,我意识到
sendmail\u from
并没有取消注释。因此我取消了它的注释,并设置
sendmail\u from=softtimur@gmail.com
,因此,php的
mail()
现在可以工作了,所以问题解决了,尽管我仍然不了解FQDN及其默认值(即,
WIN-RFELH8GM0KN
)…

我注意到的第一件事是,IIS中的SMTP虚拟服务未处于启动状态,因此这将导致问题。测试前,请确保此服务处于启动状态

FQDN名称主要用于SMTP横幅,当通过端口25连接到服务器时,发件人将显示该横幅

可能值得将DNS角色安装到服务器上,创建一个引用伪域(例如test.com)的正向查找区域,并使用服务器IP在此区域内创建一个名为SMTP的a记录。然后确保将服务器设置为使用127.0.0.1作为DNS提供程序,以便它可以在将响应委托给根提示/外部DNS转发器之前检查记录

您需要使用Telnet执行SMTP请求以确认SMTP正在侦听端口25。您可以使用localhost ip地址(127.0.0.1)执行此操作,如下所示:

  telnet 127.0.0.1 25
  helo test.com
  MAIL FROM: ****YOUR EMAIL ACCOUNT****
  RCPT TO: ****SENDERS ADDRESS****
  DATA
由于SPF记录只允许某些IP/主机名以google.com的形式发送,您可能不会收到来自GMAIL中继的电子邮件,但为了进行测试,您应该看到您的服务器在输入数据后收到邮件

以下是在服务器上使用telnet的指南。只需确保已安装telnet功能,因为默认情况下未安装该功能

附加:

 telnet localhost 25
在SMTP横幅之后,键入以下命令,但请确保不要犯任何错误,否则您可能需要重新开始您的会话

 helo test.com
然后您将看到一个250响应,表示服务器正在侦听

类型如下所示:

MAIL FROM: test@test.com
DATA
它应该用OK来回应。如果是,则键入:

RCPT TO: ***YOU EMAIL ADDRESS OF CHOICE****
同样,它应该以OK作为响应。如果是,请键入以下内容:

MAIL FROM: test@test.com
DATA
在数据命令后按enter键。您的电子邮件现在已进入邮件正文。出于测试目的,我们将错过主题栏,只向正文中添加一些数据

  This is a test email.
然后要完成电子邮件,您需要按return留下一个空行,然后按full stop,然后再按return

    ***BLANK LINE****
    .
    ***Hit Return****

屏幕截图显示所有命令,但您可以清空电子邮件,以便我可以查看输出

谢谢你的回答,但是除了启动SMTP之外的部分真的很难理解。我启动了SMTP,但错误仍然存在(请参阅OP中的更新)。我只是想让
php
mail
工作起来,你能告诉我实现这一点的必要步骤吗?我会提供帮助,我相信我们会解决这个问题。能否确认windows服务器上的PHP.ini设置是否配置为使用localhost。您还可以确认服务器是否正在侦听端口25吗?您可以通过在命令提示符“telnet localhost 25”中键入以下命令来实现这一点好的,我可以看到SMTP横幅,它与完全限定的域名相同,并且它在25上接受请求,这是完美的。如果可能,您可以测试邮件是否通过telnet发送吗?您可以从CMD或Powershell(我可以看到您正在使用它)执行此操作。输入以下内容:请参阅我的答案以了解测试步骤。