		  INSTALLATION OF RFMAIL 0.4.0 BETA		     -*-text-*-
		  ---------------------------------

1) Create a new directory for the rfmail sources.

2) copy/untar/unshar everything to that directory.

3) Run the Configure shell script, to configure rfmail for your
   software installation.

4) If you have any doubt about the output from the Configure run, 
   check the file "conf.h"

5) Edit the file "config.h". Look at the comments in that file.

6) The Makefile is automatically generated by the Configure script. If
   you are not running xenix, you most certainly have to edit it. 
   Please send in your changes to me (pgd@compuram.bbt.se). Send the
   whole Makefile. That way I will try to change the Configuration
   script, to account for the pecularities of your operating system.
	
7) A "make all", should not build rfmail. If you are using gcc, you
   will get a few warnings. You might have to make some changes to the
   files, to get it to compile with your version of unix. Please send
   diffs, or notes about what you have done, to me, so that I can
   incoroprate the changes into rfmail.

8) Now you have to setup the rfmail configuration in the "rfmail.cf"
   file. This require some thought, and probably more knowledge about
   fidonet and rfmail than you have now. But most things are defaulted
   in the file. Follow the comments in the supplied rfmail.cf, and
   change only where you want something else than the default. The
   defaults are always marked with "Default:", and what config line
   would produce the default.

9) You have enter as root, and create the rfmail lib directory, and
   the rfmail spool directory. I use /usr/lib/fnet, and
   /usr/spool/fnet. I user owner uucp (all xenix users, using the uucp
   dialers, have to. Maybe all uucp users), and group to my group.
   That way rfmail can run as deamon (under user uucp), but I can
   still access all the files. Finally rfmail will probably use user
   uucp, and group uucp, but if you want to change anything, without
   entering as root, it can be done with the "group" system.
   If rfmail get it's own terminal lines, or uucp does not leave free
   terminal lines with owner uucp, and group uucp, you can invent a
   new owner/group for fnet. 
   /usr/lib/fnet and /usr/spool/fnet has give read/write/execute
   access to owner, and also group.

10) Go back to the rfmail work directory, and give the command "make
   install". You can also do this as root. This will install the
   rfmail package in /usr/lib/fnet.

11) Copy your own rfmail.cf, to rfmail lib dir.

12) Get the latest nodelist, unarc it, rmcr it, and put it into rfmail
   lib directory, with the name nodelist. 
   Hint: I keep the nodelists in the "/usr/lib/fnet/nodelists"
   directory with the original name, and just make a link to
   /usr/lib/fnet/nodelist. This way it is easier to process the node
   diffs, when they come. 

13) You have to make an installation in your unix mailer, to send
   internet mail to rfmail. If you tell me your installation, I will
   make a notes for all popular mailers in the non-beta release. Until
   then, you will find only instructions for smail v3, below.

14) You have to make an installation for bnews/cnews, to send fidonet
   news to rfmail, instead of to your news feed.
   In the file /usr/lib/news/sys do:
	a) Add "fidonet", to the ME: line
	b) add the following line at the end:
		fidonet:fidonet,world,to.fidonet::/usr/lib/fnet/rfnews

15) You have to add all the fidonet conferences in
   /usr/lib/news/active, and coordinate them with the list if
   rfmail.cf

16) Now you should have a working rfmail system.

17) You have to install a unix mail-alias for your full name, with
    spaces replaced with underlines, and also for the "sysop" name.
    On my system, pgd, per_lindqvist and sysop, all go to my unix
    account (pgd). You also have to install your "full-name", see below.

NOTE: I have never tried everything this installation scheme, since I
   already have rfmail installed, and no other computer try try it all
   on. Please tell me if you find something wrong, or just have
   helping comments.

The rest of this docment will be some descriptions of different
features of rfmail. Big chunks of it comes from the old INSTALL file,
and might appear odd, or even misleading. I have added my comments to
some things.




				DIALER
				------

Rfmail now includes its own configurable dialer. Although this dialer
works together with modem lines enabled for logins and with uucp, it
does not know about uucp dialer commands and scripts, and you will
have to configure each modem line separately in the rfmail
configuration file. Modems and serial lines have to be separately
defined, and associated with each other in the configuration script.

For each modem you have to define different parameters, and
information about how to dial on it.
The following parameters have to be defined:

    modem <name of modem> 
	This defined the name of the modem, which is only used
	internally in rfmail, as a name tag. The name cannot contain
	any blanks.

    modem-interface-speec <baudrate>
	This defined the speed of the serial line, which the modem is
	connected to. If the modem has a fixed communication line
	speed, you specify it here. If the modem is setup for
	auto-speed sensing, specify 0.

    modem-speed <blank separateed list of baudrates>
	This specification defined which speeds the modem should
	communicate with. Where 'modem-interface-speed' defined the
	fixed speed for the unix serial line, modem-speed defined
	which baudrates the modem actually will connect with.
	If the called node answer with a speed not in this list,
	rfmail will terminate the connection.
	This feature can be used to avoid high-speed modems to
	fallback to lower speeds.

    modem-dial-rate <time in millisweconds>
	Some modems cannot accept commands in the full interface
	speed, but need the modem command characters to come in a
	slower pace. This command inserts a small delay between each
	command character sent to the modem.

    modem-flags <blank separated list of mode identifiers>
	This specification tells which modes the modem will utilize.
	These mode flags are used to choose modem when calling a node
	from the nodelist. 
	Allowed mode flag identifiers are:
	    bell300 - bell 300 bps
	    v21     - ccitt v.21 300 bps
	    bell212 - bell 1200 bps
	    v22     - ccitt v.22 1200 bps
	    v22b    - ccitt v.22 bis 2400bps
  	    v23     - ccitt v.23 mode
    	    v29     - ccitt v.29 mode
	    v32     - ccitt v.32 9600 bps
	    v32b    - ccitt v.32 bis 14400 bps
	    v33     - ccitt v.32
	    v34     - ccitt v.34
	    v42     - ccitt v.42 compression
	    v42b    - ccitt v.42 bis compression
	    mnp	    - Micnet MNP protocol
	    h96     - Hayes 9600 bps
	    hst	    - USR courier HST 9600 bps
	    max     - Microcom AX/96xx series modem
	    pep	    - Telebit PEP modem 18000/9600 bps
	    csp	    - Compucom speedmodem

    modem-init <modem command string>
	The command string to sent to the modem to initialize it.
	
    modem-dial-prefix <modem command string>
	The string of characters to send to the modem before the
	telephone number in a dial command.

    modem-dial-suffix <modem command string>
	The string of characters to send to the modem after the
	telephone number, in a dial command.
	Normally '|', which is translated to newline.

    modem-message <modem command flags> , <modem response string>
	This command can be repeated many times, and defines the
	different response strings that the modem can send to the
	computer. The specifications constist of two fields, separated
	with a comma (,). The second field, in which both case and
	blanks are significant, is the verbatim message that the modem
	sends. The first field specifies what the message means, and
	have one of two different formats. The first format is only a
	message tag, and just tells what this message means. The
	second form is for the CONNECT message type, and it also
	accepts the modem speed, and the same kind of flag list as the
	modem-flags command.

	The different message type tags are:
	    OK
		Tag for the OK message
	    NOCARRIER
		Define the message sent by the modem if the remote
	        answered the phone, but it was not possible to
		establish communication.
	    ERROR
		Define the response string sent by the modem on
		illegal commands.
	    NODIALTONE
		Define the response string sent by the modem if no
		dial tone is sensed.
	    BUSY
		Defines the response string sent by the modem if the
		remote phone is occupied.
	    NOANSWER
		Defines the response message sent by the modem when
		the remote modem never answers the phone.
	    RING
		Defines the response message sent by the modem for
		each ring signal of remote.
	    RRING
		Defines the reponse message sent by the modem if
		someone is calling in on the modem, before the number
		is dialled.
	    CONNECT
		Defines the response message sent by the modem when a
		connection is made with the remote mode. This response
		message should be followed by the connectin speed, and
		a blank-separated list of flags that describes this
		connection mode.
	    JUNK
		Defines a modem response message that should be
		ignored.

	You can repeat each message tag many times.
	Some examples:

		modem-message	OK, 			OK
			The 'OK' response string from the modem means 'OK'.
		modem-message	ERROR,			ERROR
			The 'ERROR' response string from the modem
			signales a modem command error.
		modem-message	CONNECT 300,		CONNECT 300
			When the modem gives the 'CONNECT 300'
			response, it means that a connection is
			established at 300 baud.
		modem-message	CONNECT 9600 V32 MNP,	CONNECT 9600/REL
			When the modem gives the 'CONNECT 9600/REL'
			response, it means that a connection is
			established at 9600 baud using V32 mode and
			MNP compression.




			Files and rest of work
			----------------------

To get scandir for a computer without one, there are several similar
routines available in the public domain. Search for magic words ndir or
dirent. Maybe one should be included with rfmail?

chown all files for same groups you specified in Makefile.
All subdirectories under it are automatically created.
Make install works only on system V. On BSD, install manually.

You need to create newsgroups for echomails (usually using inews -C?).
I have names groups as fidonet.echo-mail-name.

Get new nodelist. Best place to hunt for it is nearest fidonet system.
Convert it to unix format before using it (just lfs, no cr+lf, no ^Z).

Modifying rn common.h (line 559 in version 4.3 I have) from

#	define NEWSHEADER "Newsgroups: %(%F=^$?%C:%F)\nSubject: %(%S=^$?%\"\n\nSubject: \":Re: %S)\nSummary: \nExpires: \n%(%R=^$?:References: %R\n)Sender: \nReply-To: %L@%H.UUCP (%N)\nFollowup-To: \nDistribution: %(%i=^$?%\"Distribution: \":%D)\nOrganization: %o\nKeywords: %[keywords]\n\n"

to
#	define NEWSHEADER "Newsgroups: %(%F=^$?%C:%F)\nSubject: %(%S=^$?%\"\n\nSubject: \":Re: %S)\nSummary: \nExpires: \n%(%R=^$?:References: %R\n)Sender: \nReply-To: %L@%H.UUCP (%N)\nFollowup-To: \nDistribution: %(%i=^$?%\"Distribution: \":%D)\nOrganization: %o\nKeywords: %[keywords]\nComment-To: %t\n\n"

(Just added Comment-To: %t\n in the end!)

It adds name of recipent to news messsages, so it will be in fidonet
echo replies, otherwise you need to type it hand or leave it out in
which case to-field be set to All. This is really an echomail problem,
conferencing system shouldn't have the receiver field at all?

You should arrange addresses which look like fidonet addresses,
probably everything of format huu@something.fidonet or
huu@something.fidonet.org to be passed to rfmail.  You could try rmail
which comes with this software, though I haven't tried it yet, better
choice would be to use sendmail or anything which can forward certain
kind of addresses to other mailer (rfmail).

Some snapshots of clinet.fi sendmail.cf:

# Fidonet nets and zones.
FI/usr/lib/mail/fnet.nets %s
FO/usr/lib/mail/fnet.zones %s

...

# Bootleg fix to allow replying to fidonet-mail with a brain dead mail
# front end...

R$+!$+<@$=I.UUCP>	$2<@$1.$3.2.fidonet>
R$+!$=I!$+<@$=O.UUCP>	$3<@$1.$2.$4.fidonet>
R$+!$+<@n$=I.UUCP>	$2<@$1.$3.z2.FIDONET.ORG>
R$+!n$=I!$+<@z$=O.UUCP>	$3<@$1.$2.$4.FIDONET.ORG>

...

# fidonet router
R$+<@$+fidonet>		$#fidomailer$@$2$:$1@$2fidonet
R$+<@$+fidonet.org>		$#fidomailer$@$2$:$1@$2fidonet

...

Mfidomailer, P=/usr/lib/fnet/rfmail, S=20/11, R=20/12,
	M=16000, A=rfmail $u


Files fnet.nets and fnet.zones contain fidonet nets and zones,
respectively. One number per line. You can awk it from nodelist.
grep '^Host,' nodelist | awk -F, '{ print $2 }'
and
grep '^Zone,' nodelist | awk -F, '{ print $2 }'
should produce the desired result. 

Snapshots from my smail 3.1 configuration, (hsu)

Routers:
# fidonet
catch-fidonet:
	driver = pathalias, transport=fidonet;
	file = paths-fidonet, proto=lsearch

Transports:
# fidonet - deliver to rfmail
fidonet: driver=pipe,
	max_addrs = 1, max_chars = 80;
	cmd="/usr/lib/fnet/rfmail $($user$)",
	umask = 0022,
	pipe_as_sender

paths-fidonet:
.fidonet	anyname!%s	300
.fidonet.org	anyname!%s	300
  
As an alternative use: (pgd)

In rfmail.cf:
firstuserid = -1

In file /usr/lib/smail/Routers:
# fidonet
rfmail:
	driver = queryprogram,
	transport = fidonet;
	cmd = "/usr/lib/fnet/fidoquery ${lc:host}",
	domain = your.domain

The "fidoquery" program is delivered with rfmail.
This second variation also recognizes "fidonet.your.domain", which
enables rfmail to be used as a router from another machine.




			 ROUTING and SCHEDULE
			 --------------------
The packing of packets can be setup to follow different schedules.
That is defined in the "routing" section of the config file.
The program that does the routing is the "fpack" program.

NOTE: Currently rfmail does NOT ARC outging packets, so all the "arc-"
statements are equivalent to the non-arc statements.
This piece of code is not extensively tested, but this list is
indicating what the statements are supposed to do.

The following statements are defined for routing:

	arc-crash	<dstnode> { <node-list} }
		Like "crash", but generates ARC-packets.

	arc-direct	<node-list>
		Like "direct", but creates ARC-packets.

	arc-hold	<dstnode> { <node-list> }
		ARC all messages for <dstnode> and for any node in the
		optional <node-list>, and put the packet in the
		outgoing directory for <dstnode>, but arrange so that
		the packet will be held for pickup.

	arc-to		<dstnode> { <node-list> }
		ARC all messages for <dstnode> and for any node in the
		optional <node-list>, and put the packet in the
		outgoing directory for <dstnode>.

	crash		<dstnode> { <node-list> }
		Like route-to, but mark the packet as "crash"-mail.

	direct		<node-list>
		Do not route messages for any node in <node-list>.
		Packetize the messages for the nodes inidividually.

	docrash		<node-list>
		
	hold		<dstnode> { <node-list> }
		Packetize any messages for <dstnode> and any node in
		the optional <node-list> to <dstnode>, but mark it to
		be held for pick-up.

	leave		<node-list>
		Mark all packets packetized for any node in
		<node-list> in such a way that they will not be sent
		in this schedule.

	poll		<node-list>
		Arrange so all nodes in <node-list> will be called.
		Create empty packets for the nodes if no message is
		queued for the node.

	route-to	<dstnode> { <node-list> }
		Packetize all messages for <dstnode> and for any node in
		the optional <node-list> in a packet for <dstnode>.

	send		<node-list>
		If any node in <node-list> have a packet held by
		"hold", arrange so that it will be sent. This command
		is the opposite to "leave".

	uncrash		<node-list>
		Mark all crash-mail packets for any node in
		<node-list>, as normal mail-packets.

	unhold		<node-list>
		Mark all held packets for any node in <node-list> as
		normal mail-packets.

	unixmail	<unix-machine-address> <node-list>
		Arrange so that any mail coming for any node in
		<node-list> are sent to the internet address
		<unix-machine-address>.

	sched		<schedule-tag-letter>
		All routing-commands following this command, upto the
		next "sched" command, are executed only if the -S
		"-S <schedule-tag-letter>" option is specified (for
		funpack). 



			    FILE REQUESTS
			    -------------

Rfmail can both respond to file requests, and send out file requests
to other nodes.
To send out a file request, you have to put a .REQ with the correct
name, in the "out" directory for the respective node. Watch out for
the file mode. The file must be readable for rfmail.
For example, to send a file request to node 2:201/332, create a .REQ
file with path: /usr/spool/fnet/out/2:301/332.req

If you want to allow other nodes to do file-requests from you, you
have to a number of setups in rfmail.cf.
First you have to set "file-request-mode", to either "known", or
"anyone". Anyone allows any caller to do file requests, "known" only
allow file requests from nodes in the node-list.
Default is "none", which means to disallow all file requests.

You can define a file with a list of all files/directories that are
allowed to do file request from and give the name of that file to
"file-request-list". This file is a list of full path names, or
partial path names. 

Example file-request-list file:
	/usr/doc/mydocdir.file
	/usr/spool/uucppublic
This file allows file-requests of the file "/usr/doc/mydocdir.file",
or from any file in the /usr/spool/uucppublic directory.
If the "file-request-list" file is not defined, or if the file request
is not from a file defined in "file-request-list", rfmail will also
look in the directory "file-request-dir", for the file.

You can also specify aliased files in the "file-request-alias" file.
This file has standard format, and allows the normal wild-card
characters *?[]

Two files are special. One is requested by the "about" file, and is
defined by "file-request-about", the other by requesting "files", and
is defined by "file-request-files".

There are two limitations for file-requests. One is on number of files
requested, and is defined by "file-request-max-files", the other is
max number of kilobytes allowed to file-request, and is defined by
"file-request-max-size".




		A KEY TO THE RFMAIL FAMILY OF PROGRAMS
		--------------------------------------

This section will give a short description of the programs in the
package. 

rfmail
    Rfmail is the program that is to be called by the unix mail
    transport, and sends unix mail to fidonet.
    It takes one letter from standard input, decodes the rfc822 mail
    header, and writes a fidonet message to the msg spool directory.
    The recipient addresses are taken from the arguments to the
    program, or alternatively, if none are specified, from the "To:"
    line of the letter.

rfnews
    Rfnews is the program that is to be called by the unix news
    tranport, and send unix news to fidonet.
    It takes the news message from standard input, decodes the rfc822
    mail header, and writes a fidonet message to the msg spool
    directory. It's function is almost the same as "rfmail", but
    instead of sending the message as normal mail, it sends it as echo
    mail. 

fpack
    Fpack reads the msg spool directory, which have ready messages in
    fidonet format, written by rfmail or rfnews, and packetizes the
    messages to the recipient fidonet node. The Output is written to
    the out spool directory, according to the routing rules.
    It takes the "-f <node>" option, which processes messages to that
    node only, instead of the default, to all nodes.
    Fpack always rearranges the packets in the output spool directory
    tree, according to the routing instructions, and the schedule.
    Optional Schedule is specified by the "-s" option. You can also
    specify the "-P <node>" option, which in addition to the normal
    rules, will arrange so fcall will also poll an extra node.

funpack
    Funpack unpacketizes messages from the in spool directory, and the
    infiles spool directory, which have files written by the fcall
    program, and sends them according to the routing instructions,
    either to the unix mail transport, unix news, or in case of
    messages routed to other fidonet nodes, to the msg spool
    directory.
    It has options "-s <schedule>", for routing accoring to another
    schedule than default, and "-f <node>" for processing messages
    only from the indicated node.

fcall
    This is the fidonet mail transfer procotol program. It has two
    functions. To call out all nodes which have mail packets waiting,
    and send the packets to their recipient nodes, (master mode).
    Fcall can also accept incoming calls from fidonet (slave mode).

    Master mode:
        -Z <time> Instruct fcall to call all nodes, according to the
            current schedule, for a maximum of <time> seconds, before
            exiting. This is the normal way of calling fcall in master mode.
	    You setup a cron entry, to start fcall at the beginning of
            the period, where you want to call other nodes, and with
            the option -Z specifying the length of the period (in
            seconds). Fcall will repeatedly try to call all nodes,
            which have packets waiting in the out spool directory,
            until all packets are sent, or time expires. Fcall rescan
            the out spool directory after each call, so it will also
            recognize new packets.

	-f <node> As an alternative you can instruct fcall to only
            call one single node, which is specified with the -f
            option. If you repeatedly want to try that node, you
            should also specify -Z.

	-p <phonenumber> This option instructs fcall to only call the
            indicated phone number.
	-Y Use YooHoo/ZedZap (zmodem) protocol for transfer. This
	    option will probably go away later.


    Slave mode:
	Slave mode can be entered in one of two ways. Either by
	calling fcall with the login program, in which case it should
	be called with no options, but with argv[0] starting with "-".
	If you want fcall to use YooHoo protocol, you should call it
	from login with argv[0] eqal to "-YOOHOO".

        The second way to use fcall in slave mode, is to start it in
	demon mode with the "-z <time>" option. The time specified
	will tell fcall how many seconds it should wait before
	exiting. During that time it will accept calls from the line,
	but not do any calls itself.

    Options to fcall:
        Fcall has a lot of options (too many?). This is a list of
	them, and what I think they do:

	-a  Do/don't allow system calling us to pick up his mail.
	    (modifies config entry).
	-b  <baud rate> Bps to use during call.
	-c  Force crc mode. No checksum fallback is allowed for xmodem
	    transfer. 
	-d  Enable/Disable pickup, don't/do pick our mail when calling out.
	    (modifies config entry)
	-f  <fidonet address> Fidonet node to call.
	-h  Print usage.
	-i  Reverse handshake. Act in slave mode, used for incoming
	    call. This will be the default if command starts with a
	    '-' (login shell).
	    In this situation, -i will force normal handshake.
	-k  Do/don't do Sealink receive. This may be necessary on 386
	    systems with fast modems and buggy serial line driver/hardware.
	-l  <tty device, full path>. Use this tty device
	-n  <Times to retry> How many times to retry if no connection.
	    (modifies config entry)
	-p  <Telephone number> to call.\n
	-q  Enable/Disable immediate nak mode. Don't Nak until expected
	    as error happens, then wait until expected input seen.
	    Quick nak may not work with slow hardware.
	-r  <retry time> How many seconds to wait until redial.
	    (modifies config entry)
	-v  <level> Set verbosity to <level>.
	-w  <wait time> How many seconds to wait if dialer is reserved.
            (config entry)
	-z  <time> Wait for incoming call. Sleep until someone 'knocks
	    on the door, then enter slave mode. Terminate after <time>
	    seconds have passed. Special time 'config' adds time
	    specified in configuration file. Any number and mix of
	    these can be specified to add value. Value of 0 results
	    configuration value to be used. 
	-C  <number> Number of tries to give until fall back to checksum mode.
	    Use force crc (-c) to completely disable checksum mode.
	-D  Use direct line for call, do not dial. This option is used
	    if you are directly connected with another fidonet node
	    through a wire without modem control. To make sense, you
	    should also specify the -f option.
	-F  Allow/Disallow inbound file requests.
	    (config entry)
	-O  <filename> to send debugging output to <filename>.
	-S  <single letter> Schedule tag to use for call.
	-T  Enable/Disable telink block for mail.
	    (config entry)
	-Y  Try a YooHoo protocol conversation.
	-Z  <time> Enter demon mode for outgoing call.
	-t  Make transfer-ok ack numbered/unnumbered.
	    (config entry)

    If this confuses you, you can try:
	su uucp -c "fcall -Y -v1 -z3600"
    which is the command I use to manually start up a fidonet session,
    once a day. 
    The options need to be cleaned up, and probably tried out too. I only
    use the indicated trial command, everything else might be more or
    less broken.


nodecomp
    The nodelist compiler. The nodelist has to be compiled and indexed
    into a format the rfmail understands. That was in previous
    versions of rfmail performed automatically, but is now done with a
    separate program. nodecomp will pick up the latest nodelist,
    according to the nodelist specification in rfmail.cf, and compile
    and index it. You don't specify any parameters to the nodecomp
    command. In a normal rfmail configuration, the nodelist handling
    is now much more simplified. When a new nodediff is arriving on
    the net, you only have to:
	1) Un-arc the nodediff.
	2) Run ndiff, to create the new nodelist.
	3) run nodecomp to compile the nodelist to an internal format.

ndiff
    This program is to merge the nodelist with a nodediff, to create
    an updated nodelist.
    This program is normally called with two parameters. The first one
    is the name of the ascii (unarced) nodediff file. The second name is
    the base name and path of the nodelist, without the file type. ndiff 
    will itself figure out the full name of the nodelist file, apply the
    nodediffs, and create the new nodediff in the same directory as
    the old. 
    An example:
   	ndiff nodediff.108 /usr/lib/fnet/nodelist
    This example will apply the nodediff called nodediff.108 on the
    previous nodelist called /usr/lib/fnet/nodelist.101 and
    create the new nodelist /usr/lib/fnet/nodelist.108
    The .101 and .108 file types are specified in the header of the
    nodediff file.
    Note that you have to specify the full path for the nodediff,
    but only the first part of the nodelist file. ndiff will automatically
    append the week numbers.
    The ndiff program understands the msdos file format, so you don't
    need to preprocess the nodediff, or convert it to unix format.

fido
rfsend
    These programs are completely untouched and untested by me. Maybe
    someone else can write something about what they are doing, and if they
    still is working.

rfconfig
    An old program to look up data in the config file. It is not
    updated with all the newest config options. 


rfstatus
    Gives a status report of all packets and messages in the rfmail
    spool directory. Might be useful, but requires more work.

rmail
    Replacement for the rmail program. It is untested, and unused by
    me. You are on your own, if you need this. I use the smail unix
    transport instead.

hashgen
    Generates hash-functions. Used only during compiling of the rfmail
    packages. 



			   GATEWAY FUNCTION
			   ----------------
The rfmail packages is using the REPLYADDR kludge line, for reply
linkage between internet and fidonet. This works for replies to
messages, originating in internet, and transferred to fidonet. But how
to do, for messages from fidonet to internet? If the "to" address
looks like an internet address, it will be sent to internet.
Alternatively, if there is a "^ATo:" kludge, that line will be taken
as an internet address, and the message will be sent to that address.
The mechanism can be disabled in the config file. (It is disabled by
default). It require more work. The "^ATo:" kludge is really a double
kludge. There should also be a function prohibiting sending of
messages to internet mail servers, and certain other addresses. There
is also a problem with too long messages. I can happily send
megabyte-sized messages over uucp, and rfmail will also be able to
handle such messages, but I fear that other fidonet nodes will choke
on such messages. 



			       FULLNAME
			       --------
Rfmail tries very hard to convert your unix user name, to a full name,
for you. This is what it tries, if a letter appears to originate from
your machine: (domain has to match "mailname" config variable)

    1) Try to extract the fullname from within parentheses, like:
       pgd@compuram.bbt.se (Per Lindqvist).
    2) Try the: Per Lindqvist <pgd@compuram.bbt.se> convention.
    3) Try the NAME environment variable.
    4) Try the ~/.realname file
    5) Try to get fullname from the ~/.fullname file
    6) Try to pick up fullname from /etc/passwd file
    7) If all fails, use the unix user name as fidonet name.

Whatever name rfmail manages to extract with this algorithm, has to be
defined as a unix mail alias, for replies to return back to you.
The home directory is looked for, first in the HOME environment
variable, and second according to the name found in passwd,
corresponding to your uid.




			     FINAL WORDS
			     -----------
This is the package as it is. Documentation is badly needed. It is my
hope that this new version of rfmail will bring fidonet communication
from unix a step forward, but rfmail still has loose ends. It is my
guess that many functions does still not work, especially if you do
things I never tried. But I hope that we can improve on that, before
finally releasing
