Ejecuto un servicio web simple y necesito enviar correos electrónicos de manera segura a los usuarios a través de PHP.
Sus requisitos exactos de "enviar correos electrónicos de manera segura" son desconocidos. Pero ninguna de sus propuestas ofrece seguridad de extremo a extremo, es decir, dependiendo de la ruta que una o muchas partes pueden interceptar e incluso modificar el correo.
En detalle:
SMTP solo tiene cifrado de salto por salto, lo que significa que cualquier MTA en camino tendrá el correo en claro, incluso si se usó TLS para transmitir el correo al MTA.
Tampoco hay garantía de que se use TLS en absoluto porque la transferencia SMTP comienza de forma simple (sin cifrado) y solo se actualiza opcionalmente a TLS con el comando STARTTLS. Si esto falla o si el MTA de recepción no ofrece STARTTLS, el correo generalmente se envía en texto sin formato (es decir, cifrado de mejor esfuerzo). Hay varias formas en que TLS puede fallar (configuración incorrecta) o un atacante puede hacer que falle, y también hay firewalls que simplemente eliminan el soporte de STARTTLS de forma transparente para que puedan ver el correo.
Aparte de eso, el registro de DNS MX elige el MTA del siguiente salto. Con la falsificación de DNS, el correo puede ser redirigido / interceptado a menos que el MTA de envío esté utilizando una DNSSec estricta, lo que generalmente no lo es.