mercredi 6 juillet 2011

Installation et configuration de Hylafax

Introduction
Dans cette partie, je vais décrire l’installation du serveur de fax hylafax. Du point de vue du client, le service se comporte exactement comme une impression en réseau. L’installation de ce serveur de fax suppose l’utilisation d’une distribution SUSE mais ceci est probablement applicable à toutes les distributions en changeant simplement les répertoires de configuration. Les normes de communication pour envoyer les fax sont fournies en Annexe 4 ainsi que des explications sur les classes de modem.
Installation du serveur
Configuration de hylafax
Le modem est configuré sur le port COM1 sous DOS soit ttyS0 sous Linux. Un lien a été créé de /dev/modem vers /dev/ttyS0 pour des questions de commodités. La première partie de l’installation consiste à réussir à envoyer des fax à partir du serveur. La configuration du serveur de fax hylafax se fait grâce à l’utilitaire faxsetup.

Utiliser faxsetup pour configurer le serveur
Pour pouvoir utiliser le logiciel hylafax, il faut au préalable  exécuter le script faxsetup. Ce script interactif vérifie l’installation du logiciel hylafax et apporte une variété de petites questions qui préparent le système à l’utilisation. Il écrit les informations de configuration dans deux fichiers : config et config.modem dans la zone de spool /var/spool/fax/ de hylafax. Le fichier /etc/setup.cache de la zone de spool contient les paramètres d’installation utilisés par les scripts de commande d’hylafax alors que le fichier /etc/setup.modem contient les scripts de commande pour communiquer avec les modems.
Les fichiers setup.cache et setup.modem doivent être présents pour que  hylafax fonctionne correctement. Si ces fichiers n’existent pas, les applications du serveur hylafax se termineront avec un message d’erreur.
En suivant les renseignements qui lui sont fournis, faxsetup crée un fichier de configuration pour le lancement de certains processus en tache de fond tel que faxqclean et faxcron mais crée aussi un fichier de configuration pour chaque modem installé sur le serveur.
Enfin, les processus du serveur hylafax sont démarrés ou redémarrés si une installation précédente avait déjà été effectuée.
Utiliser faxaddmodem pour configurer les modems
Le script interactif faxaddmodem permet de configurer les nouveaux modems ou de reconfigurer ceux dont l’installation n’était pas correcte. Il peut être lancé directement dans une fenêtre shell ou via faxsetup.
Configuration des paramètres d’envoi et de réception de fax
Dans une fenêtre shell, à l'invite de commande, j’ai tapé faxaddmodem modem où modem correspond à un lien vers le modem. Le fichier de configuration du scheduler d’hylafax : /var/spool/fax/etc/config est automatiquement lu pour récupérer les paramètres par défaut notamment le code de région. Le script pose alors à l’utilisateur une série de questions tel que décrit ci-après. Les réponses par défaut du script sont placées entre les crochets. Les paramètres que j’ai saisis manuellement se situent après le point d’interrogation. Les explications sur la signifcation des questions sont précédées d’un dièse (#).
# Code du pays (code 1 par défaut)
Country code [1]?
# Le code de zone ne peut être vide (code 510 par défaut)
Area code [510]?
# C’est le numéro de téléphone associé au modem. Ce numéro peut aussi apparaître sur les pages de garde.
Phone number of fax modem [+1.999.555.1212]? 0549726387
# La chaîne d’identification de la machine locale. Si ce champ est vide, le serveur utilise le numéro de téléphone du modem.
Local identification string (for TSI/CIG) [""]?GUILL
# Ces deux paramètres précisent les numéros à composer pour les appels internationaux et longues distances.
Long distance dialing prefix [1]?
International dialing prefix [011]?
# Le fichier de string rules maintient les règles utilisées pour convertir les chaînes de connexions des utilisateurs (i.e. numéro de téléphone) dans un format canonique et prépare les chaînes de caractères à passer au modem.
Dial string rules file (relative to /var/spool/fax) [etc/dialrules.sf-ba]?
# Les deux paramètres contrôlent les log des processus du serveur.
Tracing during normal server operation [1]?
Tracing during send and receive sessions [11]?
# Le paramètre par défaut sélectionné ici rend accessible les fax reçus uniquement à l’utilisateur. Il peut être intéressant de mettre ce paramètre à 644 pour que tout le monde puisse voir les fax reçus.
Protection mode for received facsimile [0600]?
# Ces paramètres spécifient les permissions du fichier de log des utilisateurs.
Protection mode for session logs [0600]?
# Si des informations sensibles telles que les codes de carte de crédit sont fournies par les utilisateurs, ils seront visibles dans le fichier de log enregistré sur le serveur. Pour cette raison, le code de protection par défaut du fichier de log le protège des accès publics.
Protection mode for ttym2 [0600]?
# Ce paramètre spécifie le nombre de sonneries avant de se mettre en réception de fax.
Rings to wait before answering [1]?
# Désactive le haut parleur du modem.
Modem speaker volume [off]?
# Ce paramètre est utile pour les appels entrants. Les paramètres précisés manuellement sont spécifiques à la distribution SUSE.
Command line arguments to getty program ["-h %l -x %s"]? –r –b –s %s %l
# Le fichier TSI de contrôle d’accès peut être utilisé pour interdire certains numéros de fax entrants. Le paramètre par défaut accepte tous les appels entrants.
Pathname of TSI access control list file (relative to /var/spool/fax) [""]?
# Définit la police à utiliser pour les « tag line » (lignes qui sont insérées en haut du fax)
Tag line font file (relative to /var/spool/fax) [etc/lutRS18.pcf]?
# Les Tag lines sont optionnelles. Elles permettent de mettre une ligne de texte en haut des fax sortants. L’option %%l précise de qui provient le fax, %c précise l’heure et la date d’envoi, %%p donne le numéro de la page en cours alors que %%t donne le nombre total de pages
Tag line format string ["From %%l|%c|Page %%p of %%t"]?
# Ce paramètre contrôle le temps mis par le serveur HylaFAX avant de déplacer un fichier UUCP bloqué.
Time before purging a stale UUCP lock file (secs) [30]?
# Pourcentage de lignes correctes pour accepter le fax durant la vérification de la qualité de la télécopie.
Percent good lines to accept during copy quality checking [95]?
# Nombre de mauvaises lignes à accepter pendant la vérification de la télécopie
Max consecutive bad lines to accept during copy quality checking [5]?
# Nombre maximal de pages lors de la réception d’un fax.
Max number of pages to accept in a received facsimile [25]?
# Ces paramètres sont relatifs aux fax entrants.
Syslog facility name for ServerTracing messages ["daemon"]?
# Ce paramètre est uniquement valable si vous installez le modem sur un système Silicon Graphics.
Set UID to 0 to manipulate CLOCAL [""]? No.
Un résumé de ces différents paramètres permet de vérifier la configuration de l’envoi et la réception de fax puis d’enregistrer celle-ci.
Configuration des caractéristiques du modem
faxaddmodem recherche ensuite le type et les fonctionnalités du modem. Il va parcourir le bloc tty pour configurer le type de modem qui y est attaché. Le modem doit être câblé et allumé.
Probing for best speed to talk to modem: 38400 OK.
Hmm, this looks like a Class 1 modem.
Product code (ATI0) is "56000".
Other information (ATI3) is "V1.120HY-K56_DLS".

Le protocole de contrôle de flux est xonxoff au niveau logiciel ou rtscts au niveau logiciel. Le paramètre default permet l’installation appropriée au modem.
DTE-DCE flow control scheme [default]?
Command to enter Class 1 [AT+FCLASS=1]?
Extra bytes in a received HDLC frame [4]?
Maximum time to wait for OK after aborting a receive (ms) [200]?
Maximum wait for initial identification frame (ms) [40000]?
Delay before sending post-page message (ms) [75]?
Delay between sending TCF and ack/nak (ms) [75]?
Delay before sending DCS and TCF (ms) [75]?
Delay after failed training (ms) [1500]?

Un petit résumé est alors affiché pour valider les paramètres du modem.
The modem configuration parameters are:
Class1Cmd:              AT+FCLASS=1
Class1FrameOverhead:    4
Class1RecvAbortOK:      200
Class1RecvIdentTimer:   40000
Class1SendPPMDelay:     75
Class1SendTCFDelay:     75
Class1TCFMaxNonZero:    10
Class1TCFMinRun:        1000
Class1TCFResponseDelay: 75
Class1TrainingRecovery: 1500

Are these ok [yes]?
Dès qu’un modem a été installé avec faxaddmodem, l’ordonnanceur d’hylafax doit être informé de sa présence. Ceci peut être effectué de deux manières. Si un système est utilisé uniquement pour transmettre des fax alors l’ordonnanceur est informé en lançant la commande « faxmodem modem ». Sinon, si un modem est utilisé pour les fax entrants et sortants, le programme faxgetty doit alors être réinstallé pour contrôler le modem. Si un modem était précédemment configuré, le processus du serveur hylafax remarquera le nouveau fichier de configuration, et utilisera automatiquement son contenu. Si faxaddmodem a té démarré à partir de faxsetup, alors faxsetup finit la configuration sur le serveur automatiquement.
Démarrage du service d'envoi
L'envoi des fax est effectué grâce au programme faxq. Il y a un processus faxq pour chaque modem configuré sur la machine. Le programme faxq écoute les messages qui arrivent dans le fichier FIFO qui se trouve dans le répertoire de spool du serveur. Ces messages peuvent provenir de deux sources : du programme faxmodem qui est utilisé pour activer manuellement le modem ou du processus faxgetty qui est configuré pour chaque bloc tty où un modem fax est installé.
faxmodem est utilisé lorsque hylafax doit fonctionner en envoi uniquement. Dans le cadre de mon stage, c’est cette fonctionnalité qui a été retenue car il existait une machine fax connectée sur la ligne spécifique au fax. Un modem spécifié par faxmodem est identifié par le bloc tty auquel il est attaché.
Installer l’accès au client
Les applications clientes d’hylafax telles que sendfax, respond, w2hfax ne communiquent pas directement avec les processus du serveur tels que faxq ou faxgetty. Elles communiquent avec le programme hfaxd gérant le protocole client serveur. Cette architecture isole les applications clientes de la structure interne du serveur, en leur fournissant un environnement plus solide.
Hfaxd est normalement démarré lorsque le programme faxsetup est lancé. Faxsetup s’arrange aussi pour que hfaxd soit démarré chaque fois que le serveur est redémarré. Hfaxd peut être démarré en mode autonome ou à partir du programme inetd. Quand hfaxd est démarré, les arguments de la ligne de commande spécifient quel type de protocole client serveur sera offert. Habituellement, hfaxd peut supporter trois protocoles :
- La version 4.0 du protocole client serveur d’hylafax,
- Les versions du protocole client serveur d’hylafax antérieur à 4.0,
- le Simple Network Pager Protocol (SNPP) qui est utilisé pour soumettre une requête alphanumérique.
Quand il fonctionne en mode autonome, les options de la ligne de commande spécifient le protocole supporté et les ports sur lesquels les services sont fournis. Le port pour le nouveau protocole est spécifié dans le fichier /etc/services avec la ligne : hylafax 5555/tcp #HylaFAX client-server protocol.
Le port 5555 avec le protocole TCP sera utilisé pour la communication client-serveur. Une autre ligne précise le port pour le protocole SNPP. Elle est inutile car à chaque démarrage, hfaxd force hylafax à communiquer sur le port 444. Les processus du serveur peuvent être démarrés à chaque redémarrage de la machine. Il faut pour cela mettre la variable START_HYLAFAX = yes dans le fichier /etc/rc.config. Si le serveur fonctionne uniquement en réception, il faut taper « faxmodem modem » à chaque redémarrage de la machine.
Il est nécessaire de spécifier quelles machines clientes et quels utilisateurs vont avoir accès au serveur hylafax. Ceci est spécifié par le contenu du fichier /var/spool/fax/etc/hosts du serveur. Ce fichier qui est installé avec hylafax, permet à n’importe qui d’avoir un accès à travers l’interface réseau de localhost. Le fichier des hôtes contient :
localhost
127.0.0.1
Le fichier /etc/hosts de la zone de spool doit appartenir à l’utilisateur fax et doit avoir le code d’accès 0600 sinon hfaxd ne permettra pas l’accès des clients au serveur. Avec ces deux lignes, tous les utilisateurs se connectant avec un nom de la forme moi1@localhost auront accès au serveur de fax. Chaque fois que le fichier des hôtes est modifié, il faut relancer les processus du serveur.
Les différents clients WINDOWS
Après avoir installé et configuré hylafax pour pouvoir envoyer des fax depuis le serveur, il fallait donner accès aux clients Windows de mon réseau local. J’ai donc fait une étude de plusieurs outils pour voir lequel pouvait le mieux convenir aux utilisateurs de l’entreprise.
Le logiciel respond pour les clients Windows
Pour que le service de fax puisse être utilisé, il est nécessaire de configurer correctement les stations clientes qui veulent pouvoir utiliser ce service. Concrètement, il est nécessaire d’installer une nouvelle imprimante et le programme respond qui se charge d’écouter les connexions du serveur pour obtenir de l’utilisateur les informations supplémentaires. Ce programme doit être exécuté automatiquement au démarrage de la session sur la machine cliente pour que le service soit disponible. La nouvelle imprimante s’appellera « serveurfax ».
Installation du programme respond
Une fois que le document a été envoyé à « serveurfax », il faut connaître le numéro de fax du destinataire du document. Pour cela, j’utilise le programme respond. Ce programme s’exécute sur les stations clientes et, quand elles envoient un fax à l’imprimante fax, le service de fax se met en contact avec la station cliente grâce à ce programme pour obtenir les informations supplémentaires nécessaires. Pour installer le programme, il suffit de copier l’exécutable sur la machine cliente. Pour que le programme respond s’exécute au démarrage de la session, il faut placer un raccourci dans le groupe de démarrage de Windows. La configuration du programme respond s’effectue avec le programme appelé config. Cet autre programme permet de spécifier le numéro de port sur lequel la communication avec le serveur va s’établir. Le protocole client-serveur s’établit par exemple sur le port 5555. Le délai d’envoi est nul, c’est-à-dire que l’envoi du fax se fait aussitôt après l’appui sur le bouton « OK ».
L’interface graphique de ce programme est montrée ci-contre.
Configuration de samba
Pour que le service de fax soit le plus transparent possible pour tous les utilisateurs, il faut créer une imprimante partagée avec Samba, à laquelle les utilisateurs pourront envoyer leurs documents qu’ils veulent envoyer en tant que fax.
Pour créer une telle ressource partagée, j’ai ajouté les lignes suivantes dans le fichier de configuration de samba (/etc/smb.conf) :
[fax]
 printable = yes
 writable = yes
 postscript = yes
 comment = Serveur de Fax
 print command = (/usr/bin/printfax-1_5_0.pl %I %s %U %m; rm %s)
 path = /mnt/fax

Les paramètres relatifs à ce service sont les suivants :
print command
Spécifie la commande à exécuter lorsque le serveur reçoit le fichier à imprimer (à faxer). Il est possible que Samba n’efface pas le fichier à imprimer après avoir exécuté l’envoi. Il est donc nécessaire de le faire manuellement avec la commande « rm %s » où %s est le fichier à envoyer.
path
Indique le répertoire dans lequel les fichiers à envoyer sont stockés lorsqu’un client Windows veut envoyer un fax. Ce répertoire doit avoir les droits d’écriture pour tous les utilisateurs.
Le programme printfax.pl se charge de se mettre en contact avec le client Windows, pour solliciter les informations nécessaires pour envoyer le fax (numéro de fax du destinataire, adresse de courrier électronique pour envoyer la confirmation d’envoi, etc.). Dès que toutes ces informations sont obtenues, le fax est envoyé (spoolé) dans la file d’attente en attendant l’activation du démon d’envoi. printfax.pl est un script développé en langage perl qui doit se personnaliser pour indiquer les répertoires de travail.
Installation du service fax comme une impression locale
Le service de fax se comporte comme une impression PostScript. Pour cela, il est nécessaire d’installer une nouvelle imprimante. Quand le client désire envoyer un fax, il imprime alors le document sur l’imprimante définie précédemment. Le serveur Samba n’est pas configuré pour proposer le driver d’impression nécessaire directement depuis le serveur. Il est donc nécessaire d’installer le driver manuellement grâce au CD du système d’exploitation. Pour installer l’imprimante, il faut aller dans le voisinage réseau, entrer sur le serveur Linux (ici server2) et faire un double clique sur l’imprimante « fax ». Dans la fenêtre de dialogue qui s’ouvre, donner un nom au serveur de fax. Ensuite, il faut installer le driver pour l’imprimante PostScript, une LaserWriter du constructeur Apple fait parfaitement l’affaire.
Installation des messages de retour
Les notifications d’envoi et d’erreur sur le service de fax sont réalisées grâce aux messages provenant de Windows. Sur Windows 9x, il faut que le programme winpopup soit exécuté au démarrage de la session. Dans le cas de Windows NT ceci n’est pas nécessaire, car les messages sont directement gérés par le système.
Utilisation du service
Comme je l’ai dit précédemment, pour envoyer un fax, il faut imprimer le document sur l’imprimante créée dans la première partie de l’installation. Il apparaît sur la station cliente la fenêtre de dialogue suivante (le programme respond doit être en train de s’exécuter) :
Dans ce formulaire, le champ fax-number doit obligatoirement être renseigné. Les champs Sender-User et Sender-Name sont optionnels, ils sont seulement utilisés pour la comptabilité du service et pour les messages de confirmation. Lorsque le champ fax-number n’est pas renseigné ou lorsque l’utilisateur annule l’envoi, le fax est détruit.
Le logiciel W2HFAX
Introduction
Ce client fonctionne grâce à une librairie Active-X écrite dans le langage Python. Cette librairie peut aussi être utilisée pour envoyer des fax à travers les logiciels de la suite Microsoft Office, Acrobat Reader et bien d’autres. Le client Windows en lui-même est développé en Visual Basic.
Installation du programme
L’installation de ce programme se fait de la même manière que n’importe quelle installation de logiciel sous Windows. Pour que le programme fonctionne correctement, il faut installer le logiciel Python 1.52 ainsi que le logiciel Python Win32 Extensions.
Pour minimiser la place prise par le logiciel sur le disque dur, j’ai choisi d’installer uniquement le composant « Python interpreter and library » comme le montre la figure ci-contre. Ce composant est amplement suffisant pour l’utilisation que nous allons faire de ce logiciel
Dès que l’installation de python est terminée, il nous faut réaliser l’installation des extensions 32 bits pour ce logiciel. On prendra soin de l’installer dans le même répertoire pour ne pas être ennuyé lors de la désinstallation.
Il faut enfin installer un redirecteur de port qui nous permettra de rediriger les fax vers le serveur de fax. Le logiciel que nous utilisons est Redmon dans sa version 1.3. L’utilisation de ce redirecteur de port sera vue dans la section paramétrage de l’imprimante pour le fax.
Installation du service
Pour installer le service sur le client Windows, il faut enregistrer l’objet de communication grâce au fichier hfaxcom.py qui se trouve dans le répertoire d’installation de W2HFAX. Dans le cadre de l’utilisation dans l’entreprise, j’ai effectué quelques modifications sur ce fichier, notamment le numéro de port sur lequel la communication entre le client et le serveur va s’établir ainsi que le nom de l’utilisateur et son mot de passe. Le fichier de configuration se trouve en Annexe de ce document.
J’ai ensuite enregistré de la même manière le fichier hfaxcom.py. Il n’y avait aucune modification à faire sur celui-ci car sa fonction principale était d’enregistrer l’objet de communication dans la base de registre. L’exécution de ces deux fichiers a créé deux nouveaux fichiers avec des extensions.pyc : hfaxcom.pyc et hfaxlib.pyc.
Le logiciel d’envoi de fax peut maintenant fonctionner, nous pouvons envoyer des fax à partir de celui-ci.
L’interface graphique de la page principal de ce nouveau client est ci-contre.
Par défaut lors de l’ouverture, la page affichée est celle donnant les indications sur la liste des fax contenus dans la file d’attente. Mais là où l’installation d’un système comme celui-ci est intéressant lorsque les utilisateurs peuvent envoyer des fax de n’importe quelles applications. Pour ce faire, nous allons installer une imprimante sur chaque poste client.
Installer une nouvelle imprimante
J’ai installé une nouvelle imprimante en local sur le poste Windows. J’ai choisi les mêmes pilotes que pour l’installation du programme respond.exe. En fait, l’imprimante installée est une laserWriter du constructeur Apple. Pour finir de configurer le logiciel, il faut rediriger les envois de documents à l’imprimante vers le serveur. Pour ceci, j’ai utilisé le redirecteur de port Redmon.
Lorsque la redirection a été effectuée, il suffit de préciser au port créé le logiciel qu’il doit exécuter. Dans le cadre de notre application cliente, le logiciel W2HFAX se trouve dans le répertoire précisé ci-dessous. L’argument “printdialog” affiche une fenêtre permettant à l’utilisateur de saisir le numéro de télécopie du destinataire.
Lorsque tous ces logiciels sont mis en place, l’utilisateur peut imprimer à partir de n’importe quelle application Windows en envoyant ses documents sur la nouvelle imprimante.
Conclusion
D’autres clients Windows existent mais le client W2HFAX était amplement suffisant pour l’utilisation au sein de l’entreprise. J’ai été ennuyé avec le logiciel Respond car il ne me donnait pas d’accusé d’envoi de fax. Le logiciel Hylafax permettait l’envoi par mail d’accusé d’envoi mais un mauvais paramétrage de l’outil procmail m’a causé quelques soucis que j’ai réussi à résoudre dans les derniers jours de mon stage. J’ai aussi eu quelques problèmes car je devais passer par un PABX et composer le 0 pour appeler à l’extérieur de l’entreprise. En étudiant les pages de manuel d’hylafax, je me suis aperçu qu’il y avait la possibilité de paramétrer ce numéro et qu’il attendait alors d’obtenir la tonalité. Avec le logiciel W2HFAX, j’avais en plus la possibilité de visualiser si des télécopies étaient arrivées en réception

0 commentaires:

Enregistrer un commentaire