[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Nmh-workers] message rewrite/fix up

From: David Levine
Subject: Re: [Nmh-workers] message rewrite/fix up
Date: Sun, 17 Feb 2013 13:28:28 -0500

Here's what I currently have planned for mhfixmsg, comments?

-reformat currently only applies to text parts.  For future
expansion, it could require a content type.  Though other
types would need a subtype analogous to text/plain.


Usage: mhfixmsg [+folder] [msgs] [switches]
  switches are:
  -file file
  -outfile file

       mhfixmsg  -  rewrite MIME messages with various transforma-

       mhfixmsg [+folder] [msgs] [-decode | -nodecode] [-textcode-
            set codeset | -notextcodeset] [-reformat | -norefor-
            mat] [-fixboundary | -nofixboundary] [-fixcte |
            -nofixcte] [-file file] [-outfile outfile] [-verbose |
            -noverbose] [-version] [-help]

       mhfixmsg rewrites MIME messages, applying  specific  trans-
       formations  such  as decoding of MIME-encoded message parts
       and repairing invalid MIME headers.

       MIME messages are specified in RFC-2045 thru RFC-2049  (see
       mhbuild(1)).   The mhlist command is invaluable for viewing
       the content structure of MIME  messages.   mhfixmsg  passes
       non-MIME  messages through without any transformations.  If
       no transformations apply to a MIME  message,  the  original
       message or file is not modified or removed.

       The  -decode  switch enables a transformation to decode all
       base64 and quoted-printable message parts to  8-bit  encod-

       The -textcodeset switch specifies that all text/plain parts
       of the message(s) should be converted to codeset.   Codeset
       conversions require that nmh be built with iconv(3).

       The  -reformat  switch  enables  a  transformation for text
       parts in the message.  For  each  text  part  that  is  not
       text/plain   and   that   does  not  have  a  corresponding
       text/plain in a multipart/alternative part, mhfixmsg  looks
       for   a  mhfixmsg-format-text/subtype  profile  entry  that
       matches the subtype of the part.  If one is found  and  can
       be  used  to  successfully  convert the part to text/plain,
       mhfixmsg inserts that text/plain part at the  beginning  of
       the containing multipart/alternative part.  It creates such
       a  multipart/alternative  part  if  one  was  not   already

       -reformat  requires a profile entry for each text part sub-
       type to be reformatted.   The  mhfixmsg-format-text/subtype
       profile  entries are based on external conversion programs,
       and are used the same way that mhshow uses its mhshow-show-
       text/subtype  entries.   When nmh is installed, it searches
       for a conversion program for text/html content, and if  one
       is  found,  inserts  a  mhfixmsg-format-text/html  entry in
       %etcdir%/mhn.defaults.  An entry of the same  name  in  the
       user's  profile takes precedence.  The user can add entries
       for other text subtypes to their profile.

       The -fixboundary switch enables a transformation to  repair
       the  boundary  portion  of the Content-Type header field of
       the message to match the boundaries of the outermost alter-
       native part of the message, if it does not.  That condition
       is indicated by a  "bogus  multipart  content  in  message"
       error message from mhlist and other nmh programs that parse
       MIME messages.

       The -fixcte switch enables a transformation to  change  the
       Content-Transfer-Encoding  from an invalid value to 8bit in
       message parts with a Content-Type of multipart, as required
       by RFC 2045, Section 6.4.  That condition is indicated by a
       "must be encoded in 7bit, 8bit, or  binary"  error  message
       from  mhlist  and  other  nmh programs that parse MIME mes-

       If the -verbose switch is present, then mhfixmsg outputs an
       informational message for each transformation applied.

       The -file file switch directs mhfixmsg to use the specified
       file as the source message, rather than a  message  from  a
       folder.   If  this  file  is "-", then mhfixmsg accepts the
       source message on the standard input stream.  If  no  -out-
       file  switch  is  present  when  using  the  standard input
       stream, mhfixmsg will not produce a transformed output mes-

       mhfixmsg,  by default, transforms the message in place.  If
       the -outfile switch is present, then mhfixmsg does not mod-
       ify  the input message or file, but instead places its out-
       put in the specified file.  An outfile name of  "-"  speci-
       fies the standard output stream.

       Combined  with the -verbose switch, the -outfile switch can
       be used to show what transformations mhfixmsg  would  apply
       without actually applying them, e.g.,

            mhfixmsg -outfile /dev/null -verbose

       As  always,  this  usage obeys any mhfixmsg switches in the
       user's profile.

       -outfile can be combined with  rcvstore  to  add  a  single
       transformed message to a different folder, e.g.,

            mhfixmsg -outfile - | \
            %libdir%/rcvstore +folder

   Storing the Original Message/File
       If it applies any transformations to a message or file, and
       the -outfile switch is not  used,  mhfixmsg  backs  up  the
       original the same way as rmm.  That is, it uses the rmmproc
       profile component, if present.  If  not  present,  mhfixmsg
       moves the original message to a backup file.

       $HOME/.mh_profile          The user profile
       %etcdir%/mhn.defaults      Default mhfixmsg conversion entries

       Path:                To determine the user's nmh directory
       Current-Folder:      To find the default current folder
       rmmproc:             Program to delete original messages or files

       mhbuild(1), mhlist(1), mhshow(1), rcvstore(1), rmm(1)

       `+folder' defaults to the current folder
       `msgs' defaults to cur

       If  a  folder  is given, it will become the current folder.
       The last message selected from a  folder  will  become  the
       current message.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]