File: makemime.html

package info (click to toggle)
courier 1.0.16-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 49,264 kB
  • sloc: ansic: 128,070; cpp: 24,331; sh: 8,958; perl: 4,127; makefile: 3,243; sed: 16
file content (400 lines) | stat: -rw-r--r-- 27,049 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>makemime</title><link rel="stylesheet" type="text/css" href="style.css"/><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"/><link rel="home" href="#makemime" title="makemime"/><link xmlns="" rel="stylesheet" type="text/css" href="manpage.css"/><meta xmlns="" name="MSSmartTagsPreventParsing" content="TRUE"/><link xmlns="" rel="icon" href="icon.gif" type="image/gif"/><!--

Copyright 1998 - 2009 Double Precision, Inc.  See COPYING for distribution
information.

--></head><body><div class="refentry"><a id="makemime" shape="rect"> </a><div class="titlepage"/><div class="refnamediv"><h2>Name</h2><p>makemime — Create MIME-formatted messages</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">makemime</code>  [<em class="replaceable"><code>options</code></em>...]</p></div><div class="cmdsynopsis"><p><code class="command">makemime</code>  [@<em class="replaceable"><code>filename</code></em>]</p></div></div><div class="refsect1"><a id="makemime_description" shape="rect"> </a><h2>DESCRIPTION</h2><p>
<span class="command"><strong>makemime</strong></span> creates MIME-formatted messages of arbitrary
complexity.
<span class="command"><strong>makemime</strong></span> reads one or more individual files,
MIME-encodes them, adds basic MIME headers, and adds any additional headers
specified bye command line options. The result is saved to another file or
standard output. Complex MIME-formatted messages are created by piping together
multiple instances of <span class="command"><strong>makemime</strong></span>.
Advanced options direct <span class="command"><strong>makemime</strong></span> to
<code class="function">fork</code>() itself, and handle the details of setting up all
the pipelines.</p><p>
In most cases, options for <span class="command"><strong>makemime</strong></span> come directly from the
command line. @<code class="filename">filename</code> reads the options from a file.
"<code class="literal">@&amp;<em class="replaceable"><code>n</code></em></code>" reads options from a pipe
on file descriptor #<em class="replaceable"><code>n</code></em>.
"<code class="literal">@-</code>" is a shortcut for
"<code class="literal">@&amp;0</code>", which reads options from standard input.</p><p>
When options are read from a file or a pipe, each option must be on a
line by itself. If an option requires an argument, the argument must follow
on the next line.</p><p>
For readability, leading whitespace is deleted when options
are read from a file or a pipe. Empty lines are also ignored, as well as lines
that begin with the '<span class="token">#</span>' character.</p><p>
Options and their arguments may contain characters that are special
characters to the shell, such as '<span class="token">(</span>' and '<span class="token">)</span>'.
These characters must be backslashed when specified on the command line, to
avoid their special meaning to the shell.
These characters MUST NOT be backslashed when options are read
from a file or a pipe. Similarly, the contents of most headers nearly always
include spaces.  Therefore they must be quoted when specified on the command
line.  Header contents MUST NOT be quoted when options come from a file or a
pipe.</p><p><span class="command"><strong>makemime</strong></span> reads the content to be formatted
as a MIME message from some other file.
The files can also be a pipe. It is possible to supply both the
options and a file from the same pipe, by terminating the options list with
a line containing the single character "-". The remainder of the pipe will be
available to be used as an input file (which must be explicitly specified
by one of the options). Of course, only one input file can come from a single
pipe.</p><div class="refsect2"><a id="makemime_mime_overview" shape="rect"> </a><h3>MIME overview</h3><p>
A MIME-formatted message contains one or several MIME sections. MIME headers
specify how multiple MIME sections are to be interpreted as a whole (whether
they are attached together; whether they are alternative representations of
the same content; or something even more esoteric). This manual page gives a
very brief, terse, overview of basic MIME concepts. The description is biased
towards describing the functionality of the <span class="command"><strong>makemime</strong></span>
utility.
See
<a class="ulink" href="http://www.rfc-editor.org/rfc/rfc2045.txt" target="_top" shape="rect">RFC 2045</a>,
<a class="ulink" href="http://www.rfc-editor.org/rfc/rfc2046.txt" target="_top" shape="rect">RFC 2046</a>,
<a class="ulink" href="http://www.rfc-editor.org/rfc/rfc2047.txt" target="_top" shape="rect">RFC 2047</a>,
<a class="ulink" href="http://www.rfc-editor.org/rfc/rfc2048.txt" target="_top" shape="rect">RFC 2048</a>, and
<a class="ulink" href="http://www.rfc-editor.org/rfc/rfc2048.txt" target="_top" shape="rect">RFC 2049</a>
for a formal definition of MIME-formatted messages.</p><p>
Each file in a MIME message is encoded as a single MIME section. A MIME
section consists of at least one header line,
"<code class="literal">Content-Type:</code>".
The "<code class="literal">Content-Type:</code>" header gives the type of the data 
ontained in the file. Other header lines may also be present.
Their relative order does not matter. MIME
headers are followed by a blank line, then the contents of the file, encoded
appropriately.
All MIME sections generated by <span class="command"><strong>makemime</strong></span> will always
contain another header,
"<code class="literal">Content-Transfer-Encoding:</code>". This header gives the
encoding method used for the file; it is an optional header, but
<span class="command"><strong>makemime</strong></span> always creates it.</p><p>
The MIME encoding method defaults to
"<code class="literal">7bit</code>" if this header is absent.
<code class="literal">7bit</code>
encoding is only suitable for plain text messages in the US-ASCII character
set.
The "<code class="literal">8bit</code>" encoding method is used by plain text messages
in other character sets that use octets with the high bit set. An
alternative to 8bit encoding is
"<code class="literal">quoted-printable</code>". The "<code class="literal">base64</code>" encoding
method is used for files containing binary data (anything other than plain
text).</p><p>
MIME sections that contain text messages have their
"<code class="literal">Content-Type:</code>" header
set to "<code class="literal">text/plain</code>";
or "<code class="literal">text/html</code>" for HTML messages.
There are also several
other, rare, content types that can be used. MIME sections that contain other
kinds of data will use some other, appropriate
"<code class="literal">Content-Type:</code>" header, such as
"<code class="literal">image/gif</code>", or "<code class="literal">audio/x-wav</code>".</p><p>
MIME sections that contain textual content may also use the
<code class="literal">base64</code> encoding
method, they are not required to use <code class="literal">7bit</code>,
<code class="literal">8bit</code>, or <code class="literal">quoted-printable</code>.
"<code class="literal">text/pdf</code>" sections, that contain PDF files,
typically contain binary data
and must use the <code class="literal">base64</code> encoding.
Consequently, MIME sections that typically
contain binary data, such as
<code class="literal">image/gif</code> and <code class="literal">audio/x-wav</code>,
are free to use
encodings other than <code class="literal">base64</code>, as long as all the data can
be represented by
printable characters (but, in practice, that never happens).</p><p>
MIME sections may also contain other, optional, headers such as
"<code class="literal">Content-Disposition:</code>",
"<code class="literal">Content-ID:</code>", and "<code class="literal">Content-Name:</code>".
Consult the
appropriate RFCs for the specific usage of these headers. These headers can be
added by <span class="command"><strong>makemime</strong></span> by using the
<code class="option">-a</code> option, as described below. These
headers play no part in creating the overall structure of a MIME-encoded
message, and <span class="command"><strong>makemime</strong></span> does not care much about these
headers. It simply
includes them, and their content, upon request.</p><p>
Multiple files are formatted as a single message MIME message in two steps:
first, by creating a MIME section for each file;
and then creating a single MIME section that contains other MIME sections.
A "<code class="literal">multipart/mixed</code>" MIME section contains a
collection of MIME sections that represent different objects, attached
together.
A "<code class="literal">multipart/alternative</code>" MIME section contains a
collection of MIME
sections which are alternative representations of the same object, such as an
HTML and a plain text version of the same message. Other "multipart" MIME
sections also exist, and their usage is defined by their respective
RFCs.</p></div><div class="refsect2"><a id="makemime_creating_a_single_mime_section" shape="rect"> </a><h3>Creating a single MIME section</h3><div class="cmdsynopsis"><p><code class="command">makemime</code>  {-c "<em class="replaceable"><code>type</code></em>"} [-e "<em class="replaceable"><code>encoding</code></em>"] [-o <em class="replaceable"><code>outputfile</code></em>] [-C "<em class="replaceable"><code>charset</code></em>"] [-N "<em class="replaceable"><code>name"</code></em>] [-a "<em class="replaceable"><code>header: value"</code></em>...] {<em class="replaceable"><code>filename</code></em>}</p></div><p>
The <code class="option">-c</code> option reads <code class="filename">filename</code>,
encodes it appropriately, adds the
"<code class="literal">Content-Type: <em class="replaceable"><code>type</code></em></code>" and
"<code class="literal">Content-Transfer-Encoding:</code>" MIME headers, then writes the
result to standard output. <code class="literal">type</code> can be any valid MIME type,
except for <code class="literal">multipart</code>.
Setting <code class="filename">filename</code> to "<code class="literal">-</code>"
reads from standard input.
Setting <code class="filename">filename</code> to "&amp;<em class="replaceable"><code>n</code></em>"
reads from file descriptor #<em class="replaceable"><code>n</code></em>.</p><p>
The <code class="option">-C</code> option sets the MIME <code class="literal">charset</code>
attribute for <code class="literal">text/plain</code> content. The <code class="option">-N</code>
option sets the <code class="literal">name</code> attribute for
<code class="literal">Content-Type:</code>.</p><p>
<em class="replaceable"><code>encoding</code></em> argument should be specified. It's more
efficient to do so. <em class="replaceable"><code>encoding</code></em> must be one of the
following:
<code class="literal">7bit</code>, <code class="literal">8bit</code>,
<code class="literal">quoted-printable</code>, or <code class="literal">base64</code>.</p><p>
If <em class="replaceable"><code>encoding</code></em> is not specified,
<span class="command"><strong>makemime</strong></span>
reads the <code class="filename">filename</code> twice - once to figure out the best
encoding method, and the second time to encode <code class="filename">filename</code>.
If <code class="filename">filename</code> is a pipe <span class="command"><strong>makemime</strong></span>
creates a temporary file, which is not very efficient if
<code class="filename">filename</code> is large.
However letting <span class="command"><strong>makemime</strong></span> pick the encoding method
is more convenient if <code class="filename">filename</code> is relatively small.</p><p>
Another possibility is to omit <em class="replaceable"><code>encoding</code></em> and set
<em class="replaceable"><code>type</code></em> to <code class="literal">auto</code>.
This combination sets "<code class="literal">Content-Type:</code>" to either
<code class="literal">text/plain</code>, or
<code class="literal">application/octet-stream</code>, based on the selected
<em class="replaceable"><code>encoding</code></em>.</p><p>
By default the encoded MIME section is written to standard output.
The <code class="option">-o</code> option writes the MIME section to
<em class="replaceable"><code>outputfile</code></em>. <em class="replaceable"><code>outputfile</code></em> may be
"&amp;<em class="replaceable"><code>n</code></em>",
which writes the MIME section to a pipe on file descriptor
#<em class="replaceable"><code>n</code></em>.</p><p>
<span class="command"><strong>makemime</strong></span> does not generate any other headers.
Particularly, the
"<code class="literal">Mime-Version:</code>" header is required for
MIME-formatted E-mail messages. Additional headers are specified by the
<code class="option">-a</code> option, which may be used
multiple times to insert multiple headers.
<span class="command"><strong>makemime</strong></span> doesn't do anything
with them except to insert the headers into the generated MIME section.</p><p>Note that
"<code class="literal">Mime-Version:</code>" is only required for the top level
MIME section.
This header is not required for individual MIME sections that are later
combined into a multipart MIME collection.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
The <code class="option">-c</code> option must occur listed first, the remaining
options must follow the <code class="option">-c</code> option.</p></div></div><div class="refsect2"><a id="makemime_creating_a_multipart_mime_collection" shape="rect"> </a><h3>Creating a multipart MIME collection</h3><div class="cmdsynopsis"><p><code class="command">makemime</code>  {-m "multipart/<em class="replaceable"><code>type</code></em>"} [-e "<em class="replaceable"><code>encoding</code></em>"] [-o <em class="replaceable"><code>outputfile</code></em>] [-a "<em class="replaceable"><code>header: value"</code></em>...] {<em class="replaceable"><code>filename</code></em>}</p></div><p>
The <code class="option">-m</code> option is identical to the <code class="option">-c</code> option,
except for three differences.</p><p>
<em class="replaceable"><code>type</code></em> must be either
"<code class="literal">multipart/mixed</code>",
"<code class="literal">multipart/alternative</code>", or
some other MIME multipart content type. Additionally,
"<em class="replaceable"><code>encoding</code></em>" can only be
"<code class="literal">7bit</code>" or "<code class="literal">8bit</code>", and will default to "<code class="literal">8bit</code>" if not specified. Finally,
<code class="filename">filename</code> must be a MIME-formatted section, NOT a regular
file. Usually
<code class="filename">filename</code> is created by a previous
invocation of <span class="command"><strong>makemime</strong></span> (it can also be a pipe, like
the <code class="option">-c</code> option), but it can be created via any other
means.</p><p>
The <code class="option">-m</code> option creates an initial multipart MIME collection,
that contains
only one MIME section, taken from <code class="filename">filename</code>.
The collection is written to standard output, or the pipe or
to <em class="replaceable"><code>outputfile</code></em>.</p></div><div class="refsect2"><a id="makemime_creating_a_multipart_mime_section" shape="rect"> </a><h3>Creating a multipart MIME section</h3><div class="cmdsynopsis"><p><code class="command">makemime</code>  {-j <em class="replaceable"><code>file1</code></em>"} [-o <em class="replaceable"><code>outputfile</code></em>] {<em class="replaceable"><code>file2</code></em>}</p></div><p>
This option adds a MIME section to an existing MIME collection.
<em class="replaceable"><code>file1</code></em> must be a MIME collection that was
previously created by the <code class="option">-m</code> option.
<em class="replaceable"><code>file2</code></em> must be a MIME section that was previously
created by the <code class="option">-c</code> option.
The <code class="option">-j</code> options adds the MIME section in
<em class="replaceable"><code>file2</code></em> to the MIME collection in
<em class="replaceable"><code>file1</code></em>.  The result is written to standard output
or to <em class="replaceable"><code>outputfile</code></em>.</p><p>

<em class="replaceable"><code>file1</code></em> and/or <em class="replaceable"><code>file2</code></em> may
be
"<code class="literal">@&amp;<em class="replaceable"><code>n</code></em></code>" which reads from
file descriptor #<em class="replaceable"><code>n</code></em>.
The <em class="replaceable"><code>outputfile</code></em>
may also specify a file descriptor.</p><p><em class="replaceable"><code>file1</code></em> and
<em class="replaceable"><code>file2</code></em> should ideally be created by
<span class="command"><strong>makemime</strong></span> as well.
It's also possible to use MIME-formatted files created by other software, but
with some degree of care. <span class="command"><strong>makemime</strong></span> is not intended to be a
MIME parser, but a MIME generator. However some amount of MIME parsing is
necessary to append a MIME section to an existing MIME collection.
<span class="command"><strong>makemime</strong></span>'s parsing is sufficient
for appending a new section to a MIME collection, as long as the
MIME headers in the MIME collections are straightforward. Very convoluted MIME
headers may confuse <span class="command"><strong>makemime</strong></span>, and it may not be able to
handle them.</p></div><div class="refsect2"><a id="makemime_recursive_mime_collections" shape="rect"> </a><h3>Recursive MIME collections</h3><p>
MIME collection may contain other MIME collections as well as MIME
sections. The <code class="option">-m</code> and the <code class="option">-j</code> options may use
a multipart MIME collection in place of a MIME section automatically
because a multipart MIME collection is just a special type of a MIME section.
The following example
encodes a text message that can be alternatively represented as HTML or plain
text, with some additional attachments:</p><p>
1. Create a MIME collection that has a
<code class="literal">text/plain</code> and a <code class="literal">text/html</code> MIME
section.</p><p>
2. Create a MIME collection consisting of the MIME section generated in
step one, plus additional MIME sections containing other attachments.</p><p>For example:</p><div class="blockquote"><blockquote class="blockquote"><div class="informalexample"><pre class="programlisting" xml:space="preserve">
# Take two files containing the text and the html version of a message, and
# add MIME headers to them.

makemime -c "text/plain; charset=iso-8859-1" -o tmp1.txt msg.txt
makemime -c "text/html; charset=iso-8859-1" -o tmp1.html msg.html

# Combine the result into a multipart/alternative collection

makemime -m "multipart/alternative" -a "Content-Disposition: inline" \
                                    -o tmp.ma1 tmp1.txt
makemime -j tmp.ma1 -o tmp.ma2 tmp1.html

# Add MIME headers to an image attachment.

makemime -c "image/gif" -a "Content-Disposition: attachment" \
                        -o tmp2.gif attachment.gif

# Create the final multipart/mixed collection

makemime -m "multipart/mixed" -a "Mime-Version: 1.0" \
                              -o tmp.mm1 tmp.ma2
makemime -j tmp.mm1 -o output.msg tmp2.gif
</pre></div></blockquote></div><p>
<code class="filename">output.msg</code> now contains the complete MIME collection.
Just add the
<code class="literal">Subject:</code>, <code class="literal">From:</code>, and
<code class="literal">To:</code> headers (can also be done by additional
<code class="option">-a</code> options, of
course), and send it on its way.</p></div><div class="refsect2"><a id="makemime_building_complex_mime_encodings" shape="rect"> </a><h3>Building complex MIME encodings</h3><p>
There are several different ways to build complete MIME encodings from
multiple MIME sections.  One way is to use temporary files to create MIME
sections, then combine them together into a single MIME collection. A slightly
more complicated approach involves setting up pipes between multiple makemime
processes, in order to avoid using temporary files.</p><p>This can be done manually, by hand. It is also possible to have
<span class="command"><strong>makemime</strong></span> do this automatically. <span class="command"><strong>makemime</strong></span>
will set up these pipes and run multiple instances of itself to create a
single MIME collection, with
multiple attachments of complexity limited only by your system's limit on
the maximum number of open files and pipes.</p><p>
Any file that's read by the
<code class="option">-c</code>,
<code class="option">-m</code>,
and
<code class="option">-j</code>
options (
<code class="option">-o</code>
specifies a file to
create, and doesn't count) may be replaced by a single argument containing a
left parenthesis, additional options, then a single argument containing a
right parenthesis.
A single invocation of <span class="command"><strong>makemime</strong></span> can only use one
<code class="option">-c</code>, <code class="option">-m</code>, or <code class="option">-j</code> option.
However, another <code class="option">-c</code>, <code class="option">-m</code>, or
<code class="option">-j</code> option may be specified
inside the left and the right parenthesis, and its output is used in place of
the file it replaced.  In the previous example the third and the fourth
invocation of <span class="command"><strong>makemime</strong></span> can be replaced with the following
command:</p><div class="blockquote"><blockquote class="blockquote"><div class="informalexample"><pre class="programlisting" xml:space="preserve">
makemime -j \(                                           \
               -m "multipart/alternative"                \
               -a "Content-Disposition: inline" tmp1.txt \
             \) -o tmp.ma2                               \
             tmp1.html
</pre></div></blockquote></div><p>
Note that the parenthesis must be backslashed, to avoid their special
meaning to the shell. An equivalent argument file would have the following
contents:</p><div class="blockquote"><blockquote class="blockquote"><div class="informalexample"><pre class="programlisting" xml:space="preserve">
-j
   (
      -m
          multipart/alternative
      -a
          Content-Disposition: inline
      tmp1.txt
   )
   -o
      tmp.ma2
 tmp1.html
</pre></div></blockquote></div><p>
These constructs can be arbitrarily nested, and are limited by the amount
of available memory and resources.  The entire sequence in the previous
section is equivalent to the following command:</p><div class="blockquote"><blockquote class="blockquote"><div class="informalexample"><pre class="programlisting" xml:space="preserve">
makemime -j                                                 \
         \(                                                 \
            -m "multipart/mixed"                            \
            -a "Mime-Version: 1.0"                          \
            \(                                              \
                -j                                          \
                \(                                          \
                   -m "multipart/alternative"               \
                   -a "Content-Disposition: inline"         \
                   \(                                       \
                      -c "text/plain; charset=iso-8859-1"   \
                      msg.txt                               \
                   \)                                       \
                \)                                          \
                \(                                          \
                    -c "text/html; charset=iso-8859-1"      \
                    msg.html                                \
                \)                                          \
            \)                                              \
         \)                                                 \
         -o output.msg                                      \
         \(                                                 \
            -c "image/gif"                                  \
            -a "Content-Disposition: attachment"            \
            attachment.gif                                  \
         \)
</pre></div></blockquote></div><p>
An equivalent argument file would be:</p><div class="blockquote"><blockquote class="blockquote"><div class="informalexample"><pre class="programlisting" xml:space="preserve">
-j
(
   -m
       multipart/mixed
   -a
       Mime-Version: 1.0
   (
       -j
       (
           -m
               multipart/alternative
           -a
               Content-Disposition: inline
           (
               -c
                   text/plain; charset=iso-8859-1
               msg.txt
           )
       )
       (
           -c
               text/html; charset=iso-8859-1
           msg.html
       )
   )
)
-o
   output.msg
(
   -c
       image/gif
   -a
       Content-Disposition: attachment
   attachment.gif
)
</pre></div></blockquote></div></div></div><div class="refsect1"><a id="makemime_see_also" shape="rect"> </a><h2>SEE ALSO</h2><p>
<a class="ulink" href="maildrop.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">maildrop</span>(1)</span></a>,
<a class="ulink" href="maildropfilter.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">maildropfilter</span>(5)</span></a>,
<a class="ulink" href="reformail.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">reformail</span>(1)</span></a>,
<a class="ulink" href="reformime.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">reformime</span>(1)</span></a>,
<span class="citerefentry"><span class="refentrytitle">egrep</span>(1)</span>,
<span class="citerefentry"><span class="refentrytitle">grep</span>(1)</span>,
<a class="ulink" href="courier.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">courier</span>(8)</span></a>,
<span class="citerefentry"><span class="refentrytitle">sendmail</span>(8)</span>,
<a class="ulink" href="http://www.rfc-editor.org/rfc/rfc2045.txt" target="_top" shape="rect">RFC 2045</a>,
<a class="ulink" href="http://www.rfc-editor.org/rfc/rfc2046.txt" target="_top" shape="rect">RFC 2046</a>,
<a class="ulink" href="http://www.rfc-editor.org/rfc/rfc2047.txt" target="_top" shape="rect">RFC 2047</a>,
<a class="ulink" href="http://www.rfc-editor.org/rfc/rfc2048.txt" target="_top" shape="rect">RFC 2048</a>,
<a class="ulink" href="http://www.rfc-editor.org/rfc/rfc2048.txt" target="_top" shape="rect">RFC 2049</a>.</p></div></div></body></html>