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