¡Hoy toca una entrada sencilla! Configurar el envío de emails desde z/OS con CSSMTP. Desde z/OS 2.3, ya no se incluye el servidor de correo en z/OS (SMTPD). En su lugar hay que usar el “cliente” de correo CSSMPT. Es necesario disponer de un servidor de correo externo para poder enviar los emails. Haremos la configuración de dos maneras: sin encriptación y con encriptación (TLS).
Es importante tener en cuenta que el servidor externo de correos no puede tener autenticación (el comando AUTH no está disponible en CSSMTP). En mi servidor de correo (el que uso para esta web) si es necesaria la autenticación, por lo tanto, no lo puedo usar directamente.
He tenido que utilizar un servidor intermedio que no requiere autenticación para conectar desde z/OS. He instalado un programa en mi Windows llamado hMailServer.
Lo he descargado de:
Una vez instalado, he creado un dominio y una cuenta. En mi caso, la cuenta de correo local se llama igual que el correo que tengo configurado en el servidor de la web (no en lo local). Hago esto porque el servidor de la web requiere que el usuario exista.
Si en local llamase a la cuenta de otra forma, cuando intente conectar con el servidor de la web, aparecería un error diciendo que la cuenta no existe.
Configuro el servidor local y el servidor remoto que realizará el envío definitivo del correo.
Para hacerlo un poco más seguro, ya que no es posible habilitar la autenticación, he creado un nuevo rango de IPs para permitir únicamente la conexión de la IP de mi z/OS.
Para este nuevo rango, es obligatorio deshabilitar los campos “Require SMTP authentication”.
Ya hemos terminado la configuración básica del servidor intermedio de correo.
Ahora hay que configurar CSSMTP en z/OS. En mi caso, seguiré los pasos del siguiente enlace:
Steps for configuring and starting CSSMTP
Para crear la STC, podemos coger de ejemplo **.SEZAINST(CSSMTP). Yo lo he copiado a mi PROCLIB y lo he adaptado de la siguiente forma:
Fichero de variables de entorno:
USER.Z24D.PARMLIB(CSSMTPEV)
Fichero de configuración:
USER.Z24D.PARMLIB(CSSMTPCF)
Además, el fichero de LOG dejaré que se quede en el spool.
En el fichero USER.Z24D.PARMLIB(CSSMTPEV), he puesto mi zona horaria.
En el fichero USER.Z24D.PARMLIB(CSSMTPCF), he hecho los siguientes cambios:
Nombre del “external writer”.
ExtWrtName CSSMTP Ñ the external writer name
La clase que “monitorizará” la tarea.
ReportSysoutClass A Ñ Can specify the Sysout class
Ñ The default is A
La IP y el puerto del servidor de correo al que conectaremos.
TargetIp 192.168.1.10 Ñ target ip address
ConnectPort 25 Ñ port to connect to target server
Ahora arrancamos la tarea. Debemos fijarnos que aparezca el mensaje:
“EZD1821I CSSMTP ABLE TO USE TARGET SERVER …”
Una vez configurada y arrancada la tarea, probaremos que se envían los correos.
Se puede usar cualquiera de los siguientes métodos:
Steps for creating mail on the JES spool data set for CSSMTP
Yo usaré un job con un paso IEBGENER. Se puede descargar al principio de la entrada.
El job terminará correctamente. Nos fijamos en el job ID (JOB01055).
En la tarea CSSMTP comprobaremos que el correo se ha procesado.
Comprobaré mi buzón de correo para verificar que lo he recibido.
Para esta prueba, yo usaré un certificado autogenerado con OpenSSL en Windows. Lo adecuado sería usar un certificado firmado por una autoridad de certificación (CA – Certificate Authority), pero para esta demostración no es necesario.
En esta entrada podéis ver cómo importar certificados firmados:
RACF - Importart certificados SSL firmados
Para generar el certificado, usaré OpenSSL.
Se puede descargar del siguiente enlace:
Con los siguientes comandos generaré un certificado nuevo con clave privada para usarlo con el programa hMailServer. Después exportaré este certificado y su clave privada a PKCS12 para importarlo en z/OS y que sea más sencillo.
Comando para generar el certificado y clave separados (el certificado no puede tener password de encriptación ya que en hMailServer no está soportado):
openssl req -nodes -new -x509 -keyout smtp_key.pem -out smtp_cert.pem
Tendremos este resultado.
En hMailServer vamos a “SSL certificates” y pulsamos en “Add”.
Seleccionamos los certificados que acabamos de generar y salvamos.
Ahora vamos a la configuración del puerto SMTP 587 y seleccionamos “STARTTLS (Required)” y el certificado que acabamos de añadir al servidor. De esta forma, cuando conectemos a este puerto, se necesitará el certificado.
De forma opcional, podemos borrar la configuración del puerto 25 para que únicamente esté disponible el puerto 587.
Ahora tenemos que poner el certificado en z/OS, añadirlo a RACF y meterlo en un anillo.
He creado un dataset secuencial (PS), VB y LRECL 84.
He copiado el contenido del certificado “smtp_cert.pem” en ese dataset.
Ahora voy a cargar el certificado en RACF con el siguiente job. Se puede encontrar al principio de la entrada.
El ID es el usuario con el que tenemos arrancada la tarea CSSMTP (owner). En mi caso, es START1.
El siguiente job es para crear un nuevo anillo de RACF en el que añadiremos el certificado. El ID debe ser el mismo que el usuario con que tenemos arrancada la tarea CSSMTP.
El siguiente job conecta el certificado que hemos cargado en RACF al anillo que acabamos de crear.
Por último, hacemos un refresco de la configuración y mostramos la información de los anillos y del certificado.
En este punto, hemos terminado la parte de RACF. El siguiente paso es hacer la configuración AT-TLS en la tarea PAGENT.
Buscamos el fichero de configuración de políticas. En mi caso, está indicado dentro del fichero de variables de entorno (DD STDENV).
En mi caso, tendré revisar el fichero de configuración ADCD.Z24D.TCPPARMS(PAGENTCF) para saber el fichero de políticas.
En mi caso, tendré que modificar el fichero ADCD.Z24D.TCPPARMS(TLSPOLY1).
Podéis descargar esta configuración al principio de la entrada.
Lo importante es revisar:
“RemotePortRange”. El puerto al que conectaremos.
“Keyring”. Nombre del anillo de RACF que creamos en pasos anteriores.
“TTLSCipherParmsRef”. Yo uso el listado de “Ciphers” que tengo configurado en PAGENT para otras definiciones.
Refrescamos la configuración con el comando:
F PAGENT,REFRESH
Comprobamos que se ha refrescado bien la configuración.
Ahora tenemos que cambiar la configuración de CSSMTP para indicar que utilice la seguridad e indicar el nuevo puerto.
“ConnectPort”. En mi caso, 587.
“Secure”. Yes
Ahora arrancamos de nuevo CSSMPT (si estaba arrancado, lo paramos).
Comprobamos que pueda conectar con el servidor de correo.
Si hubiese algún problema con el certificado, el anillo de RACF o la configuración de políticas de PAGENT, aparecería un mensaje como el siguiente:
Por último, volvemos a lanzar el job de prueba de email y confirmamos que llega al destino.
Espero que os haya gustado esta entrada y que os pueda servir de ayuda.