HFAXD(8)
π NAME π
hfaxd β the HylaFAX client-server protocol server, bestie. she's the one holding it all down. π«Ά
πΈ SYNOPSIS πΈ
/usr/sbin/hfaxd [ -d ] [ -q dir ] [ -o port ] [ -O ] [ -l bindaddress ]
[ -i port ] [ -I ] [ -s port ] [ -S ]
β¨ DESCRIPTION β¨
okay so hfaxd is the HylaFAX program that runs the server side of two whole things, no cap:
- the client-server protocol, and
- the Simple Network Paging Protocol (SNPP), which is what you use to submit message pager jobs to the IXO/TAP and UCP support. π
more client-server protocols are planned, and hfaxd is literally designed to be the ``carrier'' that carries them all. main character energy, honestly.
now, hfaxd usually gets used one of two ways. either:
- as a standalone process started at system boot time, just chilling and listening for client connections on one or more ports β and if that's the vibe, you must use the
-i,-o, or-soption, fr fr. or - as a subservient process to the
inetd(8)program. π
and yes you can combine both forms!! as long as the same service isn't being provided by the standalone hfaxd and through inetd at the same time. that would be messy. don't do that. π
π¦ HYLAFAX (NEW) CLIENT-SERVER PROTOCOL SUPPORT π¦
if hfaxd is started with the -i option, she'll service clients using the HylaFAX client-server protocol. and this protocol is strongly related to the Internet File Transfer Protocol (FTP) β like, so much so that FTP client programs with support for ``quoted commands'' can be used to talk to hfaxd with the new protocol. iconic. π
(it should also be possible to use FTP-aware World Wide Web browsers such as Mosaic and Netscape Navigator to access HylaFAX servers through the new protocol β but the current format for information returned in directory listings confuses them. π so, like, good luck with that one.)
the hfaxd server currently recognizes the following protocol requests. case is not distinguished. and entries marked with a ΒΉ can only be used when the client has established administrative privileges with ADMIN. π
ABORβ abort previous commandACCTβ specify account (ignored)ADMINβ specify password for administrative privilegesALLOβ allocate storage (vacuously)ANSWERΒΉ β request that call be answeredAPPEβ append to a fileCDUPβ change to parent of current working directoryCHMODβ change mode of a fileCHOWNΒΉ β change owner of a fileCWDβ change working directoryDELEβ delete a fileDISABLEΒΉ β disable outbound use of modemENABLEΒΉ β enable outbound use of modemHELPβ give help informationFILEFMTβ specify/query format for returning file statusFILESORTFMTβ specify/query format for sorting file status listingFORMβ specify data transfer formatIDLEβ set idle-timer (in seconds)JDELEβ delete done or suspended jobJINTRβ interrupt jobJKILLβ kill jobJNEWβ create new jobJOBβ set/query current jobJOBFMTβ specify/query format for returning job statusJOBSORTFMTβ specify/query format for sorting job status listingJPARMβ specify/query job state parameterJRESTβ reset current job stateJSUBMβ submit job to schedulerJSUSPβ suspend job from schedulingJWAITβ wait for job to completeJGDELEβ delete group of jobsJGKILLβ kill group of jobsJGINTRβ interrupt group of jobsJGNEWβ place current job in a new job groupJGPARMβ set state parameter in a group of jobsJGRESTβ reset current state for a group of jobsJGRPβ set/query current job groupJGSUBMβ submit group of jobs to schedulerJGSUSPβ suspend group of jobs from schedulingJGWAITβ wait for group of jobs to completeLISTβ list files in a directoryMDTMβ show last modification time of fileMODEβ specify data transfer modeMDMFMTβ specify/query format for returning modem statusMDMSORTFMTβ specify/query format for sorting modem status listingNLSTβ give name list of files in directoryNOOPβ do nothingPASSβ specify passwordPASVβ prepare for server-to-server transferPORTβ specify data connection portPWDβ print the current working directoryQUITβ terminate sessionRCVFMTβ specify/query format for returning received facsimile statusRCVSORTFMTβ specify/query format for sorting received facsimile status listingREINβ reinitiate server stateRESTβ restart incomplete transferRETPβ retrieve the next page in a fileRETRβ retrieve a fileSHUTβ schedule server shutdownSITEβ non-standard commands (see next section)SIZEβ return size of fileSTATβ return status of server or fileSTORβ store a fileSTOTβ store a temporary file with a unique nameSTOUβ store a file with a unique nameSTRUβ specify data transfer structureSYSTβ show operating system type of server systemTYPEβ specify data transfer typeTZONEβ specify timezone handling for dates and timesUSERβ specify user nameVRFYβ verify dialstring handling and/or least-cost routing
and then the following non-standard or experimental commands get supported through the SITE request. π§
ADDMODEMΒΉ β add/configure new modem for useADDUSERΒΉ β add client access control entryCONFIGΒΉ β send configuration parameter setting to serverDELMODEMΒΉ β deconfigure/remove modemDELUSERΒΉ β remove client access control entryTRIGGERβ register realtime event triggerHELPβ give help information, e.g.,SITE HELP
and also: FTP requests that are specified in Internet RFC 959 but not listed here are recognized β but not implemented. she sees them. she's just not doing anything about it. π
oh and one more thing, this is important. the hfaxd server will abort an active data transfer only when the ABOR command is preceded by a Telnet "Interrupt Process" (IP) signal and a Telnet "Synch" signal in the command Telnet stream, as described in Internet RFC 959. and if a STAT command is received during a data transfer β again, preceded by a Telnet IP and Synch β transfer status will be returned. β
π SIMPLE NETWORK PAGING PROTOCOL (SNPP) SUPPORT π
if hfaxd is started with the -s option, she'll service clients using the Simple Network Pager Protocol (SNPP) as specified in RFC 1861 β which, btw, obsoletes RFC 1645. β¨
the hfaxd server currently recognizes the SNPP protocol requests listed below. requests marked with a ΒΉ are non-standard extensions to RFC 1861 that may be added to SNPP at some future time. case is not distinguished, and only the first four characters of requests are used in identifying commands. iykyk. π
2WAYβ preface a 2-way transactionABORΒΉ β abort previous commandACKRβ set read acknowledgement handling for subsequent requestsALERβ set the alter-level for subsequent requestsCALLβ set the caller-ID for subsequent requestsCOVEβ set the alternate coverage area for subsequent requestsDATAβ specify a multi-line messageEXPTβ set the expiration time for subsequent requestsHELPβ give help informationHOLDβ set the time at which subsequent requests are to be deliveredKTAGβ kill a previously submitted requestLEVEβ set the service level for subsequent requestsLOGIβ login to serverMCREβ specify multiple response text and codeMESSβ specify a single-line messageMSTAβ return the status of a previously submitted requestNOQUβ disable message queueingPAGEβ specify the destination pagerPINGβ locate/validate a pagerQUITβ terminate sessionRESEβ reset server stateRTYPβ set the reply type code for subsequent requestsSENDβ send message(s)SITEΒΉ β site-specific commands (see next section)STATΒΉ β return server statusSUBJβ set the message text for subsequent requests
the hfaxd server will abort an active SEND operation when an ABOR command is preceded by a Telnet "Interrupt Process" (IP) signal and a Telnet "Synch" signal in the command Telnet stream. π
and these following non-standard or experimental commands are also supported through the SITE request:
FROMUSERβ specify the sender's identityIDLEβ set idle-timer (in seconds)JPARMβ query job parameter statusJQUEUEβ control whether or not job is queuedLASTTIMEβ set the time to terminate an unfinished jobMAILADDRβ set the e-mail address to use for notificationMAXDIALSβ set the maximum number of times to dial the phoneMAXTRIESβ set the maximum number of times to try sending the pageMODEMβ set the modem or class of modems to useNOTIFYβ set the e-mail notificationRETRYTIMEβ set the time to delay between job retriesSCHEDPRIβ set the scheduling priority for the jobHELPβ give help information, e.g.,SITE HELP
heads up bestie π¨ βhfaxdrequires that SNPP clients login first with theLOGIdirective, while RFC 1861 permits clients to submit pages anonymously. so like. she's stricter than the spec. respect it. π
π CLIENT ACCESS CONTROL π
okay so here's the tea on who gets to talk to hfaxd at all. it controls client access based on whatever's chilling in /var/spool/hylafax/etc/hosts.hfaxd. that file is literally the guest list: it defines the set of users and machines that may receive service and, optionally, it defines password challenges to use in authenticating clients. π
so like, clients may be permitted access to services with or without a password challenge β your call. access may also be restricted based on the host machine that a request for service originates from, which is giving "we know where you live" energy. go read hosts.hfaxd(5) for the format and content of this file, iykyk. also there's the SITE ADDUSER protocol request, which is provided for adding new users to a server β and bestie, that one is available only to clients with administrative privileges. π
server resources are controlled based on clients' identities. jobs and documents, both received and submitted, are protected by the server. typically clients are permitted access to anything they own or that is publicly accessible. and then there are administrative privileges that clients may acquire, which permit them wide access to objects that reside on the server. main character privileges fr fr. π
ngl, a complete client-server protocol specification is still outstanding. we said what we said. π
hfaxd operates with its root directory set to the top of the HylaFAX spooling area; /var/spool/hylafax. it does this so that clients see a virtual file hierarchy that is completely contained within the HylaFAX operating environment on the server machine β very demure, very contained. β¨ but administrators must be aware of this action when specifying files in the hfaxd configuration file: absolute pathnames relative to the root of the spooling should be used to specify filenames. do not come for me about this, it's just how it works. π
π§ SERVER ACCESS CONTROL π§
the file /var/spool/hylafax/etc/shutdown, when present, specifies when to restrict access to a server machine. when this file is present and contains valid information, hfaxd will permit only users with administrative privileges to access the server. any other users that request service will be denied access, and negative server responses will include any shutdown message specified in the shutdown file. go read hylafax-shutdown(5) for the format and content of this file. π
the SHUT protocol request can be used to schedule a server shutdown; it is available only to clients with administrative privileges. to make a shutdown server available again, the shutdown file can be deleted with the DELE protocol request. (this is to be replaced with an ``unshut'' protocol request so that implementation details are not part of the protocol β yes that's literally what the docs say, we're not making this up.) π«Ά
βοΈ CONFIGURATION FILES βοΈ
hfaxd reads configuration information from the file /etc/hylafax/hfaxd.conf each time a new server process is started (i.e. for each new client). this file uses the same conventions used by other HylaFAX configuration files; as described in hylafax-config(5). πΈ
the following configuration parameters are recognized; items marked ``(SNPP)'' are used only by the SNPP support. okay bestie, here's the whole roster, one by one, no skips: β¨
AllowSortFormatβ type:boolean, default:trueβ Allow client to request sorting formatsFaxContactβ type:string, default: see below β contact address to show in help textFileFmtβ type:string, default: see below β format string for file status resultsFileSortFmtβ type:string, default:-β format string for sorting file status listingIdleTimeoutβ type:integer, default:900β client idle timeout in secondsJobFmtβ type:string, default: see below β format string for job status resultsJobSortFmtβ type:string, default:-β format string for sorting job status listingJobProtectionβ type:octal, default:0444β permissions for job qfiles in sendq/doneqKillTimeMapβ type:string, default: see below β mapping from service level to job kill time (SNPP)LogFacilityβ type:string, default:daemonβ syslog facility name for tracing messagesMaxAdminAttemptsβ type:integer, default:5β maximum admin attempts before disconnectingMaxConsecutiveBadCmdsβ type:integer, default:10β maximum invalid commands before disconnectingMaxIdleTimeoutβ type:integer, default:7200β maximum client idle timeout permittedMaxLoginAttemptsβ type:integer, default:5β maximum login attempts before disconnectingMaxMsgLengthβ type:integer, default:128β maximum pager message length (SNPP)ModemFmtβ type:string, default: see below β format string for modem status resultsModemSortFmtβ type:string, default:-β format string for sorting modem status listingPagerIDMapFileβ type:string, default:/var/spool/hylafax/etc/pagermapβ name of file for mapping pager IDs (SNPP)PriorityMapβ type:string, default: see below β mapping from service level to job priority (SNPP)PublicJobQβ type:boolean, default:trueβ Allow public listing access to the sendq/doneqPublicRecvQβ type:boolean, default:trueβ Allow public listing access to the recvqRcvFmtβ type:string, default: see below β format string for received facsimile status resultsRcvSortFmtβ type:string, default:-β format string for sorting received facsimile status results listingRetryTimeMapβ type:string, default: see below β mapping from service level to job retry time (SNPP)ServerTracingβ type:integer, default:1β server tracing control vectorShutdownFileβ type:string, default:/var/spool/hylafax/etc/shutdownβ name of shutdown control fileUserAccessFileβ type:string, default:/var/spool/hylafax/etc/hosts.hfaxdβ name of access control fileXferLogFileβ type:string, default:/var/spool/hylafax/etc/clientlogβ name of file for logging client data transfers
the configuration parameters are explained below:
AllowSortFormat
this controls whether the server accept the *SORTFMT commands which the client issues to change the server sort the listings. yes, that sentence is a little wobbly, but that's the deal: it's the switch that says whether the server takes those client-issued *SORTFMT commands or not. π
FaxContact
the e-mail address to display as a point of contact in the help text returned to a client in response to the HELP or SITE HELP commands. by default this is ``FaxMaster@hostname'', where hostname is the fully qualified name for the machine where the server is running. π
FileFmt
the format string to use when returning file status information with the LIST and STAT commands. formats are specified using printf(3S) style conventions but using the field identifiers listed below. each item can include field width, precision, left-justification, 0-filling, etc. just as for printf; e.g. %-8p for an 8-character wide, left-justified, blank-padded field containing the file protection flags. ok so the field identifiers, all of them: β¨
aβ Last access timecβ Creation timedβ Device number (octal)fβ Filenamegβ Group identifier (decimal)iβ Inode number (decimal)lβ Link count (decimal)mβ Last modification timeoβ Owner (based on file GID)pβ Fax-style protection flags (no group bits)qβ UNIX-style protection flagsrβ Root device number (octal)sβ File size in bytes (decimal)uβ User identifier (decimal)
the default format string is ``%-7p %3l %8o %8s %-12.12m %.48f''. it is recommended that all items include a field width so that client applications that construct headers from the format string can constrain the width of column title strings. do it for the column alignment, bestie. π
FileSortFmt
the format string to use when sorting the listing for directories using the LIST command. follows the FileFmt formatting rules. so same rules, different job. π
IdleTimeout
the initial/default timeout to use in timing out idle clients. this value defines the maximum amount of time (in seconds) that hfaxd will wait for a command from a client before terminating the connection. unprivileged clients may alter the idle timeout up to the value of MaxIdleTimeout; privileged clients may set the timeout to any value. π
JobFmt
the format string to use when returning job status information for jobs in the sendq and doneq directories. formats are specified using printf(3S) style conventions but using the field identifiers listed below. each item can include field width, precision, left-justification, 0-filling, etc. just as for printf; e.g. %-3j for a 3-character wide, left-justified, blank-padded field containing the job state.
Aβ Destination SubAddressBβ Destination PasswordCβ Destination company nameDβ Total # dials / maximum # dialsEβ Desired signalling rateFβ Client-specific tagline format stringGβ Desired min-scanline timeHβ Desired data formatIβ Client-specified scheduling priorityJβ Client-specified job tag stringKβ Desired use of ECMLβ Destination geographic locationMβ Notification e-mail addressNβ Desired use of private tagline (one-character symbol)Oβ Whether to use continuation cover page (one-character symbol)Pβ # pages transmitted / total # pages to transmitQβ Client-specified minimum acceptable signalling rateRβ Destination person (receiver)Sβ Sender's identityTβ Total # tries / maximum # triesUβ Page chopping threshold (inches)Vβ Job done operationWβ Communication identifierXβ Job type (one-character symbol)Yβ Scheduled date and timeZβ Scheduled time in seconds since the UNIX epochaβ Job state (one-character symbol)bβ # consecutive failed triescβ Client machine namedβ Total # dialseβ Public (external) format of dialstringfβ # consecutive failed dialsgβ Group identifierhβ Page chop handling (one-character symbol)iβ Current scheduling priorityjβ Job identifierkβ Job kill timelβ Page length in mmmβ Assigned modemnβ E-mail notification handling (one-character symbol)oβ Job ownerpβ # pages transmittedqβ Job retry time (MM::SS)rβ Document resolution in lines/inchsβ Job status information from last failuretβ Total # tries attempteduβ Maximum # triesvβ Client-specified dialstringwβ Page width in mmxβ Maximum # dialsyβ Total # pages to transmitzβ Time to send job
Okay so the default format string is literally this:
%-4j %3i %1a %6.6o %-12.12e %5P %5D %7z %.25s
and bestie, that string is engineered π β it keeps every single status line under 80 characters. And here's the pro tip: give every item a field width, because client applications like faxstat(1) that build their headers out of the format string need to be able to constrain how wide those column title strings get. iykyk π
JobSortFmt π
The format string used when sorting the listing for jobs in the sendq and doneq directories. It follows the exact same formatting rules as JobFmt. Copy that energy, different job. β¨
JobProtection π
The file mode setting for job qfiles in the HylaFAX queues (sendq and doneq). The default of `0644` lets all users view all the job parameters in the send/done queues. But if PublicJobQ is set to false, then this file mode is what decides the permissions clients get to see jobs β following the HylaFAX permission model where the group bits control uid permissions and the other bits control other permissions. It's giving layered security, honestly. π
KillTimeMap π
The mapping from SNPP service level (0-11) to job expiration time (aka kill time β°οΈ). You specify a mapping as a string of space-separate numbers, where each value is the number of minutes you're willing to let a job run.
Default mapping:
5 5 5 15 60 240 720 1440 1440 1440 1440 1440
Which means: a job expires in 5 minutes for service levels 0-2, 15 minutes for level three, 60 minutes for level four, etc. β°
LogFacility π
The symbolic name for the syslog(3) facility to use when logging error messages and informational/debugging messages that were requested through the ServerTracing parameter. You'll find the list of facility names in the system include file <syslog.h> β and comparisons are case-insensitive. π
MaxAdminAttempts π«
The maximum number of unsuccessful attempts to gain administrative privileges with the ADMIN command that hfaxd will allow a client before it terminates the connection. Note that the count of attempts gets reset if/when the client successfully gains administrative privileges. So like, no farming the counter, bestie. π
MaxConsecutiveBadCmds π
The maximum number of consecutive unrecognized, unimplemented, syntactically incorrect, or otherwise straight-up unacceptable commands allowed before the connection gets terminated. This control has two purposes:
- to handle naive or malicious clients that send long streams of nonsense commands at a server, and
- to insure that clients are forcibly terminated when a server is marked shutdown.
Not me protecting the server from the group chat spam. π‘οΈ
MaxIdleTimeout π¦
The maximum value a client is allowed to set the idle timeout to. This value is not enforced if the client has administrative privileges. Main character privileges, fr fr. π
MaxLoginAttempts π
The maximum number of unsuccessful attempts to login with the USER and PASS commands that hfaxd will permit a client before terminating the connection. Three strikes but make it authentication. β‘
MaxMsgLength π
The maximum number of characters to accept in a pager message specified with the DATA or MESS commands. Messages longer than this value are rejected. Keep it short, keep it cute. βοΈ
ModemFmt πΈ
The format string to use when returning modem status information for modems listed in the status directory. Formats use printf(3S) style conventions, but with the field identifiers listed below. Each item can include field width, precision, left-justification, 0-filling, etc. just like printf does β e.g. %-8h gives you an 8-character wide, left-justified, blank-padded field holding the name of the host the server is running on. π
hβ Server hostnamelβ Local identifier stringmβ Canonical modem namenβ FAX phone numberrβ Maximum pages that can be received in a single callsβ Status information stringtβ Server and session tracing levels (xxxxx:yyyyy)vβ Modem speaker volume as one-character symbolzβ A*if afaxgetty(8)process is running; otherwise(space)
The default format string is `Modem %m (%n): %s`. Iconic, honestly. β¨
ModemSortFmt π
The format string to use when sorting the listsin for modem status information in the status directory. π
PagerIDMapFile π
The absolute pathname</> of the file that contains directions for mapping pager identifiers to IXO/TAP or UCP service providers (and optionally a pager identification number). Go consult pagermap(5) for the tea on the format and content of this file.
Heads up bestie: absolute pathnames here are relative to the root of the spooling area. Don't get caught out. π«Ά
PriorityMap β
The mapping from SNPP service level (0-11) to job scheduling priority. You write it as a string of space-separate numbers, where each value is the priority assigned to a job.
Default mapping:
63 127 127 127 127 127 127 127 127 127 127 127
Which hands a high priority to service level zero and normal (default) priority to all the other service levels. Level zero said "I'm the moment." π₯
PublicJobQ π
By default, HylaFAX has always made the listings of the sendq/doneq include all jobs to any client connected to hfaxd. Set this to false and hfaxd will also enforce its normal access restrictions on the listing of jobs in the sendq/doneq.
These access restrictions are based on:
- the file mode (see
JobProtection), and - the logged in uid (see
hosts.hfaxd)
Locking it down, periodt. π
PublicRecvQ π¬
Same deal, different queue: by default HylaFAX has always made the listings of the recvq include all faxes to any client connected to hfaxd. Set this to false and hfaxd will also enforce its normal access restrictions on the listing of faxes in the recvq.
These access restrictions are based on:
- the file mode
faxgetty(and its relatedFaxDispatch) set for the fax, and - the logged in uid (see
hosts.hfaxd)
Two queues, one vibe check. β
RcvFmt π
The format string to use when returning status information for received facsimile in the recvq directory. Formats use printf(3S) style conventions, but with the field identifiers listed below. Each item can include field width, precision, left-justification, 0-filling, etc. just as for printf β e.g. %-3b gives you a 3-character wide, left-justified, blank-padded field holding the signalling rate. π¦
aβ SubAddress received from sender (if any)bβ Signalling rate used during receivedβ Data format used during receiveeβ Error description if an error occurred during receivefβ Document filename (relative to therecvqdirectory)hβ Time spent receiving document (HH:MM:SS)lβ Page length in mmmβ Fax-style protection mode string (`-rwxrwx`)nβ File size (number of bytes)oβ File ownerpβ Number of pages in documentqβ UNIX-style protection flagsrβ Resolution of received datasβ Sender identity (TSI)tβ Compact representation of the time when the receive happenedwβ Page width in mmzβ A*if receive is going on; otherwise(space)
β¦and the default format string is ``%-7m %4p%1z %-8.8o %14.14s %7t %f''. That string keeps every status line under 80 characters, bestie β it's a whole aesthetic constraint β¨. And it's highly recommended that every item in your format string carries a field width, because client apps like faxstat(1) build their column headers straight out of that format string, and they need to know how wide to make the titles. iykyk π
π Configuration Parameters (cont'd) π
RcvSortFmtβ the format string used when sorting the listing of received facsimile in therecvqdirectory. It follows all the sameRcvFmtformatting rules, no cap πRetryTimeMapβ this one's a whole vibe check on SNPP service levels (0-11) mapped to job retry time. You write it as a string of space-separated numbers, where each value is how many seconds to delay between delivery attempts. A value of0means "nah, just schedule retries with the default algorithm the HylaFAX job scheduler already uses". The default mapping is:
30 60 60 180 0 0 0 0 0 0 0 0
which literally means: a level 0 job gets retried after a 30 second delay, levels 1 and 2 after 60 seconds, level 3 after 3 minutes, and every other job gets retried the usual scheduling-algorithm way. iconic π¦
ServerTracingβ a number that controls how much tracing info a server generates. Different areas of operation are controlled individually, so if you want tracing for multiple areas, you bit-or the flag for each area together to build the value for this tag π1(0x00001) β General server operation2(0x00002) β Client-server protocol requests and responses4(0x00004) β File transfers from client to server8(0x00008) β File transfers from server to client16(0x00010) β Client logins32(0x00020) β All network connections64(0x00040) β FIFO messages to and fromfaxq(8)128(0x00080) β TIFF Library errors and warnings256(0x00100) β Configuration file processing
Tracing messages get sent off to syslog(3) using whatever facility you set with the LogFacility configuration parameter. Heads up though: syslogd(8) has to be configured to actually capture facility.info, facility.debug, facility.warning, and facility.err messages, or your traces just vanish into the void π
ShutdownFileβ the absolute pathname of the server shutdown file. Peephylafax-shutdown(5)for the format and content deets. (Note that absolute pathnames are relative to the root of the spooling area β yes, that's the rule, don't come for me π)UserAccessFileβ the absolute pathname of the user access control file. Seehosts.hfaxd(5)for the format and content. (Same note: absolute pathnames are relative to the root of the spooling area.)XferLogFileβ the absolute pathname of the file used for logging client-server file transfers (and that only kicks in when you've enabled it through theServerTracingparameter). (Yep β absolute pathnames are relative to the root of the spooling area.)
β¨ OPTIONS β¨
-q dirβ treat the specified directory as the spooling area. The default spooling area,/var/spool/hylafax, gets baked in at the time the software is built π-dβ stopshfaxdfrom detaching itself from the controlling terminal. Normally you'd only use this when runninghfaxdunder a debugger, or whenhfaxdgets started up from theinetd(8)process π«Ά-l bindaddressβ bind the tcp port to the specified bindaddress. But listen: this argument has to be specified before the-i, otherwise it just gets ignored, periodt π. A better approach for improving security would be to runhfaxdfromxinetdand bind its service to the specific port β that also lets HylaFAX benefit from tcp wrappers and all the other optionsxinetdprovides π-i portβ listen on the specified port for service requests and respond with the client-server protocol. The port can be symbolic, e.g. ``hylafax'', or numeric. You can specify this flag multiple times to request service on multiple different ports. Each time you specify it, it listens on that port bound to the last-l bindaddressyou gave it. If no-l bindaddresswas specified, it binds to the system configured default wildcard address β which could be IPv6, or IPv4, or both, no promises π-s portβ listen on the specified port for service requests and respond with the Simple Network Paging (SNPP) protocol. The port can be symbolic, e.g. ``snpp'', or numeric. This flag can also be specified multiple times to request service on multiple different ports π-Iβ service the client-server protocol using standard input and output. Super useful whenhfaxdis started up byinetd(8)π-Sβ service the Simple Network Paging (SNPP) protocol using standard input and output. Also super useful whenhfaxdis started up byinetd(8)β¨
π©Ί DIAGNOSTICS π©Ί
Diagnostics generated by hfaxd are logged using syslog(3). That's the whole thing, bestie πΈ
π FILES π
/etc/hylafax/hfaxd.confβ server configuration file/var/spool/hylafaxβ spooling area/var/spool/hylafax/FIFOβ for submitting the job/var/spool/hylafax/sendqβ where job description is placed/var/spool/hylafax/sendq/seqfβ for assigning job identifiers/var/spool/hylafax/docq/seqfβ for assigning document identifiers/var/spool/hylafax/tmpβ temporary location of job-related files/var/spool/hylafax/docqβ where document files are placed/var/spool/hylafax/recvqβ where received facsimile are found/var/spool/hylafax/archiveβ where archived jobs are placed/var/spool/hylafax/logβ for server log files/var/spool/hylafax/clientβ for FIFO files used in communicating withfaxq/var/spool/hylafax/statusβ for server status information/var/spool/hylafax/config.deviceβ for returning server status/var/spool/hylafax/etc/hosts.hfaxdβ host access control list/var/spool/hylafax/etc/shutdownβ server shutdown control/var/spool/hylafax/etc/pagermapβ SNPP pager ID mapping file
π BUGS π
To be filled in. (The most relatable section in any manpage fr fr π not me writing "TODO: bugs" and calling it documentation π )
π SEE ALSO π
sendfax(1), sendpage(1), faxalter(1), faxrm(1), faxstat(1), faxq(8), syslog(3) hylafax-server(5), hosts.hfaxd(5), status(5), hylafax-shutdown(5),
And that's a wrap on the whole page, bestie π this one's from the July 12, 1996 era, part of the HylaFAX HFAXD(8) manual β go forth and fax responsibly, you absolute icon πβ¨
π¦ where this page comes from
- debian bookworm: hylafax-server 3:6.0.7-5
- debian trixie: hylafax-server 3:6.0.7-11.1
- ubuntu jammy: hylafax-server 3:6.0.7-3.1
- ubuntu noble: hylafax-server 3:6.0.7-7
- ubuntu questing: hylafax-server 3:6.0.7-13
- ubuntu resolute: hylafax-server 3:6.0.7-13build1
- ubuntu stonking: hylafax-server 3:6.0.7-13build1
- Copyright (c) 1995-1996 Sam Leffler
- Copyright (c) 1995-1996 Silicon Graphics, Inc
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms