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