No Gnus v0.8 is released.
[gnus] / texi / message.texi
index 29a2a2d..a6f56dd 100644 (file)
@@ -9,7 +9,7 @@
 This file documents Message, the Emacs message composition mode.
 
 Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-2004, 2005, 2006 Free Software Foundation, Inc.
+2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -63,6 +63,7 @@ Message mode buffers.
 * Variables::         Customizing the message buffers.
 * Compatibility::     Making Message backwards compatible.
 * Appendices::        More technical things.
+* GNU Free Documentation License:: The license for this documentation.
 * Index::             Variable, function and concept index.
 * Key Index::         List of Message mode keys.
 @end menu
@@ -70,7 +71,7 @@ Message mode buffers.
 @c Adjust ../Makefile.in if you change the following lines:
 Message is distributed with Gnus.  The Gnus distribution
 @c
-corresponding to this manual is No Gnus v0.4.
+corresponding to this manual is No Gnus v0.8.
 
 
 @node Interface
@@ -697,7 +698,7 @@ cross-post, add that target newsgroup to the @samp{Newsgroups} header if
 it is not a member of @samp{Newsgroups}, and insert a note in the body.
 If @code{message-cross-post-default} is @code{nil} or if this command is
 called with a prefix-argument, only the @samp{FollowUp-To} header will
-be set but the the target newsgroup will not be added to the
+be set but the target newsgroup will not be added to the
 @samp{Newsgroups} header.  The function to insert a note is controlled
 by the @code{message-cross-post-note-function} variable.
 
@@ -825,11 +826,11 @@ 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.
 
-@findex mml-attach
+@findex mml-attach-file
 @kindex C-c C-a
 The most typical thing users want to use the multipart things in
 @acronym{MIME} for is to add ``attachments'' to mail they send out.
-This can be done with the @kbd{C-c C-a} command (@kbd{M-x mml-attach}),
+This can be done with the @kbd{C-c C-a} command (@kbd{M-x mml-attach-file}),
 which will prompt for a file name and a @acronym{MIME} type.
 
 @vindex mml-dnd-protocol-alist
@@ -894,11 +895,21 @@ Libidn} installed in order to use this functionality.
 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.
+@acronym{PGP/MIME} (RFC 2015/3156) and @acronym{S/MIME}.
 
+@menu
+* Signing and encryption::      Signing and encrypting commands.
+* Using S/MIME::                Using S/MIME
+* Using PGP/MIME::              Using PGP/MIME
+* PGP Compatibility::           Compatibility with older implementations
+@end menu
+
+@node Signing and encryption
+@subsection Signing and encrypting commands
+
+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
 
 @item C-c C-m s s
@@ -981,6 +992,7 @@ least not compared with making sure all involved programs talk with each
 other properly.  Thus, we now describe what external libraries or
 programs are required to make things work, and some small general hints.
 
+@node Using S/MIME
 @subsection Using S/MIME
 
 @emph{Note!}  This section assume you have a basic familiarity with
@@ -1043,6 +1055,7 @@ 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.
 
+@node Using PGP/MIME
 @subsection Using PGP/MIME
 
 @acronym{PGP/MIME} requires an external OpenPGP implementation, such
@@ -1050,7 +1063,48 @@ 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.
+@code{gpg.el} are also supported.  @xref{PGP Compatibility}.
+
+@cindex gpg-agent
+Message internally calls GnuPG (the @command{gpg} command) to perform
+data encryption, and in certain cases (decrypting or signing for
+example), @command{gpg} requires user's passphrase.  Currently the
+recommended way to supply your passphrase to @command{gpg} is to use the
+@command{gpg-agent} program.
+
+To use @command{gpg-agent} in Emacs, you need to run the following
+command from the shell before starting Emacs.
+
+@example
+eval `gpg-agent --daemon`
+@end example
+
+This will invoke @command{gpg-agent} and set the environment variable
+@code{GPG_AGENT_INFO} to allow @command{gpg} to communicate with it.
+It might be good idea to put this command in your @file{.xsession} or
+@file{.bash_profile}.  @xref{Invoking GPG-AGENT, , , gnupg, Using the
+GNU Privacy Guard}.
+
+Once your @command{gpg-agent} is set up, it will ask you for a
+passphrase as needed for @command{gpg}.  Under the X Window System,
+you will see a new passphrase input dialog appear.  The dialog is
+provided by PIN Entry (the @command{pinentry} command), and as of
+version 0.7.2, @command{pinentry} cannot cooperate with Emacs on a
+single tty.  So, if you are using a text console, you may need to put
+a passphrase into gpg-agent's cache beforehand.  The following command
+does the trick.
+
+@example
+gpg --use-agent --sign < /dev/null > /dev/null
+@end example
+
+The Lisp variable @code{pgg-gpg-use-agent} controls whether to use
+@command{gpg-agent}.  See also @xref{Caching passphrase, , , pgg, The
+PGG Manual}.
+
+
+@node PGP Compatibility
+@subsection Compatibility with older implementations
 
 @vindex gpg-temp-directory
 Note, if you are using the @code{gpg.el} you must make sure that the
@@ -1416,7 +1470,7 @@ responding to a message:
 @vindex message-subject-trailing-was-regexp
 Controls what to do with trailing @samp{(was: <old subject>)} in subject
 lines.  If @code{nil}, leave the subject unchanged.  If it is the symbol
-@code{ask}, query the user what do do.  In this case, the subject is
+@code{ask}, query the user what to do.  In this case, the subject is
 matched against @code{message-subject-trailing-was-ask-regexp}.  If
 @code{message-subject-trailing-was-query} is @code{t}, always strip the
 trailing old subject.  In this case,
@@ -1496,9 +1550,10 @@ buffers that are initialized as mail.
 
 @item message-generate-hashcash
 @vindex message-generate-hashcash
-Boolean variable that indicate whether @samp{X-Hashcash} headers
+Variable that indicates whether @samp{X-Hashcash} headers
 should be computed for the message.  @xref{Hashcash, ,Hashcash,gnus,
-The Gnus Manual}.
+The Gnus Manual}.  If @code{opportunistic}, only generate the headers
+when it doesn't lead to the user having to wait.
 
 @end table
 
@@ -1509,18 +1564,39 @@ The Gnus Manual}.
 @table @code
 @item message-send-mail-function
 @vindex message-send-mail-function
+@findex message-send-mail-function
 @findex message-send-mail-with-sendmail
 @findex message-send-mail-with-mh
 @findex message-send-mail-with-qmail
 @findex message-smtpmail-send-it
 @findex smtpmail-send-it
 @findex feedmail-send-it
+@findex message-send-mail-with-mailclient
 Function used to send the current buffer as mail.  The default is
 @code{message-send-mail-with-sendmail}, or @code{smtpmail-send-it}
 according to the system.  Other valid values include
+@code{message-send-mail-with-mailclient},
 @code{message-send-mail-with-mh}, @code{message-send-mail-with-qmail},
 @code{message-smtpmail-send-it} and @code{feedmail-send-it}.
 
+The function
+@code{message-send-mail-with-sendmail} pipes your article to the
+@code{sendmail} binary for further queuing and sending.  When your local
+system is not configured for sending mail using @code{sendmail}, and you
+have access to a remote @acronym{SMTP} server, you can set
+@code{message-send-mail-function} to @code{smtpmail-send-it} and make
+sure to setup the @code{smtpmail} package correctly.  An example:
+
+@lisp
+(setq message-send-mail-function 'smtpmail-send-it
+      smtpmail-default-smtp-server "YOUR SMTP HOST")
+@end lisp
+
+To the thing similar to this, there is
+@code{message-smtpmail-send-it}.  It is useful if your @acronym{ISP}
+requires the @acronym{POP}-before-@acronym{SMTP} authentication.
+@xref{POP before SMTP, , POP before SMTP, gnus, The Gnus Manual}.
+
 @item message-mh-deletable-headers
 @vindex message-mh-deletable-headers
 Most versions of MH doesn't like being fed messages that contain the
@@ -1710,56 +1786,73 @@ to this list.
 Valid checks are:
 
 @table @code
-@item subject-cmsg
-Check the subject for commands.
-@item sender
-@cindex Sender
-Insert a new @code{Sender} header if the @code{From} header looks odd.
-@item multiple-headers
-Check for the existence of multiple equal headers.
-@item sendsys
-@cindex sendsys
-Check for the existence of version and sendsys commands.
-@item message-id
-Check whether the @code{Message-ID} looks ok.
-@item from
-Check whether the @code{From} header seems nice.
-@item long-lines
-@cindex long lines
-Check for too long lines.
-@item control-chars
-Check for invalid characters.
-@item size
-Check for excessive size.
-@item new-text
-Check whether there is any new text in the messages.
-@item signature
-Check the length of the signature.
 @item approved
 @cindex approved
 Check whether the article has an @code{Approved} header, which is
 something only moderators should include.
+@item continuation-headers
+Check whether there are continuation header lines that don't begin with
+whitespace.
+@item control-chars
+Check for invalid characters.
 @item empty
 Check whether the article is empty.
-@item invisible-text
-Check whether there is any invisible text in the buffer.
-@item empty-headers
-Check whether any of the headers are empty.
 @item existing-newsgroups
 Check whether the newsgroups mentioned in the @code{Newsgroups} and
 @code{Followup-To} headers exist.
-@item valid-newsgroups
-Check whether the @code{Newsgroups} and @code{Followup-to} headers
-are valid syntactically.
+@item from
+Check whether the @code{From} header seems nice.
+@item illegible-text
+Check whether there is any non-printable character in the body.
+@item invisible-text
+Check whether there is any invisible text in the buffer.
+@item long-header-lines
+Check for too long header lines.
+@item long-lines
+@cindex long lines
+Check for too long lines in the body.
+@item message-id
+Check whether the @code{Message-ID} looks syntactically ok.
+@item multiple-headers
+Check for the existence of multiple equal headers.
+@item new-text
+Check whether there is any new text in the messages.
+@item newsgroups
+Check whether the @code{Newsgroups} header exists and is not empty.
+@item quoting-style
+Check whether text follows last quoted portion.
 @item repeated-newsgroups
 Check whether the @code{Newsgroups} and @code{Followup-to} headers
 contains repeated group names.
+@item reply-to
+Check whether the @code{Reply-To} header looks ok.
+@item sender
+@cindex Sender
+Insert a new @code{Sender} header if the @code{From} header looks odd.
+@item sendsys
+@cindex sendsys
+Check for the existence of version and sendsys commands.
+@item shoot
+Check whether the domain part of the @code{Message-ID} header looks ok.
 @item shorten-followup-to
 Check whether to add a @code{Followup-to} header to shorten the number
 of groups to post to.
+@item signature
+Check the length of the signature.
+@item size
+Check for excessive size.
+@item subject
+Check whether the @code{Subject} header exists and is not empty.
+@item subject-cmsg
+Check the subject for commands.
+@item valid-newsgroups
+Check whether the @code{Newsgroups} and @code{Followup-to} headers
+are valid syntactically.
 @end table
 
-All these conditions are checked by default.
+All these conditions are checked by default, except for @code{sender}
+for which the check is disabled by default if
+@code{message-insert-canlock} is non-@code{nil} (@pxref{Canceling News}).
 
 @item message-ignored-news-headers
 @vindex message-ignored-news-headers
@@ -1901,8 +1994,18 @@ If this variable is @code{nil}, no signature will be inserted at all.
 @item message-signature-file
 @vindex message-signature-file
 File containing the signature to be inserted at the end of the buffer.
+If a path is specified, the value of
+@code{message-signature-directory} is ignored, even if set.
 The default is @file{~/.signature}.
 
+@item message-signature-directory
+@vindex message-signature-directory
+Name of directory containing signature files.  Comes in handy if you
+have many such files, handled via Gnus posting styles for instance.
+If @code{nil} (the default), @code{message-signature-file} is expected
+to specify the directory if needed.
+
+
 @item message-signature-insert-empty-line
 @vindex message-signature-insert-empty-line
 If @code{t} (the default value) an empty line is inserted before the
@@ -1937,6 +2040,13 @@ Emacsen.)  @xref{Charset Translation, , Charset Translation, emacs-mime,
 Emacs MIME Manual}, for details on the @sc{mule}-to-@acronym{MIME}
 translation process.
 
+@item message-fill-column
+@vindex message-fill-column
+@cindex auto-fill
+Local value for the column beyond which automatic line-wrapping should
+happen for message buffers.  If non-nil (the default), also turn on
+auto-fill in message buffers.
+
 @item message-signature-separator
 @vindex message-signature-separator
 Regexp matching the signature separator.  It is @samp{^-- *$} by
@@ -2133,10 +2243,36 @@ message buffers are kept alive.
 @table @code
 @item message-generate-new-buffers
 @vindex message-generate-new-buffers
-If non-@code{nil}, generate new buffers.  The default is @code{t}.  If
-this is a function, call that function with three parameters: The type,
-the to address and the group name.  (Any of these may be @code{nil}.)
-The function should return the new buffer name.
+Controls whether to create a new message buffer to compose a message.
+Valid values include:
+
+@table @code
+@item nil
+Generate the buffer name in the Message way (e.g., *mail*, *news*, *mail
+to whom*, *news on group*, etc.) and continue editing in the existing
+buffer of that name.  If there is no such buffer, it will be newly
+created.
+
+@item unique
+@item t
+Create the new buffer with the name generated in the Message way.  This
+is the default.
+
+@item unsent
+Similar to @code{unique} but the buffer name begins with "*unsent ".
+
+@item standard
+Similar to @code{nil} but the buffer name is simpler like *mail
+message*.
+@end table
+@table @var
+@item function
+If this is a function, call that function with three parameters: The
+type, the To address and the group name (any of these may be
+@code{nil}).  The function should return the new buffer name.
+@end table
+
+The default value is @code{unique}.
 
 @item message-max-buffers
 @vindex message-max-buffers
@@ -2288,6 +2424,9 @@ basis of the new @code{Cc} header, except if this header is
 @end table
 
 
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@include doclicense.texi
 
 @node Index
 @chapter Index