0
上我用来发送电子邮件的Perl脚本:的Net :: SMTP冻结某个服务器
#!/usr/bin/perl
use strict;
use warnings;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP();
use Email::Simple();
use Email::Simple::Creator();
my $smtpserver = 'server.com';
my $smtpport = 2525;
my $smtpuser = '[email protected]';
my $smtppassword = 'secret';
my $transport = Email::Sender::Transport::SMTP->new({
host => $smtpserver,
port => $smtpport,
sasl_username => $smtpuser,
sasl_password => $smtppassword,
debug => 1,
});
my $email = Email::Simple->create(
header => [
To => '[email protected]',
From => "User name <$smtpuser>",
Subject => 'Hello',
],
body => "This is my message\n",
);
sendmail($email, { transport => $transport });
它可以在一台服务器上。但在另一个脚本冻结。调试消息有:
Net::SMTP>>> Net::SMTP(2.31)
Net::SMTP>>> Net::Cmd(2.29)
Net::SMTP>>> Exporter(5.63)
Net::SMTP>>> IO::Socket::INET(1.31)
Net::SMTP>>> IO::Socket(1.31)
Net::SMTP>>> IO::Handle(1.28)
怎么了?如何调试?
服务器绝对是一个SMTP服务器。我从本地机器连接到它。但是当我说:“helo server.com”时,它会回应。当我从其他服务器连接到此SMTP服务器时 - 它不响应。 –
user4035
2015-03-31 07:40:48
从这个描述我会建议,问题出现在服务器端。这可能是服务器将对客户端的IP进行反向DNS查找,然后超时。或者它会检查一些实时阻止列表。或者有一个垃圾邮件或类似的程序阻止来自未知客户端的连接。很难说没有关于服务器的信息,但我不认为它是Perl或Net :: SMTP的问题。 – 2015-03-31 07:48:44