domingo, 24 de junio de 2012

Enviando adjuntos desde un shellscript

Frecuentemente tengo que enviar la salida de un proceso por correo, como un archivo adjunto. Utilizo un agente de correo muy versatil, el mutt.

Este cliente de correo se puede utilizar en forma interactiva, como los clientes de correo más habituales. Tiene la peculiaridad de ser orientado a consola. Lo que me llevó a considerarlo para enviar adjuntos es la posibilidad de correrlo desde un shellscript, como salida  un proceso batch.Para eso me cree un archivo de configuración (mutt.rc) personalizado:

#
hdr_order From: Date: To: Cc: Subject:
#
set envelope_from_address="a@domain.com"
#
set from="a@domain.com"
# Utiliza el servidor
set smtp_url="smtp://smtp.server.domain.com"

Las personalizaciones son elementales, la dirección de correo del remitente y un servidor SMTP debidamente configurado. Luego en el shellscript invoco el mutt con esa configuración. Opté por guardar los parámetros en variables, para mejorar la legibilidad y eventualmente re aprovechar el shellscript para otra tarea

MUTT=$(which mutt)
REPORT="/tmp/reporte.csv"
MUTTRC="/home/user/mutt_reportes.rc"
RECIPIENTS="a@domain.com b@domain.com"
SUBJECT="REPORTYE DIARIO"

${MUTT} -F ${MUTTRC} -s "${SUBJECT}" -a ${REPORT} -- ${RECIPIENTS}

La ventaja de usar un agente reconocido como el mutt, en lugar scripts ad hoc, esta a la hora de atravesar filtros antispam y antivirus. Estos filtros suelen dar puntaje negativo a correos con cabezales mal formados o provenientes de agentes desconocidos o poco conocidos.

Actualización 21/Oct/2013

Mutt tiene incorporado el cliente nativo SMTP a partir de la versión 1.5.15. Esta salvedad es importante, especialmente para quienes tienen que dar soporte en equipos Linux viejos o en UNIXes (AIX,Solaris). En AIX esta disponible la versión 1.4.2 en RPM.

No hay comentarios:

Publicar un comentario