|
  
|
1#
发表于 2009-3-22 00:48
| 只看该作者
[其它] The HylaFAX "How-To" Guide
v4.2.2, 19 Oct 2005
This is a detailed guide to HylaFAX installation, configuration, and troubleshooting.
[ HOME ] [ BACK ] [ NEXT ]
5. Submitting Faxes From Clients
One of the many reasons for using HylaFAX is for the ability to submit faxes from any networked computer, in any order, and in any quantity. HylaFAX will work away at them without anyone ever walking to a fax machine, and better yet, nobody will be wasting their time watching paper pass through it... page after page after boring page. If there's a busy signal or no answer, HylaFAX will try later, no need to remember in a few minutes. HylaFAX remembers its job well.
HylaFAX server must interact with a client program of some kind to receive its faxing instructions. These client programs may reside on another computer, on the same system as HylaFAX server, or (as in most cases) a combination of client programs both on the HylaFAX system and off work together for proper fax sending.
This section deals with several different approaches to this task. However, it is advisable to at least understand the basics of the HylaFAX client programs themselves, as sent-fax problem debugging and troubleshooting is best done at that level first. The essential HylaFAX client programs with which to be familiar are: faxcover(1), faxmail(1), faxrm(1), faxstat(1), and especially sendfax(1). A good reading would also include hylafax-client(1).
For another HylaFAX client list, see Links.
5.1 *NIX Clients
* HylaFAX itself, of course! Read sendfax(1). Typical usage would be something like:
'sendfax -f "myname@mydomain.com" -R -r "faxsubject" -c "coverpage comments" -x "Recipient's company" -d "Recipient@1234567" tofax.ps'
where myname@mydomain.com is a valid e-mail address for the sender, 1234567 is the number where to fax, and tofax.ps is the image file to be faxed. Standard HylaFAX-compatible file formats are ASCII, TIFF, PostScript, and PDF. Be aware that sendfax is capable of handling multiple -d options and that only the options that precede it apply to that instance of the -d. In most cases the -d option is the last option that should be used.
* SuSEFax - See the printed SuSE manual for SuSEFax information.
* tkhylafax is a popular Unix/X11 tcl/tk interface to HylaFAX. Get it at http://arnolds.dhs.org/steves_world/tkhylafax. See a screen shot here.
* ksendfax - http://ksendfax.sourceforge.net/.
* GFax - http://www.cowlug.org/gfax/. Front End Gnome Fax Software For Linux. Requires Gnome 1.2 or newer such as the Helix release.
5.2 Windows Clients
* facsBridge T37FSP - T37FSP from Serge Sandler is a Windows Fax Service Provider (FSP) that employs T.37 (fax delivery via SMTP). Thus, with some basic mail-to-fax configuration (see below) it will function as a HylaFAX client.
* WHFC - See http://www.uli-eckhardt.de/whfc/.
* RelayFax - RelayFax is a commercial product sold by Alt-N Technologies. It has its own fax-server software, but because it uses an email-to-fax method, the RelayFax client software may be used in conjunction with a HylaFAX server using sendmail and procmail. See RelayFax for more information.
* Cypheus from Bodo Noering is for Windows. It is quite versatile, feature-rich, and has been well-supported. Cypheus serves well as a fax administrator utility. Get it from http://www.cypheus.de/
* HylaFSP - A simple, user-friendly client for faxing from Windows 2000/XP. HylaFSP plugs directly into Microsoft's own 'fax services' and includes support for coverpages (via Microsoft's coverpage editor), local and shared contacts, and generates high-quality TIFF output for great looking faxes.
Homepage is at http://www.ifax.com/HylaFSP/.
* Respond and adiXein - Uses a Samba share on the HylaFAX server to send print jobs to the faxing scripts. See http://www.boerde.de/~horstf/ for Respond and http://www.adixein.com/fax for adiXein.
* w2hfax - w2hfax is a versatile HylaFAX client, allowing sending files directly or sending a fax via printer driver; view incoming and outgoing fax; cancel and delete fax from the incoming, outgoing or sent folder; viewing job details; and address books. See http://w2hfax.sourceforge.net/.
* Winprint HylaFAX is a GPL Windows print monitor designed to send its output directly to a HylaFAX Server. See: http://winprinthylafax.sourceforge.net/.
* HylaFAX Client - See: http://www.swt-online.de/hylafax/index_eng.html.
5.3 Mac Clients
* MacFlex - see http://homepage.mac.com/robthedude/MacFlex/
Note: MacFlex requires the use of the "old" protocol/ports. This requires hfaxd to be started with "old" protocol support. However, this protocol is known to be insecure.
* SDFax - SDFax is a commercial print driver for the Macintosh computer. The print job is formatted in either PostScript or TIFF formats and is sent via e-mail to a fax server in the Internet TPC Fax Project. See http://www.sdesign.com/sdfax1x/mac_os/.
5.4 Email-To-Fax Configuration
There are numerous ways to implement an email-to-fax configuration, and they will vary noticeably depending on the MTA/MDA (what sendmail package) that is used, the "To" addressing, and the manner by which the sender communicates the destination number. Some common ways to communicate the destination number are:
* "To: faxnumber@fax.domain.org" in the header where faxnumber is the destination number. With this method the MTA is generally configured to direct all mail for fax.domain.org to an alias that is directed at a mail-to-fax script. This will require that DNS be configured to point the hostname fax.domain.org at the HylaFAX server and that firewalling and routing permit SMTP traffic (on TCP port 25) to also arrive there.
With sendmail a virtusertable (often /etc/mail/virtusertable) should be created with an entry such as "@fax.domain.org mail2fax". Then run 'make' to create the virtusertable.db file. This tells sendmail to point all mail for fax.domain.org at the mail2fax alias. Then in /etc/aliases create an entry such as "mail2fax: |/usr/local/bin/mail2fax.sh" which will tell sendmail to send all mail for the mail2fax alias at the mail2fax.sh script. Then run 'newaliases'. If sendmail uses smrsh (and it probably does) then an appropriate symlink will need to be made for smrsh (probably 'ln -s /usr/local/bin/mail2fax.sh /etc/smrsh/mail2fax.sh').
With Postfix a virtual alias map should be created by putting an entry such as "virtual_alias_maps = hash:/etc/postfix/valias" into main.cf. Then create /etc/postfix/valias with an entry such as "@fax.domain.org mail2fax". Run 'postmap valias' to create the virtusertable.db file. This tells postfix to point all mail for fax.domain.org at the mail2fax alias. Then in /etc/aliases create an entry such as "mail2fax: |/usr/local/bin/mail2fax.sh" which will tell postfix to send all mail for the mail2fax alias at the mail2fax.sh script. Then run 'newaliases' and 'postfix reload'.
Then create /usr/local/bin/mail2fax.sh which will accept the mail, extract the required information for submitting the job from the headers, and submit the job. Here is a sample mail2fax.sh script. This sample script takes the mail, extracts information from the headers, converts the e-mail into a Postscript document using faxmail, and submits the job using sendfax. Make sure that this script is marked as executable ('chmod a+x /usr/local/bin/mail2fax.sh'). Note that this script does not implement any type of sender screening or authentication. To prevent unauthorized senders from utilizing the mail-to-fax service this script should be modified to do authenticate the sender before submitting the fax job.
* "To: recipient-name@faxnumber.fax" in the header where faxnumber is the destination number. With this method the sender's outbound SMTP server will either need to be the mail-to-fax system itself or will need to be configured to route e-mail for the "fax" top-level domain to the mail-to-fax system.
See sendmail-faxmail-mangling for information on how to do this with sendmail. See http://www.postfix.org/faq.html#fax for information on how to do this with Postfix.
These methods both indicate usage with faxmail, however, faxmail can be replaced with a sendfax wrapper script. With a little shell scripting and some MIME-decoding tools it is fairly easy to customize your own mail-to-fax mechanism using a sendfax wrapper script. sendfax is a HylaFAX command-line client program. This mail2sendfax script is an example of how faxmail can be directly replaced with such a wrapper script. Here is an acclaimed more capable derivative of that same mail2sendfax script so you can see how one may choose to modify it.
* "To: fax@domain.org" in the header and where the destination number is provided elsewhere (such as in the Subject header or in the mail body). With this method very little sendmail package configuration needs to be done, usually just an alias pointing to a mail-to-fax script similar to the ones discussed above. For an alternative example, if procmail is your mail delivery agent (MDA), then you can easily configure it to handle outbound faxes by setting up a dedicated user account for faxing out and placing appropriate recipes in that user's $HOME/.procmailrc file. Outbound faxes are then e-mailed to this user account. This is how the above-mentioned RelayFax client works, which already has a simple generic email-to-fax capability built-in.
faxmail is a HylaFAX client program which takes an electronic mail message on standard input and converts it to PostScript in a form that is suitable for transmission as a facsimile. Read the man page: faxmail(1). faxmail only supports PostScript attachments by default. In order to support other attachment types a MIME converter script must be used. Recent versions of HylaFAX come with default MIMEConverters for PDF and TIFF file types. To handle other types of files please read faxmail(1) and examine the default MIMEConverters.
5.5 Cross-Platform Clients
* Pyla is a GPL Python client similar to WHFC. See: http://www.teamsw.it/pyla/.
* Hermesfax is a web-enabled browser-driven client run from a web server. See: http://www.hermesfax.it.
* JHylaFax is a platform independent Java client licensed under the GPL featuring a Swing user interface. See http://jhylafax.sourceforge.net.
* gnu-hylafax is a pure-Java implementation of the HylaFAX (FAX server) client protocol. The gnu.hylafax package can be used to implement a HylaFAX client that will run on any Java-supporting system. See http://gnu-hylafax.sourceforge.net.
* hylaPEx is a client for hylafax totally written in python. It can read and view the sended and received fax. Support either tiff and ps/pdf formats. Can use redmon for create a virtual fax print. Support shared contacts with a mysql db. See: http://www.unipex.it/hylapex/index_en.html.
* HylaFAXSender is a simple GUI frontend to send faxes using a HylaFAX server. It is written in Java. See http://beta9.be/hylafax.
5.6 Faxing From Samba
It is possible to send a (Hyla)FAX by printing to a Samba-defined fax-printer using a Windows client. This is the recipe:
* Manual:
1. Make up your document (text, pictures, whatever) on a Windows (-alike) client.
2. ANYwhere in your text, specify the fax number you want to send the document to, i.e.:
Fax-Nr : 012-345-6789
3. Print, using a Postscript driver, to the printer on your HylaFAX server system.
4. As soon as the fax has been sent, you will be notified by email. If a failure occurs, an email will be sent to you too.
* Prerequisites:
1. We assume you have a "standard" *NIX and HylaFAX setup.
2. You have a standard Windows-like client i.e., 95, 98, ME, NT, or 2000. OS/2 will also work fine, as long as it supports drive sharing.
3. You use the Samba package to share system resources with the clients - and it is working fine already, meaning that you can log-on as a client.
* To setup do the following:
1. Put the following lines in /etc/printcap and delete (if applicable) any other faxprinters:
faxlp:\
:lp=/dev/null:\
:sd=/usr/spool/lpd:\
:if=/var/spool/hylafax/bin/sambafax:\
:sh:sf:mx#0:
Note: due to some UNIX history the directories /var/spool/ and /usr/spool/ contain the same information, so you use the one that is already present on your machine.
2. Store this script as /var/spool/hylafax/bin/sambafax, or in the /bin directory of your HylaFAX tree (but then adjust the path in printcap). Make sure the script is executable, using "chmod +x sambafax".
3. restart lpd and samba
4. On your client, install a new printer with a postscript driver (like an Apple Laserwriter) to print to \\YOURSERVER\faxlp
5. Create a fax using your favorite wordchewer and take up a line like:
Fax-Nr : 012-345-6789
and print to your new faxprinter.
* Note 1: The sambafax program will look for the following syntax in the printfile:
...text>FAX-NR<1 or 2 spaces>:<1 or 2 spaces><fax number><text...
The search is case-insensitive. The first non-nummeric, non-dash in the fax number will terminate the number.
* Note 2: If you print with a Postscript driver, the output sent to the HylaFAX server is ASCII, a lot of control sequences, and your text in-between. Some printer drivers break up the lines in your text (because postscript does not care about CRLF's). If that happens, the faxnumber will not be located. If using the Windows Apple Laserwriter driver, use the EPS Postscript option.
* Note 3: for the same reason, the textual makeup must be the same for the complete FAX-NR line!
If there are any difficulties or questions, do not hesitate to contact Ignace Suy ignace.suy@purpel3.nl He has provided a sambafax web-site at: http://www.purpel3.nl/sambafax/ please refer to it for the most up-to-date information. If you (re team) are working with it, drop him a line.
Sambafax is now suited to run under the printing systems lpd, LPRng and CUPS. For CUPS the installation is somewhat different. Refer to the website above.
5.7 Faxing via IBM AS/400
Although a true HylaFAX client for AS/400 is not available (more tests with the gnu-hylafax java client are scheduled), you can send facsimiles as print jobs to the HylaFAX server. To do this, some things have to be done but for now a little note.
I tested this with Red Hat Linux but using a different distros will not present to much difficulties. The feedback that I received from earlier version of this howto is that most of the people are not AS/400 experts wich is not a problem but some language that I use in the steps for AS/400 setup make sense in that plattaform. Ask if you needed any explanation.
* AS/400 procedures:
1. Create an output queue like is presented here outq.txt and be sure that LPD package is installed and running.
Note: In outq.txt you will find the follow line Workstation costumization object....: LINUXOUTQ2
This applys only for specific national character map like portuguese, italian ,etc,etc. AS/400 use EBCDIC internally and needed a little help to know that linux use ASCII ;-). Any table can be modified but I sugest changing the 860 map table.
* Linux:
1. Check if you have enscript installed.
2. Check if lpr is installed and running.
3. Add a printer.
4. Modify the entry for that printer in printcap to match the script as400pscript where the job from AS/400 is redirected to create the fax and hylafax is called. Read carefully the script, you will save yourself time and headashes. Here is my printcap for guidance,
lp:\
:sd=/var/spool/lpd/lp:\
:mx#0:\
:sh:\
:cd=/var/spool/lpd/filters:\
:if=/var/spool/lpd/filters/as400script:\
:lp=/dev/null:
Note: The PATHs applies to RH7.x. Don't forget to restart lpd deamon.
Last notes:If you want more control accessing lpd services in the linux box, use LPRng package. The as400script, by default, merge the text from AS/400 with a file where is stored the company logo. If you only want send text, disable the merge text+companylogo process (read carefully the as400script). When merging logos with text, remember, you MUST create the logo file in EPS, Encapsulated Postscript, format.
This was done with Red Hat 7.0, lprng 3.7.4, kernel 2.2.16-22, keyboard pt-latin1, AS400 V4R5.
* Improvement: Rob Sherman changed the as400script to enable multi-page faxing,i e,if you needed same fixed text(only) in every page. If you are good in postscrip, doing this for graphics it will be easy. Read carefully the script and place the ACKFORM.hdr file in $PATH/enscript/. Pay attention that in AS/400 you must specifie your job as ACKFORM. In the as400script2 the ACKFORM.hdr file is invoqued here /usr/bin/enscript --fancy-header=$FNAME where in FNAME is stored the hdr name file, ACKFORM.
as400script2
ACKFORM.hdr
This section was contributed by Pedro Roçadas procadas@yahoo.com
Pedro thanks Giulio Orsero for his assistance on this task.
http://hylafax.sourceforge.net/howto/faxing.php |
|