home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Otherware
/
Otherware_1_SB_Development.iso
/
amiga
/
comms
/
network
/
amigauuc.lha
/
AmigaUUCP
/
man
/
bms.man
< prev
next >
Wrap
Text File
|
1992-05-05
|
18KB
|
474 lines
BMS
Batch Mail Server
The BMS system implements a full fledged mail server subsystem under
AmigaUUCP. It provides a manual and/or automated file transfer and
update capability.
The system is implemented with a single program called BMS through
which you can execute various functions.
(I)
INSTALLATION
In order to install BMS you must create an assignment called BMS:
then run BMS INSTALL:
1> makedir uulib:bms
1> assign bms: uulib:bms
1> bms install
BMS will automatically setup defaults. Initially the file access area
is limited to UUPUB: and BMS:PUB. BMS creates BMS:PUB and BMS:TMP, and
BMS's permanent database resides in BMS:BMS.DB
If you have a custom mailer with USER BOUNCING then you must add two
dummy users to your PASSWD file, named 'bms_in' and 'bms_err'.
Setup an alias for bms-manager to point to an appropriate mailbox.
This is where BMS will mail text message describing events (such
as somebody dequeueing your node or a GET you started completing)
You must setup a DCRON entry for the BMS system. The command 'BMS
BATCH' should be run several times between uucico calls to process
incomming requests and queue outgoing requests. NOTE!!! Your path must
have UUCP:C at the time your startup DCron (this is a bug in BMS)
IN GENERAL EVERY NODE HAS A BMS:PUB/FILES TEXT FILE RETRIEVABLE BY
OTHER PEOPLE. This file should contain a description of what is
available on your system.
(II)
REGISTRATION
Before you can make any requests you must register with the remote
BMS node you wish to make requests from. The form of the
registration command is as follows:
1> BMS REGISTER dest_path RETPATH ret_path ALIAS alias
You must specify the path to the remote machine (dest_path) and the
return path from the remote machine (ret_path). You can also specify
an optional alias (now or later) to reduce the amount of typing you
must do when you make requests. So, for example, if my machine was
'uunet!overload' and I wanted to register with a remote site called
'uunet!able!test' then I would say:
BMS constructs it's special user name by appending a '!bms_in' to the
path. The path format you use must work with this!
1> BMS REGISTER uunet!able!test RETPATH able!uunet!overload ALIAS test
Note that the RETPATH is RELATIVE THE REMOTE SITE. You must specify a
return path that the remote site can use to get back to you. You may
not request any files until the BMS system has received a response from
the remote site.
This requirement greatly reduces the number of bounces the remote site
will suffer. Considering that a remote site 'hub' (such as my machine)
will service several connections at once with new ones comming in every
day, reducing the number of bounces that I (and other sites) get is
very, very important. Many sites would not be able to offer BMS
services if they had to deal with a huge number of bounces.
TESTING THE REGISTRATION
1> BMS
REGISTRATION <defaults> ALIAS=default STAT=0:<unknown> to=off
REGISTRATION uunet!able!test ALIAS=test STAT=1:REG-SEND to=off
The 'STAT' field indicates the current status. 'REG-SEND' indicates
that the BMS system will send off the registration request. When DCron
comes around and runs 'BMS BATCH' (which you can also do manually),
this will set to 'REG-SENT' and to=6d (timeout of 6 days).
When the remote BMS system gets the request it will respond with an
acknowledgement. You should receive this acknowledgement in a
reasonable amount of time, it all depends how often your site and the
remote site gets mail.
If the remote BMS system responds then the status will change to:
1> BMS
REGISTRATION <defaults> ALIAS=default STAT=0:<unknown> to=off
REGISTRATION uunet!able!test ALIAS=test STAT=1:REG-CONNECTED to=29d
This indicates that you are now 'connected' to the remote site. The
timeout of 29 days simply means that your BMS system will send a
keepalive packet out once a month. Theoretically once a registration
is established it will never get lost unless manually dequeued.
Note in 'STAT=1:...', the '1' is the IDentifier for the registration.
LOCAL TESTING
You can test the BMS system locally without batching to the outside
world by creating a dummy machine in your UULIB:Domain file with an
entry called 'test MD UU <your_machine_name_goes_here>'... Registering
for local tests would work as follows... my machine is called 'overload'
so I would:
(1) modify my UULIB:Domain file adding the dummy 'test' entry given
above
(2) BMS REGISTER test RETPATH overload ALIAS test
RECEIVING REMOTE REGISTRATIONS
When you receive a remote registration. That is, some tries to
register with you, your BMS status will show a line as follows:
1> BMS
REGISTRATION <defaults> ALIAS=default STAT=0:<unknown> to=off
REGISTRATION <remote_mach> ALIAS=<none> STAT=2:REG-REMOTE to=179d
The <remote_mach> is the RETPATH the other person specified when they
connected with you. For received registrations the registration
remains valid for 179 days. This 'timeout' is reset back to 179
whenever the remote machine sends a keepalive packet to you, which
occurs every month.
VARIABLES
You can modify various BMS variables globally or for specific
registrations.
1> BMS VARS D=default
REGISTRATION <defaults> ALIAS=default STAT=0:<unknown> to=off
PARAMS:
MaxRxBpd 100000 <not implemented yet>
MaxTxBpd 100000 MAXIMUM BYTES TRANSMITTED PER DAY
MaxRxBpw 400000 <not implemented yet>
MaxTxBpw 400000 MAXIMUM BYTES TRANSMITTED PER WEEK
MaxRxMail 56000 <not implemented yet>
MaxTxMail 56000 MAXIMUM OUTGOING EMAIL MESSAGE SIZE
MinMail 15000 MINIMUM OUTGOING EMAIL MESSAGE SIZE
MirRxBpd 30000 <not implemented yet> (mirroring)
MirTxBpd 50000 <not implemented yet> (mirroring)
CacBwPerc 10 <not implemented yet> (caching)
ReqSwamp 10 <not implemented yet>
MirSwamp 20 <not implemented yet>
The variables pretty much speak for themsevles. You may modify a
variable as shown below. If no destination is specified then the
DEFAULTS are modified.
1> BMS MaxTxBpd 50000
You may modify the variable(s) relating to a specific destination by
specifying a D=<destination> where <destination> is either an alias or
a full destination path to a registered destination.
1> BMS MaxTxBpd 50000 D=test
You may list the variables associated with all registered nodes using
'BMS VARS'. It may look something like the following:
1> BMS MaxTxBpd 300000 D=test
1> BMS VARS
REGISTRATION <defaults> ALIAS=default STAT=0:<unknown> to=off
PARAMS:
MaxRxBpd 100000
MaxTxBpd 100000
MaxRxBpw 400000
MaxTxBpw 400000
MaxRxMail 56000
MaxTxMail 56000
MinMail 15000
MirRxBpd 30000
MirTxBpd 50000
CacBwPerc 10
ReqSwamp 10
MirSwamp 20
REGISTRATION test ALIAS=test STAT=1:REG-CONNECTED to=15d
PARAMS:
MaxRxBpd 100000 (default)
MaxTxBpd 300000
MaxRxBpw 400000 (default)
MaxTxBpw 400000 (default)
MaxRxMail 56000 (default)
MaxTxMail 56000 (default)
MinMail 15000 (default)
MirRxBpd 30000 (default)
MirTxBpd 50000 (default)
CacBwPerc 10 (default)
ReqSwamp 10 (default)
MirSwamp 20 (default)
Note that the MaxTxBpd variable(s) refer to the maximum number of
bytes per day BMS is allowed to send GLOBALLY. This is NOT on a
per-node basis.
If you have 5 registrations and MaxTxBpd is set to 100000 on all of
them (i.e. the default), the BMS system will not transmit more then
100000 bytes per day overall. If you give one registration a lower
value you effectively limit data sent to the registration to the lower
value, but it still counts as data sent overall. If you give one
registration a limit of 200000 that allows no more then 100000 to the
other nodes overall, except 200000 to that specific node, but no more
then 200000 overall.
A variable overide may be restored to the 'default' by setting it's
value to 0. E.G
1> BMS MaxTxBpd 0 D=test
Sets MaxTxBpd for the TEST registration back to whatever the default
has been specified at. GENERALLY YOU DO NOT WANT TO SET DEFAULTS TO 0.
This applies only to variable overides for specific registrations that
you wish to restore back to using the default values.
FILE ACCESS
You can set global file access with ADDFILE, REMFILE, and RESTRICT.
Normally file access permissions are specified for the default
node and take effect globally. You can also specify file access
permissions for specific registrations by giving the D=name
argument:
1> BMS ADDFILE uucp:c
1> BMS FILES
REGISTRATION <defaults> ALIAS=default STAT=0:<unknown> to=off
ACCESS: UUPUB:
ACCESS: BMS:PUB
ACCESS: uucp:c
REGISTRATION test ALIAS=test STAT=1:REG-CONNECTED to=5d
REGISTRATION overload ALIAS=<none> STAT=2:REG-REMOTE to=154d
1> BMS RESTRICT uucp:c/fubar D=test
1> BMS FILES
REGISTRATION <defaults> ALIAS=default STAT=0:<unknown> to=off
ACCESS: UUPUB:
ACCESS: BMS:PUB
ACCESS: uucp:c
REGISTRATION test ALIAS=test STAT=1:REG-CONNECTED to=4d
ACCESS: -uucp:c/fubar
REGISTRATION overload ALIAS=<none> STAT=2:REG-REMOTE to=154d
1> BMS REMFILE uucp:c
1> BMS FILES
REGISTRATION <defaults> ALIAS=default STAT=0:<unknown> to=off
ACCESS: UUPUB:
ACCESS: BMS:PUB
REGISTRATION test ALIAS=test STAT=1:REG-CONNECTED to=4d
ACCESS: -uucp:c/fubar
REGISTRATION overload ALIAS=<none> STAT=2:REG-REMOTE to=154d
ADDFILE adds a file to those allowed to sent to remote nodes REMFILE
removes a file from the access list RESTRICT disallows a specific file.
THE BMS SYSTEM IS FULLY CAPABLE OF TRANSFERING DIRECTORY HIERARCHIES.
Thus, there are cases where allowing a directory but restricting one or
more subdirectories will be a useful feature to have.
GETTING DIRECTORY LISTINGS
Current this is not supported in an automatic manner but to allow
people to query your system as to what is supported you should create a
BMS:PUB/FILES file, a text file containing general information and a
list of available files.
So, until I work in an automated directory thingy please use the GET
command below to obtain this file.
GETTING FILES AND DIRECTORIES
You can retrieve files and/or directories with the GET command.
For example, if I wanted to retrieve something from the machine
'test' I would say:
1> BMS D=test GET bms:pub/files TO uupub:files.test
D=test - node you want to get files from
bms:pub/files - remote file/dir to get (full path)
uupub:files.test - local file/dir to put results in (full path)
AS WITH ALL OTHER TRANSFER COMMANDS, YOU MUST BE 'REGISTERED' WITH THE
REMOTE NODE BEFORE YOU MAY RETRIEVE ANY DATA.
the BMS system appends the suffix '-XXX' to all incomming
files/directories until the file or directory is completely received,
then renames it back to what it was supposed to be.
COMMANDS
BMS HELP Help!
Print out a quick list of available commands. NOTE! Not all
commands have been implemented, see below!
BMS [STATUS] [VARS] [FILES] [STATS] [ACTIVE] [ALL] [DEBUG] [D=dest]
Display the status of the BMS system. This is the default
(you do not need the 'STATUS' keyword). If not destination
is specified all destinations are displayed.
VARS Display the state of various parameters
ACTIVE Display all active communication connections and all
files transfers in progress
FILES Display the file access list
ALL Display dequeued nodes that have not timed out. These
normally do not show up in the list.
STATS NOT IMPLEMENTED YET
BMS INSTALL Install the BMS system on your system
Install BMS on your system. This command will create appropriate
directories and setup BMS files, storing default information.
You must do further installation such as, for example, running
BMS BATCH at periodic intervals.
BMS BATCH Run BMS Batching
This command is normally run from your S:Crontab several times a
day. You probably want to run it at least twice between uucico
runs.
This command scans all incomming mail for the BMS system and
generates appropriate responses. Incomming mail is always routed
through a dummy user called 'bms_in'.
Responses may include lharc'ing and uuencoding various materials
and the outbound queuing of said materials.
BMS REGISTER <destination_bms_system> [RETPATH <return_path>] [ALIAS <alias>]
This command requests that your BMS system contact and register
itself with a remote BMS system. If the nominal email address of
your system is not sufficient for the remote site to be able to
respond then you should specify a return path RELATIVE TO THE
REMOTE SITE. Note that email paths do not include user names.
BMS constructs it's special user name by appending a '!bms_in' to
the path. The path format you use must work with this!
If you with to associate an alias with the system you may do so at
this time with the ALIAS command.
BMS RENAME <destination_bms_system> TO <newpath_for_dest_bms_system>
This command instructs BMS to use a different mail path when
communicating with the specified destination.
BMS D=<destination_bms_system> ALIAS <alias>
This command changes the alias name used to identify the specified
destination BMS system.
BMS DEQUEUE <id> [MESSAGE <message>]
Dequeue a request, either locally or remotely generated. Dequeueing
a remote request results in an abort message being sent to the
remote BMS site, aborting any additional mailings that have yet to
be sent from that site.
When Dequeuing remote requests you may specify a message to be sent
to the remote user describing why the request has been dequeued.
BMS DESTROY <id>
USE THIS COMMAND ONLY AS A LAST RESORT! This command *destroys* a
communications subtree, leaving the remote end hanging. You should
NOT destroy communications unless something goes very very wrong.
Use BMS DEQUEUE to dequeue a communication if you want to abort it.
BMS STOP <id>
BMS START <id>
NOT IMPLEMENTED YET
BMS RETRY <id>
This command should not normally be used. This command forces a
timeout for whatever state a communication tree is in. The
resulting action depends on the state.... generally, forcing a
timeout on DONE states remove them, while forcing a timeout
on a RECEIVER type state generates a retry request.
BMS is pretty smart about automatically retrying, you should not
use this command unless you know what you are doing.
BMS [D=<destination_bms_system>] MAXTXBPD <value>
BMS [D=<destination_bms_system>] MAXTXBPW <value>
BMS [D=<destination_bms_system>] MINMAIL <value>
....
Currently, only transmit specifications may be given. Variables
may be specified for the default or for specific registrations.
Setting a variable for a specific registration to 0 resumes the
default value. Normally you do not set any defaults to 0.
MAXTXBPD - Maximum transmit bytes per day
MAXTXBPW - Maximum transmit bytes per week
MINMAIL - Minimum message size for block data under a heavy
load. Prevents data from being broken up into
messages 10 bytes long when under a heavy load.
BMS [D=<destination_bms_system>] ADDFILE <file/dir>
Add a file or directory to the access list for a particular system
or to the default file access list.
BMS [D=<destination_bms_system>] REMFILE <file/dir>
Remove a file or directory from the access list for a particular
system or for the default file access list
BMS [D=<destination_bms_system>] RESTRICT <file/dir>
Specify a file or directory that is specifically DISALLOWED for a
particular system or for the default file access list. That is, if
you generally allow PUB:BIN/ you can disallow, say PUB:BIN/FUBAR
with this command while still allowing any other file in PUB:BIN/
to be sent.
You can also use this command to give special permissions to
someone.
BMS [D=<destination_bms_system>] GET file/dir TO file/dir
Request a specific file or directory from a remote BMS system. If
the file/dir is in your BMS system's databases from earlier
directory retrievals and no conflicts are found, then you need not
specify the destination system.
If you are GETting a file your TO field may specify either a file
or directory. If only a directory is specified then the same file
name is used.
mail will be sent to bms-manager when the GET operation is
complete. Files under construction have a -XXX suffix. NOTE! Even
if the file is the correct size you should not touch it if the -XXX
suffix is still there! BMS can fill in files out of order so there
may still be blocks of NULs in the file.
BMS [D=<destination_bms_system>] PUT file/dir
NOT IMPLEMENTED YET
BMS [D=<destination_bms_system>] MIRROR file/dir TO file/dir
NOT IMPLEMENTED YET
BMS CLEANUP
This command cleans up BMS's database. You should cleanup BMS's
database about once a week.