Mail Specification

KEY

Overview

KEY The Mail command provides facilities for composing, amending, sending, receiving and storing messages. Messages are held in files called folders. All the correspondence which relates to one topic can be conveniently held in one folder. In turn, messages themselves consist of a number of components. The body of the message consists of a text component, and the header of the message consists of all the other components, e.g. Subject: Meeting on Wednesday, 2 p.m. From: S Shaw To: J Smith, j jones Please note the new location for our meeting is Room 2019. S.
The process of composing a message entails placing text into the various components of the draft message (which is not held in a folder). For example, addresses go into the "To:" component and the body of the message goes into the "Text:" component. A draft message can be Sent, which causes its delivery to all the indicated recipients; each will receive a one-line TELL message indicating that they have outstanding mail. After receiving messages, the user may selectively List them. Further manipulation of a message can involve Forwarding copies to additional recipients, Replying to its author, Filing for later reference or Discarding. The messages in a folder are ordered chronologically and may be referenced by their index number (i.e. by their position in the folder), or by using special labels. At any given moment the system has a current folder, and within it a current message, which are under scrutiny; this avoids having to specify a folder and message index for every command.
A standard folder called M#INBOX is created by the system. When the Mail command is invoked, the normal action is to Open the standard folder and select it as the current folder. Only the draft message may be modified. However, any message in a folder can be Copied to the draft; similarly, the draft message can be Filed in a folder. You are notified when a message has arrived for you by a TELL message from the executive process MAILER.

Calling Mail

KEY If the Mail command is called with no parameters, it checks whether any messages have been sent to you and ACCEPTS them. Otherwise it just issues the prompt 'Mail:', which is reissued after each directive has been performed until the directive STOP or QUIT is given: Command:mail Mail: Alternatively, the name of a Mail directive may be specified in the call: Command:mail(help) or Command:mail(compose)
If a directive is to be given with parameters, the directive name should be followed by a comma: Command:mail(list,all/.lp) Mail: A special call of Mail is provided for use in an FSTARTFILE, so that it is executed every time you log on to EMAS. This call reports whether there are any outstanding messages, then returns to Command level: Command:mail(?) 2 new messages Command: The parameters for each Mail command generally take the form . If no parameter is given then the slash (/) can be omitted.
A command name need not be typed out in full, and in most cases may be abbreviated to a single letter. Where an ambiguous name is given, e.g. "f", then alphabetical order determines the command selected. Hence "f" will invoke "file", "fo" will invoke "forward". Lower case input is accepted throughout. At the 'Mail:' prompt, you can invoke any command available at command level by using '!' as an escape character. In addition, parameters containing ':' are interpreted as message components and are copied out to a temporary file; this filename is substituted for the component in the string passed to the command. After the command has been executed, the contents of the file are copied back if the component is in the draft, e.g. Mail:!files ,,text: outputs to the text of the draft Mail:!myprog text:2,text: uses the text of message 2 as input to a user program, with the output directed to the text of the draft Mail:!restore file1

Simple operations

KEY Mail provides a number of facilities for manipulating messages; however, to get started, the subset described below should be sufficient. Receiving messages ------------------ When a message is sent to you, you learn of its arrival by a TELL-type message of the following form - **MAILER 05/08/82 16.36: Message from R.Hill To receive the message, simply call the Mail command. Outstanding messages are taken into your message folder and a one line summary is printed for each:
Command:mail 1 new message n 12 (68) 06 Apr R.Hill Tomorrow's meeting <return> to list message Mail: (user types <return> here) (Message 12, 68 bytes) Subject: Tomorrow's meeting From: R.Hill at UKC 06 Apr 17 :36 To: J.Jones Please note that the meeting-place has been changed to Room 2019. Mail:
In the example, the summary indicates that it is a new message, with index number 12, contains 68 characters, was sent on the 6th of April by R.Hill and concerns a meeting. You then press the <return> key to list the message. Once called, the Mail command will continue to issue a Mail: prompt until STOP is specified.
Sending messages ---------------- To send a reply to a message you have received, use REPLY and specify the number of the message you want to reply to - Mail:reply 12 Replying to R.Hill Text: :I'll be there. :John :* Send now? : YES Message sent and filed Mail: Input to the Text: prompt is terminated by typing either an asterisk or a colon on a line by itself.
To send a message other than a reply, use COMPOSE to create the draft message - Mail:compose To: B.Smith Subject: Sample message Text: :This is :a message. :* Send now? : YES Message sent and filed If you want to check the contents of the draft message before sending it, reply "NO" to the Send now? prompt and then list the draft - Mail:list draft
Any part of the draft message may be amended using CHEF, EDIT, ECCE, EM or Vedit. The parameter specifies which part of the message is to be edited - Mail:edit to: Other methods of editing the message (during input) are discussed later. Once the draft is satisfactory, use SEND to dispatch it - Mail:send draft Message sent and filed The attempt to send a message may fail if it contains a faulty recipient name. However, the message remains intact in draft form, and the procedure outlined above can be used to correct the faulty component, then send it again.
Reviewing messages ------------------ A one line summary of a message is produced by SCAN. To obtain this summary for every message you have sent or received, use the keyword ALL: Mail:scan all The message number printed at the start of each one line entry can be used as a parameter to various operations including SCAN, REPLY and LIST. The message accepted in the first example would be reviewed by - Mail:list 12 To mark a message as being eligible for deletion use DISCARD - Mail:discard 12
A subsequent call of TIDY is required to purge messages marked in this way: Mail:tidy On-line assistance is provided by HELP. Given no parameter it offers a table of contents; otherwise it lists information about a specified Mail command. Return from viewing the help file back to Mail by typing QUIT - Mail:help scan . . View:quit
Addressing ---------- Messages are normally addressed to individuals by using their "recipient names" (the same names appear in line printer output banners). These names from all EMAS users are collected together in a directory, the UKC directory, which can be examined by Mail's DIRECTORY command. For example, when sending a message to "Bill Smith", you can check whether he is known as "B.Smith" or "W.Smith" as follows -
Mail:directory Bill Smith Rname User Host Type Dept B.Smith PHR999 2960 S'name Physics extn 1234 S.Smith BIR888 2960 S'name Biology extn 2642 The login names of most UNIX users are also included in the directory, allowing transparent forwarding of mail where required.

Summary of commands

KEY Command Description Accept take outstanding messages into the message folder Accredit add an alias R-name to the name/address directory Alias change or display your private aliases for recipients Bboard access bulletin boards Bbcancel cancel subscription to a bulletin board Chef invoke the CHEF editor to edit a component of the draft Compose create a draft message and offer to SEND it Copy create components of the draft message Directory list an extract of the name/address directory Discard mark messages for deletion, or destroy draft components Discredit remove an R-name from the name/address directory Dn discard the current message and list the next Ecce invoke ECCE to edit a component of the draft message Edit invoke the standard editor to edit a component of the draft Em invoke the EM editor to edit a component of the draft File copy messages to another folder, then discard the originals Forward package up an existing message for retransmission Goto make the message specified the current message Help provide on-line information about Mail commands List display messages on the console or list to a file Next list the next message in the folder on the console Open make the folder named the new current folder Output list a message component to a file,device or the console Post generate hardcopy listing for sending by surface post Previous list the previous message on the console Profile set or display Mail user options Quit exit from Mail and return to the Subsystem Reply create a draft message in reply to one received Retrieve remove "discarded" status from messages Scan produce a list of contents for the current folder Send package up a message and submit it for transmission Stop exit from Mail and return to the Subsystem Tidy purge discarded messages from a folder Vedit invoke a user-specified editor to edit the draft
The next five sections describe in detail the conventions for specifying addresses, message lists, message components, filing copies and time-determined delivery of messages, which appear as keyword parameters in many of these commands. The following section then describes each of the commands in detail.

Addressing conventions

Messages are addressed to individuals by using their "recipient names" (R-names). Each R-name is unique and, for EMAS users, corresponds to the surname string associated with their EMAS process (the same string is printed on line printer output banners). If it is not unique, the surname, i.e. R-name, can be made unique by request to the System Management. Every EMAS user with a unique R-name has this name automatically entered into Mail's name/address directory. This directory (the UKC directory) contains names collected from the 2960, and from some UNIX hosts. It can be consulted using the DIRECTORY command. R-names take the form <name> at <directory>, e.g. J.Jones at UKC sjl @ UKC For UKC directory names, the "at UKC" (or "@UKC") part may be omitted.
Hosts are regarded as having their own directories, containing usernumbers. Hence the following R-names are valid: CUR999 at 2960 pc @ EAGLE mjb at comet When a specified R-name is being processed by Mail, the case of the letters is ignored, as are spaces and dots. The following rules also apply: - a list of recipients can be specified by using commas to separate R-names. - any text enclosed in parentheses "(...)" is ignored when analysing R-names. - if an address contains matching angle brackets "<...>", any text outside the angle brackets is ignored.
The following address list shows these forms: J.Jones at UKC (this text ignored), CUR999 @ 2960 (usernumber addressing), K.Jones <CUR998 at 2960> (only text within <> taken as the address) A user can avoid having his surname string made known to other users as an R-name by calling the DISCREDIT command: Mail:discredit R.Hill
In addition to the local hosts EMAS, EAGLE etc., a large number of remote hosts are accessible. These include certain JANet hosts, Internet hosts (ARPANET, CSNET) and other UK hosts attached to PSS. Access to remote hosts follows the JNT Mail Protocol, a national standard also used throughout the USA by the ARPA network. This protocol is different from that used by the UKC UNIX systems, which use a mixture of three incompatible systems.
Remote hosts are often addressed via intermediate machines known as 'relays'. For example, to access the host 'UCL-CS', routing the message via the EDINBURGH network and the DECsystem-10 on the JANet at Edinburgh (known as 'EDXA'), you would give the address: bloggs%ucl-cs%edxa@edinburgh However, well-known hosts are automatically given the correct routing, so you could just use: bloggs@ucl-cs and the EMAS MAILER would do the rest. Only hosts which are 'known to work' are given automatic routing, although if you know of a host which could be added to the list for automatic routing, we would be pleased to do this for you.
For an up-to-date list of hosts for which routing is unnecessary (and which are known to work), see HELP(MAILHOSTS) or the contents list of this document (there is a Section on mail hosts).

Message lists

KEY A number of Mail commands, including LIST, SCAN, FORWARD etc., accept a list of messages as a parameter. Various ways of specifying such a list are described here. Within a folder, messages can be referenced by index number (position in the folder), and a collection of messages can be referenced at one time, by using commas and dashes as connectors. Hence the specification "1, 7-9, 90>89" refers to messages one, seven, eight, nine, ninety and eighty-nine. The angle bracket is like dash except that it indicates that the sub-list is in descending order. Also, certain keywords define groups of messages, so that "new, 10-15, last2" will reference all new messages, the tenth to fifteenth and the last two messages in the folder. The same message may appear more than once in such a list, but this does not imply any repetition of the message.
Complex message lists can be formed using the logical operators AND (&), NOT (~), OR (,) and parentheses '(' and ')'. Hence '(from="smith",to="smith") and not last20' selects all correspondence with "smith" excluding the last 20 messages in the folder. The normal rules of precedence apply so that NOT is most binding, followed by AND then OR. Parentheses may be used to override this.
Keywords may be abbreviated to a shorter form (as short as a single letter), but note that "D" is a short form of "draft" (not "discarded"). The terms defined below (with the exception of "draft") relate to messages in the current folder; they are as follows: n - message n in the folder n-m - messages n to m; either n or m may be a message keyword, hence "10-last" n>m - messages n to m; the messages are selected in reverse order
c=text - where 'c' represents the name of a message component. c#text This will select all messages in the folder whose 'c' component includes the indicated text (but need not be equivalent to it), e.g. FROM=JONES. The '#' form gives the converse. The text comparison ignores the case of the characters, but spaces etc. are significant. all - all messages in the folder current - the message currently under scrutiny discarded - messages which have been discarded to a "wastebin" but which the janitor has not yet taken away (see the "Discard" command, below) draft - the single message which is currently being prepared; it is not held in any folder
first - the first message in the folder; if followed by a number 'n', selects the first 'n' messages in the folder, e.g. 'first10' selects the first 10 messages in the folder last - the last message in the folder; if followed by a number 'n', selects the last 'n' messages in the folder new - messages which have been accepted in this Mail session but have not yet been LISTed next - the first message after the current one; if followed by a number 'n', selects the next 'n' messages old - messages in the folder which are not discarded, new, unseen or saved previous - the first message preceding the current one; if followed by a number 'n', selects the previous 'n' messages
saved - former draft messages which have been saved by being FILEd in the folder unseen - messages which were accepted in a previous Mail session and have not yet been LISTed

Message components

A message is composed of a series of components. The body of the message consists of a "Text:" component - all the other components together constitute the header of the message. The following components are defined: Date: Indicates the date and time when the message was sent. Subject: Gives a brief indication of the content of the message and is displayed when the message is SCANned. From: Indicates who sent the message. This field may be set by the sender to contain any text he wishes (if, for example, he is sending a message on someone else's behalf); in this case, MAILER will add a "Sender:" component to the message to show who actually sent it. Sender: Shows who actually sent the message and indicates that the "From:" component is not authentic. Reply to: This allows the originator of the message to indicate where replies are to be sent. To: The one or more primary recipients of the message. cc: One or more secondary recipients (who receive carbon copies). bcc: One or more tertiary recipients (who receive blind carbon copies, see below). Msg ID: This holds a unique message identifier and is composed of three parts: 1) host name 2) a numeric identifier allocated by the host 3) date and time when the message was sent In reply to: This component is added to a message by the REPLY command, and identifies the message being replied to. Comments: This allows text comments to be added to the message without disturbing the contents of the message proper. After: This component contains a date and time which determines when the message is to be delivered. See the section on "Time-determined delivery". References: Not filled in or used by any Mail function, this component may contain any text. Keywords: Again, this component may contain any text and may be used to classify messages or to direct the operations of programs which automatically receive and manipulate messages. Folder: Indicates the name of a folder in which the sender recommends the recipient to file the message. Via: Gives routing information on the steps a message took to reach you. May be required to enable a return address to be formed. Ack to: Indicates to whom an acknowledgement is to be sent on receipt of the message. Some hosts (including EMAS) automatically generate the acknowledgement when the recipient accepts the message. Currently, EAGLE and COMET do not support this facility.
When sending a message to a number of recipients, the sender may determine how much information each recipient receives about his co-recipients by selective use of the "To:", "cc:", and "bcc:" components. To:, cc: a recipient in either of these lists has details only of the other "To:" and "cc:" recipients included in his copy of the message - the "bcc:" recipients are excluded. bcc: a "bcc:" recipient will receive a copy of the message containing details of the "To:" and "cc:" recipients, and showing his own name alone in the "bcc:" component.
Hence, a message addressed To: Black cc: Brown bcc: White, Grey will be received by each as follows: Black and Brown - To: Black cc: Brown White - To: Black cc: Brown bcc: White
This feature may be useful where a distribution list containing many names is given - the sender can avoid burdening each recipient with a long list of names in which he has no interest. Many of the commands of the Mail program take a message component parameter. The full specification is: <component name>:<message>(<folder name>) e.g. cc:4(LETTERS) The <folder name> can usually be omitted - by default the message referred to will be in the current folder. The <message> part of the specification may also be omitted, in which case the current message under scrutiny is assumed. Hence the message component specification "To:", refers to the "To:" component of the current message in the current folder.
Message component names can be abbreviated to a shorter form - in all cases, the first two characters of each component name give a unique abbreviation (hence "su:" is equivalent to "Subject:"). Note that a message keyword which may define more than one message can be used - the message selected is the first message found which matches the keyword. Hence "Subject:NEW" refers to the "Subject:" component of the first NEW message in the current folder.

Filing copies

KEY When a message is sent successfully, by default a copy of it is filed in the current folder. The default can be changed permanently by use of the PROFILE command, so that no copy is automatically filed. This applies in three places: in the POST and SEND commands which are described elsewhere, and at the "Send now?:" prompt which follows COMPOSE, REPLY, FORWARD and sometimes POST. The response to "Send now?:" has the form: Send now?: YES or NO or <when>/<folder for filed copy> The <when> specification is described under "Time-determined delivery" (in relation to filing copies, <when> is equivalent to replying YES): Send now? : tomorrow (send, and by default file a copy) Send now? : YES (send, and by default file a copy)
The default option setting may be overridden by specifying ".NULL" (or ".N") as the null folder to indicate that no copy is to be filed: Send now? : YES/.N (or simply '/.N') Conversely, if the profile option is disabled permanently so that copies are not normally filed, specifying ".FOLDER" (or ".F") will cause a copy to be filed in the current folder: Send now? : Y/.F (or simply '/.F') When a folder name is explicitly specified, a copy is filed there regardless of the profile setting: Send now? : Y/FOLD2 (files a copy in FOLD2)
If you decide not to send the message by replying "NO" (or "N"), then regardless of the profile setting, no copy is filed unless you specify the folder: Send now? : N (not sent or filed) Send now? : N/.F (not sent, but filed in the current folder) Send now? : N/FOLD3 (not sent, but filed in FOLD3)

Time-determined delivery

KEY A message may be sent with a "deliver after" specification which delays the delivery of the message until the current date and time is after the date and time specified. This is useful for sending reminders to yourself or others. The date specification may be either a standard date (e.g. 15 July 1981), or a day of the week (MONDAY), or a keyword (TOMORROW). The time specification may be in hours and minutes (12:30) or mnemonic. Dates are recognised in various forms, e.g. 15 July 81 or 15 7 81 or July 15 1981. Missing numbers are filled from today's date except in the case of a mnemonic month with no day following, when the first of the month is assumed. Mnemonic dates are a weekday (Sunday, Monday etc.), Today, Tomorrow, Week, Month and Year. Weekdays are always in the future - if today's weekday is specified, the message is delivered in seven days time. "Week" specifies the next week (weeks start on a Sunday). "Month" specifies next month (which naturally starts on the first). "Year" specifies next year (starting 1st January). Time specifications are in the form hh:mm on a 24 hour clock. Mnemonic times are available: Breakfast (8:00), Lunch (12:00), Noon (12:00), Tea (16:00), Dinner (20:00) and Midnight (23.59). The following "noise" words are available: next, after, at, since. These date and time values may be specified with the SEND command, or given in response to the "Send now?" prompt which follows the COMPOSE, FORWARD and REPLY commands: Mail:send ,after lunch tomorrow Mail:send ,13 (indicates 13th of this month) Send now? : NEXT WEEK (equals next Sunday) Send now? : 10 AUG (10th August this year)

Mail commands

KEY In the examples which follow, command names, component names and message keywords are given in full, but note that abbreviated forms are acceptable for all of these. The shortest abbreviation for each command name is shown in parentheses at the right margin.

Accept

KEY Mail:accept <R-names>/<folder name> (a) This command is used to accept messages which arrive for you while you are already within Mail. If the <folder name> parameter is specified, then the messages accepted are stored in that folder (it is made the current folder). Otherwise the messages are stored in the folder M#INBOX. The <R-names> parameter should be specified when you want to take messages addressed to an alias associated with your process. For messages addressed to your 'official' surname no parameter is required. Mail:accept Mail addressed to different R-names may be accepted in a single operation as follows: Mail:accept R.Hill+Package inquiries See PROFILE for details of a facility which allows default ACCEPT parameters to be set. When Mail is called without parameters an ACCEPT is automatically performed which also uses the default ACCEPT parameters held in the PROFILE. After taking the outstanding messages, a SCAN of new messages (i.e. messages not yet LISTed) is performed.

Accredit

KEY Mail:accredit <R-name>,<Department> (accr) This command allows users to add additional R-names for themselves (public aliases) to the name/address directory. In order to maintain a rational naming system, this facility is only available on request to the System Management. You may always set a "Department" field (31 characters) to be associated with your normal R-name. The information is displayed when a search is made of the name/address directory (see DIRECTORY) and is intended as an aid in distinguishing recipients with similar R-names. Accredit may be called with the existing R-name entry in order to change the Department field. Mail:accredit R.Hill,Physics - extn 1234 Note that if you want to have your default R-name changed, this can only be done by application to the System Management.

Alias

KEY Mail:alias <alias spec> (al) This command allows you to set private aliases for addresses you frequently use. Each alias you define may reference a single recipient name or a list of recipient names. Whenever you instruct Mail to send a message, it checks whether the recipient fields of the message contain any private alias names - if so, the text associated with an alias name is then substituted for it before the message is dispatched. The following examples show how the alias list can be displayed and how items can be added or removed from individual aliases: Mail:alias - display all aliases and the text associated with each Mail:alias friends - display the text associated with the alias 'FRIENDS' Mail:alias friends=R.Hill,A.Aban add two names to text associated with the the alias 'FRIENDS' (creates an entry for 'FRIENDS' if it does not already exist) Mail:alias friends#R.Hill - remove 'R.Hill' from the text associated with 'FRIENDS' (if no text remains, removes the alias 'FRIENDS' altogether) Mail:alias friends# - remove alias 'friends' and all text associated with it.

Bboard

KEY Mail:bboard <bboard name> (b) This command gives access to shared folders known as bulletin boards, which are intended for use by any group of users who share a common interest. Messages are sent to bulletin boards by addressing them in the normal way, (e.g. To: general @ ukc). To read a bulletin board, you must first become a subscriber to it: Mail:bboard general If 'general' was already subscribed to, then the above call would simply open it for inspection. With no parameter specified, the command opens the first bulletin board which contains new messages. Subsequent calls open further bulletin boards until all those subscribed to, which contain new messages, have been accessed: Mail:bboard If a bulletin board containing new messages is opened for you, but some (or all) of the messages are of no interest, you can mark them as having been read using the GOTO command. "GOTO last" marks all messages as having been read, and so subsequent calls of Bboard will not cause the bulletin board to be reopened for these same messages. To find the names of the bulletin boards to which you subscribe, the number of messages each contains, and whether there are any new messages since your last access, use: Mail:bboard ? This also shows the names of other bulletin boards to which you may choose to subscribe. Note that bulletin boards are not yet fully supported; investigations are being made into ways of linking them to the EMAS News System.

Bbcancel

KEY Mail:bbcancel <bboard name> (bbc) This command cancels a subscription to a bulletin board. With no parameter it cancels subscription to the bulletin board currently open. Otherwise, it cancels subscription to the bulletin board named: Mail:bbcancel general The effect of this is to omit the indicated bulletin board from the list of those checked when command 'bboard' is called.

Chef

KEY Mail:chef <component or EMAS file>/<component of the draft> (c) This command allows an EMAS file or an existing component of any message file to be edited (using the CHEF editor), and the result placed in a component of the draft. If no parameters are given, then the "Text:" component of the draft message is edited. If an output draft component (i.e. one following "/") is given, then the existing contents of that component are overwritten. Note that a filename "CC" is distinguished from a message component "CC:" by the presence of a colon. Mail:chef - edits the "Text:" component of the draft, creating it if none already exists Mail:chef cc: - edits the "cc:" component of the draft, creating it if none exists. Mail:chef Text:current/text: - edits the "Text:" component of the current message to the "Text:" component of the draft. Mail:chef /to: - edits an empty file to the "To:" component of the draft. Mail:chef mylist/to: - edits an EMAS file to the "To:" component of the draft. Mail:chef cc:2 - this will fail; a component of the draft must be given following "/" in this case. See also the Vedit command which allows any other editor to be used within Mail.

Compose

KEY Mail:compose <component names> (co) This command offers a convenient way of creating a draft message. The draft is first cleared, then prompts are issued as indicated: Mail:compose To: J.Jones Subject: Old joke Text: : Send 3/4d we're going to a dance. :: Send now? : Y Message sent and filed
Input for the "Text:" and "Comments:" components is terminated by a colon (:) or an asterisk (*) on a line by itself (the prompt issued on each line is ":"). The input for all other components is normally terminated by a newline. Continuation lines are allowed and can be specified in two ways. If the line ends with a comma it is assumed that additional input follows. Alternatively, an explicit continuation character at the end of the line, backslash (\), allows a further line to be input. The backslash character itself is not included in the message component. Null input is accepted. In addition to accepting text, the COMPOSE command will accept the contents of an EMAS file or of a component of an existing message. The escape character '@' must be used to indicate this form of input. You may request that prompts are issued for additional message components by giving the component names as parameters:
Mail:compose cc:, comments: To: @CUR999.NAMES cc: J.Jones, R.Hill Subject: @Subject: Comments: Any suggestions for additions : to this circulation list? :: Text: :@text:4 Send now? : N Mail: In this example, a file is copied to the "To:" component of the draft, the "Subject:" component of the current message is copied to the "Subject:" component of the draft, and the "Text:" component of message 4 is copied to the "Text:" component of the draft. Note that a message component, e.g. "@TEXT:" is distinguished from a file of the same name, "@TEXT", by the presence of a colon.
During input of text to any component, several additional commands are available in the form of what are known as 'tilde escapes'. As might be expected, these commands are introduced by the tilde character (~) which for this purpose must be the first character on a line. It is followed by one of several letters, which have the following meanings: ~f filename - Include a copy of the specified file at this point. ~e - Edit the text collected so far (by default, this uses the EM editor but this may be changed with the ~s command described below). ~l - List the text collected so far. ~m message - Include the message(s) indicated (e.g. last3). ~c component - Include the component indicated (e.g. cc:last). ~a - Abandon input. ~! command - Call an EMAS command. ~s editor - Select the editor invoked by ~e. ~~ - Include a single ~ character. ~? - Display a brief help message about tilde escapes.
The response to the "Send now?" prompt may be "Y" or "N" or a date and time indicating delayed delivery (see Time-determined delivery). If the message is sent successfully, then by default a copy of it is filed in the current folder. See the section on "Filing copies" for details of how to control whether a copy is filed. If the draft message is not sent (as in the example above), it may be modified further then dispatched using the SEND command.

Copy

KEY Mail:copy <input>/<component of the draft> or DRAFT (cop) This command allows text to be copied to a component of the draft. Alternatively a complete message may be copied to the draft. If input is not specified then a prompt is issued and the text to be copied is read from the terminal. If the component of the draft is not specified, the "Text:" component is assumed. Alternative sources of input are an EMAS file or a component of an existing message. Mail:copy (No parameters, so input is prompted Text: for and is taken to be for the "Text:" :This is input component of the draft message) :: Mail:copy msgtext (EMAS file MSGTEXT is copied to the "Text:" component of the draft message)
Mail:copy cc:/to: (copies the "cc:" component of the current message to the "To:" component of the draft message) Alternatively, a complete message (i.e. all its components) may be copied to the draft message. In this case the default for the first parameter is the current message. Mail:copy /draft (copies the current message to the draft) Mail:copy new/draft (copies the first new message in the current folder to the draft)

Directory

KEY Mail:directory <R-name mask or username mask @ host>/<output> (d) This command allows a search to be made of the name/address directory. The search may be for a specific R-name, or a specific "usernumber at host" or for all R-names or usernumbers that fit a mask. As in the Subsystem command FILES, the mask consists of up to three fields where a field is either an explicit string of characters or the symbol "*", representing any characters. Upper and lower case characters are not distinguished. If an '@' symbol is present, as in "CUR999@2960" then the search is performed on the usernumber and host columns of the directory rather than the Rname column. Where an R-name search fails to find an exact match, it attempts to select approximate matches. Information is given on each Rname selected, under the following headings:
Rname - the recipient name; if only approximate matches are made for the name specified then the column is headed "Rname(?)" User - the user number to which messages are delivered Host - the host on which the recipient is accredited Type - currently takes one of two values: S'name - the R-name is the standard process surname string, set by the System Manager Alias - the R-name was accredited by the user himself Dept - a user-defined field set by ACCREDIT
The <output> parameter may be null (implying output to the terminal), or a filename or device name. Examples: Mail:directory Bill Smith Mail:directory cur9*@2960/.lpcl Mail:directory *@eagle/vfile (not yet supported by UNIX)

Discard

KEY Mail:discard <messages> or <draft components> (dis) This command marks one or more messages in the current folder as being discarded, but does not physically remove them or re-number the remaining messages in the folder. The action is like placing a message in the wastebin - it is still available though less convenient to access, and is subject to permanent removal later by the TIDY command (see below). If no TIDY has been performed after a DISCARD then the RETRIEVE command can be used to recover the messages. As with other commands, DISCARD can be applied to the draft. In addition, for the draft only, individual components may be discarded (the component name must be followed by a colon). However, discarded components of the draft are destroyed immediately and cannot be recovered by RETRIEVE.
Mail:discard 1-4,cc:,last (discards messages 1-4 and the last message in the current folder, plus the "cc:" component of the draft) Mail:discard draft (discards all components of the draft message) The last message specified in the list becomes the current message if it is not the draft.

Discredit

KEY Mail:discredit <R-name> (discr) This command removes an R-name belonging to the user from the name/address directory. Discredit is called as follows: Mail:discredit R. Hill This is not really recommended unless you are paranoid, because it makes it very difficult for others to send you mail!

Dn

KEY Mail:dn (dn) This command, representing Discard + Next, gives a quick way of discarding the current message and listing the next in the folder.

Edit

KEY Mail:ecce <component> or file/<component of the draft> (e) Mail:edit <component> or file/<component of the draft> (ed) This command allows an EMAS file or a component of any existing message to be edited, and the result placed in a component of the draft. If no parameters are given, then the "Text:" component of the draft message is edited. If an output draft component (i.e. one following "/") is given, then the existing contents of that component are overwritten. Note that a filename "CC" is distinguished from a message component "CC:" by the presence of a colon. Mail:ecce - edits the "Text:" component of the draft, creating it if none already exists Mail:ecce Text:current/text: - edits the "Text:" component of the current message to the "Text:" component of the draft. Mail:edit cc: - edits the "cc:" component of the draft, creating it if none exists. Mail:ecce cc:2 - this will fail; a component of the draft must be given following "/" in this case. Mail:edit mylist_n1/to: - edits an EMAS file to the "to:" component of the draft. Mail:edit /to: - edits an empty file to the "To:" component of the draft, i.e. creates a new "To:" component. See also the Vedit command which allows any other editor to be used within Mail.

Em

KEY Mail:em <component>/<component of the draft> (em) This command allows an existing component of any message file to be edited (using the EM editor), and the result placed in a component of the draft. If no parameters are given, then the "Text:" component of the draft message is edited. If an output draft component (i.e. one following "/") is given, then the existing contents of that component are overwritten. Note that a filename "CC" is distinguished from a message component "CC:" by the presence of a colon. Mail:em - edits the "Text:" component of the draft, creating it if none already exists Mail:em cc: - edits the "cc:" component of the draft, creating it if none exists. Mail:em Text:current/text: - edits the "Text:" component of the current message to the "Text:" component of the draft. Mail:em cc:2 - this will fail; a component of the draft must be given following "/" in this case. If a component does not exist, and it is edited and created, EM will give an error message about the non- existence of that component. This should be ignored. See also the Vedit command, which allows any other editor to be used within Mail.

File

KEY Mail:file <list of messages in the current folder>/<folder> (f) This command copies messages from the current folder to another folder, then discards the messages from the current folder. The input list of messages defaults to the current message. The draft message may also be filed (this is the only message which can be filed in the current folder); a filed draft message is given SAVED status (see SCAN). The last message in the list of messages to be filed becomes the current message. Mail:file /folder2 - files the current message to folder2 Mail:file draft - files the draft to the current folder Mail:file new,1,last/folderb - files all new messages plus the first and last in the folder to folderb

Forward

KEY Mail:forward <messages> (fo) This command sends a copy of one or more messages to another user or users. Mail issues a prompt for the name of the user or users to whom you wish to forward the messages. You reply to this with the name(s) or alternatively specify an EMAS file or a message component which contains the names. Mail issues a further prompt, "Comments:", which allows you to add some text to the message without affecting the forwarded messages themselves. As with COMPOSE and REPLY, you are offered the option of sending the message at the end of the operation. The last message in <messages> becomes the current message. If <messages> lies within the current folder, it becomes the current message.
Mail:forward 1 - forward the first message in the To: Rowland Hill current folder Comments: Can you deal with this? :: Mail:forward new - forward all new messages in the To: @cc: current folder to the list of Comments:For information recipients held in the "cc:" :: component of the current message.

Goto

KEY Mail:goto <message> (g) The message specified becomes the current message. If a message keyword is used which may select more than one message, the first message found is selected. Mail:goto 1 - go to the first message in the current folder Mail:goto next - the next message after the current one Mail:goto new,last - go to the first new message; if there are none, go to the last message in the current folder

Help

KEY Mail:help <command> (h) This command provides information about the Mail system and includes descriptions of all the Mail commands. It operates by VIEWing a file containing the help text; hence the whole of this file can be explored at one time. If no parameter is given a table of contents is printed and further input requested. Alternatively, the name of a Mail command may be given as a parameter. Return from viewing the help text to Mail by using Q or QUIT. Mail:help . . View: QUIT Mail:help compose . . View: QUIT

List

KEY Mail:list <messages>/<file> or <device> (l) This command displays messages in the current folder on the console, or alternatively lists them to a file or device. In the latter case, a SCAN (see below) is prepended to the listing. If <messages> is omitted, the current message is listed. Mail:list - displays the current message on the console Mail:list new,draft/.lp - lists all new messages plus the draft to the line printer Note that as a side effect of LIST, the status of a NEW or UNSEEN message is changed to OLD. There are alternative ways of listing a single message to the console which do not require that LIST is specified:
Mail:<return> lists the current message if it is new; otherwise lists the NEXT message (strictly, the next undiscarded message) Mail:n lists message number 'n' in the folder; if 'n' is greater than the number of messages in the folder, the last is listed. Mail:0 (zero) lists the draft message. Mail:-n lists message "current-n" Mail:+n lists message "current+n" If the message number calculated is less than 1 or greater than LAST, then message 1 or LAST is listed respectively.

Next

KEY Mail:next <message> (n) This command lists the next message after the current message which matches the parameter. If no parameter is given it lists the next undiscarded message. The message listed becomes the current message. Mail:next from="smith"

Open

KEY Mail:open <folder name> (o) This command switches primary attention to another folder, i.e. makes the indicated folder the current folder. If the folder does not already exist it is created. If no parameter is given, the standard folder M#INBOX is made the current folder. Mail:open bugs - creates a new folder BUGS and makes it the Folder BUGS created current folder Mail:open f2 - makes the existing folder F2 the current folder Mail:open - makes M#INBOX the current folder.
If the parameter '?' is given, then the name of the current folder and the number of messages in it is printed: Mail:open ? Folder M#INBOX contains 16 messages, current message = 4

Output

KEY Mail:output <component>/<file> or <device> (ou) This command is used to transfer a single component of a message to a file or device or to the console. The default component is the "Text:" component and the default message the current message. Mail:output - displays the "Text:" component of the current message on the console Mail:output cc:4(f3) - displays the "cc:" component of message 4 in folder F3 on the console Mail:output /file1 - outputs the "Text:" component of the current message to a file named FILE1

Post

KEY Mail:post <message>/<device or file>,<folder name> (p) This command provides a way of generating a hardcopy listing of a message suitable for sending by surface post to recipients who do not have an electronic mail address. The output should be sent to a line printer, and will contain one copy of the message for each postal recipient specified. Postal recipients may be mixed freely with electronic recipients in the "To:", "cc:", or "bcc:" fields of a message and are specified by the form: (:Postal: <name>, <postal address>) Example: To: R.Hill, J.Smith (electronic recipients), (:Postal: J.Jones, 14 High St., Newton) cc: (:Postal: B.Brown, Room 2019, JCMB)
If <message> is not specified, then the draft message is taken by default; however the output parameter must be specified. Mail:post /.lpcl (posts the draft message) Mail:post 21/.lp (posts message 21 in the current folder) Copies are filed as for the SEND command. The other commands which send messages, REPLY, FORWARD and SEND ignore all text enclosed in parentheses in address fields including the (:Postal:) form.

Previous

KEY Mail:previous (pr) This command lists the first message before the current message which matches the parameter. If no parameter is given, it lists the previous undiscarded message. The message listed becomes the current message. Mail:previous subj:="interesting"

Profile

KEY Mail: profile (pro) This command allows the user to specify various settings which modify the operation of the Mail program. Each item is displayed in turn with the current setting indicated in parentheses. Replying causes the current setting to be retained and the command moves to the next item. If any other reply is given, this is taken as the new setting for the option. The PROFILE items, with their defaults are as follows:
Mail:profile 'V' editor (CHEF): Mail's 'V' command allows a user- specified editor to be called exactly as for CHEF, EDIT, ECCE or EM. ACCEPT rnames (your name): If you call ACCEPT with no parameters, the text specified here is taken as the parameter. This can be useful where you have an alias, and you want to accept mail directed both to your alias and to your process surname - the connector '+' is used. Hence the ACCEPT default parameter could be set to "R.Hill + Package suggestions".
Abbrev LIST-to-console (YES): When a message is listed to the console, the "Msg ID:" and "In-reply to:" fields are omitted if 'YES' is set. Abbrev LIST-to-device (NO): When a message is listed to a device or file, its "Msg ID:" and "In-reply-to:" fields are included if "NO" is set. Default file-a-copy (YES): When you SEND a message this option determines whether a copy of it is automatically filed in the current folder. (See also "Filing copies"). Auto ACCEPT on entry (YES): On initial entry to Mail from Command level, outstanding messages are accepted if 'YES' is set.
Overwriting draft warning (NO):Whenever a new draft is to be created (by COMPOSE or REPLY) but an old draft still exists, Mail will require a confirmation that it is to proceed if 'YES' is set. <return> only lists NEW (YES):Pressing <return> lists successive NEW messages only; if 'NO' is set then <return> will list all successive undiscarded messages.

Quit

KEY Mail:quit (q) Exits from Mail and returns to Subsystem command level.

Reply

KEY Mail:reply <message> (r) This command provides a convenient way of replying to a received message. If no parameter is given then a reply to the current message is produced. A prompt is issued for the "Text:" of the reply. The escape character '@' can be used at this point to indicate input from an EMAS file or from an existing message component:
Mail:reply 2 Replying to R. Hill Text: :Your message received :: Send now? : tomorrow Mail:reply last(folder3) Replying to J. Jones Text: :@ACK_VPOLITE Send now? : y If a <message> in the current folder is specified, it is made the current message.

Retrieve

KEY Mail:retrieve <messages> (ret) The complement of DISCARD, this command changes the status of the specified messages in the current folder from "discarded" to "old". Note that once discarded the draft message cannot be retrieved. If is null, the current message is retrieved. The first message in <messages> becomes the current message. Mail:retrieve discarded Mail:retrieve 10-12,last4

Scan

KEY Mail:scan <messages>/<device> or <file> (s) This command scans the specified messages in the current folder and produces a "list of contents" - a series of one line summaries for the messages. By default, the current message is scanned and the output is directed to the console.
The format of the one line summaries is as follows: status - (null) = old message s = saved message (created when a draft message is FILEd) x = discarded message draft = the draft message n = new messages this Mail session not yet LISTed u = unseen messages from previous Mail sessions index - the index number of the message within the folder <= - for the current message, the indicator '<=' is printed (length) - the length of the "Text:" component of the message in bytes date - the day and month that the message was sent from - the "From:" component of the message; if this component is empty, the "To:" component is displayed (prefixed with "To:") subject - the "Subject:" component of the message; if this component is empty the first few bytes of the "Text:" are displayed.
Examples: Mail:scan 12 12 (105) 26 Aug J.Jones Meeting tomorrow Mail:scan 12,next2,10>6 12 . . . . . . 6 . . . . Mail:scan (from="jones",to="jones") and date="jun" . .

Send

KEY Mail:send <message>,<when>/<folder name> (se) This command packages up a message and submits it for transmission. If <message> is omitted, the draft message is sent. The <when> parameter is used to indicate when the message is to be delivered (see Time-determined delivery). If this is omitted, the message is delivered immediately. Mail:send ,monday - sends the draft for delivery next Monday and files a copy in the current folder Mail:send 1(standard) - sends the first message in folder STANDARD and files a copy in the current folder
If the message is sent successfully, then by default a copy of it is filed in the current folder. The <folder name> parameter is used to direct the copy to another folder. A dummy folder .NULL (or .N) may be specified to indicate that no copy is to be filed: Mail:send /.n - sends the draft without filing a copy You can change the default so that a copy of a message is not made automatically when the message is sent (see PROFILE). With this option selected, you can cause a copy to be filed either by specifying an output folder or by specifying the keyword ".FOLDER" (or ".F") which represents the current folder: Mail:send /.f - files a copy in the current folder

Stop

KEY Mail:stop (st) Exits from the Mail program and returns to Subsystem command level. STOP is identical to Mail:QUIT.

Tidy

KEY Mail:tidy <folder name> (t) This command causes discarded messages to be purged from the indicated folder (by default, the current folder). TIDY is irreversible. The remaining messages in the folder are ordered by transmission date, and hence the message index numbers change. If the current folder is tidied, the current message becomes the first in the folder. Mail:tidy Folder M#INBOX contains 15 messages

Vedit

KEY Mail:Vedit (v) This command operates exactly as CHEF, ECCE, EDIT or EM. However, the editor actually invoked by Vedit can be specified by the user. Vedit is initially set to invoke CHEF; this can be changed by use of the PROFILE command.

Mail Hosts

KEY SKIP

>SUBSYS.VD_LOCAL,K


Alert

KEY ALERT Latest update: 08/06/85 * The COMPOSE command has been enhanced to include a facility for modifying text during input, using tilde escapes. * The POST command now files copies as SEND does. * The POST command now retains spaces within addresses and also expands any aliases found.
ALERT Latest update: 16/08/82 * Commands which take a "message list" parameter (specifying a group of messages) such as LIST, SCAN, DISCARD, FORWARD etc. will now accept complex message lists which include the operators AND '&', NOT '~', OR ',' and parentheses '(', ')'. Hence '(from="smith",to="smith") and not last20' selects all correspondence with "smith" excluding the last 20 messages in the folder. The normal rules of precedence apply so that NOT is most binding, followed by AND then OR. Parentheses may be used to override this. * The NEXT and PREVIOUS commands now accept a <message> parameter with the effect that the next (previous) message which matches the parameter is listed, e.g. 'NEXT FROM=SMITH'. With no parameter the commands operate as before and list the next (previous) undiscarded message. * The <return> key causes successive NEW messages only to be listed. Selecting a PROFILE option can widen the scope of <return> so that it lists successive messages in the folder whether new or not. * Another PROFILE option is available which gives a warning whenever the draft message is about to be overwritten (say by COMPOSE or REPLY). After the warning is issued Mail asks for a confirmation that it is to proceed. * The 'Acknowledge to:' message field can be used to give a recorded delivery facility. When a message containing this field is ACCEPTed, an acknowledgement is automatically sent to the address specified. The field can be added to a draft message in the usual way: Mail:compose ack . Ack to: R.Hill . Send now? : Y Alternatively, if the field is not specified in COMPOSE, reply 'N' to 'Send now? :' and add it using EDIT or COPY: Mail:edit /ack: Mail:copy /ack: Then send the draft. * You can avoid having messages automatically ACCEPTed when Mail is called by setting a new PROFILE option: Mail:profile . Auto ACCEPT on entry (YES): no
ALERT Latest update: 01/05/82 The current version of Mail contains the following new facilities: * When you call Mail with no parameter, an ACCEPT is automatically performed if there are outstanding messages. * ACCEPT can take more than one Rname parameter so that you can ACCEPT mail sent to all your aliases in one operation, e.g. Mail:accept R.Hill+Package inquiries
* Alternative ways of LISTing a message: Mail:<return> lists the current message if it is new; otherwise lists the NEXT message (strictly, the next undiscarded message) Mail:n lists message number 'n' in the folder; if 'n' is greater than the number of messages in the folder, the last is listed. Mail:0 (zero) lists the draft message. Mail:-n lists message "current-n" Mail:+n lists message "current+n"; if the message number calculated is less than 1 or greater than LAST then message 1 or LAST is listed respectively.
* At the "Mail:" prompt you can invoke any command available at command level. In addition, parameters containing ':' are interpreted as message components and are copied out to a temporary file; this filename is substituted for the component in the string passed to the command. After the command has been executed, the contents of the file are copied back if the component is in the draft, e.g. Mail:!files ,,text: outputs to the text of the draft Mail:!myprog text:2,text: uses the text of message 2 as input to a user program, with the output directed to the text of the draft Mail:!restore file1
* Alternative ways of specifying a group of messages. The keywords FIRST, LAST, NEXT, PREVIOUS may be concatenated with a number to select a group of messages, e.g. Mail:list next2 Mail:scan last5 NEXT and PREVIOUS operate with reference to the current message. These keywords may be contracted to a single letter: "N2" or "L5". In addition, message ranges of the form "10-LAST" are now allowed.
* Extensions to the DIRECTORY command. If the command fails to find an exact match it attempts to make approximate matches and prints them. The rname mask (e.g. "*smith") is therefore largely redundant. An additional facility allows the "usernumber@host" columns of the directory to be searched rather than the Rname column. In this case approximate matches are not attempted and the mask may still be of some value. Searches of this form are denoted by the presence of the '@' symbol: Mail:directory ercc82@2972 (who is he, what are his aliases?) Mail:directory ercc*@* (who works for ercc?) Mail:directory *@vax (who uses the vax?) * The call "Command:MAIL(?)" reports the number of outstanding messages, then returns to Command level. This may be of use in a process start-up file.
* A new "DN" command, representing Discard+Next, gives a quick way of discarding the current message and listing the next. * A new ALIAS command allows you to define private aliases, e.g. if you define an alias JS=J.Smith, then a message addressed "To:JS" is amended "To:J.Smith" before being dispatched.
* A new PROFILE command allows various options to be set: 1. 'V' editor. An editor of your choice is invoked by calling "Mail:vedit" 2. Specifies default parameters for use with ACCEPT. The text specified is used when ACCEPT is called without parameters. 3. Abbreviated listing to console - allows you to control whether the "Msg ID:" and "In reply to:" fields are to be displayed when a message is listed to the console. 4. Abbreviated listing to device or file - the same choice when a message is listed to a device or file. 5. Default file a copy - this determines whether a copy is automatically filed of a message being sent.