AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 61586
Accepted
lanrat
lanrat
Asked: 2009-09-03 08:17:09 +0800 CST2009-09-03 08:17:09 +0800 CST 2009-09-03 08:17:09 +0800 CST

Sendmail 将邮件排队,不发送

  • 772

我有一个带有 php 和 sendmail 的 Ubuntu 服务器。

当我使用 PHP 通过 sendmail 发送电子邮件时,邮件只是永远位于 sendmail 队列中,永远不会被发送。即使我强制刷新它,它仍然位于队列中。

这可能是什么原因,我该如何解决?

谢谢。

编辑:“cat /var/spool/mqueue/qfn82FuSu3009905”的输出是:

V8
T1251906988
K1251927546
N6
P570369
I8/1/121795
MDeferred: Connection timed out with alt4.gmail-smtp-in.l.google.com.
Fwbs
$_localhost [127.0.0.1]
$rESMTP
$sworld0.com
${daemon_flags}
${if_addr}127.0.0.1
S<[email protected]>
A<>
MDeferred: Connection timed out with alt4.gmail-smtp-in.l.google.com.
rRFC822; [email protected]
RPFD:<[email protected]>
H?P?Return-Path: <g>
H??Received: from world0.com (localhost [127.0.0.1])
    by world0.com (8.14.3/8.14.3/Debian-6) with ESMTP id n82FuSu3009905
    for <[email protected]>; Wed, 2 Sep 2009 08:56:28 -0700
H?x?Full-Name: www-data
H??Received: (from www-data@localhost)
    by world0.com (8.14.3/8.14.3/Submit) id n82FuR5T009904;
    Wed, 2 Sep 2009 08:56:27 -0700
H??Date: Wed, 2 Sep 2009 08:56:27 -0700
H??Message-Id: <[email protected]>
H??To: [email protected]
H??Subject: Website feedback form
H??MIME=Version: 1.0
H??Content-type: text/html; charset=iso-8859-1
H??From: [email protected]
.

我看不出哪里出了问题。

编辑2:

好吧,我可以 ping 服务器,但不能通过 telnet 与它交谈,这怎么可能?我没有运行防火墙。

root@world0:~# telnet alt4.gmail-smtp-in.l.google.com 25
Trying 72.14.221.114...
telnet: Unable to connect to remote host: Connection timed out
root@world0:~# ping 72.14.221.114
PING 72.14.221.114 (72.14.221.114) 56(84) bytes of data.
64 bytes from 72.14.221.114: icmp_seq=1 ttl=241 time=167 ms
64 bytes from 72.14.221.114: icmp_seq=2 ttl=241 time=171 ms
64 bytes from 72.14.221.114: icmp_seq=3 ttl=241 time=169 ms
64 bytes from 72.14.221.114: icmp_seq=4 ttl=241 time=222 ms
^C
--- 72.14.221.114 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3015ms
rtt min/avg/max/mdev = 167.840/182.722/222.589/23.055 ms
sendmail
  • 4 4 个回答
  • 25362 Views

4 个回答

  • Voted
  1. Joe
    2009-09-03T12:23:19+08:002009-09-03T12:23:19+08:00

    要了解有关消息处置的更多信息,请尝试以下操作:

    mailq
    

    你会看到很多这样的行:

    n812uLGQ001861 12089700 Mon Aug 31 19:56 <******@*****.org>
                     (Deferred: Connection timed out with c.mx.mail.yahoo.com.)
                                             <******@yahoo.com>
    n82FR6a3019167 22388400 Wed Sep  2 08:27 <******@*****.net>
                     (reply: read error from g.mx.mail.yahoo.com.)
                                             <******@yahoo.com>
    

    其中n82FR6a3019167是消息 ID

    ls -al /var/spool/mqueue/*<message ID>
    

    尝试查看这些文件(它们只是文本文件),特别是名为qn82FR6a3019167的文件(或任何您的消息 ID 号。 注意:消息 ID 之前的“ q ”。您应该能够确定消息的状态,这将有望帮助确定哪些工作不正常。

    cat /var/spool/mqueue/qn82FR6a3019167
    

    如果这没有帮助,您可能需要查看 sendmail.cf 中的智能中继设置。您的 PHP 服务器可能需要通过Smart Relay 主机中继邮件。


    接下来,我将尝试从您的 PHP 服务器到 Google 邮件服务器的手动 SMTP 会话。

    telnet alt4.gmail-smtp-in.l.google.com 25
    
    Trying 209.85.129.114...
    Connected to alt4.gmail-smtp-in.l.google.com.
    Escape character is '^]'.
    220 mx.google.com ESMTP p9si790839fkb.7
    
    helo <yourhostname>
    250 mx.google.com at your service
    
    mail from:<[email protected]>
    250 2.1.0 OK p9si740839fkb.7
    
    rcpt to:<[email protected]>
    250 2.1.5 OK p9si740839fkb.7
    
    data
    354  Go ahead h2si759562fkh.29
    Subject: This is a test
    
    Testing!
    .
    250 2.0.0 OK 1251933071 h2si759562fkh.29
    quit
    
    221 2.0.0 closing connection h2si759562fkh.29
    
    Connection closed by foreign host.
    

    这有望告诉您您的 IP 地址是否被阻止,或者是否存在某些 SPF(发件人策略框架)问题,或者您的 DNS 名称是否不匹配可能导致您的电子邮件被拒绝或延迟。

    我认为您在回复中截断了详细信息列表。您的系统确实应该有一个有效的主机名,并带有该主机名的反向 DNS 条目。

    此外,检查您的 /etc/hosts 文件以确保您的 IP 地址在此处正确列出。在将电子邮件中继到 Internet 时,主机名不匹配是很常见的问题(至少,根据我的经验)。

    就像是:

    # Do not remove the following line, or various programs
    # that require network functionality will fail.
    127.0.0.1        localhost.localdomain localhost
    xxx.xxx.xxx.xxx  yourhostname.yourdomain.com yourhostname
    
    • 3
  2. Best Answer
    lanrat
    2009-09-04T08:09:59+08:002009-09-04T08:09:59+08:00

    我找到了解决方案。

    默认情况下,我的 ISP 开始阻止端口 25 以阻止垃圾邮件发送者。快速呼叫他们打开了端口备份,所有邮件开始流动。

    谢谢乔的帮助。

    • 2
  3. Gerald Combs
    2009-09-03T15:18:05+08:002009-09-03T15:18:05+08:00

    看看那些说的行Deferred: Connection timed out with alt4.gmail-smtp-in.l.google.com。他们告诉您,您的服务器能够解析 gmail.com 的 MX 记录,但无法连接到远程服务器。当您从邮件服务器远程登录到该主机上的端口 25 时会发生什么?你应该会看到类似这样的内容(注意我输入了“quit”):

    crunch:/Users/gerald$ telnet alt4.gmail-smtp-in.l.google.com 25
    Trying 72.14.221.114...
    Connected to alt4.gmail-smtp-in.l.google.com.
    Escape character is '^]'.
    220 mx.google.com ESMTP d4si791296fga.25
    quit
    221 2.0.0 closing connection d4si791296fga.25
    Connection closed by foreign host.
    

    您是否有任何防火墙规则可以阻止端口 25 上的出站连接?

    • 1
  4. Razique
    2009-09-03T08:28:39+08:002009-09-03T08:28:39+08:00

    首先检查队列中的消息和错误日志(/var/log/mail.err)然后为了强制删除,你可以这样做(即使它是在它真的卡住的情况下)

    rm -rf /var/spool/mqueue/*
    
    • 0

相关问题

  • 如何使用远程 SMTP 配置 php.ini?

  • Linux sendmail 垃圾邮件?

  • 使 php mail() 函数在 ubuntu-server 上工作的步骤是什么?

  • 如何配置 sendmail 以拒绝日期标题与实时相差太远的电子邮件?

  • 什么是好的 sendmail 日志分析器?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve