faqs.org - Internet FAQ Archives

RFC 1343 - A User Agent Configuration Mechanism for Multimedia M


Or Display the document by number



 Network Working Group N. Borenstein, Bellcore
 Request for Comments: 1343 June 1992
 A User Agent Configuration Mechanism
 For Multimedia Mail Format Information
 Status of This Memo
 This is an informational memo for the Internet community,
 and requests discussion and suggestions for improvements.
 This memo does not specify an Internet standard.
 Distribution of this memo is unlimited.
 Abstract
 This memo suggests a file format to be used to inform
 multiple mail reading user agent programs about the
 locally-installed facilities for handling mail in various
 formats. The mechanism is explicitly designed to work with
 mail systems based Internet mail as defined by RFC's 821,
 822, 934, 1049, 1113, and the Multipurpose Internet Mail
 Extensions, known as MIME. However, with some extensions it
 could probably be made to work for X.400-based mail systems
 as well. The format and mechanism are proposed in a manner
 that is generally operating-system independent. However,
 certain implementation details will inevitably reflect
 operating system differences, some of which will have to be
 handled in a uniform manner for each operating system. This
 memo makes such situations explicit, and, in an appendix,
 suggests a standard behavior under the UNIX operating
 system.
 Introduction
 The electronic mail world is in the midst of a transition
 from single-part text-only mail to multi-part, multi-media
 mail. In support of this transition, various extensions to
 RFC 821 and RFC 822 have been proposed and/or adopted,
 notably including MIME [RFC-1341]. Various parties have
 demonstrated extremely high-functionality multimedia mail,
 but the problem of mail interchange between different user
 agents has been severe. In general, only text messages have
 been shared between user agents that were not explicitly
 designed to work together. This limitation is not
 compatible with a smooth transition to a multi-media mail
 world.
 One approach to this transition is to modify diverse sets of
 mail reading user agents so that, when they need to display
 mail of an unfamiliar (non-text) type, they consult an
 external file for information on how to display that file.
 That file might say, for example, that if the content-type
 Borenstein [Page 1]
 RFC 1343 Multimedia Mail Configuration June 1992
 of a message is "foo" it can be displayed to the user via
 the "displayfoo" program.
 This approach means that, with a one-time modification, a
 wide variety of mail reading programs can be given the
 ability to display a wide variety of types of message.
 Moreover, extending the set of media types supported at a
 site becomes a simple matter of installing a binary and
 adding a single line to a configuration file. Crucial to
 this scheme, however, is that all of the user agents agree
 on a common representation and source for the configuration
 file. This memo proposes such a common representation.
 Location of Configuration Information
 Each user agent must clearly obtain the configuration
 information from a common location, if the same information
 is to be used to configure all user agents. However,
 individual users should be able to override or augment a
 site's configuration. The configuration information should
 therefore be obtained from a designated set of locations.
 The overall configuration will be obtained through the
 virtual concatenation of several individual configuration
 files known as mailcap files. The configuration information
 will be obtained from the FIRST matching entry in a mailcap
 file, where "matching" depends on both a matching content-
 type specification, an entry containing sufficient
 information for the purposes of the application doing the
 searching, and the success of any test in the "test=" field,
 if present.
 The precise location of the mailcap files is operating-
 system dependent. A standard location for UNIX is specified
 in Appendix A.
 Overall Format of a Mailcap File
 Each mailcap file consists of a set of entries that describe
 the proper handling of one media type at the local site.
 For example, one line might tell how to display a message in
 Group III fax format. A mailcap file consists of a sequence
 of such individual entries, separated by newlines (according
 to the operating system's newline conventions). Blank lines
 and lines that start with the "#" character (ASCII 35) are
 considered comments, and are ignored. Long entries may be
 continued on multiple lines if each non-terminal line ends
 with a backslash character ('\', ASCII 92), in which case
 the multiple lines are to be treated as a single mailcap
 entry. Note that for such "continued" lines, the backslash
 must be the last character on the line to be continued.
 Thus the overall format of a mailcap file is given, in the
 modified BNF of RFC 822, as:
 Borenstein [Page 2]
 RFC 1343 Multimedia Mail Configuration June 1992
 Mailcap-File = *Mailcap-Line
 Mailcap-Line = Comment / Mailcap-Entry
 Comment = NEWLINE / "#" *CHAR NEWLINE
 NEWLINE = <newline as defined by OS convention>
 Note that the above specification implies that comments must
 appear on lines all to themselves, with a "#" character as
 the first character on each comment line.
 Format of a Mailcap Entry
 Each mailcap entry consists of a number of fields, separated
 by semi-colons. The first two fields are required, and must
 occur in the specified order. The remaining fields are
 optional, and may appear in any order.
 The first field is the content-type, which indicates the
 type of data this mailcap entry describes how to handle. It
 is to be matched against the type/subtype specification in
 the "Content-Type" header field of an Internet mail message.
 If the subtype is specified as "*", it is intended to match
 all subtypes of the named content-type.
 The second field, view-command, is a specification of how
 the message or body part can be viewed at the local site.
 Although the syntax of this field is fully specified, the
 semantics of program execution are necessarily somewhat
 operating system dependent. UNIX semantics are given in
 Appendix A.
 The optional fields, which may be given in any order, are as
 follows:
 -- The "compose" field may be used to specify a program that
 can be used to compose a new body or body part in the given
 format. Its intended use is to support mail composing
 agents that support the composition of multiple types of
 mail using external composing agents. As with the view-
 command, the semantics of program execution are operating
 system dependent, with UNIX semantics specified in Appendix
 A. The result of the composing program may be data that is
 not yet suitable for mail transport -- that is, a Content-
 Transfer-Encoding may need to be applied to the data.
 -- The "composetyped" field is similar to the "compose"
 field, but is to be used when the composing program needs to
 specify the Content-type header field to be applied to the
 composed data. The "compose" field is simpler, and is
 preferred for use with existing (non-mail-oriented) programs
 for composing data in a given format. The "composetyped"
 field is necessary when the Content-type information must
 Borenstein [Page 3]
 RFC 1343 Multimedia Mail Configuration June 1992
 include auxilliary parameters, and the composition program
 must then know enough about mail formats to produce output
 that includes the mail type information.
 -- The "edit" field may be used to specify a program that
 can be used to edit a body or body part in the given format.
 In many cases, it may be identical in content to the
 "compose" field, and shares the operating-system dependent
 semantics for program execution.
 -- The "print" field may be used to specify a program that
 can be used to print a message or body part in the given
 format. As with the view-command, the semantics of program
 execution are operating system dependent, with UNIX
 semantics specified in Appendix A.
 -- The "test" field may be used to test some external
 condition (e.g. the machine architecture, or the window
 system in use) to determine whether or not the mailcap line
 applies. It specifies a program to be run to test some
 condition. The semantics of execution and of the value
 returned by the test program are operating system dependent,
 with UNIX semantics specified in Appendix A. If the test
 fails, a subsequent mailcap entry should be sought.
 Multiple test fields are not permitted -- since a test can
 call a program, it can already be arbitrarily complex.
 -- The "needsterminal" field indicates that the view-command
 must be run on an interactive terminal. This is needed to
 inform window-oriented user agents that an interactive
 terminal is needed. (The decision is not left exclusively
 to the view-command because in some circumstances it may not
 be possible for such programs to tell whether or not they
 are on interactive terminals.) The needsterminal command
 should be assumed to apply to the compose and edit commands,
 too, if they exist. Note that this is NOT a test -- it is a
 requirement for the environment in which the program will be
 executed, and should typically cause the creation of a
 terminal window when not executed on either a real terminal
 or a terminal window.
 -- The "copiousoutput" field indicates that the output from
 the view-command will be an extended stream of output, and
 is to be interpreted as advice to the UA (User Agent mail-
 reading program) that the output should be either paged or
 made scrollable. Note that it is probably a mistake if
 needsterminal and copiousoutput are both specified.
 -- The "description" field simply provides a textual
 description, optionally quoted, that describes the type of
 data, to be used optionally by mail readers that wish to
 describe the data before offering to display it.
 Borenstein [Page 4]
 RFC 1343 Multimedia Mail Configuration June 1992
 -- The "x11-bitmap" field names a file, in X11 bitmap (xbm)
 format, which points to an appropriate icon to be used to
 visually denote the presence of this kind of data.
 -- Any other fields beginning with "x-" may be included for
 local or mailer-specific extensions of this format.
 Implementations should simply ignore all such unrecognized
 fields to permit such extensions, some of which might be
 standardized in a future version of this document.
 Some of the fields above, such as "needsterminal", apply to
 the actions of the view-command, edit-command, and compose-
 command, alike. In some unusual cases, this may not be
 desirable, but differentiation can be accomplished via
 separate mailcap entries, taking advantage of the fact that
 subsequent mailcap entries are searched if an earlier
 mailcap entry does not provide enough information:
 application/postscript; ps-to-terminal %s; \
 needsterminal
 application/postscript; ps-to-terminal %s; \
 compose=idraw %s
 In RFC 822 modified BNF, the following grammar describes a
 mailcap entry:
 Mailcap-Entry = typefield ; view-command
 [";" 1#field]
 typefield = propertype / implicit-wild
 propertype = type "/" wildsubtype
 implicitwild = type
 wildsubtype = subtype / "*"
 view-command = mtext
 mtext = *mchar
 mchar = schar / qchar
 schar = * <any CHAR except
 ";", "\", and CTLS>
 qchar = "\" CHAR ; may quote any char
 field = flag / namedfield
 namedfield = fieldname "=" mtext
 flag = "needsterminal" ; All these literals are to
 Borenstein [Page 5]
 RFC 1343 Multimedia Mail Configuration June 1992
 / "copiousoutput" ; be interpreted as
 / x-token ; case-insensitive
 fieldname = / "compose" ;Also all of these
 / "composetyped" ;are case-insensitive.
 / "print"
 / "edit"
 / "test"
 / "x11-bitmap"
 / "description"
 / x-token
 Note that "type", "subtype", and "x-token" are defined in
 MIME. Note also that while the definition of "schar"
 includes the percent sign, "%", this character has a special
 meaning in at least the UNIX semantics, and will therefore
 need to be quoted as a qchar to be used literally.
 Appendix A: Implementation Details for UNIX
 Although this memo fully specifies a syntax for "mailcap"
 files, the semantics of the mailcap file are of necessity
 operating-system dependent in four respects. In order to
 clarify the intent, and to promote a standard usage, this
 appendix proposes a UNIX semantics for these four cases. If
 a mailcap mechanism is implemented on non-UNIX systems,
 similar semantic decisions should be made and published.
 Location of the Mailcap File(s)
 For UNIX, a path search of mailcap files is specified. The
 default path search is specified as including at least the
 following:
 $HOME/.mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap
 However, this path may itself be overridden by a path
 specified by the MAILCAPS environment variable.
 Semantics of executable commands
 Several portions of a mailcap entry specify commands to be
 executed. In particular, the mandatory second field, the
 view-command, takes a command to be executed, as do the
 optional print, edit, test, and compose fields.
 On a UNIX system, such commands will each be a full shell
 command line, including the path name for a program and its
 arguments. (Because of differences in shells and the
 implementation and behavior of the same shell from one
 system to another, it is specified that the command line be
 intended as input to the Bourne shell, i.e. that it is
 implicitly preceded by "/bin/sh -c " on the command line.)
 Borenstein [Page 6]
 RFC 1343 Multimedia Mail Configuration June 1992
 The two characters "%s", if used, will be replaced by the
 name of a file for the actual mail body data. In the case
 of the edit adn view-command, the body part will be passed
 to this command as standard input unless one or more
 instances of "%s" appear in the view-command, in which case
 %s will be replaced by the name of a file containing the
 body part, a file which may have to be created before the
 view-command program is executed. (Such files cannot be
 presumed to continue to exist after the view-command program
 exits. Thus a view-command that wishes to exit and continue
 processing in the background should take care to save the
 data first.) In the case of the compose and composetyped
 commands, %s should be replaced by the name of a file to
 which the composed data should be written by the programs
 named in the compose or composedtyped commands. Thus, the
 calling program will look in that file later in order to
 retrieve the composed data. If %s does not appear in the
 compose or composetyped commands, then the composed data
 will be assumed to be written by the composing programs to
 standard output.
 Furthermore, any occurrence of "%t" will be replaced by the
 content-type and subtype specification. (That is, if the
 content-type is "text/plain", then %t will be replaced by
 "text/plain".) A literal % character may be quoted as \%.
 Finally, named parameters from the Content-type field may be
 placed in the command execution line using "%{" followed by
 the parameter name and a closing "}" character. The entire
 parameter should appear as a single command line argument,
 regardless of embedded spaces. Thus, if the message has a
 Content-type line of:
 Content-type: multipart/mixed; boundary=42
 and the mailcap file has a line of:
 multipart/*; /usr/local/bin/showmulti \
 %t %{boundary}
 then the equivalent of the following command should be
 executed:
 /usr/local/bin/showmulti multipart/mixed 42
 Semantics of the "test" field
 The "test" field specifies a program to be used to test
 whether or not the current mailcap line applies. This can
 be used, for example, to have a mailcap line that only
 applies if the X window system is running, or if the user is
 running on a SPARCstation with a /dev/audio. The value of
 the "test" field is a program to run to test such a
 condition. The precise program to run and arguments to give
 it are determined as specified in the previous section. The
 Borenstein [Page 7]
 RFC 1343 Multimedia Mail Configuration June 1992
 test program should return an exit code of zero if the
 condition is true, and a non-zero code otherwise.
 Semantics of the "compose" field
 On UNIX, the composing program is expected to produce a data
 stream for such a body part as its standard output. The
 program will be executed with the command line arguments
 determined as specified above. The data returned via its
 standard output will be given a Content-Type field that has
 no supplementary parameters. For example, the following
 mailcap entry:
 audio/basic; /usr/local/bin/showaudio %t
 compose = /usr/local/bin/recordaudio
 would result in tagging the data composed by the
 "recordaudio" program as:
 Content-Type: audio/basic
 If this is unacceptable -- for example, in the case of
 multipart mail a "boundary" parameter is required -- then
 the "compose" field cannot be used. Instead, the
 "composetyped" field should be used in the mailcap file.
 Semantics of the "composetyped" field
 The "composetyped" filed is much like the "compose" field,
 except that it names a composition program that produces,
 not raw data, but data that includes a MIME-conformant type
 specification. The program will be executed with the
 command line arguments determined as specified above. The
 data returned via its standard output must begin with a
 Content-Type header, followed optionally by other Content-*
 headers, and then by a blank line and the data. For
 example, the following mailcap entry:
 multipart/mixed; /usr/local/bin/showmulti %t \
 %{boundary}; \
 composetyped = /usr/local/bin/makemulti
 would result in executing the "makemulti" program, which
 would be expected to begin its output with a line of the
 form:
 Content-Type: multipart/mixed; boundary=foobar
 Note that a composition program need not encode binary data
 in base64 or quoted-printable. It remains the responsibility
 of the software calling the composition program to encode
 such data as necessary. However, if a composing program
 does encode data, which is not encouraged, it should
 announce that fact using a Content-Transfer-Encoding header
 Borenstein [Page 8]
 RFC 1343 Multimedia Mail Configuration June 1992
 in the standard manner defined by MIME. Because such
 encodings must be announced by such a header, they are an
 option only for composetyped programs, not for compose
 programs.
 Appendix B: Sample Mailcap File
 The following is an example of a mailcap file for UNIX that
 demonstrates most of the syntax above. It contains
 explanatory comments where necessary.
 # Mailcap file for Bellcore lab 214.
 #
 # The next line sends "richtext" to the richtext
 program
 text/richtext; richtext %s; copiousoutput
 #
 # Next, basic u-law audio
 audio/*; showaudio; test=/usr/local/bin/hasaudio
 #
 # Next, use the xview program to handle several image
 formats
 image/*; xview %s; test=/usr/local/bin/RunningX
 #
 # The ATOMICMAIL interpreter uses curses, so needs a
 terminal
 application/atomicmail; /usr/local/bin/atomicmail %s; \
 needsterminal
 #
 # The next line handles Andrew format,
 # if ez and ezview are installed
 x-be2; /usr/andrew/bin/ezview %s; \
 print=/usr/andrew/bin/ezprint %s ; \
 compose=/usr/andrew/bin/ez -d %s \;
 edit=/usr/andrew/bin/ez -d %s; \;
 copiousoutput
 #
 # The next silly example demonstrates the use of
 quoting
 application/*; echo "This is \\"%t\\" but \
 is 50 \% Greek to me" \; cat %s; copiousoutput
 Appendix C: A Note on Format Translation
 It has been suggested that another function of a mailcap-
 like mechanism might be to specify the locally available
 tools for document format translation. For example, the
 file could designate a program for translating from format A
 to format B, another for translating from format B to format
 C, and finally a mechanism for displaying format C.
 Although this mechanism would be somewhat richer than the
 current mailcap file, and might conceivably also have
 utility at the message transport layer, it significantly
 Borenstein [Page 9]
 RFC 1343 Multimedia Mail Configuration June 1992
 complicates the processing effort necessary for a user agent
 that simply wants to display a message in format A. Using
 the current, simpler, mailcap scheme, a single line could
 tell such a user agent to display A-format mail using a
 pipeline of translators and the C-format viewer. This memo
 resists the temptation to complicate the necessary
 processing for a user agent to accomplish this task. Using
 the mailcap format defined here, it is only necessary to
 find the correct single line in a mailcap file, and to
 execute the command given in that line.
 References
 [RFC 822] Crocker, D., "Standard for the format of ARPA
 Internet text messages", RFC 822, UDEL, August, 1982.
 [RFC 1341] Borenstein, N., and N. Freed, "MIME
 (Multipurpose Internet Mail Extensions): Mechanisms for
 Specifying and Describing the Format of Internet Message
 Bodies", RFC 1341, Bellcore, June, 1992.
 Acknowledgements
 The author wishes to thank Malcolm Bjorn Gillies, Dan
 Heller, Olle Jaernefors, Keith Moore, Luc Rooijakkers, and
 the other members of the IETF task force on mail extensions
 for their comments on earlier versions of this draft. If
 other acknowledgements were neglected, please let me know,
 as it was surely accidental.
 Security Considerations
 Security issues are not discussed in this memo. However,
 the use of the mechanisms described in this memo can make
 it easier for implementations to slip into the kind of
 security problems discussed in the MIME document.
 Implementors and mailcap administrators should be aware of
 these security considerations, and in particular should
 exercise caution in the choice of programs to be listed in a
 mailcap file for automatic execution.
 Author's Address
 Nathaniel S. Borenstein
 MRE 2D-296, Bellcore
 445 South St.
 Morristown, NJ 07962-1910
 Email: nsb@bellcore.com
 Phone: +1 201 829 4270
 Fax: +1 201 829 7019
 Borenstein [Page 10]

User Contributions:

Comment about this RFC, ask questions, or add new information about this topic:




AltStyle によって変換されたページ (->オリジナル) /