Heading:
Maintain Reference Guide
Page Numbers: Yes X: 527 Y: 10.5"
Inter-Office Memorandum
ToMaintain UsersDateFebruary 1, 1982
FromM. D. SchroederLocationCoyote Hill
SubjectReference Guide for Maintain, Version 4OrganizationPARC/CSL
XEROX
Filed on: [*]<Laurel>Maintain.press
Update for Maintain release of January 29, 1982
Maintain is the administrative interface for the Grapevine registration data base. It can be run inside of Laurel, as a Cascade tool, and in a Lily server. Using Maintain a user can inspect and modify information in the Grapevine registration data base about message system users, distribution lists, servers, services, and registries. This memo describes all the commands available in Maintain.
To Run Maintain
To run Maintain in Laurel, first be sure a copy of Maintain.Laurel is on your local disk. It is stored in the <Laurel> directory of your neighborhood file server. Then bug the Laurel "Run" command and type "Maintain" into the brackets.
To run Maintain in Cascade, obtain Maintain.bcd from the normal Cascade repository and then invoke it from the Simple Exec.
To run Maintain from a Lily server, first connect to one through the data line scanner (DLS) or Chat, then type the "m" command. The Lily servers all are registered under both NLS names "Ernestine" and "Ern". Connecting to either name from any chat or DLS will locate the nearest one.
The Registration Data Base
All items in the Grapevine registration data base are identified by an RName. An RName has the form firstPart.registry, for example "Schroeder.pa" and "CSL↑.pa". You must always type the complete RName when inspecting or manipulating an entry with Maintain. As a convenience to users, the names of distribution lists always have "↑" as the last character of their firstPart.
There are two types of entries in the Grapevine regstration data base: individuals and groups. Individuals represent human users and server computers. Groups represent distribution lists, access control lists, services, and other things.

An individual entry has the following components: password, connect site, forwarding list, and inbox site list. The password is used to authenticate an individual when he logs in to Laurel, Maintain, and IFS’ using Grapevine authentication. The connect site is used only for an individual that represents a server computer; it is a Pup internet address where a client can connect to that server. If the forwarding list is not empty, then all messages to this individual will be sent
instead to the names in the forwarding list. An individual should not be forwarded to itself. The inbox site list is the names of message servers, in preference order, where messages for the individual will be buffered.
An entry for a group has the following components: remark, members, owners, and friends. The remark is a human readable character string that indicates the purpose of the group. The members are the RNames contained in the group. They can be both individuals and other groups. When sending a message to a group as a distribution list, then all individual members of the group and contained groups will receive the message. When using a group as an access control list, then all individual members of the group and contained groups will have the access permission in question. The owners and friends are access control lists for the group. Their semantics is explained in the next section. As an owner or friend, "*" means anyone, "*.registry" means anyone in that registry.
Access Controls
Any logged in user of Maintain can do any command listed below that just reads information out of the data base. Control on changes to the data base is provided by the owners and friends lists on groups, and by the owners and friends lists on registries. The owners of registry "reg" are defined by the owners list of the group "reg.gv". The friends of registry "reg" are defined by the frinds list of the group "reg.gv". The access control rules are as follows:
1) Any individual can set the password and set the connect site of his own entry.
2) A friend of a group can add and remove his own name from the membership list of that group.
3) An owner of a group can add and remove owners, friends, and members for the group. An owner also can set the remark.
4) A friend of a registry has the ownership privileges listed in 3) for all groups in the registry and the permissions listed in 1) for all individuals in the registry. A friend of the registry also can set an individul’s forwarding list.
5) An owner of a registry has all the permissions listed in 4) plus the permission to create and delete groups or individuals in the registry, and permission to add and remove mailboxes.

Messages sent to "owners-
firstPart↑.reg" go to the RNames on the owners list of "firstPart↑.reg". If there are no owners, then such messages go to the friends of the registry instead. Sending a message to the owners of a group is a good way to request a change to a protected group, i.e., have your name added as a member when your not a friend of the group.

Messages sent to "Registrar.
reg" go to a person who is an owner and friend of the registry reg. Sending a message to the registrar for your registry is a good way to request something be done that you don’t have permission to do, e.g. create a new group or change your forwarding list.
Talking to Maintain
Maintain has a teletype style interface that is a bit hard to get used to. Commands are indicated by typing their abbreviation. You must use the correct abbreviation. Typing the full name will not work. Frequently Maintain will guess the string to be used as a command argument. If it has guessed correctly then typing SPACE, ESCAPE, or RETURN will cause it to accept the guess and go on. Typing BACKSPACE will allow editing of the guess. Typing another character will erase the guess and allow you to provide the argument value. Arguments are terminated by SPACE, ESCAPE, or RETURN. Typing DEL will abort a command. The prompt "GV:" means that Maintain is ready for your next command.
Maintain checks the values you type as argument when it can. If they are not valid then it will tell you and not complete the command. Sometimes Maintain will prompt you with a guess about what you meant when you provide a syntactically invalid argument
Commands that require confirmation display "[Confirm]" at the end of the command line. RETURN or "y" will confirm such a command. DEL or "n" will abort it.
Commands
Following is an alphabetical list of the Maintain commands. The underlined characters in the command name are the abbreviation. To invoke the command, type only the abbreviation. Characters that are not underlined are those displayed by Maintain as a prompt. arg1, arg2, etc are the arguments you type to Maintain. To do any command you must login first.
Add Forwarding to destination: arg1 for individual arg2
The RName specified as arg1 is added to the forwarding list of the individual specified as arg2. If this is the first item in the forwarding list, then any messages that have accumulated in inboxes for this individual will be remailed according to the forwarding list. If the forwarding field of an individual is set to that individual’s name, thus creating a loop, message to the individual will disappear into a black hole without any error notification. Don’t do this.
Add Friend: arg1 to group: arg2
The RName specified as arg1 is added to the friends list of the group specified as arg2.
Add List of members from arg1: to group: arg2
Arg1 is the name of a file on the local disk (you can’t use this command from Lily). The file must contain a sequence of complete RNames, separated by commas. The RNames must be in alphabetic order. If all RNames specified are valid and in order, then they are added as members to the group specified by arg2. If any name in the file is invalid or out of order then no members are added to the group. The command will tell you only about the first mistake. If there are several out-of-order or invalid names, then you may have to try several times, fixing one bad name in the file each time. This can be annoying. It is ok if some of the names are already members of the group.
Add Mailbox at server: arg1 for individual: arg2
The server name specified as arg1 is added to the end of the inbox site list for the individual specified as arg2. Maintain will accept only the full name for a Grapevine message server, including the final ".ms".
Add Member: arg1 to group: arg2
The RName specified as arg1 is added as a member to the group specified as arg2.
Add Owner: arg1 to group: arg2
The RName specified as arg1 is added as a owner of the group specified as arg2.
Create Group: arg1
A new group with the name specified by arg1 is created. You must provide a complete RName in an existing registry. Remember that, by convention, distribution list names have an "↑" as the last character in their firstPart. Only a registry owner can create a new group in a registry.
Create Individual: arg1 with password: arg2
A new individual with the name specified by arg1 and the password specified by arg2 is created. You must provide a complete RName in an existing registry. Only a registry owner can create a new individual in a registry. After this command has completed Maintain prompts you with a "Add Mailbox" command. Normally you should use this prompt to start adding message servers to the inbox site list for the individual. Add the primary inbox server first. Typing DEL, however, will cancel this prompt. An individual with no inbox sites is an invalid recipient for messages, but Grapevine will still know the name and password so the individual can login to IFS’s that use Grapevine authentication and can appear on groups that are used as IFS access control lists.
Delete Group: arg1 [Confirm]
The group with the name specified by arg1 is deleted from the registration data base. The deleted name cannot be reused for 14 days. After this command has completed Maintain prompts you with a "Remove All Memberships" command. Normally you should use this prompt to remove the deleted name from all groups in the same registry. Typing DEL, however, will cancel this prompt.
Delete Individual: arg1 [Confirm]
The individual with the name specified by arg1 is deleted from the registration data base. Any accumulated message for the individual are discarded. The deleted name cannot be reused for 14 days. After this command has completed Maintain prompts you with a "Remove All Memberships" command. Normally you should use this prompt to remove the deleted name from all groups in the same registry. Typing DEL, however, will cancel this prompt.
Initialize New Name from old name: arg1, creating new name: arg2
A copy of the entry named by the RName specified as arg1 is made and named with the RName specified as arg2.
Login
Your Name Please:
arg1
Your Password:
arg2
Provide your name as arg1 and your password as arg2. Login is successful if the password matches that recorded in the data base for you.
Modify All Occurrences of R-Name: arg1 in groups in registry: arg2 to be R-Name: arg3
arg1 specifies any RName. arg2 names an existing registry. All groups in that registry are searched for occurances of arg1. In each group containing arg1 as a member, arg3 is added as a member and arg1 is removed. This takes a while.
Remove All Memberships in registry: arg1 for R-Name: arg2
The RName arg2 is removed as a member from all groups in the registry specified by arg1. This takes a while.
Remove Friend: arg1 from group: arg2
The RName arg1 is removed from the friends list of the group specified as arg2.
Remove Forwarding to destination: arg1 from individual: arg2
The RName specified by arg1 is removed from the forwarding list of the individual specified by arg2.
Remove Mailbox at server: arg1 from individual: arg2
The message server name specified by arg1 is removed from the inbox site list of the individual specified by arg2. Any accumulated messages (in Grapevine inboxes only -- IFS mailfiles are not remailed) for the individual are remailed to the inbox at the head of the inbox site list for the individual.
Remove Member: arg1 from group: arg2
The RName specified by arg1 is removed as a member of the group specified by arg2.
Remove Owner: arg1 from group: arg2
The RName specified by arg1 is removed as an owner of the group specified by arg2.
Set Connect-site to be: arg1 for individual: arg2
The connect site of the individual specified by arg2 is set to the string specified by arg1.
Set Password to be: arg1 for individual: arg2
The password of the individual specified by arg2 is set to be the string specified as arg1.
Set Remark to be: arg1 for group: arg2
The remark of the group specified by arg2 is set to be the string specified as arg1. Imbedded spaces are allowed in arg1. This string will be truncated to 64 characters. It is terminated with RETURN or ESCAPE.
Type All Groups in registry: arg1 containing R-Name: arg2
This command lists the names of all groups in the registry specified by arg1 that contain the RName specified by arg2.
Type Entry for R-Name: arg1
This command displays the user visible components of the entry whose RName is specified.
Type Members of group: arg1
This command lists the members of the group whose RName is specified. "individuals.registry"and "groups.registry" are valid values for arg1. The first causes the names of all individuals in the registry to be displayed. The second causes the names of all groups in the registry to be displayed.
Verify All Groups in registry arg1
All the groups in the registry specified are inspected. The names of groups containing invalid RNames as members are displayed, along with the invalid members. This takes a while.
Verify Group: arg1
The group specified is inspected for invalid member names. The invalid names are displayed.
Verify Name: arg1
This command tells you whether the RName specified is recorded in the data base.
Quit [Confirm]
This command stops Maintain and returns control to the environment from which it was invoked.