Seguindo o guia oficial do Ubuntu Instalar e configurar o Postfix , quando executo
telnet localhost 25
eu recebo
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
Quando olho para os registros, recebo
$ sudo tail /var/log/mail.err
Dec 7 11:38:17 <host> postfix/smtpd[8477]: fatal: no SASL authentication mechanisms
O exemplo acima está rodando em uma máquina virtual, mas o mesmo acontece em um servidor na nuvem, e rodando telnet
remotamente para o domínio. (Tentei replicar o processo na VM para ver se conseguia identificar o que acontece com mais facilidade).
Eu li todas as postagens, blogs, artigos, antigos e novos, tentei todas as configurações que pude imaginar e ainda assim o erro persiste. Não consigo entender o que há de errado. Minhas configurações:
/etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 3.6 on
# fresh installs.
compatibility_level = 3.6
# TLS parameters
smtpd_tls_cert_file = /etc/ssl/certs/server.crt
smtpd_tls_key_file = /etc/ssl/private/server.key
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
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = <host>
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = <host>, <host>.local, <host>, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::1]/128 [::ffff:127.0.0.0]/104 [::1]/128 192.168.30.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
home_mailbox = Maildir/
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous,noplaintext
smtpd_sasl_tls_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_note_starttls_offer = yes
smtpd_tls_loglevel = 4
smtpd_tls_received_header = yes
/etc/dovecot/conf.d/10-master.conf
service auth {
unix_listener auth-userdb {
#mode = 0666
#user =
#group =
}
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
# Auth process is run as this user.
#user = $default_internal_user
}
Os arquivos SSL na VM eu criei seguindo o guia oficial Segurança - Certificados . No meu servidor em nuvem, tentei com arquivos Let's encrypt/Certbot. Eu os adicionei no arquivo /etc/dovecot/conf.d/10-ssl.conf
ssl_cert = </etc/ssl/certs/server.crt
ssl_key = </etc/ssl/private/server.key
Reiniciei os serviços Postfix e Dovecot após cada alteração na configuração. Os serviços declaram:
Pós-fixo
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
Active: active (exited) since Thu 2023-12-07 12:26:07 UTC; 9min ago
Docs: man:postfix(1)
Process: 3362 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 3362 (code=exited, status=0/SUCCESS)
CPU: 1ms
dic 07 12:26:07 <host> systemd[1]: Starting Postfix Mail Transport Agent...
dic 07 12:26:07 <host> systemd[1]: Finished Postfix Mail Transport Agent.
Pombal
● dovecot.service - Dovecot IMAP/POP3 email server
Loaded: loaded (/lib/systemd/system/dovecot.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2023-12-07 12:26:08 UTC; 12min ago
Docs: man:dovecot(1)
https://doc.dovecot.org/
Main PID: 3372 (dovecot)
Status: "v2.3.16 (7e2e900c1a) running"
Tasks: 5 (limit: 2220)
Memory: 3.1M
CPU: 44ms
CGroup: /system.slice/dovecot.service
├─3372 /usr/sbin/dovecot -F
├─3373 dovecot/anvil
├─3374 dovecot/log
├─3375 dovecot/config
└─3381 dovecot/stats
dic 07 12:26:08 <host> systemd[1]: Starting Dovecot IMAP/POP3 email server...
dic 07 12:26:08 <host> dovecot[3372]: master: Dovecot v2.3.16 (7e2e900c1a) starting up without any protocols (core dumps disabled)
dic 07 12:26:08 <host> systemd[1]: Started Dovecot IMAP/POP3 email server.
Segui a seção Solução de problemas do guia. Tentei muitas permutações, mas nada funcionou e os logs não fornecem nenhum detalhe com o qual eu possa trabalhar.
A pergunta já é muito longa , e como tentei tantas coisas prefiro não prolongar, por favor pergunte nos comentários e irei editar adicionando informações relevantes se necessário. Talvez esteja faltando algo muito básico.
O guia Ubuntu
Seria de se esperar do guia oficial do Ubuntu que seguir os passos S daria o resultado R que pode ser testado com T , pois é assim que o guia é apresentado.
Depois de fazer S → R → T , meu teste falhou, daí minha confusão e a pergunta postada aqui.
Mas acontece que seguir S não resulta em R :
O guia fornece esta configuração em S :
Observe o
noplaintext
.O guia então diz "Resultado da configuração inicial" :
Observe que não há
noplaintext
, e também aquelesmtpd_tls_auth_only = no
que não está em S e não está nopostfix
arquivo de configuração padrão (versão 3.6.4).Acontece que o teste
telnet
sugerido no guia não funcionará senoplaintext
estiver configurado, pois significa que a comunicação deve acontecer de forma segura etelnet
não suporta SSL.De www.postfix.org/SASL_README
Testes:
Com
smtpd_sasl_security_options = noanonymous
a conexão comtelnet
funcionará:smtpd_sasl_security_options = noanonymous,noplaintext
Conectar-se com nãotelnet
funcionará .Com
smtpd_sasl_security_options = noanonymous,noplaintext
esmtpd_tls_auth_only = yes
conectando-se comopenssl
funcionará.Com
smtpd_sasl_security_options = noanonymous,noplaintext
esmtpd_tls_auth_only = no
conectar-se comopenssl
não funcionará .Em resumo, o guia do Ubuntu está quebrado, pelo menos para o servidor Ubuntu 22.04, seguir S não resultará em R , então T falhará.