# HOWTO: Build your own faxserver

## mariourk

Howto: Building a faxserver with Hylafax

So, you have an old external serial modem and you wonder what to do with it.

You also have collegues complaining about the fact that they are tired of walking

to the fax, to fax their stuff, several times a day. Finaly you have a Linux server

(in my case a mailserver) running. Since the server isn't doing much, most of the time,

it can easily handle some more tasks. And suddenly the idea is born: "I'm going to

build a faxserver!"  :Very Happy: 

What does a faxserver do?

A faxserver is able to send and recieve faxes trough a modem. If the faxserver

is hooked up to a network and the right software is used, the faxserver can be

used as a "printer" Employees in a companies network can simply "print" their

faxes to the faxserver and the faxserver takes care of the rest. Sounds cool huh?  :Wink: 

Needs

The following stuff is needed to get your faxserver running.

* 1 or more external serial modems. Although some internal modems might work as well.

* 1 Linux server

* Some enthousiasm  :Wink: 

I'm not going trough every detail with this howto but I'm doing the best I can. If you find

some stuff that's not right, please inform me and I'll fix in in this howto. Lets make things

better together.  :Very Happy: 

I'm not going to cover recieving faxes in this howto. At least, not yet. Who knows, maybe my

boss will force me to figure that part out as well  :Wink: 

Installation

First we need to install the software. The software I used was Hylafax and it turned out

to work pretty well.

```

emerge hylafax

```

You might want to turn off some dependacies in package.provided but I leave that to

everyone for himself. You must however have these packages installed:

```

app-text/ghostscript

media-libs/tiff

```

I think portage will have allready take care of that during the installation of Hylafax. But

if it didn't you need to install them as well.

Configuration

Configuring Hylafax is easy because it comes with handy detection and installation scripts.

To install a modem. We now simply run

```

faxsetup

```

This script will ask questions and detect your modem. Read the questions and answer

them as you see fit. Every situation is unique, so I can't help you with this part. I can

however point out a pitfall The serial port you are using is ttyS0, 1,2,etc.

Once you enter something else, the script won't work. It took me lots of time to find

out it didn't work because I was using ttys0 instead of ttyS0. Minor difference, big

problems!  :Wink: 

In most cases its fine to use the default options. I did however use dialrules.europe

instead of dialrules

Now we need to edit /etc/inittab:

```

nano -w /etc/inittab

```

paste the following line.

```

S0:23:respawn:/usr/sbin/faxgetty /dev/ttyS0

```

and run:

```

init q

```

Now, check /var/spool/fax/etc/setup.cache to make sure the following are set

to 'yes' and not '1':

```

FAXQ_SERVER='yes'

HFAXD_SERVER='yes'

```

Now we need to make sure Hylafax will start automaticly when the server boots.

```

rc-update hylafax default

```

After that we need to start it:

```

/etc/init.d/hylafax start

```

Optionally you can setup a cronjob to clean up the queue:

```

nano -w /etc/crontab

```

and paste

```

0   *    *    *    *    /usr/local/sbin/faxqclean

25   23    *    *    *  sh /usr/local/sbin/faxcron | mail FaxMaster

```

And restart/refresh you cron-daemon.

Making it work!

Now that hylafax is running, the next step is to figure out how to make it do something.

You use the following commands to control hylafax:

sendfax, a program to submit outgoing facsimile; Your users can use numeric or

alpha characters, e.g. 1-800-GotMilk.

sendpage, a program to submit alpha-numeric messages to SNPP servers

faxstat, a program obtain status information about HylaFAX servers;

faxrm, a program to remove jobs and documents

faxalter, a program to change parameters of queued jobs

fax2ps, a program that converts facsimile documents to POSTSCRIPT so that

they may be viewed with a POSTSCRIPT previewer or printed on a POSTSCRIPT printer

Change /usr/local/lib/fax/faxcover.ps to create a site-specific cover sheet. Most of the

important files are in /usr/local/lib/fax/ and /var/spool/fax/.

Now its time to put your fax to the test and see if it's really doing something. Put some

text into some file.

```

nano -w some_file

```

and put some text in there. You con find some quotes, to confuse some people, here  :Wink: 

Now send the file to a fax. I used our own fax, but it can be any fax!!  :Very Happy: 

```

sendfax -vv -d 12345 /path/to/some_file

```

where 12345 is the faxnumber of the fax you intend to send the fax to.

You can check the status of the job with faxstat.

Hooking up the windows clients

To make the windows users able to use your faxserver, you need a small piece of software

that is able to communicate with the faxserver. You can download it here

I used whfc-1.0.9_setup_en.exe and that seems to work fine.

After you installed whfcfax you need te configure it. But before we do that, we need

to edit a small file on the faxserver. Edit /var/spool/fax/etc/hosts.hfaxd.

```

nano -w /var/spool/fax/etc/hosts.hfaxd

```

and add the following line:

```

fax@192.168.0

```

This will allow access to the user fax from any machine in the 192.168.0.xxx IP-range.

It's also a good idea to actually give the user 'fax' a valid password because an

empty field is not accepted.

Security can be more thightened but I didn't bother with that. More info about this

subject can be found in the manpage:

```

man hosts.hfaxd

```

Now the windows client(s) have access to the faxserver, it's time to configure whfcfax.

The host is the IP or DNS-name of your faxserver. Enter the correct loginname ('fax', or

anything else you intended to use)

It might be a good idea to close and restart whfcfax to make a good connection with the

faxserver after you configured everything.

Finally we need a "printer" where the faxes will be send to. Install a new local printer.

As printer-port use the whfc-port. This port is created during the installation of whfcfax.

As printerdriver use Apple laserwriter 16/600 PS

Now your good to go. Make sure whfcfax is running to intercept any faxes. Open a new

word-document and put some funny stuff in there to confuse the people using the

old faxmachine of you company. You can still find some cool quotes here  :Wink: 

Now "print" the document to the "fax-printer" you just created. Whfcfax will pop-up and

ask for a faxnumber. Enter the faxnumber of your companies fax and "print" the stuff.

Run to the fax and wait for you fax to come out. If it does, your done!  :Very Happy: 

Happy faxing!

sources:

http://entropy.brneurosci.org/linuxsetup24.html

http://linux.cudeso.be/linuxdoc/hylafax.php

http://www.tldp.org/linuxfocus/English/March2001/article196.shtml

Thanks to some incredible help from various people on this forum. Thanks guys!  :Very Happy: 

----------

## Pol

Hello everyone,

I'm trying to setup a fax server where I work and I followed your tutorial.

I'm encoutering some problems, can you help me to see what's wrong ?

I've posted relevant files for hylafax...

The problem is that it can't receive and send any fax...

Here are my configuration files...

/var/spool/fax/etc/config.ttyS0

```

#

# Configuration for a Rockwell RC288DPi-based Class 1 modem.

#    Hayes Optima 28800      firmware rev ???

#    Microcom DeskPorte 28.8S   firmware rev V1.100K-V34_DS

#    PPI PM288FXMT      firmware rev 1.57

#

# Note that the modem does not lock the line rate for fax

# receive (at least not the PM288FXMT); but not sure whether

# current flow control settings are maintained or if it

# switches to XON/XOFF (testing host was too fast to see).

#

#

CountryCode:      32

AreaCode:      65

FAXNumber:      601234

LongDistancePrefix:   0

InternationalPrefix:   00

DialStringRules:   etc/dialrules.europe

ServerTracing:      1

SessionTracing:      11

RecvFileMode:      0666

LogFileMode:      0600

DeviceMode:      0666

RingsBeforeAnswer:   1

SpeakerVolume:      high

GettyArgs:      "-h %l dx_%s"

LocalIdentifier:   "NothingSetup"

LogFacility:      mail

TagLineFont:      etc/lutRS18.pcf

TagLineFormat:      "From %%l|%c|Page %%P of %%T"

MaxRecvPages:      25

#

#

# Modem-related stuff: should reflect modem command interface

# and hardware connection/cabling (e.g. flow control).

#

ModemType:      Class1      # use this to supply a hint

ModemRate:      38400      # rate for DCE-DTE communication

ModemFlowControl:   rtscts      # default

#

ModemNoFlowCmd:      AT&K0      # setup no flow control

ModemHardFlowCmd:   AT&K3      # setup hardware flow control

ModemSoftFlowCmd:   AT&K4      # setup software flow control

ModemSetupDTRCmd:   AT&D2      # setup so DTR drop resets modem

ModemSetupDCDCmd:   AT&C1      # setup so DCD reflects carrier (or not)

#

ModemMfrQueryCmd:   !Rockwell

ModemModelQueryCmd:   !RC288DPi

ModemRevQueryCmd:   ATI3      # product information

#

ModemDialCmd:      ATDT%s      # T for tone dialing

```

/var/spool/fax/etc/config

```

LogFacility:      mail

CountryCode:      32

AreaCode:      65

LongDistancePrefix:   0

InternationalPrefix:   00

DialStringRules:   etc/dialrules.europe

ServerTracing:      1

```

/usr/lib/fax/hfaxd.conf

```

#

# HylaFAX Client-Server Protocol Configuration.

#

# Consult hfaxd(1M) for information on the contents

# of this file.  Note that pathnames specified in

# this file are relative to the root of the spooling

# area because hfaxd uses chroot to confine client

# accesses to the server's filesystem.

#

LogFacility:      mail      # syslog facility (want this 1st))

ServerTracing:      0x001      # just server operation

#IdleTimeout:      900      # initial client idle timeout (secs)

#MaxIdleTimeout:   7200      # max client idle timeout (secs)

#MaxLoginAttempts:   5      # max # login attempts before disconnect

#MaxAdminAttempts:   5      # max # admin attempts before disconnect

#MaxConsecutiveBadCmds:   10      # max # invalid cmds before disconnect

#FaxContact:      FaxMaster   # who gets questions/complaints

#AdminGroup:      faxadmin   # which user group is admin (when using PAM)

#UserAccessFile:   "/etc/hosts.hfaxd"   # user+host access control file

#ShutdownFile:      "/etc/shutdown"   # server shutdown control filename

#XferLogFile:      "/etc/clientlog"   # for logging client file transfers

#FaxQFIFOName:      "/FIFO"      # FIFO name for talking to faxq process

#

# The default format used to return job status queries.

# Note that clients can override this with JOBFMT.

#

JobFmt:      "%-3j %3i %1a %6.6o %-12.12e %5P %5D %7z %.25s"

#

# The default format used to return recvq status queries.

# Note that clients can override this with RCVFMT.

#

RcvFmt:      "%-7m %4p%1z %-8.8o %14.14s %7t %f"

#

# The default format used to return modem status queries.

# Note that clients can override this with MODEMFMT.

#

ModemFmt:      "Modem %m (%n): %s"

#

# The default format used to return file-oriented

# directory listings.

# Note that clients can override this with FILEFMT.

#

FileFmt:      "%-7p %3l %8o %8s %-12.12m %.48f"

#

# SNPP-specific parameters.

#

#MaxMsgLength:      128      # max pager message length

#PagerIDMapFile:   "/etc/pagermap"   # file with pager ID mapping rules

#

# The following three items define the mapping from

# SNPP service level to job scheduling priority and

# expiration (kill) time.  Each item should have a

# list of 12 values that define the mapping for service

# levels 0 through 11 (first item is level 0, second

# item level 1, ... etc.).

#

#PriorityMap:      "63 127 127 127 127 127 127  127  127  127  127  127"

#RetryTimeMap:      "30  60  60 180   0   0   0    0    0    0    0    0"

#KillTimeMap:      " 5   5   5  15  60 240 720 1440 1440 1440 1440 1440"

```

/var/spool/fax/etc/setup.cache

```

# Warning, this file was automatically generated by faxsetup

# on Mon Oct 17 09:43:33 CEST 2005 for root

AWK='/bin/gawk'

BIN='/usr/bin'

CAT='/bin/cat'

CHGRP='/bin/chgrp'

CHMOD='/bin/chmod'

CHOWN='/bin/chown'

CP='/bin/cp'

DPSRIP='/var/spool/fax/bin/ps2fax'

ECHO='/bin/echo'

ENCODING='base64'

FAXQ_SERVER='yes'

FONTPATH='/usr/share/ghostscript/7.07/lib:/usr/share/fonts/default/ghostscript/:/usr/share/fonts:/usr/share/fonts/ttf/zh_TW

:/usr/share/fonts/ttf/zh_CN:/usr/share/fonts/arphicfonts:/usr/share/fonts/ttf/korean/baekmuk:/usr/share/fonts/baekmuk-fonts

:/usr/X11R6/lib/X11/fonts/truetype:/usr/share/fonts/kochi-substitute'

FUSER='/bin/fuser'

GREP='/bin/grep'

GSRIP='/usr/bin/gs'

HFAXD_OLD_PROTOCOL='no'

HFAXD_SERVER='yes'

HFAXD_SNPP_SERVER='no'

IMPRIP=''

LIBDATA='/usr/lib/fax'

LIBEXEC='/usr/sbin'

LN='/bin/ln'

MANDIR='/usr/share/man'

MIMENCODE='/usr/bin/mimencode'

MKFIFO='/bin/mkfifo'

MV='/bin/mv'

PATH='/usr/sbin:/bin:/usr/bin:/etc:/usr/local/bin'

PATHEGETTY='/bin/false'

PATHGETTY='/sbin/agetty'

PATHVGETTY='/bin/false'

PSPACKAGE='gs'

RM='/bin/rm'

SBIN='/usr/sbin'

SCRIPT_SH='/bin/bash'

SED='/bin/sed'

SENDMAIL='/usr/sbin/sendmail'

SPOOL='/var/spool/fax'

SYSVINIT=''

TARGET='i686-pc-linux-gnu'

TIFF2PDF='/usr/bin/tiff2pdf'

TIFFBIN='/usr/bin'

TTYCMD='/bin/tty'

UUCP_LOCKDIR='/var/lock'

UUCP_LOCKTYPE='ascii'

UUENCODE='/usr/bin/uuencode'

```

Fax daemons started:

```

fujitsu1 ~ # ps ax | grep -i "fax"

23141 ?        Ss     0:00 /usr/sbin/faxgetty /dev/ttyS0

10347 ?        Ss     0:00 /usr/sbin/faxq

10349 ?        Ss     0:00 /usr/sbin/hfaxd -i hylafax

10354 pts/9    R+     0:00 grep -i fax

fujitsu1 ~ #                                                        

```

Log:

```

Oct 17 10:58:32 fujitsu1 FaxQueuer[10347]: QUIT

Oct 17 10:58:34 fujitsu1 FaxQueuer[10489]: HylaFAX (tm) Version 4.2.2

Oct 17 10:58:34 fujitsu1 FaxQueuer[10489]: Copyright (c) 1990-1996 Sam Leffler

Oct 17 10:58:34 fujitsu1 FaxQueuer[10489]: Copyright (c) 1991-1996 Silicon Graphics, Inc.

Oct 17 10:58:34 fujitsu1 FaxGetty[23141]: HELLO

Oct 17 10:58:34 fujitsu1 HylaFAX[10491]: HylaFAX INET Protocol Server: restarted.

```

Log of a fax reception:

```

Oct 17 10:41:22.99: [23141]: SESSION BEGIN 000000006 3265601234

Oct 17 10:41:22.99: [23141]: HylaFAX (tm) Version 4.2.2

Oct 17 10:41:22.99: [23141]: <-- [4:ATA\r]

Oct 17 10:41:28.30: [23141]: --> [7:CONNECT]

Oct 17 10:41:28.30: [23141]: ANSWER: FAX CONNECTION  DEVICE '/dev/ttyS0'

Oct 17 10:41:28.30: [23141]: RECV FAX: begin

Oct 17 10:41:28.32: [23141]: <-- data [32]

Oct 17 10:41:28.32: [23141]: <-- data [2]

Oct 17 10:41:30.38: [23141]: --> [7:CONNECT]

Oct 17 10:41:30.38: [23141]: <-- data [23]

Oct 17 10:41:30.38: [23141]: <-- data [2]

Oct 17 10:41:31.19: [23141]: --> [7:CONNECT]

Oct 17 10:41:31.19: [23141]: <-- data [10]

Oct 17 10:41:31.19: [23141]: <-- data [2]

Oct 17 10:41:31.72: [23141]: --> [2:OK]

Oct 17 10:41:31.72: [23141]: <-- [9:AT+FRH=3\r]

Oct 17 10:41:32.58: [23141]: --> [7:CONNECT]

Oct 17 10:41:37.58: [23141]: <-- data [1]

Oct 17 10:41:37.63: [23141]: --> [2:]

Oct 17 10:41:37.63: [23141]: --> [2:OK]

Oct 17 10:41:37.63: [23141]: DELAY 1500 ms

Oct 17 10:41:39.13: [23141]: <-- [9:AT+FTH=3\r]

Oct 17 10:41:39.16: [23141]: --> [7:CONNECT]

Oct 17 10:41:39.16: [23141]: <-- data [32]

Oct 17 10:41:39.16: [23141]: <-- data [2]

Oct 17 10:41:41.03: [23141]: --> [7:CONNECT]

Oct 17 10:41:41.03: [23141]: <-- data [23]

Oct 17 10:41:41.04: [23141]: <-- data [2]

Oct 17 10:41:41.84: [23141]: --> [7:CONNECT]

Oct 17 10:41:41.84: [23141]: <-- data [10]

Oct 17 10:41:41.84: [23141]: <-- data [2]

Oct 17 10:41:42.33: [23141]: --> [2:OK]

Oct 17 10:41:42.33: [23141]: <-- [9:AT+FRH=3\r]

Oct 17 10:41:43.16: [23141]: --> [7:CONNECT]

Oct 17 10:41:48.16: [23141]: <-- data [1]

Oct 17 10:41:48.24: [23141]: --> [2:]

Oct 17 10:41:48.24: [23141]: --> [2:OK]

Oct 17 10:41:48.24: [23141]: DELAY 1500 ms

Oct 17 10:41:49.74: [23141]: <-- [9:AT+FTH=3\r]

Oct 17 10:41:49.77: [23141]: --> [7:CONNECT]

Oct 17 10:41:49.77: [23141]: <-- data [32]

Oct 17 10:41:49.77: [23141]: <-- data [2]

Oct 17 10:41:51.65: [23141]: --> [7:CONNECT]

Oct 17 10:41:51.65: [23141]: <-- data [23]

Oct 17 10:41:51.65: [23141]: <-- data [2]

Oct 17 10:41:52.45: [23141]: --> [7:CONNECT]

Oct 17 10:41:52.45: [23141]: <-- data [10]

Oct 17 10:41:52.45: [23141]: <-- data [2]

Oct 17 10:41:52.95: [23141]: --> [2:OK]

Oct 17 10:41:52.95: [23141]: <-- [9:AT+FRH=3\r]

Oct 17 10:41:53.78: [23141]: --> [7:CONNECT]

Oct 17 10:41:58.78: [23141]: <-- data [1]

Oct 17 10:41:58.85: [23141]: --> [2:]

Oct 17 10:41:58.85: [23141]: --> [2:OK]

Oct 17 10:41:58.85: [23141]: DELAY 1500 ms

Oct 17 10:42:00.35: [23141]: <-- [9:AT+FTH=3\r]

Oct 17 10:42:00.39: [23141]: --> [7:CONNECT]

Oct 17 10:42:00.39: [23141]: <-- data [32]

Oct 17 10:42:00.39: [23141]: <-- data [2]

Oct 17 10:42:02.26: [23141]: --> [7:CONNECT]

Oct 17 10:42:02.26: [23141]: <-- data [23]

Oct 17 10:42:02.26: [23141]: <-- data [2]

Oct 17 10:42:03.06: [23141]: --> [7:CONNECT]

Oct 17 10:42:03.06: [23141]: <-- data [10]

Oct 17 10:42:03.06: [23141]: <-- data [2]

Oct 17 10:42:03.56: [23141]: --> [2:OK]

Oct 17 10:42:03.56: [23141]: <-- [9:AT+FRH=3\r]

Oct 17 10:42:04.36: [23141]: --> [7:CONNECT]

Oct 17 10:42:09.36: [23141]: <-- data [1]

Oct 17 10:42:09.46: [23141]: --> [2:]

Oct 17 10:42:09.46: [23141]: --> [2:OK]

Oct 17 10:42:09.46: [23141]: RECV FAX: No answer (T.30 T1 timeout)

Oct 17 10:42:09.46: [23141]: RECV FAX: end

Oct 17 10:42:09.46: [23141]: SESSION END

```

Versions:

Gentoo:

```

Gentoo Base System version 1.12.0_pre9

Portage 2.0.53_rc5 (default-linux/x86/2005.1, gcc-3.4.4, glibc-2.3.5-r2, 2.6.13-gentoo-r3 i686)

=================================================================

System uname: 2.6.13-gentoo-r3 i686 Intel(R) Pentium(R) 4 CPU 2.93GHz

dev-lang/python:     2.3.5, 2.4.2

sys-apps/sandbox:    1.2.13

sys-devel/autoconf:  2.13, 2.59-r7

sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1

sys-devel/binutils:  2.16.1

sys-devel/libtool:   1.5.20

virtual/os-headers:  2.6.11-r2

ACCEPT_KEYWORDS="x86 ~x86"

AUTOCLEAN="yes"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-O2 -march=i686 -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.4/env /usr/kde/3.4/share/config /usr/kde/3.4/shutdown /usr/kde/3/share/config /usr/lib/X11/xkb /usr/lib/fax /usr/lib/mozilla/defaults/pref /usr/share/config /var/qmail/control /var/spool/fax/etc"

CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/texmf/web2c /etc/env.d"

CXXFLAGS="-O2 -march=i686 -fomit-frame-pointer"

DISTDIR="/usr/portage/distfiles"

FEATURES="autoconfig ccache digest distlocks fixpackages sandbox sfperms strict"

GENTOO_MIRRORS="ftp://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo"

LINGUAS="fr"

MAKEOPTS="-j2"

PKGDIR="/usr/portage/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY="/usr/local/portage"

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

USE="x86 7zip X acl alsa apache2 apm arts authdaemond automount avi bash-completion berkdb bitmap-fonts bluetooth browserplugin bzip2 calendar cdparanoia cdr chroot cli courier crypt cups curl cyrus dba dbm dbus dvd dvdr dvdread eds effects emboss encode extras fam foomaticdb fortran ftp gd gdbm geoip gif gimp gimpprint gnutls gpm gtk gtk2 hal iconv imagemagick imap imlib ipv6 java javascript jpeg kde kerberos ldap libg++ libwww lm_sensors mad mailbox maildir mcal mikmod mmx mmx2 motif mozilla moznocompose moznoirc moznomail mp3 mpeg mpeg4 mplayer msn musicbrainz mysql ncurses netpbm nls nptl nptlonly nsplugin ogg oggvorbis opengl pam pcre pda pdflib pear perl php plugin png postfix postgres python qt quicktime readline samba sasl scanner sensord session sockets spell sqlite sse sse2 ssl svg svgz tcltk tcpd tetex tiff truetype truetype-fonts type1-fonts usb v4l v4l2 vorbis win32codecs winbind wmf wxwindows xinerama xml2 xmlrpc xsl xv xvid zeroconf zip zlib linguas_fr userland_GNU kernel_linux elibc_glibc"

Unset:  ASFLAGS, CTARGET, LANG, LC_ALL, LDFLAGS

```

Hylafax:

```

Oct 17 10:58:34 fujitsu1 FaxQueuer[10489]: HylaFAX (tm) Version 4.2.2

```

My modem settings:

```

fujitsu1 ~ # probemodem

Serial port that modem is connected to []? ttyS0

Now we are going to probe the tty port.  This takes a few seconds,

so be patient.  Note that if you do not have the modem cabled to

the port, or the modem is turned off, this may hang (just go and

cable up the modem or turn it on, or whatever).

Probing for best speed to talk to modem: 38400 OK.

This looks like a Class 1 and 2 modem.

ATI0    RESULT = "OK"   RESPONSE = "28800"

ATI1    RESULT = "OK"   RESPONSE = "255"

ATI2    RESULT = "OK"   RESPONSE = "OK"

ATI3    RESULT = "OK"   RESPONSE = "V1.300-13-V34_DS"

ATI4    RESULT = "OK"   RESPONSE = "a007040CA879CE02F"

ATI5    RESULT = "OK"   RESPONSE = "(c) 1993,94,95 Supra Corporation"

ATI6    RESULT = "OK"   RESPONSE = "022 US  011"

ATI7    RESULT = "OK"   RESPONSE = "RC288DPi Rev 05BA"

ATI8    RESULT = "ERROR"        RESPONSE = "ERROR"

ATI9    RESULT = "OK"   RESPONSE = "($SUP1200\MODEM\SupraFAXModem 288B1)"

Class 1 stuff...

AT+FCLASS=?     RESULT = "OK"   RESPONSE = "0,1,2"

AT+FCLASS?      RESULT = "OK"   RESPONSE = "1"

AT+FCLASS=0     RESULT = "OK"   RESPONSE = "OK"

AT+FCLASS=1     RESULT = "OK"   RESPONSE = "OK"

AT+FCLASS?      RESULT = "OK"   RESPONSE = "1"

AT+FJUNK=?      RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FJUNK?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FAA=?        RESULT = "OK"   RESPONSE = "0-4"

AT+FAA? RESULT = "OK"   RESPONSE = "0"

AT+FAE=?        RESULT = "OK"   RESPONSE = "0-4"

AT+FAE? RESULT = "OK"   RESPONSE = "0"

AT+FTH=?        RESULT = "OK"   RESPONSE = "3,24,48,72,73,74,96,97,98,121,122,145,146"

AT+FRH=?        RESULT = "OK"   RESPONSE = "3,24,48,72,73,74,96,97,98,121,122,145,146"

AT+FTM=?        RESULT = "OK"   RESPONSE = "3,24,48,72,73,74,96,97,98,121,122,145,146"

AT+FRM=?        RESULT = "OK"   RESPONSE = "3,24,48,72,73,74,96,97,98,121,122,145,146"

AT+FTS=?        RESULT = "OK"   RESPONSE = "0-255"

AT+FRS=?        RESULT = "OK"   RESPONSE = "0-255"

Class 2 stuff...

AT+FCLASS=?     RESULT = "OK"   RESPONSE = "0,1,2"

AT+FCLASS?      RESULT = "OK"   RESPONSE = "1"

AT+FCLASS=0     RESULT = "OK"   RESPONSE = "OK"

AT+FCLASS=1     RESULT = "OK"   RESPONSE = "OK"

AT+FCLASS=2     RESULT = "OK"   RESPONSE = "OK"

AT+FCLASS?      RESULT = "OK"   RESPONSE = "1"

AT+FJUNK=?      RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FJUNK?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FAA=?        RESULT = "OK"   RESPONSE = "0-4"

AT+FAA? RESULT = "OK"   RESPONSE = "0"

AT+FAXERR=?     RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FAXERR?      RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FBADLIN=?    RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FBADLIN?     RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FBADMUL=?    RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FBADMUL?     RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FBOR=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FBOR?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FBUF=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FBUF?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FBUG=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FBUG?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FCIG=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FCIG?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FCQ=?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FCQ? RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FCR=?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FCR? RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FTBC=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FTBC?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FDCC=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FDCC?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FDCS=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FDCS?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FDIS=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FDIS?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FDT=?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FDT? RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FECM=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FECM?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FET=?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FET? RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FLID=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FLID?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FLNFC=?      RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FLNFC?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FLPL=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FLPL?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FMDL?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FMFR?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FMINSP=?     RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FMINSP?      RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FPHCTO=?     RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FPHCTO?      RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FPTS=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FPTS?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FRBC=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FRBC?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FREL=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FREL?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FREV?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FSPL=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FSPL?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FTBC=?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FTBC?        RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FVRFC=?      RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FVRFC?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FWDFC=?      RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FWDFC?       RESULT = "ERROR"        RESPONSE = "ERROR"

AT+FK=? RESULT = "ERROR"        RESPONSE = "ERROR"

```

I hope I didn't forget a file...

Here again an error I get with sendfax:

```

fujitsu1 etc # sendfax -vv -d 601231 /fax.txt

sendfax: no files to send

usage: sendfax [options] <fax-number> <page(s) in g3-format>

        valid options: -p, -v, -l <device(s)>, -x <debug>, -n, -S, -r, -D <x>

```

isn't it weird ?

All help is welcome  :Wink: 

Thanks

----------

## bendy

Pol - I don't have the answer to your problem, but I set up a Hylafax server using the documentation on the Hylafax web site: www.hylafax.org.  You could try again following those instructions.  If you still have problems then try the Hylafax mailing list - it is low traffic and the Hylafax author is good at responding in person to help users.

On another note, I use Hylafax on our network with samba and salsafax.  This works really well as the fax server appears as a printer on your windows network, and salsafax will actually read the fax number in your document if you use the right format.

----------

## tkhobbes

Great - thanks a lot for this! I tried the fax-howto on gentoo-wiki, but it is using efax and I never got it to work correctly...

I just thought of bringing this page to the wiki itself...  :Smile: 

----------

## tkhobbes

Hi there

Everything works fine - except that hylafax now tries to answer every phone we get.  :Smile: 

Since I do not want to receive faxes, I want to completely turn off this feature - does someone know how to do this (i. e. the modem shall not answer any incoming call)?

thanks

thomas

----------

## Casshan

You need to swtich from faxgetty to mgetty that monitors the serial port ttySX (I think)

----------

## tkhobbes

Yes - I just deleted the faxgetty entry in inittab...  :Smile: 

----------

## Pol

hello,

I can now send fax with 'sendfax' but it doesn't work with root but in user it is ok...

I get another problem now, it doesn't send anything and receive anything...:

When I receive fax, the modem works but I receive no one fax...

Here are the log when the modem try to send a text file:

nov 28 11:40:12.70: [  762]: SESSION BEGIN 000000043 65675605

nov 28 11:40:12.70: [  762]: HylaFAX (tm) Version 4.2.2

nov 28 11:40:12.71: [  762]: SEND FAX: JOB 17 DEST 0065675605 COMMID 000000043 DEVICE '/dev/ttyS0'

nov 28 11:40:12.71: [  762]: <-- [12:AT+FCLASS=1\r]

nov 28 11:40:12.72: [  762]: --> [2:OK]

nov 28 11:40:12.72: [  762]: DIAL 0065675605

nov 28 11:40:12.72: [  762]: <-- [15:ATDT0065675605\r]

nov 28 11:40:27.14: [  762]: --> [7:CONNECT]

nov 28 11:40:32.14: [  762]: <-- data [1]

nov 28 11:40:32.24: [  762]: --> [2:]

nov 28 11:40:32.24: [  762]: --> [2:OK]

nov 28 11:40:32.24: [  762]: DELAY 200 ms

nov 28 11:40:32.44: [  762]: <-- [9:AT+FRH=3\r]

nov 28 11:40:33.81: [  762]: --> [7:CONNECT]

nov 28 11:40:38.81: [  762]: <-- data [1]

nov 28 11:40:38.89: [  762]: --> [2:]

nov 28 11:40:38.89: [  762]: --> [2:OK]

nov 28 11:40:38.89: [  762]: DELAY 200 ms

nov 28 11:40:39.09: [  762]: <-- [9:AT+FRH=3\r]

nov 28 11:40:40.50: [  762]: --> [7:CONNECT]

nov 28 11:40:45.51: [  762]: <-- data [1]

nov 28 11:40:45.61: [  762]: --> [2:]

nov 28 11:40:45.61: [  762]: --> [2:OK]

nov 28 11:40:45.61: [  762]: DELAY 200 ms

nov 28 11:40:45.81: [  762]: <-- [9:AT+FRH=3\r]

nov 28 11:40:47.20: [  762]: --> [7:CONNECT]

nov 28 11:40:52.20: [  762]: <-- data [1]

nov 28 11:40:52.25: [  762]: --> [2:]

nov 28 11:40:52.25: [  762]: --> [2:OK]

nov 28 11:40:52.25: [  762]: DELAY 200 ms

nov 28 11:40:52.45: [  762]: <-- [9:AT+FRH=3\r]

nov 28 11:40:53.90: [  762]: --> [7:CONNECT]

nov 28 11:40:58.90: [  762]: <-- data [1]

nov 28 11:40:58.98: [  762]: --> [2:]

nov 28 11:40:58.98: [  762]: --> [2:OK]

nov 28 11:40:58.98: [  762]: DELAY 200 ms

nov 28 11:40:59.18: [  762]: <-- [9:AT+FRH=3\r]

nov 28 11:41:00.59: [  762]: --> [7:CONNECT]

nov 28 11:41:05.59: [  762]: <-- data [1]

nov 28 11:41:05.70: [  762]: --> [2:]

nov 28 11:41:05.70: [  762]: --> [2:OK]

nov 28 11:41:05.70: [  762]: DELAY 200 ms

nov 28 11:41:05.90: [  762]: <-- [9:AT+FRH=3\r]

nov 28 11:41:07.26: [  762]: --> [7:CONNECT]

nov 28 11:41:12.26: [  762]: <-- data [1]

nov 28 11:41:12.34: [  762]: --> [2:]

nov 28 11:41:12.34: [  762]: --> [2:OK]

nov 28 11:41:12.34: [  762]: DELAY 200 ms

nov 28 11:41:12.54: [  762]: No answer (T.30 T1 timeout)

nov 28 11:41:12.54: [  762]: SEND FAILED: JOB 17 DEST 0065675605 ERR No answer (T.30 T1 timeout)

nov 28 11:41:12.54: [  762]: <-- [9:AT+FTH=3\r]

nov 28 11:41:12.59: [  762]: --> [7:CONNECT]

nov 28 11:41:12.59: [  762]: <-- data [3]

nov 28 11:41:12.59: [  762]: <-- data [2]

nov 28 11:41:13.71: [  762]: --> [2:OK]

nov 28 11:41:13.71: [  762]: <-- [5:ATH0\r]

nov 28 11:41:14.42: [  762]: --> [2:OK]

nov 28 11:41:14.42: [  762]: SESSION END

And when I receive one:

Nov 28 10:59:52.89: [28671]: SESSION BEGIN 000000030 3265601237

Nov 28 10:59:52.89: [28671]: HylaFAX (tm) Version 4.2.2

Nov 28 10:59:52.89: [28671]: <-- [4:ATA\r]

Nov 28 10:59:58.25: [28671]: --> [7:CONNECT]

Nov 28 10:59:58.25: [28671]: ANSWER: FAX CONNECTION  DEVICE '/dev/ttyS0'

Nov 28 10:59:58.25: [28671]: RECV FAX: begin

Nov 28 10:59:58.25: [28671]: <-- data [32]

Nov 28 10:59:58.25: [28671]: <-- data [2]

Nov 28 11:00:00.33: [28671]: --> [7:CONNECT]

Nov 28 11:00:00.33: [28671]: <-- data [23]

Nov 28 11:00:00.33: [28671]: <-- data [2]

Nov 28 11:00:01.13: [28671]: --> [7:CONNECT]

Nov 28 11:00:01.13: [28671]: <-- data [10]

Nov 28 11:00:01.13: [28671]: <-- data [2]

Nov 28 11:00:01.67: [28671]: --> [2:OK]

Nov 28 11:00:01.67: [28671]: <-- [9:AT+FRH=3\r]

Nov 28 11:00:02.25: [28671]: --> [7:CONNECT]

Nov 28 11:00:07.25: [28671]: <-- data [1]

Nov 28 11:00:07.35: [28671]: --> [2:]

Nov 28 11:00:07.35: [28671]: --> [2:OK]

Nov 28 11:00:07.35: [28671]: DELAY 1500 ms

Nov 28 11:00:08.85: [28671]: <-- [9:AT+FTH=3\r]

Nov 28 11:00:08.89: [28671]: --> [7:CONNECT]

Nov 28 11:00:08.89: [28671]: <-- data [32]

Nov 28 11:00:08.89: [28671]: <-- data [2]

Nov 28 11:00:10.77: [28671]: --> [7:CONNECT]

Nov 28 11:00:10.77: [28671]: <-- data [23]

Nov 28 11:00:10.77: [28671]: <-- data [2]

Nov 28 11:00:11.57: [28671]: --> [7:CONNECT]

Nov 28 11:00:11.57: [28671]: <-- data [10]

Nov 28 11:00:11.57: [28671]: <-- data [2]

Nov 28 11:00:12.09: [28671]: --> [2:OK]

Nov 28 11:00:12.09: [28671]: <-- [9:AT+FRH=3\r]

Nov 28 11:00:12.66: [28671]: --> [7:CONNECT]

Nov 28 11:00:17.66: [28671]: <-- data [1]

Nov 28 11:00:17.73: [28671]: --> [2:]

Nov 28 11:00:17.73: [28671]: --> [2:OK]

Nov 28 11:00:17.73: [28671]: DELAY 1500 ms

Nov 28 11:00:19.23: [28671]: <-- [9:AT+FTH=3\r]

Nov 28 11:00:19.27: [28671]: --> [7:CONNECT]

Nov 28 11:00:19.27: [28671]: <-- data [32]

Nov 28 11:00:19.27: [28671]: <-- data [2]

Nov 28 11:00:21.14: [28671]: --> [7:CONNECT]

Nov 28 11:00:21.14: [28671]: <-- data [23]

Nov 28 11:00:21.14: [28671]: <-- data [2]

Nov 28 11:00:21.94: [28671]: --> [7:CONNECT]

Nov 28 11:00:21.94: [28671]: <-- data [10]

Nov 28 11:00:21.94: [28671]: <-- data [2]

Nov 28 11:00:22.47: [28671]: --> [2:OK]

Nov 28 11:00:22.47: [28671]: <-- [9:AT+FRH=3\r]

Nov 28 11:00:23.04: [28671]: --> [7:CONNECT]

Nov 28 11:00:28.04: [28671]: <-- data [1]

Nov 28 11:00:28.10: [28671]: --> [2:]

Nov 28 11:00:28.10: [28671]: --> [2:OK]

Nov 28 11:00:28.10: [28671]: DELAY 1500 ms

Nov 28 11:00:29.60: [28671]: <-- [9:AT+FTH=3\r]

Nov 28 11:00:29.64: [28671]: --> [7:CONNECT]

Nov 28 11:00:29.64: [28671]: <-- data [32]

Nov 28 11:00:29.64: [28671]: <-- data [2]

Nov 28 11:00:31.51: [28671]: --> [7:CONNECT]

Nov 28 11:00:31.51: [28671]: <-- data [23]

Nov 28 11:00:31.51: [28671]: <-- data [2]

Nov 28 11:00:32.31: [28671]: --> [7:CONNECT]

Nov 28 11:00:32.31: [28671]: <-- data [10]

Nov 28 11:00:32.31: [28671]: <-- data [2]

Nov 28 11:00:32.84: [28671]: --> [2:OK]

Nov 28 11:00:32.84: [28671]: <-- [9:AT+FRH=3\r]

Nov 28 11:00:33.41: [28671]: --> [7:CONNECT]

Nov 28 11:00:38.41: [28671]: <-- data [1]

Nov 28 11:00:38.47: [28671]: --> [2:]

Nov 28 11:00:38.47: [28671]: --> [2:OK]

Nov 28 11:00:38.47: [28671]: RECV FAX: No answer (T.30 T1 timeout)

Nov 28 11:00:38.47: [28671]: RECV FAX: end

Nov 28 11:00:38.47: [28671]: SESSION END

If you can help me with that modem and tell me if it is me or a hylafax config problem, that would be really helpfull for me...

----------

## BlaaT0001

I've been configuring a email2fax gateway using Hylafax + Postfix. 

Everything quite straight forward except for sending out notifications for succesfull facsimiles.

I use Postfix to relay (transport) the mail for "@fax.domain.tld" to "faxmail". Faxmail (man faxmail) places the mail into the queue (faxq) and from there it's like any other fax.

When the fax failed to send for any reason, users received notifications of the failure. Users didn't receive any notifications when the fax was send succesfully. Of course this was desirable.

After looking at a whole lot of man pages and newsletters I figured out that an optional config file called "/usr/lib/fax/hyla.conf" was needed to get the notifications on successful facsimiles going. faxmail uses hyla.conf.

```
echo "Notify: done" > /usr/lib/fax/hyla.conf
```

Postfix configuration:

/etc/postfix/master.cf

Add the following lines:

```

fax     unix -          n       n       -       -       pipe

  flags= user=uucp argv=/usr/bin/faxmail -d ${user}

```

/etc/postfix/main.cf

```

transport_maps = hash:/etc/postfix/transport

fax_destination_recipient_limit = 1

```

more /etc/postfix/transport

```

fax.domain.tld fax:localhost     # Mail to @fax.domain.tld to fax in master.cf

```

```

postmap /etc/postfix/transport

postfix reload

```

Now any e-mail send to 1234567890@fax.domain.tld will be send as a fax to 1234567890, and users will receive notifications whether or not the operation suceeded.

My source: http://www.int-evry.fr/s2ia/user/procacci/mailfax/hylafax-admin3.html

Cheers,

BlaaT

----------

## jbiggs77

Is it possible to set this up so I can email the faxserver with a PDF attachment and have it fax the PDF along with any text in the email?

----------

## Sonic Lux

Is there any way to send email with attachments ?

I need an scriot wihich convert the email with the attachment to plaintext so faxmail (from hylfax) can use it.

Any idea ?

Sonic

----------

## Rukicc

There is small mistake:

```

rc-update add hylafax default

```

 *mariourk wrote:*   

> 
> 
> Now we need to make sure Hylafax will start automaticly when the server boots.
> 
> ```
> ...

 

----------

## Rukicc

Hi, 

How you solve your problem ?

User: Pol

Topic: HOWTO: Build your own faxserver

Post: post 2806048

Reason:

----------

## Earthwings

 *Rukicc wrote:*   

> Hi, 
> 
> How you solve your problem ?
> 
> User: Pol
> ...

 

Merged from the Report thread in GFF. Please use the "Reply" button to add posts to a thread, "Report this post" to report a post to a moderator.

----------

## 3pm

As concerned hylafax i have 3 hylafax servers running at this moment, but ALWAYS had a tons of problems. There are about 20% may be less faxes gets dropped in both directions. After going throught hylafax mailinglists and more- it seems to be for me, that to work properly hylafax needs not any modem, but exactly supported modem with a proper chipset. Also hylafax behaves badly on certain faxmachine models.

----------

## sonicbhoc

Thanks for the tutorial. I've told my dad that I can set my computer up as a fax and file server when I move out to college and have it running a rock-solid Linux install but the last time I tried hylafax it didn't work due to my dad cutting the fax line... so I never got a chance to test it. But now I have a definite guide on how to do it just in case. Thanks!   :Very Happy: 

----------

## nekromancer

just wanted to add my experience to this.

When installing hylafax for me I needed to also emerge taylor-uucp as well and setserial. Maybe some will get the same problem as me where hylafax could not detect the modem speed. Setserial configures the ports properly for that.

Secondly, BlaaT0001 posted a great reply. I followed his steps 1 by 1 and I got email to fax working in less than 10 minutes!

Thirdly, you all should think of installing hylafax+ 5.1.0 it uses the same codebase and the PDF attachments for emails work right out the box. To hack it in just modify the ebuild a bit and emerge it. I already submitted an ebuild to get added to portage, it may take a while to get into the tree.

These forums rock!  :Smile: 

----------

## maruscya

Hello Guys !!!

This it's very nice howto !!!

I'm looking for some information about sambafax / salsafax.  Can someone tell me where i found some information !

NB: Sorry about my bad english !

----------

