sabato 18 aprile 2015

Inviare mail da gmail o altri server da file batch utilizzando blat e stunnel

Mi è nata la necessità di inviare semplici e-mail automatizzate da dei file batch (.bat), per fare ciò ho deciso di utilizzare il semplice software da command line blat, questo programma permette di inviare mail tramite server SMTP esterni. Questo software non richiede installazione.
Al primo tentativo però mi sono accorto che il mio server rifiutava la connessione restituendo questo errore:

Blat v3.2.4 (build : Feb 24 2015 21:29:33)
32-bit Windows, Full, Unicode
Error: Wait a bit (possible timeout).
*** Error ***  SMTP server error
Error: Not a socket.
Error: Not a socket.


Ricercando su internet ho scoperto che il mio server, come il server di gmail e penso tanti altri utilizzando la connessione sicura SSL che di default blat non supporta, per ovviare a questo problema entra qui in gioco stunnel, un semplice servizio windows per creare tunnel SSL. Questo software richiede l'installazione.

Una volta installato stunnel bisogna impostarlo come servizio utilizzando il suo comodo collegamento nel menu Start "stunnel Service Install" e, per questa prima volta, avviarlo utilizzando il collegamento "stunnel Service Start".

Fatto questo stunnel va configurato, nella sua directory di installazione è presente un file di configurazione chiamato stunnel.conf, si può sostituire il contenuto con la seguente configurazione:

# GLOBAL OPTIONS

client = yes
output = stunnel-log.txt
debug = 0
taskbar = no

# SERVICE-LEVEL OPTIONS

[SMTP server1]
accept = 127.0.0.1:1099
connect = INDIRIZZO_SERVER_SMTP:NUMERO_PORTA


A questo punto blat è pronto a funzionare utilizzando come server di posta in uscita il nuovo SSL tunnel 127.0.0.1:1099, ad esempio è possibile creare un file batch che mandi una mail con un file in allegato, ecco un esempio:

@echo OFF
set SERVER=127.0.0.1:1099
set USER=USERNAME
set PW=PASSWORD
set FROMNAME=FROM_NAME
set TO=TO_ADDRESS
set CC=CC_ADDRESS
set SUBJECT="Foobar"
set BODY="In allegato un file allegato!"
set ATTACHMENT=ATTACHMENT.FILE
blat -server %SERVER% -f %FROMNAME% -u %USER% -pw %PW% -to %TO% -cc %CC% -subject %SUBJECT% -body %BODY% -attach %ATTACHMENT%


Inoltre, dato che la password così sarà ben visibile nel file batch è possibile fare un semplice livello di encripting utilizzando il semplice software batchtoexeconverter, ovviamente una persona con qualche attenzione potrà riportare leggibile il file exe e leggere la vostra password ma questa è una protezione sufficiente per evitare curiosi.

Bene, per citare una fonte che vale per tutte, buona parte delle informazioni che trovate in questo articolo le ho prese dal blog di frogslayer.

Ciao!