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.