1. Skripte i programi za prosljeđivanje e-mail poruka

 

 

 

 

Na aplikacijskom poslužitelju potrebno je instalirati mail server (sendmail), koristi se i

procmail mail processor. Također je korišten i  formail mail filter. Pri samoj realizaciji korištena je Red Hat 6.2 linux distribucija, pri čemu je instaliran bio sendmail 8.9, te procmail koji je definiran kao LDA (local delivery agent).

 

Moguća su dva načina dostavljanja poruke:

 

            * korisnik koji želi da mu se e-mail poruke dostave na mobilni

telefon forwarda poruke na aplikacijski poslužitelj(sms@pocahontas.zesoi.fer.hr)

            * pošiljatelj e-mail poruke kada šalje poruku u Cc: polje upisuje adresu virtualnog usera na aplikacijskom poslužitelju ( sms@pocahontas.zesoi.fer.hr )

 

Izvedba:

 

Na računalu koje sluzi kao aplikacijski poslužitelj dodan je "virtualni" sms user preko kojega ide komunikacija od i prema GSM mreži. U home direktoriju ovog usera potreban je .procmailrc file koji sluzi za pokretanje mehanizma prosljeđivanja e-mail poruke na SMS.

* napomena: budući da je procmail definiran kao LDA nije potreban .forward file

koji bi ga pokrenuo.

 

<procmailrc>

 

PATH=/bin:/usr/bin:/usr/local/bin

 

MAILDIR=$HOME/mail

LOGFILE=$MAILDIR/logovi   #recommended

SHELL=/bin/sh

 

:0

# radi potreba testiranja,nebitno

* ^Subject:.testni

# proslijediti poruke na GSM telefon

         | formail -k -X To: -X Subject: | $HOME/sms/start.pl

 

</procmailrc>

 

Dakle poruke pristigle na sms@pocahontas.zesoi.fer.hr prosljedjuju se na

formail program koji izdvaja To: i Subject: header-e kao i samo tijelo poruke

te iste prosljedjuje na STDIN perl skripte (start.pl)

 

<start.pl>

 

#!/usr/bin/perl

#

# program mora parsirati stdin koji ce formail pajpati

# iz toga treba povaditi adresu posiljatelja i sadrzaj poruke

# to cemo staviti u dvije varijable kojima pozivamo main.pl

 

$i=0;

while( $_ = <STDIN> ) {

        $_ =~ s/\n$//;

        $_ =~ s/(\t+)/ /g;

        $_ =~ s/(\s)(\s+)/ /g;

        if ($_ =~ /Subject: (.*)/){

                $sub=$1;

        }

        elsif($_ =~ /To: (.*)/){

                $them=$1;

        }else{

                if ($_ =~ /\w/ ){

                $mesg[$i]=$_;

                $i++;

                }

        }

}

#provjera <email@server> ili email@server

if ($them =~ /<(.*)>/){

        $them = $1;

}

# sad pozivamo main skriptu

system "/home/sms/sms/main -e $them \"@mesg\"";

open(FP1,">> /home/sms/sms/log");

print FP1 "main -e $them \"@mesg\" \n";

close (FP1);

 

</start.pl>

 

Perl skripta start.pl čita e-mail sa svoga STDIN ulaza, čisti sam tekst poruke od nepotrebnih praznina i tab-ova (ograničenje SMS poruke na 160 znakova!) te izdvaja e-mail adresu korisnika. E-mail adresa korisnika je ujedno i unos u bazi (baza.txt). Pokreće se skripta main sa parametrima $them (e-mail adresa) i @mesg (tekst same poruke) koja pretražuje bazu, uzima broj GSM uređaja koji je pridružen samoj e-mail adresi, te vrši samo slanje SMS poruke u GSM mrežu Radi se i dodatni unos u log file.