0

我正在使用 perl 模块 Net::Smtp_auth 使用端口 25 上的 web.de SMTP 服务器向自己发送邮件(未加密)。它在我的电脑上运行良好。但我想使用相同的脚本在我没有 root 权限的另一台机器上发送有关已完成作业的通知消息。在这台机器上,我的连接超时。我想知道连接以哪种方式被阻止,阻止它的原因可能是什么(防止垃圾邮件发送者?)以及是否有办法绕过这个问题。我有一些可用的 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;
4

1 回答 1

0

如果其他机器与您的家用机器位于不同的网络中,则很可能那里的 ISP 阻止了传出端口 25 到除它们自己的 SMTP 服务器之外的任何东西,因为这是一种常见的垃圾邮件缓解技术。既定的惯例是,对于通过网络发送的邮件,应该使用端口 587(仅 SMTP 提交端口)。

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

于 2012-05-17T21:01:52.843 回答