Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
REFORMIME(1)			 S. Varshavchik.		    REFORMIME(1)

NAME
     reformime - MIME E-mail reformatting tool

SYNOPSIS
     reformime [options...]

DESCRIPTION
     reformime is a utility for reformatting MIME messages.

     Generally,  reformime  expects  to  see an RFC 2045[1] compliant message on
     standard input, except in few cases such as the -m option.

     If no options are given, reformime prints the MIME structure  of  the  mes-
     sage. The output consists of so-called "MIME reference tags", one per line.
     For example:

	 1
	 1.1
	 1.2

     This shows that the message contains two different MIME sections. The first
     line  of the MIME structure output will always contain "1", which refers to
     the entire message. In this case it happens to be	a  multipart/mixed  mes-
     sage.  "1.1"  refers  to  the first section of the multipart message, which
     happens to be a text/plain section. "1.2" refers to the second  section  of
     the message, which happens to be an application/octet-stream section.

     If  the  message  is not a MIME message, or it does not contain any attach-
     ments, reformime prints only "1", that refers to the entire message itself:

	 1

     Here's the output from reformime when the first part of the message was it-
     self a multipart/alternative section:

	 1
	 1.1
	 1.1.1
	 1.1.2
	 1.2

     Arbitrarily complex MIME constructs are possible.

OPTIONS
     -d
	 Parse a delivery status notification MIME message (RFC  3464[2]).   re-
	 formime  expects  to see on standard input a MIME message that consists
	 of a delivery status notification, as defined by RFC  1894.   reformime
	 reads the message and prints on standard output a list of addresses and
	 their	corresponding delivery status, as specified in the delivery sta-
	 tus notification. Each line printed by reformime consists of a delivery
	 status, a space, and the address.  reformime then terminates with  a  0
	 exit  status.	reformime produces no output and terminates with an exit
	 status of 1 if the standard input does not contain  a	delivery  status
	 notification.

	 International	domain names get converted to the system locale's encod-
	 ing. If the conversion is not possible: an address given in the  deliv-
	 ery status notification directly in UTF-8 has its non-converted charac-
	 ters  replaced  by their hexadecimal values; a punycode-encoded address
	 gets displayed as is. For best results  the  system  locale's	encoding
	 should be UTF-8.

     -D
	 Like the -d except that reformime lists the address found in the Origi-
	 nal-Recipient: header, if it exists.

     -e
	 Extract  the  contents of the indicated MIME section, and display it on
	 standard output. The -s option is required when -e is specified. If the
	 specified section or sections use either the base64 or quoted-printable
	 encoding method, reformime  automatically  decodes  it.  In  this  case
	 you're better off redirecting the standard output into a file.

     -i
	 Display MIME information for each section.  reformime displays the con-
	 tents of the Content-Type: header, any encoding used, and the character
	 set.  reformime also displays the byte offset in the message where each
	 section  starts  and ends (and where the actual contents of the section
	 start, after skipping all the headers).

     -V
	 Check for correctness of each section's MIME  metadata.  No  output  is
	 produced  when  all  MIME  sections  pass all tests. Any issues are re-
	 ported, together with their MIME section, for example:

	     Warnings (1.1):
		 Bad hexadecimal quoted-printable encoding

	 Warning messages indicate which MIME section they're reported for, sec-
	 tion 1.1 in this example had a problem with its encoding.

	 Issues that affect the ability to parse the MIME message itself are re-
	 ported as fatal errors (together with any warnings, if any,  for  what-
	 ever  it's  worth). Fatal errors result in reformime terminating with a
	 non-0 exit code.

     -m
	 Create a multipart/digest MIME message digest.

     -r
	 Rewrite message, adding or standardizing RFC 2045[1] MIME headers.

     -r7
	 Like -r but also convert 8bit-encoded MIME  sections  to  quoted-print-
	 able.

     -r8
	 Like  -r  but	also  convert  quoted-printable-encoded MIME sections to
	 8bit, except in some situations, see below.

     -rU
	 Unconditionally convert quoted-printable-encoded MIME sections to 8bit,
	 even when the resulting message may not necessarily comply with  Inter-
	 net message formatting standards. See below for more information.

     -s section
	 Display  MIME	information  for  this	section only.  section is a MIME
	 specification tag. The -s option is required if -e is	also  specified,
	 and is optional with -i.

	 Multiple sections may be specified by separating them with commas.  re-
	 formime processes each section using the other options that were speci-
	 fied.

     -x
	 Extract the contents of the indicated MIME section to a file.

     -X
	 Pipe the contents of the indicated MIME section to a program.

   Extracting RFC 2045 MIME section(s) to file(s)
     The  -x  and  -X  options extract a specific MIME section to a file or to a
     pipe to an external program. Use the -s option to identify the MIME section
     to extract. If the -s option is not specified, every MIME	section  in  the
     message  is  extracted,  one at a time. If -s lists multiple sections, each
     section gets extracted separately.  quoted-printable  and	base64	encoding
     are automatically decoded.

     -x
	 Interactive extraction.  reformime prints the MIME content type of each
	 section.  Answer  with  'y' or 'Y' to extract the MIME section. Specify
	 the filename at the next prompt.   reformime  prompts	with  a  default
	 filename.   reformime tries to choose the default filename based on the
	 MIME headers, if possible. If not, a randomly-generated filename is the
	 default option.

     -xPREFIX
	 Automatic extraction.	reformime automatically  extracts  one	or  more
	 MIME sections, and saves them to a file. The filename is formed by tak-
	 ing PREFIX, and appending the default filename to it. Note that there's
	 no space between "-x" and "PREFIX". For example:

	     reformime -xfiles-
	 This	command  saves	MIME  sections	as  files-attachment1.dat,  then
	 files-attachment2.dat, etc.  reformime tries  to  append  the	filename
	 specified  in	the  MIME headers for each section, where possible.  re-
	 formime replaces all suspect characters with the underscore character.

     -X prog arg1 arg2 ...
	 The -X option must be the last option to reformime.  reformime runs  an
	 external  program  prog,  and pipes the contents of the MIME section to
	 the program.  reformime sets the environment variable	CONTENT_TYPE  to
	 the  MIME  content  type. The environment variable FILENAME gets set to
	 the default filename of reformime's liking. If the  -s  option  is  not
	 specified, the program runs once for every MIME section in the message.
	 The  external	program,  prog must terminate with a zero exit status in
	 order for reformime to proceed to the next MIME section in the  message
	 (or  the next section specified by -s). In any case, if prog terminates
	 with a non-zero exit status, reformime terminates with the exit  status
	 of 20 plus prog's exit status.

	 Note

	 reformime  extracts every MIME section in the message unless the -s op-
	 tion is specified. This includes even the text/plain MIME content  that
	 usually precedes a binary attachment.

   Adding RFC 2045 MIME headers
     The -r option performs the following actions:

     If  there is no Mime-Version:, Content-Type:, or Content-Transfer-Encoding:
     header, reformime adds one.

     If the Content-Transfer-Encoding: header contains 8bit  or  raw,  but  only
     seven-bit	data  is  found, reformime changes the Content-Transfer-Encoding
     header to 7bit.

     -r7 does the same thing, but also converts 8bit-encoded content  that  con-
     tains eight-bit characters to quoted-printable encoding.

     -r8 does the same thing, but also converts quoted-printable-encoded content
     to 8bit, except in some situations. The content remains quoted-printable if
     converting it results in excessively long lines of text.

     -rU  always  converts  quoted-printable-encoded content to 8bit potentially
     resulting in excessively long lines of text. The resulting  message  should
     not be resubmitted for mail delivery, as a delivery failure may occur.

   Creating multipart/digest MIME digests
     The  -m  option creates a MIME digest.  reformime reads a list of filenames
     on standard input. Each line read from standard input contains the name  of
     a	file  that  is	presumed  to contain an RFC 2822-formatted message.  re-
     formime splices all files into a multipart/digest MIME section, and  writes
     it to standard output.

   Translating MIME headers
     The  following options do not read a message from standard input. These op-
     tions process MIME headers via the command line, and  are	designed  to  be
     conveniently used by mail-handling scripts.

     -h "header"
	 Decode  a  MIME-encoded "header" and print the decoded 8-bit content on
	 standard output. The decoding gets carried out as if the  contents  oc-
	 curred in the "Subject" header. Example:

	     $ reformime -h '=?iso-8859-1?Q?H=F3la!?='
	     HA^3la!

     -H "header"
	 Like -h except that header is parsed as a list of email addresses, like
	 "From" or "To".

     -o "text"
	 MIME-encode "text", and print the results on standard output.

     -O "text"
	 Like  the  -o	option, except that text is a structured header with RFC
	 2822 addresses.

     -c "charset"
	 Use charset as the character set setting, by the -h, -H, -o and -O  op-
	 tions.

     -u
	 This  "undocumented" option reads a MIME message on standard input, and
	 converts its contents to an UTF-8-encoded character  stream,  which  is
	 written to standard output.

	 The  standard output receives a concatenated amalgam of the headers and
	 "text" MIME object data. It is meant to be used as part  of  a  generic
	 search  function.  This option decodes various kinds of header MIME en-
	 coding, the quoted-printable and base64 transfer  encodings  of  "text"
	 MIME  objects.  An extra newline character is appended to each MIME en-
	 tity, ensuring that MIME entities that don't end with a  trailing  new-
	 line  will  not  end up having the next MIME entity's first header line
	 glued to it.

SEE ALSO
     reformail(1)[3], sendmail(8), mailbot(1)[4],  maildrop(1)[5],  maildropfil-
     ter(5)[6], egrep(1), grep(1), sendmail(8).

AUTHOR
     Sam Varshavchik
	 Author

NOTES
      1. RFC 2045
	 http://www.rfc-editor.org/rfc/rfc2045.txt

      2. RFC 3464
	 https://www.rfc-editor.org/rfc/rfc3464.txt

      3. reformail(1)
	 http://www.courier-mta.org/maildrop/reformail.html

      4. mailbot(1)
	 http://www.courier-mta.org/maildrop/mailbot.html

      5. maildrop(1)
	 http://www.courier-mta.org/maildrop/maildrop.html

      6. maildropfilter(5)
	 http://www.courier-mta.org/maildrop/maildropfilter.html

Courier Mail Server		   01/10/2026			    REFORMIME(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=reformime&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help