JEEK's SMS-Filter

1/2001 J.E. Klasek jklasek AT zid tuwien ac at

Allgemeines

Der hier vorgestellte Filter dient zur Weiterleitung (unabhängig von der eigentlichen Zustellung der E-Mail) von herkömmlichen E-Mail-Nachrichten an ein SMS-Weiterleitungsservice, womit schlussendlich die E-Mails auf einem Handy gelesen werden können.

Für die vorliegende Lösung ist eine UNIX-Umgebung notwendig, wobei folgende Kommandos erforderlich sind:

Funktionsweise

Der Ablauf bei eintreffen einer neuen E-Mail sieht so aus:
Der Sendmail-Daemon wertet das .forward-File des addressierten Users aus und verteilt die Nachricht, wie in .forward angegeben, in die Inbox des Benutzers "USER" und an ein Filterprogramm, den SMS-Filter.

Als ausführbares Script wird nun /HOMEDIR-PFAD/bin/SMS aufgerufen und bekommt via STDIN die Nachricht zugeführt. Dieses Script schleusst die eingende Nachricht durch den awk-basierten Filter und nimmt die mit einem weiteren Aufruf von sendmail die Weiterleitung an das E-Mail-zu-SMS-Gateway vor.

Es können auch diverse Fehlerzustände auftreten:
Nimmt das SMS-Gateway die gefilterte E-Mail nicht an (wegen Überlastung), dann erhält auch der ursprüngliche Absender die Fehlermeldung, das die SMS-Weiterleitung nicht möglich ist. Das mag für den Absende verwirrend sein, ist aber nicht vermeidbar. Wenn sich die entspr. Absender hierauf bemerkbar machen, dann kann man diese lediglich bitten, die Fehlermeldung zu ignorieren. Die Mail ist, zumindest in der vollständigen Variante ohnehin zugestellt worden.

Filterfunktion

Der Filter hat folgende Eigenschaften:

Files & Download

Derzeitige Version:

SMS
Jenes C-Shell Script das initial von .forward aus aufgerufen wird. Hier ist auch gegebenenfalls der absolute Pfad von nawk festlegen.
Hier muss der Login- bzw. Benutzername eingetragen werden!
SMS.sh
Dieses Script ist eine Variante von SMS und ist jenes Bourne-Shell bzw. Bash Script, das initial von .forward aus aufgerufen wird. Hier ist auch gegebenenfalls der absolute Pfad von nawk festlegen.
Hier muss der absolute Homedirectory-Pfad eingetragen werden!
SMS.awk
Dies ist das eigentlich Filter-Programm, das im NAWK-Script-Dialekt abegefasst ist.
.forward
Ein von Sendmail bei der Zustellung an einen Benutzer gelesenes File mit Um- bzw. Weiterleitungszielen (E-Mail-Adresse, Programme, Files).
Dieses Beispiel-File enthält zum einen als Ziel:
	\USER           wobei USER für den tatsächlichen  Usernamen
			steht und die Zustellung  in  die  lokale  INBOX
			bewirkt.  Das  "\"-Zeichen   ist   bei   neueren
			Sendmailversionen    eigentlich    nicht    mehr
			notwendig,    verhinderte    früher     die
			wiederholter Verwendung von .forward  und  damit
			ein Sich-im-Kreis-drehen bei der Zustellung.

	"|/HOMEDIR-PFAD/bin/SMS" Das mit  "|"  beginnende  Ziel  bezeichnet  ein
			Programm, das die eingehende Nachricht via STDIN
			geliefert bekommt und diese weiterverarbeitet.
smsfilter.tgz
Das SMS-Filter Paket als komprimiertes Archiv (TAR+GZ).
smsfilter.tar
Das SMS-Filter Paket als unkomprimiertes Archiv (nur TAR).

Installation

Kommandos um die Rechte entsprechend zu setzen:

cd
chmod 755 bin/SMS
ls -ld bin bin/SMS* .forward

Das Home-Directory könnte auszugsweise in etwa so aussehen:

-rw-r--r--   1 USER     GROUP         25 Mar  2  2000 .forward
drwxr-xr-x   6 USER     GROUP       2048 Sep 21 17:33 bin
-rwxr-xr-x   1 USER     GROUP        203 Mar  2  2000 bin/SMS
-rw-r--r--   1 USER     GROUP        824 Jan 19  1999 bin/SMS.awk

Wesentlich sind die Execution-Rechte für bin/SMS vorliegen. Das Script wird mit den Rechten des adressierten Users (also USER:GROUP) gestartet.

Es ist darauf zu achten, dass das Sendmail-Forward-File auch wirklich ".forward" heisst und gegebenenfalls von "forward" auf ".forward" unbenannt wurde.

Wenn man möchte, kann man auch die Rechte restriktiver gestalten:

-rw-------   1 USER     GROUP         25 Mar  2  2000 .forward
drwx------   6 USER     GROUP       2048 Sep 21 17:33 bin
-rwxr-xr-x   1 USER     GROUP        203 Mar  2  2000 bin/SMS
-rw-r--r--   1 USER     GROUP        824 Jan 19  1999 bin/SMS.awk
Damit sind die Einstellungen und das Script privat und können von anderen nicht mehr eingesehen werden. Probleme kann es allerdings dann geben, wenn auf dem gleichen Host jemand versucht an USER eine Mail zu senden, dann wird der Sendmail-Prozess, der die Mail-Zustellung macht mit den Rechten des aufrufenden Users exekutiert, wodurch der Zugriff auf .forward verwehrt bleibt. Das kann je nach Sendmail-Version/Installation unterschiedlich realisiert sein.

Im File SMS.awk muss nur noch die E-Mail-SMS-Gateway-Telefonnummer eingetragen werden, wobei eine Mobilkom A1 Nummer voreingestellt ist. Siehe www.mobilcom.at, Produkte -> A1 Grunddienste -> SMS -> SMS empfangen -> Ihr A1 Handy empfängt e-mails.

Fehler bei der Installation

From: Mail Delivery Subsystem 
Subject: Returned mail: unknown mailer error 1
Auto-Submitted: auto-generated (failure)

The original message was received at Fri, 12 Jan 2001 15:21:11 +0100 (MET)
from eva.kph.tuwien.ac.at [128.130.38.13] 

   ----- The following addresses had permanent fatal errors -----
"|/bin/SMS"
    (expanded from: )
    
   ----- Transcript of session follows -----
sh: /bin/SMS: not found
554 "|/bin/SMS"... unknown mailer error 1

Der absolute Pfad zum SMS-Script ist nicht korrekt. Dieser sollte den vollständigen Pfadnamen des Script aufweisen. Es ist zu schreiben:
/HOMEDIR-PFAD/bin/SMS

Subject: Returned mail: unknown mailer error 1
Auto-Submitted: auto-generated (failure)

The original message was received at Fri, 12 Jan 2001 15:25:14 +0100 (MET)
from eva.kph.tuwien.ac.at [128.130.38.13] 

   ----- The following addresses had permanent fatal errors -----
"|/home/USER/bin/SMS"
    (expanded from: )
    
   ----- Transcript of session follows -----
sh: /home/USER/bin/SMS: cannot execute
554 "|/home/USER/bin/SMS"... unknown mailer error 1
Hier fehlen die Execute-Rechte für das Script SMS, mit
chmod +x bin/SMS
nachholen.
From: Mail Delivery Subsystem 
Subject: Returned mail: unknown mailer error 2
Auto-Submitted: auto-generated (failure)

The original message was received at Fri, 12 Jan 2001 15:28:49 +0100 (MET)
from eva.kph.tuwien.ac.at [128.130.38.13] 

   ----- The following addresses had permanent fatal errors -----
"|/home/USER/bin/SMS"
    (expanded from: )
    
   ----- Transcript of session follows -----
awk: Cannot find or open file /bin/SMS.awk. 

 The source line number is 1.
 The error context is
                 >>>  <<<
No recipient addresses found in header
554 "|/home/USER/bin/SMS"... unknown mailer error 2

An dieser Stelle wurde das AWK-Script nicht gefunden, da der Pfad nicht korrekt ist. Vor /bin/SMS.awk sollte der volle Homedirectory-Pfad angegeben werden.