* emacs-mime.texi: Markup: Use @acronym for MML and MIME.
[gnus] / texi / message.texi
index be53fb3..b8e937f 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Message (Oort) Manual
+@settitle Message Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -42,13 +42,13 @@ license to the document, as described in section 6 of the license.
 @tex
 
 @titlepage
-@title Message (Oort) Manual
+@title Message Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
 
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002
+Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
      Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
@@ -88,8 +88,9 @@ Message mode buffers.
 * Key Index::         List of Message mode keys.
 @end menu
 
-This manual corresponds to Oort Message.   Message is distributed with
-the Gnus distribution bearing the same version number as this manual.
+This manual corresponds to Message v5.10.1.  Message is distributed
+with the Gnus distribution bearing the same version number as this
+manual.
 
 
 @node Interface
@@ -172,9 +173,9 @@ just return @code{nil}, and the normal methods for determining the To
 header will be used.
 
 This function can also return a list.  In that case, each list element
-should be a cons, where the car should be the name of an header
-(eg. @code{Cc}) and the cdr should be the header value
-(eg. @samp{larsi@@ifi.uio.no}).  All these headers will be inserted into
+should be a cons, where the @sc{car} should be the name of a header
+(e.g. @code{Cc}) and the @sc{cdr} should be the header value
+(e.g. @samp{larsi@@ifi.uio.no}).  All these headers will be inserted into
 the head of the outgoing mail.
 
 
@@ -309,9 +310,9 @@ constructed.  The default value is @code{nil}.
 @item message-forward-as-mime
 @vindex message-forward-as-mime
 If this variable is @code{t} (the default), forwarded messages are
-included as inline @sc{mime} RFC822 parts.  If it's @code{nil}, forwarded
+included as inline @acronym{MIME} RFC822 parts.  If it's @code{nil}, forwarded
 messages will just be copied inline to the new message, like previous,
-non @sc{mime}-savvy versions of gnus would do.
+non @acronym{MIME}-savvy versions of Gnus would do.
 
 @item message-forward-before-signature
 @vindex message-forward-before-signature
@@ -352,6 +353,7 @@ will be removed before popping up the buffer.  The default is
 @node Mailing Lists
 @section Mailing Lists
 
+@cindex Mail-Followup-To
 Sometimes while posting to mailing lists, the poster needs to direct
 followups to the post to specific places.  The Mail-Followup-To (MFT)
 was created to enable just this.  Two example scenarios where this is
@@ -398,7 +400,7 @@ way.  The following variables would come in handy.
 @vindex message-subscribed-addresses
 @item message-subscribed-addresses
 This should be a list of addresses the user is subscribed to.  Its
-default value is @code{nil}.   Example:
+default value is @code{nil}.  Example:
 @lisp
 (setq message-subscribed-addresses
       '("ding@@gnus.org" "bing@@noose.org"))
@@ -423,8 +425,9 @@ functions not take any arguments.  Default value is @code{nil}.
 There is a pre-defined function in Gnus that is a good candidate for
 this variable.  @code{gnus-find-subscribed-addresses} is a function
 that returns a list of addresses corresponding to the groups that have
-the @code{subscribed} (@pxref{(gnus)subscribed})
-group parameter set to a non-nil value.  This is how you would do it.
+the @code{subscribed} (@pxref{Group Parameters, ,Group Parameters,
+gnus, The Gnus Manual}) group parameter set to a non-@code{nil} value.
+This is how you would do it.
 
 @lisp
 (setq message-subscribed-address-functions
@@ -458,7 +461,7 @@ other headers and set to the value of all addresses in To: and Cc:
 @findex message-generate-unsubscribed-mail-followup-to
 @kindex C-c C-f C-m
 @findex message-goto-mail-followup-to
-Hm. ``So'', you ask, ``what if I send an email to a list I am not
+Hm.  ``So'', you ask, ``what if I send an email to a list I am not
 subscribed to?  I want my MFT to say that I want an extra copy.''  (This
 is supposed to be interpreted by others the same way as if there were no
 MFT, but you can use an explicit MFT to override someone else's
@@ -501,8 +504,8 @@ better than you do.
 * Header Commands::     Commands for moving headers or changing headers.
 * Movement::            Moving around in message buffers.
 * Insertion::           Inserting things into message buffers.
-* MIME::                @sc{mime} considerations.
-* IDNA::                Non-ASCII domain name considerations.
+* MIME::                @acronym{MIME} considerations.
+* IDNA::                Non-@acronym{ASCII} domain name considerations.
 * Security::            Signing and encrypting messages.
 * Various Commands::    Various things.
 * Sending::             Actually sending the message.
@@ -623,9 +626,9 @@ own address.  This function inserts such a header automatically.  It
 fetches the contents of the @samp{To:} header in the current mail
 buffer, and appends the current @code{user-mail-address}.
 
-If the optional argument @code{include-cc} is non-nil, the addresses in
-the @samp{Cc:} header are also put into the @samp{Mail-Followup-To:}
-header.
+If the optional argument @code{include-cc} is non-@code{nil}, the
+addresses in the @samp{Cc:} header are also put into the
+@samp{Mail-Followup-To:} header.
 
 @end table
 
@@ -664,7 +667,7 @@ address from @code{To:} and @code{Cc:} headers.
 @kindex C-c M-n
 @findex message-insert-disposition-notification-to
 Insert a request for a disposition
-notification. (@code{message-insert-disposition-notification-to}).
+notification.  (@code{message-insert-disposition-notification-to}).
 This means that if the recipient support RFC 2298 she might send you a
 notification that she received the message.
 
@@ -714,7 +717,7 @@ Replace contents of @samp{To} header with contents of @samp{Cc} or
 @kindex C-c C-f w
 @findex message-insert-wide-reply
 Insert @samp{To} and @samp{Cc} headers as if you were doing a wide
-reply. 
+reply.
 
 @item C-c C-f a
 @kindex C-c C-f a
@@ -818,17 +821,17 @@ See @code{message-mark-insert-begin} and @code{message-mark-insert-end}.
 @cindex multipart
 @cindex attachment
 
-Message is a @sc{mime}-compliant posting agent.  The user generally
-doesn't have to do anything to make the @sc{mime} happen---Message will
+Message is a @acronym{MIME}-compliant posting agent.  The user generally
+doesn't have to do anything to make the @acronym{MIME} happen---Message will
 automatically add the @code{Content-Type} and
 @code{Content-Transfer-Encoding} headers.
 
 The most typical thing users want to use the multipart things in
-@sc{mime} for is to add ``attachments'' to mail they send out.  This can
+@acronym{MIME} for is to add ``attachments'' to mail they send out.  This can
 be done with the @kbd{C-c C-a} command, which will prompt for a file
-name and a @sc{mime} type.
+name and a @acronym{MIME} type.
 
-You can also create arbitrarily complex multiparts using the MML
+You can also create arbitrarily complex multiparts using the @acronym{MML}
 language (@pxref{Composing, , Composing, emacs-mime, The Emacs MIME
 Manual}).
 
@@ -838,30 +841,31 @@ Manual}).
 @cindex internationalized domain names
 @cindex non-ascii domain names
 
-Message is a @sc{idna}-compliant posting agent.  The user generally
-doesn't have to do anything to make the @sc{idna} happen---Message
-will encode non-ASCII domain names in @code{From}, @code{To}, and
-@code{Cc} headers automatically.
+Message is a @acronym{IDNA}-compliant posting agent.  The user
+generally doesn't have to do anything to make the @acronym{IDNA}
+happen---Message will encode non-@acronym{ASCII} domain names in @code{From},
+@code{To}, and @code{Cc} headers automatically.
 
-Until IDNA becomes more well known, Message queries you whether IDNA
-encoding of the domain name really should occur.  Some users might not
-be aware that domain names can contain non-ASCII now, so this gives
-them a safety net if they accidently typed a non-ASCII domain name.
+Until @acronym{IDNA} becomes more well known, Message queries you
+whether @acronym{IDNA} encoding of the domain name really should
+occur.  Some users might not be aware that domain names can contain
+non-@acronym{ASCII} now, so this gives them a safety net if they accidently
+typed a non-@acronym{ASCII} domain name.
 
 @vindex message-use-idna
-The @code{message-use-idna} variable control whether @sc{idna} is
-used.  If the variable is @sc{nil} no IDNA encoding will ever happen,
-if it is set to the symbol @sc{ask} the user will be queried (the
-default), and if set to @sc{t} IDNA encoding happens automatically.
+The @code{message-use-idna} variable control whether @acronym{IDNA} is
+used.  If the variable is @code{nil} no @acronym{IDNA} encoding will
+ever happen, if it is set to the symbol @code{ask} the user will be
+queried (the default), and if set to @code{t} @acronym{IDNA} encoding
+happens automatically.
 
 @findex message-idna-to-ascii-rhs
-If you want to experiment with the IDNA encoding, you can invoke
-@kbd{M-x message-idna-to-ascii-rhs RET} in the message buffer to have
-the non-ASCII domain names encoded while you edit the message.
+If you want to experiment with the @acronym{IDNA} encoding, you can
+invoke @kbd{M-x message-idna-to-ascii-rhs RET} in the message buffer
+to have the non-@acronym{ASCII} domain names encoded while you edit the message.
 
-Note that you must have GNU Libidn
-(@url{http://www.gnu.org/software/libidn/} installed in order to use
-this functionality.
+Note that you must have @uref{http://www.gnu.org/software/libidn/, GNU
+Libidn} installed in order to use this functionality.
 
 @node Security
 @section Security
@@ -873,12 +877,13 @@ this functionality.
 @cindex encrypt
 @cindex secure
 
-Using the MML language, Message is able to create digitally signed and
-digitally encrypted messages.  Message (or rather MML) currently
-support PGP (RFC 1991), @sc{pgp/mime} (RFC 2015/3156) and @sc{s/mime}.
-Instructing MML to perform security operations on a @sc{mime} part is
-done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c
-C-m c} key map for encryption, as follows.
+Using the @acronym{MML} language, Message is able to create digitally
+signed and digitally encrypted messages.  Message (or rather
+@acronym{MML}) currently support @acronym{PGP} (RFC 1991),
+@acronym{PGP/MIME} (RFC 2015/3156) and @acronym{S/MIME}.  Instructing
+@acronym{MML} to perform security operations on a @acronym{MIME} part is
+done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c C-m
+c} key map for encryption, as follows.
 
 @table @kbd
 
@@ -886,78 +891,57 @@ C-m c} key map for encryption, as follows.
 @kindex C-c C-m s s
 @findex mml-secure-message-sign-smime
 
-Digitally sign current message using @sc{s/mime}.
+Digitally sign current message using @acronym{S/MIME}.
 
 @item C-c C-m s o
 @kindex C-c C-m s o
 @findex mml-secure-message-sign-pgp
 
-Digitally sign current message using PGP.
+Digitally sign current message using @acronym{PGP}.
 
 @item C-c C-m s p
 @kindex C-c C-m s p
 @findex mml-secure-message-sign-pgpmime
 
-Digitally sign current message using @sc{pgp/mime}.
+Digitally sign current message using @acronym{PGP/MIME}.
 
 @item C-c C-m c s
 @kindex C-c C-m c s
 @findex mml-secure-message-encrypt-smime
 
-Digitally encrypt current message using @sc{s/mime}.
+Digitally encrypt current message using @acronym{S/MIME}.
 
 @item C-c C-m c o
 @kindex C-c C-m c o
 @findex mml-secure-message-encrypt-pgp
 
-Digitally encrypt current message using PGP.
+Digitally encrypt current message using @acronym{PGP}.
 
 @item C-c C-m c p
 @kindex C-c C-m c p
 @findex mml-secure-message-encrypt-pgpmime
 
-Digitally encrypt current message using @sc{pgp/mime}.
+Digitally encrypt current message using @acronym{PGP/MIME}.
 
 @item C-c C-m C-n
 @kindex C-c C-m C-n
 @findex mml-unsecure-message
-Remove security related MML tags from message.
+Remove security related @acronym{MML} tags from message.
 
 @end table
 
 These commands do not immediately sign or encrypt the message, they
-merely insert the proper MML secure tag to instruct the MML engine to
-perform that operation when the message is actually sent. They may
-perform other operations too, such as locating and retrieving a
-@sc{s/mime} certificate of the person you wish to send encrypted mail
-to.  When the mml parsing engine converts your MML into a properly
-encoded @sc{mime} message, the secure tag will be replaced with either
-a part or a multipart tag.  If your message contains other mml parts,
-a multipart tag will be used; if no other parts are present in your
-message a single part tag will be used.  This way, message mode will
-do the Right Thing (TM) with signed/encrypted multipart messages.
-
-@vindex mml-signencrypt-style-alist
-By default, when encrypting a message, Gnus will use the ``signencrypt''
-mode.  If you would like to disable this for a particular message,
-give the @code{mml-secure-message-encrypt-*} command a prefix argument. (for
-example, @kbd{C-u C-c C-m c p}).  Additionally, by default Gnus will
-separately sign, then encrypt a message which has the mode
-signencrypt.  If you would like to change this behavior you can
-customize the @code{mml-signencrypt-style-alist} variable.  For
-example:
-
-
-@lisp
-(setq mml-signencrypt-style-alist '(("smime" combined)
-                                    ("pgp" combined)
-                                    ("pgpmime" combined)))
-@end lisp
-
-Will cause Gnus to sign and encrypt in one pass, thus generating a
-single signed and encrypted part.  Note that combined sign and encrypt
-does not work with all supported OpenPGP implementations (in
-particular, PGP version 2 do not support this).
+merely insert the proper @acronym{MML} secure tag to instruct the
+@acronym{MML} engine to perform that operation when the message is
+actually sent.  They may perform other operations too, such as locating
+and retrieving a @acronym{S/MIME} certificate of the person you wish to
+send encrypted mail to.  When the mml parsing engine converts your
+@acronym{MML} into a properly encoded @acronym{MIME} message, the secure
+tag will be replaced with either a part or a multipart tag.  If your
+message contains other mml parts, a multipart tag will be used; if no
+other parts are present in your message a single part tag will be used.
+This way, message mode will do the Right Thing (TM) with
+signed/encrypted multipart messages.
 
 Since signing and especially encryption often is used when sensitive
 information is sent, you may want to have some way to ensure that your
@@ -968,10 +952,16 @@ verify that your long rant about what your ex-significant other or
 whomever actually did with that funny looking person at that strange
 party the other night, actually will be sent encrypted.
 
-@emph{Note!}  Neither @sc{pgp/mime} nor @sc{s/mime} encrypt/signs
-RFC822 headers.  They only operate on the @sc{mime} object.  Keep this
+@emph{Note!}  Neither @acronym{PGP/MIME} nor @acronym{S/MIME} encrypt/signs
+RFC822 headers.  They only operate on the @acronym{MIME} object.  Keep this
 in mind before sending mail with a sensitive Subject line.
 
+By default, when encrypting a message, Gnus will use the
+``signencrypt'' mode, which means the message is both signed and
+encrypted.  If you would like to disable this for a particular
+message, give the @code{mml-secure-message-encrypt-*} command a prefix
+argument, e.g., @kbd{C-u C-c C-m c p}.
+
 Actually using the security commands above is not very difficult.  At
 least not compared with making sure all involved programs talk with each
 other properly.  Thus, we now describe what external libraries or
@@ -980,45 +970,46 @@ programs are required to make things work, and some small general hints.
 @subsection Using S/MIME
 
 @emph{Note!}  This section assume you have a basic familiarity with
-modern cryptography, @sc{s/mime}, various PKCS standards, OpenSSL and
+modern cryptography, @acronym{S/MIME}, various PKCS standards, OpenSSL and
 so on.
 
-The @sc{s/mime} support in Message (and MML) require OpenSSL.  OpenSSL
-perform the actual @sc{s/mime} sign/encrypt operations.  OpenSSL can
-be found at @uref{http://www.openssl.org/}.  OpenSSL 0.9.6 and later
-should work.  Version 0.9.5a cannot extract mail addresses from
-certificates, and it insert a spurious CR character into @sc{mime}
-separators so you may wish to avoid it if you would like to avoid
-being regarded as someone who send strange mail. (Although by sending
-@sc{s/mime} messages you've probably already lost that contest.)
+The @acronym{S/MIME} support in Message (and @acronym{MML}) require
+OpenSSL.  OpenSSL performs the actual @acronym{S/MIME} sign/encrypt
+operations.  OpenSSL can be found at @uref{http://www.openssl.org/}.
+OpenSSL 0.9.6 and later should work.  Version 0.9.5a cannot extract mail
+addresses from certificates, and it insert a spurious CR character into
+@acronym{MIME} separators so you may wish to avoid it if you would like
+to avoid being regarded as someone who send strange mail.  (Although by
+sending @acronym{S/MIME} messages you've probably already lost that
+contest.)
 
 To be able to send encrypted mail, a personal certificate is not
-required.  Message (MML) need a certificate for the person to whom you
+required.  Message (@acronym{MML}) need a certificate for the person to whom you
 wish to communicate with though.  You're asked for this when you type
 @kbd{C-c C-m c s}.  Currently there are two ways to retrieve this
 certificate, from a local file or from DNS.  If you chose a local
-file, it need to contain a X.509 certificate in PEM format.  If you
-chose DNS, you're asked for the domain name where the certificate is
-stored, the default is a good guess.  To my belief, Message (MML) is
-the first mail agent in the world to support retrieving @sc{s/mime}
-certificates from DNS, so you're not likely to find very many
-certificates out there.  At least there should be one, stored at the
-domain @code{simon.josefsson.org}.  LDAP is a more popular method of
-distributing certificates, support for it is planned.  (Meanwhile, you
-can use @code{ldapsearch} from the command line to retrieve a
-certificate into a file and use it.)
+file, it need to contain a X.509 certificate in @acronym{PEM} format.
+If you chose DNS, you're asked for the domain name where the
+certificate is stored, the default is a good guess.  To my belief,
+Message (@acronym{MML}) is the first mail agent in the world to support
+retrieving @acronym{S/MIME} certificates from DNS, so you're not
+likely to find very many certificates out there.  At least there
+should be one, stored at the domain @code{simon.josefsson.org}.  LDAP
+is a more popular method of distributing certificates, support for it
+is planned.  (Meanwhile, you can use @code{ldapsearch} from the
+command line to retrieve a certificate into a file and use it.)
 
 As for signing messages, OpenSSL can't perform signing operations
 without some kind of configuration.  Especially, you need to tell it
-where your private key and your certificate is stored.  MML uses an
-Emacs interface to OpenSSL, aptly named @code{smime.el}, and it
+where your private key and your certificate is stored.  @acronym{MML}
+uses an Emacs interface to OpenSSL, aptly named @code{smime.el}, and it
 contain a @code{custom} group used for this configuration.  So, try
 @kbd{M-x customize-group RET smime RET} and look around.
 
 Currently there is no support for talking to a CA (or RA) to create
 your own certificate.  None is planned either.  You need to do this
 manually with OpenSSL or using some other program.  I used Netscape
-and got a free @sc{s/mime} certificate from one of the big CA's on the
+and got a free @acronym{S/MIME} certificate from one of the big CA's on the
 net.  Netscape is able to export your private key and certificate in
 PKCS #12 format.  Use OpenSSL to convert this into a plain X.509
 certificate in PEM format as follows.
@@ -1030,23 +1021,58 @@ $ openssl pkcs12 -in ns.p12 -clcerts -nodes > key+cert.pem
 The @file{key+cert.pem} file should be pointed to from the
 @code{smime-keys} variable.  You should now be able to send signed mail.
 
-@emph{Note!}  Your private key is store unencrypted in the file, so take
-care in handling it.
+@emph{Note!}  Your private key is now stored unencrypted in the file,
+so take care in handling it.  Storing encrypted keys on the disk are
+supported, and Gnus will ask you for a passphrase before invoking
+OpenSSL.  Read the OpenSSL documentation for how to achieve this.  If
+you use unencrypted keys (e.g., if they are on a secure storage, or if
+you are on a secure single user machine) simply press @code{RET} at
+the passphrase prompt.
 
 @subsection Using PGP/MIME
 
-@sc{pgp/mime} requires an external OpenPGP implementation, such as GNU
-Privacy Guard (@uref{http://www.gnupg.org/}).  One Emacs interface to
-OpenPGP implementations, PGG (@pxref{Top, ,PGG, pgg, PGG Manual}), is
-included, but Mailcrypt and Florian Weimer's @code{gpg.el} are also
-supported.
+@acronym{PGP/MIME} requires an external OpenPGP implementation, such
+as @uref{http://www.gnupg.org/, GNU Privacy Guard}.  Pre-OpenPGP
+implementations such as PGP 2.x and PGP 5.x are also supported.  One
+Emacs interface to the PGP implementations, PGG (@pxref{Top, ,PGG,
+pgg, PGG Manual}), is included, but Mailcrypt and Florian Weimer's
+@code{gpg.el} are also supported.
 
 @vindex gpg-temp-directory
 Note, if you are using the @code{gpg.el} you must make sure that the
-directory specified by @code{gpg-temp-directory} have permissions 0700.
+directory specified by @code{gpg-temp-directory} have permissions
+0700.
+
+Creating your own key is described in detail in the documentation of
+your PGP implementation, so we refer to it.
+
+If you have imported your old PGP 2.x key into GnuPG, and want to send
+signed and encrypted messages to your fellow PGP 2.x users, you'll
+discover that the receiver cannot understand what you send. One
+solution is to use PGP 2.x instead (i.e., if you use @code{pgg}, set
+@code{pgg-default-scheme} to @code{pgp}).  If you do want to use
+GnuPG, you can use a compatibility script called @code{gpg-2comp}
+available from
+@uref{http://muppet.faveve.uni-stuttgart.de/~gero/gpg-2comp/}.  You
+could also convince your fellow PGP 2.x users to convert to GnuPG.
+@vindex mml-signencrypt-style-alist
+As a final workaround, you can make the sign and encryption work in
+two steps; separately sign, then encrypt a message.  If you would like
+to change this behavior you can customize the
+@code{mml-signencrypt-style-alist} variable.  For example:
 
-Creating your own OpenPGP key is described in detail in the
-documentation of your OpenPGP implementation, so we refer to it.
+@lisp
+(setq mml-signencrypt-style-alist '(("smime" separate)
+                                    ("pgp" separate)
+                                    ("pgpauto" separate)
+                                    ("pgpmime" separate)))
+@end lisp
+
+This causes to sign and encrypt in two passes, thus generating a
+message that can be understood by PGP version 2.
+
+(Refer to @uref{http://www.gnupg.org/gph/en/pgp2x.html} for more
+information about the problem.)
 
 @node Various Commands
 @section Various Commands
@@ -1067,7 +1093,7 @@ many places to rotate the text.  The default is 13.
 @vindex message-elide-ellipsis
 Elide the text between point and mark (@code{message-elide-region}).
 The text is killed and replaced with the contents of the variable
-@code{message-elide-ellipsis}. The default value is to use an ellipsis
+@code{message-elide-ellipsis}.  The default value is to use an ellipsis
 (@samp{[...]}).
 
 @item C-c C-z
@@ -1325,7 +1351,7 @@ Responses to messages have subjects that start with @samp{Re: }.  This
 is @emph{not} an abbreviation of the English word ``response'', but is
 Latin, and means ``in response to''.  Some illiterate nincompoops have
 failed to grasp this fact, and have ``internationalized'' their software
-to use abonimations like @samp{Aw: } (``antwort'') or @samp{Sv: }
+to use abominations like @samp{Aw: } (``antwort'') or @samp{Sv: }
 (``svar'') instead, which is meaningless and evil.  However, you may
 have to deal with users that use these evil tools, in which case you may
 set this variable to a regexp that matches these prefixes.  Myself, I
@@ -1336,7 +1362,23 @@ responding to a message:
 
 @lisp
 (setq message-subject-re-regexp
-     "^\\(\\(\\([Rr][Ee]\\|[Ss][Vv]\\|[Aa][Ww]\\): *\\)+\\)")
+      (concat
+       "^[ \t]*"
+         "\\("
+           "\\("
+             "[Aa][Nn][Tt][Ww]\\.?\\|"     ; antw
+             "[Aa][Ww]\\|"                 ; aw
+             "[Ff][Ww][Dd]?\\|"            ; fwd
+             "[Oo][Dd][Pp]\\|"             ; odp
+             "[Rr][Ee]\\|"                 ; re
+             "[Rr][\311\351][Ff]\\.?\\|"   ; ref
+             "[Ss][Vv]"                    ; sv
+           "\\)"
+           "\\(\\[[0-9]*\\]\\)"
+           "*:[ \t]*"
+         "\\)"
+       "*[ \t]*"
+       ))
 @end lisp
 
 @item message-subject-trailing-was-query
@@ -1363,6 +1405,17 @@ Specifies what to do when there are no recipients other than
 allowed.  If it is @code{never}, the posting is not allowed.  If it is
 @code{ask} (the default), you are prompted.
 
+@item message-hidden-headers
+@vindex message-hidden-headers
+A regexp, a list of regexps, or a list where the first element is
+@code{not} and the rest are regexps.  It says which headers to keep
+hidden when composing a message.
+
+@lisp
+(setq message-hidden-headers
+      '(not "From" "Subject" "To" "Cc" "Newsgroups"))
+@end lisp
+
 @end table
 
 
@@ -1401,8 +1454,8 @@ buffers that are initialized as mail.
 @findex message-smtpmail-send-it
 @findex smtpmail-send-it
 @findex feedmail-send-it
-Function used to send the current buffer as mail. The default is
-@code{message-send-mail-with-sendmail}. Other valid values include
+Function used to send the current buffer as mail.  The default is
+@code{message-send-mail-with-sendmail}.  Other valid values include
 @code{message-send-mail-with-mh}, @code{message-send-mail-with-qmail},
 @code{message-smtpmail-send-it}, @code{smtpmail-send-it} and
 @code{feedmail-send-it}.
@@ -1439,14 +1492,14 @@ command line.  Doing so would be even more evil than leaving it out.
 @item message-sendmail-envelope-from
 @vindex message-sendmail-envelope-from
 When @code{message-sendmail-f-is-evil} is @code{nil}, this specifies
-the address to use in the SMTP envelope.  If it is @code{nil}, use
-@code{user-mail-address}.  If it is the symbol @code{header}, use the
-@samp{From} header of the message.
+the address to use in the @acronym{SMTP} envelope.  If it is
+@code{nil}, use @code{user-mail-address}.  If it is the symbol
+@code{header}, use the @samp{From} header of the message.
 
 @item message-mailer-swallows-blank-line
 @vindex message-mailer-swallows-blank-line
 Set this to non-@code{nil} if the system's mailer runs the header and
-body together.  (This problem exists on Sunos 4 when sendmail is run
+body together.  (This problem exists on SunOS 4 when sendmail is run
 in remote mode.)  The value should be an expression to test whether
 the problem will actually occur.
 
@@ -1555,9 +1608,9 @@ unlikely that you should need to fiddle with this variable at all.
 
 @findex yow
 @cindex Mime-Version
-In addition, you can enter conses into this list.  The car of this cons
+In addition, you can enter conses into this list.  The @sc{car} of this cons
 should be a symbol.  This symbol's name is the name of the header, and
-the cdr can either be a string to be entered verbatim as the value of
+the @sc{cdr} can either be a string to be entered verbatim as the value of
 this header, or it can be a function to be called.  This function should
 return a string to be inserted.  For instance, if you want to insert
 @code{Mime-Version: 1.0}, you should enter @code{(Mime-Version . "1.0")}
@@ -1565,8 +1618,8 @@ into the list.  If you want to insert a funny quote, you could enter
 something like @code{(X-Yow . yow)} into the list.  The function
 @code{yow} will then be called without any arguments.
 
-If the list contains a cons where the car of the cons is
-@code{optional}, the cdr of this cons will only be inserted if it is
+If the list contains a cons where the @sc{car} of the cons is
+@code{optional}, the @sc{cdr} of this cons will only be inserted if it is
 non-@code{nil}.
 
 If you want to delete an entry from this list, the following Lisp
@@ -1709,7 +1762,7 @@ Note that Gnus provides a feature where clicking on `writes:' hides the
 cited text.  If you change the citation line too much, readers of your
 messages will have to adjust their Gnus, too.  See the variable
 @code{gnus-cite-attribution-suffix}.  @xref{Article Highlighting, ,
-Article Highlighting, gnus}, for details.
+Article Highlighting, gnus, The Gnus Manual}, for details.
 
 @item message-yank-prefix
 @vindex message-yank-prefix
@@ -1719,7 +1772,7 @@ When you are replying to or following up an article, you normally want
 to quote the person you are answering.  Inserting quoted text is done
 by @dfn{yanking}, and each line you yank will have
 @code{message-yank-prefix} prepended to it (except for quoted and
-empty lines which uses @code{message-yank-cited-prefix}). The default
+empty lines which uses @code{message-yank-cited-prefix}).  The default
 is @samp{> }.
 
 @item message-yank-cited-prefix
@@ -1727,7 +1780,7 @@ is @samp{> }.
 @cindex yanking
 @cindex cited
 @cindex quoting
-When yanking text from a article which contains no text or already
+When yanking text from an article which contains no text or already
 cited text, each line will be prefixed with the contents of this
 variable.  The default is @samp{>}.  See also
 @code{message-yank-prefix}.
@@ -1791,8 +1844,9 @@ signature.  So don't remove those characters, even though you might feel
 that they ruin your beautiful design, like, totally.
 
 Also note that no signature should be more than four lines long.
-Including ASCII graphics is an efficient way to get everybody to believe
-that you are silly and have nothing important to say.
+Including @acronym{ASCII} graphics is an efficient way to get
+everybody to believe that you are silly and have nothing important to
+say.
 
 
 @node Various Message Variables
@@ -1802,13 +1856,12 @@ that you are silly and have nothing important to say.
 @item message-default-charset
 @vindex message-default-charset
 @cindex charset
-Symbol naming a @sc{mime} charset.  Non-ASCII characters in messages are
-assumed to be encoded using this charset.  The default is @code{nil},
-which means ask the user.  (This variable is used only on non-@sc{mule}
-Emacsen.
-@xref{Charset Translation, , Charset Translation, emacs-mime,
-      Emacs MIME Manual}, for details on the @sc{mule}-to-@sc{mime}
-translation process.
+Symbol naming a @acronym{MIME} charset.  Non-@acronym{ASCII}
+characters in messages are assumed to be encoded using this charset.
+The default is @code{nil}, which means ask the user.  (This variable
+is used only on non-@sc{mule} Emacsen.  @xref{Charset Translation, ,
+Charset Translation, emacs-mime, Emacs MIME Manual}, for details on
+the @sc{mule}-to-@acronym{MIME} translation process.
 
 @item message-signature-separator
 @vindex message-signature-separator
@@ -1892,7 +1945,7 @@ Hook run after sending messages.
 
 @item message-cancel-hook
 @vindex message-cancel-hook
-Hook run when cancelling news articles.
+Hook run when canceling news articles.
 
 @item message-mode-syntax-table
 @vindex message-mode-syntax-table
@@ -1913,7 +1966,7 @@ message composition doesn't break too bad.
 Alist of ways to send outgoing messages.  Each element has the form
 
 @lisp
-(TYPE PREDICATE FUNCTION)
+(@var{type} @var{predicate} @var{function})
 @end lisp
 
 @table @var
@@ -2051,7 +2104,7 @@ This restores the Gnus window configuration when the message buffer is
 killed, postponed or exited.
 
 An @dfn{action} can be either: a normal function, or a list where the
-@code{car} is a function and the @code{cdr} is the list of arguments, or
+@sc{car} is a function and the @sc{cdr} is the list of arguments, or
 a form to be @code{eval}ed.