sábado, 22 de enero de 2011

Enviar emails desde el iSeries - AS400 (V6R1)

Hola compañeros, hoy abordamos la tarea de configurar el iSeries-AS400 (el mejor sistema de gestión empresarial que existe) para enviar correo electrónico al exterior. En mis 20 años en el mundo AS400 ya he configurado bastantes máquinas para ello, pero hace unas semanas me tocó volver hacerlo en V6R1 y aquí tenemos los apuntes por si alguien no lo tiene todavía y le puede venir bien.

INDICE:

1. Configurar el dominio TCP/IP
2. Como decirle al iSeries a donde tiene que redireccionar los correos salientes.
a. Especificar en CHGSMTPA el nombre del servidor smtp que vamos a usar y registrar hasta 3 servidores DNS en el iSeries en la configuración del dominio (CHGTCPDMN)
b. Especificar en CHGSMTPA la dirección ip del servidor smtp que vamos a usar. En este caso no es necesario registrar DNS,s en CHGTCPDMN
3. Crear la dirección e ID de usuario que utilizarán los servicios de correo para direccionar el correo cuyo destinatario es una dirección internet, dentro de este sistema y/o la red SNADS, hasta la pasarela SMTP/MIME
4. Especificar en Atributos de la distribución la dirección e ID de usuario que utilizarán los servicios de correo.
5. Enlaces

CONFIGURAR DOMINIO TCP/IP

El mandato Cambiar dominio TCP/IP (CHGTCPDMN) se utiliza para especificar los nombres de dominio y de sistema principal TCP/IP deL iSeries y para configurar la información del Servidor de Nombres de Dominio (DNS).


En esta pantalla podemos especificar las IP de los servidores DNS a usar (Recomendable). Esto es necesario si queremos que el iSeries sepa a donde reenviar los paquetes de servidores o usuarios que no encuentre en local.

Una vez hecho esto podemos probar a ver si funciona haciendo un ping a una web, por ejemplo google:




COMO DECIRLE AL ISERIES DONDE TIENE QUE REDIRECCIONAR LOS CORREOS SALIENTES
En esta parte veremos la configuración de los atributos de SMTP (Mandato CHGSMTPA) usando el iSeries Navigator. Todas estas tareas tienen su correspondiente mandato del Sistema Operativo del iSeries, los cuales suelo usar preferentemente, aunque el iNavigator es más intuitivo.

Seleccionamos Red -> Servidores -> TCP/IP en el Servidor SMTP elegimos ver Propiedades haciendo click con el botón derecho.


En las propiedades SMTP vemos varias pestañas. En la pestaña GENERAL comprobaremos que está activada la opción “Iniciar cuando se inicia TCP/IP” por motivos evidentes.



En la pestaña “Restricciones de retransmisión” podremos indicar quien puede retransmitir correos e incluir diversas opciones, como, por ejemplo, diversos rangos de IPs autorizadas para retransmitir correos.




En esta pestaña podremos referenciarnos a diversas listas negras y además crearnos nuestra propia lista negra.

En la pestaña de autentificación indicaremos el host que usaremos para enviar los correos, así como el usuario y la contraseña, de forma muy similar a la de un cliente de correo.



CREAR EL USUARIO QUE UTILIZARAN LOS SERVICIOS DE CORREO DEL iSERIES
Lógicamente se crea con el mandato CRTUSRPRF, siendo recomendable crear un usuario exclusivo para esta tarea y con menú inicial “*SIGNOFF”.
Añadir el usuario al directorio de distribución con WRKDIRE o bien directamente con ADDDIRE. A continuación vemos el ejemplo del usuario típico que tendrá más de un iSeries:
ADDDIRE USRID(INTERNET GATEWAY) USRD(’Allow SNDDST to send INTERNET Mail’) SYSNAME(INTERNET) MSFSRVLVL(*USRIDX) PREFADR(NETUSRID *IBM ATCONTXT)

En el ID Usuario y dirección debemos poner el usuario y el nombre del sistema, en nivel de servicio de correo un 2 y en dirección preferida un 3.
Con F19 iremos a los nombres SMTP, también accesible a través del mandato WRKNAMSMTP.

Para una información más detallada acerca de esta última tarea podemos ver el artículo

ESPECIFICAR EN LOS ATRIBUTOS DE LA DISTRIBUCION LA DIRECCION E ID DEL USUARO QUE UTILIZARAN LOS SERVICIOS DE CORREO
CHGDSTA SMTPRTE(INTERNET GATEWAY)

Ya podemos probar a enviar correo, aquí tenemos un ejemplo de envío de correo, en este caso, un documento de una carpeta:
SNDDST TYPE(*DOC) DSTD(descripción) TOINTNET(buzon@dominio.com) DOC(documento) FLR(carpeta)


ADDSMTPLE TYPE(*HOSTAUTH) HOSTNAME(susistema.realm.com) USERNAME(receiver) PASSWORD(xxxx)

Convertir tipos de archivo para enviarlos con SNDDST A medida que el servidor iSeries adquiere un papel más destacado en Internet, se requiere un método que permita enviar información fácilmente del OS/400 a los clientes de correo electrónico. Dando por supuesto que el archivo en spool se ha creado previamente y que el archivo físico y la carpeta ya existen, debe convertir el archivo a un formato que se pueda enviar. Las conversiones se realizan utilizando mandatosiSeries, tal como se muestra más abajo. Mueva el archivo en spool a un archivo físico de base de datos.

CPYSPLF FILE(archivoSpl) TOFILE(archivoDB) JOB(trabajo3/trabajo2/trabajo1) SPLNBR(númeroSpool) TOMBR(miembro)

Mueva el archivo físico de la base de datos a una carpeta.
CPYTOPCD FROMFILE(bib/archivoDB) TOFLR(carpeta) FROMMBR(miembro) REPLACE(*YES)

Envíe el documento con el mandato SNDDST, que tiene varias opciones. Este mandato es el más sencillo para enviar una distribución, pero en los enlaces de más abajo vereis que existe una API que es mucho más completa y que particularmente recomiendo.

SNDDST TYPE(*DOC) TOUSRID(direcciónUsuario) DSTD(MAIL) DOC(miembro) FLR(carpeta)

ENLACES
Hay muchos enlaces relacionados, tan sólo hay que buscar SMTP iSERIES en Google, pero os recomiendo dos de ellos interesantes para seguir en el tema. Es posible que no sean los mejores, pero hace muchos años ya que el primero de ellos me sirvió para usar el SMTP Server del AS400 en versión V4R4.

En la siguiente dirección (toda una institución en el mundo AS400 / iSeries) teneis más información sobre el tema, relativo a versiones anteriores.

Y para entrar totalmente en faena y ampliar la información también tenemos el IBM i Information Center (este enlace corresponde a la versión V6R1):

Saludos y suerte, amigos.

16 comentarios:

  1. Esta muy clara la explicación, gracias

    ResponderEliminar
  2. Muchas gracias por la ayuda que prestas.

    ResponderEliminar
  3. Hola,

    Quería consultarte si existe alguna forma de que el archivo generado en vez de enviarlo por mail se lo pueda colocar en una carpeta de un equipo Windows.

    ResponderEliminar
    Respuestas
    1. Este comentario ha sido eliminado por el autor.

      Eliminar
    2. Para enviar archivos a una carpeta de un equipo Windows puedes hacerlo de varias formas:

      Aquí tienes un ejemplo: http://as400howto.blogspot.com.es/2009/03/intercambio-archivos-entre-as-y-pc.html

      Mira el uso del Sistema de Archivos QNTC: (http://pic.dhe.ibm.com/infocenter/iseries/v6r1m0/topic/ifs/rzaaxqntcfs.htm)

      También puedes revisar las utilidades QSHELL. Esta utilidad te podría servir:
      iconv -f fromCCSID -t toCCSID [ file ... ]
      Aquí tienes info sobre la utilidad en versión 6.1: http://pic.dhe.ibm.com/infocenter/iseries/v6r1m0/topic/rzahz/rzahziconv.htm

      Informate porque hay mucha documentación en internet al respecto.

      Saludos.

      Eliminar
  4. Hola Carlos como estas ? En primer lugar te felicito por este documento, realmente es esclarecedor y de mucha ayuda!
    En segundo lugar, queria comentarte que despues de configurar todo, no consigo que salgan los mails; me dice que "El mail se ha enviado correctamente" pero no sale a ninguna parte :-(
    En otro AS/400 me funciona correctamente, tanto con SNDDST como con SNDSMTPEMM, y no consigo averiguar el motivo por el cual en este otro no salen los mails. Alguna sugerencia sobre que es lo que podria ser, segun tu experiencia?
    Muchas gracias por adelantado !
    MARC

    ResponderEliminar
    Respuestas
    1. Me respondo a mi mismo, y asi de paso si puedo ayudar a alguien pues mejor: EL problema era que faltaba esto: CHGSMTPA FWDHUBSVR(SMTP)
      SMTP es mi servidor SMTP, aqui tambien se podria poner la IP..
      Una vez hecho esto ya empezaron a salir los mails ;-)
      UN ABRAZO !

      Eliminar
    2. Me alegro de que encontrases la solución, Marc. ¿Es un servidor que tienes en tus instalaciones o el de tu proveedor de correo? ;-)

      Eliminar
  5. Hola Carlos.- Me funciona todo correctamente salvo que la hora de envío la aumenta en UNA hora (iSERIES -> Windows mail). ¿alguna sugerencia? Gracias.- Un saludo

    ResponderEliminar
    Respuestas
    1. Hola. Pues lo primero que se me ocurre preguntarte es que me digas qué valor tienes en QTIMZON. (DSPSYSVAL QTIMZON)

      Eliminar
  6. El valor que tiene es
    Q0000UTC
    Desplazamiento . : +00:00
    Nombre completo : Hora universal coordinada

    ResponderEliminar
    Respuestas
    1. ¿Es posible que no sea correcto y tengas que ponerlo en +1?
      ¿En qué zona está el AS400, España?

      Huso horario . . . . . : QP0100CET4 Nombre


      Valores asociados:
      Desplazamiento . : +01:00
      Nombre completo : Hora de Europa Central
      Nombre corto . . : CET

      Eliminar
    2. El equipo está en Ourense.- Ya había intentado esta opción pero cambia la hora de todos los trabajos del sistema. Un saludo

      Eliminar
    3. Intenta hacerlo cuando menos impacto tenga y ajustar la hora del sistema correctamente (valor QHOUR) y pruebas.

      Saludos.

      Eliminar
    4. RESUELTO.- Al cambiar el valor QHOUR a una hora menos y poner el valor QTIMZON con desplazamiento de +1 hora el sistema queda con la hora correcta y también el correo.- Gracias.- Un saludo

      Eliminar
  7. De nada. Me alegro de que ya vaya bien, jeje...

    ResponderEliminar

Muchas gracias por tus comentarios.