Go to the first, previous, next, last section, table of contents.


Receiving faxes

If everything has been set up properly, faxes will be received automatically. Obviously, mgetty has to be listening to the proper modem line. Then, if a fax arrives, mgetty will store it in the directory FAX_SPOOL_IN (or the directory configured in `mgetty.config', see section Runtime configuration for mgetty: `mgetty.config') and send a mail to MAIL_TO (defined in `policy.h').

The file name format is somewhat tricky (the reason behind it is that I have to create something unique without using mktemp(), because that would make it impossible to find out which pages belong to which fax). It is:

f<res><seq><line>[-<remote id>].<pagenr>

<res> is n or f, depending on the resolution of the fax. <seq> is a sequence number, 7 digits wide, somewhat related to the reception time. <line> are the last two letters of the tty device, e.g. `S1'. If the sending side specified a fax station id, it comes next, after a leading dash (all blanks are replaced by dashes). Finally, after a dot, you'll see the page number.

If you want to process incoming faxes automatically, for example, print them, re-send them to another fax, send them by mail to you when you're on vacation, you could use what I call "notify programs":

If you define FAX_NOTIFY_PROGRAM in `policy.h', mgetty will call this program (or shell script) when a fax has been completely received. It will be called with the following command line arguments:

FAX_NOTIFY_PROGRAM <hangup code> '<sender id>' <nr of pages> \
                   <file name page 1> <file name page 2> ...

<hangup code> is 0 if the receive was successful, non-zero otherwise. <sender id> is the fax identification string received from the other side. <file name page (i)> is the full path name for each received page.

A sample command line might look like this:

/usr/local/bin/new_fax 0 "+49 89 3243328" 1 /var/spool/fax/ff-01.a123

In addition, some environment variables are provide: CALLER_ID, CALLER_NAME, CALLED_ID (Caller ID and destination ISDN MSN, if available and supported by your modem), and DEVICE (the full name of the tty device, if you want to process faxes differently depending on the line they came in).

Such a "notify program" could print out the fax, convert it into a MIME metamail and send it away, display it in an X window (this a little bit tricky), or whatever. (A friend of mine uses it on his Linux box to call a program that will make the keyboard LEDs blink when a fax has arrived -- as you can see, maximum flexibility is possible).

I provide a few examples (printing on HP laserjet, mailing as gzip'ed, uuencoded pbm file, ...) in `samples/new_fax.*'

If you have the dialog shell tool, you can use the faxv program ("faxview") that I provide in `frontends/dialog/faxv' to browse through all faxes in the incoming spool directory, view them, print them, rename and move them, .... `faxv' is really more a sample program to show you how to do it, and you have to configure the X11 viewer and the printing program in the source code, but I use it for my faxes, and it works. Because of limitations on some operating systems, the list of faxes displayed is limited to the last 50 faxes received.


Go to the first, previous, next, last section, table of contents.