Recevoir des "fac similés" (fax) avec efax.

ArticleCategory:

SystemAdministration

AuthorImage:

[Mark]

TranslationInfo:

original in en Mark Nielsen

en to fr Paul Delannoy

AboutTheAuthor:

Mark Nielsen travaille à AudioBoomerang.com, société qui crée, expédie et assure le suivi de courrier multimédia personnalisé, de sites web et de campagnes de presse. Il travaille comme consultant et propose des produits finis aux clients d'AudioBoomerang.com, tels que des rapports statistiques personnalisés utilisés à des fins de profils démographiques ou psychologiques pour des campagnes à venir. Pendant son temps libre, il écrit des articles relatifs aux logiciels libres (GPL) ou aux documents libres (FDL). Il est également impliqué dans le centre de formation à but non lucratif eastmont.net.

Abstract:

Comment configurer Efax pour recevoir et envoyer des fax sous RedHat 7.2.

ArticleIllustration:[This is the title picture for your article]

[illustration]

ArticleBody:

Le but

Je voulais installer un serveur de fax. J'ai pensé utiliser HylaFax, mais mon système RedHat intégrait déjà mgetty qui est entré en conflit avec l'installation de HylaFax par la commande rpm. Aussi, je ne crois pas me tromper en pensant que je pourrais établir des sessions de connexion, des sessions vocales ou des transactions par fax, uniquement avec mgetty. Pour l'instant, je me contente de recevoir des fax avec l'installation par défaut de RedHat 7.2, sans ajout de logiciel supplémentaire.

Efax et fax sont une seule et même chose. 'fax' est un script d'appel d'Efax.

Fichiers de configuration

Pour que cela fonctionne, vous devez configurer deux fichiers : /usr/bin/fax et /etc/inittab.

Copiez /usr/bin/fax vers /usr/bin/fax_custom ; j'y ai changé les lignes suivantes :

FAXDIR=/var/spool/fax/incoming
NAME="AudioBoomerang.com Computer Fax Server"
FROM="+1 111 222 3333"
ANSFNAME="fax_%Y%m%d_%H%M%S"

Dans /etc/inittab, j'ai changé :

S0:2345:respawn:/bin/sh /usr/bin/fax_custom answer

Efax et fax -- réception d'un seul fax

Pour recevoir un fax de quelqu'un dont vous savez qu'il vous envoie ce fax, exécutez cette commande :
efax -d /dev/ttyS0 -l "268 1162" -c 1,5 -r reply
ou
fax answer

Si vous ne désirez pas que le logiciel fax attende en tâche de fond le prochain appel, ne modifiez pas /etc/inittab comme mentionné dans la partie "fichiers de configuration".

Efax et fax -- réception de plusieurs fax avec inittab

Si vous avez modifié le fichier /etc/inittab comme indiqué dans le paragraphe "Fichiers de configuration", redémarrez l'ordinateur : votre modem va alors recevoir les fax et les stocker dans le répertoire /var/spool/fax/incoming.

Si vous tapez la commande :

ps auxw | grep efax
vous obtiendrez la preuve que efax fonctionne en tâche de fond, grâce à une ligne ressemblant à :
root 1698 0.0 0.4 1576 616 ? S< 21:47 0:00 /usr/bin/efax -v -v chewmainrxtf -d/dev/modem -iZ -i&FE&D2S7=120 -i&

La bonne chose, c'est que, si vous tuez le processus numéro "1698", il va être réactivé et je crois qu'en plus, il relira le fichier /usr/bin/fax_custom file. Ainsi, si vous modifiez ce fichier, il vous suffit de tuer le processus correspondant avant tout nouvel essai de fax, afin de tester votre nouvelle configuration.

Que doit-on faire après la réception d'un fax ?

Le mieux est de lancer une tâche cron qui trie les fichiers dans /var/spool/fax/incoming, crée un verrou pour chaque groupe de fax, puis, soit les convertit en pdf pour permettre de les visualiser sur le web, soit les imprime.

Pour les imprimer, utilisez par exemple efix, ainsi :

efix -ops fax_20020606_014847.001 | lpr

Je vous conseille d'imprimer le fichier puis de l'archiver dans un répertoire de sauvegarde.

Envoyer des fax

Configurer le service d'impression a été plus complexe que je ne le pensais. D'abord, suivez les indications des pages de manuel (avec quelques différences) :
  1. ln /usr/bin/fax /usr/bin/faxlpr
  2. Dans le fichier/etc/printcap.local
    fax:lp=/dev/null:sd=/var/spool/fax:if=/usr/bin/faxlpr_perl:
  3. mkdir /var/spool/lpd/fax
    touch /var/spool/lpd/fax/lock
  4. /etc/rc.d/init.d/lpd restart

Voici les modifications effectuées :

  1. Dans /usr/bin/faxlpr, j'ai changé
    l=`$FAX send "$num" fax$$`
    en `gs -q -sDEVICE=tiffg3 -dNOPAUSE -sOutputFile=fax_out fax$$ </dev/null` l=`efax -t $num fax_out` `rm fax_out` et aussi modifié ces trois lignes de la section faxlpr :
    num=` echo "$cfile" | sed -e /^[^J]/d -e s/..//`
    host=`echo "$cfile" | sed -e /^[^H]/d -e s/..//`
    user=`echo "$cfile" | sed -e /^[^P]/d -e s/..//`
    
  2. Ce script perl a été enregistré sous le nom /usr/bin/faxlpr_perl puis les droits ont été corrigés par un chmod 755 /usr/bin/faxlpr_perl:
    #!/usr/bin/perl
    
    my $String = "";
    foreach my $Arg (@ARGV)
     {
     if ($Arg =~ /\-j/)
      {
      my $Copy = $Arg;
      $Copy =~ s/\-j//;
      open(FILE,">lock"); print FILE "hfA$Copy"; close FILE;
      }
     }
    my $Command = "/usr/bin/faxlpr";
    system ($Command, @ARGV);
    print 1;
    
  3. Là, je n'ai pas du tout apprécié, mais j'ai dû taper "chmod 666 /dev/ttyS1" pour que l'utilisateur lpr qui contrôle les tâches d'impression puisse se servir du modem.
Ce script perl permet à faxlpr de connaître le numéro du processus et de changer la commande "fax" en "efax"; ceci a été nécessaire parce qu'il essayait de créer des verrous que je ne voulais pas.

Je pense que ma méthode d'envoi altère ces verrous, ça peut poser des problèmes si vous essayez d'envoyer un fax pendant la réception d'un autre.

Après toutes ces peines et souffrances, votre programme d'impression doit aussi supporter l'option "-J" pour que vous puissiez taper une commande 'lpr -P fax -J "555 1212" file.ps'. Sinon, redirigez l'impression vers un fichier puis imprimez celui-ci à partir de la ligne de commande.

Vous pourriez également utiliser la commade efax directement pour envoyer un fax, sans passer par le service d'impression. Vous devez alors utiliser gs pour le convertir avant de l'envoyer, ce qui reste une contrainte.

Conclusion

Dès que je pourrai, j'essaierai de voir si je peux : Efax est une solution temporaire, jusqu'à ce que j'arrive à faire fonctionner mgetty (je n'ai pas encore réussi). Ma seule raison de ne pas utiliser hylafax est le conflit avec mgetty rencontré lors de l'installation par rpm, ce qui m'a poussé à m'intéresser à mgetty, puis à choisir efax. Je vais essayer d'utiliser mgetty dans l'avenir parce que je voudrais établir des connexions et des sessions vocales avec le même modem. Cela semble tout à fait possible -- mais il se pourrait que certains modems éprouvent des difficultés à distinguer les fax de la voix, la voix des connexions. Je n'aime pas vraiment envoyer et recevoir des fax avec efax et le service d'impression. J'espère que mgetty résoudra une partie des problèmes rencontrés.

Références

  1. Le serveur de fax facile !
  2. Un serveur de fax Linux pour un réseau Windows
  3. Linux Fax pour les nuls
  4. Hylafax