• principal_3

    Desde 2015, enseñando sobre el sistema operativo z/OS de IBM en esta web. z/OS se utiliza en máquinas llamadas Mainframe.

  • principal_1

    Para realizar el contenido, utilizo el producto de IBM llamado z/Development and Test Environtment Personal Edition. Este software permite emular un Mainframe y así poder utilizar z/OS para aprender.

  • principal_2

    Es utilizado por grandes empresas (bancos, aseguradoras...). Aquí aprenderás a instalar y configurar productos relacionados con z/OS.

  • principal_4

    ADCD es una distribución de z/OS que contiene productos de IBM como IMS, DB2, CICS, ZOWE, TWS, NetView, System Automation, etc.

CSSMTP - Envío de correos desde z/OS con TLS

CSSMTP - Envío de correos desde z/OS con TLS

Adjuntos:
Descargar este archivo ($01IMPCR.txt)$01IMPCR[Añade certificado a RACF]0.4 kB
Descargar este archivo ($02RING.txt)$02RING[Crea anillo en RACF]0.4 kB
Descargar este archivo ($03CONCR.txt)$03CONCR[Conecta certificado al anillo]0.6 kB
Descargar este archivo ($04REFCR.txt)$04REFCR[Refresca la configuración y hace display]1 kB
Descargar este archivo (MAILSEN1.txt)MAILSEN1[Job envío de correo]1 kB
Descargar este archivo (PAGENT_CSSMTP_SECURE.txt)PAGENT_CSSMTP_SECURE[Configuración PAGENT]1 kB

¡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:

hMailServer

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.

001 watermark

 

Configuro el servidor local y el servidor remoto que realizará el envío definitivo del correo.

002 watermark

 

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”.

003 watermark

 

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.

004 watermark

 

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

005 watermark

006 watermark

007 watermark

 

Ahora arrancamos la tarea. Debemos fijarnos que aparezca el mensaje:

EZD1821I CSSMTP ABLE TO USE TARGET SERVER …

008 watermark

 

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.

009 watermark

 

El job terminará correctamente. Nos fijamos en el job ID (JOB01055).

010 watermark

 

En la tarea CSSMTP comprobaremos que el correo se ha procesado.

011 watermark

 

Comprobaré mi buzón de correo para verificar que lo he recibido.

012 watermark

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:

OpenSSL

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 

013 watermark

 

Tendremos este resultado.

014 watermark

 

En hMailServer vamos a “SSL certificates” y pulsamos en “Add”.

015 watermark

 

Seleccionamos los certificados que acabamos de generar y salvamos.

016 watermark

 

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.

017 watermark

 

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.    

018 watermark

 

He copiado el contenido del certificado “smtp_cert.pem” en ese dataset.

019 watermark

 

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.

020 watermark

021 watermark

 

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.

022 watermark

 

El siguiente job conecta el certificado que hemos cargado en RACF al anillo que acabamos de crear.

023 watermark

 

Por último, hacemos un refresco de la configuración y mostramos la información de los anillos y del certificado.

024 watermark

 

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).

025 watermark

 

En mi caso, tendré revisar el fichero de configuración ADCD.Z24D.TCPPARMS(PAGENTCF) para saber el fichero de políticas.

026 watermark

 

En mi caso, tendré que modificar el fichero ADCD.Z24D.TCPPARMS(TLSPOLY1).

027 watermark

 

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.

028 watermark

029 watermark

 

Refrescamos la configuración con el comando:

F PAGENT,REFRESH

030 watermark

 

Comprobamos que se ha refrescado bien la configuración.

031 watermark

 

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

032 watermark

 

Ahora arrancamos de nuevo CSSMPT (si estaba arrancado, lo paramos).

Comprobamos que pueda conectar con el servidor de correo.

033 watermark

 

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:

034 watermark

 

Por último, volvemos a lanzar el job de prueba de email y confirmamos que llega al destino.

035 watermark

 

Espero que os haya gustado esta entrada y que os pueda servir de ayuda.

 

Publish modules to the "offcanvs" position.