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
Из этого описания я бы предположил, что проблема на стороне сервера тогда. Возможно, сервер выполнит обратный поиск DNS для IP-клиента, который затем истекает. Или он будет проверять некоторые блокировки в реальном времени. Или есть спам-программа или аналогичная программа, которая дросселирует соединение с неизвестными клиентами. Трудно сказать без информации о сервере, но я бы не стал рассматривать проблему Perl или Net :: SMTP. –