Impostazione di un servizio Fax in spedizione e ricezione con Linux



Documenti analoghi
StoneFax User Guide. (Settembre 2011 ver.1.1) StoneFax-User-Guide-ita-1.1.docx

Z3 B1 Message Addon Invio Massivo Documenti via e Fax per SAP Business One

Stampe in rete Implementazione corretta

NOME 0 PROVIDER DOMINIO istruzione.it

Utilizzare il fax di windows (XP)

Express Import system

Come produrre un file PDF da SAP facendo in modo che venga salvato in automatico in una cartella di rete

ZEROTRUTH & ASTERISK. ZEROTRUTH AUTOREGISTRAZIONE CON ASTERISK

Manuale SeleFax ClientWeb Versione 2.0

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Esercitazione 05. Sommario. Packet Filtering [ ICMP ] Esercitazione Descrizione generale. Angelo Di Iorio (Paolo Marinelli)

Guida all uso. Esso sarà riportato nell intestazione. Vediamo:

Fate doppio click sul file con nome postgresql-8.0.msi e impostate le varie voci come riportato nelle immagini seguenti:

Titolo: ASSISTENZA. Data: 18/02/2015. Referente: Omar Vezzoli

PORTALE CLIENTI Manuale utente

Nautilus Installazione Aggiornato a versione

Modulo Antivirus per Petra 3.3. Guida Utente

TRASMISSIONE RAPPORTO ARBITRALE IN FORMATO PDF

Cos è ND Rifiuti 2008?

Configurazione account di posta elettronica certificata per Qualcomm Eudora

Copyright Hook & Festa Tutti I diritti riservati

Apache Monitoring con MRTG

Con accesso remoto s'intende la possibilità di accedere ad uno o più Personal Computer con un modem ed una linea telefonica.

L amministratore di dominio

Guida alla configurazione della posta elettronica dell Ateneo di Ferrara sui più comuni programmi di posta

Mac Application Manager 1.3 (SOLO PER TIGER)

Corso basi di dati Installazione e gestione di PWS

PROGETTO PER LA TRASMISSIONE DOCUMENTI RELATIVI ALL APPROVAZIONE DELLE MANIFESTAZIONI IN FORMA DIGITALE

P03_S50AT01_Manuale Fax2Mail Rev 02 del 11/04/2013. Manuale Fax2Mail-Guida all uso

Aggiornamento EURO-COGE2000

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

MANUALE UTENTE. In questo manuale verranno descritte tutte le sue funzioni. Il sistema OTRS è raggiungibile al seguente link:

Manuale per la configurazione di un account di PEC in Mozilla.

Manuale operatore per l utilizzo dell utente di dominio

INFN Sezione di Perugia Servizio di Calcolo e Reti Fabrizio Gentile Enrico Becchetti

Configurazione Bluetooth t630 su MANDRAKE 10

Guida Migrazione Posta Operazioni da effettuare entro il 15 gennaio 2012

Dopo aver installato WSFTP.le, alla prima schermata quando lo apriamo vedremo questo.

Guida all uso del servizio

Caratteristiche Tecnico-Funzionali

Procedura per creare un archivio storico remoto nelle 24 ore giornaliere

COME FARE UNA RICHIESTA DI ASSISTENZA ON LINE (AOL)

File, Modifica, Visualizza, Strumenti, Messaggio

Presentazione della release 3.0

Istruzioni. INSTALLAZIONE DEL MODEM USB Windows Vista

Gestione della posta elettronica e della rubrica.

Guida Utente PS Contact Manager GUIDA UTENTE

I M P O S T A R E U N A C C O U N T D I P O S T A C O N M O Z I L L A T H U N D E R B I R D

Installazione di Moodle. Preparato per: Gruppo A, Piattaforma di E - Learning Preparato da: Cinzia Compagnone, Vittorio Saettone

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

PATTO CHIARO OFFICINA MANUALE OPERATIVO

Manuale LiveBox WEB ADMIN.

Guida all utilizzo del web tool di gestione accesso ai Datacenter

Procedura SMS. Manuale Utente

NOZIONI BASE SHELL E SCRIPT LINUX

MANUALE DEL FLASH POINT MANAGER 19 Luglio 2007 INDEX

E-BILLING QUICK GUIDE

MC-link Lan+ Connessione e configurazione del router PRESTIGE 100

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

Manuale per la configurazione di un account di PEC in Mozilla Thunderbird.

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

PHP e MySQL. Guida scaricata da

ARCHIVIA PLUS VERSIONE SQL SERVER

Manuale LiveBox WEB ADMIN.

su Windows XP con schede D-Link DWL 650+

File Server Resource Manager (FSRM)

Dexma Newsletter System

Integrazione InfiniteCRM - MailUp

Invio SMS. DM Board ICS Invio SMS

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio

Manuale Fax2Mail Guida all uso. Operativo

Leggere un messaggio. Copyright 2009 Apogeo

ISTRUZIONI PER LA DICHIARAZIONE PREZZI ONLINE (Guide naturalistiche)

SUAP. Per gli operatori SUAP/amministratori. Per il richiedente

BACKUP APPLIANCE. User guide Rev 1.0

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

INDICE DEGLI ARGOMENTI

MANUALE UTENTE Fiscali Free

Release 2.0. La lista di distribuzione da utilizzare è identificata dal parametro USRDTA del file di spool e facoltativamente dal parametro FORMTYPE.

HextraFAX. Guida all installazione e all utilizzo. Ultimo aggiornamento: febbraio Hextra Srl 2012 All rights reserved

Manuale per la configurazione di un account di PEC in Eudora.

IL SERVIZIO E-BILLING DHL: COME ACCEDERE

ISTR- XX Uso del Blog

System Center Virtual Machine Manager Library Management

Xampp. Valeriano Maysonnave - A.A. 2014/2015 -

MODULO SMS MANUALE UTENTE PER KONNEXION COD. KNX-SMS VERSIONE 2.0.2

Manuale servizio SMTP autenticato

bla bla Guard Manuale utente

MANUALE D USO DELL E-COMMERCE. Versione avanzata

MOCA. Modulo Candidatura. [Manuale versione 1.0 marzo 2013]

GUIDA AL SOCIAL CARE

flusso delle informazioni... 2 password... 3 password/ inserimento di una nuova richiesta... 4 le condizioni di vendita... 6

1. Panoramica Prodotto Sezione Anteriore Sezione Posteriore... 2

ELENCO CLIENTI FORNITORI Patch1

Software Servizi Web UOGA

Xerox Device Agent, XDA-Lite. Guida all installazione rapida

Servizi telematici on-line per aziende ed intermediari

SharePoints è attualmente disponibile in Inglese, Italiano e Francese.

Manuale d Uso di Mailchimp:

Documentazione. Divisione Sicurezza Dati

Transcript:

Impostazione di un servizio Fax in spedizione e ricezione con Linux Indice Introduzione... 2 Piattaforma Utilizzata... 2 Applicativi richiesti... 2 Procedura per l invio di fax... 2 FAX-NR:numero_destinatario... 6 Procedura per la ricezione di fax... 6 Note finali... 10

Introduzione L obiettivo di questo documento consiste nell utilizzare strumenti GPL/OpenSource per poter realizzare un sistema di faxing robusto ed efficace ma allo stesso tempo semplice. Lo scopo principale era quello di poter inviare e ricevere fax dalla rete in ambiente intranet, direttamente dai documenti prodotti ad esempio con Word Processor, attraverso un fax gateway dotato di un semplice modem analogico. Piattaforma Utilizzata Linux Slackware 8.1 versione Kernel 2.4.18 Il modem utilizzato è stato un vecchio US Robotics Sportster 33.600 a cui abbiamo abilitato l Auto Answering. Applicativi richiesti Lato server Mgetty Samba faxspool (per lo spooling dei fax) faxsend (per l invio dei fax) faxrunq (per il passaggio dei fax dalla coda a faxsend) Script: newfax (per la ricezione) e faxfilter (per l invio) Questi script vengono forniti già con mgetty ma in questo articolo ne verranno presentate due versioni modificate ed adattate a specifiche esigenze Lato client Una qualsiasi stampante postscript (ad esempio Apple Laser Writer) Procedura per l invio di fax Per prima cosa occorre avere un modem analogico collegato ad una seriale ed identificare quale, nel mio caso ttys0. Dopo aver compilato mgetty seguendo le semplici istruzioni cp policy.h-dist policy.h Make && make install Occorre configurare l mgetty.config impostando # livello di debug debug 4 # fax station id fax-id 390114023455 # la velocità in bps per i modem(s) speed 56000 #la porta a cui è collegato il modem port ttys0 speed 56000 A questo punto occorre utilizzare il faxfilter opportunamente modificato quello fornito da mgetty è in tedesco e probabilmente va adattato ad esigenze specifiche.

Questo è quello che ho utilizzato (adattato da massimo Nuvoli massimo@nuvoli.to.it) #!/usr/bin/perl ######################################################################### ## $MAILER="/bin/mailx"; $FAXFILE="/tmp/fax/tmp_faxlp.$$"; $Username=""; $Filename=""; $Username=$ARGV[0]; $Filename=$ARGV[1]; if (($Username eq "nobody") ($Username eq '')) $Mailname="postmaster"; else $Mailname=$Username; open OU,">$FAXFILE"; open (IN,$Filename); $ns=0; while (<IN>) if (/fax-nr\s*\:\s*(\d+)/i) $numero=$1; $ns=1; print OU $_; close (OU); if (!$ns) open OU," $MAILER -s \"Problemi con la spedizione del fax\" $Mailname"; print OU "Numero non specificato nel documento (fax-nr?)\n"; close OU; # unlink $FAXFILE; exit(-1); else $res=`/usr/local/bin/faxspool -u $Username -f $Username $numero $FAXFILE 2>&1`; open OU," $MAILER -s \"Esito accodamento fax\" $Mailname"; print OU "Questo <E8> l'esito dell'avvenuto accodamento\n"; print OU $res; close OU; # unlink $FAXFILE; exit(0); Questo file va depositato nella directory /etc. A questo punto occorre condividere una risorsa FAX via samba che sia stampabile e per questo aggiungere nel vostro smb.conf [fax]

comment = Fax in rete path = /tmp/fax force user = root valid users = paolo printable = Yes print command = /etc/faxfilter %u %s lpq command = /bin/ls /var/spool/fax/outgoing * il force user è necessario per poter utilizzare correttamente faxspool ** per evitare problemi di accesso utilizzate un utente di accesso alla rete che sia anche un utente del server linux e possibilmente quello specificato dal parametro valid users *** riavviare samba dopo le modifiche In caso di corretto accodamento il faxfilter invia una conferma all utente che ha inviato il fax con un messaggio di questo tipo: Subject: Esito accodamento Questo è l'esito dell'avvenuto accodamento spooling to /var/spool/fax/outgoing/f000004... spooling /tmp/fax/tmp_faxlp.31386... /tmp/fax/tmp_faxlp.31386 is format: ps %%[ Page: 1 ]%% %%[ LastPage ]%% \nputting Header lines on top of pages... \nfax queued successfully. Will be sent at next ``faxrunq'' run.\n

Installazione della stampante/fax postscript su ogni client che vuole faxare: a questo punto accedere via rete al server linux e fare un doppio clic sulla risorsa fax che dovrà essere liberamente disponibile se avete effettuato l accesso con uno user autorizzato ed esistente sul server linux. Vi verrà chiesto di installare la risorsa. Basta chiamarla fax ed utilizzare il driver di una stampante laser postscript (nel nostro caso la Apple Laser Writer) per cui è bene avere il CD di installazione di Win98 con i driver necessari. A questo punto occorre solo più configurare sendfax che è il programma che si occupa effettivamente di inviare i fax dopo che questi sono stati accodati da faxspool per l invio nella directory /var/spool/fax/outgoing. Il file di configurazione si trova in /usr/local/etc/mgetty+sendfax e si chiama sendfax.config Occorre specificare in questo file in modo particolare il fax device # which devices to use for outgoing faxes fax-devices ttys0 e l ID intestazione del nostro fax # which fax number to transmit to the receiving station fax-id 39 011 4023455 in caso di necessità specificare anche il prefisso per il modem (Tone o Pulse) dial-prefix ATDT La procedura richiede anche che nella directory delle configurazione di mgetty (/usr/local/etc/mgetty+sendfax) siano presenti due file (fax.allow e fax.deny) in cui inserire gli user che possono o non possono utilizzare il sistema. Inoltre per inviare fax corretti dal punto di vista formale è bene modificare il file faxheader è adattarlo alle vostre esigenze FAX FROM: Neltink Sas 39 011 4023455 TO: @T@ PAGE: @P@ OF @M@ Per far si che sendafax si attivi è necessario eseguire il programma faxrunq che si occupa semplicemente di verificare in /var/spool/fax/outgoing la presenza di fax in spool e di inviarli a sendfax che si occuperà della effettiva spedizione. Questo è un esempio dell output prodotto dall esecuzione del comando faxrunq root@fax:/# faxrunq processing F000009/JOB... /usr/local/sbin/sendfax -v 0114023455 f1.g3 Trying fax device '/dev/ttys1'... OK. Dialing 0114023455... OK. sending 'f1.g3'... command exited with status 0 send mail to paolo... Eseguendo il comando faxrunq i fax in coda verranno immediatamente spediti mentre può essere più comodo lasciare attivo il demone faxrunqd che ad intrevalli di tempo prefissati ed

in maniera assolutamente autonoma controlla la coda dei fax e si preoccupa di inoltrarla sendfax per la spedizione. Anche faxrunq ha un file di configurazione chiamato faxrunq.conf ovviamente sotto /usr/local/etc/mgetty+sendfax in cui è necessario specificare almeno un parametro ovvero il device del fax utilizzato dal server: #fax device fax-devices ttys0 Si possono anche modificare alcuni altri parametri come la possibilità di ricevere email in caso di successo o fallimento dell invio del fax: # when a fax has been successfully sent, "n" otherwise... (default "y") success-send-mail y # transmitted at all... (default "y") failure-send-mail y In caso di successo l utente che ha inviato il fax riceve una email di questo tipo Your fax has been sent successfully at: Thu Sep 12 10:50:58 2002 Subject:OK: your Fax to 01145. Job / Log file: phone 0114023455 user root input /tmp/fax/tmp_faxlp.31188 pages f1.g3 Status Thu Sep 12 10:50:58 2002 successfully sent Sending succeeded after 0 unsuccessful attempts A questo punto siamo pronti per poter inviare il fax dal nostro Word Processor in cui è necessario specificare un parametro fondamentale ovvero il numero di telefono del destinatario. Per poter inviare il documento via fax basta inserire in testa al documento (come prima riga) l istruzione: FAX-NR:numero_destinatario Utilizzate un font stampante come il courier e stampate sulla stampante postscript che avete chiamato in precedenza FAX. Il fax verrà trattato dal faxfilter ed accodato, riceverete una mail per confermare il buon esito dell accodamento. Dopo pochi secondi (se avete in esecuzione in memoria il demone faxrunqd) il server invierà il fax confermando l esito positivo o negativo con una mail. Procedura per la ricezione di fax La procedura che vogliamo attivare è quella che ci consente di ricevere ed accodare i fax è poterli leggere via web, magari organizzandoli e gestendoli con un piccolo applicativo in php. Per fare ciò occorre installare mgetty e specificare nel file /etc/inittab la riga che indica a mgetty di rispondere alle telefonate entranti sul giusto device: #mgetty per ricezione fax m0:2345:respawn:/usr/local/sbin/mgetty /dev/ttys0

A questo punto occorre utilizzare lo script new_fax che consente di ricevere una mail con indicata la posizione del fax da leggere. Nel nostro caso questo è lo script new_fax da noi utilizzato (modificato da Massimo Nuvoli - massimo@nuvoli.to.it) da depositare in /usr/local/lib/mgetty+sendfax #!/usr/bin/perl -w # # Fax filter with more/advanced fetures. # ############ use Mail::Sender; # $DEBUG=1; if ($DEBUG) open OU,">>/tmp/log.faxin"; print OU "--> $$ ($<) ($>)\n"; foreach $el (@ARGV) print OU "ARGV> $el\n"; #$base="/var/spool/fax/archivio/"; $base="/htdir/htdocs_php/fax2/"; $send_via_email=1; $notify_via_email=1; $print_dir=1; #$PREHTML="http://www.in.netlinkl.it/fax/archivio"; $PREHTML="http://php.in.netlink.it/fax2"; $MAILTO="paolo\@in.netlink.it"; $from="fax Server <root\@in.netlink.it>"; $nopt="-s"; $sopt=""; $SENDMAIL = '/usr/lib/sendmail'; $PRINTCMD1 = '/usr/bin/gs -q -spapersize=a4 -sdevice=laserjet -r300 -dnopause -soutputfile=- -- '; $PRINTCMD2 = ' /usr/local/bin/lpr -v -Php3200'; $TMPPRE='/tmp/'; $DPI=300; # risoluzione ps my $hangup_code = shift; my $sender_id = shift; my $number_pages = shift; if ($DEBUG) print OU "code:$hangup_code\n"; print OU "sender:$sender_id\n"; print OU "pagine:$number_pages\n"; print OU "> inizio conversione in ps\n" if($debug); $t=0; foreach $file (@ARGV) $pag[$t]=$file; @partif=split /\//,$file; $ida=$partif[int(@partif)-1]; ($id,$num)=split /\-/,$ida; ($f,$r,$k)=split //,$id; print OU $file," = $r:$f:$k\n" if($debug); system "/usr/local/bin/g32pbm -s <$file >$file.pbm" if ($r eq 'n'); system "/usr/local/bin/g32pbm <$file >$file.pbm" if ($r ne 'n'); system "/usr/bin/pnmtops -noturn -dpi $DPI -width 8.268 -height 11.693 <$file.pbm >$file.ps"; $t++; @parti=split /\//,$pag[0]; $ida=$parti[int(@parti)-1]; ($id,$num)=split /\-/,$ida; print OU "> fine conversione in ps\n" if($debug); $s=0; while($s<$t) $file=$pag[$s]; system "cat $file.ps >>$TMPPRE$$.ps";

$s++; print OU "> fine concatenazione pagine ps\n" if($debug); system "ps2pdf $TMPPRE$$.ps $TMPPRE$$.pdf"; print OU "> fine conversione da ps a pdf\n" if($debug); $sender_id=~s/\s//g; if ($sender_id eq '') $sender_id='non_identificato'; print OU "> invio totale via email\n" if($debug); if ($send_via_email) $sender = new Mail::Sender from => $from; $sender->mailfile ( to => $MAILTO, subject => "Ricevuto fax da $sender_id", msg => "Allegato fax ricevuto", file => "$TMPPRE$$.pdf" ); $filtro='\s,\/,\\\\,\-,\+,\*,\$,\%,\(,\),\='; foreach $fl (split /\,/,$filtro) print OU "Filtro: (",$fl,")\n" if($debug); $sender_id=~s/$fl//g; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $year+=1900; $mon+=1; $mon=sprintf "%02d",$mon; print OU "> Controllo directory base archivio\n" if($debug); if (not(-e "$base$sender_id")) print OU "> Creazione directory base archivio\n" if($debug); system "mkdir $base$sender_id"; print OU "> Copia del documento in archivio\n" if($debug); system "cat $TMPPRE$$.pdf >$base$sender_id/$id.pdf"; print OU "> Notifica via email con url\n" if($debug); if ($notify_via_email) open (MAIL, " $SENDMAIL $MAILTO"); print MAIL "From: $from\n"; print MAIL "Subject: Ricevuto fax da $sender_id\n"; print MAIL "\n\n"; print MAIL "Per accedere al documento memorizzato:\n"; print MAIL $PREHTML."/$sender_id/$id.pdf\n"; close (MAIL); print OU "> Stampa!!\n" if($debug); if ($print_dir) $cmd= "$PRINTCMD1 $TMPPRE$$.ps $PRINTCMD2"; print OU "> cmd=$cmd\n" if($debug); system($cmd); $exit_value = $? >> 8; print OU "> retval=$exit_value\n" if($debug); print OU "> Rimozione dei temporanei $TMPPRE$$.ps.pdf\n" if($debug); unlink "$TMPPRE$$.ps"; unlink "$TMPPRE$$.pdf"; $s=0; while($s<$t) print OU "> Rimozione dei temporanei $file.tiff.ps\n" if($debug); $file=$pag[$s]; # unlink $file; unlink $file.".tiff"; unlink $file.".ps"; $s++;

print OU "> Fine\n" if($debug); close OU; exit(0); Analizzando per grandi linee questo script possiamo osservare come consenta di: convertire il file da postscript a pdf utilizzando l utility standard ps2pdf (verificarne la presenza sul sistema server) salvarlo in una directory il cui nome è il numero di fax mittente e dentro la quale viene depositato il fax Inviare una mail con il link al fax in pdf all utente amministratore del sistema specificato nella direttiva MAILTO Il tutto può poi essere organizzato con un semplice programmino che consenta l ordinamento e lettura dei fax direttamente via web, la cui realizzazione non verrà comunque trattata in questo articolo. Per chi invece preferisse ricevere direttamente per email in allegato il fax in formato pdf è possibile utilizzare questa versione dello script new_fax: #!/usr/bin/perl -w # $base="/var/spool/fax/archivio/"; $MAILTO="paolo\@netlink.it"; $from="fax Server <fax\@netlink.it>"; $nopt="-s"; $sopt=""; my $hangup_code = shift; my $sender_id = shift; my $number_pages = shift; print "code:$hangup_code\n"; print "sender:$sender_id\n"; print "pagine:$number_pages\n"; $t=0; foreach $file (@ARGV) $pag[$t]=$file; @partif=split /\//,$file; $ida=$partif[int(@partif)-1]; ($id,$num)=split /\-/,$ida; ($f,$r,$k)=split //,$id; print $file," = $r:$f:$k\n"; system "fax2tiff $file $nopt -M -4 -o ".$file.".tiff" if ($r eq 'n'); system "fax2tiff $file $sopt -M -4 -o ".$file.".tiff" if ($r ne 'n'); system "tiff2ps ".$file.".tiff -h 11.7 -w 8.3 -O $file.ps"; $t++; @parti=split /\//,$pag[0]; $ida=$parti[int(@parti)-1]; ($id,$num)=split /\-/,$ida; $s=0; while($s<$t) $file=$pag[$s]; system "cat $file.ps >>$$.ps"; $s++; # # #system "lpr -b -P stampante $$.ps" system "ps2pdf $$.ps $$.pdf"; $sender_id=~s/\s//g; if ($sender_id eq '') $sender_id='non_identificato';

system "metasend -b -F \"$from\" -f $$.pdf -m application/pdf -s \"Ricevuto fax da $sender_id\" -S 4000000 -t $MAILTO"; $filtro='\s,\/,\\\\,\-,\+,\*,\$,\%,\(,\),\='; foreach $fl (split /\,/,$filtro) print "Filtro: (",$fl,")\n"; $sender_id=~s/$fl//g; if (not(-e "$base$sender_id")) system "mkdir $base$sender_id"; system "cat $$.pdf >$base$sender_id/$id.pdf"; unlink "$$.ps"; unlink "$$.pdf"; $s=0; while($s<$t) $file=$pag[$s]; # unlink $file; unlink $file.".tiff"; unlink $file.".ps"; $s++; exit(0); Doc: fax_linux.pdf Dott. Paolo PAVAN [Netlink Sas] pavan@netlink.it Data: Settembre 2002 Note finali! Il presente documento è a semplice scopo divulgativo! L autore non si assume la responsabilità di eventuali danni diretti o indiretti derivanti dall'uso dei programmi, o dall applicazione delle configurazioni menzionanate nel seguente articolo! L uso od il riutilizzo del presente articolo è liberamente consentito per scopi didattici o informativi previa citazione della fonte.! Gli script presentati nel documento sono stati riadattati da Massimo Nuvoli massimo@nuvoli.to.it il cui contributo si è rivelato indispensabile.