The JOB files in the subdirectories of the outgoing fax spool directory, /var/spool/fax/outgoing build up a queue of faxes to be sent by faxrunq(1). They are created by faxspool(1), can be viewed with faxq(1), and be deleted by faxrm(1).
The format of the JOB file is as follows:
Each line consists of a leading keyword and associated data (rest of the line). Some are required, some others are optional. The currently implemented keywords are:
- phone <number>
The telephone number to send the fax to. Required.
- user <user>
The originating user name (on the local machine). If no "mail" field is present, this user will get the status mail about the fax. Required.
- mail <email>
If this field is present, faxrunq(1) will send its status mail to the address given here. If not, faxrunq(1) will use the "user" field. Optional.
- input <file(s)>
The file names passed to faxspool(1). Optional, used only by faxq(1).
- pages <file(s)>
The file names, relative to the directory where the JOB file is found, that are to be sent with sendfax(8). The files have to exist, and be readable by the user that runs faxrunq(1). Required, except if "poll" is used, then it's optional.
- priority <0-9>
This can be used to set the priority for this job in the fax queue (higher priority jobs get sent before all lower-pri jobs). So far, only faxrunqd uses this field, faxrunq does NOT. 9 is the highest, 0 the lowest priority. 5 is the default.
- Status <message>
Automatically appended by faxrunq(1) after each run, tells the reader about successful and unsuccessful tries to send this job. If more than five "FATAL" errors are listed, the fax job is removed from the queue.
- verbose_to <blurb>
A plain-text description of the receiver of the fax. Is returned, if present, in the mail messages "your fax to <blurb>". Optional.
- time <hhmm>
If present, faxrunq won't send this job before the given time. The format must be exactly "hhmm", in 24-hr-format, otherwise faxrunq won't understand it. Optional. (Notice: this implies "stop trying after midnight, until hh:mm next day")
- time <hhmm>-<hhmm>
This format specifies a time window when sending this fax is permitted, e.g. "time 2300-0500". This format will only work if you use faxrunqd, as support for it has not been implemented for faxrunq yet.
Flag token. If present, faxrunq will try to poll the given phone number for documents (see "sendfax -p").
Flag token. If present, faxrunq will transmit all pages using normal resolution (see "sendfax -n").
- acct_handle <arbitrary string>
This is a pure comment field, but sendfax(8) will log it into its transaction log file. So this can be used as a customer handle, a job number, whatever you need to get the phone bills charged to the customer (the programs won't look at it, just pass it through). Optional.
- subject <arbitrary string>
This is also a pure comment field, used only for informational purposes. faxrunq will return it in the sucess/failure mail. If you use faxspool -s <subj>, it will put this string on the cover page and in the JOB file.
Starting with mgetty 1.1.29, the fax spool directory /var/spool/fax/outgoing is no longer world-writeable. It should be owned by the user 'fax' and be mode 755. The faxrunq(1) and faxrunqd(1) programs should also be run under that user ID if possible.
If the fax spool directory is world- or group-writeable, there are a number of denial of service or file overwrite / file access attacks possible that it's very hard to guard against. So don't do this!
If the fax spool directory has the proper permissions, there are currently no known attacks against faxrunq/faxrunqd, even if they run as "root", but it's always more safe to run as untrusted user.
While a given JOB file is processed by faxrunq(1), it's locked against sending it multiple times by temporarily renaming it to JOB.locked, thus it may happen that a faxq(1) command doesn't show this job. ( faxrunqd(8) is a bit smarter and does the locking by creating a hard link).
When a job is successfully sent, it's not deleted but the JOB file is renamed to JOB.done. Because of this, you can still see old jobs with "faxq -o". You should regularly clean up the outgoing fax directory, removing old faxes. If you don't want this behaviour, edit the faxrunq(1) config file and enable the option delete-sent-jobs yes
When a job cannot be sent after several tries (excluding normal difficulties like the called number being busy or the modem being in use), the JOB file is renamed to JOB.suspended. To re-queue this job, call faxq -r -- this renames the JOB file back.
faxrunq(1), faxspool(1), faxrm(1), faxq(1), faxrunqd(8)
faxq(1), faxq-helper(8), faxrunq(1), faxrunqd(8), faxspool(1), mgetty_fax(1).