INTRO

Section: Protocol Families (4F)
Updated: August 30, 1993
Index Return to Main Contents
 

NAME

intro - introduction to FlexFAX operation and file formats  

DESCRIPTION

FlexFAX is a system for sending and receiving facsimile. It supports queued transmission and asynchronous reception of facsimile. Ancillary programs are invoked by the system for flexibility and configurability. FlexFAX includes client and server programs to support remote submission of jobs for transmission, remote removal of queued jobs, and to remotely query the status of jobs queued for transmission. This document describes the organization of the filesystem spooling area in which FlexFAX server and server-related processes operate, and introduces the various files that reside in the spooling area.  

OVERVIEW

The spooling area is typically located under the directory ${SPOOL}. Ancillary commands used by the servers faxd(1M) and faxd.recv(1M), and by administration tools are located in the bin subdirectory. Configuration, access control, and accounting information are maintained in the etc subdirectory. Outgoing facsimile jobs are described by files in the sendq subdirectory, while received facsimile are deposited in the recvq subdirectory. The docq and temp subdirectories are also used in the transmission of facsimile. The info subdirectory contains files that describe the capabilities of facsimile machines that FlexFAX has called- this information is used in preparing documents for transmission. The cinfo subdirectory contains files with per-machine control parameters to use when sending facsimile. The status subdirectory contains files that server processes write their current status to. The log subdirectory contains logging information about send and receive sessions.

FlexFAX supports multiple facsimile modems on a single host. Each modem has a server process associated with it that handles transmission and asynchronous reception. Server processes operate independently of each other and utilize file-level locking to avoid conflicts when handling jobs submitted for transmission. There are currently no per-modem priority or access control mechanisms - all modems are treated equally. Server processes accept commands through FIFO special device files; see mknod(2) or mkfifo(2). All server processes listen for commands written to the file named FIFO, as well as a per-device file named FIFO.devid (where devid is an identifier derived from the name of the device special file to which the modem is connected; e.g. ttym2 for /dev/ttym2, term_10 for /dev/term/10.) To send a command to any server process, one writes to FIFO. This is useful, for example, for submitting a job for transmission. To send a command to a specific server process, the FIFO.devid file is used.  

SENDING

Each outgoing facsimile job has a job description file that is located in the sendq subdirectory. This file contains all the information necessary to manage the transmission; c.f. sendq(4F). The actual documents that are to be sent are located in the docq subdirectory. FlexFAX accepts PostScript and TIFF Class F documents for transmission. PostScript documents are automatically converted to TIFF documents prior to transmission according to the capabilities of the remote facsimile machine: maximum page width and length, ability to handle 2D encoded data, ability to handle high resolution (7 line/mm) data. This remote machine capability information is stored in files in the info subdirectory. If a machine has not been called before, FlexFAX assumes the remote machine has the requested capabilities.

While a job is being processed by a server process, its job description file is locked for exclusive use with flock(2). This insures that multiple server processes do not simultaneously attempt to process a job. The faxstat(1) program uses this information to tell if a job is being processed.

If the SessionTracing parameter in a server's configuration file is non-zero, then tracing information for an outgoing job will be logged in a file in the log subdirectory. Each destination machine has a separate log file named by its canonical phone number.

The remote job submission facility includes per-host access control. The file etc/hosts must be present and list those hosts that are permitted to queue jobs for transmission. Note that it is necessary to include the ``local host'' definition (usually 127.0.0.1) if local submission is to be permitted.  

RECEIVING

Server processes can be configured to answer incoming phone calls and automatically receive facsimile. Received documents are placed in the recvq subdirectory as TIFF Class F files. The server can be configured to make these files publicly accessible, or they can be made private in which case an administrator must manage their delivery. When a facsimile is received, the server process invokes the bin/faxrcvd command. The default command is a shell script that sends a mail message to a well known user, the FaxMaster, but one might also, for example, automatically spool the document for printing.

FlexFAX supports a simple form of access control for receiving facsimile. The server may be configured to check the Transmission Subscriber Identifiers (TSI) of the remote fax machine against a data base, typically etc/tsi. Only if the TSI is present in the data base, is the remote machine permitted to transmit a document. This mechanism can be used, for example, to guard against junk fax.  

POLLING

FlexFAX supports the polled retrieval of facsimile documents. Documents that are received because of a poll request are stored in the recvq subdirectory and also delivered directly to the requester using the bin/pollrcvd command. This script typically encodes the binary facsimile data and returns it to the user via electronic mail.  

DATA CALLS

Most fax modems also support non-facsimile communication. FlexFAX uses the locking mechanism employed by uucp(1C), cu(1C), and slip(1M). As a result, it will transparently ``get out of the way'' when an application wants to use the modem for an outgoing call. In addition, FlexFAX attempts to deduce whether an incoming call is for facsimile or data use. If called by a data modem and the GettyArgs parameter is specified in the configuration file (or on the command line when the fax server process is started up), FlexFAX will invoke the getty(1M) program so that caller may login to the system.  

STATUS

FlexFAX maintains status information in several forms. General status information for each server process is maintained in the status subdirectory and returned to users by the faxstat(1) program. The syslog(3) facility is used by all server processed for logging status and error diagnostics. The server processes may also be configured to log various kinds of debugging and tracing information; c.f. config(4F).

Any problems encountered when transmitting a facsimile are returned to the user by electronic mail. A user may also request notification by mail when a job is requeued; for example, because a call failed. Notification by electronic mail is implemented by the bin/notify command script.

The faxstat utility provides (remote) status of jobs queued for transmission, jobs received, and the general status of server processes.

The file etc/xferlog contains status information about all facsimile sent and received on a machine. This file is in a simple ASCII format that is easy to manipulate with programs such as awk(1), to generate accounting information. See xferlog(4F) for information about the format. See xferstats(1M) and recvstats(1M) for example scripts that print summarized accounting information.  

NOTES

There is no support for priority queueing. Automatic routing of incoming facsimile is desirable.  

FILES

FIFO                  fifo for job submission
FIFO.<devid>          fifo for accessing a specific server
bin/faxinfo           command that prints information about received facsimile
bin/faxquit           command to force server to quit
bin/faxrcvd           faxd command for handling newly received facsimile
bin/notify            faxd command for doing user notification
bin/pollrcvd          faxd command for delivering facsimile received by poll
bin/ps2fax            faxd command for converting PostScript to TIFF
docq/doc*             documents queued for transmission
etc/config.<devid>    configuration data for <devid>
etc/hosts             hosts that may submit jobs for transmission
etc/tsi               fax machines that we'll accept transmissions from
etc/xferlog           log of facsimile sent and received
info/*                data base of remote fax machine capabilities
cinfo/*               data base of remote fax machine control parameters
log/*                 session logging records
recvq/fax*            received facsimile
sendq/q*              descriptions of jobs queued for transmission
status/*              server status information
tmp/*                 temporary files created when submitting a job
 

SEE ALSO

faxd(1M), faxd.recv(1M), faxrcvd(1M), notify(1M), pollrcvd(1M), recvstats(1M), xferstats(1M), cinfo(4F), config(4F), dialrules(4F), hosts(4F), info(4F), log(4F), tsi(4F), recvq(4F), sendq(4F), status(4F), xferlog(4F),


 

Index

NAME
DESCRIPTION
OVERVIEW
SENDING
RECEIVING
POLLING
DATA CALLS
STATUS
NOTES
FILES
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 10:15:15 GMT, January 04, 2023