Home   Artikel   Archiv   Forum   Impressum  
Artikel vom 15.02.02
Autor: Thomas Grotevent
Languages: en
Artikel bewerten:

Printer Druckversion
Helfen Sie mit!
 

Wollmilchsau Server: 11. VBOX - Anrufbeantworter im Server

Kapitelübersicht:
1. Einleitung
2. Basisinstallation
3. LAMP
4. Mailserver
5. SIEVE (Websieve 0.61 / Easysieve 1.1)
6. Hylafax: Fax & Fax/Mail-Integration
7. Squirrelmail
8. Horde PHP Framework
9. Horde IMP - Webmail mit Komfort
10. Horde Turba: Kontaktmanagement
11. VBOX - Anrufbeantworter im Server
12. WebMin


vbox ist ein - durchaus komfortabler - Anrufbeantworter unter Linux. Er bietet eine ganze Reihe von Optionen und Möglichkeiten, die man sonst nur schwer findet.

11.1. Voraussetzungen für die Installation

  • ISDN4Linux muss installiert sein, VBOX setzt auf I4L auf..
  • Für einige zusätzliche Anwendungen sollte das Paket sox installiert sein (Audio-Formatkonvertierung)
  • tcl (bei den meisten Distributionen ohnehin in der Basisinstalltion).

Bei SuSE ist tcl standardmäßig installiert. Ebenfalls ist das eigentliche vbox-Paket installiert, es ist bei SuSE Bestandteil des ISDN4Linux. Eventuell muss vbox bei anderen Distributionen nachinstalliert werden.

11.2. Verzeichnisstruktur

vbox nutzt das Verzeichnis /var/spool/vbox. Hier wird für jeden User ein Verzeichnis angelegt. In dem Benutzerverzeichnis werden die Unterverzeichnisse incoming und messages abgelegt. (Incoming schreibt sich mit einem "m"! Das hat Nerven gekostet...)

  • Anlegen der Verzeichnisse (<user> durch den Usernamen oder gewünschten Verzeichnisnamen ersetzen):
      mkdir /var/spool/vbox/<user>
      mkdir /var/spool/vbox/<user>/incoming
      mkdir /var/spool/vbox/<user>/messages
      
  • Im Programmpaket vbox gibt es einige vorgefertigte Dateien. Bei SuSE stehen diese in /usr/share/doc/packages/vbox/example. Folgende Dateien muß man von dort in das Benutzerverzeichnis kopieren und dabei das ".example" entfernen:
    
      cp /usr/share/doc/packages/vbox/examples/vbox.conf.example /var/spool/vbox/<user>/vbox.conf
      cp /usr/share/doc/packages/vbox/examples/standard.tcl.example /var/spool/vbox/<user>/standard.tcl
      cp /usr/share/doc/packages/vbox/examples/standard.msg.example /var/spool/vbox/<user>/messages/standard.msg
      cp /usr/share/doc/packages/vbox/examples/beep.msg.example /var/spool/vbox/<user>/messages/beep.msg
      cp /usr/share/doc/packages/vbox/examples/timeout.msg.example /var/spool/vbox/<user>/messages/timeout.msg
      
  • Die Dateien für globale Konfiguration und Zugriffsrechte müssen unter /etc/vbox abgelegt werden. Bei SuSE liegen sie bereits dort vor. Kompiliert man vbox selbst, kann dieser Pfad auch /etc/isdn heissen, SuSE scheint hier eingegriffen zu haben.
  • Rechte setzen
    Die Verzeichnisse und Dateien unterhalb von /var/spool/vbox müssen noch die korrekten Zugriffsrechte erhalten. Der User muss laut der vbox-Dokumentation nicht Mitglied der angegebenen Gruppe sein. Wichtiger: Der User "root" darf nicht verwendet werden, dies führt zu Meckermeldungen und Startverweigerungen.
      chown -R <user> /var/spool/vbox/<user>
      chgrp -R users /var/spool/vbox/<user>
      chmod -R 770 /var/spool/vbox/<user>
      
Jetzt müssen die einzelnen Konfig-Dateien angepasst werden:

11.3. /var/spool/vbox/<user>/vbox.conf

Diese Datei hat folgende Funktionen:

  • Nummer-zu Name Umwandlung
  • Separate Ansagetexte pro Anrufer (wenn die Nummer übermittelt wird.)
  • Zeitsteuerung
Im Folgenden werden die Einträge erklärt. Bitte passen Sie diese Datei dem einzelnen User an.

vbox.conf
   # CALLERIDS
   #
   # Format: PATTERN SECTION REALNAME
   	
   [CALLERIDS]
   	
   9317850413	STANDARD-OWNER		Michael Herold
   9317830022	-			Nicole Sauvage
   *		-			*** Unknown ***
  


In diesem Teil geht es um die Rufnummern-zu-Namen-Liste. Sie können hier bestimmte Rufnummern mit bestimmten Ansagen verbinden (Ein Schelm, wer an die böse Schwiegermutter denkt...)
Die erste Spalte beinhaltet die Rufnummer, die erkannt werden soll. In der zweiten Spalte kann eine interne Sektion in der vbox.conf angegeben werden, in der Zeiten und Texte angegeben sind. Wird diese Angabe weggelassen (statt dessen ein -), gilt die Standardansage (Siehe STANDARD unter USERSECTIONS). In der letzten Spalte steht schliesslich der Klartextname des Anrufers.
Wichtig ist die dritte Zeile mit dem "*". Es gilt - wie so oft - dass die erste zutreffende Regel genutzt wird. Diese letzte Zeile "erwischt" nun alle Anrufer, die nicht durch vorherige Zeilen abgehandelt werden konnten. Diese Zeile muss also immer vorhanden sein. Sind mehrere Zeilen angegeben, muss sie als letzte Zeile stehen. Die Zeile STANDARD-OWNER bezeichnet hier auch die Rufnummer des angerufenen Anschlusses, also die eigene Rufnummer.

   # RINGS
   #
   # Format: TIME DAYS RINGS
   	
   [RINGS]
   	
   23:30-23:59,00:00-08:59		*	1
   *					*	6
  
Der Abschnitt RINGS gibt die Standardvorgaben für die Anzahl der Klingelzeichen an. In der ersten Zeile werden die Uhrzeiten 23:30 bis 23:59 und 00:00-08:59 an allen Tagen (das "*") auf ein Klingelzeichen eingestellt, der Anrufbeantworter hebt sofort ab. Zu allen anderen Zeiten wird vbox erst beim sechsten Klingeln aktiv. Auch hier muss die Zeile mit dem "*" am Anfang als letzte stehen und vorhanden sein, siehe oben.
  
   # [USERSECTIONS]
   #
   # Format: TIME DAYS STANDARD RECTIME [FLAG] [...]
   	
   [STANDARD]
   	
   20:15-22:14	DO	aktex.msg	60	RINGS=1
   *		*	standard.msg	90	RINGS=3 TOLLRINGS=4 
   	
   [STANDARD-OWNER]
   
   *		*	standard.msg	120	RINGS=99
  
Hier sind zwei Einstellungen vorgegeben: STANDARD (gilt für alle nicht identifizierten Anrufer).
Von 20:15 - 22.14 an jedem Donnerstag wird der Ansagetext "aktex.msg" verwendet. Die Aufzeichnungsdauer beträgt 60 Sekunden, der Anrufbeantworter hebt sofort beim ersten Klingeln ab. Zu allen anderen Zeiten wird die Standardansage verwendet, Aufzeichnungsdauer 90 Sekunden, Abnehmen nach dem dritten Klingelsignal.

Als zweiter Eintrag gibts den "STANDARD-OWNER". Dieser wird nur bei einer bestimmten Rufnummer aktiv (siehe oben, Sektion CALLERIDS). Er bekommt die Standardansage mit 120 Sekunden Aufzeichnungsdauer und 99 Klingelzeichen (was in der Praxis niemals erreicht wird).

11.4. /etc/vbox/vboxd.conf

Die vboxd.conf steuert die Zugriffsrechte, die User auf vbox-Dateien haben.
Wird der vboxd - daemon gestartet, prüft er diese Listen auf Zugriffserlaubnis des aufrufenden Hosts bzw des Users.

vboxd.conf
   # Login access list
   #
   # All hosts in the login access list (begins with 'L') are checked at
   # login (server startup) time. If access is 'yes' the host can login
   # and count messages without special access.
   	
   L:localhost:Y
   L:*:N
   	
   # Full access list
   #
   # All hosts in the full access list (begins with 'A') are checked if the
   # server gets the 'login' command.
   	
   A:localhost:RW:michael:xxx:/var/spool/vbox/michael:incoming
   A:localhost:RW:nicole:xxx:/var/spool/vbox/nicole:incoming
  	
   A:*:!:!:!:!:!
  


Für meine Zwecke im Testsystem wird diese Datei nicht weiter verändert, lediglich die Userzeilen ("A:localhost...") werden auskommentiert. Sie ermöglichen den direkten Zugriff auf die Soundfiles, in denen der Anrufer sich verewigt. Ich fand diese Lösung nicht so praktisch und habe eine andere gefunden: Statt einer Mailbenachrichtigung versende ich das Soundfile gleich als Mail-Attachment.

11.5. vboxgetty.conf / inittab

Die Datei vboxgetty.conf steuert die globalen Parameter des Programms sowie die Zuordnung der lokalen MSN zu bestimmten Systembenutzern.

vboxgetty.conf
   #--------------------------------------------------------------------------
   # This is an example for 'vboxgetty.conf'. Please read the documentation for
   # a complete description of the commands!
   #--------------------------------------------------------------------------
   	
   # Global settings for all ports
   	
   compression		adpcm-4
   umask			077
   badinitsexit		10
   dropdtrtime		400
   initpause		2500
   commandtimeout		4
   echotimeout		4
   ringtimeout		6
   alivetimeout		1800
   freespace		2000000
   debuglevel		FEWIDJ
  


Dies sind allgemeine Einstellungen für vbox. Als Compression-Type ist standardmäßig ADPCM-4 vorgesehen.
Auch die übrigen Werte entsprechen Standardvorgaben und brauchen zunächst nicht geändert werden. Die Einstellung "debuglevel" wird man früher oder später auf einen geringeren Level zurückfahren, wenn das System kommentarlos läuft. Der Standardwert schreibt ein sehr ausführliches Protokoll, das schnell grössere Dimensionen annimmt.

 	
  
   # Settings for port ttyI6
   	
   port /dev/ttyI6
     modeminit		ATZ&B512&E46
     user			administrator
     group			users
     spooldir		/var/spool/vbox/administrator
   	
   	
   # Settings for port ttyI7
   	
   port /dev/ttyI7
     modeminit		ATZ&B512&E7850413
     user			michael
     group			users
     spooldir		/var/spool/vbox/michael
  
Es hat sich eingebürgert, als Schnittstelle die Port ttyI6 und Folgende zu verwenden. Jedem Port wird eine MSN zugeordnet. Dazu gehört immer ein User, eine Gruppe, und das Verzeichnis des Users.
Wichtig: im String
  modeminit: ATZ&B512&Exxxxxx 
  
muss anstelle des xxxxxx die MSN eingetragen werden!
Wenn vbox an einen internen S0-Anschluß einer TK-Anlage angehängt wurde, muss man eventuell folgendes beachten: TK-Anlagen setzen in aller Regel eine Rufnummer (externe MSN) per Zuordnungsliste auf die Nebenstellenummer (interne MSN) um. In diesem Fall muss die Nebenstellennummer als MSN eingetragen werden. Die übrigen Angaben im modeminit-String: ATZ sorgt für einen Modem-Reset, &B512 stellt die Blockgröße ein. Diese Angaben können übernommen werden.

11.6. Modifikationen

vbox besteht aus einer Reihe recht einfacher Scripten, die gut anpassbar sind. Der Ablauf bei einem Anruf ist für jeden User einzeln steuerbar, dies erledigt die Datei /var/spool/vbox/<use>/standard.tcl.
Diese ruft weitere Scripte auf, die die eigentlichen Funktionen steuern.

Folgende hier genutzte Möglichkeit als Beispiel:

Erfolgt ein Anruf, wird normalerweise eine Mailbenachrichtigung verschickt. Ich möchte die Nachricht gleich als .wav-Datei angehängt haben, der Server soll nach Versand der Datei gleich aufräumen (keine Speicherung der Sounddateien).Hierfür wird SOX benötigt, ein universelles Konvertierungsprogramm zum Umsetzen von Soundformaten.

Das dafür zuständige Script findet sich in /usr/bin/vboxmail.
Die Originaldatei wurde nach vboxmail.org verschoben mit

  >> mv /usr/bin/vboxmail /usr/bin/vboxmail.org
  
und durch die unten abgebildete Version ersetzt. Sie stammt ursprünglich von Jan F. Westerkamp und wurde lediglich für den Mehruserbetrieb umgeschrieben

vbxomail.org
   #! /bin/sh 
   ## 
   #----------------------------------------------------------------------------# 
   # Usage: vboxmail MESSAGENAME CALLERNAME CALLERID MAIL-TO-ADDRESS # 
   #----------------------------------------------------------------------------# 
   # Script basiert auf einer Version von Jan F. Westerkamp / SuSE-ISDN-List. Thx.
   #
   # Anpassungen für Mehruser-System und geänderte Filenames
   #
   	
   MSNAME="${1}" 
   CALLER="${2}" 
   CALLID="${3}" 
   MAILADDR="${4}"
   	
   SENDMAIL='/usr/sbin/sendmail' 
   SOX='/usr/bin/sox' 
   VBOXMODE='/usr/bin/vboxmode' 
   VBOXTOAU='/usr/bin/vboxtoau' 
   RECODE='/usr/bin/recode' 
   CAT='/bin/cat' 
   	
   if (test -f "${MSNAME}") 
   then 
            # Zuerst nach au 
            $VBOXTOAU < $MSNAME > $MSNAME.au 
            # Dann nach wav 
            $SOX $MSNAME.au $MSNAME.wav 
            $RECODE data..base64 $MSNAME.wav 
   	
            # Mail zusammenbasteln 
            (MIMEBOUNDARY="NextPart$$" 
            echo "Mime-Version: 1.0" 
            echo "Content-Type: Multipart/Mixed; Boundary=\"$MIMEBOUNDARY\"" 
            echo "To: $MAILADDR" 
            echo "From: Anrufbeantworter <vbox>" 
            echo "Subject: neuer Anruf" 
   # echo "Subject: Anruf von $CALLER ($CALLID)" 
            echo "" 
            echo "--$MIMEBOUNDARY" 
            echo "Content-Type: text/plain; charset=US-ASCII" 
            echo "" 
            echo "Hallo, Du hast einen Anruf erhalten:" 
            $VBOXMODE $MSNAME 
            echo "" 
            echo "--$MIMEBOUNDARY" 
            echo "Content-Type: audio/x-wav; name=$MSNAME.wav" 
            echo "Content-Description: Audio-File (wav)" 
            echo "Content-Transfer-Encoding: base64" 
            echo "Content-Disposition: attachment; filename=vbox.wav" 
            echo "" 
            $CAT $MSNAME.wav 2>/dev/null 
            echo "" 
            echo "" 
            echo "--$MIMEBOUNDARY--" 
            ) | 2>&1 $SENDMAIL -froot -oi $MAILADDR 
            rm $MSNAME.wav 
            rm $MSNAME.au 
            rm $MSNAME
   fi 
   # Ende 
  


Das Script übernimmt die Parameter, die von /var/spool/vbox/<user>/standard.tcl übermittelt werden. Zunächst wird der Anruf per vboxtoau in das Sun-Audioformat übertragen. Mit sox wird anschließend in das wav-Format umgewandelt. Das Script stellt nun den Mailheader und die Mail zusammen und übergibt das Ganze an sendmail (oder ein anderes Programm mit Sendmailaufruf.) Wer andere Soundformate haben will oder benötigt, kann das Script recht einfach "umstricken", die Funktionen sind nicht schwierig zu erkennen.
Diese Lösung hat einen ganz sinnvollen Vorzug: Anrufe werden als Mail ohne weiteres z.B. an eine Urlaubsvertretung weitergeschickt. Es erspart dann im Zweifel eine weitere Rechtevergabe oder ähnliche Urlaubs - "Umbauten", um evtl. Anrufe abarbeiten zu können.

11.7. Automatisch starten

In der Datei /etc/inittab müssen die Zeilen

          I6:35:respawn:/usr/sbin/vboxgetty -d /dev/ttyI6
  	I7:35:respawn:/usr/sbin/vboxgetty -d /dev/ttyI7
  
eingetragen bzw. bei SuSE entkommentiert werden. Damit startet vbox automatisch beim Booten des PCs.
In der Datei /etc/inetd.conf muss die Zeile
         vboxd  stream  tcp  nowait  root  /usr/bin/tcps  in.midinetd
  
eingetragen bzw. entkommentiert werden. vboxd wird über inetd aufgerufen, ohne diese Zeile startet der Daemon nicht.
Nach dem nächsten Neustart ist vbox aktiv. Bei Problemen ist es recht nützlich, sich die Logdatei mit
  >> tail -f  /var/log/vbox/vboxgetty-ttyIx.log  
  
anzuzeigen und einen Anruf zu starten. Das Log ist informativ, die Fehleraussagen gut zu deuten.

11.8. Gängige Probleme

Die erste Falle: Bei der hier verwendeten SuSE 7.3 ist die Datei standard.msg zerschossen, die Dateilänge beträgt null Byte.
vbox erkennt dies und bricht bei einem Anruf ab. Der Versuch, vbox von einer SuSE 7.1 zu verwenden, erbrachte dasselbe Ergebnis.
Abhilfe: Die Datei timeout.msg nach standard.msg kopieren, dann auf dem Anrufbeantworter anrufen und eine eigene Ansage aufsprechen. Die Datei aus /var/spool/vbox/<user>/incoming nach /var/spool/vbox/<user>/messages/standard.msg kopieren. Wenn Sie das o.a. Script verwenden, müssen Sie die letzte Zeile "rm $MSNAME" solange auskommentieren, sonst löscht das Script die Sounddatei im vbox-Format sofort wieder.

Ein weiteres Problem: Der Anrufbeantworter reagiert nicht und hebt nicht ab.
In den meisten Fällen ist die Einwahl blockiert. Dies können Sie im YaST (Hardware ins System integrieren -> ISDN-Karte -> ISDN-Parameter) ändern.

Wer seinen Kernel selbst übersetzt, sollte beachten, dass die Audio-Unterstützung für ISDN aktiviert werden muss. Bei den meisten gängigen Standard-Kerneln der Distributoren ist dies der Fall.

vbox wurde bei mir mit dem AVM-CAPI4Linux-Treiber getestet, die beiden vertragen sich problemlos. ISDN4Linux muss allerdings bei Installation der AVM-CAPI bereits installiert und konfiguriert sein. Als Mailer nutze ich postfix anstelle von sendmail, auch dies arbeitet ohne Probleme.




Anmerkungen zu diesem Artikel


[2]  vbox vboxmail vboxmail sendet nichtmuelbe11-11-2005
[1]  vbox Anrufe abspielenNewbie9915-8-2003
[1]  raccess4vbox problem Ab 2. Anruf keine Sprachausgabedjspeck14-8-2003
[1]  wollmilchsau : vbox email-versand geht nichtbigbass25-6-2003
[2]  vboxputty konfigurieren? Linuxrechner als Anruferacculeer12-4-2003
[3]  VBOX-Probleme unter Suse 8.1 mmk14-3-2003
[2]  vbox und optische anzeige eingegangene anrufe per lcd?garot81126-2-2003
[2]  Problem mit vbox unter suse 8.1 vbox geht zu schnell rankron08-2-2003
[17]  VBOX & capi Fritz!pci panicman20-1-2003
[5]  vbox fehlermeldung im ttyI0 logwuha17-1-2003
[3]  an J/Psi wegen Lautstärke von vbox. yellow10-1-2003
[1]  vbox und susevbox ist das dasselbe? yellow09-1-2003
[2]  VBox und SuSE 8.0 J/Psi29-10-2002


Eigene Anmerkung eintragen