SMaSh OS - forward delle email come SMS

SMaSh offre la possibilità di impostare una o più caselle email per il forwarding delle email come SMS.

Attenzione SMaSh non é un mail server, quindi utilizzerà le caselle email POP3 o IMAP che verranno opportunamente specificate nella configurazione per eseguire il “polling” dei messaggi e il relativo forward verso la rete mobile.

Configurazione da web

Dopo essersi loggati nell'interfaccia SMaSh OS cliccate su Configurazione dal menù alla vostra sinistra

Compilate la sezione “Configura la posta in arrivo per il forwarding EMAIL a SMS” specificando i dati relativi alla casella e-mail della quale volete eseguire il forwarding.

A questo punto attivate il sistema di forwarding dal pannello di controllo

cliccando sul pulsante “start” in concomitanza della voce “SMS gateway”

Ora che il gateway é stato attivato, inviando una mail all'indirizzo impostato nella configurazione con il segunete formato:

Oggetto: TOsms

Corpo della mail (in formato testo)

From: SMaSh
To: 39349345555 
testo del messaggio da inviare

La mail sarà automaticamente trasformata in un SMS

L'architettura del software é basta su FETCHMAIL + PROCMAIL. Fetcmail é il software incaricato di eseguire il polling e download delle email, procmail invece é il filtro che si occupa dell'estrazione dei dati.

Il set di regole di default che esegue l'operazione sopra indicata si trova nella cartella /etc/ nel file procmailrc.

Segue il codice e la sua spiegazione:

SHELL=/bin/sh
VERBOSE=OFF
MAILDIR=/mnt/flash/root/procmail
DEFAULT=/mnt/flash/spool/mail/mails
LOGFILE=/mnt/flash/spool/mail/procmail.log

:0
*  ^Subject:.*TOsms
{
:0 b:  mail.body.lock
| /etc/sms/scripts/email2sms
}

Nella prima parte vengono assegnate le varibili di ambiente, la regola di PROCMAIL inizia con

:0 

dove in seguito viene definito l'oggetto che la mail deve avere per essere intercettata dal filtro. Modificando ^Subject:.*PAROLACHIAVE tutte le mail con soggetto parola chiave saranno processate dal filtro mentre specificando ^Subject:.* tutte le mail saranno processate.

Nella seconda parte

:0 b: 

si chiede al filtro di estrarre tutto il corpo della mail e di passarlo tramite “pipe” allo script di accodamento.

Per modificare il filtro secondo le proprie esigenze basta quindi modificare lo script procmailrc, descritte accuratamente nella guida di procmail. In questo esempio mostreremo come creare un filtro che prende il numero destinatario dell'SMS dall'indirizzo email e il testo dal corpo della mail. Inviando una mail da 393494603237@kdev.it verso l'indirizzo email specificato nella configurazione del forwarder il messaggio sarà inviato al 393494603237.

SHELL=/bin/sh
VERBOSE=OFF
MAILDIR=/mnt/flash/root/procmail
DEFAULT=/mnt/flash/spool/mail/mails
LOGFILE=/mnt/flash/spool/mail/procmail.log
#OUTFILE="/mnt/flash/spool/smsgw.out.XXXXXX"
OUTFILE=$(/bin/mktemp /mnt/flash/spool/outgoing/smsgw.out.XXXXXX)
:0
*  ^Subject:.*TOsms
{
:0
* ? OUTFILE=$(/bin/mktemp /mnt/flash/spool/outgoing/smsgw.out.XXXXXX); echo $OUTFILE > /var/temp.txt; echo "From: MYNAME" >$OUTFILE; /etc/procmail/formail -t  -x"From:" | awk 'BEGIN { FS = "<" } ; {print $2}' | awk 'BEGIN { FS = "@" } ; {print "To: "$1}' >> $OUTFILE

:0 b:  mail.body.lock
| OUTFILE=`/bin/cat /var/temp.txt`; echo "" >> $OUTFILE; /bin/cat  |grep -v ^$ | sed '/To:/G' >> $OUTFILE
}

Inserisci questo codice in /etc/procmailrc e riavvia il gateway email per renderlo operativo.

Nel prossimo esempio utilizzeremo invece l'OGGETTO della mail come testo dell'SMS:

SHELL=/bin/sh
VERBOSE=OFF
MAILDIR=/mnt/flash/root/procmail
DEFAULT=/mnt/flash/spool/mail/mails
LOGFILE=/mnt/flash/spool/mail/procmail.log
#OUTFILE="/mnt/flash/spool/smsgw.out.XXXXXX"
OUTFILE=$(/bin/mktemp /mnt/flash/spool/outgoing/smsgw.out.XXXXXX)

:0
*  ^Subject:.*TOsms
{
:0
* ? OUTFILE=$(/bin/mktemp /mnt/flash/spool/outgoing/smsgw.out.XXXXXX); echo $OUTFILE > /var/temp.txt; echo "From: MYNAME" >$OUTFILE; /etc/procmail/formail -t -x"To:" | awk 'BEGIN { FS = "<" } ; {print $2}' | a
* ? OUTFILE=`/bin/cat /var/temp.txt`; echo "" >> $OUTFILE; /etc/procmail/formail -t -x"Subject:" |grep -v ^$ | sed '/To:/G' >> $OUTFILE
# | egrep -i "@kdev\.it" >> /mnt/flash/test.txt
}

Con procmail potrai processare e utilizzare qualsiasi header della email e adegurae le regole di filtraggio alle tue esigenze. Ad esempio potrati utilizzare il “To” header invece del “From” header o controllare sel nel body ci sono dei termini non utilizzabili (moderazione).