* message.texi (Buffer Entry): New section.
[gnus] / texi / message.texi
1 \input texinfo                  @c -*-texinfo-*-
2
3 @setfilename message
4 @settitle Message 5.8.7 Manual
5 @synindex fn cp
6 @synindex vr cp
7 @synindex pg cp
8 @dircategory Editors
9 @direntry
10 * Message: (message).   Mail and news composition mode that goes with Gnus.
11 @end direntry
12 @iftex
13 @finalout
14 @end iftex
15 @setchapternewpage odd
16
17 @ifnottex
18
19 This file documents Message, the Emacs message composition mode.
20
21 Copyright (C) 1996,97,98,99,2000 Free Software Foundation, Inc.
22
23 Permission is granted to copy, distribute and/or modify this document
24 under the terms of the GNU Free Documentation License, Version 1.1 or
25 any later version published by the Free Software Foundation; with no
26 Invariant Sections, with the Front-Cover texts being ``A GNU
27 Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
28 license is included in the section entitled ``GNU Free Documentation
29 License'' in the Emacs manual.
30
31 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
32 this GNU Manual, like GNU software.  Copies published by the Free
33 Software Foundation raise funds for GNU development.''
34
35 This document is part of a collection distributed under the GNU Free
36 Documentation License.  If you want to distribute this document
37 separately from the collection, you can do so by adding a copy of the
38 license to the document, as described in section 6 of the license.
39 @end ifnottex
40
41 @tex
42
43 @titlepage
44 @title Message 5.8.7 Manual
45
46 @author by Lars Magne Ingebrigtsen
47 @page
48
49 @vskip 0pt plus 1filll
50 Copyright @copyright{} 1996,97,98,99,2000 Free Software Foundation, Inc.
51
52 Permission is granted to copy, distribute and/or modify this document
53 under the terms of the GNU Free Documentation License, Version 1.1 or
54 any later version published by the Free Software Foundation; with the
55 Invariant Sections being none, with the Front-Cover texts being ``A GNU
56 Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
57 license is included in the section entitled ``GNU Free Documentation
58 License'' in the Emacs manual.
59
60 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
61 this GNU Manual, like GNU software.  Copies published by the Free
62 Software Foundation raise funds for GNU development.''
63
64 This document is part of a collection distributed under the GNU Free
65 Documentation License.  If you want to distribute this document
66 separately from the collection, you can do so by adding a copy of the
67 license to the document, as described in section 6 of the license.
68 @end titlepage
69 @page
70
71 @end tex
72
73 @node Top
74 @top Message
75
76 All message composition from Gnus (both mail and news) takes place in
77 Message mode buffers.
78
79 @menu
80 * Interface::         Setting up message buffers.
81 * Commands::          Commands you can execute in message mode buffers.
82 * Variables::         Customizing the message buffers.
83 * Compatibility::     Making Message backwards compatible.
84 * Appendices::        More technical things.
85 * Index::             Variable, function and concept index.
86 * Key Index::         List of Message mode keys.
87 @end menu
88
89 This manual corresponds to Message 5.8.7.  Message is distributed with
90 the Gnus distribution bearing the same version number as this manual.
91
92
93 @node Interface
94 @chapter Interface
95
96 When a program (or a person) wants to respond to a message -- reply,
97 follow up, forward, cancel -- the program (or person) should just put
98 point in the buffer where the message is and call the required command.
99 @code{Message} will then pop up a new @code{message} mode buffer with
100 appropriate headers filled out, and the user can edit the message before
101 sending it.
102
103 @menu
104 * New Mail Message::     Editing a brand new mail message.
105 * New News Message::     Editing a brand new news message.
106 * Reply::                Replying via mail.
107 * Wide Reply::           Responding to all people via mail.
108 * Followup::             Following up via news.
109 * Canceling News::       Canceling a news article.
110 * Superseding::          Superseding a message.
111 * Forwarding::           Forwarding a message via news or mail.
112 * Resending::            Resending a mail message.
113 * Bouncing::             Bouncing a mail message.
114 @end menu
115
116
117 @node New Mail Message
118 @section New Mail Message
119
120 @findex message-mail
121 The @code{message-mail} command pops up a new message buffer.
122
123 Two optional parameters are accepted: The first will be used as the
124 @code{To} header and the second as the @code{Subject} header.  If these
125 are @code{nil}, those two headers will be empty.
126
127
128 @node New News Message
129 @section New News Message
130
131 @findex message-news
132 The @code{message-news} command pops up a new message buffer.
133
134 This function accepts two optional parameters.  The first will be used
135 as the @code{Newsgroups} header and the second as the @code{Subject}
136 header.  If these are @code{nil}, those two headers will be empty.
137
138
139 @node Reply
140 @section Reply
141
142 @findex message-reply
143 The @code{message-reply} function pops up a message buffer that's a
144 reply to the message in the current buffer.
145
146 @vindex message-reply-to-function
147 Message uses the normal methods to determine where replies are to go
148 (@pxref{Responses}), but you can change the behavior to suit your needs
149 by fiddling with the @code{message-reply-to-function} variable.
150
151 If you want the replies to go to the @code{Sender} instead of the
152 @code{From}, you could do something like this:
153
154 @lisp
155 (setq message-reply-to-function
156       (lambda ()
157        (cond ((equal (mail-fetch-field "from") "somebody")
158                (list (cons 'To (mail-fetch-field "sender"))))
159              (t
160               nil))))
161 @end lisp
162
163 This function will be called narrowed to the head of the article that is
164 being replied to.
165
166 As you can see, this function should return a string if it has an
167 opinion as to what the To header should be.  If it does not, it should
168 just return @code{nil}, and the normal methods for determining the To
169 header will be used.
170
171 This function can also return a list.  In that case, each list element
172 should be a cons, where the car should be the name of an header
173 (eg. @code{Cc}) and the cdr should be the header value
174 (eg. @samp{larsi@@ifi.uio.no}).  All these headers will be inserted into
175 the head of the outgoing mail.
176
177
178 @node Wide Reply
179 @section Wide Reply
180
181 @findex message-wide-reply
182 The @code{message-wide-reply} pops up a message buffer that's a wide
183 reply to the message in the current buffer.  A @dfn{wide reply} is a
184 reply that goes out to all people listed in the @code{To}, @code{From}
185 (or @code{Reply-to}) and @code{Cc} headers.
186
187 @vindex message-wide-reply-to-function
188 Message uses the normal methods to determine where wide replies are to go,
189 but you can change the behavior to suit your needs by fiddling with the
190 @code{message-wide-reply-to-function}.  It is used in the same way as
191 @code{message-reply-to-function} (@pxref{Reply}).
192
193 @findex message-dont-reply-to-names
194 Addresses that match the @code{message-dont-reply-to-names} regular
195 expression will be removed from the @code{Cc} header.
196
197
198 @node Followup
199 @section Followup
200
201 @findex message-followup
202 The @code{message-followup} command pops up a message buffer that's a
203 followup to the message in the current buffer.
204
205 @vindex message-followup-to-function
206 Message uses the normal methods to determine where followups are to go,
207 but you can change the behavior to suit your needs by fiddling with the
208 @code{message-followup-to-function}.  It is used in the same way as
209 @code{message-reply-to-function} (@pxref{Reply}).
210
211 @vindex message-use-followup-to
212 The @code{message-use-followup-to} variable says what to do about
213 @code{Followup-To} headers.  If it is @code{use}, always use the value.
214 If it is @code{ask} (which is the default), ask whether to use the
215 value.  If it is @code{t}, use the value unless it is @samp{poster}.  If
216 it is @code{nil}, don't use the value.
217
218
219 @node Canceling News
220 @section Canceling News
221
222 @findex message-cancel-news
223 The @code{message-cancel-news} command cancels the article in the
224 current buffer.
225
226
227 @node Superseding
228 @section Superseding
229
230 @findex message-supersede
231 The @code{message-supersede} command pops up a message buffer that will
232 supersede the message in the current buffer.
233
234 @vindex message-ignored-supersedes-headers
235 Headers matching the @code{message-ignored-supersedes-headers} are
236 removed before popping up the new message buffer.  The default is@*
237 @samp{^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|@*
238 ^Received:\\|^X-From-Line:\\|Return-Path:\\|^Supersedes:}.
239
240
241
242 @node Forwarding
243 @section Forwarding
244
245 @findex message-forward
246 The @code{message-forward} command pops up a message buffer to forward
247 the message in the current buffer.  If given a prefix, forward using
248 news.
249
250 @table @code
251 @item message-forward-ignored-headers
252 @vindex message-forward-ignored-headers
253 All headers that match this regexp will be deleted when forwarding a message.
254
255 @item message-make-forward-subject-function
256 @vindex message-make-forward-subject-function
257 A list of functions that are called to generate a subject header for
258 forwarded messages.  The subject generated by the previous function is
259 passed into each successive function.
260
261 The provided functions are:
262
263 @table @code
264 @item message-forward-subject-author-subject
265 @findex message-forward-subject-author-subject
266 Source of article (author or newsgroup), in brackets followed by the
267 subject.
268
269 @item message-forward-subject-fwd
270 Subject of article with @samp{Fwd:} prepended to it.
271 @end table
272
273 @item message-wash-forwarded-subjects
274 @vindex message-wash-forwarded-subjects
275 If this variable is @code{t}, the subjects of forwarded messages have
276 the evidence of previous forwards (such as @samp{Fwd:}, @samp{Re:},
277 @samp{(fwd)}) removed before the new subject is
278 constructed.  The default value is @code{nil}.
279
280 @item message-forward-as-mime
281 @vindex message-forward-as-mime
282 If this variable is @code{t} (the default), forwarded messages are
283 included as inline MIME RFC822 parts.  If it's @code{nil}, forwarded
284 messages will just be copied inline to the new message, like previous,
285 non MIME-savvy versions of gnus would do.
286 @end table
287
288
289 @node Resending
290 @section Resending
291
292 @findex message-resend
293 The @code{message-resend} command will prompt the user for an address
294 and resend the message in the current buffer to that address.
295
296 @vindex message-ignored-resent-headers
297 Headers that match the @code{message-ignored-resent-headers} regexp will
298 be removed before sending the message.  The default is
299 @samp{^Return-receipt}.
300
301
302 @node Bouncing
303 @section Bouncing
304
305 @findex message-bounce
306 The @code{message-bounce} command will, if the current buffer contains a
307 bounced mail message, pop up a message buffer stripped of the bounce
308 information.  A @dfn{bounced message} is typically a mail you've sent
309 out that has been returned by some @code{mailer-daemon} as
310 undeliverable.
311
312 @vindex message-ignored-bounced-headers
313 Headers that match the @code{message-ignored-bounced-headers} regexp
314 will be removed before popping up the buffer.  The default is
315 @samp{^\\(Received\\|Return-Path\\):}.
316
317
318 @node Commands
319 @chapter Commands
320
321 @menu
322 * Buffer Entry::        Commands after entering a Message buffer.
323 * Header Commands::     Commands for moving to headers.
324 * Movement::            Moving around in message buffers.
325 * Insertion::           Inserting things into message buffers.
326 * MIME::                @sc{mime} considerations.
327 * Security::            Signing and encrypting messages.
328 * Various Commands::    Various things.
329 * Sending::             Actually sending the message.
330 * Mail Aliases::        How to use mail aliases.
331 @end menu
332
333
334 @node Buffer Entry
335 @section Buffer Entry
336 @cindex undo
337 @kindex C-_
338
339 You most often end up in a Message buffer when responding to some other
340 message of some sort.  Message does lots of handling of quoted text, and
341 may remove signatures, reformat the text, or the like---depending on
342 which used settings you're using.  Message usually gets things right,
343 but sometimes it stumbles.  To help the user unwind these stumblings,
344 Message sets the undo boundary before each major automatic action it
345 takes.  If you press the undo key (usually located at @kbd{C-_}) a few
346 times, you will get back the un-edited message you're responding to.
347
348
349 @node Header Commands
350 @section Header Commands
351
352 All these commands move to the header in question.  If it doesn't exist,
353 it will be inserted.
354
355 @table @kbd
356
357 @item C-c ?
358 @kindex C-c ?
359 @findex message-goto-to
360 Describe the message mode.
361
362 @item C-c C-f C-t
363 @kindex C-c C-f C-t
364 @findex message-goto-to
365 Go to the @code{To} header (@code{message-goto-to}).
366
367 @item C-c C-f C-b
368 @kindex C-c C-f C-b
369 @findex message-goto-bcc
370 Go to the @code{Bcc} header (@code{message-goto-bcc}).
371
372 @item C-c C-f C-f
373 @kindex C-c C-f C-f
374 @findex message-goto-fcc
375 Go to the @code{Fcc} header (@code{message-goto-fcc}).
376
377 @item C-c C-f C-c
378 @kindex C-c C-f C-c
379 @findex message-goto-cc
380 Go to the @code{Cc} header (@code{message-goto-cc}).
381
382 @item C-c C-f C-s
383 @kindex C-c C-f C-s
384 @findex message-goto-subject
385 Go to the @code{Subject} header (@code{message-goto-subject}).
386
387 @item C-c C-f C-r
388 @kindex C-c C-f C-r
389 @findex message-goto-reply-to
390 Go to the @code{Reply-To} header (@code{message-goto-reply-to}).
391
392 @item C-c C-f C-n
393 @kindex C-c C-f C-n
394 @findex message-goto-newsgroups
395 Go to the @code{Newsgroups} header (@code{message-goto-newsgroups}).
396
397 @item C-c C-f C-d
398 @kindex C-c C-f C-d
399 @findex message-goto-distribution
400 Go to the @code{Distribution} header (@code{message-goto-distribution}).
401
402 @item C-c C-f C-o
403 @kindex C-c C-f C-o
404 @findex message-goto-followup-to
405 Go to the @code{Followup-To} header (@code{message-goto-followup-to}).
406
407 @item C-c C-f C-k
408 @kindex C-c C-f C-k
409 @findex message-goto-keywords
410 Go to the @code{Keywords} header (@code{message-goto-keywords}).
411
412 @item C-c C-f C-u
413 @kindex C-c C-f C-u
414 @findex message-goto-summary
415 Go to the @code{Summary} header (@code{message-goto-summary}).
416
417 @end table
418
419
420 @node Movement
421 @section Movement
422
423 @table @kbd
424 @item C-c C-b
425 @kindex C-c C-b
426 @findex message-goto-body
427 Move to the beginning of the body of the message
428 (@code{message-goto-body}).
429
430 @item C-c C-i
431 @kindex C-c C-i
432 @findex message-goto-signature
433 Move to the signature of the message (@code{message-goto-signature}).
434
435 @end table
436
437
438 @node Insertion
439 @section Insertion
440
441 @table @kbd
442
443 @item C-c C-y
444 @kindex C-c C-y
445 @findex message-yank-original
446 Yank the message that's being replied to into the message buffer
447 (@code{message-yank-original}).
448
449 @item C-c M-C-y
450 @kindex C-c M-C-y
451 @findex message-yank-buffer
452 Prompt for a buffer name and yank the contents of that buffer into the
453 message buffer (@code{message-yank-buffer}).
454
455 @item C-c C-q
456 @kindex C-c C-q
457 @findex message-fill-yanked-message
458 Fill the yanked message (@code{message-fill-yanked-message}).  Warning:
459 Can severely mess up the yanked text if its quoting conventions are
460 strange.  You'll quickly get a feel for when it's safe, though.  Anyway,
461 just remember that @kbd{C-x u} (@code{undo}) is available and you'll be
462 all right.
463
464 @item C-c C-w
465 @kindex C-c C-w
466 @findex message-insert-signature
467 Insert a signature at the end of the buffer
468 (@code{message-insert-signature}).
469
470 @item C-c M-h
471 @kindex C-c M-h
472 @findex message-insert-headers
473 Insert the message headers (@code{message-insert-headers}).
474
475 @end table
476
477 @table @code
478 @item message-ignored-cited-headers
479 @vindex message-ignored-cited-headers
480 All headers that match this regexp will be removed from yanked
481 messages.  The default is @samp{.}, which means that all headers will be
482 removed.
483
484 @item message-cite-prefix-regexp
485 @vindex message-cite-prefix-regexp
486 Regexp matching the longest possible citation prefix on a line.
487
488 @item message-citation-line-function
489 @vindex message-citation-line-function
490 Function called to insert the citation line.  The default is
491 @code{message-insert-citation-line}, which will lead to citation lines
492 that look like:
493
494 @example
495 Hallvard B Furuseth <h.b.furuseth@@usit.uio.no> writes:
496 @end example
497
498 Point will be at the beginning of the body of the message when this
499 function is called.
500
501 @item message-yank-prefix
502 @vindex message-yank-prefix
503 @cindex yanking
504 @cindex quoting
505 When you are replying to or following up an article, you normally want
506 to quote the person you are answering.  Inserting quoted text is done by
507 @dfn{yanking}, and each quoted line you yank will have
508 @code{message-yank-prefix} prepended to it.  The default is @samp{> }.
509
510 @item message-indentation-spaces
511 @vindex message-indentation-spaces
512 Number of spaces to indent yanked messages.
513
514 @item message-cite-function
515 @vindex message-cite-function
516 @findex message-cite-original
517 @findex sc-cite-original
518 @findex message-cite-original-without-signature
519 @cindex Supercite
520 Function for citing an original message.  The default is
521 @code{message-cite-original}, which simply inserts the original message
522 and prepends @samp{> } to each line.
523 @code{message-cite-original-without-signature} does the same, but elides
524 the signature.  You can also set it to @code{sc-cite-original} to use
525 Supercite.
526
527 @item message-indent-citation-function
528 @vindex message-indent-citation-function
529 Function for modifying a citation just inserted in the mail buffer.
530 This can also be a list of functions.  Each function can find the
531 citation between @code{(point)} and @code{(mark t)}.  And each function
532 should leave point and mark around the citation text as modified.
533
534 @item message-signature
535 @vindex message-signature
536 String to be inserted at the end of the message buffer.  If @code{t}
537 (which is the default), the @code{message-signature-file} file will be
538 inserted instead.  If a function, the result from the function will be
539 used instead.  If a form, the result from the form will be used instead.
540 If this variable is @code{nil}, no signature will be inserted at all.
541
542 @item message-signature-file
543 @vindex message-signature-file
544 File containing the signature to be inserted at the end of the buffer.
545 The default is @samp{~/.signature}.
546
547 @end table
548
549 Note that RFC1036bis says that a signature should be preceded by the three
550 characters @samp{-- } on a line by themselves.  This is to make it
551 easier for the recipient to automatically recognize and process the
552 signature.  So don't remove those characters, even though you might feel
553 that they ruin your beautiful design, like, totally.
554
555 Also note that no signature should be more than four lines long.
556 Including ASCII graphics is an efficient way to get everybody to believe
557 that you are silly and have nothing important to say.
558
559
560 @node MIME
561 @section MIME
562 @cindex MML
563 @cindex MIME
564 @cindex multipart
565 @cindex attachment
566
567 Message is a @sc{mime}-compliant posting agent.  The user generally
568 doesn't have to do anything to make the @sc{mime} happen---Message will
569 automatically add the @code{Content-Type} and
570 @code{Content-Transfer-Encoding} headers.
571
572 The most typical thing users want to use the multipart things in
573 @sc{mime} for is to add ``attachments'' to mail they send out.  This can
574 be done with the @code{C-c C-a} command, which will prompt for a file
575 name and a @sc{mime} type.
576
577 You can also create arbitrarily complex multiparts using the MML
578 language (@pxref{Composing, , Composing, emacs-mime, The Emacs MIME
579 Manual}).
580
581 @node Security
582 @section Security
583 @cindex Security
584 @cindex S/MIME
585 @cindex PGP/MIME
586 @cindex sign
587 @cindex encrypt
588
589 Using the MML language, Message is able to create digitally signed and
590 digitally encrypted messages.  Message (or rather MML) currently support
591 PGP/MIME and S/MIME.  Instructing MML to perform security operations on
592 a MIME part is done using the @code{M-m s} key map for signing and the
593 @code{M-m c} key map for encryption, as follows.
594
595 @table @kbd
596
597 @item M-m s s
598 @kindex M-m s s
599 @findex mml-secure-sign-smime
600
601 Digitally sign current MIME part using S/MIME.
602
603 @item M-m s p
604 @kindex M-m s p
605 @findex mml-secure-sign-pgp
606
607 Digitally sign current MIME part using PGP/MIME.
608
609 @item M-m c s
610 @kindex M-m c s
611 @findex mml-secure-encrypt-smime
612
613 Digitally encrypt current MIME part using S/MIME.
614
615 @item M-m c p
616 @kindex M-m c p
617 @findex mml-secure-encrypt-pgpmime
618
619 Digitally encrypt current MIME part using PGP/MIME.
620
621 @end table
622
623 These commands do not immediately sign or encrypt the message, they
624 merely insert proper MML tags to instruct the MML engine to perform that
625 operation when the message is actually sent.  They may perform other
626 operations too, such as locating and retrieving a S/MIME certificate of
627 the person you wish to send encrypted mail to.
628
629 Since signing and especially encryption often is used when sensitive
630 information is sent, you may want to have some way to ensure that your
631 mail is actually signed or encrypted.  After invoking the above
632 sign/encrypt commands, it is possible to preview the raw article by
633 using @code{C-u M-m P} (@code{mml-preview}).  Then you can verify that
634 your long rant about what your ex-significant other or whomever actually
635 did with that funny looking person at that strange party the other
636 night, actually will be sent encrypted.
637
638 @emph{Note!}  Neither PGP/MIME nor S/MIME encrypt/signs RFC822 headers.
639 They only operate on the MIME object.  Keep this in mind before sending
640 mail with a sensitive Subject line.
641
642 Actually using the security commands above is not very difficult.  At
643 least not compared with making sure all involved programs talk with each
644 other properly.  Thus, we now describe what external libraries or
645 programs are required to make things work, and some small general hints.
646
647 @subsection Using S/MIME
648
649 @emph{Note!}  This section assume you have a basic familiarity with
650 modern cryptography, S/MIME, various PKCS standards, OpenSSL and so on.
651
652 The S/MIME support in Message (and MML) require OpenSSL.  OpenSSL
653 perform the actual S/MIME sign/encrypt operations.  OpenSSL can be found
654 at @code{http://www.openssl.org/}.  OpenSSL 0.9.5a and later should
655 work.  However, version 0.9.5a insert a spurious CR character into MIME
656 separators so you may wish to avoid it if you would like to avoid being
657 regarded as someone who send strange mail. (Although by sending S/MIME
658 messages you've probably already lost that contest.)
659
660 To be able to send encrypted mail, a personal certificate is not
661 required.  Message (MML) need a certificate for the person to whom you
662 wish to communicate with though.  You're asked for this when you type
663 @code{M-m c s}.  Currently there are two ways to retrieve this
664 certificate, from a local file or from DNS.  If you chose a local file,
665 it need to contain a X.509 certificate in PEM format.  If you chose DNS,
666 you're asked for the domain name where the certificate is stored, the
667 default is a good guess.  To my belief, Message (MML) is the first mail
668 agent in the world to support retrieving S/MIME certificates from DNS,
669 so you're not likely to find very many certificates out there.  At least
670 there should be one, stored at the domain @code{simon.josefsson.org}.
671 LDAP is a more popular method of distributing certificates, support for
672 it is planned.  (Meanwhile, you can use @code{ldapsearch} from the
673 command line to retrieve a certificate into a file and use it.)
674
675 As for signing messages, OpenSSL can't perform signing operations
676 without some kind of configuration.  Especially, you need to tell it
677 where your private key and your certificate is stored.  MML uses an
678 Emacs interface to OpenSSL, aptly named @code{smime.el}, and it contain
679 a @code{custom} group used for this configuration.  So, try @code{M-x
680 customize-group RET smime RET} and look around.
681
682 Currently there is no support for talking to a CA (or RA) to create your
683 own certificate.  None is planned either.  You need to do this manually
684 with OpenSSL or using some other program.  I used Netscape and got a
685 free S/MIME certificate from one of the big CA's on the net.  Netscape
686 is able to export your private key and certificate in PKCS #12 format.
687 Use OpenSSL to convert this into a plain X.509 certificate in PEM format
688 as follows.
689
690 @example
691 $ openssl pkcs12 -in ns.p12 -clcerts -nodes > key+cert.pem
692 @end example
693
694 The @code{key+cert.pem} file should be pointed to from the
695 @code{smime-keys} variable.  You should now be able to send signed mail.
696
697 @emph{Note!}  Your private key is store unencrypted in the file, so take
698 care in handling it.
699
700 @subsection Using PGP/MIME
701
702 PGP/MIME require an external OpenPGP implementation, such as GNU Privacy
703 Guard (@code{http://www.gnupg.org/}.  It also require a Emacs interface
704 to it, such as Mailcrypt (available from
705 @code{http://www.nb.net/~lbudney/linux/software/mailcrypt.html}) or
706 Florian Weimer's @code{gpg.el}.
707
708 Creating your own OpenPGP key is described in detail in the
709 documentation of your OpenPGP implementation, so we refer to it.
710
711 @node Various Commands
712 @section Various Commands
713
714 @table @kbd
715
716 @item C-c C-r
717 @kindex C-c C-r
718 @findex message-caesar-buffer-body
719 Caesar rotate (aka. rot13) the current message
720 (@code{message-caesar-buffer-body}).  If narrowing is in effect, just
721 rotate the visible portion of the buffer.  A numerical prefix says how
722 many places to rotate the text.  The default is 13.
723
724 @item C-c C-e
725 @kindex C-c C-e
726 @findex message-elide-region
727 Elide the text between point and mark (@code{message-elide-region}).
728 The text is killed and replaced with the contents of the variable
729 @code{message-elide-ellipsis}. The default value is to use an ellipsis
730 (@samp{[...]}).
731
732 @item C-c C-z
733 @kindex C-c C-x
734 @findex message-kill-to-signature
735 Kill all the text up to the signature, or if that's missing, up to the
736 end of the message (@code{message-kill-to-signature}).
737
738 @item C-c C-v
739 @kindex C-c C-v
740 @findex message-delete-not-region
741 Delete all text in the body of the message that is outside the region
742 (@code{message-delete-not-region}).
743
744 @item M-RET
745 @kindex M-RET
746 @kindex message-newline-and-reformat
747 Insert four newlines, and then reformat if inside quoted text.
748
749 Here's an example:
750
751 @example
752 > This is some quoted text.  And here's more quoted text.
753 @end example
754
755 If point is before @samp{And} and you press @kbd{M-RET}, you'll get:
756
757 @example
758 > This is some quoted text.
759
760 *
761
762 > And here's more quoted text.
763 @end example
764
765 @samp{*} says where point will be placed.
766
767 @item C-c C-t
768 @kindex C-c C-t
769 @findex message-insert-to
770 Insert a @code{To} header that contains the @code{Reply-To} or
771 @code{From} header of the message you're following up
772 (@code{message-insert-to}).
773
774 @item C-c C-n
775 @kindex C-c C-n
776 @findex message-insert-newsgroups
777 Insert a @code{Newsgroups} header that reflects the @code{Followup-To}
778 or @code{Newsgroups} header of the article you're replying to
779 (@code{message-insert-newsgroups}).
780
781 @item C-c M-r
782 @kindex C-c M-r
783 @findex message-rename-buffer
784 Rename the buffer (@code{message-rename-buffer}).  If given a prefix,
785 prompt for a new buffer name.
786
787 @end table
788
789
790 @node Sending
791 @section Sending
792
793 @table @kbd
794 @item C-c C-c
795 @kindex C-c C-c
796 @findex message-send-and-exit
797 Send the message and bury the current buffer
798 (@code{message-send-and-exit}).
799
800 @item C-c C-s
801 @kindex C-c C-s
802 @findex message-send
803 Send the message (@code{message-send}).
804
805 @item C-c C-d
806 @kindex C-c C-d
807 @findex message-dont-send
808 Bury the message buffer and exit (@code{message-dont-send}).
809
810 @item C-c C-k
811 @kindex C-c C-k
812 @findex message-kill-buffer
813 Kill the message buffer and exit (@code{message-kill-buffer}).
814
815 @end table
816
817
818
819 @node Mail Aliases
820 @section Mail Aliases
821 @cindex mail aliases
822 @cindex aliases
823
824 @vindex message-mail-alias-type
825 The @code{message-mail-alias-type} variable controls what type of mail
826 alias expansion to use.  Currently only one form is supported---Message
827 uses @code{mailabbrev} to handle mail aliases.  If this variable is
828 @code{nil}, no mail alias expansion will be performed.
829
830 @code{mailabbrev} works by parsing the @file{/etc/mailrc} and
831 @file{~/.mailrc} files.  These files look like:
832
833 @example
834 alias lmi "Lars Magne Ingebrigtsen <larsi@@ifi.uio.no>"
835 alias ding "ding@@ifi.uio.no (ding mailing list)"
836 @end example
837
838 After adding lines like this to your @file{~/.mailrc} file, you should
839 be able to just write @samp{lmi} in the @code{To} or @code{Cc} (and so
840 on) headers and press @kbd{SPC} to expand the alias.
841
842 No expansion will be performed upon sending of the message---all
843 expansions have to be done explicitly.
844
845
846
847 @node Variables
848 @chapter Variables
849
850 @menu
851 * Message Headers::             General message header stuff.
852 * Mail Headers::                Customizing mail headers.
853 * Mail Variables::              Other mail variables.
854 * News Headers::                Customizing news headers.
855 * News Variables::              Other news variables.
856 * Various Message Variables::   Other message variables.
857 * Sending Variables::           Variables for sending.
858 * Message Buffers::             How Message names its buffers.
859 * Message Actions::             Actions to be performed when exiting.
860 @end menu
861
862
863 @node Message Headers
864 @section Message Headers
865
866 Message is quite aggressive on the message generation front.  It has to
867 be -- it's a combined news and mail agent.  To be able to send combined
868 messages, it has to generate all headers itself (instead of letting the
869 mail/news system do it) to ensure that mail and news copies of messages
870 look sufficiently similar.
871
872 @table @code
873
874 @item message-generate-headers-first
875 @vindex message-generate-headers-first
876 If non-@code{nil}, generate all headers before starting to compose the
877 message.
878
879 @item message-from-style
880 @vindex message-from-style
881 Specifies how @code{From} headers should look.  There are four valid
882 values:
883
884 @table @code
885 @item nil
886 Just the address -- @samp{king@@grassland.com}.
887
888 @item parens
889 @samp{king@@grassland.com (Elvis Parsley)}.
890
891 @item angles
892 @samp{Elvis Parsley <king@@grassland.com>}.
893
894 @item default
895 Look like @code{angles} if that doesn't require quoting, and
896 @code{parens} if it does.  If even @code{parens} requires quoting, use
897 @code{angles} anyway.
898
899 @end table
900
901 @item message-deletable-headers
902 @vindex message-deletable-headers
903 Headers in this list that were previously generated by Message will be
904 deleted before posting.  Let's say you post an article.  Then you decide
905 to post it again to some other group, you naughty boy, so you jump back
906 to the @code{*post-buf*} buffer, edit the @code{Newsgroups} line, and
907 ship it off again.  By default, this variable makes sure that the old
908 generated @code{Message-ID} is deleted, and a new one generated.  If
909 this isn't done, the entire empire would probably crumble, anarchy would
910 prevail, and cats would start walking on two legs and rule the world.
911 Allegedly.
912
913 @item message-default-headers
914 @vindex message-default-headers
915 This string is inserted at the end of the headers in all message
916 buffers.
917
918 @item message-subject-re-regexp
919 @vindex message-subject-re-regexp
920 Responses to messages have subjects that start with @samp{Re: }.  This
921 is @emph{not} an abbreviation of the English word ``response'', but in
922 Latin, and means ``in response to''.  Some illiterate nincompoops have
923 failed to grasp this fact, and have ``internationalized'' their software
924 to use abonimations like @samp{Aw: } (``antwort'') or @samp{Sv: }
925 (``svar'') instead, which is meaningless and evil.  However, you may
926 have to deal with users that use these evil tools, in which case you may
927 set this variable to a regexp that matches these prefixes.  Myself, I
928 just throw away non-compliant mail.
929
930 @item message-alternative-emails
931 @vindex message-alternative-emails
932 A regexp to match the alternative email addresses.  The first matched
933 address (not primary one) is used in the @code{From} field.
934
935 @end table
936
937
938 @node Mail Headers
939 @section Mail Headers
940
941 @table @code
942 @item message-required-mail-headers
943 @vindex message-required-mail-headers
944 @xref{News Headers}, for the syntax of this variable.  It is
945 @code{(From Date Subject (optional . In-Reply-To) Message-ID Lines
946 (optional . X-Mailer))} by default.
947
948 @item message-ignored-mail-headers
949 @vindex message-ignored-mail-headers
950 Regexp of headers to be removed before mailing.  The default is
951 @samp{^[GF]cc:\\|^Resent-Fcc:}.
952
953 @item message-default-mail-headers
954 @vindex message-default-mail-headers
955 This string is inserted at the end of the headers in all message
956 buffers that are initialized as mail.
957
958 @end table
959
960
961 @node Mail Variables
962 @section Mail Variables
963
964 @table @code
965 @item message-send-mail-function
966 @vindex message-send-mail-function
967 Function used to send the current buffer as mail.  The default is
968 @code{message-send-mail-with-sendmail}.   If you prefer using MH
969 instead, set this variable to @code{message-send-mail-with-mh}.
970
971 @item message-mh-deletable-headers
972 @vindex message-mh-deletable-headers
973 Most versions of MH doesn't like being fed messages that contain the
974 headers in this variable.  If this variable is non-@code{nil} (which is
975 the default), these headers will be removed before mailing when sending
976 messages via MH.  Set it to @code{nil} if your MH can handle these
977 headers.
978
979 @end table
980
981
982 @node News Headers
983 @section News Headers
984
985 @vindex message-required-news-headers
986 @code{message-required-news-headers} a list of header symbols.  These
987 headers will either be automatically generated, or, if that's
988 impossible, they will be prompted for.  The following symbols are valid:
989
990 @table @code
991
992 @item From
993 @cindex From
994 @findex user-full-name
995 @findex user-mail-address
996 This required header will be filled out with the result of the
997 @code{message-make-from} function, which depends on the
998 @code{message-from-style}, @code{user-full-name},
999 @code{user-mail-address} variables.
1000
1001 @item Subject
1002 @cindex Subject
1003 This required header will be prompted for if not present already.
1004
1005 @item Newsgroups
1006 @cindex Newsgroups
1007 This required header says which newsgroups the article is to be posted
1008 to.  If it isn't present already, it will be prompted for.
1009
1010 @item Organization
1011 @cindex organization
1012 This optional header will be filled out depending on the
1013 @code{message-user-organization} variable.
1014 @code{message-user-organization-file} will be used if this variable is
1015 @code{t}.  This variable can also be a string (in which case this string
1016 will be used), or it can be a function (which will be called with no
1017 parameters and should return a string to be used).
1018
1019 @item Lines
1020 @cindex Lines
1021 This optional header will be computed by Message.
1022
1023 @item Message-ID
1024 @cindex Message-ID
1025 @vindex mail-host-address
1026 @findex system-name
1027 @cindex Sun
1028 This required header will be generated by Message.  A unique ID will be
1029 created based on the date, time, user name and system name.  Message
1030 will use @code{system-name} to determine the name of the system.  If
1031 this isn't a fully qualified domain name (FQDN), Message will use
1032 @code{mail-host-address} as the FQDN of the machine.
1033
1034 @item X-Newsreader
1035 @cindex X-Newsreader
1036 This optional header will be filled out according to the
1037 @code{message-newsreader} local variable.
1038
1039 @item X-Mailer
1040 This optional header will be filled out according to the
1041 @code{message-mailer} local variable, unless there already is an
1042 @code{X-Newsreader} header present.
1043
1044 @item In-Reply-To
1045 This optional header is filled out using the @code{Date} and @code{From}
1046 header of the article being replied to.
1047
1048 @item Expires
1049 @cindex Expires
1050 This extremely optional header will be inserted according to the
1051 @code{message-expires} variable.  It is highly deprecated and shouldn't
1052 be used unless you know what you're doing.
1053
1054 @item Distribution
1055 @cindex Distribution
1056 This optional header is filled out according to the
1057 @code{message-distribution-function} variable.  It is a deprecated and
1058 much misunderstood header.
1059
1060 @item Path
1061 @cindex path
1062 This extremely optional header should probably never be used.
1063 However, some @emph{very} old servers require that this header is
1064 present.  @code{message-user-path} further controls how this
1065 @code{Path} header is to look.  If it is @code{nil}, use the server name
1066 as the leaf node.  If it is a string, use the string.  If it is neither
1067 a string nor @code{nil}, use the user name only.  However, it is highly
1068 unlikely that you should need to fiddle with this variable at all.
1069 @end table
1070
1071 @findex yow
1072 @cindex Mime-Version
1073 In addition, you can enter conses into this list.  The car of this cons
1074 should be a symbol.  This symbol's name is the name of the header, and
1075 the cdr can either be a string to be entered verbatim as the value of
1076 this header, or it can be a function to be called.  This function should
1077 return a string to be inserted.  For instance, if you want to insert
1078 @code{Mime-Version: 1.0}, you should enter @code{(Mime-Version . "1.0")}
1079 into the list.  If you want to insert a funny quote, you could enter
1080 something like @code{(X-Yow . yow)} into the list.  The function
1081 @code{yow} will then be called without any arguments.
1082
1083 If the list contains a cons where the car of the cons is
1084 @code{optional}, the cdr of this cons will only be inserted if it is
1085 non-@code{nil}.
1086
1087 Other variables for customizing outgoing news articles:
1088
1089 @table @code
1090
1091 @item message-syntax-checks
1092 @vindex message-syntax-checks
1093 Controls what syntax checks should not be performed on outgoing posts.
1094 To disable checking of long signatures, for instance, add
1095
1096 @lisp
1097 (signature . disabled)
1098 @end lisp
1099
1100 to this list.
1101
1102 Valid checks are:
1103
1104 @table @code
1105 @item subject-cmsg
1106 Check the subject for commands.
1107 @item sender
1108 @cindex Sender
1109 Insert a new @code{Sender} header if the @code{From} header looks odd.
1110 @item multiple-headers
1111 Check for the existence of multiple equal headers.
1112 @item sendsys
1113 @cindex sendsys
1114 Check for the existence of version and sendsys commands.
1115 @item message-id
1116 Check whether the @code{Message-ID} looks ok.
1117 @item from
1118 Check whether the @code{From} header seems nice.
1119 @item long-lines
1120 @cindex long lines
1121 Check for too long lines.
1122 @item control-chars
1123 Check for invalid characters.
1124 @item size
1125 Check for excessive size.
1126 @item new-text
1127 Check whether there is any new text in the messages.
1128 @item signature
1129 Check the length of the signature.
1130 @item approved
1131 @cindex approved
1132 Check whether the article has an @code{Approved} header, which is
1133 something only moderators should include.
1134 @item empty
1135 Check whether the article is empty.
1136 @item invisible-text
1137 Check whether there is any invisible text in the buffer.
1138 @item empty-headers
1139 Check whether any of the headers are empty.
1140 @item existing-newsgroups
1141 Check whether the newsgroups mentioned in the @code{Newsgroups} and
1142 @code{Followup-To} headers exist.
1143 @item valid-newsgroups
1144 Check whether the @code{Newsgroups} and @code{Followup-to} headers
1145 are valid syntactically.
1146 @item repeated-newsgroups
1147 Check whether the @code{Newsgroups} and @code{Followup-to} headers
1148 contains repeated group names.
1149 @item shorten-followup-to
1150 Check whether to add a @code{Followup-to} header to shorten the number
1151 of groups to post to.
1152 @end table
1153
1154 All these conditions are checked by default.
1155
1156 @item message-ignored-news-headers
1157 @vindex message-ignored-news-headers
1158 Regexp of headers to be removed before posting.  The default is@*
1159 @samp{^NNTP-Posting-Host:\\|^Xref:\\|^[BGF]cc:\\|^Resent-Fcc:}.
1160
1161 @item message-default-news-headers
1162 @vindex message-default-news-headers
1163 This string is inserted at the end of the headers in all message
1164 buffers that are initialized as news.
1165
1166 @end table
1167
1168
1169 @node News Variables
1170 @section News Variables
1171
1172 @table @code
1173 @item message-send-news-function
1174 @vindex message-send-news-function
1175 Function used to send the current buffer as news.  The default is
1176 @code{message-send-news}.
1177
1178 @item message-post-method
1179 @vindex message-post-method
1180 Gnusish @dfn{select method} (see the Gnus manual for details) used for
1181 posting a prepared news message.
1182
1183 @end table
1184
1185
1186 @node Various Message Variables
1187 @section Various Message Variables
1188
1189 @table @code
1190 @item message-default-charset
1191 @vindex message-default-charset
1192 @cindex charset
1193 Symbol naming a @sc{mime} charset.  Non-ASCII characters in messages are
1194 assumed to be encoded using this charset.  The default is @code{nil},
1195 which means ask the user.  (This variable is used only on non-@sc{mule}
1196 Emacsen.  
1197 @xref{Charset Translation, , Charset Translation, emacs-mime, 
1198       Emacs MIME Manual}, for details on the @sc{mule}-to-@sc{mime}
1199 translation process.
1200
1201 @item message-signature-separator
1202 @vindex message-signature-separator
1203 Regexp matching the signature separator.  It is @samp{^-- *$} by
1204 default.
1205
1206 @item mail-header-separator
1207 @vindex mail-header-separator
1208 String used to separate the headers from the body.  It is @samp{--text
1209 follows this line--} by default.
1210
1211 @item message-directory
1212 @vindex message-directory
1213 Directory used by many mailey things.  The default is @file{~/Mail/}.
1214
1215 @item message-signature-setup-hook
1216 @vindex message-signature-setup-hook
1217 Hook run when initializing the message buffer.  It is run after the
1218 headers have been inserted but before the signature has been inserted.
1219
1220 @item message-setup-hook
1221 @vindex message-setup-hook
1222 Hook run as the last thing when the message buffer has been initialized,
1223 but before yanked text is inserted.
1224
1225 @item message-header-setup-hook
1226 @vindex message-header-setup-hook
1227 Hook called narrowed to the headers after initializing the headers.
1228
1229 For instance, if you're running Gnus and wish to insert a
1230 @samp{Mail-Copies-To} header in all your news articles and all messages
1231 you send to mailing lists, you could do something like the following:
1232
1233 @lisp
1234 (defun my-message-header-setup-hook ()
1235   (let ((group (or gnus-newsgroup-name "")))
1236     (when (or (message-fetch-field "newsgroups")
1237               (gnus-group-find-parameter group 'to-address)
1238               (gnus-group-find-parameter group 'to-list))
1239       (insert "Mail-Copies-To: never\n"))))
1240
1241 (add-hook 'message-header-setup-hook
1242           'my-message-header-setup-hook)
1243 @end lisp
1244
1245 @item message-send-hook
1246 @vindex message-send-hook
1247 Hook run before sending messages.
1248
1249 If you want to add certain headers before sending, you can use the
1250 @code{message-add-header} function in this hook.  For instance:
1251 @findex message-add-header
1252
1253 @lisp
1254 (add-hook 'message-send-hook 'my-message-add-content)
1255 (defun my-message-add-content ()
1256   (message-add-header
1257    "X-In-No-Sense: Nonsense"
1258    "X-Whatever: no"))
1259 @end lisp
1260
1261 This function won't add the header if the header is already present.
1262
1263 @item message-send-mail-hook
1264 @vindex message-send-mail-hook
1265 Hook run before sending mail messages.
1266
1267 @item message-send-news-hook
1268 @vindex message-send-news-hook
1269 Hook run before sending news messages.
1270
1271 @item message-sent-hook
1272 @vindex message-sent-hook
1273 Hook run after sending messages.
1274
1275 @item message-mode-syntax-table
1276 @vindex message-mode-syntax-table
1277 Syntax table used in message mode buffers.
1278
1279 @item message-send-method-alist
1280 @vindex message-send-method-alist
1281
1282 Alist of ways to send outgoing messages.  Each element has the form
1283
1284 @lisp
1285 (TYPE PREDICATE FUNCTION)
1286 @end lisp
1287
1288 @table @var
1289 @item type
1290 A symbol that names the method.
1291
1292 @item predicate
1293 A function called without any parameters to determine whether the
1294 message is a message of type @var{type}.
1295
1296 @item function
1297 A function to be called if @var{predicate} returns non-@code{nil}.
1298 @var{function} is called with one parameter -- the prefix.
1299 @end table
1300
1301 @lisp
1302 ((news message-news-p message-send-via-news)
1303  (mail message-mail-p message-send-via-mail))
1304 @end lisp
1305
1306
1307
1308 @end table
1309
1310
1311
1312 @node Sending Variables
1313 @section Sending Variables
1314
1315 @table @code
1316
1317 @item message-fcc-handler-function
1318 @vindex message-fcc-handler-function
1319 A function called to save outgoing articles.  This function will be
1320 called with the name of the file to store the article in.  The default
1321 function is @code{message-output} which saves in Unix mailbox format.
1322
1323 @item message-courtesy-message
1324 @vindex message-courtesy-message
1325 When sending combined messages, this string is inserted at the start of
1326 the mailed copy.  If the string contains the format spec @samp{%s}, the
1327 newsgroups the article has been posted to will be inserted there.  If
1328 this variable is @code{nil}, no such courtesy message will be added.
1329 The default value is @samp{"The following message is a courtesy copy of
1330 an article\nthat has been posted to %s as well.\n\n"}.
1331
1332 @end table
1333
1334
1335 @node Message Buffers
1336 @section Message Buffers
1337
1338 Message will generate new buffers with unique buffer names when you
1339 request a message buffer.  When you send the message, the buffer isn't
1340 normally killed off.  Its name is changed and a certain number of old
1341 message buffers are kept alive.
1342
1343 @table @code
1344 @item message-generate-new-buffers
1345 @vindex message-generate-new-buffers
1346 If non-@code{nil}, generate new buffers.  The default is @code{t}.  If
1347 this is a function, call that function with three parameters: The type,
1348 the to address and the group name.  (Any of these may be @code{nil}.)
1349 The function should return the new buffer name.
1350
1351 @item message-max-buffers
1352 @vindex message-max-buffers
1353 This variable says how many old message buffers to keep.  If there are
1354 more message buffers than this, the oldest buffer will be killed.  The
1355 default is 10.  If this variable is @code{nil}, no old message buffers
1356 will ever be killed.
1357
1358 @item message-send-rename-function
1359 @vindex message-send-rename-function
1360 After sending a message, the buffer is renamed from, for instance,
1361 @samp{*reply to Lars*} to @samp{*sent reply to Lars*}.  If you don't
1362 like this, set this variable to a function that renames the buffer in a
1363 manner you like.  If you don't want to rename the buffer at all, you can
1364 say:
1365
1366 @lisp
1367 (setq message-send-rename-function 'ignore)
1368 @end lisp
1369
1370 @item message-kill-buffer-on-exit
1371 @findex message-kill-buffer-on-exit
1372 If non-@code{nil}, kill the buffer immediately on exit.
1373
1374 @end table
1375
1376
1377 @node Message Actions
1378 @section Message Actions
1379
1380 When Message is being used from a news/mail reader, the reader is likely
1381 to want to perform some task after the message has been sent.  Perhaps
1382 return to the previous window configuration or mark an article as
1383 replied.
1384
1385 @vindex message-kill-actions
1386 @vindex message-postpone-actions
1387 @vindex message-exit-actions
1388 @vindex message-send-actions
1389 The user may exit from the message buffer in various ways.  The most
1390 common is @kbd{C-c C-c}, which sends the message and exits.  Other
1391 possibilities are @kbd{C-c C-s} which just sends the message, @kbd{C-c
1392 C-d} which postpones the message editing and buries the message buffer,
1393 and @kbd{C-c C-k} which kills the message buffer.  Each of these actions
1394 have lists associated with them that contains actions to be executed:
1395 @code{message-send-actions}, @code{message-exit-actions},
1396 @code{message-postpone-actions}, and @code{message-kill-actions}.
1397
1398 Message provides a function to interface with these lists:
1399 @code{message-add-action}.  The first parameter is the action to be
1400 added, and the rest of the arguments are which lists to add this action
1401 to.  Here's an example from Gnus:
1402
1403 @lisp
1404   (message-add-action
1405    `(set-window-configuration ,(current-window-configuration))
1406    'exit 'postpone 'kill)
1407 @end lisp
1408
1409 This restores the Gnus window configuration when the message buffer is
1410 killed, postponed or exited.
1411
1412 An @dfn{action} can be either: a normal function, or a list where the
1413 @code{car} is a function and the @code{cdr} is the list of arguments, or
1414 a form to be @code{eval}ed.
1415
1416
1417 @node Compatibility
1418 @chapter Compatibility
1419 @cindex compatibility
1420
1421 Message uses virtually only its own variables---older @code{mail-}
1422 variables aren't consulted.  To force Message to take those variables
1423 into account, you can put the following in your @code{.emacs} file:
1424
1425 @lisp
1426 (require 'messcompat)
1427 @end lisp
1428
1429 This will initialize many Message variables from the values in the
1430 corresponding mail variables.
1431
1432
1433 @node Appendices
1434 @chapter Appendices
1435
1436 @menu
1437 * Responses::          Standard rules for determining where responses go.
1438 @end menu
1439
1440
1441 @node Responses
1442 @section Responses
1443
1444 To determine where a message is to go, the following algorithm is used
1445 by default.
1446
1447 @table @dfn
1448 @item reply
1449 A @dfn{reply} is when you want to respond @emph{just} to the person who
1450 sent the message via mail.  There will only be one recipient.  To
1451 determine who the recipient will be, the following headers are
1452 consulted, in turn:
1453
1454 @table @code
1455 @item Reply-To
1456
1457 @item From
1458 @end table
1459
1460
1461 @item wide reply
1462 A @dfn{wide reply} is a mail response that includes @emph{all} entities
1463 mentioned in the message you are responded to.  All mailboxes from the
1464 following headers will be concatenated to form the outgoing
1465 @code{To}/@code{Cc} headers:
1466
1467 @table @code
1468 @item From
1469 (unless there's a @code{Reply-To}, in which case that is used instead).
1470
1471 @item Cc
1472
1473 @item To
1474 @end table
1475
1476 If a @code{Mail-Copies-To} header is present, it will also be included
1477 in the list of mailboxes.  If this header is @samp{never}, that means
1478 that the @code{From} (or @code{Reply-To}) mailbox will be suppressed.
1479
1480
1481 @item followup
1482 A @dfn{followup} is a response sent via news.  The following headers
1483 (listed in order of precedence) determine where the response is to be
1484 sent:
1485
1486 @table @code
1487
1488 @item Followup-To
1489
1490 @item Newsgroups
1491
1492 @end table
1493
1494 If a @code{Mail-Copies-To} header is present, it will be used as the
1495 basis of the new @code{Cc} header, except if this header is
1496 @samp{never}.
1497
1498 @end table
1499
1500
1501
1502 @node Index
1503 @chapter Index
1504 @printindex cp
1505
1506 @node Key Index
1507 @chapter Key Index
1508 @printindex ky
1509
1510 @summarycontents
1511 @contents
1512 @bye
1513
1514 @c End: