Tenemos una aplicación web PHP que envía correos electrónicos SMTP a través de smtp.office365.com autenticado. Esto ha estado funcionando durante al menos un par de años.
Estamos usando PHP Mailer 5.2. Estamos forzando el crypto_method a STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT.
Aquí está lo raro. Alrededor del 75% del tiempo funciona bien. El resto del tiempo informa SMTP ERROR: Comando de contraseña fallido: 421 4.7.66 TLS 1.0 y 1.1 no son compatibles. Actualice/actualice su cliente para admitir TLS 1.2.
Los transportes de sockets de flujo registrados son tcp, udp, unix, udg, ssl, sslv3, tls, tlsv1.0, tlsv1.1, tlsv1.2
¿Cómo es posible que funcione la mayor parte del tiempo? Si fuera realmente un problema de TLS, esperaría que fallara el 100 % de las veces.
Lo mismo aquí en la aplicación Java.
Tengo que forzar TLS v1.2 en las propiedades de SMTP. En mi caso:
config.put("mail.smtp.ssl.protocols", "TLSv1.2");Espero que puedas encontrar la respuesta.
De Microsoft:
Se introducirá un nuevo acelerador de error de envío
Somos plenamente conscientes de que muchos clientes no habrán notado las múltiples publicaciones del Centro de mensajes y publicaciones de blog, y no conocen clientes o dispositivos que todavía usan TLS1.0 para enviar mensajes. Con esto en mente, a partir de septiembre de 2021, rechazaremos un pequeño porcentaje de conexiones que usan TLS1.0 para SMTP AUTH. Los clientes deben volver a intentarlo como con cualquier otro error temporal que pueda ocurrir durante el envío. Con el tiempo iremos aumentando el porcentaje de conexiones rechazadas, provocando retrasos en el envío que cada vez más clientes deberían notar. El error será:
421 4.7.66 TLS 1.0 y 1.1 no son compatibles. Actualice/actualice su cliente para admitir TLS 1.2. Visite https://aka.ms/smtp_auth_tls.
Tenemos la intención de hacer un anuncio final cuando estemos listos para hacer el cambio para deshabilitar TLS1.0 y TLS1.1 para SMTP AUTH para el punto final regular.
Puede encontrar documentación adicional aquí: Opt-in to Exchange Online endpoint for legacy TLS clients using SMTP AUTH
Equipo de transporte de intercambio
Descubrí que actualizar la versión de PHP que estaba ejecutando mi servidor ayudó a resolver este problema. Anteriormente estaba ejecutando la versión 5.* y, a pesar de intentar forzar la secuencia de comandos para usar una versión más nueva de TLS, todavía se estaba ejecutando en el speedbump que MS había implementado. Actualizar mi versión de PHP a la versión 7.4 resolvió este problema y desde entonces no he visto correos electrónicos rechazados.