Estou tendo problemas para configurar a autenticação do cliente usando saslauthd e postfix no Ubuntu 22.04. O problema é que os usuários não estão sendo autenticados, embora exista. É a primeira vez que configuro o postfix e o saslauthd, então pode ser óbvio para alguns de vocês, tubarões de falha no servidor.
O envio de e-mail funciona bem usando o comando mail. Usando o telnet, tudo parece bem, mas com o cliente SMTP remoto com autenticação não funciona. Estou com 6 horas de profundidade e perto de desistir (por hoje).
Fazendo um telnet de um servidor remoto:
telnet mail.mydomain.com 25
Trying IP...
Connected to mail.mydomain.com.
Escape character is '^]'.
220 mail.mydomain.com ESMTP Postfix (Ubuntu)
EHLO mydomain.com
250-mail.mydomain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH SCRAM-SHA-1 SCRAM-SHA-256 DIGEST-MD5 NTLM CRAM-MD5 PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING
421 4.4.2 mail.mydomain.com Error: timeout exceeded
Connection closed by foreign host.
Verificando se o usuário que criei realmente existe
testsaslauthd -u lukas -p mypassword -r mydomain.com
0: OK "Success."
/var/log/mail.log (observe que a verificação FALHA aqui mesmo que tenha sido testada com sucesso acima.
Mar 9 04:36:42 postfix/smtpd[42026]: warning: SASL authentication failure: Password verification failed
Mar 9 04:36:42 postfix/smtpd[42026]: warning: IPbredband.3.dk[IP]: SASL PLAIN authentication failed: authentication failure
Mar 9 04:36:42 postfix/smtpd[42026]: lost connection after AUTH from IP.bredband.3.dk[IP]
Mar 9 04:36:42 postfix/smtpd[42026]: disconnect from IP.bredband.3.dk[IP] ehlo=2 starttls=1 auth=0/1 commands=3/4
Onde estou tentando fazer login através do módulo SMTP do nodemailer (este não deve ser o problema - mas é melhor prevenir do que remediar):
import nodemailer from "nodemailer"
const transporter = nodemailer.createTransport({
host: "mail.mydomain.com",
port: 25,
secure: false, // Use `true` for port 465, `false` for all other ports
auth: {
user: "[email protected]”,
pass: “myapassword
},
});
router.post('/', async (req, res) => {
const info = await transporter.sendMail({
from: '"Maddison Foo Koch 👻" <username@mydomain>', // sender address
to: "[email protected]”, // list of receivers
subject: "Hello!", // Subject line
text: "Hello world?", // plain text body
html: "<b>Hello world?</b>", // html body
});
console.log("Message sent: %s", info.messageId);
return res.status(200).json({ data:"ok", info: JSON.stringify(info) });
});
/etc/postfix/master.cf (chroot habilitado)
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
smtp inet n - y - - smtpd
/etc/postfix/main.cf (acredito fortemente que algo está errado neste arquivo)
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 3.6
# TLS parameters
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.mydomain.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.mydomain.com/privkey.pem
smtpd_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# auth
#smtpd_sasl_path = smtpd
smtpd_sasl_type = cyrus
smtpd_sasl_path = var/run/saslauthd/mux
#smtpd_sasl_path = var/run/saslauthd/saslauthd/mux
#smtpd_sasl_path = /var/spool/postfix/var/run/saslauthd/saslauthd
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.mydomain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, mydomain.com, localhost.com, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
/etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
/etc/default/saslauthd
START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="sasldb"
MECH_OPTIONS=""
THREADS=5
OPTIONS="-c -m /var/run/saslauthd"
Além disso, existe um link simbólico entre /var/run/saslauthd e /var/spool/postfix/var/run/saslauthd
Qualquer sugestão ou ajuda é muito apreciada!