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