/ / Net :: SMTP friert auf einem bestimmten Server ein - perl, smtp

Net :: SMTP friert auf einem bestimmten Server ein - perl, smtp

Ich habe ein Perl-Skript zum Senden von E-Mails:

#!/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   = "test@server.com";
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      => "myself@gmail.com",
From    => "User name <$smtpuser>",
Subject => "Hello",
],
body => "This is my messagen",
);

sendmail($email, { transport => $transport });

Es funktioniert auf einem Server. Aber auf der anderen Seite friert das Skript ein. Debug-Nachrichten sind:

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)

Was ist falsch? Wie Debuggen?

Antworten:

2 für die Antwort № 1

Dies geschieht, wenn die TCP-Verbindung zum Server erfolgreich hergestellt wurde, der Server jedoch die erwartete SMTP-Begrüßung nicht zurücksendet. Dies kann verschiedene Gründe haben, wie:

  • Der Server ist überhaupt kein SMTP-Server. Wenn Sie versuchen, Net :: SMTP für einen Webserver (z. B. HTTP) zu verwenden, sehen Sie ein ähnliches Ergebnis, da der HTTP-Server erwartet, dass der Client zuerst Daten sendet, während der Server bei SMTP zuerst Daten sendet.
  • Der Server hat ein implizites TLS konfiguriertEs wartet darauf, dass der Client eine Verbindung mit TLS herstellt und nicht mit reinem SMTP. In diesem Fall wartet der Server darauf, dass der Client mit dem TLS-Handshake (d. H. Senden von ClientHello) beginnt, bevor er etwas zurücksendet.

Ich würde vorschlagen, dass Sie die Konfiguration des Servers betrachten, um zu sehen, was tatsächlich erwartet wird.