Come appare il messaggio
530 5.7.0 Must issue a STARTTLS command firstCause frequenti
- Client o applicazione impostati su “nessuna cifratura”.
- Porta 587 configurata con TLS implicito o porta 465 con STARTTLS: porta e modalità non coincidono.
- Postfix impone TLS con
smtpd_tls_security_level = encryptosmtpd_tls_auth_only = yes. - Il certificato TLS sul server manca o non è leggibile, quindi STARTTLS non viene offerto.
Verifica
- Verifica che STARTTLS sia offerto e quale certificato arriva
openssl s_client -starttls smtp -connect mail.example.com:587 -servername mail.example.com </dev/null | head -n 5 - Mostra l'obbligo TLS in Postfix
postconf -n | grep -E 'smtpd_tls_security_level|smtpd_tls_auth_only|smtpd_tls_cert_file' - Mostra le impostazioni di submission (587) e smtps (465)
postconf -M submission/inet smtps/inet - Cerca errori STARTTLS nel log
journalctl -u postfix --since '1 hour ago' | grep -i 'starttls'
Soluzione
- Nel client scegli la 587 con STARTTLS o la 465 con SSL/TLS, mai la 587 con “nessuna”.
- Nelle applicazioni imposta l'opzione TLS, ad es. in PHPMailer
SMTPSecure = 'tls'per la 587 o'ssl'per la 465. - Sul server configura un certificato valido in
smtpd_tls_cert_fileesmtpd_tls_key_file, poipostfix reload. - Sulla porta 25 tra server lascia
smtpd_tls_security_level = may, altrimenti rifiuti posta da server senza TLS.
Domande frequenti
Devo imporre TLS sulla porta 25?
Non in modo globale. Sulla 25 arriva posta da altri server e alcuni non parlano TLS. Imponi TLS solo su 587 e 465.
Perché il 530 compare subito dopo il passaggio a un nuovo mail server?
Il nuovo server impone TLS, il vecchio accettava login in chiaro. Stampanti, scanner e vecchi script vanno passati a STARTTLS.