| 1 | @c This is part of the Emacs manual. |
| 2 | @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002, |
| 3 | @c 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. |
| 4 | @c See file emacs.texi for copying conditions. |
| 5 | @node Rmail, Dired, Sending Mail, Top |
| 6 | @chapter Reading Mail with Rmail |
| 7 | @cindex Rmail |
| 8 | @cindex reading mail |
| 9 | @findex rmail |
| 10 | @findex rmail-mode |
| 11 | @vindex rmail-mode-hook |
| 12 | |
| 13 | Rmail is an Emacs subsystem for reading and disposing of mail that |
| 14 | you receive. Rmail stores mail messages in files called Rmail files |
| 15 | which use a special format. Reading the message in an Rmail file is |
| 16 | done in a special major mode, Rmail mode, which redefines most letters |
| 17 | to run commands for managing mail. |
| 18 | @menu |
| 19 | * Basic: Rmail Basics. Basic concepts of Rmail, and simple use. |
| 20 | * Scroll: Rmail Scrolling. Scrolling through a message. |
| 21 | * Motion: Rmail Motion. Moving to another message. |
| 22 | * Deletion: Rmail Deletion. Deleting and expunging messages. |
| 23 | * Inbox: Rmail Inbox. How mail gets into the Rmail file. |
| 24 | * Files: Rmail Files. Using multiple Rmail files. |
| 25 | * Output: Rmail Output. Copying message out to files. |
| 26 | * Labels: Rmail Labels. Classifying messages by labeling them. |
| 27 | * Attrs: Rmail Attributes. Certain standard labels, called attributes. |
| 28 | * Reply: Rmail Reply. Sending replies to messages you are viewing. |
| 29 | * Summary: Rmail Summary. Summaries show brief info on many messages. |
| 30 | * Sort: Rmail Sorting. Sorting messages in Rmail. |
| 31 | * Display: Rmail Display. How Rmail displays a message; customization. |
| 32 | * Coding: Rmail Coding. How Rmail handles decoding character sets. |
| 33 | * Editing: Rmail Editing. Editing message text and headers in Rmail. |
| 34 | * Digest: Rmail Digest. Extracting the messages from a digest message. |
| 35 | * Out of Rmail:: Converting an Rmail file to mailbox format. |
| 36 | * Rot13: Rmail Rot13. Reading messages encoded in the rot13 code. |
| 37 | * Movemail:: More details of fetching new mail. |
| 38 | * Remote Mailboxes:: Retrieving Mail from Remote Mailboxes. |
| 39 | * Other Mailbox Formats:: Retrieving Mail from Local Mailboxes in |
| 40 | Various Formats |
| 41 | @end menu |
| 42 | |
| 43 | @node Rmail Basics |
| 44 | @section Basic Concepts of Rmail |
| 45 | |
| 46 | @cindex primary Rmail file |
| 47 | @vindex rmail-file-name |
| 48 | Using Rmail in the simplest fashion, you have one Rmail file |
| 49 | @file{~/RMAIL} in which all of your mail is saved. It is called your |
| 50 | @dfn{primary Rmail file}. The command @kbd{M-x rmail} reads your primary |
| 51 | Rmail file, merges new mail in from your inboxes, displays the first |
| 52 | message you haven't read yet, and lets you begin reading. The variable |
| 53 | @code{rmail-file-name} specifies the name of the primary Rmail file. |
| 54 | |
| 55 | Rmail uses narrowing to hide all but one message in the Rmail file. |
| 56 | The message that is shown is called the @dfn{current message}. Rmail |
| 57 | mode's special commands can do such things as delete the current |
| 58 | message, copy it into another file, send a reply, or move to another |
| 59 | message. You can also create multiple Rmail files and use Rmail to move |
| 60 | messages between them. |
| 61 | |
| 62 | @cindex message number |
| 63 | Within the Rmail file, messages are normally arranged sequentially in |
| 64 | order of receipt; you can specify other ways to sort them. Messages are |
| 65 | identified by consecutive integers which are their @dfn{message numbers}. |
| 66 | The number of the current message is displayed in Rmail's mode line, |
| 67 | followed by the total number of messages in the file. You can move to |
| 68 | a message by specifying its message number with the @kbd{j} key |
| 69 | (@pxref{Rmail Motion}). |
| 70 | |
| 71 | @kindex s @r{(Rmail)} |
| 72 | @findex rmail-expunge-and-save |
| 73 | Following the usual conventions of Emacs, changes in an Rmail file |
| 74 | become permanent only when you save the file. You can save it with |
| 75 | @kbd{s} (@code{rmail-expunge-and-save}), which also expunges deleted |
| 76 | messages from the file first (@pxref{Rmail Deletion}). To save the |
| 77 | file without expunging, use @kbd{C-x C-s}. Rmail also saves the Rmail |
| 78 | file after merging new mail from an inbox file (@pxref{Rmail Inbox}). |
| 79 | |
| 80 | @kindex q @r{(Rmail)} |
| 81 | @findex rmail-quit |
| 82 | @kindex b @r{(Rmail)} |
| 83 | @findex rmail-bury |
| 84 | You can exit Rmail with @kbd{q} (@code{rmail-quit}); this expunges |
| 85 | and saves the Rmail file, then buries the Rmail buffer as well as its |
| 86 | summary buffer, if present (@pxref{Rmail Summary}). But there is no |
| 87 | need to ``exit'' formally. If you switch from Rmail to editing in |
| 88 | other buffers, and never switch back, you have exited. Just make sure |
| 89 | to save the Rmail file eventually (like any other file you have |
| 90 | changed). @kbd{C-x s} is a suitable way to do this (@pxref{Save |
| 91 | Commands}). The Rmail command @kbd{b}, @code{rmail-bury}, buries the |
| 92 | Rmail buffer and its summary buffer without expunging and saving the |
| 93 | Rmail file. |
| 94 | |
| 95 | @node Rmail Scrolling |
| 96 | @section Scrolling Within a Message |
| 97 | |
| 98 | When Rmail displays a message that does not fit on the screen, you |
| 99 | must scroll through it to read the rest. You could do this with |
| 100 | @kbd{C-v}, @kbd{M-v} and @kbd{M-<}, but in Rmail scrolling is so |
| 101 | frequent that it deserves to be easier. |
| 102 | |
| 103 | @table @kbd |
| 104 | @item @key{SPC} |
| 105 | Scroll forward (@code{scroll-up}). |
| 106 | @item @key{DEL} |
| 107 | Scroll backward (@code{scroll-down}). |
| 108 | @item . |
| 109 | Scroll to start of message (@code{rmail-beginning-of-message}). |
| 110 | @item / |
| 111 | Scroll to end of message (@code{rmail-end-of-message}). |
| 112 | @end table |
| 113 | |
| 114 | @kindex SPC @r{(Rmail)} |
| 115 | @kindex DEL @r{(Rmail)} |
| 116 | Since the most common thing to do while reading a message is to scroll |
| 117 | through it by screenfuls, Rmail makes @key{SPC} and @key{DEL} synonyms of |
| 118 | @kbd{C-v} (@code{scroll-up}) and @kbd{M-v} (@code{scroll-down}) |
| 119 | |
| 120 | @kindex . @r{(Rmail)} |
| 121 | @kindex / @r{(Rmail)} |
| 122 | @findex rmail-beginning-of-message |
| 123 | @findex rmail-end-of-message |
| 124 | The command @kbd{.} (@code{rmail-beginning-of-message}) scrolls back to the |
| 125 | beginning of the selected message. This is not quite the same as @kbd{M-<}: |
| 126 | for one thing, it does not set the mark; for another, it resets the buffer |
| 127 | boundaries to the current message if you have changed them. Similarly, |
| 128 | the command @kbd{/} (@code{rmail-end-of-message}) scrolls forward to the end |
| 129 | of the selected message. |
| 130 | |
| 131 | @node Rmail Motion |
| 132 | @section Moving Among Messages |
| 133 | |
| 134 | The most basic thing to do with a message is to read it. The way to |
| 135 | do this in Rmail is to make the message current. The usual practice is |
| 136 | to move sequentially through the file, since this is the order of |
| 137 | receipt of messages. When you enter Rmail, you are positioned at the |
| 138 | first message that you have not yet made current (that is, the first one |
| 139 | that has the @samp{unseen} attribute; @pxref{Rmail Attributes}). Move |
| 140 | forward to see the other new messages; move backward to re-examine old |
| 141 | messages. |
| 142 | |
| 143 | @table @kbd |
| 144 | @item n |
| 145 | Move to the next nondeleted message, skipping any intervening deleted |
| 146 | messages (@code{rmail-next-undeleted-message}). |
| 147 | @item p |
| 148 | Move to the previous nondeleted message |
| 149 | (@code{rmail-previous-undeleted-message}). |
| 150 | @item M-n |
| 151 | Move to the next message, including deleted messages |
| 152 | (@code{rmail-next-message}). |
| 153 | @item M-p |
| 154 | Move to the previous message, including deleted messages |
| 155 | (@code{rmail-previous-message}). |
| 156 | @item j |
| 157 | Move to the first message. With argument @var{n}, move to |
| 158 | message number @var{n} (@code{rmail-show-message}). |
| 159 | @item > |
| 160 | Move to the last message (@code{rmail-last-message}). |
| 161 | @item < |
| 162 | Move to the first message (@code{rmail-first-message}). |
| 163 | |
| 164 | @item M-s @var{regexp} @key{RET} |
| 165 | Move to the next message containing a match for @var{regexp} |
| 166 | (@code{rmail-search}). |
| 167 | |
| 168 | @item - M-s @var{regexp} @key{RET} |
| 169 | Move to the previous message containing a match for @var{regexp}. |
| 170 | @end table |
| 171 | |
| 172 | @kindex n @r{(Rmail)} |
| 173 | @kindex p @r{(Rmail)} |
| 174 | @kindex M-n @r{(Rmail)} |
| 175 | @kindex M-p @r{(Rmail)} |
| 176 | @findex rmail-next-undeleted-message |
| 177 | @findex rmail-previous-undeleted-message |
| 178 | @findex rmail-next-message |
| 179 | @findex rmail-previous-message |
| 180 | @kbd{n} and @kbd{p} are the usual way of moving among messages in |
| 181 | Rmail. They move through the messages sequentially, but skip over |
| 182 | deleted messages, which is usually what you want to do. Their command |
| 183 | definitions are named @code{rmail-next-undeleted-message} and |
| 184 | @code{rmail-previous-undeleted-message}. If you do not want to skip |
| 185 | deleted messages---for example, if you want to move to a message to |
| 186 | undelete it---use the variants @kbd{M-n} and @kbd{M-p} |
| 187 | (@code{rmail-next-message} and @code{rmail-previous-message}). A |
| 188 | numeric argument to any of these commands serves as a repeat |
| 189 | count. |
| 190 | |
| 191 | In Rmail, you can specify a numeric argument by typing just the |
| 192 | digits. You don't need to type @kbd{C-u} first. |
| 193 | |
| 194 | @kindex M-s @r{(Rmail)} |
| 195 | @findex rmail-search |
| 196 | @cindex searching in Rmail |
| 197 | The @kbd{M-s} (@code{rmail-search}) command is Rmail's version of |
| 198 | search. The usual incremental search command @kbd{C-s} works in Rmail, |
| 199 | but it searches only within the current message. The purpose of |
| 200 | @kbd{M-s} is to search for another message. It reads a regular |
| 201 | expression (@pxref{Regexps}) nonincrementally, then searches starting at |
| 202 | the beginning of the following message for a match. It then selects |
| 203 | that message. If @var{regexp} is empty, @kbd{M-s} reuses the regexp |
| 204 | used the previous time. |
| 205 | |
| 206 | To search backward in the file for another message, give @kbd{M-s} a |
| 207 | negative argument. In Rmail you can do this with @kbd{- M-s}. |
| 208 | |
| 209 | It is also possible to search for a message based on labels. |
| 210 | @xref{Rmail Labels}. |
| 211 | |
| 212 | @kindex j @r{(Rmail)} |
| 213 | @kindex > @r{(Rmail)} |
| 214 | @kindex < @r{(Rmail)} |
| 215 | @findex rmail-show-message |
| 216 | @findex rmail-last-message |
| 217 | @findex rmail-first-message |
| 218 | To move to a message specified by absolute message number, use @kbd{j} |
| 219 | (@code{rmail-show-message}) with the message number as argument. With |
| 220 | no argument, @kbd{j} selects the first message. @kbd{<} |
| 221 | (@code{rmail-first-message}) also selects the first message. @kbd{>} |
| 222 | (@code{rmail-last-message}) selects the last message. |
| 223 | |
| 224 | @node Rmail Deletion |
| 225 | @section Deleting Messages |
| 226 | |
| 227 | @cindex deletion (Rmail) |
| 228 | When you no longer need to keep a message, you can @dfn{delete} it. This |
| 229 | flags it as ignorable, and some Rmail commands pretend it is no longer |
| 230 | present; but it still has its place in the Rmail file, and still has its |
| 231 | message number. |
| 232 | |
| 233 | @cindex expunging (Rmail) |
| 234 | @dfn{Expunging} the Rmail file actually removes the deleted messages. |
| 235 | The remaining messages are renumbered consecutively. Expunging is the only |
| 236 | action that changes the message number of any message, except for |
| 237 | undigestifying (@pxref{Rmail Digest}). |
| 238 | |
| 239 | @table @kbd |
| 240 | @item d |
| 241 | Delete the current message, and move to the next nondeleted message |
| 242 | (@code{rmail-delete-forward}). |
| 243 | @item C-d |
| 244 | Delete the current message, and move to the previous nondeleted |
| 245 | message (@code{rmail-delete-backward}). |
| 246 | @item u |
| 247 | Undelete the current message, or move back to a deleted message and |
| 248 | undelete it (@code{rmail-undelete-previous-message}). |
| 249 | @item x |
| 250 | Expunge the Rmail file (@code{rmail-expunge}). |
| 251 | @end table |
| 252 | |
| 253 | @kindex d @r{(Rmail)} |
| 254 | @kindex C-d @r{(Rmail)} |
| 255 | @findex rmail-delete-forward |
| 256 | @findex rmail-delete-backward |
| 257 | There are two Rmail commands for deleting messages. Both delete the |
| 258 | current message and select another message. @kbd{d} |
| 259 | (@code{rmail-delete-forward}) moves to the following message, skipping |
| 260 | messages already deleted, while @kbd{C-d} (@code{rmail-delete-backward}) |
| 261 | moves to the previous nondeleted message. If there is no nondeleted |
| 262 | message to move to in the specified direction, the message that was just |
| 263 | deleted remains current. @kbd{d} with a numeric argument is |
| 264 | equivalent to @kbd{C-d}. |
| 265 | |
| 266 | @vindex rmail-delete-message-hook |
| 267 | Whenever Rmail deletes a message, it runs the hook |
| 268 | @code{rmail-delete-message-hook}. When the hook functions are invoked, |
| 269 | the message has been marked deleted, but it is still the current message |
| 270 | in the Rmail buffer. |
| 271 | |
| 272 | @cindex undeletion (Rmail) |
| 273 | @kindex x @r{(Rmail)} |
| 274 | @findex rmail-expunge |
| 275 | @kindex u @r{(Rmail)} |
| 276 | @findex rmail-undelete-previous-message |
| 277 | To make all the deleted messages finally vanish from the Rmail file, |
| 278 | type @kbd{x} (@code{rmail-expunge}). Until you do this, you can still |
| 279 | @dfn{undelete} the deleted messages. The undeletion command, @kbd{u} |
| 280 | (@code{rmail-undelete-previous-message}), is designed to cancel the |
| 281 | effect of a @kbd{d} command in most cases. It undeletes the current |
| 282 | message if the current message is deleted. Otherwise it moves backward |
| 283 | to previous messages until a deleted message is found, and undeletes |
| 284 | that message. |
| 285 | |
| 286 | You can usually undo a @kbd{d} with a @kbd{u} because the @kbd{u} |
| 287 | moves back to and undeletes the message that the @kbd{d} deleted. But |
| 288 | this does not work when the @kbd{d} skips a few already-deleted messages |
| 289 | that follow the message being deleted; then the @kbd{u} command |
| 290 | undeletes the last of the messages that were skipped. There is no clean |
| 291 | way to avoid this problem. However, by repeating the @kbd{u} command, |
| 292 | you can eventually get back to the message that you intend to |
| 293 | undelete. You can also select a particular deleted message with |
| 294 | the @kbd{M-p} command, then type @kbd{u} to undelete it. |
| 295 | |
| 296 | A deleted message has the @samp{deleted} attribute, and as a result |
| 297 | @samp{deleted} appears in the mode line when the current message is |
| 298 | deleted. In fact, deleting or undeleting a message is nothing more than |
| 299 | adding or removing this attribute. @xref{Rmail Attributes}. |
| 300 | |
| 301 | @node Rmail Inbox |
| 302 | @section Rmail Files and Inboxes |
| 303 | @cindex inbox file |
| 304 | |
| 305 | When you receive mail locally, the operating system places incoming |
| 306 | mail for you in a file that we call your @dfn{inbox}. When you start |
| 307 | up Rmail, it runs a C program called @code{movemail} to copy the new |
| 308 | messages from your local inbox into your primary Rmail file, which |
| 309 | also contains other messages saved from previous Rmail sessions. It |
| 310 | is in this file that you actually read the mail with Rmail. This |
| 311 | operation is called @dfn{getting new mail}. You can get new mail at |
| 312 | any time in Rmail by typing @kbd{g}. |
| 313 | |
| 314 | @vindex rmail-primary-inbox-list |
| 315 | @cindex @env{MAIL} environment variable |
| 316 | The variable @code{rmail-primary-inbox-list} contains a list of the |
| 317 | files which are inboxes for your primary Rmail file. If you don't set |
| 318 | this variable explicitly, it is initialized from the @env{MAIL} |
| 319 | environment variable, or, as a last resort, set to @code{nil}, which |
| 320 | means to use the default inbox. The default inbox file depends on |
| 321 | your operating system; often it is @file{/var/mail/@var{username}}, |
| 322 | @file{/usr/spool/mail/@var{username}}, or |
| 323 | @file{/usr/mail/@var{username}}. |
| 324 | |
| 325 | You can specify the inbox file(s) for any Rmail file with the |
| 326 | command @code{set-rmail-inbox-list}; see @ref{Rmail Files}. |
| 327 | |
| 328 | There are two reasons for having separate Rmail files and inboxes. |
| 329 | |
| 330 | @enumerate |
| 331 | @item |
| 332 | The inbox file format varies between operating systems and according to |
| 333 | the other mail software in use. Only one part of Rmail needs to know |
| 334 | about the alternatives, and it need only understand how to convert all |
| 335 | of them to Rmail's own format. |
| 336 | |
| 337 | @item |
| 338 | It is very cumbersome to access an inbox file without danger of losing |
| 339 | mail, because it is necessary to interlock with mail delivery. |
| 340 | Moreover, different operating systems use different interlocking |
| 341 | techniques. The strategy of moving mail out of the inbox once and for |
| 342 | all into a separate Rmail file avoids the need for interlocking in all |
| 343 | the rest of Rmail, since only Rmail operates on the Rmail file. |
| 344 | @end enumerate |
| 345 | |
| 346 | Rmail was written to use Babyl format as its internal format. Since |
| 347 | then, we have recognized that the usual inbox format on Unix and GNU |
| 348 | systems is adequate for the job, and we plan to change Rmail to use that |
| 349 | as its internal format. However, the Rmail file will still be separate |
| 350 | from the inbox file, even when their format is the same. |
| 351 | |
| 352 | @vindex rmail-preserve-inbox |
| 353 | When getting new mail, Rmail first copies the new mail from the |
| 354 | inbox file to the Rmail file; then it saves the Rmail file; then it |
| 355 | clears out the inbox file. This way, a system crash may cause |
| 356 | duplication of mail between the inbox and the Rmail file, but cannot |
| 357 | lose mail. If @code{rmail-preserve-inbox} is non-@code{nil}, then |
| 358 | Rmail does not clear out the inbox file when it gets new mail. You |
| 359 | may wish to set this, for example, on a portable computer you use to |
| 360 | check your mail via POP while traveling, so that your mail will remain |
| 361 | on the server and you can save it later on your workstation. |
| 362 | |
| 363 | In some cases, Rmail copies the new mail from the inbox file |
| 364 | indirectly. First it runs the @code{movemail} program to move the mail |
| 365 | from the inbox to an intermediate file called |
| 366 | @file{~/.newmail-@var{inboxname}}. Then Rmail merges the new mail from |
| 367 | that file, saves the Rmail file, and only then deletes the intermediate |
| 368 | file. If there is a crash at the wrong time, this file continues to |
| 369 | exist, and Rmail will use it again the next time it gets new mail from |
| 370 | that inbox. |
| 371 | |
| 372 | If Rmail is unable to convert the data in |
| 373 | @file{~/.newmail-@var{inboxname}} into Babyl format, it renames the file |
| 374 | to @file{~/RMAILOSE.@var{n}} (@var{n} is an integer chosen to make the |
| 375 | name unique) so that Rmail will not have trouble with the data again. |
| 376 | You should look at the file, find whatever message confuses Rmail |
| 377 | (probably one that includes the control-underscore character, octal code |
| 378 | 037), and delete it. Then you can use @kbd{1 g} to get new mail from |
| 379 | the corrected file. |
| 380 | |
| 381 | @node Rmail Files |
| 382 | @section Multiple Rmail Files |
| 383 | |
| 384 | Rmail operates by default on your @dfn{primary Rmail file}, which is named |
| 385 | @file{~/RMAIL} and receives your incoming mail from your system inbox file. |
| 386 | But you can also have other Rmail files and edit them with Rmail. These |
| 387 | files can receive mail through their own inboxes, or you can move messages |
| 388 | into them with explicit Rmail commands (@pxref{Rmail Output}). |
| 389 | |
| 390 | @table @kbd |
| 391 | @item i @var{file} @key{RET} |
| 392 | Read @var{file} into Emacs and run Rmail on it (@code{rmail-input}). |
| 393 | |
| 394 | @item M-x set-rmail-inbox-list @key{RET} @var{files} @key{RET} |
| 395 | Specify inbox file names for current Rmail file to get mail from. |
| 396 | |
| 397 | @item g |
| 398 | Merge new mail from current Rmail file's inboxes |
| 399 | (@code{rmail-get-new-mail}). |
| 400 | |
| 401 | @item C-u g @var{file} @key{RET} |
| 402 | Merge new mail from inbox file @var{file}. |
| 403 | @end table |
| 404 | |
| 405 | @kindex i @r{(Rmail)} |
| 406 | @findex rmail-input |
| 407 | To run Rmail on a file other than your primary Rmail file, you can use |
| 408 | the @kbd{i} (@code{rmail-input}) command in Rmail. This visits the file |
| 409 | in Rmail mode. You can use @kbd{M-x rmail-input} even when not in |
| 410 | Rmail, but it is easier to type @kbd{C-u M-x rmail}, which does the |
| 411 | same thing. |
| 412 | |
| 413 | The file you read with @kbd{i} should normally be a valid Rmail file. |
| 414 | If it is not, Rmail tries to decompose it into a stream of messages in |
| 415 | various known formats. If it succeeds, it converts the whole file to an |
| 416 | Rmail file. If you specify a file name that doesn't exist, @kbd{i} |
| 417 | initializes a new buffer for creating a new Rmail file. |
| 418 | |
| 419 | @vindex rmail-secondary-file-directory |
| 420 | @vindex rmail-secondary-file-regexp |
| 421 | You can also select an Rmail file from a menu. In the Classify menu, |
| 422 | choose the Input Rmail File item; then choose the Rmail file you want. |
| 423 | The variables @code{rmail-secondary-file-directory} and |
| 424 | @code{rmail-secondary-file-regexp} specify which files to offer in the |
| 425 | menu: the first variable says which directory to find them in; the |
| 426 | second says which files in that directory to offer (all those that |
| 427 | match the regular expression). These variables also apply to choosing |
| 428 | a file for output (@pxref{Rmail Output}). |
| 429 | |
| 430 | @findex set-rmail-inbox-list |
| 431 | Each Rmail file can contain a list of inbox file names; you can specify |
| 432 | this list with @kbd{M-x set-rmail-inbox-list @key{RET} @var{files} |
| 433 | @key{RET}}. The argument can contain any number of file names, separated |
| 434 | by commas. It can also be empty, which specifies that this file should |
| 435 | have no inboxes. Once you specify a list of inboxes in an Rmail file, |
| 436 | the Rmail file remembers it permanently until you specify a different list. |
| 437 | |
| 438 | As a special exception, if your primary Rmail file does not specify any |
| 439 | inbox files, it uses your standard system inbox. |
| 440 | |
| 441 | @kindex g @r{(Rmail)} |
| 442 | @findex rmail-get-new-mail |
| 443 | The @kbd{g} command (@code{rmail-get-new-mail}) merges mail into the |
| 444 | current Rmail file from its inboxes. If the Rmail file has no |
| 445 | inboxes, @kbd{g} does nothing. The command @kbd{M-x rmail} also |
| 446 | merges new mail into your primary Rmail file. |
| 447 | |
| 448 | To merge mail from a file that is not the usual inbox, give the |
| 449 | @kbd{g} key a numeric argument, as in @kbd{C-u g}. Then it reads a file |
| 450 | name and merges mail from that file. The inbox file is not deleted or |
| 451 | changed in any way when @kbd{g} with an argument is used. This is, |
| 452 | therefore, a general way of merging one file of messages into another. |
| 453 | |
| 454 | @node Rmail Output |
| 455 | @section Copying Messages Out to Files |
| 456 | |
| 457 | These commands copy messages from an Rmail file into another file. |
| 458 | |
| 459 | @table @kbd |
| 460 | @item o @var{file} @key{RET} |
| 461 | Append a copy of the current message to the file @var{file}, using Rmail |
| 462 | file format by default (@code{rmail-output-to-rmail-file}). |
| 463 | |
| 464 | @item C-o @var{file} @key{RET} |
| 465 | Append a copy of the current message to the file @var{file}, using |
| 466 | system inbox file format by default (@code{rmail-output}). |
| 467 | |
| 468 | @item w @var{file} @key{RET} |
| 469 | Output just the message body to the file @var{file}, taking the default |
| 470 | file name from the message @samp{Subject} header. |
| 471 | @end table |
| 472 | |
| 473 | @kindex o @r{(Rmail)} |
| 474 | @findex rmail-output-to-rmail-file |
| 475 | @kindex C-o @r{(Rmail)} |
| 476 | @findex rmail-output |
| 477 | The commands @kbd{o} and @kbd{C-o} copy the current message into a |
| 478 | specified file. This file may be an Rmail file or it may be in system |
| 479 | inbox format; the output commands ascertain the file's format and write |
| 480 | the copied message in that format. |
| 481 | |
| 482 | The @kbd{o} and @kbd{C-o} commands differ in two ways: each has its |
| 483 | own separate default file name, and each specifies a choice of format to |
| 484 | use when the file does not already exist. The @kbd{o} command uses |
| 485 | Rmail format when it creates a new file, while @kbd{C-o} uses system |
| 486 | inbox format for a new file. The default file name for @kbd{o} is the |
| 487 | file name used last with @kbd{o}, and the default file name for |
| 488 | @kbd{C-o} is the file name used last with @kbd{C-o}. |
| 489 | |
| 490 | If the output file is an Rmail file currently visited in an Emacs buffer, |
| 491 | the output commands copy the message into that buffer. It is up to you |
| 492 | to save the buffer eventually in its file. |
| 493 | |
| 494 | @kindex w @r{(Rmail)} |
| 495 | @findex rmail-output-body-to-file |
| 496 | Sometimes you may receive a message whose body holds the contents of a |
| 497 | file. You can save the body to a file (excluding the message header) |
| 498 | with the @kbd{w} command (@code{rmail-output-body-to-file}). Often |
| 499 | these messages contain the intended file name in the @samp{Subject} |
| 500 | field, so the @kbd{w} command uses the @samp{Subject} field as the |
| 501 | default for the output file name. However, the file name is read using |
| 502 | the minibuffer, so you can specify a different name if you wish. |
| 503 | |
| 504 | You can also output a message to an Rmail file chosen with a menu. |
| 505 | In the Classify menu, choose the Output Rmail File menu item; then |
| 506 | choose the Rmail file you want. This outputs the current message to |
| 507 | that file, like the @kbd{o} command. The variables |
| 508 | @code{rmail-secondary-file-directory} and |
| 509 | @code{rmail-secondary-file-regexp} specify which files to offer in the |
| 510 | menu: the first variable says which directory to find them in; the |
| 511 | second says which files in that directory to offer (all those that |
| 512 | match the regular expression). |
| 513 | |
| 514 | @vindex rmail-delete-after-output |
| 515 | Copying a message with @kbd{o} or @kbd{C-o} gives the original copy |
| 516 | of the message the @samp{filed} attribute, so that @samp{filed} |
| 517 | appears in the mode line when such a message is current. @kbd{w} |
| 518 | gives it the @samp{stored} attribute. If you like to keep just a |
| 519 | single copy of every mail message, set the variable |
| 520 | @code{rmail-delete-after-output} to @code{t}; then the @kbd{o}, |
| 521 | @kbd{C-o} and @kbd{w} commands delete the original message after |
| 522 | copying it. (You can undelete the original afterward if you wish.) |
| 523 | |
| 524 | Copying messages into files in system inbox format uses the header |
| 525 | fields that are displayed in Rmail at the time. Thus, if you use the |
| 526 | @kbd{t} command to view the entire header and then copy the message, the |
| 527 | entire header is copied. @xref{Rmail Display}. |
| 528 | |
| 529 | @vindex rmail-output-file-alist |
| 530 | The variable @code{rmail-output-file-alist} lets you specify |
| 531 | intelligent defaults for the output file, based on the contents of the |
| 532 | current message. The value should be a list whose elements have this |
| 533 | form: |
| 534 | |
| 535 | @example |
| 536 | (@var{regexp} . @var{name-exp}) |
| 537 | @end example |
| 538 | |
| 539 | @noindent |
| 540 | If there's a match for @var{regexp} in the current message, then the |
| 541 | default file name for output is @var{name-exp}. If multiple elements |
| 542 | match the message, the first matching element decides the default file |
| 543 | name. The subexpression @var{name-exp} may be a string constant giving |
| 544 | the file name to use, or more generally it may be any Lisp expression |
| 545 | that returns a file name as a string. @code{rmail-output-file-alist} |
| 546 | applies to both @kbd{o} and @kbd{C-o}. |
| 547 | |
| 548 | @node Rmail Labels |
| 549 | @section Labels |
| 550 | @cindex label (Rmail) |
| 551 | @cindex attribute (Rmail) |
| 552 | |
| 553 | Each message can have various @dfn{labels} assigned to it as a means |
| 554 | of classification. Each label has a name; different names are different |
| 555 | labels. Any given label is either present or absent on a particular |
| 556 | message. A few label names have standard meanings and are given to |
| 557 | messages automatically by Rmail when appropriate; these special labels |
| 558 | are called @dfn{attributes}. |
| 559 | @ifnottex |
| 560 | (@xref{Rmail Attributes}.) |
| 561 | @end ifnottex |
| 562 | All other labels are assigned only by users. |
| 563 | |
| 564 | @table @kbd |
| 565 | @item a @var{label} @key{RET} |
| 566 | Assign the label @var{label} to the current message (@code{rmail-add-label}). |
| 567 | @item k @var{label} @key{RET} |
| 568 | Remove the label @var{label} from the current message (@code{rmail-kill-label}). |
| 569 | @item C-M-n @var{labels} @key{RET} |
| 570 | Move to the next message that has one of the labels @var{labels} |
| 571 | (@code{rmail-next-labeled-message}). |
| 572 | @item C-M-p @var{labels} @key{RET} |
| 573 | Move to the previous message that has one of the labels @var{labels} |
| 574 | (@code{rmail-previous-labeled-message}). |
| 575 | @item l @var{labels} @key{RET} |
| 576 | @itemx C-M-l @var{labels} @key{RET} |
| 577 | Make a summary of all messages containing any of the labels @var{labels} |
| 578 | (@code{rmail-summary-by-labels}). |
| 579 | @end table |
| 580 | |
| 581 | @kindex a @r{(Rmail)} |
| 582 | @kindex k @r{(Rmail)} |
| 583 | @findex rmail-add-label |
| 584 | @findex rmail-kill-label |
| 585 | The @kbd{a} (@code{rmail-add-label}) and @kbd{k} |
| 586 | (@code{rmail-kill-label}) commands allow you to assign or remove any |
| 587 | label on the current message. If the @var{label} argument is empty, it |
| 588 | means to assign or remove the same label most recently assigned or |
| 589 | removed. |
| 590 | |
| 591 | Once you have given messages labels to classify them as you wish, there |
| 592 | are two ways to use the labels: in moving and in summaries. |
| 593 | |
| 594 | @kindex C-M-n @r{(Rmail)} |
| 595 | @kindex C-M-p @r{(Rmail)} |
| 596 | @findex rmail-next-labeled-message |
| 597 | @findex rmail-previous-labeled-message |
| 598 | The command @kbd{C-M-n @var{labels} @key{RET}} |
| 599 | (@code{rmail-next-labeled-message}) moves to the next message that has |
| 600 | one of the labels @var{labels}. The argument @var{labels} specifies one |
| 601 | or more label names, separated by commas. @kbd{C-M-p} |
| 602 | (@code{rmail-previous-labeled-message}) is similar, but moves backwards |
| 603 | to previous messages. A numeric argument to either command serves as a |
| 604 | repeat count. |
| 605 | |
| 606 | The command @kbd{C-M-l @var{labels} @key{RET}} |
| 607 | (@code{rmail-summary-by-labels}) displays a summary containing only the |
| 608 | messages that have at least one of a specified set of labels. The |
| 609 | argument @var{labels} is one or more label names, separated by commas. |
| 610 | @xref{Rmail Summary}, for information on summaries. |
| 611 | |
| 612 | If the @var{labels} argument to @kbd{C-M-n}, @kbd{C-M-p} or |
| 613 | @kbd{C-M-l} is empty, it means to use the last set of labels specified |
| 614 | for any of these commands. |
| 615 | |
| 616 | @node Rmail Attributes |
| 617 | @section Rmail Attributes |
| 618 | |
| 619 | Some labels such as @samp{deleted} and @samp{filed} have built-in |
| 620 | meanings, and Rmail assigns them to messages automatically at |
| 621 | appropriate times; these labels are called @dfn{attributes}. Here is |
| 622 | a list of Rmail attributes: |
| 623 | |
| 624 | @table @samp |
| 625 | @item unseen |
| 626 | Means the message has never been current. Assigned to messages when |
| 627 | they come from an inbox file, and removed when a message is made |
| 628 | current. When you start Rmail, it initially shows the first message |
| 629 | that has this attribute. |
| 630 | @item deleted |
| 631 | Means the message is deleted. Assigned by deletion commands and |
| 632 | removed by undeletion commands (@pxref{Rmail Deletion}). |
| 633 | @item filed |
| 634 | Means the message has been copied to some other file. Assigned by the |
| 635 | @kbd{o} and @kbd{C-o} file output commands (@pxref{Rmail Output}). |
| 636 | @item stored |
| 637 | Assigned by the @kbd{w} file output command (@pxref{Rmail Output}). |
| 638 | @item answered |
| 639 | Means you have mailed an answer to the message. Assigned by the @kbd{r} |
| 640 | command (@code{rmail-reply}). @xref{Rmail Reply}. |
| 641 | @item forwarded |
| 642 | Means you have forwarded the message. Assigned by the @kbd{f} command |
| 643 | (@code{rmail-forward}). @xref{Rmail Reply}. |
| 644 | @item edited |
| 645 | Means you have edited the text of the message within Rmail. |
| 646 | @xref{Rmail Editing}. |
| 647 | @item resent |
| 648 | Means you have resent the message. Assigned by the command @kbd{M-x |
| 649 | rmail-resend}. @xref{Rmail Reply}. |
| 650 | @end table |
| 651 | |
| 652 | All other labels are assigned or removed only by users, and have no |
| 653 | standard meaning. |
| 654 | |
| 655 | @node Rmail Reply |
| 656 | @section Sending Replies |
| 657 | |
| 658 | Rmail has several commands that use Mail mode to send outgoing mail. |
| 659 | @xref{Sending Mail}, for information on using Mail mode, including |
| 660 | certain features meant to work with Rmail. What this section documents |
| 661 | are the special commands of Rmail for entering Mail mode. Note that the |
| 662 | usual keys for sending mail---@kbd{C-x m}, @kbd{C-x 4 m}, and @kbd{C-x 5 |
| 663 | m}---also work normally in Rmail mode. |
| 664 | |
| 665 | @table @kbd |
| 666 | @item m |
| 667 | Send a message (@code{rmail-mail}). |
| 668 | @item c |
| 669 | Continue editing the already started outgoing message (@code{rmail-continue}). |
| 670 | @item r |
| 671 | Send a reply to the current Rmail message (@code{rmail-reply}). |
| 672 | @item f |
| 673 | Forward the current message to other users (@code{rmail-forward}). |
| 674 | @item C-u f |
| 675 | Resend the current message to other users (@code{rmail-resend}). |
| 676 | @item M-m |
| 677 | Try sending a bounced message a second time (@code{rmail-retry-failure}). |
| 678 | @end table |
| 679 | |
| 680 | @kindex r @r{(Rmail)} |
| 681 | @findex rmail-reply |
| 682 | @cindex reply to a message |
| 683 | The most common reason to send a message while in Rmail is to reply |
| 684 | to the message you are reading. To do this, type @kbd{r} |
| 685 | (@code{rmail-reply}). This displays the @samp{*mail*} buffer in |
| 686 | another window, much like @kbd{C-x 4 m}, but preinitializes the |
| 687 | @samp{Subject}, @samp{To}, @samp{CC}, @samp{In-reply-to} and |
| 688 | @samp{References} header fields based on the message you are replying |
| 689 | to. The @samp{To} field starts out as the address of the person who |
| 690 | sent the message you received, and the @samp{CC} field starts out with |
| 691 | all the other recipients of that message. |
| 692 | |
| 693 | @vindex rmail-dont-reply-to-names |
| 694 | You can exclude certain recipients from being placed automatically in |
| 695 | the @samp{CC}, using the variable @code{rmail-dont-reply-to-names}. Its |
| 696 | value should be a regular expression (as a string); any recipient that |
| 697 | the regular expression matches, is excluded from the @samp{CC} field. |
| 698 | The default value matches your own name, and any name starting with |
| 699 | @samp{info-}. (Those names are excluded because there is a convention |
| 700 | of using them for large mailing lists to broadcast announcements.) |
| 701 | |
| 702 | To omit the @samp{CC} field completely for a particular reply, enter |
| 703 | the reply command with a numeric argument: @kbd{C-u r} or @kbd{1 r}. |
| 704 | This means to reply only to the sender of the original message. |
| 705 | |
| 706 | Once the @samp{*mail*} buffer has been initialized, editing and |
| 707 | sending the mail goes as usual (@pxref{Sending Mail}). You can edit the |
| 708 | presupplied header fields if they are not what you want. You can also |
| 709 | use the commands of Mail mode (@pxref{Mail Mode}), including @kbd{C-c |
| 710 | C-y} which yanks in the message that you are replying to. You can |
| 711 | also switch to the Rmail buffer, select a different message there, switch |
| 712 | back, and yank the new current message. |
| 713 | |
| 714 | @kindex M-m @r{(Rmail)} |
| 715 | @findex rmail-retry-failure |
| 716 | @cindex retrying a failed message |
| 717 | @vindex rmail-retry-ignored-headers |
| 718 | Sometimes a message does not reach its destination. Mailers usually |
| 719 | send the failed message back to you, enclosed in a @dfn{failure |
| 720 | message}. The Rmail command @kbd{M-m} (@code{rmail-retry-failure}) |
| 721 | prepares to send the same message a second time: it sets up a |
| 722 | @samp{*mail*} buffer with the same text and header fields as before. If |
| 723 | you type @kbd{C-c C-c} right away, you send the message again exactly |
| 724 | the same as the first time. Alternatively, you can edit the text or |
| 725 | headers and then send it. The variable |
| 726 | @code{rmail-retry-ignored-headers}, in the same format as |
| 727 | @code{rmail-ignored-headers} (@pxref{Rmail Display}), controls which |
| 728 | headers are stripped from the failed message when retrying it. |
| 729 | |
| 730 | @kindex f @r{(Rmail)} |
| 731 | @findex rmail-forward |
| 732 | @cindex forwarding a message |
| 733 | Another frequent reason to send mail in Rmail is to @dfn{forward} the |
| 734 | current message to other users. @kbd{f} (@code{rmail-forward}) makes |
| 735 | this easy by preinitializing the @samp{*mail*} buffer with the current |
| 736 | message as the text, and a subject designating a forwarded message. All |
| 737 | you have to do is fill in the recipients and send. When you forward a |
| 738 | message, recipients get a message which is ``from'' you, and which has |
| 739 | the original message in its contents. |
| 740 | |
| 741 | @findex unforward-rmail-message |
| 742 | Forwarding a message encloses it between two delimiter lines. It also |
| 743 | modifies every line that starts with a dash, by inserting @w{@samp{- }} |
| 744 | at the start of the line. When you receive a forwarded message, if it |
| 745 | contains something besides ordinary text---for example, program source |
| 746 | code---you might find it useful to undo that transformation. You can do |
| 747 | this by selecting the forwarded message and typing @kbd{M-x |
| 748 | unforward-rmail-message}. This command extracts the original forwarded |
| 749 | message, deleting the inserted @w{@samp{- }} strings, and inserts it |
| 750 | into the Rmail file as a separate message immediately following the |
| 751 | current one. |
| 752 | |
| 753 | @findex rmail-resend |
| 754 | @dfn{Resending} is an alternative similar to forwarding; the |
| 755 | difference is that resending sends a message that is ``from'' the |
| 756 | original sender, just as it reached you---with a few added header fields |
| 757 | @samp{Resent-From} and @samp{Resent-To} to indicate that it came via |
| 758 | you. To resend a message in Rmail, use @kbd{C-u f}. (@kbd{f} runs |
| 759 | @code{rmail-forward}, which is programmed to invoke @code{rmail-resend} |
| 760 | if you provide a numeric argument.) |
| 761 | |
| 762 | @kindex m @r{(Rmail)} |
| 763 | @findex rmail-mail |
| 764 | The @kbd{m} (@code{rmail-mail}) command is used to start editing an |
| 765 | outgoing message that is not a reply. It leaves the header fields empty. |
| 766 | Its only difference from @kbd{C-x 4 m} is that it makes the Rmail buffer |
| 767 | accessible for @kbd{C-c C-y}, just as @kbd{r} does. Thus, @kbd{m} can be |
| 768 | used to reply to or forward a message; it can do anything @kbd{r} or @kbd{f} |
| 769 | can do. |
| 770 | |
| 771 | @kindex c @r{(Rmail)} |
| 772 | @findex rmail-continue |
| 773 | The @kbd{c} (@code{rmail-continue}) command resumes editing the |
| 774 | @samp{*mail*} buffer, to finish editing an outgoing message you were |
| 775 | already composing, or to alter a message you have sent. |
| 776 | |
| 777 | @vindex rmail-mail-new-frame |
| 778 | If you set the variable @code{rmail-mail-new-frame} to a |
| 779 | non-@code{nil} value, then all the Rmail commands to start sending a |
| 780 | message create a new frame to edit it in. This frame is deleted when |
| 781 | you send the message, or when you use the @samp{Cancel} item in the |
| 782 | @samp{Mail} menu. |
| 783 | |
| 784 | All the Rmail commands to send a message use the mail-composition |
| 785 | method that you have chosen (@pxref{Mail Methods}). |
| 786 | |
| 787 | @node Rmail Summary |
| 788 | @section Summaries |
| 789 | @cindex summary (Rmail) |
| 790 | |
| 791 | A @dfn{summary} is a buffer containing one line per message to give |
| 792 | you an overview of the mail in an Rmail file. Each line shows the |
| 793 | message number and date, the sender, the line count, the labels, and |
| 794 | the subject. Moving point in the summary buffer selects messages as |
| 795 | you move to their summary lines. Almost all Rmail commands are valid |
| 796 | in the summary buffer also; when used there, they apply to the message |
| 797 | described by the current line of the summary. |
| 798 | |
| 799 | A summary buffer applies to a single Rmail file only; if you are |
| 800 | editing multiple Rmail files, each one can have its own summary buffer. |
| 801 | The summary buffer name is made by appending @samp{-summary} to the |
| 802 | Rmail buffer's name. Normally only one summary buffer is displayed at a |
| 803 | time. |
| 804 | |
| 805 | @menu |
| 806 | * Rmail Make Summary:: Making various sorts of summaries. |
| 807 | * Rmail Summary Edit:: Manipulating messages from the summary. |
| 808 | @end menu |
| 809 | |
| 810 | @node Rmail Make Summary |
| 811 | @subsection Making Summaries |
| 812 | |
| 813 | Here are the commands to create a summary for the current Rmail file. |
| 814 | Once the Rmail file has a summary buffer, changes in the Rmail file |
| 815 | (such as deleting or expunging messages, and getting new mail) |
| 816 | automatically update the summary. |
| 817 | |
| 818 | @table @kbd |
| 819 | @item h |
| 820 | @itemx C-M-h |
| 821 | Summarize all messages (@code{rmail-summary}). |
| 822 | @item l @var{labels} @key{RET} |
| 823 | @itemx C-M-l @var{labels} @key{RET} |
| 824 | Summarize messages that have one or more of the specified labels |
| 825 | (@code{rmail-summary-by-labels}). |
| 826 | @item C-M-r @var{rcpts} @key{RET} |
| 827 | Summarize messages that have one or more of the specified recipients |
| 828 | (@code{rmail-summary-by-recipients}). |
| 829 | @item C-M-t @var{topic} @key{RET} |
| 830 | Summarize messages that have a match for the specified regexp |
| 831 | @var{topic} in their subjects (@code{rmail-summary-by-topic}). |
| 832 | @item C-M-s @var{regexp} |
| 833 | Summarize messages whose headers and the subject line match the |
| 834 | specified regular expression @var{regexp} |
| 835 | (@code{rmail-summary-by-regexp}). |
| 836 | @end table |
| 837 | |
| 838 | @kindex h @r{(Rmail)} |
| 839 | @findex rmail-summary |
| 840 | The @kbd{h} or @kbd{C-M-h} (@code{rmail-summary}) command fills the summary buffer |
| 841 | for the current Rmail file with a summary of all the messages in the file. |
| 842 | It then displays and selects the summary buffer in another window. |
| 843 | |
| 844 | @kindex l @r{(Rmail)} |
| 845 | @kindex C-M-l @r{(Rmail)} |
| 846 | @findex rmail-summary-by-labels |
| 847 | @kbd{C-M-l @var{labels} @key{RET}} (@code{rmail-summary-by-labels}) makes |
| 848 | a partial summary mentioning only the messages that have one or more of the |
| 849 | labels @var{labels}. @var{labels} should contain label names separated by |
| 850 | commas. |
| 851 | |
| 852 | @kindex C-M-r @r{(Rmail)} |
| 853 | @findex rmail-summary-by-recipients |
| 854 | @kbd{C-M-r @var{rcpts} @key{RET}} (@code{rmail-summary-by-recipients}) |
| 855 | makes a partial summary mentioning only the messages that have one or more |
| 856 | of the recipients @var{rcpts}. @var{rcpts} should contain mailing |
| 857 | addresses separated by commas. |
| 858 | |
| 859 | @kindex C-M-t @r{(Rmail)} |
| 860 | @findex rmail-summary-by-topic |
| 861 | @kbd{C-M-t @var{topic} @key{RET}} (@code{rmail-summary-by-topic}) |
| 862 | makes a partial summary mentioning only the messages whose subjects have |
| 863 | a match for the regular expression @var{topic}. |
| 864 | |
| 865 | @kindex C-M-s @r{(Rmail)} |
| 866 | @findex rmail-summary-by-regexp |
| 867 | @kbd{C-M-s @var{regexp} @key{RET}} (@code{rmail-summary-by-regexp}) |
| 868 | makes a partial summary which mentions only the messages whose headers |
| 869 | (including the date and the subject lines) match the regular |
| 870 | expression @var{regexp}. |
| 871 | |
| 872 | Note that there is only one summary buffer for any Rmail file; |
| 873 | making any kind of summary discards any previous summary. |
| 874 | |
| 875 | @vindex rmail-summary-window-size |
| 876 | @vindex rmail-summary-line-count-flag |
| 877 | The variable @code{rmail-summary-window-size} says how many lines to |
| 878 | use for the summary window. The variable |
| 879 | @code{rmail-summary-line-count-flag} controls whether the summary line |
| 880 | for a message should include the line count of the message. |
| 881 | |
| 882 | @node Rmail Summary Edit |
| 883 | @subsection Editing in Summaries |
| 884 | |
| 885 | You can use the Rmail summary buffer to do almost anything you can do |
| 886 | in the Rmail buffer itself. In fact, once you have a summary buffer, |
| 887 | there's no need to switch back to the Rmail buffer. |
| 888 | |
| 889 | You can select and display various messages in the Rmail buffer, from |
| 890 | the summary buffer, just by moving point in the summary buffer to |
| 891 | different lines. It doesn't matter what Emacs command you use to move |
| 892 | point; whichever line point is on at the end of the command, that |
| 893 | message is selected in the Rmail buffer. |
| 894 | |
| 895 | Almost all Rmail commands work in the summary buffer as well as in the |
| 896 | Rmail buffer. Thus, @kbd{d} in the summary buffer deletes the current |
| 897 | message, @kbd{u} undeletes, and @kbd{x} expunges. (However, in the |
| 898 | summary buffer, a numeric argument to @kbd{d}, @kbd{C-d} and @kbd{u} |
| 899 | serves as a repeat count. A negative argument reverses the meaning of |
| 900 | @kbd{d} and @kbd{C-d}.) @kbd{o} and @kbd{C-o} output the current |
| 901 | message to a file; @kbd{r} starts a reply to it. You can scroll the |
| 902 | current message while remaining in the summary buffer using @key{SPC} |
| 903 | and @key{DEL}. |
| 904 | |
| 905 | The Rmail commands to move between messages also work in the summary |
| 906 | buffer, but with a twist: they move through the set of messages included |
| 907 | in the summary. They also ensure the Rmail buffer appears on the screen |
| 908 | (unlike cursor motion commands, which update the contents of the Rmail |
| 909 | buffer but don't display it in a window unless it already appears). |
| 910 | Here is a list of these commands: |
| 911 | |
| 912 | @table @kbd |
| 913 | @item n |
| 914 | Move to next line, skipping lines saying `deleted', and select its |
| 915 | message. |
| 916 | @item p |
| 917 | Move to previous line, skipping lines saying `deleted', and select |
| 918 | its message. |
| 919 | @item M-n |
| 920 | Move to next line and select its message. |
| 921 | @item M-p |
| 922 | Move to previous line and select its message. |
| 923 | @item > |
| 924 | Move to the last line, and select its message. |
| 925 | @item < |
| 926 | Move to the first line, and select its message. |
| 927 | @item j |
| 928 | @itemx @key{RET} |
| 929 | Select the message on the current line (ensuring that the RMAIL buffer |
| 930 | appears on the screen). With argument @var{n}, select message number |
| 931 | @var{n} and move to its line in the summary buffer; this signals an |
| 932 | error if the message is not listed in the summary buffer. |
| 933 | @item M-s @var{pattern} @key{RET} |
| 934 | Search through messages for @var{pattern} starting with the current |
| 935 | message; select the message found, and move point in the summary buffer |
| 936 | to that message's line. |
| 937 | @end table |
| 938 | |
| 939 | @vindex rmail-redisplay-summary |
| 940 | Deletion, undeletion, and getting new mail, and even selection of a |
| 941 | different message all update the summary buffer when you do them in the |
| 942 | Rmail buffer. If the variable @code{rmail-redisplay-summary} is |
| 943 | non-@code{nil}, these actions also bring the summary buffer back onto |
| 944 | the screen. |
| 945 | |
| 946 | @kindex Q @r{(Rmail summary)} |
| 947 | @findex rmail-summary-wipe |
| 948 | @kindex q @r{(Rmail summary)} |
| 949 | @findex rmail-summary-quit |
| 950 | When you are finished using the summary, type @kbd{Q} |
| 951 | (@code{rmail-summary-wipe}) to delete the summary buffer's window. You |
| 952 | can also exit Rmail while in the summary: @kbd{q} |
| 953 | (@code{rmail-summary-quit}) deletes the summary window, then exits from |
| 954 | Rmail by saving the Rmail file and switching to another buffer. |
| 955 | |
| 956 | @node Rmail Sorting |
| 957 | @section Sorting the Rmail File |
| 958 | @cindex sorting Rmail file |
| 959 | @cindex Rmail file sorting |
| 960 | |
| 961 | @table @kbd |
| 962 | @findex rmail-sort-by-date |
| 963 | @item M-x rmail-sort-by-date |
| 964 | Sort messages of current Rmail file by date. |
| 965 | |
| 966 | @findex rmail-sort-by-subject |
| 967 | @item M-x rmail-sort-by-subject |
| 968 | Sort messages of current Rmail file by subject. |
| 969 | |
| 970 | @findex rmail-sort-by-author |
| 971 | @item M-x rmail-sort-by-author |
| 972 | Sort messages of current Rmail file by author's name. |
| 973 | |
| 974 | @findex rmail-sort-by-recipient |
| 975 | @item M-x rmail-sort-by-recipient |
| 976 | Sort messages of current Rmail file by recipient's names. |
| 977 | |
| 978 | @findex rmail-sort-by-correspondent |
| 979 | @item M-x rmail-sort-by-correspondent |
| 980 | Sort messages of current Rmail file by the name of the other |
| 981 | correspondent. |
| 982 | |
| 983 | @findex rmail-sort-by-lines |
| 984 | @item M-x rmail-sort-by-lines |
| 985 | Sort messages of current Rmail file by size (number of lines). |
| 986 | |
| 987 | @findex rmail-sort-by-keywords |
| 988 | @item M-x rmail-sort-by-keywords @key{RET} @var{labels} @key{RET} |
| 989 | Sort messages of current Rmail file by labels. The argument |
| 990 | @var{labels} should be a comma-separated list of labels. The order of |
| 991 | these labels specifies the order of messages; messages with the first |
| 992 | label come first, messages with the second label come second, and so on. |
| 993 | Messages which have none of these labels come last. |
| 994 | @end table |
| 995 | |
| 996 | The Rmail sort commands perform a @emph{stable sort}: if there is no |
| 997 | reason to prefer either one of two messages, their order remains |
| 998 | unchanged. You can use this to sort by more than one criterion. For |
| 999 | example, if you use @code{rmail-sort-by-date} and then |
| 1000 | @code{rmail-sort-by-author}, messages from the same author appear in |
| 1001 | order by date. |
| 1002 | |
| 1003 | With a numeric argument, all these commands reverse the order of |
| 1004 | comparison. This means they sort messages from newest to oldest, from |
| 1005 | biggest to smallest, or in reverse alphabetical order. |
| 1006 | |
| 1007 | @node Rmail Display |
| 1008 | @section Display of Messages |
| 1009 | |
| 1010 | Rmail reformats the header of each message before displaying it for |
| 1011 | the first time. Reformatting hides uninteresting header fields to |
| 1012 | reduce clutter. You can use the @kbd{t} command to show the entire |
| 1013 | header or to repeat the header reformatting operation. |
| 1014 | |
| 1015 | @table @kbd |
| 1016 | @item t |
| 1017 | Toggle display of complete header (@code{rmail-toggle-header}). |
| 1018 | @end table |
| 1019 | |
| 1020 | @vindex rmail-ignored-headers |
| 1021 | @vindex rmail-nonignored-headers |
| 1022 | Reformatting the header involves deleting most header fields, on the |
| 1023 | grounds that they are not interesting. The variable |
| 1024 | @code{rmail-ignored-headers} holds a regular expression that specifies |
| 1025 | which header fields to hide in this way---if it matches the beginning |
| 1026 | of a header field, that whole field is hidden. However, the variable |
| 1027 | @code{rmail-nonignored-headers} provides a further override: a header |
| 1028 | matching that regular expression is shown even if it matches |
| 1029 | @code{rmail-ignored-headers} too. |
| 1030 | |
| 1031 | @kindex t @r{(Rmail)} |
| 1032 | @findex rmail-toggle-header |
| 1033 | Rmail saves the complete original header before reformatting; to see |
| 1034 | it, use the @kbd{t} command (@code{rmail-toggle-header}). This |
| 1035 | discards the reformatted headers of the current message and displays |
| 1036 | it with the original header. Repeating @kbd{t} reformats the message |
| 1037 | again, which shows only the interesting headers according to the |
| 1038 | current values of those variable. Selecting the message again also |
| 1039 | reformats it if necessary. |
| 1040 | |
| 1041 | One consequence of this is that if you edit the reformatted header |
| 1042 | (using @kbd{e}; @pxref{Rmail Editing}), subsequent use of @kbd{t} will |
| 1043 | discard your edits. On the other hand, if you use @kbd{e} after |
| 1044 | @kbd{t}, to edit the original (unreformatted) header, those changes are |
| 1045 | permanent. |
| 1046 | |
| 1047 | When the @kbd{t} command has a prefix argument, a positive argument |
| 1048 | means to show the reformatted header, and a zero or negative argument |
| 1049 | means to show the full header. |
| 1050 | |
| 1051 | @vindex rmail-highlighted-headers |
| 1052 | When the terminal supports multiple fonts or colors, Rmail |
| 1053 | highlights certain header fields that are especially interesting---by |
| 1054 | default, the @samp{From} and @samp{Subject} fields. The variable |
| 1055 | @code{rmail-highlighted-headers} holds a regular expression that |
| 1056 | specifies the header fields to highlight; if it matches the beginning |
| 1057 | of a header field, that whole field is highlighted. |
| 1058 | |
| 1059 | If you specify unusual colors for your text foreground and |
| 1060 | background, the colors used for highlighting may not go well with |
| 1061 | them. If so, specify different colors by setting the variable |
| 1062 | @code{rmail-highlight-face} to a suitable face. To turn off |
| 1063 | highlighting entirely in Rmail, set @code{rmail-highlighted-headers} |
| 1064 | to @code{nil}. |
| 1065 | |
| 1066 | You can highlight and activate URLs in incoming messages by adding |
| 1067 | the function @code{goto-address} to the hook |
| 1068 | @code{rmail-show-message-hook}. Then you can browse these URLs by |
| 1069 | clicking on them with @kbd{Mouse-2} (or @kbd{Mouse-1} quickly) or by |
| 1070 | moving to one and typing @kbd{C-c @key{RET}}. @xref{Goto-address, |
| 1071 | Activating URLs, Activating URLs}. |
| 1072 | |
| 1073 | @node Rmail Coding |
| 1074 | @section Rmail and Coding Systems |
| 1075 | |
| 1076 | @cindex decoding mail messages (Rmail) |
| 1077 | Rmail automatically decodes messages which contain non-@acronym{ASCII} |
| 1078 | characters, just as Emacs does with files you visit and with subprocess |
| 1079 | output. Rmail uses the standard @samp{charset=@var{charset}} header in |
| 1080 | the message, if any, to determine how the message was encoded by the |
| 1081 | sender. It maps @var{charset} into the corresponding Emacs coding |
| 1082 | system (@pxref{Coding Systems}), and uses that coding system to decode |
| 1083 | message text. If the message header doesn't have the @samp{charset} |
| 1084 | specification, or if @var{charset} is not recognized, |
| 1085 | Rmail chooses the coding system with the usual Emacs heuristics and |
| 1086 | defaults (@pxref{Recognize Coding}). |
| 1087 | |
| 1088 | @cindex fixing incorrectly decoded mail messages |
| 1089 | Occasionally, a message is decoded incorrectly, either because Emacs |
| 1090 | guessed the wrong coding system in the absence of the @samp{charset} |
| 1091 | specification, or because the specification was inaccurate. For |
| 1092 | example, a misconfigured mailer could send a message with a |
| 1093 | @samp{charset=iso-8859-1} header when the message is actually encoded |
| 1094 | in @code{koi8-r}. When you see the message text garbled, or some of |
| 1095 | its characters displayed as empty boxes, this may have happened. |
| 1096 | |
| 1097 | @findex rmail-redecode-body |
| 1098 | You can correct the problem by decoding the message again using the |
| 1099 | right coding system, if you can figure out or guess which one is |
| 1100 | right. To do this, invoke the @kbd{M-x rmail-redecode-body} command. |
| 1101 | It reads the name of a coding system, encodes the message body using |
| 1102 | whichever coding system was used to decode it before, then redecodes |
| 1103 | it using the coding system you specified. If you specified the right |
| 1104 | coding system, the result should be readable. |
| 1105 | |
| 1106 | Decoding and encoding using the wrong coding system is lossless for |
| 1107 | most encodings, in particular with 8-bit encodings such as iso-8859 or |
| 1108 | koi8. So, if the initial attempt to redecode the message didn't |
| 1109 | result in a legible text, you can try other coding systems until you |
| 1110 | succeed. |
| 1111 | |
| 1112 | With some coding systems, notably those from the iso-2022 family, |
| 1113 | information can be lost in decoding, so that encoding the message |
| 1114 | again won't bring back the original incoming text. In such a case, |
| 1115 | @code{rmail-redecode-body} cannot work. However, the problems that |
| 1116 | call for use of @code{rmail-redecode-body} rarely occur with those |
| 1117 | coding systems. So in practice the command works when you need it. |
| 1118 | |
| 1119 | @node Rmail Editing |
| 1120 | @section Editing Within a Message |
| 1121 | |
| 1122 | Most of the usual Emacs commands are available in Rmail mode, though a |
| 1123 | few, such as @kbd{C-M-n} and @kbd{C-M-h}, are redefined by Rmail for |
| 1124 | other purposes. However, the Rmail buffer is normally read only, and |
| 1125 | most of the letters are redefined as Rmail commands. If you want to |
| 1126 | edit the text of a message, you must use the Rmail command @kbd{e}. |
| 1127 | |
| 1128 | @table @kbd |
| 1129 | @item e |
| 1130 | Edit the current message as ordinary text. |
| 1131 | @end table |
| 1132 | |
| 1133 | @kindex e @r{(Rmail)} |
| 1134 | @findex rmail-edit-current-message |
| 1135 | The @kbd{e} command (@code{rmail-edit-current-message}) switches from |
| 1136 | Rmail mode into Rmail Edit mode, another major mode which is nearly the |
| 1137 | same as Text mode. The mode line indicates this change. |
| 1138 | |
| 1139 | In Rmail Edit mode, letters insert themselves as usual and the Rmail |
| 1140 | commands are not available. When you are finished editing the message and |
| 1141 | are ready to go back to Rmail, type @kbd{C-c C-c}, which switches back to |
| 1142 | Rmail mode. Alternatively, you can return to Rmail mode but cancel all the |
| 1143 | editing that you have done, by typing @kbd{C-c C-]}. |
| 1144 | |
| 1145 | @vindex rmail-edit-mode-hook |
| 1146 | Entering Rmail Edit mode runs the hook @code{text-mode-hook}; then it |
| 1147 | runs the hook @code{rmail-edit-mode-hook} (@pxref{Hooks}). It adds the |
| 1148 | attribute @samp{edited} to the message. It also displays the full |
| 1149 | headers of the message, so that you can edit the headers as well as the |
| 1150 | body of the message, and your changes in the headers will be |
| 1151 | permanent. |
| 1152 | |
| 1153 | @node Rmail Digest |
| 1154 | @section Digest Messages |
| 1155 | @cindex digest message |
| 1156 | @cindex undigestify |
| 1157 | |
| 1158 | A @dfn{digest message} is a message which exists to contain and carry |
| 1159 | several other messages. Digests are used on some moderated mailing |
| 1160 | lists; all the messages that arrive for the list during a period of time |
| 1161 | such as one day are put inside a single digest which is then sent to the |
| 1162 | subscribers. Transmitting the single digest uses much less computer |
| 1163 | time than transmitting the individual messages even though the total |
| 1164 | size is the same, because the per-message overhead in network mail |
| 1165 | transmission is considerable. |
| 1166 | |
| 1167 | @findex undigestify-rmail-message |
| 1168 | When you receive a digest message, the most convenient way to read it is |
| 1169 | to @dfn{undigestify} it: to turn it back into many individual messages. |
| 1170 | Then you can read and delete the individual messages as it suits you. |
| 1171 | To do this, select the digest message and type the command @kbd{M-x |
| 1172 | undigestify-rmail-message}. This extracts the submessages as separate |
| 1173 | Rmail messages, and inserts them following the digest. The digest |
| 1174 | message itself is flagged as deleted. |
| 1175 | |
| 1176 | @node Out of Rmail |
| 1177 | @section Converting an Rmail File to Inbox Format |
| 1178 | @cindex Babyl format to Inbox format |
| 1179 | @cindex converting Rmail file to mailbox format |
| 1180 | |
| 1181 | @findex unrmail |
| 1182 | The command @kbd{M-x unrmail} converts a file in Rmail format to inbox |
| 1183 | format (also known as the system mailbox, or mbox, format), so that |
| 1184 | you can use it with other mail-editing tools. You must specify two |
| 1185 | arguments, the name of the Rmail file and the name to use for the |
| 1186 | converted file. @kbd{M-x unrmail} does not alter the Rmail file itself. |
| 1187 | |
| 1188 | @pindex b2m |
| 1189 | @kbd{M-x unrmail} is useful if you can run Emacs on the machine |
| 1190 | where the Rmail file resides, or can access the Rmail file remotely |
| 1191 | (@pxref{Remote Files}) from a machine where Emacs is installed. If |
| 1192 | accessing Rmail files from Emacs is impossible, you can use the |
| 1193 | @command{b2m} program instead. @command{b2m} is part of the Emacs |
| 1194 | distribution, it is installed into the same directory where all the |
| 1195 | other auxiliary programs (@command{etags} etc.) are installed, and its |
| 1196 | source is available in the Emacs source distribution, so that you |
| 1197 | could copy the source to the target machine and compile it there. |
| 1198 | |
| 1199 | To convert a file @file{@var{babyl-file}} into @file{@var{mbox-file}}, |
| 1200 | invoke @command{b2m} like this: |
| 1201 | |
| 1202 | @example |
| 1203 | b2m < @var{babyl-file} > @var{mbox-file} |
| 1204 | @end example |
| 1205 | |
| 1206 | @node Rmail Rot13 |
| 1207 | @section Reading Rot13 Messages |
| 1208 | @cindex rot13 code |
| 1209 | |
| 1210 | Mailing list messages that might offend some readers are sometimes |
| 1211 | encoded in a simple code called @dfn{rot13}---so named because it |
| 1212 | rotates the alphabet by 13 letters. This code is not for secrecy, as it |
| 1213 | provides none; rather, it enables those who might be offended to avoid |
| 1214 | seeing the real text of the message. |
| 1215 | |
| 1216 | @findex rot13-other-window |
| 1217 | To view a buffer which uses the rot13 code, use the command @kbd{M-x |
| 1218 | rot13-other-window}. This displays the current buffer in another window |
| 1219 | which applies the code when displaying the text. |
| 1220 | |
| 1221 | @node Movemail |
| 1222 | @section @code{movemail} program |
| 1223 | @cindex @code{movemail} program |
| 1224 | |
| 1225 | When invoked for the first time, Rmail attempts to locate the |
| 1226 | @code{movemail} program and determine its version. There are two |
| 1227 | versions of @code{movemail} program: the native one, shipped with GNU |
| 1228 | Emacs (the ``emacs version'') and the one included in GNU mailutils |
| 1229 | (the ``mailutils version,'' @pxref{movemail,,,mailutils,GNU |
| 1230 | mailutils}). They support the same command line syntax and the same |
| 1231 | basic subset of options. However, the Mailutils version offers |
| 1232 | additional features. |
| 1233 | |
| 1234 | The Emacs version of @code{movemail} is able to retrieve mail from |
| 1235 | usual UNIX mailbox formats and from remote mailboxes using the POP3 |
| 1236 | protocol. |
| 1237 | |
| 1238 | The Mailutils version is able to handle a wide set of mailbox |
| 1239 | formats, such as plain UNIX mailboxes, @code{maildir} and @code{MH} |
| 1240 | mailboxes, etc. It is able to retrieve remote mail using POP3 or |
| 1241 | IMAP4 protocol, and can retrieve mail from them using a TLS encrypted |
| 1242 | channel. It also accepts mailbox argument in the @acronym{URL} form. |
| 1243 | The detailed description of mailbox @acronym{URL}s can be found in |
| 1244 | @ref{URL,,,mailutils,Mailbox URL Formats}. In short, a @acronym{URL} |
| 1245 | is: |
| 1246 | |
| 1247 | @smallexample |
| 1248 | @var{proto}://[@var{user}[:@var{password}]@@]@var{host-or-file-name} |
| 1249 | @end smallexample |
| 1250 | |
| 1251 | @noindent |
| 1252 | where square brackets denote optional elements. |
| 1253 | |
| 1254 | @table @var |
| 1255 | @item proto |
| 1256 | Specifies the @dfn{mailbox protocol}, or @dfn{format} to |
| 1257 | use. The exact semantics of the rest of @acronym{URL} elements depends |
| 1258 | on the actual value of @var{proto} (see below). |
| 1259 | |
| 1260 | @item user |
| 1261 | User name to access the remote mailbox. |
| 1262 | |
| 1263 | @item password |
| 1264 | User password to access the remote mailbox. |
| 1265 | |
| 1266 | @item host-or-file-name |
| 1267 | Hostname of the remote server for remote mailboxes or file name of a |
| 1268 | local mailbox. |
| 1269 | @end table |
| 1270 | |
| 1271 | @noindent |
| 1272 | @var{Proto} can be one of: |
| 1273 | |
| 1274 | @table @code |
| 1275 | @item mbox |
| 1276 | Usual UNIX mailbox format. In this case, neither @var{user} nor |
| 1277 | @var{pass} are used, and @var{host-or-file-name} denotes the file name of |
| 1278 | the mailbox file, e.g., @code{mbox://var/spool/mail/smith}. |
| 1279 | |
| 1280 | @item mh |
| 1281 | A local mailbox in the @acronym{MH} format. @var{User} and |
| 1282 | @var{pass} are not used. @var{Host-or-file-name} denotes the name of |
| 1283 | @acronym{MH} folder, e.g., @code{mh://Mail/inbox}. |
| 1284 | |
| 1285 | @item maildir |
| 1286 | A local mailbox in the @acronym{maildir} format. @var{User} and |
| 1287 | @var{pass} are not used, and @var{host-or-file-name} denotes the name of |
| 1288 | @code{maildir} mailbox, e.g., @code{maildir://mail/inbox}. |
| 1289 | |
| 1290 | @item file |
| 1291 | Any local mailbox format. Its actual format is detected automatically |
| 1292 | by @code{movemail}. |
| 1293 | |
| 1294 | @item pop |
| 1295 | A remote mailbox to be accessed via POP3 protocol. @var{User} |
| 1296 | specifies the remote user name to use, @var{pass} may be used to |
| 1297 | specify the user password, @var{host-or-file-name} is the name or IP |
| 1298 | address of the remote mail server to connect to; e.g., |
| 1299 | @code{pop://smith:guessme@@remote.server.net}. |
| 1300 | |
| 1301 | @item imap |
| 1302 | A remote mailbox to be accessed via IMAP4 protocol. @var{User} |
| 1303 | specifies the remote user name to use, @var{pass} may be used to |
| 1304 | specify the user password, @var{host-or-file-name} is the name or IP |
| 1305 | address of the remote mail server to connect to; |
| 1306 | e.g., @code{imap://smith:guessme@@remote.server.net}. |
| 1307 | @end table |
| 1308 | |
| 1309 | Alternatively, you can specify the file name of the mailbox to use. |
| 1310 | This is equivalent to specifying the @samp{file} protocol: |
| 1311 | |
| 1312 | @smallexample |
| 1313 | /var/spool/mail/@var{user} @equiv{} file://var/spool/mail/@var{user} |
| 1314 | @end smallexample |
| 1315 | |
| 1316 | @vindex rmail-movemail-program |
| 1317 | @vindex rmail-movemail-search-path |
| 1318 | The variable @code{rmail-movemail-program} controls which version of |
| 1319 | @code{movemail} to use. If that is a string, it specifies the |
| 1320 | absolute file name of the @code{movemail} executable. If it is |
| 1321 | @code{nil}, Rmail searches for @code{movemail} in the directories |
| 1322 | listed in @code{rmail-movemail-search-path} and @code{exec-path}, then |
| 1323 | in @code{exec-directory}. |
| 1324 | |
| 1325 | @node Remote Mailboxes |
| 1326 | @section Retrieving Mail from Remote Mailboxes |
| 1327 | @pindex movemail |
| 1328 | |
| 1329 | Some sites use a method called POP for accessing users' inbox data |
| 1330 | instead of storing the data in inbox files. The @code{Emacs |
| 1331 | movemail} can work with POP if you compile it with the macro |
| 1332 | @code{MAIL_USE_POP} defined. (You can achieve that by specifying |
| 1333 | @samp{--with-pop} when you run @code{configure} during the |
| 1334 | installation of Emacs.) |
| 1335 | |
| 1336 | The Mailutils @code{movemail} by default supports POP, unless it was |
| 1337 | configured with @samp{--disable-pop} option. |
| 1338 | |
| 1339 | Both versions of @code{movemail} only work with POP3, not with older |
| 1340 | versions of POP. |
| 1341 | |
| 1342 | @cindex @env{MAILHOST} environment variable |
| 1343 | @cindex POP mailboxes |
| 1344 | No matter which flavor of @code{movemail} you use, you can specify |
| 1345 | POP inbox by using POP @dfn{URL} (@pxref{Movemail}). A POP |
| 1346 | @acronym{URL} is a ``file name'' of the form |
| 1347 | @samp{pop://@var{username}@@@var{hostname}}, where |
| 1348 | @var{hostname} is the host name or IP address of the remote mail |
| 1349 | server and @var{username} is the user name on that server. |
| 1350 | Additionally, you may specify the password in the mailbox @acronym{URL}: |
| 1351 | @samp{pop://@var{username}:@var{password}@@@var{hostname}}. In this |
| 1352 | case, @var{password} takes preference over the one set by |
| 1353 | @code{rmail-remote-password}. This is especially useful if you have |
| 1354 | several remote mailboxes with different passwords. |
| 1355 | |
| 1356 | For backward compatibility, Rmail also supports two alternative ways |
| 1357 | of specifying remote POP mailboxes. First, specifying an inbox name |
| 1358 | in the form @samp{po:@var{username}:@var{hostname}} is equivalent to |
| 1359 | @samp{pop://@var{username}@@@var{hostname}}. Alternatively, you may |
| 1360 | set a ``file name'' of @samp{po:@var{username}} in the inbox list of |
| 1361 | an Rmail file. @code{movemail} will handle such a name by opening a |
| 1362 | connection to the POP server. In this case, the @env{MAILHOST} |
| 1363 | environment variable specifies the machine on which to look for the |
| 1364 | POP server. |
| 1365 | |
| 1366 | @cindex IMAP mailboxes |
| 1367 | Another method for accessing remote mailboxes is IMAP. This method is |
| 1368 | supported only by the Mailutils @code{movemail}. To specify an IMAP |
| 1369 | mailbox in the inbox list, use the following mailbox @acronym{URL}: |
| 1370 | @samp{imap://@var{username}[:@var{password}]@@@var{hostname}}. The |
| 1371 | @var{password} part is optional, as described above. |
| 1372 | |
| 1373 | @vindex rmail-remote-password |
| 1374 | @vindex rmail-remote-password-required |
| 1375 | @vindex rmail-pop-password |
| 1376 | @vindex rmail-pop-password-required |
| 1377 | Accessing a remote mailbox may require a password. Rmail uses the |
| 1378 | following algorithm to retrieve it: |
| 1379 | |
| 1380 | @enumerate |
| 1381 | @item |
| 1382 | If the @var{password} is present in mailbox URL (see above), it is |
| 1383 | used. |
| 1384 | @item |
| 1385 | If the variable @code{rmail-remote-password} is non-@code{nil}, its |
| 1386 | value is used. |
| 1387 | @item |
| 1388 | Otherwise, if @code{rmail-remote-password-required} is non-@code{nil}, |
| 1389 | then Rmail will ask you for the password to use. |
| 1390 | @item |
| 1391 | Otherwise, Rmail assumes no password is required. |
| 1392 | @end enumerate |
| 1393 | |
| 1394 | For compatibility with previous versions, the variables |
| 1395 | @code{rmail-pop-password} and @code{rmail-pop-password-required} may |
| 1396 | be used instead of @code{rmail-remote-password} and |
| 1397 | @code{rmail-remote-password-required}. |
| 1398 | |
| 1399 | @vindex rmail-movemail-flags |
| 1400 | If you need to pass additional command-line flags to @code{movemail}, |
| 1401 | set the variable @code{rmail-movemail-flags} a list of the flags you |
| 1402 | wish to use. Do not use this variable to pass the @samp{-p} flag to |
| 1403 | preserve your inbox contents; use @code{rmail-preserve-inbox} instead. |
| 1404 | |
| 1405 | @cindex Kerberos POP authentication |
| 1406 | The @code{movemail} program installed at your site may support |
| 1407 | Kerberos authentication. If it is |
| 1408 | supported, it is used by default whenever you attempt to retrieve |
| 1409 | POP mail when @code{rmail-pop-password} and |
| 1410 | @code{rmail-pop-password-required} are unset. |
| 1411 | |
| 1412 | @cindex reverse order in POP inboxes |
| 1413 | Some POP servers store messages in reverse order. If your server does |
| 1414 | this, and you would rather read your mail in the order in which it was |
| 1415 | received, you can tell @code{movemail} to reverse the order of |
| 1416 | downloaded messages by adding the @samp{-r} flag to |
| 1417 | @code{rmail-movemail-flags}. |
| 1418 | |
| 1419 | @cindex TLS encryption (Rmail) |
| 1420 | Mailutils @code{movemail} supports TLS encryption. If you wish to |
| 1421 | use it, add the @samp{--tls} flag to @code{rmail-movemail-flags}. |
| 1422 | |
| 1423 | @node Other Mailbox Formats |
| 1424 | @section Retrieving Mail from Local Mailboxes in Various Formats |
| 1425 | |
| 1426 | If your incoming mail is stored on a local machine in a format other |
| 1427 | than UNIX mailbox, you will need the Mailutils @code{movemail} to |
| 1428 | retrieve it. @xref{Movemail}, for the detailed description of |
| 1429 | @code{movemail} versions. For example, to access mail from a inbox in |
| 1430 | @code{maildir} format located in @file{/var/spool/mail/in}, you would |
| 1431 | include the following in the Rmail inbox list: |
| 1432 | |
| 1433 | @smallexample |
| 1434 | maildir://var/spool/mail/in |
| 1435 | @end smallexample |
| 1436 | |
| 1437 | @ignore |
| 1438 | arch-tag: 034965f6-38df-47a2-a9f1-b8bc8ab37e23 |
| 1439 | @end ignore |