Autenticação SMTP do Postfix

1

Eu instalei um servidor de postfix com o comando dovecot sasl e o TLS. O problema quando eu tento enviar e-mail a partir do código PHP, se eu usar o tipo de autenticação de login como 'smtp' o servidor aceita a conexão sem nenhuma credencial. Se eu mudar para 'login' o servidor verificar minhas credenciais e alertar se o usuário ou senha está errada.

O que é autenticação SMTP e como posso configurar o postfix para aceitar apenas usuários de autenticação?

O código relevante no meu arquivo main.cf

mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
virtual_alias_domains = $mydomain
virtual_alias_maps = hash:/etc/postfix/virtual

A parte do código PHP do zend mail que envia mensagens mesmo com uma senha incorreta ou nada.

    $options   = new SmtpOptions([
    'host' => 'mail.host.com',
    'port' => '25',
    'connection_class'  => 'smtp',
    'connection_config' => [
        'username' => 'user',
        'password' => 'bad-password',
        'ssl' => 'tls'
    ]
]);
    
por Yehuda Hassine 13.08.2018 / 17:14

1 resposta

0

O script de e-mail abaixo é para e-mail PHP com autenticação SMTP. Você precisa usar a porta 465 ou 587 para enviar um email com autenticação SMTP.

A porta padrão SMTP é a porta 25. Se você estiver usando a porta 25, ela enviará e-mails do servidor sem autenticação SMTP.

Faça o download do phpmailer aqui link e use o código abaixo.

<?php

require_once "vendor/autoload.php";

$mail = new PHPMailer;

//Enable SMTP debugging. 
$mail->SMTPDebug = 3;                               
//Set PHPMailer to use SMTP.
$mail->isSMTP();            
//Set SMTP host name                          
$mail->Host = "smtp.gmail.com";
//Set this to true if SMTP host requires authentication to send email
$mail->SMTPAuth = true;                          
//Provide username and password     
$mail->Username = "[email protected]";                 
$mail->Password = "super_secret_password";                           
//If SMTP requires TLS encryption then set it
$mail->SMTPSecure = "tls";                           
//Set TCP port to connect to 
$mail->Port = 587;                                   

$mail->From = "[email protected]";
$mail->FromName = "Full Name";

$mail->addAddress("[email protected]", "Recepient Name");

$mail->isHTML(true);

$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";

if(!$mail->send()) 
{
    echo "Mailer Error: " . $mail->ErrorInfo;
} 
else 
{
    echo "Message has been sent successfully";
}
    
por 14.08.2018 / 09:09

Tags