调试smtp连接

时间:2012-05-17 20:15:57

标签: linux perl proxy smtp

我使用perl模块Net :: Smtp_auth使用端口25上的web.de SMTP服务器向自己发送邮件(无加密)。它适用于我的电脑。但我想使用相同的脚本在我没有root权限的其他计算机上发送有关已完成作业的通知消息。在这台机器上,我得到连接超时。我想知道连接被阻塞的方式,阻止它的原因是什么(阻止spamers?)以及是否有办法绕过这个问题。我有一些linux工具可用,但没有nmap。 连接是否可能受代理设置的影响,如果是,我该如何告诉SMTP_auth?

perl脚本基本上是来自cpan的SMTP_auth示例。但我不认为它与此相关:

#!/usr/bin/perl -w

use Net::SMTP_auth;

$message=$ARGV[0];

$smtp = Net::SMTP_auth->new('smtp.web.de') or die "Failed to open SMTP connection: $!";
$smtp->auth('CRAM-MD5', 'adress', 'password');

$smtp->mail('adress@web.de');
$smtp->to('adress@web.de');

$smtp->data();
$smtp->datasend("To: adress\@web.de\n");
$smtp->datasend("From: adress\@web.de\n");
$smtp->datasend("\n");
$smtp->datasend("$message\n");
$smtp->dataend();

$smtp->quit;

1 个答案:

答案 0 :(得分:0)

如果其他计算机与您的家庭计算机位于不同的网络中,那么ISP可能会阻止传出端口25到除了他们自己的SMTP服务器以外的任何网络,因为这是一种常见的垃圾邮件缓解技术。已建立的约定是,对于跨网络的外发邮件,应该使用端口587(仅限SMTP提交端口)。

验证问题是否是您的程序的简单方法是尝试telnet到该主机和端口。如果telnet没有连接但其他服务没有连接,那么您的ISP正在过滤端口25。