Creare un fax server con Hylafax

Spesso viene richiesto a livello aziendale un fax server, cioè un server con modem 56k che riceva i fax, li inoltri ad una casella postale oppure li condivida in pdf o tiff tramite samba, magari che si possano inviare tramite menu stampa.
Il mio consiglio è hylafax in quanto molto semplice ed immediato.

Premessa:
Qui installo postifix come mail sender e samba come file share, voi potete scegliere ciò che preferite (es: sendmail + nfs).

Preparazione
sudo apt-get -y install hylafax-server hylafax-client hylafax-doc libtiff-tools minicom postfix samba smbclient smbfs
A questo punto possiamo configurare il fax mediante il comando
sudo faxsetup

Questo tool effettuerà un controllo del sistema (librerie ghostscrpt in particolare) ed una configurazione del modem passo passo, basterà rispondere alle domande.

Vediamo insieme una configurazione:

HylaFAX configuration parameters are:

[1] Init script starts faxq: yes
[2] Init script starts hfaxd yes
[3] Start old protocol: no
[4] Start paging protocol: no
Are these ok [yes]? yes

Restarting HylaFAX server processes.

You have a HylaFAX scheduler process running. faxq will be
restarted shortly, as soon as some other work has been completed.
Can I terminate this faxq process (17828) [yes]? yes
Should I restart the HylaFAX server processes [yes]? yes

You do not appear to have any modems configured for use. Modems are
configured for use with HylaFAX with the faxaddmodem(8) command.
Do you want to run faxaddmodem to configure a modem [yes]? yes

You do not appear to have any modems configured for use. Modems are
configured for use with HylaFAX with the faxaddmodem(8) command.
Do you want to run faxaddmodem to configure a modem [yes]?
Serial port that modem is connected to [ttyS0]?ttyS0
Qui potete inserire la porta identificativa della seriale com, ttyS0 per com1 e ttyS1 per com2.
NB: il modem da adesso in avanti deve essere acceso e collegato.

No existing configuration, let's do this from scratch.

Country code [1]? 39
Area code [415]? 0522
Phone number of fax modem [+1.999.555.1212]? +39.0522.888888
Local identification string (for TSI/CIG) ["NothingSetup"]? FaxServer
Long distance dialing prefix [1]? 0
International dialing prefix [011]? 00
Dial string rules file (relative to /var/spool/hylafax) [etc/dialrules]? etc/dialrules
Tracing during normal server operation [1]? 1
Tracing during send and receive sessions [11]?11
Protection mode for received facsimile [0600]? 0777
Protection mode for session logs [0600]? 0777
Protection mode for rfcomm0 [0600]? 0666
Rings to wait before answering [1]? 3
Modem speaker volume [off]? quiet
Command line arguments to getty program ["-h %l dx_%s"]?
Pathname of TSI access control list file (relative to /var/spool/hylafax) [""]?
Pathname of Caller-ID access control list file (relative to /var/spool/hylafax) [""]?
Tag line font file (relative to /var/spool/hylafax) [etc/lutRS18.pcf]?
Tag line format string ["From %%l|%c|Page %%P of %%T"]?
Time before purging a stale UUCP lock file (secs) [30]?
Hold UUCP lockfile during inbound data calls [Yes]?
Hold UUCP lockfile during inbound voice calls [Yes]?
Percent good lines to accept during copy quality checking [95]?
Max consecutive bad lines to accept during copy quality checking [5]?
Max number of pages to accept in a received facsimile [25]?
Syslog facility name for ServerTracing messages [daemon]?
Set UID to 0 to manipulate CLOCAL [""]?
Use available priority job scheduling mechanism [""]?

The non-default server configuration parameters are:

CountryCode: 39
AreaCode: 0522
FAXNumber: +39.0522.888888
LongDistancePrefix: 1
InternationalPrefix: 011
DialStringRules: etc/dialrules
SessionTracing: 11
RecvFileMode: 0777
RingsBeforeAnswer: 3
SpeakerVolume: quiet
GettyArgs: "-h %l dx_%s"
LocalIdentifier: FaxServer
TagLineFont: etc/lutRS18.pcf
TagLineFormat: "From %%l|%c|Page %%P of %%T"
MaxRecvPages: 25

Are these ok [yes]? yes
Successivamente farà un test della connessione con il modem definendone la classe, i parametri e la frequenza.
Creerà un file /etc/hylafax/config.ttyS0 che potrete editare anche manualmente ricordandovi però di riavviare hylafax subito dopo.

Aggiungete ora in fondo al vostro /etc/inittab :
S0:2345:respawn:/usr/sbin/faxgetty /dev/ttyS0
S1:2345:respawn:/usr/sbin/faxgetty /dev/ttyS1
sostituendo ttyS0 con la vostra porta Com in input e ttyS1 con la com in output (potete usarne anche solo una per pochi fax).
Ricaricate il file con il seguente comando:
kill -HUP 1
Ora aggiungete in fondo al vostro /etc/crontab (se non già presenti) le seguenti 2 righe:
0 * * * * /usr/local/sbin/faxqclean
0 0 * * * /usr/local/sbin/faxcron | mail -s "HylaFAX Usage Report" faxmaster
Facciamo ricaricare il crontab per sicurezza:

sudo /etc/init.d/cron restart

Con il comando faxstat potrete verificare lo stato del faxserver e dei modem.
Potrete comunque aggiungere altri modem, ad esempio per separare fax in ingresso e quelli in uscita, tramite il comando con menu contestuale a quello già visto:
sudo faxaddmodem ttyS1
per la sola ricezione dovrete aggiungere manualmente al file /etc/hylafax/config.ttySX la seguente riga in fondo:
ModemReadyState: D
Mentre per il solo invio dovrete aggiungere al file corrispettivo la seguente riga in fondo:
RingsBeforeAnswer: 0
Impostando gli squilli prima di rispondere a zero, stiamo dicendo di non rispondere.

Per effettuare una prova di invio da terminale potete dare il comando:
sendfax -n -d file.ps|.pdf|.txt|.tiff
Per eliminare la coda usate il comando:
faxrm
Aggiungere utenti per l'invio e l'accesso al servizio fax (consiglio di creare un unico utente fauser per tutte le workstation se sono meno di 10) dovrete connettervi via telnet alla console hylafax integrata tramite il comando:
telnet localhost 4559
ora identificatevi come amministratore e aggiungete l'utente con i seguenti comandi:
user root
admin
site adduser nomeutente@host.dominio.lan password:password
quit
Ora creiamo il file /etc/hylafax/FaxDispatch inserendo le righe sottostanti; questo permette la condivisione via samba e l'invio via mail al faxmaster:
SENDTO=FaxMaster #non modificare
FILETYPE=pdf;
NOTIFY_FAXMASTER="always"

n=`date +%Y.%m.%d.%H.%M.%S`
t=/var/lib/samba/fax/$n
$TIFF2PDF -o $t.pdf $FILE
/bin/cp $FILE $t.tif
/bin/rm $t.pdf
if [ -f log/c$COMMID ]; then
$SED -e '/-- data/d' \
-e '/start.*timer/d' -e '/stop.*timer/d' \
-e 's/=/=3D/g' \
log/c$COMMID
elif [ -n "$COMMID" ]; then
echo "$DICTNOLOGAVAIL ($DICTCOMMID c$COMMID)."
else
echo "$DICTNOLOGAVAIL."
fi
A questo punto possiamo modificare l'alias di FaxMaster in modo da inviare la mail a chi vogliamo sostituendo (o aggiungendo se non presente) nel file /etc/aliases la riga:

faxmaster:


con
faxmaster: fax@dominio.ricevente.com

Diamo il comando per rendere attivo il redirect della posta:
newaliases


Aggiungiamo le seguenti righe in fondo al nostro /etc/samba/smb.conf :
[fax]
comment = Archivio fax
inherit acls = Yes
path = /var/lib/samba/fax
read only = No
create mask = 0777
force create mode = 0777
force security mode = 0777
directory mask = 0777
guest only = yes
guest ok = yes
hide files = *.tmp
hide unreadable = yes
hide dot files = yes
e riavviamo hylafax e samba:
sudo /etc/init.d/hylafax restart
sudo /etc/init.d/samba restart
Ecco il fax server funzionante sia via mail che via samba.

Potrete usarlo tramite le workstation linux installando gfax
sudo apt-get -y install gfax
E tramite le workstation windows usando Pila oppure Winprint; personalmente preferisco winprint, in quanto installa una stampante, quindi molto user-friendly e permette la ricezione via mail delle ricevute di conferma.

Per la guida all'installazione e il link per scaricarlo vi rimando al sito ufficiale molto chiaro:

http://winprinthylafax.sourceforge.net/

Buon Fax a tutti
Swipon

Nessun commento: