summaryrefslogtreecommitdiffstats
path: root/upstream/debian-unstable/man1/makemime.1
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/debian-unstable/man1/makemime.1')
-rw-r--r--upstream/debian-unstable/man1/makemime.1545
1 files changed, 545 insertions, 0 deletions
diff --git a/upstream/debian-unstable/man1/makemime.1 b/upstream/debian-unstable/man1/makemime.1
new file mode 100644
index 00000000..e5a2c967
--- /dev/null
+++ b/upstream/debian-unstable/man1/makemime.1
@@ -0,0 +1,545 @@
+'\" t
+.\"<!-- Copyright 2001-2007 Double Precision, Inc. See COPYING for -->
+.\"<!-- distribution information. -->
+.\" Title: makemime
+.\" Author: Sam Varshavchik
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 06/20/2015
+.\" Manual: Double Precision, Inc.
+.\" Source: Courier Mail Server
+.\" Language: English
+.\"
+.TH "MAKEMIME" "1" "06/20/2015" "Courier Mail Server" "Double Precision, Inc\&."
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+makemime \- Create MIME\-formatted messages
+.SH "SYNOPSIS"
+.HP \w'\fBmakemime\fR\ 'u
+\fBmakemime\fR [\fIoptions\fR...]
+.HP \w'\fBmakemime\fR\ 'u
+\fBmakemime\fR [@\fIfilename\fR]
+.SH "DESCRIPTION"
+.PP
+\fBmakemime\fR
+creates MIME\-formatted messages of arbitrary complexity\&.
+\fBmakemime\fR
+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
+\fBmakemime\fR\&. Advanced options direct
+\fBmakemime\fR
+to
+\fBfork\fR() itself, and handle the details of setting up all the pipelines\&.
+.PP
+In most cases, options for
+\fBmakemime\fR
+come directly from the command line\&. @filename
+reads the options from a file\&. "@&\fIn\fR" reads options from a pipe on file descriptor #\fIn\fR\&. "@\-" is a shortcut for "@&0", which reads options from standard input\&.
+.PP
+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\&.
+.PP
+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 \*(Aq#\*(Aq character\&.
+.PP
+Options and their arguments may contain characters that are special characters to the shell, such as \*(Aq(\*(Aq and \*(Aq)\*(Aq\&. 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\&.
+.PP
+\fBmakemime\fR
+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\&.
+.SS "MIME overview"
+.PP
+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
+\fBmakemime\fR
+utility\&. See
+\m[blue]\fBRFC 2045\fR\m[]\&\s-2\u[1]\d\s+2,
+\m[blue]\fBRFC 2046\fR\m[]\&\s-2\u[2]\d\s+2,
+\m[blue]\fBRFC 2047\fR\m[]\&\s-2\u[3]\d\s+2,
+\m[blue]\fBRFC 2048\fR\m[]\&\s-2\u[4]\d\s+2, and
+\m[blue]\fBRFC 2049\fR\m[]\&\s-2\u[4]\d\s+2
+for a formal definition of MIME\-formatted messages\&.
+.PP
+Each file in a MIME message is encoded as a single MIME section\&. A MIME section consists of at least one header line, "Content\-Type:"\&. The "Content\-Type:" 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
+\fBmakemime\fR
+will always contain another header, "Content\-Transfer\-Encoding:"\&. This header gives the encoding method used for the file; it is an optional header, but
+\fBmakemime\fR
+always creates it\&.
+.PP
+The MIME encoding method defaults to "7bit" if this header is absent\&.
+7bit
+encoding is only suitable for plain text messages in the US\-ASCII character set\&. The "8bit" 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 "quoted\-printable"\&. The "base64" encoding method is used for files containing binary data (anything other than plain text)\&.
+.PP
+MIME sections that contain text messages have their "Content\-Type:" header set to "text/plain"; or "text/html" 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 "Content\-Type:" header, such as "image/gif", or "audio/x\-wav"\&.
+.PP
+MIME sections that contain textual content may also use the
+base64
+encoding method, they are not required to use
+7bit,
+8bit, or
+quoted\-printable\&. "text/pdf" sections, that contain PDF files, typically contain binary data and must use the
+base64
+encoding\&. Consequently, MIME sections that typically contain binary data, such as
+image/gif
+and
+audio/x\-wav, are free to use encodings other than
+base64, as long as all the data can be represented by printable characters (but, in practice, that never happens)\&.
+.PP
+MIME sections may also contain other, optional, headers such as "Content\-Disposition:", "Content\-ID:", and "Content\-Name:"\&. Consult the appropriate RFCs for the specific usage of these headers\&. These headers can be added by
+\fBmakemime\fR
+by using the
+\fB\-a\fR
+option, as described below\&. These headers play no part in creating the overall structure of a MIME\-encoded message, and
+\fBmakemime\fR
+does not care much about these headers\&. It simply includes them, and their content, upon request\&.
+.PP
+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 "multipart/mixed" MIME section contains a collection of MIME sections that represent different objects, attached together\&. A "multipart/alternative" 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\&.
+.SS "Creating a single MIME section"
+.HP \w'\fBmakemime\fR\ 'u
+\fBmakemime\fR {\-c\ "\fItype\fR"} [\-e\ "\fIencoding\fR"] [\-o\ \fIoutputfile\fR] [\-C\ "\fIcharset\fR"] [\-N\ "\fIname"\fR] [\-a\ "\fIheader:\ value"\fR...] {\fIfilename\fR}
+.PP
+The
+\fB\-c\fR
+option reads
+filename, encodes it appropriately, adds the "Content\-Type: \fItype\fR" and "Content\-Transfer\-Encoding:" MIME headers, then writes the result to standard output\&.
+type
+can be any valid MIME type, except for
+multipart\&. Setting
+filename
+to "\-" reads from standard input\&. Setting
+filename
+to "&\fIn\fR" reads from file descriptor #\fIn\fR\&.
+.PP
+The
+\fB\-C\fR
+option sets the MIME
+charset
+attribute for
+text/plain
+content\&. The
+\fB\-N\fR
+option sets the
+name
+attribute for
+Content\-Type:\&.
+.PP
+\fIencoding\fR
+argument should be specified\&. It\*(Aqs more efficient to do so\&.
+\fIencoding\fR
+must be one of the following:
+7bit,
+8bit,
+quoted\-printable, or
+base64\&.
+.PP
+If
+\fIencoding\fR
+is not specified,
+\fBmakemime\fR
+reads the
+filename
+twice \- once to figure out the best encoding method, and the second time to encode
+filename\&. If
+filename
+is a pipe
+\fBmakemime\fR
+creates a temporary file, which is not very efficient if
+filename
+is large\&. However letting
+\fBmakemime\fR
+pick the encoding method is more convenient if
+filename
+is relatively small\&.
+.PP
+Another possibility is to omit
+\fIencoding\fR
+and set
+\fItype\fR
+to
+auto\&. This combination sets "Content\-Type:" to either
+text/plain, or
+application/octet\-stream, based on the selected
+\fIencoding\fR\&.
+.PP
+By default the encoded MIME section is written to standard output\&. The
+\fB\-o\fR
+option writes the MIME section to
+\fIoutputfile\fR\&.
+\fIoutputfile\fR
+may be "&\fIn\fR", which writes the MIME section to a pipe on file descriptor #\fIn\fR\&.
+.PP
+\fBmakemime\fR
+does not generate any other headers\&. Particularly, the "Mime\-Version:" header is required for MIME\-formatted E\-mail messages\&. Additional headers are specified by the
+\fB\-a\fR
+option, which may be used multiple times to insert multiple headers\&.
+\fBmakemime\fR
+doesn\*(Aqt do anything with them except to insert the headers into the generated MIME section\&.
+.PP
+Note that "Mime\-Version:" 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\&.
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBNote\fR
+.ps -1
+.br
+.PP
+The
+\fB\-c\fR
+option must occur listed first, the remaining options must follow the
+\fB\-c\fR
+option\&.
+.sp .5v
+.RE
+.SS "Creating a multipart MIME collection"
+.HP \w'\fBmakemime\fR\ 'u
+\fBmakemime\fR {\-m\ "multipart/\fItype\fR"} [\-e\ "\fIencoding\fR"] [\-o\ \fIoutputfile\fR] [\-a\ "\fIheader:\ value"\fR...] {\fIfilename\fR}
+.PP
+The
+\fB\-m\fR
+option is identical to the
+\fB\-c\fR
+option, except for three differences\&.
+.PP
+\fItype\fR
+must be either "multipart/mixed", "multipart/alternative", or some other MIME multipart content type\&. Additionally, "\fIencoding\fR" can only be "7bit" or "8bit", and will default to "8bit" if not specified\&. Finally,
+filename
+must be a MIME\-formatted section, NOT a regular file\&. Usually
+filename
+is created by a previous invocation of
+\fBmakemime\fR
+(it can also be a pipe, like the
+\fB\-c\fR
+option), but it can be created via any other means\&.
+.PP
+The
+\fB\-m\fR
+option creates an initial multipart MIME collection, that contains only one MIME section, taken from
+filename\&. The collection is written to standard output, or the pipe or to
+\fIoutputfile\fR\&.
+.SS "Creating a multipart MIME section"
+.HP \w'\fBmakemime\fR\ 'u
+\fBmakemime\fR {\-j\ \fIfile1\fR"} [\-o\ \fIoutputfile\fR] {\fIfile2\fR}
+.PP
+This option adds a MIME section to an existing MIME collection\&.
+\fIfile1\fR
+must be a MIME collection that was previously created by the
+\fB\-m\fR
+option\&.
+\fIfile2\fR
+must be a MIME section that was previously created by the
+\fB\-c\fR
+option\&. The
+\fB\-j\fR
+options adds the MIME section in
+\fIfile2\fR
+to the MIME collection in
+\fIfile1\fR\&. The result is written to standard output or to
+\fIoutputfile\fR\&.
+.PP
+\fIfile1\fR
+and/or
+\fIfile2\fR
+may be "@&\fIn\fR" which reads from file descriptor #\fIn\fR\&. The
+\fIoutputfile\fR
+may also specify a file descriptor\&.
+.PP
+\fIfile1\fR
+and
+\fIfile2\fR
+should ideally be created by
+\fBmakemime\fR
+as well\&. It\*(Aqs also possible to use MIME\-formatted files created by other software, but with some degree of care\&.
+\fBmakemime\fR
+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\&.
+\fBmakemime\fR\*(Aqs 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
+\fBmakemime\fR, and it may not be able to handle them\&.
+.SS "Recursive MIME collections"
+.PP
+MIME collection may contain other MIME collections as well as MIME sections\&. The
+\fB\-m\fR
+and the
+\fB\-j\fR
+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:
+.PP
+1\&. Create a MIME collection that has a
+text/plain
+and a
+text/html
+MIME section\&.
+.PP
+2\&. Create a MIME collection consisting of the MIME section generated in step one, plus additional MIME sections containing other attachments\&.
+.PP
+For example:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+# 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" \e
+ \-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" \e
+ \-o tmp2\&.gif attachment\&.gif
+
+# Create the final multipart/mixed collection
+
+makemime \-m "multipart/mixed" \-a "Mime\-Version: 1\&.0" \e
+ \-o tmp\&.mm1 tmp\&.ma2
+makemime \-j tmp\&.mm1 \-o output\&.msg tmp2\&.gif
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+output\&.msg
+now contains the complete MIME collection\&. Just add the
+Subject:,
+From:, and
+To:
+headers (can also be done by additional
+\fB\-a\fR
+options, of course), and send it on its way\&.
+.SS "Building complex MIME encodings"
+.PP
+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\&.
+.PP
+This can be done manually, by hand\&. It is also possible to have
+\fBmakemime\fR
+do this automatically\&.
+\fBmakemime\fR
+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\*(Aqs limit on the maximum number of open files and pipes\&.
+.PP
+Any file that\*(Aqs read by the
+\fB\-c\fR,
+\fB\-m\fR, and
+\fB\-j\fR
+options (
+\fB\-o\fR
+specifies a file to create, and doesn\*(Aqt 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
+\fBmakemime\fR
+can only use one
+\fB\-c\fR,
+\fB\-m\fR, or
+\fB\-j\fR
+option\&. However, another
+\fB\-c\fR,
+\fB\-m\fR, or
+\fB\-j\fR
+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
+\fBmakemime\fR
+can be replaced with the following command:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+makemime \-j \e( \e
+ \-m "multipart/alternative" \e
+ \-a "Content\-Disposition: inline" tmp1\&.txt \e
+ \e) \-o tmp\&.ma2 \e
+ tmp1\&.html
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+Note that the parenthesis must be backslashed, to avoid their special meaning to the shell\&. An equivalent argument file would have the following contents:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+\-j
+ (
+ \-m
+ multipart/alternative
+ \-a
+ Content\-Disposition: inline
+ tmp1\&.txt
+ )
+ \-o
+ tmp\&.ma2
+ tmp1\&.html
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+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:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+makemime \-j \e
+ \e( \e
+ \-m "multipart/mixed" \e
+ \-a "Mime\-Version: 1\&.0" \e
+ \e( \e
+ \-j \e
+ \e( \e
+ \-m "multipart/alternative" \e
+ \-a "Content\-Disposition: inline" \e
+ \e( \e
+ \-c "text/plain; charset=iso\-8859\-1" \e
+ msg\&.txt \e
+ \e) \e
+ \e) \e
+ \e( \e
+ \-c "text/html; charset=iso\-8859\-1" \e
+ msg\&.html \e
+ \e) \e
+ \e) \e
+ \e) \e
+ \-o output\&.msg \e
+ \e( \e
+ \-c "image/gif" \e
+ \-a "Content\-Disposition: attachment" \e
+ attachment\&.gif \e
+ \e)
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+An equivalent argument file would be:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+\-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
+)
+.fi
+.if n \{\
+.RE
+.\}
+.SH "SEE ALSO"
+.PP
+\m[blue]\fB\fBmaildrop\fR(1)\fR\m[]\&\s-2\u[5]\d\s+2,
+\m[blue]\fB\fBmaildropfilter\fR(5)\fR\m[]\&\s-2\u[6]\d\s+2,
+\m[blue]\fB\fBreformail\fR(1)\fR\m[]\&\s-2\u[7]\d\s+2,
+\m[blue]\fB\fBreformime\fR(1)\fR\m[]\&\s-2\u[8]\d\s+2,
+\fBegrep\fR(1),
+\fBgrep\fR(1),
+\m[blue]\fB\fBcourier\fR(8)\fR\m[]\&\s-2\u[9]\d\s+2,
+\fBsendmail\fR(8),
+\m[blue]\fBRFC 2045\fR\m[]\&\s-2\u[1]\d\s+2,
+\m[blue]\fBRFC 2046\fR\m[]\&\s-2\u[2]\d\s+2,
+\m[blue]\fBRFC 2047\fR\m[]\&\s-2\u[3]\d\s+2,
+\m[blue]\fBRFC 2048\fR\m[]\&\s-2\u[4]\d\s+2,
+\m[blue]\fBRFC 2049\fR\m[]\&\s-2\u[4]\d\s+2\&.
+.SH "AUTHOR"
+.PP
+\fBSam Varshavchik\fR
+.RS 4
+Author
+.RE
+.SH "NOTES"
+.IP " 1." 4
+RFC 2045
+.RS 4
+\%http://www.rfc-editor.org/rfc/rfc2045.txt
+.RE
+.IP " 2." 4
+RFC 2046
+.RS 4
+\%http://www.rfc-editor.org/rfc/rfc2046.txt
+.RE
+.IP " 3." 4
+RFC 2047
+.RS 4
+\%http://www.rfc-editor.org/rfc/rfc2047.txt
+.RE
+.IP " 4." 4
+RFC 2048
+.RS 4
+\%http://www.rfc-editor.org/rfc/rfc2048.txt
+.RE
+.IP " 5." 4
+\fBmaildrop\fR(1)
+.RS 4
+\%[set $man.base.url.for.relative.links]/maildrop.html
+.RE
+.IP " 6." 4
+\fBmaildropfilter\fR(5)
+.RS 4
+\%[set $man.base.url.for.relative.links]/maildropfilter.html
+.RE
+.IP " 7." 4
+\fBreformail\fR(1)
+.RS 4
+\%[set $man.base.url.for.relative.links]/reformail.html
+.RE
+.IP " 8." 4
+\fBreformime\fR(1)
+.RS 4
+\%[set $man.base.url.for.relative.links]/reformime.html
+.RE
+.IP " 9." 4
+\fBcourier\fR(8)
+.RS 4
+\%[set $man.base.url.for.relative.links]/courier.html
+.RE