]> git.llucax.com Git - software/mutt-debian.git/blob - doc/mimesupport.html
Imported Upstream version 1.5.19
[software/mutt-debian.git] / doc / mimesupport.html
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 5. Mutt's MIME Support</title><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><link rel="start" href="index.html" title="The Mutt E-Mail Client" /><link rel="up" href="index.html" title="The Mutt E-Mail Client" /><link rel="prev" href="advancedusage.html" title="Chapter 4. Advanced Usage" /><link rel="next" href="optionalfeatures.html" title="Chapter 6. Optional features" /><style xmlns="" type="text/css">
4       body { margin-left:2%; margin-right:2%; font-family:serif; }
5 .toc, .list-of-tables, .list-of-examples { font-family:sans-serif; }
6 h1, h2, h3, h4, h5, h6 { font-family:sans-serif; }
7 em.replaceable code { font-family:sans-serif; }
8 p { text-align:justify; }
9 div.table p.title, div.example p.title { font-size:smaller; font-family:sans-serif; }
10 .email, .email a { font-family:monospace; }
11 div.table-contents table { border-collapse:collapse; border:1px solid #c0c0c0; }
12 div.table-contents table td, div.table-contents table th { padding:5px; text-align:left; }
13 div.table-contents table th {
14     font-family:sans-serif;
15     background:#d0d0d0;
16     font-weight:normal;
17     vertical-align:top;
18 }
19 pre.screen, div.note { background:#f0f0f0; border:1px solid #c0c0c0; padding:5px; }
20 div.note h3 { font-size:small; font-style:italic; font-variant: small-caps; }
21 div.note h3:after { content: ":" }
22 div.note { margin-bottom: 5px; }
23
24     </style></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. Mutt's MIME Support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="advancedusage.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="optionalfeatures.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="mimesupport"></a>Chapter 5. Mutt's MIME Support</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="mimesupport.html#using-mime">1. Using MIME in Mutt</a></span></dt><dd><dl><dt><span class="sect2"><a href="mimesupport.html#mime-pager">1.1. Viewing MIME messages in the pager</a></span></dt><dt><span class="sect2"><a href="mimesupport.html#attach-menu">1.2. The Attachment Menu</a></span></dt><dt><span class="sect2"><a href="mimesupport.html#compose-menu">1.3. The Compose Menu</a></span></dt></dl></dd><dt><span class="sect1"><a href="mimesupport.html#mime-types">2. MIME Type configuration with <code class="literal">mime.types</code></a></span></dt><dt><span class="sect1"><a href="mimesupport.html#mailcap">3. MIME Viewer configuration with <code class="literal">mailcap</code></a></span></dt><dd><dl><dt><span class="sect2"><a href="mimesupport.html#mailcap-basics">3.1. The Basics of the mailcap file</a></span></dt><dt><span class="sect2"><a href="mimesupport.html#secure-mailcap">3.2. Secure use of mailcap</a></span></dt><dt><span class="sect2"><a href="mimesupport.html#advanced-mailcap">3.3. Advanced mailcap Usage</a></span></dt><dt><span class="sect2"><a href="mimesupport.html#mailcap-example">3.4. Example mailcap files</a></span></dt></dl></dd><dt><span class="sect1"><a href="mimesupport.html#auto-view">4. MIME Autoview</a></span></dt><dt><span class="sect1"><a href="mimesupport.html#alternative-order">5. MIME Multipart/Alternative</a></span></dt><dt><span class="sect1"><a href="mimesupport.html#attachments">6. Attachment Searching and Counting</a></span></dt><dt><span class="sect1"><a href="mimesupport.html#mime-lookup">7. MIME Lookup</a></span></dt></dl></div><p>
25 Quite a bit of effort has been made to make Mutt the premier text-mode
26 MIME MUA.  Every effort has been made to provide the functionality that
27 the discerning MIME user requires, and the conformance to the standards
28 wherever possible.  When configuring Mutt for MIME, there are two extra
29 types of configuration files which Mutt uses.  One is the
30 <code class="literal">mime.types</code> file, which contains the mapping of file extensions to
31 IANA MIME types.  The other is the <code class="literal">mailcap</code> file, which specifies
32 the external commands to use for handling specific MIME types.
33 </p><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="using-mime"></a>1. Using MIME in Mutt</h2></div></div></div><p>
34 There are three areas/menus in Mutt which deal with MIME, they are the
35 pager (while viewing a message), the attachment menu and the compose
36 menu.
37 </p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="mime-pager"></a>1.1. Viewing MIME messages in the pager</h3></div></div></div><p>
38 When you select a message from the index and view it in the pager, Mutt
39 decodes the message to a text representation.  Mutt internally supports
40 a number of MIME types, including <code class="literal">text/plain, text/enriched,
41 message/rfc822, and message/news</code>.  In addition, the export
42 controlled version of Mutt recognizes a variety of PGP MIME types,
43 including PGP/MIME and application/pgp.
44 </p><p>
45 Mutt will denote attachments with a couple lines describing them.
46 These lines are of the form:
47 </p><pre class="screen">
48 [-- Attachment #1: Description --]
49 [-- Type: text/plain, Encoding: 7bit, Size: 10000 --]
50 </pre><p>
51 Where the <code class="literal">Description</code> is the description or filename given for the
52 attachment, and the <code class="literal">Encoding</code> is one of
53 <code class="literal">7bit/8bit/quoted-printable/base64/binary</code>.
54 </p><p>
55 If Mutt cannot deal with a MIME type, it will display a message like:
56 </p><pre class="screen">
57 [-- image/gif is unsupported (use 'v' to view this part) --]
58 </pre></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="attach-menu"></a>1.2. The Attachment Menu</h3></div></div></div><p>
59 The default binding for <code class="literal">view-attachments</code> is `v', which displays the
60 attachment menu for a message.  The attachment menu displays a list of
61 the attachments in a message.  From the attachment menu, you can save,
62 print, pipe, delete, and view attachments.  You can apply these
63 operations to a group of attachments at once, by tagging the attachments
64 and by using the “<span class="quote">tag-prefix</span>” operator.  You can also reply to the
65 current message from this menu, and only the current attachment (or the
66 attachments tagged) will be quoted in your reply.  You can view
67 attachments as text, or view them using the mailcap viewer definition.
68 </p><p>
69 Finally, you can apply the usual message-related functions (like
70 <a class="link" href="gettingstarted.html#resend-message"><code class="literal">&lt;resend-message&gt;</code></a>, and the
71 <code class="literal">&lt;reply&gt;</code> and <code class="literal">&lt;forward&gt;</code>
72 functions) to attachments of type <code class="literal">message/rfc822</code>.
73 </p><p>
74 See the help on the attachment menu for more information.
75 </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="compose-menu"></a>1.3. The Compose Menu</h3></div></div></div><p>
76 The compose menu is the menu you see before you send a message.  It
77 allows you to edit the recipient list, the subject, and other aspects
78 of your message.  It also contains a list of the attachments of your
79 message, including the main body.  From this menu, you can print, copy,
80 filter, pipe, edit, compose, review, and rename an attachment or a
81 list of tagged attachments.  You can also modifying the attachment
82 information, notably the type, encoding and description.
83 </p><p>
84 Attachments appear as follows:
85 </p><pre class="screen">
86 - 1 [text/plain, 7bit, 1K]           /tmp/mutt-euler-8082-0 &lt;no description&gt;
87   2 [applica/x-gunzip, base64, 422K] ~/src/mutt-0.85.tar.gz &lt;no description&gt;
88 </pre><p>
89 The '-' denotes that Mutt will delete the file after sending (or
90 postponing, or canceling) the message.  It can be toggled with the
91 <code class="literal">toggle-unlink</code> command (default: u).  The next field is the MIME
92 content-type, and can be changed with the <code class="literal">edit-type</code> command
93 (default: ^T).  The next field is the encoding for the attachment,
94 which allows a binary message to be encoded for transmission on 7bit
95 links.  It can be changed with the <code class="literal">edit-encoding</code> command
96 (default: ^E).  The next field is the size of the attachment,
97 rounded to kilobytes or megabytes.  The next field is the filename,
98 which can be changed with the <code class="literal">rename-file</code> command (default: R).
99 The final field is the description of the attachment, and can be
100 changed with the <code class="literal">edit-description</code> command (default: d).
101 </p></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="mime-types"></a>2. MIME Type configuration with <code class="literal">mime.types</code></h2></div></div></div><p>
102 When you add an attachment to your mail message, Mutt searches your
103 personal mime.types file at <code class="literal">${HOME}/.mime.types</code>, and then
104 the system mime.types file at <code class="literal">/usr/local/share/mutt/mime.types</code> or
105 <code class="literal">/etc/mime.types</code>
106 </p><p>
107 The mime.types file consist of lines containing a MIME type and a space
108 separated list of extensions.  For example:
109 </p><pre class="screen">
110 application/postscript          ps eps
111 application/pgp                 pgp
112 audio/x-aiff                    aif aifc aiff
113 </pre><p>
114 A sample <code class="literal">mime.types</code> file comes with the Mutt distribution, and
115 should contain most of the MIME types you are likely to use.
116 </p><p>
117 If Mutt can not determine the mime type by the extension of the file you
118 attach, it will look at the file.  If the file is free of binary
119 information, Mutt will assume that the file is plain text, and mark it
120 as <code class="literal">text/plain</code>.  If the file contains binary information, then Mutt will
121 mark it as <code class="literal">application/octet-stream</code>.  You can change the MIME
122 type that Mutt assigns to an attachment by using the <code class="literal">edit-type</code>
123 command from the compose menu (default: ^T). The MIME type is actually a
124 major mime type followed by the sub-type, separated by a '/'. 6 major
125 types: application, text, image, video, audio, and model have been approved
126 after various internet discussions. Mutt recognizes all of these if the
127 appropriate entry is found in the mime.types file. It also recognizes other
128 major mime types, such as the chemical type that is widely used in the
129 molecular modeling community to pass molecular data in various forms to
130 various molecular viewers. Non-recognized mime types should only be used
131 if the recipient of the message is likely to be expecting such attachments.
132 </p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="mailcap"></a>3. MIME Viewer configuration with <code class="literal">mailcap</code></h2></div></div></div><p>
133 Mutt supports RFC 1524 MIME Configuration, in particular the Unix
134 specific format specified in Appendix A of RFC 1524.  This file format
135 is commonly referred to as the mailcap format.  Many MIME compliant
136 programs utilize the mailcap format, allowing you to specify handling
137 for all MIME types in one place for all programs.  Programs known to
138 use this format include Netscape, XMosaic, lynx and metamail.
139 </p><p>
140 In order to handle various MIME types that Mutt can not handle
141 internally, Mutt parses a series of external configuration files to
142 find an external handler. The default search string for these files
143 is a colon delimited list containing the following files:
144 </p><div class="orderedlist"><ol type="1"><li><p><code class="literal">$HOME/.mailcap</code></p></li><li><p><code class="literal">$PKGDATADIR/mailcap</code></p></li><li><p><code class="literal">$SYSCONFDIR/mailcap</code></p></li><li><p><code class="literal">/etc/mailcap</code></p></li><li><p><code class="literal">/usr/etc/mailcap</code></p></li><li><p><code class="literal">/usr/local/etc/mailcap</code></p></li></ol></div><p>
145 where <code class="literal">$HOME</code> is your home directory. The
146 <code class="literal">$PKGDATADIR</code> and the
147 <code class="literal">$SYSCONFDIR</code> directories depend on where mutt
148 is installed: the former is the default for shared data, the
149 latter for system configuration files.
150 </p><p>
151 The default search path can be obtained by running the following
152 command:
153 </p><pre class="screen">
154 mutt -nF /dev/null -Q mailcap_path
155 </pre><p>
156 In particular, the metamail distribution will install a mailcap file,
157 usually as <code class="literal">/usr/local/etc/mailcap</code>, which contains some baseline
158 entries.
159 </p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="mailcap-basics"></a>3.1. The Basics of the mailcap file</h3></div></div></div><p>
160 A mailcap file consists of a series of lines which are comments, blank,
161 or definitions.
162 </p><p>
163 A comment line consists of a # character followed by anything you want.
164 </p><p>
165 A blank line is blank.
166 </p><p>
167 A definition line consists of a content type, a view command, and any
168 number of optional fields.  Each field of a definition line is divided
169 by a semicolon ';' character.
170 </p><p>
171 The content type is specified in the MIME standard type/subtype method.
172 For example,
173 <code class="literal">text/plain, text/html, image/gif, </code>
174 etc.  In addition, the mailcap format includes two formats for
175 wildcards, one using the special '*' subtype, the other is the implicit
176 wild, where you only include the major type.  For example, <code class="literal">image/*</code>, or
177 <code class="literal">video,</code> will match all image types and video types,
178 respectively.
179 </p><p>
180 The view command is a Unix command for viewing the type specified. There
181 are two different types of commands supported. The default is to send
182 the body of the MIME message to the command on stdin. You can change
183 this behavior by using %s as a parameter to your view command.
184 This will cause Mutt to save the body of the MIME message to a temporary
185 file, and then call the view command with the %s replaced by
186 the name of the temporary file. In both cases, Mutt will turn over the
187 terminal to the view program until the program quits, at which time Mutt
188 will remove the temporary file if it exists.
189 </p><p>
190 So, in the simplest form, you can send a text/plain message to the
191 external pager more on stdin:
192 </p><pre class="screen">
193 text/plain; more
194 </pre><p>
195 Or, you could send the message as a file:
196 </p><pre class="screen">
197 text/plain; more %s
198 </pre><p>
199 Perhaps you would like to use lynx to interactively view a text/html
200 message:
201 </p><pre class="screen">
202 text/html; lynx %s
203 </pre><p>
204 In this case, lynx does not support viewing a file from stdin, so you
205 must use the %s syntax.
206 </p><div class="note"><h3 class="title">Note</h3><p>
207 <span class="emphasis"><em>Some older versions of lynx contain a bug where they
208 will check the mailcap file for a viewer for text/html.  They will find
209 the line which calls lynx, and run it.  This causes lynx to continuously
210 spawn itself to view the object.</em></span>
211 </p></div><p>
212 On the other hand, maybe you don't want to use lynx interactively, you
213 just want to have it convert the text/html to text/plain, then you can
214 use:
215 </p><pre class="screen">
216 text/html; lynx -dump %s | more
217 </pre><p>
218 Perhaps you wish to use lynx to view text/html files, and a pager on
219 all other text formats, then you would use the following:
220 </p><pre class="screen">
221 text/html; lynx %s
222 text/*; more
223 </pre><p>
224 This is the simplest form of a mailcap file.
225 </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="secure-mailcap"></a>3.2. Secure use of mailcap</h3></div></div></div><p>
226 The interpretation of shell meta-characters embedded in MIME parameters
227 can lead to security problems in general.  Mutt tries to quote parameters
228 in expansion of %s syntaxes properly, and avoids risky characters by
229 substituting them, see the <a class="link" href="reference.html#mailcap-sanitize" title="3.107. mailcap_sanitize">$mailcap_sanitize</a> variable.
230 </p><p>
231 Although mutt's procedures to invoke programs with mailcap seem to be
232 safe, there are other applications parsing mailcap, maybe taking less care
233 of it.  Therefore you should pay attention to the following rules:
234 </p><p>
235 <span class="emphasis"><em>Keep the %-expandos away from shell quoting.</em></span>
236 Don't quote them with single or double quotes.  Mutt does this for
237 you, the right way, as should any other program which interprets
238 mailcap.  Don't put them into backtick expansions.  Be highly careful
239 with eval statements, and avoid them if possible at all.  Trying to fix
240 broken behavior with quotes introduces new leaks - there is no
241 alternative to correct quoting in the first place.
242 </p><p>
243 If you have to use the %-expandos' values in context where you need
244 quoting or backtick expansions, put that value into a shell variable
245 and reference the shell variable where necessary, as in the following
246 example (using <code class="literal">$charset</code> inside the backtick expansion is safe,
247 since it is not itself subject to any further expansion):
248 </p><pre class="screen">
249 text/test-mailcap-bug; cat %s; copiousoutput; test=charset=%{charset} \
250         &amp;&amp; test "`echo $charset | tr '[A-Z]' '[a-z]'`" != iso-8859-1
251 </pre></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="advanced-mailcap"></a>3.3. Advanced mailcap Usage</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="optional-mailcap-fields"></a>3.3.1. Optional Fields</h4></div></div></div><p>
252 In addition to the required content-type and view command fields, you
253 can add semi-colon ';' separated fields to set flags and other options.
254 Mutt recognizes the following optional fields:
255 </p><div class="variablelist"><dl><dt><span class="term">copiousoutput</span></dt><dd><p>
256 This flag tells Mutt that the command passes possibly large amounts of
257 text on stdout.  This causes Mutt to invoke a pager (either the internal
258 pager or the external pager defined by the pager variable) on the output
259 of the view command.  Without this flag, Mutt assumes that the command
260 is interactive.  One could use this to replace the pipe to <code class="literal">more</code>
261 in the <code class="literal">lynx -dump</code> example in the Basic section:
262 </p><pre class="screen">
263 text/html; lynx -dump %s ; copiousoutput
264 </pre><p>
265 This will cause lynx to format the text/html output as text/plain
266 and Mutt will use your standard pager to display the results.
267 </p></dd><dt><span class="term">needsterminal</span></dt><dd><p>
268 Mutt uses this flag when viewing attachments with <a class="link" href="mimesupport.html#auto-view" title="4. MIME Autoview">auto_view</a>, in order to decide whether it should honor the setting
269 of the <a class="link" href="reference.html#wait-key" title="3.300. wait_key">$wait_key</a> variable or
270 not.  When an attachment is viewed using an interactive program, and the
271 corresponding mailcap entry has a <span class="emphasis"><em>needsterminal</em></span> flag, Mutt will use
272 <a class="link" href="reference.html#wait-key" title="3.300. wait_key">$wait_key</a> and the exit status
273 of the program to decide if it will ask you to press a key after the
274 external program has exited.  In all other situations it will not prompt
275 you for a key.
276 </p></dd><dt><span class="term">compose=&lt;command&gt;</span></dt><dd><p>
277 This flag specifies the command to use to create a new attachment of a
278 specific MIME type.  Mutt supports this from the compose menu.
279 </p></dd><dt><span class="term">composetyped=&lt;command&gt;</span></dt><dd><p>
280 This flag specifies the command to use to create a new attachment of a
281 specific MIME type.  This command differs from the compose command in
282 that mutt will expect standard MIME headers on the data.  This can be
283 used to specify parameters, filename, description, etc. for a new
284 attachment.   Mutt supports this from the compose menu.
285 </p></dd><dt><span class="term">print=&lt;command&gt;</span></dt><dd><p>
286 This flag specifies the command to use to print a specific MIME type.
287 Mutt supports this from the attachment and compose menus.
288 </p></dd><dt><span class="term">edit=&lt;command&gt;</span></dt><dd><p>
289 This flag specifies the command to use to edit a specific MIME type.
290 Mutt supports this from the compose menu, and also uses it to compose
291 new attachments.  Mutt will default to the defined editor for text
292 attachments.
293 </p></dd><dt><span class="term">nametemplate=&lt;template&gt;</span></dt><dd><p>
294 This field specifies the format for the file denoted by %s in the
295 command fields.  Certain programs will require a certain file extension,
296 for instance, to correctly view a file.  For instance, lynx will only
297 interpret a file as <code class="literal">text/html</code> if the file ends in <code class="literal">.html</code>.
298 So, you would specify lynx as a <code class="literal">text/html</code> viewer with a line in
299 the mailcap file like:
300 </p><pre class="screen">
301 text/html; lynx %s; nametemplate=%s.html
302 </pre></dd><dt><span class="term">test=&lt;command&gt;</span></dt><dd><p>
303 This field specifies a command to run to test whether this mailcap
304 entry should be used.  The command is defined with the command expansion
305 rules defined in the next section.  If the command returns 0, then the
306 test passed, and Mutt uses this entry.  If the command returns non-zero,
307 then the test failed, and Mutt continues searching for the right entry.
308 Note that the content-type must match before Mutt performs the test.
309 For example:
310 </p><pre class="screen">
311 text/html; netscape -remote 'openURL(%s)' ; test=RunningX
312 text/html; lynx %s
313 </pre><p>
314 In this example, Mutt will run the program RunningX which will return 0
315 if the X Window manager is running, and non-zero if it isn't.  If
316 RunningX returns 0, then Mutt will call netscape to display the
317 text/html object.  If RunningX doesn't return 0, then Mutt will go on
318 to the next entry and use lynx to display the text/html object.
319 </p></dd></dl></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="mailcap-search-order"></a>3.3.2. Search Order</h4></div></div></div><p>
320 When searching for an entry in the mailcap file, Mutt will search for
321 the most useful entry for its purpose.  For instance, if you are
322 attempting to print an <code class="literal">image/gif</code>, and you have the following
323 entries in your mailcap file, Mutt will search for an entry with the
324 print command:
325 </p><pre class="screen">
326 image/*;        xv %s
327 image/gif;      ; print= anytopnm %s | pnmtops | lpr; \
328                 nametemplate=%s.gif
329 </pre><p>
330 Mutt will skip the <code class="literal">image/*</code> entry and use the <code class="literal">image/gif</code>
331 entry with the print command.
332 </p><p>
333 In addition, you can use this with <a class="link" href="mimesupport.html#auto-view" title="4. MIME Autoview">auto_view</a>
334 to denote two commands for viewing an attachment, one to be viewed
335 automatically, the other to be viewed interactively from the attachment
336 menu.  In addition, you can then use the test feature to determine which
337 viewer to use interactively depending on your environment.
338 </p><pre class="screen">
339 text/html;      netscape -remote 'openURL(%s)' ; test=RunningX
340 text/html;      lynx %s; nametemplate=%s.html
341 text/html;      lynx -dump %s; nametemplate=%s.html; copiousoutput
342 </pre><p>
343 For <a class="link" href="mimesupport.html#auto-view" title="4. MIME Autoview">auto_view</a>, Mutt will choose the third
344 entry because of the copiousoutput tag.  For interactive viewing, Mutt
345 will run the program RunningX to determine if it should use the first
346 entry.  If the program returns non-zero, Mutt will use the second entry
347 for interactive viewing.
348 </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="mailcap-command-expansion"></a>3.3.3. Command Expansion</h4></div></div></div><p>
349 The various commands defined in the mailcap files are passed to the
350 <code class="literal">/bin/sh</code> shell using the system() function.  Before the
351 command is passed to <code class="literal">/bin/sh -c</code>, it is parsed to expand
352 various special parameters with information from Mutt.  The keywords
353 Mutt expands are:
354 </p><div class="variablelist"><dl><dt><span class="term">%s</span></dt><dd><p>
355 As seen in the basic mailcap section, this variable is expanded
356 to a filename specified by the calling program.  This file contains
357 the body of the message to view/print/edit or where the composing
358 program should place the results of composition.  In addition, the
359 use of this keyword causes Mutt to not pass the body of the message
360 to the view/print/edit program on stdin.
361 </p></dd><dt><span class="term">%t</span></dt><dd><p>
362 Mutt will expand %t to the text representation of the content
363 type of the message in the same form as the first parameter of the
364 mailcap definition line, ie <code class="literal">text/html</code> or
365 <code class="literal">image/gif</code>.
366 </p></dd><dt><span class="term">%{&lt;parameter&gt;}</span></dt><dd><p>
367 Mutt will expand this to the value of the specified parameter
368 from the Content-Type: line of the mail message.  For instance, if
369 Your mail message contains:
370 </p><pre class="screen">
371 Content-Type: text/plain; charset=iso-8859-1
372 </pre><p>
373 then Mutt will expand %{charset} to iso-8859-1.  The default metamail
374 mailcap file uses this feature to test the charset to spawn an xterm
375 using the right charset to view the message.
376 </p></dd><dt><span class="term">\%</span></dt><dd><p>
377 This will be replaced by a %
378 </p></dd></dl></div><p>
379 Mutt does not currently support the %F and %n keywords
380 specified in RFC 1524.  The main purpose of these parameters is for
381 multipart messages, which is handled internally by Mutt.
382 </p></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="mailcap-example"></a>3.4. Example mailcap files</h3></div></div></div><p>
383 This mailcap file is fairly simple and standard:
384 </p><pre class="screen">
385 # I'm always running X :)
386 video/*;        xanim %s &gt; /dev/null
387 image/*;        xv %s &gt; /dev/null
388
389 # I'm always running netscape (if my computer had more memory, maybe)
390 text/html;      netscape -remote 'openURL(%s)'
391 </pre><p>
392 This mailcap file shows quite a number of examples:
393 </p><pre class="screen">
394 # Use xanim to view all videos   Xanim produces a header on startup,
395 # send that to /dev/null so I don't see it
396 video/*;        xanim %s &gt; /dev/null
397
398 # Send html to a running netscape by remote
399 text/html;      netscape -remote 'openURL(%s)'; test=RunningNetscape
400
401 # If I'm not running netscape but I am running X, start netscape on the
402 # object
403 text/html;      netscape %s; test=RunningX
404
405 # Else use lynx to view it as text
406 text/html;      lynx %s
407
408 # This version would convert the text/html to text/plain
409 text/html;      lynx -dump %s; copiousoutput
410
411 # I use enscript to print text in two columns to a page
412 text/*;         more %s; print=enscript -2Gr %s
413
414 # Netscape adds a flag to tell itself to view jpegs internally
415 image/jpeg;xv %s; x-mozilla-flags=internal
416
417 # Use xv to view images if I'm running X
418 # In addition, this uses the \ to extend the line and set my editor
419 # for images
420 image/*;xv %s; test=RunningX; \
421         edit=xpaint %s
422
423 # Convert images to text using the netpbm tools
424 image/*;  (anytopnm %s | pnmscale -xysize 80 46 | ppmtopgm | pgmtopbm |
425 pbmtoascii -1x2 ) 2&gt;&amp;1 ; copiousoutput
426
427 # Send excel spreadsheets to my NT box
428 application/ms-excel; open.pl %s
429 </pre></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="auto-view"></a>4. MIME Autoview</h2></div></div></div><p>
430 In addition to explicitly telling Mutt to view an attachment with the
431 MIME viewer defined in the mailcap file, Mutt has support for
432 automatically viewing MIME attachments while in the pager.
433 </p><p>
434 To work, you must define a viewer in the mailcap file which uses the
435 <code class="literal">copiousoutput</code> option to denote that it is non-interactive.
436 Usually, you also use the entry to convert the attachment to a text
437 representation which you can view in the pager.
438 </p><p>
439 You then use the <code class="literal">auto_view</code> muttrc command to list the
440 content-types that you wish to view automatically.
441 </p><p>
442 For instance, if you set auto_view to:
443 </p><pre class="screen">
444 auto_view text/html application/x-gunzip \
445   application/postscript image/gif application/x-tar-gz
446 </pre><p>
447 Mutt could use the following mailcap entries to automatically view
448 attachments of these types.
449 </p><pre class="screen">
450 text/html;      lynx -dump %s; copiousoutput; nametemplate=%s.html
451 image/*;        anytopnm %s | pnmscale -xsize 80 -ysize 50 | ppmtopgm | \
452                 pgmtopbm | pbmtoascii ; copiousoutput
453 application/x-gunzip;   gzcat; copiousoutput
454 application/x-tar-gz; gunzip -c %s | tar -tf - ; copiousoutput
455 application/postscript; ps2ascii %s; copiousoutput
456 </pre><p>
457 “<span class="quote">unauto_view</span>” can be used to remove previous entries from the autoview list.
458 This can be used with message-hook to autoview messages based on size, etc.
459 “<span class="quote">unauto_view *</span>” will remove all previous entries.
460 </p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="alternative-order"></a>5. MIME Multipart/Alternative</h2></div></div></div><p>
461 Mutt has some heuristics for determining which attachment of a
462 multipart/alternative type to display.  First, mutt will check the
463 alternative_order list to determine if one of the available types
464 is preferred.  The alternative_order list consists of a number of
465 mimetypes in order, including support for implicit and explicit
466 wildcards, for example:
467 </p><pre class="screen">
468 alternative_order text/enriched text/plain text application/postscript image/*
469 </pre><p>
470 Next, mutt will check if any of the types have a defined
471 <a class="link" href="mimesupport.html#auto-view" title="4. MIME Autoview">auto_view</a>, and use that.  Failing
472 that, Mutt will look for any text type.  As a last attempt, mutt will
473 look for any type it knows how to handle.
474 </p><p>
475 To remove a MIME type from the <code class="literal">alternative_order</code> list, use the
476 <code class="literal">unalternative_order</code> command.
477 </p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="attachments"></a>6. Attachment Searching and Counting</h2></div></div></div><p>
478 If you ever lose track of attachments in your mailboxes, Mutt's
479 attachment-counting and -searching support might be for you.  You can
480 make your message index display the number of qualifying attachments in
481 each message, or search for messages by attachment count.  You also can
482 configure what kinds of attachments qualify for this feature with the
483 attachments and unattachments commands.
484 </p><p>
485 In order to provide this information, mutt needs to fully MIME-parse
486 all messages affected first. This can slow down operation especially for
487 remote mail folders such as IMAP because all messages have to be
488 downloaded first regardless whether the user really wants to view them
489 or not.
490 </p><p>
491 The syntax is:
492 </p><pre class="screen">
493 attachments   {+|-}disposition mime-type
494 unattachments {+|-}disposition mime-type
495 attachments   ?
496 </pre><p>
497 Disposition is the attachment's Content-disposition type -- either
498 <code class="literal">inline</code> or <code class="literal">attachment</code>.
499 You can abbreviate this to <code class="literal">I</code> or <code class="literal">A</code>.
500 </p><p>
501 Disposition is prefixed by either a + symbol or a - symbol.  If it's
502 a +, you're saying that you want to allow this disposition and MIME
503 type to qualify.  If it's a -, you're saying that this disposition
504 and MIME type is an exception to previous + rules.  There are examples
505 below of how this is useful.
506 </p><p>
507 Mime-type is, unsurprisingly, the MIME type of the attachment you want
508 to affect.  A MIME type is always of the format <code class="literal">major/minor</code>, where
509 <code class="literal">major</code> describes the broad category of document you're looking at, and
510 <code class="literal">minor</code> describes the specific type within that category.  The major
511 part of mime-type must be literal text (or the special token “<span class="quote"><code class="literal">*</code></span>”), but
512 the minor part may be a regular expression.  (Therefore, “<span class="quote"><code class="literal">*/.*</code></span>” matches
513 any MIME type.)
514 </p><p>
515 The MIME types you give to the attachments directive are a kind of
516 pattern.  When you use the attachments directive, the patterns you
517 specify are added to a list.  When you use unattachments, the pattern
518 is removed from the list.  The patterns are not expanded and matched
519 to specific MIME types at this time -- they're just text in a list.
520 They're only matched when actually evaluating a message.
521 </p><p>
522 Some examples might help to illustrate.  The examples that are not
523 commented out define the default configuration of the lists.
524 </p><div class="example"><a id="ex-attach-count"></a><p class="title"><b>Example 5.1. Attachment counting</b></p><div class="example-contents"><pre class="screen">
525 ## Removing a pattern from a list removes that pattern literally. It
526 ## does not remove any type matching the pattern.
527 ##
528 ##  attachments   +A */.*
529 ##  attachments   +A image/jpeg
530 ##  unattachments +A */.*
531 ##
532 ## This leaves "attached" image/jpeg files on the allowed attachments
533 ## list. It does not remove all items, as you might expect, because the
534 ## second */.* is not a matching expression at this time.
535 ##
536 ## Remember: "unattachments" only undoes what "attachments" has done!
537 ## It does not trigger any matching on actual messages.
538
539
540 ## Qualify any MIME part with an "attachment" disposition, EXCEPT for
541 ## text/x-vcard and application/pgp parts. (PGP parts are already known
542 ## to mutt, and can be searched for with ~g, ~G, and ~k.)
543 ##
544 ## I've added x-pkcs7 to this, since it functions (for S/MIME)
545 ## analogously to PGP signature attachments. S/MIME isn't supported
546 ## in a stock mutt build, but we can still treat it specially here.
547 ##
548 attachments   +A */.*
549 attachments   -A text/x-vcard application/pgp.*
550 attachments   -A application/x-pkcs7-.*
551
552 ## Discount all MIME parts with an "inline" disposition, unless they're
553 ## text/plain. (Why inline a text/plain part unless it's external to the
554 ## message flow?)
555 ##
556 attachments   +I text/plain
557
558 ## These two lines make Mutt qualify MIME containers.  (So, for example,
559 ## a message/rfc822 forward will count as an attachment.)  The first
560 ## line is unnecessary if you already have "attach-allow */.*", of
561 ## course.  These are off by default!  The MIME elements contained
562 ## within a message/* or multipart/* are still examined, even if the
563 ## containers themseves don't qualify.
564 ##
565 #attachments  +A message/.* multipart/.*
566 #attachments  +I message/.* multipart/.*
567
568 ## You probably don't really care to know about deleted attachments.
569 attachments   -A message/external-body
570 attachments   -I message/external-body
571 </pre></div></div><br class="example-break" /><p>
572 Entering the command “<span class="quote"><code class="literal">attachments ?</code></span>”
573 as a command will list your current settings in Muttrc format, so that
574 it can be pasted elsewhere.
575 </p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="mime-lookup"></a>7. MIME Lookup</h2></div></div></div><p>
576 Mutt's mime_lookup list specifies a list of mime-types that should not
577 be treated according to their mailcap entry.  This option is designed to
578 deal with binary types such as application/octet-stream.  When an attachment's
579 mime-type is listed in mime_lookup, then the extension of the filename will
580 be compared to the list of extensions in the mime.types file.  The mime-type
581 associated with this extension will then be used to process the attachment
582 according to the rules in the mailcap file and according to any other configuration
583 options (such as auto_view) specified.  Common usage would be:
584 </p><pre class="screen">
585 mime_lookup application/octet-stream application/X-Lotus-Manuscript
586 </pre><p>
587 In addition, the unmime_lookup command may be used to disable this feature
588 for any particular mime-type if it had been set, for example, in a global
589 muttrc.
590 </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="advancedusage.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="optionalfeatures.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 4. Advanced Usage </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 6. Optional features</td></tr></table></div></body></html>