Estaréis pensando: ¿pero qué haces loco? si ya existen interfaces web o en su defecto clientes GUI para Linux, Mac, Windows, Android…etc para poder ver el correo y descargar adjuntos, ¿para qué hacerlo mediante bash?.
Pues bien, resulta que hay veces que es necesario automatizar cosas en servidores dedicados para que, por ejemplo nada más recibir un correo con un adjunto se descargue y lo lleve a otro servidor mediante FTP.
Instalamos offlineimap y mpack:
sudo apt-get install offlineimap mpack
creamos una carpeta en nuestro /home, por ejemplo ~/mail/:
mkdir mail
ahora creamos un fichero de texto y lo guardamos en ~/.offlineimaprc , es decir, en nuestra carpeta personal:
[general] accounts = GMail ui = Noninteractive.Basic [Account GMail] localrepository = GMailLocalMaildirRepository remoterepository = GMailServerRepository [Repository GMailLocalMaildirRepository] type = Maildir localfolders = ~/mail/ [Repository GMailServerRepository] type = IMAP remotehost = imap.gmail.com remoteuser = tucuenta@gmail.com remotepass = tucontrasenya ssl = yes
y por último, ejecutamos el script:
offlineimap && munpack /home/usuario/mail/LABEL/new/*
Donde LABEL es la carpeta (INBOX, Trash..etc) que queremos que saque los adjuntos. Este comando nos lo extraerá en nuestro /home, pero si queremos extraerlo en una carpeta personalizada, deberemos ejecutar:
mkdir adjuntos offlineimap && munpack -C /home/usuario/adjuntos/ /home/usuario/mail/LABEL/new/*
Al ejecutar inicialmente uno de estos dos comandos, nos mostrará unas advertencias en la consola para que importemos el certificado SSL en el fichero ~/.offlineimaprc . Basta con añadir la línea:
cert_fingerprint = laclavequenosdigalaconsolaparaimportar
guardamos, y ejecutamos el anterior comando y ahora si que debería de descargarnos todos los correos en la carpeta mail de todas las carpetas que tengamos en el servidor, separándolo en carpetas físicas.
Si no queremos perder los correos, es muy importante NO borrar los ficheros de la carpeta mail, de lo contrario, al sincronizar de nuevo con el servidor, se borrarán allí también
Ahora vamos a crear un pequeño script que nos descargue nuevos correos de la carpeta INBOX, extraiga los adjuntos en la carpeta adjuntos y elimine el mensaje recibido:
#!/bin/bash offlineimap && munpack -C /home/usuario/adjuntos/ /home/usuario/mail/INBOX/new/* rm -f /home/prueba/mail/INBOX/new/*
Para automatizar el proceso determinados días de la semana, se puede crear un cron o bien en el propio script se puede hacer un bucle y un sleep para que este se repita indefinidamente cada tiempo definido en el sleep, como por ejemplo:
#!/bin/bash while true; do offlineimap && munpack -C /home/usuario/adjuntos/ /home/usuario/mail/INBOX/new/* rm -f /home/prueba/mail/INBOX/new/* sleep 350 done
Nota: en la segunda parte, hay un ejemplo con dos cuentas que extraen ficheros de audio wav del correo, lo comprimen a mp3 y lo suben a un directorio de un servidor FTP.
Últimos comentarios