[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 133.   Fax

La gestione dei fax, anche se passa in secondo piano rispetto ad altri metodi di comunicazione più efficaci, può essere una necessità in certe circostanze.

133.1   Efax

Efax (1) è un sistema di gestione di fax molto semplificato e composto essenzialmente da due eseguibili, efax e efix, oltre che dallo script fax. Per la precisione, efax si occupa di ricevere e trasmettere i fax, mentre efix converte i file utilizzati per i fax nel formato adatto alla loro trasmissione.

Per poter utilizzare il sistema di fax, dopo l'installazione è necessario configurarlo adeguatamente. Si può modificare lo script /usr/bin/fax, oppure si può creare un file di configurazione tra quelli seguenti:

Volendo rendere disponibile l'utilizzo del sistema di fax agli utenti comuni, occorre regolare i permessi o la proprietà del file di dispositivo riferito alla porta seriale cui è connesso il modem, in modo che gli utenti possano avere accesso in lettura e scrittura.

Negli esempi, quando si deve fare riferimento al file di dispositivo corrispondente al modem, viene indicato /dev/modem, come collegamento al file di dispositivo reale nell'ambito della configurazione del proprio sistema. Si ricorda che l'uso di un tale collegamento potrebbe non essere conveniente in alcune situazioni.

133.1.1   Configurazione

La configurazione può essere definita intervenendo direttamente nello script fax oppure in uno dei file di configurazione. Ovviamente è preferibile modificare i file di configurazione.

I file di configurazione hanno l'aspetto di un pezzo di script di shell (Bourne), essendo proprio il programma fax uno script di questo tipo. In pratica, la configurazione si definisce attraverso l'assegnamento di variabili. Ovviamente, le righe vuote e quelle bianche vengono ignorate, così come viene ignorato il testo che segue il simbolo #.

Seguono alcune variabili che vale la pena di configurare secondo le proprie esigenze.

Viene mostrato nel seguito un estratto del file di configurazione (inteso come /etc/efax.rc), per poter comprendere meglio il senso delle varie variabili di configurazione. L'esempio è incompleto, ma ciò che manca dovrebbe già risultare impostato in modo corretto.


# The names of the fax script, efax and efix, including full path
# if necessary.
FAX=fax
EFAX=efax
EFIX=efix

# The device to which the fax modem is connected
DEV=modem

# Your fax number in international format, 20 characters maximum.
# Use only digits, spaces, and the "+" character.
FROM="+39 0123 456789"

# Your name as it should appear on the page header.
NAME="Tizio Tizi"

# The preferred page size for creating and printing faxes.
# Allowed values are "letter", "legal", and "a4".
PAGE=a4

# The type of printer. Use 'pcl' for HP-PCL or 'ps' for
# Postscript.  See definition of PRINT (below) for more options.
PRTYPE=ps                               # Postscript (e.g. Apple LaserWriter)

# The command to print image files from standard input.  Typically
# this is "lpr" or "lp".
PRCMD="lpr"

# The command to view a Portable Gray Map (PGM) image from the
# standard input.  Typically "xv -" or "xloadimage stdin".
VIEWCMD="xloadimage stdin"              # best

# The name of the Ghostscript executable including full path if
# necessary.  Only required if faxing Postscript files.
GS=gs

# Dial string prefix and suffix such as T for tone dialing, P for
# pulse dialing, 9 to get an external line, commas for delays or
# W to wait for dial tone.
DIALPREFIX="T"
DIALSUFFIX=""

# Commands to set up modem.  "-iZ -i&FE&D2S7=120 -i&C0"
# works with almost all modems.  See the efax(1) man page for
# details.
INIT="-iZ -i&FX3E&D2S7=120 -i&C0"

133.1.2   Script di utilizzo

Lo script fax consente di facilitare l'utilizzo della coppia di eseguibili efax e efix:

fax help

fax make [-l|-h] file

fax send [-l|-h] [-v] { -m | numero_telefonico } file_da_inviare...

fax [ receive [-v] [ prefisso_file ] ]

fax { print | view | rm } file...

fax { queue | status [secondi] |  start | stop }

fax answer

All'interno dello script è possibile modificare il contenuto di una serie di variabili, inoltre è possibile indicare il valore di una variabile conosciuta anche nella riga di comando. Per esempio è possibile scrivere un comando come quello seguente:

fax PAGE=a4 print lettera1

Durante l'utilizzo, viene generato un file di registrazioni contenente tutti i messaggi intercorsi tra il sistema di fax e il modem. Se la trasmissione o la ricezione sono completate con successo, questo file viene rimosso, altrimenti viene visualizzato un messaggio che indica il nome di questo file in modo da permetterne la consultazione.

Opzione o comando Descrizione

-l

Utilizza una bassa risoluzione.

-h

Utilizza una risoluzione elevata (predefinito).

-v

Visualizza tutti i messaggi inerenti la comunicazione tra il programma e il modem in modo da facilitare la ricerca degli errori.

-m

Il numero di telefono è già stato composto manualmente.

make

Permette di ottenere una serie di file fax, uno per pagina, da utilizzare per la trasmissione, a partire da quello fornito come argomento. I nomi di questi sono composti dal nome del file originale con l'aggiunta di un suffisso numerico per distinguere le pagine. I file utilizzabili per la conversione possono essere in formato testo o PostScript.

send

Permette di inviare i file indicati come argomento provvedendo a convertirli automaticamente. La trasmissione del fax implica quindi la generazione di una serie di file temporanei contenenti le immagini delle pagine inviate. I file utilizzabili per la trasmissione possono essere in formato testo o PostScript.

receive

Permette di ricevere un fax rispondendo a una chiamata. Se viene specificato il nome del file di destinazione, questo nome verrà utilizzato come prefisso al quale sarà aggiunto il suffisso dei numeri di pagina. Se questo nome non viene indicato, ne verrà utilizzato uno composto dalla data e dall'ora di arrivo.

print

Consente di stampare i file fax.

view

Consente di visualizzare i file fax.

rm

Consente di eliminare i file fax.

queue

Quando efax è stato installato per la ricezione automatica dei fax, questo comando permette di conoscere il contenuto della directory in cui sono stati accodati i fax ricevuti.

status [secondi]

Quando efax è stato installato per la ricezione automatica dei fax, questo comando permette di conoscere lo stato del processo automatico di ricezione. Se viene indicato l'argomento, che rappresenta un numero di secondi, lo stato viene emesso in modo ripetitivo, ogni volta che quell'intervallo di tempo trascorre.

start | stop

L'utente root può avviare o terminare l'esecuzione di efax quando è installato per la ricezione automatica dei fax.

answer

Consente di ricevere un fax immediatamente.

Segue la descrizione di alcuni esempi.

133.1.3   Trasmissione di un fax

Nelle situazioni più comuni, Efax serve per trasmettere dei fax. Anche se tutto è già automatizzato in modo molto semplice, può essere necessario comprendere un po' meglio il funzionamento di Efax in questo senso, per essere sicuri di trasmettere dei fax leggibili.

In generale, un comando del tipo

fax send 0123456789 prova.txt

oppure

fax send 0123456789 prova.ps

è ciò che basta per trasmettere il file prova.txt, oppure prova.ps al numero 0123456789. Nel primo caso, si tratta di un file di testo, mentre nel secondo appare evidente che si tratti di un file PostScript. La conversione in formato TIFF avviene in modo automatico, nel primo caso se ne occupa efix, nel secondo viene interpellato Ghostscript. Tuttavia, mentre la conversione di un file di testo genera sempre buoni risultati, la conversione di un file PostScript risulta frequentemente in un file TIFF poco leggibile.

La procedura utilizzata da Efax nella fase di trasmissione prevede la creazione di una serie di file TIFF, uno per ogni pagina finale, aggiungendo al nome di origine un'estensione numerica di tre cifre. Per esempio, il file prova.txt.001 rappresenta la prima pagina del file prova.txt.001. Si può richiedere la creazione di questi file intermedi, prima della trasmissione, attraverso il comando fax make:

fax make prova.txt

Successivamente, usando il comando già visto, la conversione non ha più luogo, perché Efax trova già questi file. In questo modo, prima di passare alla trasmissione è possibile visualizzare questi file, per valutare la qualità dell'immagine ottenuta. Per questo si può usare utilmente ImageMagick (sezione 104.3), che sfrutta l'interfaccia grafica X:

display prova.txt.*

Quando si parte da un'immagine ottenuta da uno scanner, è necessario convertire l'immagine in qualcosa di adatto per la trasmissione. Purtroppo, non conviene tentare di generare i file TIFF escludendo efix, perché inevitabilmente si ottiene qualcosa di non compatibile. La cosa migliore è passare per un passaggio intermedio che efix sia in grado di interpretare. Nel caso di ImageMagick, conviene salvare le immagini in formato FAX. Per esempio disponendo del file prova.ppm, si può usare la conversione di ImageMagick nel modo seguente:

convert prova.ppm prova.fax

Successivamente si può ottenere la trasformazione in pagine TIFF, con il solito comando fax make:

fax make prova.fax

Quindi, dopo il controllo dei file prova.fax.*, si può passare alla trasmissione:

fax send 0123456789 prova.fax

133.1.4   Rapporto

Efax genera automaticamente un file di testo contenente tutte le fasi di connessione, quando l'invio di un fax non si conclude con successo. Il nome del file che viene generato è indicato da Efax al concludersi dell'operazione. In ogni caso, l'opzione -v consente di vedere ugualmente ciò che sta succedendo, per cui è facile salvare comunque un rapporto del genere:

fax send -v 0123456789 prova.ps 2>&1 | tee prova-report.txt

Questo caso è già stato mostrato. Qui, in particolare, viene mostrato l'esempio di un rapporto del genere, che mostra effettivamente un errore per il quale si richiede la ripetizione della trasmissione. Si osservi che il file prova.ps viene convertito nel file prova.ps.001, in formato TIFF, prima della trasmissione.


efax: Thu Mar 15 15:35:21 2001 efax v 0.9 Copyright 1999 Ed Casas
efax: 35:21 TIFF version 4.2 file (little-endian)
efax: 35:21 TIFF directory at 8 with 21 tags, last image.
efax: 35:21 page 1 : prova.ps.001 + 342 : 1728x2292 @ 204x196 dpi TIFF/FAX
efax: 35:21 argv[0]=efax
efax: 35:21 argv[1]=-v
efax: 35:21 argv[2]=chewmainrxtf
efax: 35:21 argv[3]=-v
efax: 35:21 argv[4]=chewmainrxtf
efax: 35:21 argv[5]=-d/dev/modem
efax: 35:21 argv[6]=-x
efax: 35:21 argv[7]=/var/lock/LCK..modem
efax: 35:21 argv[8]=-iZ
efax: 35:21 argv[9]=-i&FX3E&D2S7=120
efax: 35:21 argv[10]=-i&C0
efax: 35:21 argv[11]=-iM1L0
efax: 35:21 argv[12]=-l
efax: 35:21 argv[13]=+39 0123 456456
efax: 35:21 argv[14]=-kZ
efax: 35:21 argv[15]=-h
efax: 35:21 argv[16]=2001/03/15 15:35 +39 39 0123 456456 Tizio Tizi p. %d/%d
efax: 35:21 argv[17]=-t
efax: 35:21 argv[18]=T0123456789
efax: 35:21 argv[19]=prova.ps.001
efax: 35:21 created text lock file /var/lock/LCK..modem
efax: 35:21 opened /dev/modem
efax: 35:22 command  "Q0V1"
efax: 35:22 waiting 2.0 s
efax: 35:22 .089 [ATQ0V1<CR><CR><LF>]
efax: 35:22 .219 [OK<CR><LF>]
efax: 35:22 response "OK"
efax: 35:22 command  "Z"
efax: 35:22 waiting 5.0 s
efax: 35:22 .328 [ATZ<CR><CR><LF>]
efax: 35:22 .458 [OK<CR><LF>]
efax: 35:22 response "OK"
efax: 35:22 command  "&FX3E&D2S7=120"
efax: 35:22 waiting 5.0 s
efax: 35:22 .568 [AT&FX3E&D2S7=120<CR><CR><LF>]
efax: 35:22 .698 [OK<CR><LF>]
efax: 35:22 response "OK"
efax: 35:22 command  "&C0"
efax: 35:22 waiting 5.0 s
efax: 35:22 .938 [<CR><LF>OK<CR><LF>]
efax: 35:22 response "OK"
efax: 35:23 command  "M1L0"
efax: 35:23 waiting 5.0 s
efax: 35:23 .178 [<CR><LF>OK<CR><LF>]
efax: 35:23 response "OK"
efax: 35:23 command  "E0"
efax: 35:23 waiting 5.0 s
efax: 35:23 .418 [<CR><LF>OK<CR><LF>]
efax: 35:23 response "OK"
efax: 35:23 command  "I3"
efax: 35:23 waiting 5.0 s
efax: 35:23 .528 [<CR><LF>U.S. Robotics 56K FAX EXT Rev. 11.3.11<CR><LF>]
efax: 35:23 .678 [<CR><LF>OK<CR><LF>]
efax: 35:23 response "OK"
efax: 35:23 command  "+FCLASS=?"
efax: 35:23 waiting 5.0 s
efax: 35:23 .918 [<CR><LF>0,1,2.0<CR><LF>]
efax: 35:24 .048 [<CR><LF>OK<CR><LF>]
efax: 35:24 response "OK"
efax: 35:24 command  "+FCLASS=2.0"
efax: 35:24 waiting 5.0 s
efax: 35:24 .288 [<CR><LF>OK<CR><LF>]
efax: 35:24 response "OK"
efax: 35:24 command  "+FMI?"
efax: 35:24 waiting 5.0 s
efax: 35:24 .528 [<CR><LF>U.S. Robotics 56K FAX<CR><LF>]
efax: 35:24 .668 [<CR><LF>OK<CR><LF>]
efax: 35:24 response "OK"
efax: 35:24 command  "+FMM?"
efax: 35:24 waiting 5.0 s
efax: 35:24 .908 [<CR><LF><CR><LF><CR><LF>OK<CR><LF>]
efax: 35:25 response "OK"
efax: 35:25 command  "+FMR?"
efax: 35:25 waiting 5.0 s
efax: 35:25 .278 [<CR><LF><CR><LF><CR><LF>OK<CR><LF>]
efax: 35:25 response "OK"
efax: 35:25 using U.S. Robotics 56K FAX EXT Rev. 11.3.11 U.S. Robotics 56K FAX
 OK OK in class 2.0
efax: 35:25 command  "+FIP"
efax: 35:25 waiting 5.0 s
efax: 35:25 .649 [<CR><LF>OK<CR><LF>]
efax: 35:25 response "OK"
efax: 35:25 command  "+FNR=1,1,1,1"
efax: 35:25 waiting 5.0 s
efax: 35:25 .888 [<CR><LF>OK<CR><LF>]
efax: 35:25 response "OK"
efax: 35:25 command  "+FCR=1"
efax: 35:25 waiting 5.0 s
efax: 35:26 .128 [<CR><LF>OK<CR><LF>]
efax: 35:26 response "OK"
efax: 35:26 command  "+FIS?"
efax: 35:26 waiting 5.0 s
efax: 35:26 .268 [<CR><LF>1,5,0,2,0,0,0,5<CR><LF>]
efax: 35:26 .398 [<CR><LF>OK<CR><LF>]
efax: 35:26 response "OK"
efax: 35:26 command  "+FLI="   +39 0123 456456""
efax: 35:26 waiting 5.0 s
efax: 35:26 .549 [<CR><LF>OK<CR><LF>]
efax: 35:26 response "OK"
efax: 35:26 dialing T0123456789
efax: 35:26 command  "DT0123456789"
efax: 35:26 waiting 120.0 s
efax: 35:42 .937 [<CR><LF>+FCO<CR><LF>]
efax: 35:45 .627 [<CR><LF>+FNF:<NUL><NUL>y<NUL><NUL><NUL><STX><SI><HT><ETX><NUL>
<DLE><ENQ><STX><0x95><0x88><BS><CR><LF>]
efax: 35:45 .647 [<CR><LF>+FCI:"         0123 445566"<CR><LF>]
efax: 35:45 .657 [<CR><LF>+FIS:1,3,0,2,1,0,0,4<CR><LF>]
efax: 35:45 .677 [<CR><LF>OK<CR><LF>]
efax: 35:45 response "OK"
efax: 35:45 remote ID -> "         0123 445566"
efax: 35:45 connected
efax: 35:45 command  "+FDT"
efax: 35:45 waiting 45.0 s
efax: 35:45 .947 [<CR><LF>+FCS:1,3,0,2,0,0,0,4<CR><LF>]
efax: 35:51 .936 [<CR><LF>CONNECT<CR><LF>]
efax: 35:51 response "CONNECT"
efax: 35:51 session 196lpi  9600bps 8.5"/215mm  any   1D    -     -  20/10ms
efax: 35:51 padding to 24 bytes/scan line.
efax: 35:51 header:[2001/03/15 15:35 +39 0123 456456 Tizio Tizi p. 1/1]
efax: 38:11 waiting 30.0 s
efax: 38:18 .664 [<CR><LF>ERROR<CR><LF>]
efax: 38:18 response "ERROR"
efax: 38:18 Warning: wrong response after waiting 
efax: 38:18 sent 20+2292 lines, 150944+21107 bytes, 147 s  9363 bps
efax: 38:18 command  "+FDT"
efax: 38:18 waiting 45.0 s
efax: 38:18 .914 [<CR><LF>ERROR<CR><LF>]
efax: 38:18 response "ERROR"
efax: 38:18 Error: wrong response after command:  +FDT
efax: 38:18 command  "+FKS"
efax: 38:18 waiting 5.0 s
efax: 38:19 .054 [<CR><LF>OK<CR><LF>]
efax: 38:19 response "OK"
efax: 38:19 failed -> prova.ps.001
efax: 38:19 command  "Q0V1"
efax: 38:19 waiting 2.0 s
efax: 38:19 .294 [<CR><LF>OK<CR><LF>]
efax: 38:19 response "OK"
efax: 38:19 command  "Z"
efax: 38:19 waiting 5.0 s
efax: 38:19 .534 [<CR><LF>OK<CR><LF>]
efax: 38:19 response "OK"
efax: 38:19 read HDB pid 15217 [     15217<LF>] from /var/lock/LCK..modem (our
 pid)
efax: 38:19 removed lock file /var/lock/LCK..modem
efax: 38:19 done, returning 3 (invalid modem response)
There were errors (see T0123456789.log).

Dal momento che la trasmissione è fallita, si può osservare che viene creato appositamente il file T0123456789.log. Inoltre, si può osservare l'informazione fornita dal fax remoto sulla propria identità: in questo caso sembra essere il numero telefonico della persona o dell'ufficio a cui fa riferimento il fax.

Leggendo con più attenzione il file, si nota che dopo la trasformazione in TIFF, l'eseguibile che svolge l'operazione è efax, il quale riceve le informazioni relative alla configurazione in forma di argomenti della riga di comando. In pratica, il comando corrispondente è stato:

efax -v chewmainrxtf -v chewmainrxtf -d/dev/modem <-'
`->-x /var/lock/LCK..modem -iZ -i&FX3E&D2S7=120 -i&C0 -iM1L0 <-'
`->-l "+39 0123 456456" -kZ <-'
`->-h "2001/03/15 15:35 +39 39 0123 456456 Tizio Tizi p. %d/%d" <-'
`->-t T0123456789 prova.ps.001

Appunti di informatica libera 2003.01.01 --- Copyright © 2000-2003 Daniele Giacomini -- daniele @ swlibero.org

1) Efax   GNU GPL


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome fax.html

[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]