1 12/07/83  Mail System Message Format
  2 
  3 A message is the basic unit of communication between users.
  4 
  5 There are two types of message: ordinary and interactive.  An
  6 interactive message is a message which is displayed immediately on the
  7 user's terminal when it is delivered.  An ordinary message is a message
  8 which is only displayed at the user's explicit request after it has
  9 been delivered.  Whenever the mail system delivers an ordinary message
 10 to a user, it also delivers an interactive message to inform the user
 11 that the ordinary message was just delivered.
 12 
 13 
 14 Message structure:
 15 The mail system represents a message as a structured object comprised
 16 of four parts: an envelope, a header, a redistributions list, and a
 17 body.  With the exception of the body, each of these parts contains
 18 several fields.
 19 
 20 The message envelope describes when, by whom, and via what route the
 21 message was mailed and subsequently delivered.
 22 
 23 The message header contains the message's subject, author(s), and
 24 recipient(s).  For a message which is a reply to other messages, the
 25 header contains information which identifies those original messages.
 26 The header may also contain additional fields which are used by user
 27 written application programs.
 28 
 29 
 30 The redistributions list records each time the message was
 31 redistributed (forwarded) by one user to another.  The information
 32 recorded for each redistribution includes the user(s) who requested the
 33 redistribution, the date/time it was requested, the recipient(s) of the
 34 redistribution, and an optional comment.
 35 
 36 The message body is the actual content of the message.  The body is
 37 divided into one or more sections.  Each section may have its own
 38 distinct structure and formatting instructions.
 39 
 40 
 41 List of message envelope fields:
 42 Posted-Date
 43    is the date/time that the message was given to the mail system for
 44    delivery.  This field is only present if the message was not created
 45    and posted simultaneously.
 46 Sender
 47    is the address of the actual user who gave the message to the mail
 48    system for delivery.  This field is only present if there is more
 49    than one author of the message or if the author was not the user who
 50    gave the message to the mail system.
 51 Route
 52    is only present in messages which originated on another computer
 53    system and lists the systems through which the message was relayed
 54    in order to reach this system.
 55 
 56 
 57 Relayed
 58    is only present in messages which originated on another computer
 59    system and describes a single relay operation.  This field includes
 60    the date/time of the relay, the sending and receiving systems, and
 61    an optional description of the protocols used.  This field may
 62    appear in the message more than once.
 63 Delivery-Date
 64    is the date/time that the mail system delivered this message to the
 65    user's mailbox.  This field is only present if the message was not
 66    posted and delivered simultaneously.
 67 Delivery-By
 68    is the address of the actual user in whose process the mail system
 69    delivered this message to the user's mailbox.  This field is only
 70    present if the delivery agent was different from the sender.
 71 
 72 
 73 Acknowledge-To
 74    is the address of the user who is to receive an acknowledgement when
 75    this message is read by a recipient.  This field is only present if
 76    the message requests an acknowledgement.
 77 
 78 
 79 List of message header fields:
 80    With the exception of the Date, From, Access-Class, and Message-ID
 81    fields, all fields in the message header are optional.
 82 
 83 Date
 84    is the date/time that the message body was created.
 85 From
 86    is the list of addresses of the user(s) responsible for the content
 87    of the message.  These users are also known as the authors of the
 88    message.
 89 Subject
 90    is the subject of the message.
 91 
 92 
 93 Reply-To
 94    is the list of addresses of the recipients for any future replies to
 95    this message.  If this field is not present, replies will be sent to
 96    the authors as listed in the From field.
 97 To
 98    is the list of addresses of the primary recipients of the message.
 99 cc
100    is the list of addresses of the secondary recipients of the message.
101 bcc
102    is the list of addresses of the "blind" recipients of the message.
103    The copies of the message delivered to the primary and secondary
104    recipients do not include this list.
105 
106 
107 In-Reply-To
108    is the list of references to the messages for which this message is
109    a reply.  Each reference includes the values of the referenced
110    message's Date, From, Subject, and Message-ID fields.
111 Access-Class
112    is the Access Isolation Mechanism (AIM) access class of the message.
113    A user may read the message only if his process authorization is
114    greater than or equal to this access class; a user may delete the
115    message only if his authorization is equal to this access class.
116 Message-ID
117    is the unique identifier associated with the body of the message.
118    If two messages have the same value for this field, they contain the
119    same message body; however, their envelopes, headers, and
120    redistribution lists may differ.
121 
122 
123 List of message redistribution fields:
124    In addition to the fields described in this, each redistribution
125    also has its own envelope which contains the fields described above.
126    For a redistribution, however, the envelope fields are called
127    Redistributed-Posted-Date, Redistributed-Sender, etc.  With the
128    exception of the Redistributed-Date, Redistributed-From, and
129    Redistributed-Message-ID fields, all fields in a redistribution are
130    optional.
131 
132 Redistributed-Date
133    is the date/time that the redistribution was requested and the
134    redistribution's comment, if any, was created.
135 Redistributed-From
136    is the list of addresses of the user(s) who requested that the
137    redistribution take place.
138 
139 
140 Redistributed-To
141    is the list of addresses of the recipients of the redistribution.
142 Redistributed-Comment
143    is the text of the comment associated with the redistribution of the
144    message.
145 Redistributed-Message-ID
146    is the unique identifier associated with the redistribution.  If two
147    redistributions in multiple copies of a message have the same value
148    for this field, they are the same redistribution.
149 
150 
151 Printed representation of a message:
152 The printed representation of a message is the human readable form of
153 that message.  It is used by the mail system when displaying a message.
154 
155 
156 The basic format of the printed representation is --
157 
158      <envelope>
159      <header>
160      <redistributions list>
161 
162      <body>
163 
164 where <envelope> is the printed representation of the message envelope,
165 etc.  As can be seen from the above, the printed representation of the
166 message body is separated from the other parts of the message by a
167 blank line; the printed representations of the envelope, header, and
168 redistributions list, on the other hand, are contiguous.
169 
170 
171 The user may request that different levels of detail should be used
172 when displaying the contents of the envelope, header, and
173 redistributions list.  The message header and redistributions list may
174 be displayed in long, default, or brief form; the message envelope may
175 be displayed only in long or default form.
176 
177 
178 Printed representation of the message envelope:
179 The long form of the printed representation of the message envelope
180 follows:
181 
182      Posted-Date:  <date-string>
183      Sender:  <address>
184      Route:  <address-route>
185      Relayed:  from <sending-host> to <receiving-host> using
186                <mail-protocol> with <comm-protocol> via <comm-media> ID
187                <message-id> for <address>; <date-string>
188      Relayed:  ...
189      Delivery-Date:  <date-string>
190      Delivery-By:  <address>
191      Acknowledge-To:  <address>
192 
193 
194 The Route and Relayed fields are only displayed in the long form of the
195 message envelope.  The first Relayed field displayed describes the
196 oldest relay operation and the last Relayed field describes the most
197 recent relay operation.
198 
199 The Acknowledge-To field is only displayed if the message requests an
200 acknowledgement.
201 
202 
203 In the long form of the message envelope, all fields except the Route,
204 Relayed, and Acknowledge-To fields are displayed.  If the Posted-Date
205 field is not present, the value of the Date field in the message header
206 is used; if the Delivery-Date field is not present, the value of the
207 Posted-Date field (or, if needed, the Date field) is used.  If the
208 Sender field is not present, the single address in the From field of
209 the message header is used; if the Delivery-By field is not present,
210 the value of the Sender field (or, if needed, the From field) is used.
211 
212 In the default form of the message envelope, the Posted-Date field is
213 displayed only if its value differs from the Date field of the message
214 header; the Delivery-Date field is displayed only if its value differs
215 from the Posted-Date field.  The Sender field is displayed on if its
216 value differs from the From field of the message header; the
217 Delivery-By field is displayed only if its value differs from the
218 Sender field.
219 
220 
221 Printed representation of the message header:
222 The long form of the printed represenation of the message header
223 follows:
224 
225      Date:  <long-date-string>
226      From:  <address-list>
227      Subject:  <text-string>
228      Reply-To:  <address-list>
229      To:  <address-list>
230      cc:  <address-list>
231      bcc:  <address-list>
232      In-Reply-To:  <message-reference-list>
233      Access-Class:  <AIM-class>
234      Message-ID:  <message-id>
235      <user-field-name>:  <field-value>
236      <user-field-name>:  ...
237 
238 
239 The optional fields in the message header are not displayed unless they
240 are present in the header.  (Ie: the field name will not be displayed
241 without a subsequent field value).
242 
243 The Access-Class field is always displayed in the long form of the
244 header.  It is ommitted from the default form if it is equal to the
245 user's process authorization.  It is always ommitted from the brief
246 form of the header.
247 
248 The Message-ID field is only displayed in the long form of the header.
249 
250 
251 In the brief form of the message header, the Date and From fields are
252 always displayed.  The Subject field is displayed if present.  None of
253 the other fields in the header are displayed.  However, if the user is
254 not the only recipient of the message, the following psuedo-field is
255 displayed in place of the To, cc, and bcc fields:
256 
257      Recipients:  {Yourself and} N others
258 
259 where N is the number of recipients of the message in addition to the
260 user.  The string "Yourself and" is displayed only if the user is
261 explicitly mentioned in one of the To, cc, or bcc fields.
262 
263 
264 Printed representation of the redistributions list:
265 The long form of the printed representation of the redistributions list
266 follows:
267 
268      <redistribution-1>
269      .....
270      <redistribution-N>
271 
272 where <redistribution-1> is the first (oldest) redistribution of the
273 message and <redistribution-N> is the last (latest) redistribution of
274 the message.
275 
276 
277 The long form of the printed representation of a single redistribution
278 follows:
279 
280      <envelope>
281      Redistributed-Date:  <date-string>
282      Redistributed-From:  <address-list>
283      Redistributed-To:  <address-list>
284      Redistributed-Comment:
285                <text-string>
286      Redistributed-Message-ID:  <message-id>
287 
288 where <envelope> is the printed representation of the redistribution's
289 envelope as described above.  However, all field names in the envelope
290 are prefixed with the string "Redistributed-".  The redistribution
291 envelope's printed representation is ommitted from the brief form of
292 the redistribution.
293 
294 
295 The optional fields in the redistribution are not displayed unless they
296 are present in the redistribution.  (Ie: the field name will not be
297 displayed without a subsequent field value).
298 
299 In the brief form of a redistribution, the Redistributed-To field is
300 replaced by a Redistributed-Recipients psuedo-field as described above
301 for the To, cc, and bcc fields.
302 
303 The Redistributed-Message-ID field is ommitted from the default and
304 brief forms of the redistribution.
305 
306 The entire redistribution is ommitted from the brief form of the
307 redistributions list if it does contain a comment.
308 
309 
310 If the last redistribution is ommitted from the brief form of the
311 redistributions list, the Last-Redistributed psuedo field is displayed
312 in its place.  The format of this field is
313 
314       Last-Redistributed:  <date-string> by <address>
315 
316 
317 Canonical form of a message:
318 The canonical form of a message is a variant of the default form of the
319 printed representation of the message.  The canonical form is used by
320 the mail system when storing the message in a mailbox or searching the
321 message for a given character string.
322 
323 
324 The canonical form of a message differs from the default printed
325 representation as follows:
326 
327 In the canonical form, the redistributions list appears before the
328 message envelope; in the default printed representation, it appears
329 after the message header.
330 
331 In the canonical form, the redistributions appear in reverse
332 chronological order (ie: the latest redistribution is first, etc.); in
333 the default printed representation, they are in chronological order.
334 
335 The Message-ID, Route, and Relayed fields are included in the canonical
336 form; they are omitted from the default printed representation.
337 
338 
339 List of field value representations:
340 <date-string>
341    is the printed representation of a date/time.  Its format is
342          DD Month YYYY HH:MM zone
343    For example:
344          9 April 1983 12:17 edt
345 
346 <long-date-string>
347    is the printed representation of a date/time.  Its format is
348          DayName, DD Month YYYY HH:MM zone
349    For example:
350          Saturday, 9 April 1983 12:17 edt
351 
352 
353 <address>
354    is the printed representation of the address in the given field.
355    For a description of these representations, type:
356          help addresses.gi -section printed representations
357 
358 <address-list>
359    is the printed representation of a list of addresses.  Its format is
360          <address-1>, <address-2>, ..., <address-N>
361 
362 <address-route>
363    is the printed representation of an address route.  For a
364    description of this representation, type:
365          help addresses.gi -section printed representations
366 
367 
368 <text-string>
369    is the printed representation of the text comprising the given
370    field.  This representation consists of the acutal text with two
371    exceptions.  If the text is more than one line long, each additional
372    line is indented by an amount equal to the indentation of the first
373    line of the text  If any line in the text is blank, the string "--"
374    is placed on that line just before the left margin of actual text.
375    For example:
376         Subject:  Sample text field that is multiple lines
377                        with some lines indented more than others
378                 --
379                    and also some blank lines.
380 
381 
382 <message-reference-list>
383    is the printed representation of a set of message references.  The
384    printed representation of a single message reference has the
385    following format:
386          Message of <date-string> from <address-name>
387    where <address-name> is the address name of the first address in the
388    From field of the referenced message.  If this address does not have
389    a name, its printed representation is used instead.  For example:
390          Message of 1 May 1983 17:49 edt from Gary Palter
391    If the list contains multiple references, they are separated by
392    commas and the second through last references are indented by
393    sufficient whitespace to align them with the first reference.  For
394    example:
395          In-Reply-To:  Message of 9 April 1983 14:50 edt ...,
396                        Message of 1 May 1983 10:17 edt from ...
397 
398 
399 <AIM-class>
400    is the printed representation of an AIM access class as returned by
401    the standard system subroutine convert_authorization_$to_string_short.
402 
403 <message-id>
404    is the printed representation of a unique identifier.  Its format is
405          <STR {at HOST}>
406    where STR is the actual unique identifier which, if generated by a
407    Multics system, will be the long form of a request ID.  (Type:
408          help request_ids.gi
409    for a description of the format of a request ID).  If the identifier
410    was generated by a foreign system, that system's name is included in
411    the printed representation in the "at HOST' phrase.  The angle
412    brackets (<>) above are actually part of the representation; the
413    braces ({}) are not.
414 
415 
416 <user-field-name>
417    is the name of a user-defined field in the message header.
418 
419 <field-value>
420    is the printed representation of the value of a user-defined field.
421    It will be a <date-string>, <address-list>, or <text-string>.
422 
423 <sending-host>
424    is the name of the sending system for a relay operation.
425 
426 <receiving-host>
427    is the name of the receiving system for a relay operation.
428 
429 
430 <mail-protocol>
431    is the name of the mail transport protocol used for a relay
432    operation.
433 
434 <comm-protocol>
435    is the name of the communications protocol used for a relay
436    operation.
437 
438 <comm-media>
439    is the name of the communications media used for a relay operation.