Daily Archives: 04/04/2008

Enviar Emails Desde La Línea de Comandos

¿A quién no le ha pasado que estando en el despacho la habla un amigo por el aMSN pidiendole que le pases el estudio para una práctica de la escuela que tienes en el PC de casa? Bien, creo que a mi sólo, así que aquí explicaré como hice frente a tal reto…

La solución es tan sencilla que incluso un usuario de Windows podría llevarla a cabo. Todo consiste en llegar a casa, en este caso lo hacemos por SSH.

ssh nordri@..micasa.net

Ahora pongo mi contraseña para poder acceder (lógico no?) una vez logeado en mi casa me muevo hasta el directorio donde está el estudio

cd /home/nordri/Cosas/etsii/segundo/2c/dce/

Aquí se haya el PDF con el estudio teórico que debe ser entregado al compañero. Si bien es cierto que aquí nacen dos posibles caminos de solución. En primer lugar puedo copiar ese archivo a mi máquina del despacho:

scp practica1.pdf nordri@midespacho.es:/home/nordri/

Y una vez aquí utilizar la transferiencia de ficheros que tiene aMSN para enviar el archivo al compañero.

Pero esta forma es mala, es mala porque es lenta, porque tengo que mover el fichero dos veces y me aparece una copia local que no necesito. Así que mejor lo mandamos por correo. Es aquí cuando la misión se pone interesante.

Para enviar correos en línea de comandos dispones de varios programas, inclusive, te puedes configurar todo un servidor SMTP para tal fin. La solución software que yo uso es email.

El paquete email, desgraciadamente, no se encuantra en los repositorios oficiales de Gutsy, así que toca compilarlo a mano, sin miedo, es un programa con pocas dependencias y alta probabilidad de que compile bien a la primera.

Vamos a ello.

1. Descomprimimos el paquete.

tar {z,j}xvf email...tar.{gz,bz2}

Se usa j para bz2 y z para gz.

2. Se configura el paquete

./configure

Si lo anterior no devolvió ningún error procedemos con la compilación. Si devolvió algún error, es más que posible que se trate de algún problema de dependencias. Localizadla e instalarla.

3. Se compila

make && make install

make se puede usar como usuario normal, make install es siempre con permisos de root (su o sudo según el caso). 

Una vez instalado, pasamos a configurarlo, a no ser que le hayas pasado parámetros al configure en el argumento –prefix, los archivos de configuración están en /usr/local/etc/email. La configuración es sencilla, es como cualquier otro cliente de correo. Vamos a ello

El servidor smtp a usar

SMTP_SERVER = 'smtp.servidor.com'
SMTP_PORT = ‘25′

Ponemos nuestro nombre que aparecerá en el remitente.

MY_NAME  = 'nordri'

Nuestro correo.

MY_EMAIL = 'nordri@..'

Esta opción es por si queremos que se respondan los emails a otra cuenta de correo.

REPLY_TO = ''

Podemos añadir una firma a cada correo, del tipo "este correo ha sido enviado desde la línea de comandos." o "este mensaje se envía de forma desatendida, por favor no responda" o cosas así, ahí la imaginación al poder.

SIGNATURE_FILE    = '&/email.sig'
SIGNATURE_DIVIDER = ‘– ‘

Aquí la libreta de direcciones, también es posible añadir direcciones en tiempo de escribir el comando en el prompt.

ADDRESS_BOOK = '&/email.address.template'

El directorio temporal donde email colocará los archivos necesarios durante su ejecución, cuando termine, los eliminará.

TEMP_DIR = '/tmp'

Si queremos conservar una copia de los emails enviados activamos esta opción indicandole dónde guardarla.

SAVE_SENT_MAIL = '~'

El soporte PGP queda aparcado para otro post que quiero escribir.

Hay que indicar el tipo de autentificación que requiere tu servidor de SMTP, normalmente es LOGIN o PLAIN (Nota: en la web oficial anuncian que soporta TLS desde noviembre, sin embargo, tanto en la página del manual como en la documentación del archivo de configuración se indica que sólo soporta esos dos tipos).

SMTP_AUTH = 'elegir'

Nombre de usuario, aquí lo normal es poner todo lo que está delante de la arroba, en otro sitios es necesario poner la dirección completa.

SMTP_AUTH_USER = 'usuario'

La contraseña del correo, esto es un fallo de seguridad, la contraseña queda en en texto plano, accesible a cualquiera que use el sistema.

SMTP_AUTH_PASS = ''

Pues listo, ya tenemos un programita que nos envía correos por la línea de comandos, usémoslo:

email -s "La práctica de dce" -a practica1.pdf compañero@hotm...com

Al apretar intro se abrirá el editor predeterminado del sistema (vim en mi caso) y podremos escribirles unas líneas del cuerpo del mensaje. Aunque si vamos con prisa otra forma de invocarlo es

echo "esto sera el cuerpo del mensaje" | email -s "Práctica DCE" -a practica1.pdf compañero@...mail.com

Los parámetros son varios y están bien comentados en el manual, los más frecuentes (los que yo uso) son:

  • -s: Asunto.
  • -a: Adjunto.
  • -q: Modo silencioso (útil para los scripts)
  • -html: Para enviarlos en modo html. (Tú tienes que escribir el html)

Y ya está. Ahora que puedes mandar correos desde la consola que sólo tu imaginación ponga límites a todo lo que puedes hacer con esto.