1

我编写了一个 Perl 脚本(在机器 A 上),它将邮件发送到另一台服务器(机器 B),然后将其退回(使用 procmail 或其他转发机制,取决于机器 B),然后机器 A 上的脚本测量往返时间。

这在很长一段时间内都可以正常工作,但由于某种原因,当机器 B 为 GMAIL 时,它已停止工作。

这是我调试它的方法:

  1. 我尝试使用命令行中的“mail -s”发送类似的消息,并且邮件传递没有任何问题 - 所以邮件中继不是问题。

    mailbounce@machineA.com:~$mail -s 'Round Trip Test 1366102726' mailbouncexxxxx@gmail.com
    A simple test message From The Mail Round Trip Monitor...
    .
    cc:
    mailbounce@machineA.com:~$
    
  2. 接下来,我将“to:”地址更改为我拥有的另一台机器,以查看脚本是否有效。它对另一台服务器(不是gmail)没有问题

  3. 接下来,我将脚本恢复为原始参数。我在端口 25 上启动了一个 tcpdump 并运行了脚本,然后也使用命令行发送了邮件。在 Wireshark 中分析数据包捕获并执行“Follow TCP Stream”时,输出如下:

使用脚本(未交付):

    220 mail.out.com ESMTP Exim 4.74 Tue, 16 Apr 2013 10:58:36 +0200
    EHLO machineA.domain.com
    250-mail.out.com Hello machineA.domain.com [10.184.55.248]
    250-SIZE 13631488
    250-PIPELINING
    250 HELP
    MAIL FROM:<mailbounce@ machineA.domain.com>
    250 OK
    RCPT TO:<mailbouncexxxxx@gmail.com>
    250 Accepted
    DATA
    354 Enter message, ending with "." on a line by itself
    To: mailbouncexxxxx@gmail.com
    Subject: Round Trip Test 1366102726

    A simple test message From The Mail Round Trip Monitor...
    .
    250 OK id=1US1im-000Lr0-Qd
    QUIT
    221 mail.out.com closing connection

使用命令行(交付成功):

    220 mail.out.com ESMTP Exim 4.74 Tue, 16 Apr 2013 10:59:02 +0200
    EHLO machineA.domain.com
    250-mail.out.com Hello machineA.domain.com [10.184.55.248]
    250-SIZE 13631488
    250-PIPELINING
    250 HELP
    MAIL From:<mailbounce@machineA.domain.com> SIZE=635
    250 OK
    RCPT To:<mailbouncexxxxx@gmail.com>
    DATA
    250 Accepted
    354 Enter message, ending with "." on a line by itself
    Received: from machineA.domain.com (localhost.localdomain [127.0.0.1])
    .by machineA.domain.com (8.13.8/8.13.8) with ESMTP id r3G8x0jq015631
    .for <mailbouncexxxxx@gmail.com>; Tue, 16 Apr 2013 10:59:00 +0200
    Received: (from mailbounce@localhost)
    .by machineA.domain.com (8.13.8/8.13.8/Submit) id r3G8wxGJ015622
    .for mailbouncexxxxx@gmail.com; Tue, 16 Apr 2013 10:58:59 +0200
    Date: Tue, 16 Apr 2013 10:58:59 +0200
    From: mailbounce User <mailbounce@machineA.domain.com>
    Message-Id: <201304160858.r3G8wxGJ015622@machineA.domain.com>
    To: mailbouncexxxxx@gmail.com
    Subject: test2

    test
    .
    250 OK id=1US1jC-000LvF-OQ
    QUIT
    221 mail.out.com closing connection

根据我在上面看到的,这应该可以顺利工作吗?我也检查了 gmail 帐户中的“垃圾邮件”文件夹,但没有运气

为什么使用 Net::SMTP 而不是使用命令行...通过相同的 SMTP 中继时我的邮件无法投递?我已经没有地方可以看了。

笔记:

  1. 在创建这个问题之前,我查看了如何调试我的 Net::SMTP Perl 程序?. 我没有在互联网上找到任何其他相关信息。

  2. 上面的主机名、电子邮件帐户和 IP 地址是虚构的 - 这就是从输入/输出中修改的所有内容

4

0 回答 0