MReply Mail Forwarder Information


What is MReply?

MReply is a UNIX-based mail processing program, specifically aimed at maintaining mailing lists or file servers. It is invoked via the mail .forwarding mechanism, or indirectly with other programs like 'procmail' or ELM's 'filter'. Built-in features inc lude:

How do I set it up?

All new accounts come with this option installed. If not, send an Email to root@clever.net and request that they setup Virtual Mail Routing and MReply on your account. Be sure and include your domain and user name in your message.

Next, edit the .domains file in your home directory using the following syntax for the entries:
SENT_TO_EMAIL_NAME FORWARD_IT_TO_EMAIL_NAME

Examples:
staff@yourdomain.com Someone@somewhere.com
webmaster@yourdomain.com joebloew@netcom.com
- Forwards all mail to staff@yourdomain.com to Someone@somewhere.com
sales@yourdomain.com matt@yourdomain.com IS INVALID AND BAD!
By having yourdomain.com in the right hand side you have created a mail loop. BAD.
info@yourdomain.com #
- Forwards mail to MReply. Edit .mreply.rc and search for info to see the code and make the changes to get your responder working.

yourdomain.com someone@notyourdomain.com
- Forwards everything that falls through to someone@notyourdomain.com - always the last line of the file.
list-request@yourdomain.com #
- Necessary for mail lists, like majordomo@ or listserv@ but named uniquely

majordomo@yourdomain.com #
listserv@yourdomain.com #
- You could rename every reference of "list-request" in the file to majordomo or listserv and use one of the above if you like

owner@yourdomain.com #
- Needed for Mail lists

srb-list@yourdomain.com #
test-list@yourdomain.com #
- Each lists needs to be routed to MReply and configured into .mreply.rc


Note: Circular references are very un-smart. Please never forward email to another forward which forwards back to another forward. This would be considered abuseful to the system and others.

Finally, edit the .mreply.rc file in your home directory, this file is where MReply will get it's instructions. A sample file has been copied to your home directory. You will need to modify this file in order to make MReply operational. This file shoul d be fairly straight forward to edit, just look for the comments between the ======'s that will help identify the sections of the file that you will need to edit.

Remember, MReply runs as YOU; Not mail; Not root; Not bin; By creating a "stupid" script that is potentially damaging limits damage to your own files.

Where do I go for more information?

At the Telnet command prompt for your shell account, type "man mreply", this brings up the manual for MReply.

What about message syntax?

_______________________________________________________________________
|
| People sending mails to your service should use the following syntax
| in the body of their message:
|
| COMMAND [arguments] [TO|AS reply-address@host.domain]
|
| Built-in commands are:
| ======================
| JOIN list - Subscribe to `list'
| LEAVE list - Unsubscribe from `list'
| UNSUBSCRIBE list - Same as LEAVE
| REVIEW list - List subscribers of `list'
| WHICH - List all the lists you are subscribing to.
| CHANGE oldaddress - Update old address in all lists.
| SEND packet [n] - Send `packet' via e-mail, uuencoded if binary.
| [n] is an optional split size; 10 k minimum
| ACCESS accesscode - Authorize mailer for file submissions
| BEGIN mode filename - Receive uuencodded file; mode is e.g. 0644
| TEXT filename - Receive plaintext file
| SERVERINFO - Some information on this autoreplyer
| HELP [topic] - Site defined text; see ".message Help" below.
|
| If [TO|AS reply-address@host.domain] is not specified, the reply
| address is extracted from the header of your request message.
| For example, in the requests
|
| SEND packet 60 TO "Real Name"
| SUBSCRIBE list AS user@host.domain (Real Name)
|
| 'user@host.domain' will override the address extracted from the
| header of the request mail.
|
| In addition, you can specify your own commands with a ".command"
| statement, to be desribed later.
|_______________________________________________________________________

_______________________________________________________________________
|
| Various substitutions are available in this file:
| - \ (Backslash) as the last non-white character on a line extends
| the definition to the next line.
| - \n, \r, \t etc. are used according to common conventions
| - \ followed by any other character gives that character `as is'.
|
| - /mnt/web/guide/YourDomain/ (Tilde slash) is substituted with your home directory
| - ~user/ is substituted with the homedirectory of `user'.
|
| - :variable:, $variable, or ${variable} is substituted with the
| contents of an environment variable.
| - `commandline` or $(commandline) is substituted with the output
| from "/bin/sh -c commandline".
| - $function(arg1, arg2...) is substituted with the output from
| the built-in function specified.
|
| The following built-in functions are supported:
| $CHAR(string, charno[, noofchars])
| $WORD(string, wordno[, noofwords])
| $TRIM(string)
| $REPL(string, pos, noofchars, newstring)
| $POS(string, substring)
| $LEN(string)
| $SPACE(n)
| $ADD(n0, n1...)
| $SUB(n0, n1...)
| $UPCASE(string)
| $DOWNCASE(string)
| $HEADER(Header-Field:)
| $LISTFILE(listname)
| $PACKETFILE(packetname)
|
|
| The following environment variables are initialized by MReply:
| $USER is your user name
| $HOME is your home directory
| $PATH is the search path for spawning external commands
| $MAILTYPE is either 'command', 'file', or 'plain'
| $ACCESS is the access code supplied with the ACCESS command
| $SERVICEADDRESS is the address declared by .serviceAddress
| $OWNERADDRESS is the address declared by .ownerAddress
| $HEADERADDRESS is sender@host.domain (First Last) from header
| $FULLADDRESS is user@host.domain (First Last) to respond to
| $ADDRESS is user@host.domain from $FULLADDRESS
| $USERNAME is user from $FULLADDRESS
| $FULLNAME is Firstname Lastname from $FULLADDRESS
| $NAME is Firstname from $FULLLADDRESS
| $COMMANDLINE is the command given by the user, with arguments.
| $COMMAND is the command that was given, e.g. `HELP'.
| $ARGUMENTS is the arguments given for that command
| $ARGUMENT is the first argument
| $ARGUMENT2 is the second argument
| $PATHNAME is the full pathname of any relevant file
| $FILENAME is the filename of any relevant file
| $PARTS is the number of e-mails for SEND
| $MESSAGE is the relevant messagelabel (e.g. "ADDED")
| $ERRORMESSAGE is the error message for ".message ServerError"
| $RETURNSTATUS is the return status from ".exec command"
|_______________________________________________________________________


_______________________________________________________________________
|
| The following BRANCH definitions are available:
| .if [NOT]
| .or [NOT]
| .and [NOT]
| .elif [NOT]
| .else
| .endif
|
| Expressions can be:
| FROM address - Address is in Sender:, From:, Reply-To etc.
| TO address - Address is in To, Cc, Apparently-To etc.
| HEADER Field: EQUALS expr - 'Field: expr' exists in header.
| HEADER Field: CONTAINS expr - 'Field:' exists and contains 'expr'.
| FILE name EQUALS expr - 'name' exists, and first line is 'expr'
| FILE name CONTAINS expr - 'name' exists, and contais 'expr'
| expr1 EQUALS expr2 - 'expr1' and 'expr2' are identical
| expr1 CONTAINS expr2 - 'expr2' is a substring of 'expr1'
| num1 = num2 - num1 and num2 are numerically equal
| num1 < num2 - num1 is smaller than num2
| num1 > num2 - num1 is greater than num2
| num1 <= num2 - num1 is smaller than or equal to num2
| num1 >= num2 - num1 is greater than or equal to num2
|
| String comparisons are not case sensitive.
| .AND / .OR are evaluated left to right (actually top to down).
| .IF statements can be nested
|_______________________________________________________________________




===============
Initializations
===============

.globalInit

====================================================================
Modify the following to reflect your virtual domain name, and the
correct address to your shell account
====================================================================

.setenv DOMAINNAME YourDomain.com
.setenv TOPDIR /mnt/web/guide/YourDomain

====================================================================
Set up a variable called MAILBOX to contain a 'search path' for
storing our own mail. This variable will be used in various
forwarding declarations further down.
You really want /var/spool/mail/ to be the first.
====================================================================
.setenv MAILBOX > /var/spool/mail/ /mnt/web/guide/$DOMAINNAME/mbox

.end

.commandInit
.end


====================================================================
Misc. conditional declarations

This is where you define your different lists and autoresponders for
MReply to use. The list-request is the general address that people
will send MReply requests to.
This is basic cut and paste. If i wanted krad-list to be a new list
i would add
krad-list@yourdomain.com #
to the .domains file and then copy from the .elif to test-list to the
first blank line and paste another copy in place, and then repplace
eache occurence of test-list with krad-list and do the same further
down in the file at the mailing list and addresses and info lines.
cut&paste and then replace test-list with krad-list for such occurence.
Of course, replace krad-list with whatever you want for your list name.

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

.if to list-request
.setenv SERVICE list-request
.serviceAddress list-request@$DOMAINNAME
.ownerAddress webmaster@$DOMAINNAME
.packetDir $HOME/packets/
.logfile .list-request.log


.elif to test-list
.setenv SERVICE test-list
.serviceAddress list-request@$DOMAINNAME
.ownerAddress webmaster@$DOMAINNAME
.packetDir $HOME/packets/
.logfile .test-list.log
.setenv LISTNAME test-list
.setenv ARCHIVE $HOME/archive/listmail-$downcase($LISTNAME)

.elif to info
.serviceAddress list-request@$DOMAINNAME
.ownerAddress webmaster@$DOMAINNAME
.message Forwarded
.goto info
.end

.elif to info2
.serviceAddress list-request@$DOMAINNAME
.ownerAddress webmaster@$DOMAINNAME
.message Forwarded
.goto info2
.end

.else
.serviceAddress list-request@$DOMAINNAME
.ownerAddress webmaster@$DOMAINNAME
.packetDir $HOME/packets/

.if $MAILTYPE equals plain
.logfile .mail.log short
.else
.logfile .request.log short
.endif

.endif


===============
Command aliases
===============
.alias sub subscribe
.alias unsub unsubscribe
.alias get send


========================
Filtering and forwarding
========================

.if to owner
.forwardAll

.elif $LISTNAME exists
.purgeHeader Return-Path:
.purgeHeader Received:
.purgeHeader Reply-To:

.insertHeader X-Mailing-List: $LISTNAME@$DOMAINNAME
.insertHeader Reply-To: $LISTNAME@$DOMAINNAME
.insertHeader Content-Type: text/plain; charset=US-ASCII
.insertHeader Content-Transfer-Encoding: 7bit
.insertHeader Mime-Version: 1.0

.if file $HOME/lists/$downcase($LISTNAME) contains $ADDRESS
.or file $HOME/lists/$downcase($LISTNAME) contains ($FULLNAME)
.forward | /usr/local/bin/msend -q -s $ARCHIVE $HOME/lists/$downcase($LISTNAME)

====================================================================
The following statements tell MReply to send a message to the sender
and tell them that there message has been accepted and will be posted.
To enable this feature, delete the ; marks.
====================================================================
; .message Forwarded
; .goto Listmail-Accepted
; .end

.else
.forward ! $ADDRESS
.addHeader X-comments: *** Rejected; not in list. ***
.message Forwarded
.goto Listmail-Rejected
.end
.endif

.elif $SERVICE exists
.message Forwarded
.goto Request-Forwarded
.end
.endif


.if $MESSAGE equals looped
.logfile .looped.log short
.endif


================
Mailing lists
================

========================================================================
The following modifiers are available:
concealed - Don't allow 'review' commands on this list.
revealed - Allow 'review' commands on this list. [Default]

manual - Only add mailers who ask for it via JOIN/SUBSCRIBE. [Default]
automatic - Add all mailers that send requests to your service.
Cut & paste the line below and change test-list to krad-list to add a new
list called krad-list here too.
========================================================================

.list test-list $HOME/lists/test-list revealed


========================================================================
Oh, haven't you been annoyed by those thousands of people who send mails
to _you_, asking to join the MReply list? Well, forward these requests
to their appropriate place. :-)
========================================================================
.list MReply ! list-request@$DOMAINNAME



========================================================================
Additional directories in which to look for matching listfiles.
The second one captures and forwards all unserved list request,
uncomment to enable.
========================================================================
.listdir $HOME/lists concealed
.listdir ! list-request@DOMAINNAME



=========================
Packets, file directories
=========================
.packet item-1 $HOME/packets/file-one
.packet item-2 @ /usr/local/bin/unzip -p $HOME/packets/file-two.zip

.packetDir $HOME/packets/




========================================================================
Directory in which to receive files. (Uncomment to enable).
The first argument is the name of the directory; the second argument
is an ACCESS code that the mailer must specify to gain access.
========================================================================
; .receiveDir $HOME/incoming sekret




========================================================================
Mail headers for response messages.
These have no effect on forwarded mails.
========================================================================
.header From: $SERVICEADDRESS
.header To: $FULLADDRESS
.header Errors-To: $OWNERADDRESS
.header Content-Type: text/plain; charset=US-ASCII
.header Content-Transfer-Encoding: 7bit
.header Mime-Version: 1.0


========================================================================
LABELs for .GOTO and .GOSUB statements referenced earlier.
========================================================================

.label info
From: info@$DOMAINNAME
Subject: Re: Information Request

This info responder wants to respond with the file $HOME/packets/info.txt
Change this text in .mreply.rc and then put your stuff in that file.
.insert $HOME/packets/info.txt

.end


.label info2
From: info2@$DOMAINNAME
Subject: Re: Information Request

This message is in response to the message you sent to
info2@$DOMAINNAME

.end


.label Request-Forwarded
Subject: Your mail was forwarded

You wrote:
> $COMMANDLINE

Since this appears to be a regular mail rather than one containing
commands aimed at $SERVICEADDRESS, it has been forwarded
to my personal mailbox. I will look at it next time I log in.
.end



.label ListMail-Accepted
Subject: Your mail to $LISTNAME has been received

Your mail to $LISTNAME has been received and redistributed to
the list. It should appear within 1/2 hour or so.

This is an automatic reply; no response is neccessary.
.end



.label ListMail-Rejected
Subject: Your mail to $LISTNAME@$DOMAINNAME was stopped
CC: $OWNERADDRESS

To $LISTNAME@$DOMAINNAME, you wrote:
> $trim($COMMANDLINE)

Your mail to $LISTNAME was stopped, because neither your
address nor your real name was found in the list of subscribers.
Before sending mail to the list, you must send the following mail
to $SERVICEADDRESS:

SUBSCRIBE $LISTNAME

If you think you are already a member of the list, you may have
sent the SUBSCRIBE command from a different hostname. You can
send a "REVIEW $LISTNAME" command to determine if this is the
case; if you have an obsolete address on the list you can update
it with the command "CHANGE oldaddress TO newaddress".

Feel free to contact $OWNERADDRESS for more help.
.end





=====================
User-defined commands
=====================

.command INDEX
Subject: Index of files available

The following items are currently available via e-mail to
$SERVICEADDRESS:

.gosub packetInfo

These items can be obtained with "SEND item" commands, in the
body of your message.
.end



===========================
Response messages to mailer
===========================

.message Added
.message AutoAdded
Subject: Welcome to $ARGUMENT !!
CC: $OWNERADDRESS

You have been added to '$ARGUMENT'.

To send mail to this list, use the address <$ARGUMENT@$DOMAINNAME>.

To send commands related to this list, use the address <$SERVICEADDRESS>.

.setenv N $trim(`cat $PATHNAME | wc -l`)
You are subscriber number $N, and your address is recorded as:

$FULLADDRESS

If this address is not correct, you may send the following command
to update it in all lists:

CHANGE $ADDRESS TO newaddress@host.domain (Real Name)

You can unsubscribe from this list at any time by sending an
'UNSUBSCRIBE $ARGUMENT' command. If you send the request from
a different hostname, you will need to say:

UNSUBSCRIBE $ARGUMENT AS $ADDRESS

To find out what lists you are subscribed to, send a 'WHICH'
command. For a list of all available commands, send a 'HELP'
command.

--------------------------------------------------------------

.gosub ListInfo-$ARGUMENT

.end




.message AlreadyAdded
Subject: Already in list $ARGUMENT
CC: $OWNERADDRESS

Your address was already recorded in the list '$ARGUMENT'.
It has now been re-recorded as:

$FULLADDRESS

Maybe you meant to join another list? Available lists are:

.gosub ListInfo

If you are joining again because you are not receiving any mails from
the list, or for any other reason think it is strange that you should
already be there, please send a mail to $OWNERADDRESS.
.end



.message Removed
Subject: Removal from $ARGUMENT
CC: $OWNERADDRESS

You have been removed from '$ARGUMENT@$DOMAINNAME'.

Thanks for being with us, you are welcome back any time!

.end



.message NotInList
Subject: Not found in $ARGUMENT
CC: $OWNERADDRESS

Your '$COMMAND $ARGUMENT' command has been received; however
your address was not found in the '$ARGUMENT' list!

To find out what lists you are currently subscribed to, send
a 'WHICH' command to $SERVICEADDRESS.

Also note that if the sender address of your '$COMMAND' message
is not the same as as the one recorded in the list, you will need
to say "LEAVE $ARGUMENT AS recorded-address@host.domain".

If you prefer, you can have me remove your name manually next time
I log in. Please send mail to $OWNERADDRESS.
.end



.message Review
Subject: Current subscribers of $FILENAME
CC: $OWNERADDRESS

These are the current subscribers of $FILENAME.
The total number of subscribers is `cat $PATHNAME | wc -l`.

.end



.message ConcealedList
Subject: Mailing list '$ARGUMENT' not open for review.
CC: $OWNERADDRESS

Your '$COMMAND $ARGUMENT' request has been received by
$SERVICEADDRESS, however the $ARGUMENT list is
not open for public review.

For further questions regarding this, please contact:
$OWNERADDRESS
.end



.message IllegalList
Subject: Illegal list specification
CC: $OWNERADDRESS

Your '$COMMAND $ARGUMENT' request has been received by
$SERVICEADDRESS; however no lists are named '$ARGUMENT'.

Available lists are:
.gosub ListInfo

Please try again.
.end




.message Which
.message NotInAnyList
Subject: Your current list subscriptions

The following are your current list subscriptions. If you
think one or more lists are missing, you may be recorded in
the list(s) with a different address. You must then give
one of the following commands to change it:

CHANGE oldaddress
CHANGE oldaddress TO $FULLADDRESS

.if $MESSAGE equals Which
You are currently subscribing to the following lists:
.else
You are currently not subscribing to any lists at this server.
.endif

.end




.message Changed
Subject: Your address has been changed
CC: $OWNERADDRESS

Your address has been updated from '$ARGUMENTS'
to '$FULLADDRESS' in the following lists:

.end



.message NoChange
Subject: Your were not subscribed to any list
CC: $OWNERADDRESS

Your request for address change has not been served, because the old
address '$ARGUMENTS' could not be found in any lists.

.end




.message SendPlain
.message SendEncoded
Subject: $FILENAME (Information)

The file you requested is now sent in $PARTS separate e-mail(s).
Note that some mail handlers will reject or truncate very large mails;
if you do not receive the complete file, you can have it sent again
in parts (or smaller parts, if you are already splitting it). Use the
command:

$UPCASE($COMMAND) $ARGUMENT splitsize

where 'splitsize' is the maximum number of kilobytes or bytes per mail.
The smaller number the safer transport, but also the more cumbersome
decoding. A value below 50 should not be needed.

.if $MESSAGE EQUALS SendEncoded
.goto Extract
.endif
.end



.label Extract
The file is sent as a shell archive. Instructions for extraction
are given in the first part, "$FILENAME (Part 1/$PARTS)".

.if $FILENAME contains .tar.Z
.goto Extract-tar-Z
.elif $FILENAME contains .tar.gz
.or $FILENAME contains .taz
.goto Extract-taz
.elif $FILENAME contains .Z
.and not $FILENAME contains .zip
.goto Extract-Z
.elif $FILENAME contains .gz
.goto Extract-gz
.endif

.end


.label Extract-tar-Z
To unpack this file after extracting it, type:

gtar zxvf $FILENAME

If you do not have 'gtar', you can use 'gzip -d' or 'uncompress'
followed by 'tar xvf'.
.end


.label Extract-taz
To unpack this file after extracting it, type:

gtar zxvf $FILENAME

If you do not have 'gtar', you can use 'gzip -d' followed by
'tar xvf'.
.end


.label Extract-Z
To unpack this file after extracting it, type:

gzip -d $FILENAME

If you do not have 'gzip', you can use 'uncompress'.
.end


.label Extract-gz
To unpack this file after extracting it, type:

gzip -d $FILENAME

.end





.message IllegalPacket
Subject: Illegal packet specification

The following command has been received from you:
> $COMMANDLINE

No packet exists by name '$ARGUMENT'. Available packets are:
.gosub PacketInfo

Please try again.
.end



.message ReceivePlain
Subject: File '$FILENAME' received

The file $FILENAME has been received and stored as:

$PATHNAME

Thanks for your contribution!
.end



.message ReceiveEncoded
Subject: File $FILENAME successfully decoded

The file $FILENAME has been received and successfully uudecoded.
The file has now been stored as '$PATHNAME'.

Thanks!
.end



.message DecodeError
Subject: Error during decoding of '$FILENAME'

The following error occured during decoding of your '$FILENAME'
submission to $SERVICEADDRESS:

*** $ERRORMESSAGE

.exec /bin/rm -f $PATHNAME~
.if $RETURNSTATUS equals 0
.and not $ERRORMESSAGE exists
The truncated file has been removed.
.endif
.end



.message NoAccess
Subject: Incorrect or missing ACCESS for file submission

You did not supply a legal ACCESS code to submit files to
$SERVICEADDRESS.

To submit a file, please use the command:

ACCESS code

followed by a "begin mode filename" statement for uuencoded
files or a "TEXT filename" statement for plaintext files.
.end



.message Help
Subject: Your HELP request

Your HELP command has been received.
.goto Help
.end



.message Unavailable
Subject: Service unavailable

You wrote:
> $COMMANDLINE

This syntax is not currently available at this server.
.goto Help
.end



.message SyntaxError
Subject: Illegal command

You specified an illegal command: '$COMMAND'.
.goto Help
.end



.message EmptyMail
Subject: Empty mail received

An empty mail was received from you.
.goto Help
.end



.message ServerError
Subject: Error condition re: your '$COMMAND' request
CC: $OWNERADDRESS

This is regarding your following request to $SERVICEADDRESS:
> $COMMANDLINE

The following error condition occured:

*** $ERRORMESSAGE

A proper response to your request is therefore not available at this
time. To verify your transaction, please contact:
$OWNERADDRESS

Sorry about the inconvenience.
.end




.label Help
.gosub CommandInfo


.gosub Download-Info


.gosub Address-Info
.end



.label CommandInfo

To make requests, please send an e-mail containing one or
more lines with the following syntax in the message body to
$SERVICEADDRESS:

COMMAND [arguments] [TO|AS reply-address@host.domain]

If [TO|AS reply-address@host.domain] is not specified, the reply
address is extracted from the header of your request message.


These are available commands:
=============================
JOIN list - Subscribe to 'list'
SUBSCRIBE list - Subscribe to 'list'
LEAVE list - Unsubscribe from 'list'
UNSUBSCRIBE list - Unsubscribe from 'list'
REVIEW list - List subscribers of 'list' [Mailing list only].
CHANGE address - Update 'address' in all lists.
WHICH - Information on what lists you are subscribing to.
INDEX - List available packets.
SEND packet [n] - Request 'packet'; [n] is an optional split size
SERVERINFO - Some information about this autoreplyer
HELP - This text


'list' can be one of:
.gosub ListInfo


'packet' can be one of:
.gosub PacketInfo



Some examples:
==============
SEND item1
SEND item2 60 TO user@host.domain (Real Name)
SUBSCRIBE announcements AS user@host.domain (Real Name)
CHANGE oldaddress@host.domain TO newaddress@host.domain (Real Name)
SERVERINFO


.end



.label Download-Info
Downloading information
=======================
This and that is available via anonymous FTP to $DOMAINNAME
in the directory /pub/path. Check the INDEX file for details.

You can also send a message to
containing the words "INDEX /pub/path" in the body. A
"HELP" command will give further details on usage.
.end


.label PacketInfo
ITEM-1 - Some information about goes here.
ITEM-2 - More information ...
.end


=====================================================================
This is where you place information about your lists and what they
are all about.
Just add another line indented for each list in the same format to describe it.
Down at the addresses you'll need to do the same.
=====================================================================


.label ListInfo
test-list - A test of the list server
.end



.label Address-Info
Addresses
=========
test-list@$DOMAINNAME
.gosub ListInfo-test-list

list-request@$DOMAINNAME (List Request Service)
Autoreplyer service. Send e-mail containing one command per
line in the message body, as described above.

list-owner@$DOMAINNAME (Your List's Owner)
Send any comments, complaints, questions, suggestions you
have about this list and file service here.
.end




.label ListInfo-test-list

This is information about test-list@$DOMAINNAME.

.end



========================================================================
These signatures can optionally be added at the bottom of your messages.
To enable, delete the ; marks
=====================================================================


*** Signatures:

;.signature
;.if to -request
;______________________________________________________________________
;For help, send an e-mail with HELP body to: $SERVICEADDRESS
;Comments and questions are welcome, use: $OWNERADDRESS
;
;
;.elif to -list
;__________________________________________________________________
;To send mail to $LISTNAME, use the address: $LISTNAME@$DOMAINNAME
;For usage, send e-mail with "HELP" body to: $SERVICEADDRESS
;Comments and questions are welcome, use: $OWNERADDRESS
;
;
;.else
;__________________________________________________________
;For help, please send a HELP command to: $OWNERADDRESS
;.endif
;.end