Mostrando entradas con la etiqueta correo electronico. Mostrar todas las entradas
Mostrando entradas con la etiqueta correo electronico. Mostrar todas las entradas

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.

jueves, 25 de noviembre de 2010

¿Qué hacer cuando hemos enviado un correo electrónico y nos devuelve un error?

A veces he presenciado auténticas discusiones entre dos empresas porque tenían problemas al enviar y recibir email entre ellos y no tenían claro quien tenía la culpa. Eso es algo que me ha pasado recientemente con dos empresas: la empresa A no recibía correo de la empresa B, pero sí de todo el resto del mundo. La empresa B enviaba bien a todo el mundo, pero no podía enviarle a la empresa A.

Esta situación apuntaba claramente a un problema de listas negras, como así se comprobó posteriormente, pero en los problemas de envío y recepción de correo los motivos pueden ser múltiples, así que vamos a revisar la forma de interpretar el tipo de error, los errores más habituales y como solucionarlos.

Por supuesto, existen muchos más errores y más situaciones, pero repito que estos son los más habituales.

Interpretar el error.

Debemos buscar en el mensaje de error el texto que explica y cataloga el problema. A continuación vemos un ejemplo de un mensaje de error donde vemos en negrita los datos más importantes para identificar y catalogar el tipo de error:

This is the qmail-send program at servidor.cualquierdominio.com.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.
<buzon@cualquierdominio.com>:
Sorry, I couldn't find any host named cualquierdominio.com. (#5.1.2)

Errores más habituales:
-      Dominio incorrecto o no encontrado(Sorry, I couldn't find any host named cualquierdominio.com. (#5.1.2))
-      Dirección incorrecta o buzón inexistente (Ocurrió un error al enviar el mensaje. El servidor de correo respondió: <buzon@cualquierdominio.com>: Recipient address rejected: User unknown in virtual alias table. Por favor, compruebe el destinatario del mensaje buzon@cualquierdominio.com y vuelva a intentarlo.)
o    Si usas un cliente de correo tipo outlook, thunderbird, etc. Este error te lo suele reportar el mismo programa cliente de correo electrónico
o    Comprueba que no has metido ningún caracter en blanco en la dirección porque a veces no se nota mucho: 
o    buzon @cualquierdominio.com (esta dirección tiene un caracter en blanco justo antes de arroba. Hay tipos de letra donde es más difícil verlos)

Mensajes de error más habituales:
451 timeout (#4.4.2)
Tiempo de espera excedido para la comunicación entre el servidor saliente y el receptor.

421 out of memory (#4.3.0)
El servidor receptor tiene problemas de memoria para gestionar el correo.

452 4.4.5 Insufficient disk space; try again later
El servidor receptor se ha quedado sin espacio en disco. Suele ser un problema puntual.

553 sorry, your envelope sender is in my badmailfrom list (#5.7.1)
El servidor receptor tiene bloqueada la dirección del destinatario. No es un error, digamos, aleatorio, en el sentido de que el bloqueo ha sido realizado por un administrador del servidor, por lo que se debe siempre a alguna razón concreta.

553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
Este error significa que el remitente no está autenticando contra su servidor para poder enviar su mensaje. Normalmente se soluciona chequeando la casilla "Mi servidor requiere autenticación" en el programa de correo y reiniciando el mismo.

550 5.7.1 Relaying denied.
Normalmente se soluciona chequeando la casilla "Mi servidor requiere autenticación" en el programa de.
Si a pesar de ello continúa el error, es probable que no estés autentificandote correctamente en el servidor saliente o que te estés autentificando con un usuario incorrecto.

553 Requested action not taken: address blocked
Dirección del destinatario bloqueada.

550 Mailbox is full
El destinatario tiene el buzón lleno y no le cabe tu mensaje. El usuario debe vaciar el buzón de correo bajando el tiempo de permanencia de los mensajes en su buzón o borrando mensajes.

Listas negras y Open Relay

Bien, si el mensaje no llega al destinatario y tampoco llega ningún mensaje de error al remitente, la mayoría de las veces es debido a que uno de los dos servidores tiene activado algún filtro de bloqueo. La mayoría de las veces este filtro está relacionado con listas negras (listas de servidores de correo “peligrosos”).

Cuando tenemos claro que hay algún filtro por medio, hay que asegurarse que ninguna otra dirección del dominio receptor puede recibir correo del dominio remitente. Si ninguna recibe podeis apostar con casi total seguridad a que estamos sufriendo un filtro de listas negras (bien a nivel local con el antivirus o bien a nivel servidor de correo)

Quien quiera profundizar en el conocimiento del término “lista negra” puede pinchar en el siguiente enlace de la wikipedia: