Eu tenho um servidor dedicado que se conecta a um webhosting para enviar um e-mail usando o protocolo SMTP, mas recebo erros 554 5.7.1 e 221 2.7.0 e o e-mail não é enviado. O log SMTP completo está abaixo.
Este é um script para envio de e-mails escrito em Perl:
my $mail = "mail.bellakabelky.sk";
my $pass = "secret";
my $user = "mail\@bellakabelky.sk";
my $to = "tomsk.slovak\@gmail.com";
use Data::Dumper;
use Net::SMTP;
use Mail::Mailer qw(sendmail);
my $smtp = Net::SMTP->new(
Host => $mail,
Port => '25',
Hello => 'dev.bellakabelky.sk',
Timeout => 30,
Debug => 1,
);
print Dumper($smtp);
$smtp->auth($user,$pass);
$smtp->mail($user);
$smtp->to($to);
$smtp->recipient($to);
$smtp->data();
$smtp->datasend("To: Tomsk <$to>\r\n");
$smtp->datasend("From: Mail <$user>\r\n");
$smtp->datasend("Return-Path: $user\r\n");
$smtp->datasend("Reply-To: $user\r\n");
$smtp->datasend("Subject: Subject\r\n");
$smtp->datasend("\r\n");
$smtp->datasend("hello");
$smtp->dataend();
$smtp->quit;
E recebo 554 5.7.1 e 221 2.7.0 erros. Este é um log do SMTP:
Net::SMTP>>> Net::SMTP(2.33)
Net::SMTP>>> Net::Cmd(2.30)
Net::SMTP>>> Exporter(5.71)
Net::SMTP>>> IO::Socket::INET(1.35)
Net::SMTP>>> IO::Socket(1.38)
Net::SMTP>>> IO::Handle(1.35)
Net::SMTP=GLOB(0x51d1810)<<< 220 mail4-1.hostmaster.sk ESMTP Postfix
Net::SMTP=GLOB(0x51d1810)>>> EHLO dev.bellakabelky.sk
Net::SMTP=GLOB(0x51d1810)<<< 250-mail4-1.hostmaster.sk
Net::SMTP=GLOB(0x51d1810)<<< 250-PIPELINING
Net::SMTP=GLOB(0x51d1810)<<< 250-SIZE 104857600
Net::SMTP=GLOB(0x51d1810)<<< 250-ETRN
Net::SMTP=GLOB(0x51d1810)<<< 250-STARTTLS
Net::SMTP=GLOB(0x51d1810)<<< 250-AUTH PLAIN LOGIN
Net::SMTP=GLOB(0x51d1810)<<< 250-AUTH=PLAIN LOGIN
Net::SMTP=GLOB(0x51d1810)<<< 250-ENHANCEDSTATUSCODES
Net::SMTP=GLOB(0x51d1810)<<< 250 8BITMIME
$VAR1 = bless( \*Symbol::GEN1, 'Net::SMTP' );
Net::SMTP=GLOB(0x51d1810)>>> AUTH PLAIN bWFpbEBiZWxsYWthYmVsa3kuc2sAbWFpbEBiZWxsYWthYmVsa3kuc2sARXNob3AxMjNrYWJlbGt5
Net::SMTP=GLOB(0x51d1810)<<< 235 2.7.0 Authentication successful
Net::SMTP=GLOB(0x51d1810)>>> MAIL FROM:<[email protected]>
Net::SMTP=GLOB(0x51d1810)<<< 250 2.1.0 Ok
Net::SMTP=GLOB(0x51d1810)>>> RCPT TO:<[email protected]>
Net::SMTP=GLOB(0x51d1810)<<< 554 5.7.1 <[email protected]>: Sender address rejected: Your mail account ([email protected]) was compromised. Please change your password immediately after next login and contact technical support.
Net::SMTP=GLOB(0x51d1810)>>> RCPT TO:<[email protected]>
Net::SMTP=GLOB(0x51d1810)<<< 554 5.7.1 <[email protected]>: Sender address rejected: Your mail account ([email protected]) was compromised. Please change your password immediately after next login and contact technical support.
Net::SMTP=GLOB(0x51d1810)>>> DATA
Net::SMTP=GLOB(0x51d1810)<<< 554 5.5.1 Error: no valid recipients
Net::SMTP=GLOB(0x51d1810)>>> To: Tomsk <[email protected]>
Net::SMTP=GLOB(0x51d1810)>>> From: Mail <[email protected]>
Net::SMTP=GLOB(0x51d1810)>>> Return-Path: [email protected]
Net::SMTP=GLOB(0x51d1810)>>> Reply-To: [email protected]
Net::SMTP=GLOB(0x51d1810)>>> Subject: Subject
Net::SMTP=GLOB(0x51d1810)>>>
Net::SMTP=GLOB(0x51d1810)>>> hello
Net::SMTP=GLOB(0x51d1810)>>> .
Net::SMTP=GLOB(0x51d1810)<<< 221 2.7.0 Error: I can break rules, too. Goodbye.
Net::SMTP=GLOB(0x51d1810)>>> QUIT
Net::SMTP: Unexpected EOF on command channel at (eval 187) line 49.
Eu realmente não sei, onde pode estar um problema, eu estava procurando solução, mas não encontrei nada.
Detalhamento dos erros para completude -
Ao enviar a lista de destinatários, o servidor está respondendo com um erro que indica claramente o problema. Interessante que eles optaram por responder com um erro neste momento, enquanto aceitavam o endereço do remetente sem problemas, mas isso é com eles. Você precisará perguntar ao provedor de e-mail se deseja saber por que eles acham que a conta foi comprometida.
O servidor retorna um erro aqui porque você está tentando enviar o conteúdo da mensagem, mas ainda não definiu nenhum destinatário - Os dois dados foram rejeitados. Um cliente de e-mail correto apresentaria um erro/desconexão quando nenhum destinatário fosse aceito e não enviaria o
DATA
comando.Uma resposta sarcástica do servidor quando seu cliente continua tentando enviar dados para o servidor, mesmo que não haja destinatários válidos e ele tenha rejeitado seu
DATA
comando.