Linux 调试smtp连接
我使用perl模块Net::Smtp_auth在端口25(无加密)上使用web.de Smtp服务器向自己发送邮件。它在我的电脑上运行得很好。但是我想使用相同的脚本来发送关于不同机器上已完成作业的通知消息,而我没有root权限。在这台机器上,我得到一个连接超时。我想知道是哪种方式阻止了连接,阻止连接的原因可能是什么(防止垃圾邮件?),以及是否有办法避免这个问题。我有一些linux工具可用,但没有nmap。 连接是否会受到代理设置的影响?如果是,如何告诉SMTP_auth perl脚本基本上是来自cpan的SMTP_auth示例。但我不认为这与此相关:Linux 调试smtp连接,linux,perl,proxy,smtp,Linux,Perl,Proxy,Smtp,我使用perl模块Net::Smtp_auth在端口25(无加密)上使用web.de Smtp服务器向自己发送邮件。它在我的电脑上运行得很好。但是我想使用相同的脚本来发送关于不同机器上已完成作业的通知消息,而我没有root权限。在这台机器上,我得到一个连接超时。我想知道是哪种方式阻止了连接,阻止连接的原因可能是什么(防止垃圾邮件?),以及是否有办法避免这个问题。我有一些linux工具可用,但没有nmap。 连接是否会受到代理设置的影响?如果是,如何告诉SMTP_auth perl脚本基本上是来自
#!/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;
如果其他机器与您的家庭机器位于不同的网络中,很可能是ISP正在阻止发送端口25到除其自己的SMTP服务器以外的任何设备,因为这是一种常见的垃圾邮件缓解技术。既定惯例是,对于通过网络发送的邮件,应使用端口587(仅SMTP提交端口)
验证问题是否出在您的程序上的一个简单方法是尝试telnet到该主机和端口。如果telnet未连接,但其他服务连接,则ISP正在筛选端口25。Net::SMTP\U auth从中继承构造函数。打开调试
->new(“…”,Debug=>1)
并提供结果日志。实际上,telnet没有连接:“连接超时”。实际上,它可以与ISPs SMTP服务器一起工作。SMTP.web.de:587怎么样?如果ISP真的阻止了端口,他们可能只允许提交(RFC 2476)。有没有办法绕过这一点(不使用第二台机器)?稍后我将尝试587端口。