【问题标题】:Mail of PHP, DNS request timed out, and FQDNPHP邮件、DNS请求超时、FQDN
【发布时间】:2016-09-27 00:22:39
【问题描述】:

我想让 mail() 的 PHP 在我的 Windows Server 2012 R2 中工作。为此,我先通过关注this page安装了SMTP

让我感到困惑的是Full-qualified domain nameWIN-RFELH8GM0KN 是它默认提出的。我的服务器托管了几个网站,有人知道我应该在这里指定哪个网站吗?

我没有更改这一点,因此nslookup 中的mail www.google.com 返回DNS request timed out. 那么这是一个错误吗?

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

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

有人可以帮忙吗?

更新 1 按照 @LittleAI 的回答,我启动了 SMTP,但 DNS request timed out 仍然存在:

更新 2 这是php.ini

telnet localhost 25 返回以下内容:

更新 3 这是一个运行良好的测试:我确实在softtitmur@gmail.com 的收件箱中收到了测试邮件。但是,如果我在Update 1 中重做测试,仍然有DNS requested time out.。而test.php 仍然无法发送邮件...

更新 4 我刚刚意识到在the page I followed 中,它是mail.vsysad.comnslookup 下(我以为是mail vsysad.com,这就是为什么我尝试mail www.google.com 没有有道理)。所以它也适用于我的服务器,并且没有DNS request timed out

然后,我仔细检查了php.ini,我意识到sendmail_from 并没有取消注释。所以我把它取消注释并设置sendmail_from = softtimur@gmail.com,结果,php的mail()现在可以工作了,所以问题解决了,虽然我仍然不明白FQDN及其默认值(即, WIN-RFELH8GM0KN)...

【问题讨论】:

    标签: dns smtp windows-server-2012-r2 nslookup fqdn


    【解决方案1】:

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

    FQDN 名称主要用于发送者通过端口 25 连接到您的服务器时将显示的 SMTP 横幅。

    也许值得将 DNS 角色安装到您的服务器上,并创建一个引用虚假域(例如 test.com)的正向查找区域,并使用您的服务器 IP 在该区域内创建一个名为 SMTP 的记录。然后确保将您的服务器设置为使用 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
    

    您可能不会收到从中继到 GMAIL 的电子邮件,因为 SPF 记录只允许某些 IP/主机名作为 google.com 发送,但为了测试,您应该看到您的服务器在数据后收到邮件已输入。

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

    http://www.yuki-onna.co.uk/email/smtp.html

    补充:

     telnet localhost 25
    

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

     helo test.com
    

    然后您应该会看到 250 响应表明服务器正在侦听

    键入以下内容:

    MAIL FROM: test@test.com
    

    它应该以 OK 响应。如果是,请输入:

    RCPT TO: ***YOU EMAIL ADDRESS OF CHOICE****
    

    同样,它应该以 OK 响应。如果是这样,请输入以下内容:

    DATA
    

    在 DATA 命令后按回车键。您现在进入电子邮件正文。出于测试目的,我们将忽略主题栏,而只是在正文中添加一些数据。

      This is a test email.
    

    然后要完成电子邮件,您需要按回车键留下一个空白行,然后按句号,然后像这样再次返回。

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

    所有命令的屏幕截图,但您可以将电子邮件空白,以便我可以看到输出。

    【讨论】:

    • 感谢您的回答,但是除了启动SMTP之外的部分真的很难理解。我启动了 SMTP,但错误仍然存​​在(请参阅 OP 中的更新)。我只想让mailphp 工作,你能告诉我实现这一点的强制性步骤吗?
    • 我会帮忙的,我相信我们会解决这个问题的。您能否确认您的 Windows 服务器上的 PHP.ini 设置是否配置为使用 localhost。 How to configure PHP SMTP mail settings Link
    • 你能确认一下服务器是否在监听25端口吗?您可以通过在命令提示符“telnet localhost 25”中键入以下命令来完成此操作
    • 好的,很好,我可以看到与完全限定域名相同的 SMTP 横幅,并且它在 25 日接受请求,这是完美的。如果可能的话,你能测试一下邮件是通过 telnet 发送的吗?您可以从 CMD 或 Powershell 执行此操作(我可以看到您正在使用)。输入以下内容:
    • 查看我的答案以了解测试步骤。
    猜你喜欢
    • 1970-01-01
    • 2015-06-10
    • 2014-03-28
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2011-01-16
    • 2012-05-30
    • 1970-01-01
    相关资源
    最近更新 更多