Sync usage with man page.
[netbsd-mini2440.git] / usr.bin / mail / mail.1
blob7aef9c2dd1a49b8b4acba171cfedcb35c5c5dd27
1 .\"     $NetBSD: mail.1,v 1.55 2009/03/23 17:02:06 joerg Exp $
2 .\"
3 .\" Copyright (c) 1980, 1990, 1993
4 .\"     The Regents of the University of California.  All rights reserved.
5 .\"
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
8 .\" are met:
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in the
13 .\"    documentation and/or other materials provided with the distribution.
14 .\" 3. Neither the name of the University nor the names of its contributors
15 .\"    may be used to endorse or promote products derived from this software
16 .\"    without specific prior written permission.
17 .\"
18 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 .\" SUCH DAMAGE.
29 .\"
30 .\"     @(#)mail.1      8.8 (Berkeley) 4/28/95
31 .\"
32 .Dd February 18, 2009
33 .Dt MAIL 1
34 .Os
35 .Sh NAME
36 .Nm mail ,
37 .Nm mailx ,
38 .Nm Mail
39 .Nd send and receive mail
40 .Sh SYNOPSIS
41 .Nm
42 .Op Fl EIinv
43 .Op Fl a Ar file
44 .Op Fl b Ar bcc-addr
45 .Op Fl c Ar cc-addr
46 .Op Fl r Ar rcfile
47 .Op Fl s Ar subject
48 .Ar to-addr ...
49 .Op - Ar sendmail-flags
50 .Nm
51 .Op Fl EIiNnv
52 .Op Fl H Ns Op colon-modifier
53 .Fl f
54 .Op Ar name
55 .Nm
56 .Op Fl EIiNnv
57 .Op Fl H Ns Op colon-modifier
58 .Op Fl u Ar user
59 .Sh DESCRIPTION
60 .Nm
61 is an intelligent mail processing system, which has
62 a command syntax reminiscent of
63 .Xr \&ed 1
64 with lines replaced by messages.
65 .Pp
66 .Bl -tag -width flag
67 .It Fl a
68 Attach
69 .Ar file
70 to the message.
71 .It Fl b
72 Send blind carbon copies to
73 .Ar list .
74 List should be a comma-separated list of names.
75 .It Fl c
76 Send carbon copies to
77 .Ar list
78 of users.
79 .It Fl E
80 Don't send messages with an empty body.
81 This is useful for piping errors from cron scripts.
82 .It Fl f
83 Read in the contents of your
84 .Ar mbox
85 (or the specified file)
86 for processing; when you
87 .Ic quit ,
88 .Nm
89 writes undeleted messages back to this file.
90 .It Fl H
91 Print the header summaries and exit.
92 The optional colon-modifier string must begin with a
93 .Ql \&:
94 and be followed by one or more of the characters described in the
95 .Sx Specifying messages
96 section below.
97 E.g.,
98 .Do
99 .Nm
100 .Fl H Ns :n
102 will display just new message headers.
103 .It Fl I
104 Forces mail to run in interactive mode even when
105 input isn't a terminal.
106 In particular, the
107 .Ic \&~
108 special
109 character when sending mail is only active in interactive mode.
110 .It Fl i
111 Ignore tty interrupt signals.
112 This is particularly useful when using
114 on noisy phone lines.
115 .It Fl N
116 Inhibits the initial display of message headers
117 when reading mail or editing a mail folder.
118 .It Fl n
119 Inhibits reading
120 .Pa /etc/mail.rc
121 upon startup.
122 .It Fl r
123 Specify an alternate user rcfile to load.
124 This overrides the value specified in the environment variable
125 .Ev MAILRC
126 which in turn overrides the default
127 .Pa ~/.mailrc
128 file.
129 .It Fl s
130 Specify subject on command line
131 (only the first argument after the
132 .Fl s
133 flag is used as a subject; be careful to quote subjects
134 containing spaces.)
135 .It Fl u
136 Is equivalent to:
138 .Dl mail -f /var/mail/user
139 .It Fl v
140 Verbose mode.
141 The details of delivery are displayed on the user's terminal.
143 .Ss Sending mail
144 To send a message to one or more people,
146 can be invoked with arguments which are the names of people to
147 whom the mail will be sent.
148 You are then expected to type in your message, followed by a
149 .Ql control-D
150 at the beginning of a line.
152 Any flags following the list of recipients, will be passed, together
153 with their arguments, directly to
154 .Xr sendmail 1 .
155 For example to change your
156 .Dv From
157 address to
158 .Dv somebody@somewhere.net
159 you can specify:
161 .Dl mail recipient -f somebody@somewhere.net
163 To prevent multiple copies of a message being sent to the same
164 address, duplicate addresses (after alias expansion) are removed from
166 .Ar bcc-addr ,
167 .Ar cc-addr ,
169 .Ar to-addr
170 lists.
171 In addition, addresses on the
172 .Ar cc-addr
174 .Ar to-addr
175 lists are removed if they occur on the
176 .Ar bcc-addr
177 list and addresses on the
178 .Ar cc-addr
179 list are removed if they occur on the
180 .Ar to-addr
181 list.
182 If the
183 .Ar to-addr
184 list is empty after these deletions, most systems will insert the line
185 .Dq To: undisclosed recipients:; .
187 The section below
188 .Sx Replying to or originating mail ,
189 describes some features of
191 available to help you compose your letter.
192 .Ss Reading mail
193 In normal usage
195 is given no arguments and checks your mail out of the post office,
196 then prints out a one line header of each message found.
197 The current message is initially the first message (numbered 1)
198 and can be printed using the
199 .Ic print
200 command (which can be abbreviated
201 .Ic p ) .
202 You can move among the messages much as you move between lines in
203 .Xr \&ed 1 ,
204 with the commands
205 .Ic \&+
207 .Ic \&\-
208 moving backwards and forwards, and simple numbers.
209 .Ss Disposing of mail
210 After examining a message you can
211 .Ic delete
212 .Pq Ic d
213 the message or
214 .Ic reply
215 .Pq Ic r
216 to it.
217 Deletion causes the
219 program to forget about the message.
220 This is not irreversible; the message can be
221 .Ic undeleted
222 .Pq Ic u
223 by giving its number, or the
225 session can be aborted by giving the
226 .Ic exit
227 .Pq Ic x
228 command.
229 Deleted messages will, however, usually disappear never to be seen again.
230 .Ss Specifying messages
231 Many commands (e.g.,
232 .Ic delete ,
233 .Ic from ,
235 .Ic print )
236 accept a list of messages as an argument.
237 Messages may be specified by their message number, by a range of
238 messages, or by a pattern string matching certain fields in the header
239 as described below.
240 These message
241 .Dq specs
242 may be combined by the usual binary boolean operations
243 .Ql \*[Am] ,
244 .Ql \&| ,
246 .Ql \&^ ,
247 which denote, respectively, a logical
248 .Dq and ,
249 .Dq or ,
251 .Dq xor .
252 Logical expressions may be grouped with parentheses
253 .Ql \&(
255 .Ql \&)
257 negated with
258 .Ql \&! .
259 If the binary operator is missing between two message specs, it is
260 assumed to be a
261 .Ql \&| .
262 This is for simplicity, backwards compatibility, and also to to
263 facilitate using the
264 .Ql \&|
265 symbol to denote a pipe.
266 (See
267 .Ar enable-pipes . )
269 Besides the obvious (base10) message numbers, the characters
270 .Ql \&^ ,
271 .Ql \&- ,
272 .Ql \&. ,
273 .Ql \&+ ,
275 .Ql \&$
276 denote, respectively, the first message, the message before the
277 .Dq dot
278 .Pq the current message ,
280 .Dq dot
281 message, the message following the
282 .Dq dot ,
283 and the last message.
286 .Dq message range
287 consists of two message numbers separated by a
288 .Ql \&- .
290 .Ql \&*
291 denotes all messages and is equivalent to
292 .Ql ^-$ .
294 A pattern is a string (not beginning with any of the above special
295 characters).
296 If it does not begin with a
297 .Ql \&/ ,
298 it is compared with the senders address.
299 If it begins with a
300 .Ql \&/ ,
302 .Ar searchheaders
303 is not defined, the remainder of the string is compared with the
304 subject field.
305 (See
306 .Ar searchheaders
307 for searching other header fields or the message body.)
309 .Ar regex-search
310 is not defined, then the comparison is a simple case insensitive
311 substring match.
312 (See
313 .Ar regex-search
314 for regular expression matches.)
316 A list of messages may be restricted by a
317 .Dq colon-modifier
318 string, i.e., a
319 .Ql \&:
320 followed by one or more of the characters:
321 .Bd -literal -offset indent
322 d       deleted
323 e       edited
324 m       mboxed
325 n       new
326 o       old
327 p       preserved
328 r       read
329 s       saved
330 t       tagged
331 u       unread and not new
332 !       invert the meaning of the colon-modifiers
335 If there are no address specifications other than colon-modifiers,
336 the colon-modifiers apply to all messages.
337 Thus
338 .Dq Li from netbsd :n
339 would display the headers of all new messages with
340 .Ql netbsd
341 in the sender's address, while
342 .Dq Li from :!r
344 .Dq Li from :nu
345 would both display all new and unread messages.
346 Multiple colon-modifiers may be specified and a single
347 .Ql \&:
348 with no letters following indicates the colon-modifier from the
349 preceding command.
351 For example:
352 .Bd -literal -offset indent
353 from 1 12 3-5
356 would display the headers from messages 1, 3, 4, 5, and 12.
357 .Bd -literal -offset indent
358 from anon \*[Am] ( /foo | /bar )
361 would display all headers that had
362 .Ql anon
363 in the sender's address and either
364 .Ql foo
366 .Ql bar
367 in the subject line.
369 Generally, commands cannot select messages that are not displayed,
370 such as deleted or hidden messages, the exception being the
371 .Ic undelete
372 command.
373 .Ss Replying to or originating mail
374 You can use the
375 .Ic reply
376 command to set up a response to a message, sending it back to the
377 person who it was from.
378 Text you then type in, up to an end-of-file,
379 defines the contents of the message.
380 While you are composing a message,
382 treats lines beginning with the character
383 .Ic \&~
384 specially.
385 For instance, typing
386 .Ic \&~m
387 (alone on a line) will place a copy
388 of the current message into the response right shifting it by a tab stop
389 (see
390 .Em indentprefix
391 variable, below).
392 Other escapes will set up subject fields, add and delete recipients
393 to the message, and allow you to escape to an editor to revise the
394 message or to a shell to run some commands.
395 (These options are given in the summary below.)
396 .Ss Ending a mail processing session
397 You can end a
399 session with the
400 .Ic quit
401 .Pq Ic q
402 command.
403 Messages which have been examined go to your
404 .Ar mbox
405 file unless they have been deleted in which case they are discarded.
406 Unexamined messages go back to the post office.
407 (See the
408 .Fl f
409 option above).
410 .Ss Personal and system wide distribution lists
411 It is also possible to create a personal distribution lists so that,
412 for instance, you can send mail to
413 .Dq Li cohorts
414 and have it go
415 to a group of people.
416 Such lists can be defined by placing a line like
418 .Dl alias cohorts bill ozalp jkf mark kridle@ucbcory
420 in the file
421 .Pa \&.mailrc
422 in your home directory.
423 The current list of such aliases can be displayed with the
424 .Ic alias
425 command in
426 .Nm .
427 System wide distribution lists can be created by editing
428 .Pa /etc/mail/aliases ,
430 .Xr aliases 5
432 .Xr sendmail 1 ;
433 these are kept in a different syntax.
434 In mail you send, personal aliases will be expanded in mail sent
435 to others so that they will be able to
436 .Ic reply
437 to the recipients.
438 System wide
439 .Ic aliases
440 are not expanded when the mail is sent,
441 but any reply returned to the machine will have the system wide
442 alias expanded as all mail goes through
443 .Xr sendmail 1 .
444 .Ss Network mail (ARPA, UUCP, Berknet)
446 .Xr mailaddr 7
447 for a description of network addresses.
450 has a number of options which can be set in the
451 .Pa .mailrc
452 file to alter its behavior; thus
453 .Dq Li set askcc
454 enables the
455 .Ar askcc
456 feature.
457 (These options are summarized below.)
458 .Sh SUMMARY
459 (Adapted from the
460 .Dq Mail Reference Manual )
462 Each command is typed on a line by itself, and may take arguments
463 following the command word.
464 The command need not be typed in its
465 entirety \- the first command which matches the typed prefix is used.
466 For commands which take message lists as arguments, if no message
467 list is given, then the next message forward which satisfies the
468 command's requirements is used.
469 If there are no messages forward of the current message, the search
470 proceeds backwards, and if there are no good messages at all,
472 types
473 .Dq Li \&No applicable messages
474 and aborts the command.
475 .Bl -tag -width delete
476 .It Ic \&!
477 Executes the shell
478 (see
479 .Xr sh 1
481 .Xr csh 1 )
482 command which follows.
483 .It Ic \&\-
484 Print out the preceding message.
485 If given a numeric
486 argument
487 .Ar n ,
488 goes to the
489 .Ar n Ap th
490 previous message and prints it.
491 .It Ic \&=
492 With no argument, it displays the current message number.
493 Otherwise, set the current message number to its first argument.
494 .It Ic \&?
495 Prints a brief summary of commands.
496 .It Ic \&|
497 Pipe the current message body through the shell
498 (see
499 .Xr sh 1
501 .Xr csh 1 )
502 command which follows.
503 .It Ic Detach
504 Like
505 .Ic detach
506 but also saves MIME parts that don't have a filename associated with
507 them.
508 For the unnamed parts, a filename is suggested containing the message
509 and part numbers, and the subtype.
510 .It Ic Header
511 .Pq Ic H
512 Specify or show additional header fields.
513 This is intended for adding extra header fields like
514 .Dq Reply-To:
516 .Dq X-Organization:
517 to the header.
518 For example:
519 .Bd -literal -offset 0
520   Header X-Mailer: NetBSD mail(1) 9.1
523 would add the
524 .Dq X-Mailer: NetBSD mail(1) 9.1
525 line to the message header.
526 Without any arguments, the extra header fields are displayed.
527 With only a header name (including the
528 .Sq \&: ) ,
529 it will delete all extra header fields with that name.
530 Note: Although some syntax checking is done on the header line, care
531 should be taken to ensure that it complies with RFC 2821 and 2822.
532 Also, the extra header lines are not currently displayed by the
533 .Ic \&~h
534 tilde command when sending mail (use
535 .Ic \&~:Header
536 to see them).
537 .It Ic More
538 .Pq Ic M
539 Like
540 .Ic more
541 but also prints out ignored header fields.
542 .It Ic Page
543 .Pq Ic \&Pa
544 A synonym for
545 .Ic More .
546 .It Ic Print
547 .Pq Ic P
548 Like
549 .Ic print
550 but also prints out ignored header fields.
551 See also
552 .Ic print ,
553 .Ic more ,
554 .Ic page ,
555 .Ic type ,
556 .Ic view ,
557 .Ic ignore ,
559 .Ic retain .
560 .It Ic Reply
561 .Pq Ic R
562 Reply to originator.
563 Does not reply to other recipients of the original message.
564 (See
565 .Ic reply . )
566 .It Ic Save
567 .Pq Ic S
568 Same as
569 .Ic save
570 except that all header fields are saved ignoring the
571 .Ic saveignore
573 .Ic saveretain
574 lists.
575 .It Ic Type
576 .Pq Ic T
577 Identical to the
578 .Ic Print
579 command.
580 .It Ic View
581 .Pq Ic V
582 Like
583 .Ic Print
584 but has the opposite MIME decoding behavior.
585 (See the
586 .Ar mime-decode-message
587 variable.)
588 .It Ic alias
589 .Pq Ic a
590 With no arguments, prints out all currently-defined aliases.
591 With one argument, prints out that alias.
592 With more than one argument, creates
593 a new alias or changes an old one.
594 .It Ic alternates
595 .Pq Ic alt
597 .Ic alternates
598 command is useful if you have accounts on several machines.
599 It can be used to inform
601 that the listed addresses are really you.
602 When you
603 .Ic reply
604 to messages,
606 will not send a copy of the message to any of the addresses
607 listed on the
608 .Ic alternates
609 list.
610 If the
611 .Ic alternates
612 command is given with no argument, the current set of alternative
613 names is displayed.
614 .It Ic bounce
615 Takes a list of messages and prompts for an address to bounce the
616 messages to.
617 If no message is specified, the current message is used.
618 All the original header fields are preserved except for the
619 .Ql Delivered-To ,
620 .Ql X-Original-To
622 .Ql Status
623 fields.
624 The new
625 .Ql To
626 field contains the bounce address(es) plus any addresses in the old
627 .Ql To
628 field minus the user's local address and any on the alternates list.
629 (See the
630 .Ic alternates
631 command.)
632 .It Ic chdir
633 .Pq Ic c
634 Changes the user's working directory to that specified, if given.
635 If no directory is given, then changes to the user's login directory.
636 .It Ic copy
637 .Pq Ic co
639 .Ic copy
640 command does the same thing that
641 .Ic save
642 does, except that it does not mark the messages it
643 is used on for deletion when you quit.
644 .It Ic deldups
645 Delete duplicate messages based on their
646 .Ql Message-Id
647 field, keeping the first one in the current sort order.
648 This can be useful with replies to a mailing list that are also CCed
649 to a subscriber.
650 (The same thing can also be accomplished with the threading and
651 tagging commands.)
652 .It Ic delete
653 .Pq Ic d
654 Takes a list of messages as an argument and marks them all as deleted.
655 Deleted messages will not be saved in
656 .Ar mbox ,
657 nor will they be available for most other commands.
658 .It Ic detach
659 Takes a message list followed by a target directory as arguments,
660 decodes each MIME part in the message list, and saves it in the target
661 directory.
662 If the message list is empty, use the current message.
663 If the directory is not specified, use the directory specified by
664 .Ar mime-detach-dir
665 variable and, if that is empty, default to the directory
667 was started in.
668 For each MIME part in the message list, the filename is displayed for
669 confirmation or changes.
670 If an empty name is entered, the part is skipped.
671 If the filename already exists, the user will be prompted before
672 overwriting it.
673 (See the
674 .Ar mime-detach-batch
676 .Ar mime-detach-overwrite
677 variables to change this behavior.)
678 Only MIME parts with an associated filename in the
679 .Ql Content-Type
681 .Ql Content-Disposition
682 fields are decoded.
683 (See
684 .Ic Detach
685 to detach all parts.)
686 The MIME extension hooks and character set conversion are ignored.
687 .It Ic dp
688 (also
689 .Ic dt )
690 Deletes the current message and prints the next message.
691 If there is no next message,
693 says
694 .Dq Li "at EOF" .
695 .It Ic down
696 Go down one level in the thread.
697 If given a message number, it descends the thread below that message,
698 otherwise it descends from the current message (dot).
699 .It Ic edit
700 .Pq Ic e
701 Takes a list of messages and points the text editor at each one in
702 turn.
703 On return from the editor, the message is read back in.
704 .It Ic else
705 Switch the command execution condition set by the previous
706 .Ic if ,
707 .Ic ifdef ,
709 .Ic ifndef
710 command.
711 .It Ic endif
712 Terminate an
713 .Ic if ,
714 .Ic ifdef ,
716 .Ic ifndef
717 command.
718 .It Ic exit
719 .Po Ic ex
721 .Ic x
723 Effects an immediate return to the Shell without
724 modifying the user's system mailbox, his
725 .Ar mbox
726 file, or his edit file in
727 .Fl f .
728 .It Ic expose
729 Expose the thread structure so all messages appear in header listings.
730 (See
731 .Ar hide
732 for the inverse.)
733 The default header prompt will indent each header line one space for
734 each level in the threading.
736 .Dq Li "%?* ?"
737 format string does this.
738 .It Ic file
739 .Pq Ic fi
740 The same as
741 .Ic folder .
742 .It Ic flatten
743 For each message number in the argument list, or the current thread if
744 no message list is given, promote all exposed children to the same
745 thread level.
746 .It Ic folders
747 List the names of the folders in your folder directory.
748 .It Ic folder
749 .Pq Ic fo
751 .Ic folder
752 command switches to a new mail file or folder.
753 With no arguments, it tells you which file you are currently reading.
754 If you give it an argument, it will write out changes (such
755 as deletions) you have made in the current file and read in
756 the new file.
757 Some special conventions are recognized for the name.
758 .Ql #
759 means the previous file,
760 .Ql %
761 means your system mailbox,
762 .Ql %user
763 means user's system mailbox,
764 .Ql \*[Am]
765 means your
766 .Ar mbox
767 file, and
768 .Ql +file
769 means a file in your folder directory.
770 .It Ic forward
771 Takes a list of messages and prompts for an address (or addresses) to
772 forward each message to.
773 If no message list is specified, the current message is used.
774 The mail editor is run for each message allowing the user to enter a
775 message that will precede the forward message.
776 The message is sent as a multipart/mixed MIME encoded message.
777 All header fields except the
778 .Ql Status
779 field are included.
780 .It Ic from
781 .Pq Ic f
782 Takes a list of messages and prints their message headers.
783 .It Ic headers
784 .Pq Ic h
785 Lists the current range of headers, which is an 18\-message group.
786 If a
787 .Ql \&+
788 argument is given, then the next 18\-message group is printed, and
789 if a
790 .Ql \&\-
791 argument is given, the previous 18\-message group is printed.
792 .It Ic help
793 A synonym for
794 .Ic \&?
795 .It Ic hide
796 Collapse the threads so that only the head of each thread is shown,
797 hiding the subthreads.
798 (See
799 .Ar expose
800 for the inverse.)
801 .It Ic hidetags
802 Restrict the display to untagged messages.
803 In threaded mode, subthreads that connect directly to an untagged
804 message are also displayed, including tagged messages in the
805 connecting chain.
806 .It Ic hidethreads
807 The same as
808 .Ar hide .
809 .It Ic hold
810 .Po Ic ho ,
811 also
812 .Ic preserve
814 Takes a message list and marks each message therein to be saved in
815 the user's system mailbox instead of in
816 .Ar mbox .
817 Does not override the
818 .Ic delete
819 command.
820 .It Ic if
821 Execute commands that follow depending on the operating mode.
822 The current supported modes are
823 .Ql receiving ,
824 .Ql sending ,
826 .Ql headersonly .
827 For example, one use might be something like:
828 .Bd -literal -offset 0
829 if headersonly
830   set header-format="%P%Q%3i %-21.20f %m/%d %R %3K \\"%q\\""
831 else
832   set header-format="%P%Q%?\*[Am] ?%3i %-21.20f %a %b %e %R %3K/%-5O \\"%q\\""
833 endif
835 .It Ic ifdef
836 Execute commands that follow if the specified variable is defined.
837 Note: This includes environment variables.
838 .It Ic ifndef
839 Execute commands that follow if the specified variable is not
840 defined.
841 .It Ic ignore
842 Add the list of header fields named to the
843 .Ar ignored list .
844 Header fields in the ignore list are not printed
845 on your terminal when you print a message.
846 This command is very handy for suppression of certain machine-generated
847 header fields.
849 .Ic Type
851 .Ic Print
852 commands can be used to print a message in its entirety, including
853 ignored fields.
855 .Ic ignore
856 is executed with no arguments, it lists the current set of
857 ignored fields.
858 .It Ic inc
859 Incorporate any new messages that have arrived while mail
860 is being read.
861 The new messages are added to the end of the message list,
862 and the current message is reset to be the first new mail message.
863 This does not renumber the existing message list, nor does
864 it cause any changes made so far to be saved.
865 .It Ic invtags
866 Invert the tags on a list of messages or the current message if none
867 are given.
868 Note: this will not affect any currently deleted messages.
869 .It Ic mail
870 .Pq Ic m
871 Takes as argument login names and distribution group names and sends
872 mail to those people.
873 .It Ic mbox
874 Indicate that a list of messages be sent to
875 .Ic mbox
876 in your home directory when you quit.
877 This is the default action for messages if you do
878 .Em not
879 have the
880 .Ic hold
881 option set.
882 .It Ic mkread
883 .Pq Ic mk
884 Takes a message list and marks each message as
885 having been read.
886 .It Ic more
887 .Pq Ic \&mo
888 Takes a message list and invokes the pager on that list.
889 .It Ic next
890 .Pf ( Ic n ,
891 like
892 .Ic \&+
894 .Tn CR )
895 Goes to the next message in sequence and types it.
896 With an argument list, types the next matching message.
897 .It Ic page
898 .Pq Ic pa
899 A synonym for
900 .Ic more .
901 .It Ic preserve
902 .Pq Ic pre
903 A synonym for
904 .Ic hold .
905 .It Ic print
906 .Pq Ic p
907 Takes a message list and types out each message on the user's terminal.
908 .It Ic quit
909 .Pq Ic q
910 Terminates the session, saving all undeleted, unsaved messages in
911 the user's
912 .Ar mbox
913 file in his login directory, preserving all messages marked with
914 .Ic hold
916 .Ic preserve
917 or never referenced in his system mailbox, and removing all other
918 messages from his system mailbox.
919 If new mail has arrived during the session, the message
920 .Dq Li "You have new mail"
921 is given.
922 If given while editing a mailbox file with the
923 .Fl f
924 flag, then the edit file is rewritten.
925 A return to the Shell is effected, unless the rewrite of edit file
926 fails, in which case the user can escape with the
927 .Ic exit
928 command.
929 .It Ic reply
930 .Pq Ic r
931 Takes a message list and sends mail to the sender and all
932 recipients of the specified message.
933 The default message must not be deleted.
934 (See the
935 .Ic Reply
936 command and the
937 .Ar Replyall
938 variable.)
939 .It Ic respond
940 A synonym for
941 .Ic reply .
942 .It Ic retain
943 Add the list of header fields named to the
944 .Ar retained list .
945 Only the header fields in the retained list
946 are shown on your terminal when you print a message.
947 All other header fields are suppressed.
949 .Ic Type
951 .Ic Print
952 commands can be used to print a message in its entirety.
954 .Ic retain
955 is executed with no arguments, it lists the current set of
956 retained fields.
957 .Ic Retain
958 overrides
959 .Ic save .
960 .It Ic reverse
961 Reverse the order of the messages in at the current thread level.
962 This is completely equivalent to
963 .Dq Li sort \&! .
964 .It Ic save
965 .Pq Ic s
966 Takes a message list and a filename and appends each message in
967 turn to the end of the file.
968 The filename in quotes, followed by the line
969 count and character count is echoed on the user's terminal.
970 .It Ic set
971 .Pq Ic se
972 With no arguments, prints all variable values.
973 Otherwise, sets option.
974 Arguments are of the form
975 .Ar option=value
976 (no space before or after =) or
977 .Ar option .
978 Quotation marks may be placed around any part of the assignment
979 statement to quote blanks or tabs, i.e.
980 .Dq Li "set indentprefix=\*q-\*[Gt]\*q"
981 Inside single quotes everything is parsed literally, including
982 .Sq \e
983 escaped characters.
984 Inside double quotes
985 .Sq \e
986 character escapes are interpreted.
987 This is an extension as POSIX specifies that
988 .Sq \e
989 should be left uninterpreted for both single and double quoted strings.
990 .It Ic saveignore
991 .Ic Saveignore
992 is to
993 .Ic save
994 what
995 .Ic ignore
996 is to
997 .Ic print
999 .Ic type .
1000 Header fields thus marked are filtered out when
1001 saving a message by
1002 .Ic save
1003 or when automatically saving to
1004 .Ar mbox .
1005 .\" .pl +1
1006 .It Ic saveretain
1007 .Ic Saveretain
1008 is to
1009 .Ic save
1010 what
1011 .Ic retain
1012 is to
1013 .Ic print
1015 .Ic type .
1016 Header fields thus marked are the only ones saved
1017 with a message when saving by
1018 .Ic save
1019 or when automatically saving to
1020 .Ar mbox .
1021 .Ic Saveretain
1022 overrides
1023 .Ic saveignore .
1024 .It Ic shell
1025 .Pq Ic sh
1026 Invokes an interactive version of the shell.
1027 .It Ic show
1028 .Pq Ic sho
1029 Takes a list of variables and prints out their values in the form
1030 .Ar option=value .
1031 If the list is empty, all variable values are shown.
1032 .It Ic showtags
1033 Display all current messages, tagged or not, unless they are in a
1034 hidden thread.
1035 .It Ic showthreads
1036 The same as
1037 .Ar expose .
1038 .It Ic size
1039 Takes a message list and prints out the size in characters of each
1040 message.
1041 .It Ic smopts
1042 Takes an
1043 .Dq address-spec
1044 followed by the sendmail flags that should be used when sending mail
1045 to an address that matches that
1046 .Dq address-spec .
1047 If no sendmail flags are specified, then list the sendmail flags in
1048 effect for the
1049 .Dq address-spec .
1050 If the
1051 .Dq address-spec
1052 is also omitted, then list all
1053 .Ic smopts
1054 settings.
1056 .Dq address-spec
1057 may be an alias, address, domain (beginning with a
1058 .Ql \&@ ) ,
1059 or subdomain
1060 (beginning with a
1061 .Ql \&. ) .
1062 If mail is sent to multiple users, the sendmail flags are
1063 used only if the flags are the same for each recipients.
1065 .Ar smopts-verify
1066 is set, then you will be asked to verify the sendmail flags (if there
1067 are any) before the mail is sent.
1068 Address matching is case insensitive and done from most specific to
1069 least.
1071 For example if
1072 you have:
1073 .Bd -literal -offset indent
1074 smopts mylist -F "List Maintainer"
1075 smopts @NetBSD.org -f anon@somewhere.net -F "Anon Ymous"
1076 smopts friend@NetBSD.org ""
1079 then mail sent to any of the addresses that the
1080 .Ql mylist
1081 alias expands to would have the sender's name set to
1082 .Ql List Maintainer .
1083 Mail sent to anyone at NetBSD.org other than
1084 .Ql friend@NetBSD.org
1085 would look like it was sent from
1086 .Ql anon@somewhere.net
1088 .Ql Anon Ymous .
1089 Mail sent to
1090 .Ql friend@NetBSD.org
1091 would not have any sendmail flags set (unless they are set by the
1092 .Ic \&~h
1093 escape).
1094 .It Ic sort
1095 With no argument,
1096 .Ic sort
1097 does nothing.
1098 Otherwise it will sort based on the header field name given as an
1099 argument.
1100 A few names are special:
1101 .Bd -literal -offset indent
1102 blines          sort based on the number of body lines.
1103 hlines          sort on the number of header lines.
1104 tlines          sort on the total number of lines.
1105 size            sort on the message size
1106 sday            sent day (ignores the hour/min/sec)
1107 rday            received day (ignores the hour/min/sec)
1108 sdate           sent date
1109 rdate           received date
1110 subject         sort on the subject, ignoring "Re:" prefixes.
1111 from            sort on the sender's address.
1114 The check for these special names is case sensitive while the header
1115 field name comparisons are case insensitive, so changing the case on
1116 any of these special names will sort based on the header field
1117 ignoring the special keyword.
1119 There are also three modifiers which may precede the argument:
1120 .Bd -literal -offset indent
1121 \&!     reverse the sorting order.
1122 \&^     case insensitive sorting.
1123 \&-     skin the field (removing RFC 822 comments and
1124         keep the address).
1127 The same keywords and modifiers also apply to threading.
1128 (See the
1129 .Ic thread
1130 command.)
1132 Note:
1133 .Ic sort
1134 has no effect on the threading, sorting only on the heads
1135 of the threads if threads exist.
1137 .It Ic source
1139 .Ic source
1140 command reads commands from a file.
1141 .It Ic tag
1142 Tag a list of messages or the current message if none are given.
1143 In hidden thread mode, the entire thread will be tagged, i.e.,
1144 .Ic tag
1145 is recursive
1146 .It Ic tagbelow
1147 Tag all messages of the current thread below the level of the
1148 current message (dot) or the supplied message number if given.
1149 .It Ic thread
1150 By default this threads the current message list based on the
1151 .Ql In-Reply-To
1153 .Ql References
1154 header fields (intended for this purpose by RFC 2822).
1155 If given an argument, it will thread on that header field name
1156 instead.
1157 The same field keywords and modifiers recognized by the sort command
1158 are also recognized here.
1159 Display of the threads is controlled by the
1160 .Ic hide
1162 .Ic expose
1163 commands; navigation of threads is done with the
1164 .Ic down ,
1165 .Ic up ,
1167 .Ic tset
1168 commands.
1171 .Ar recursive-commands
1172 is defined, many commands (e.g.,
1173 .Ic print )
1174 act on the entire thread (when it is hidden), otherwise they act on
1175 just the current message.
1177 Note: the
1178 .Ql In-Reply-To
1180 .Ql Reference
1181 header fields are necessary to do threading correctly.
1182 This version of
1184 now emits these header fields when replying.
1185 .It Ic top
1186 Takes a message list and prints the top few lines of each.
1187 The number of lines printed is controlled by the variable
1188 .Ic toplines
1189 and defaults to five.
1190 .It Ic tset
1191 Set the current thread (thread set) so that the supplied message
1192 number (or the current message if no argument is given) is at the top
1193 level of the current thread.
1194 .It Ic type
1195 .Pq Ic t
1196 A synonym for
1197 .Ic print .
1198 .It Ic unalias
1199 Takes a list of names defined by
1200 .Ic alias
1201 commands and discards the remembered groups of users.
1202 The group names no longer have any significance.
1203 .It Ic undelete
1204 .Pq Ic u
1205 Takes a message list and marks each message as
1206 .Ic not
1207 being deleted.
1208 .It Ic unread
1209 .Pq Ic unr
1210 Takes a message list and marks each message as
1211 .Em not
1212 having been read.
1213 .It Ic unset
1214 Takes a list of option names and discards their remembered values;
1215 the inverse of
1216 .Ic set .
1217 .It Ic unsmopts
1218 Takes a list of
1219 .Dq address-specs
1220 defined by
1221 .Ic smopts
1222 commands and discards them from the smopts database.
1223 .It Ic untag
1224 Untag a list of messages or the current message if none are given.
1225 Like the
1226 .Ic tag
1227 command,
1228 .Ic untag
1229 is recursive on hidden threads.
1230 .It Ic unthread
1231 Undo all threading and sorting, restoring the original display order,
1232 i.e., the order in the mail file.
1233 .It Ic up
1234 Go up one level in the thread.
1235 This also takes an optional (positive) argument to go up multiple
1236 levels in the thread.
1237 .It Ic view
1238 .Pq Ic vie
1239 Like
1240 .Ic print
1241 but has the opposite MIME decoding behavior.
1242 (See the
1243 .Ar mime-decode-message
1244 variable.)
1245 .It Ic visual
1246 .Pq Ic v
1247 Takes a message list and invokes the display editor on each message.
1248 .It Ic write
1249 .Pq Ic w
1250 Similar to
1251 .Ic save ,
1252 except that
1253 .Em only
1254 the message body
1255 .Em ( without
1256 the header) is saved.
1257 Extremely useful for such tasks as sending and receiving source
1258 program text over the message system.
1259 .It Ic xit
1260 .Pq Ic x
1261 A synonym for
1262 .Ic exit .
1263 .It Ic z
1265 presents message headers in windowfuls as described under the
1266 .Ic headers
1267 command.
1268 You can move
1269 .Nm Ns Ap s
1270 attention forward to the next window with the
1271 .Ic \&z
1272 command.
1273 Also, you can move to the previous window by using
1274 .Ic \&z\&\- .
1276 .Ss Tilde/Escapes
1277 Here is a summary of the tilde escapes, which are used when composing
1278 messages to perform special functions.
1279 Tilde escapes are only recognized at the beginning of lines.
1280 The name
1281 .Dq Em tilde\ escape
1282 is somewhat of a misnomer since the actual escape character can be set
1283 by the option
1284 .Ic escape .
1285 .Bl -tag -width Ds
1286 .It Ic \&~! Ns Ar command
1287 Execute the indicated shell command, then return to the message.
1288 .It Ic \&~@ Op Ar filelist
1289 Add the files in the white-space delimited
1290 .Ar filelist
1291 to the attachment list.
1293 .Ar filelist
1294 is omitted, edit the attachment list, possibly appending to it: For
1295 each file in the list the user is prompted to change its attachment
1296 data.
1297 Changing the filename to empty will delete it from the list.
1298 Upon reaching the end of the attachment list, the user is prompted for
1299 additional files to attach until an empty filename is given.
1300 Filenames containing white-space can only be added in this
1301 .Dq edit
1302 mode.
1303 .It Ic \&~a
1304 Inserts the autograph string from the sign= option into the message.
1305 .It Ic \&~A
1306 Inserts the autograph string from the Sign= option into the message.
1307 .It Ic \&~b Ns Ar name ...
1308 Add the given names to the list of carbon copy recipients but do not make
1309 the names visible in the Cc: line
1310 .Dq ( blind
1311 carbon copy).
1312 .It Ic \&~c Ns Ar name ...
1313 Add the given names to the list of carbon copy recipients.
1314 .It Ic \&~d
1315 Read the file
1316 .Dq Pa dead.letter
1317 from your home directory into the message.
1318 .It Ic \&~e
1319 Invoke the text editor on the message collected so far.
1320 After the editing session is finished, you may continue appending
1321 text to the message.
1322 .It Ic \&~f Ns Ar messages
1323 Read the named messages into the message being sent.
1324 If no messages are specified, read in the current message.
1325 Message headers currently being ignored (by the
1326 .Ic ignore
1328 .Ic retain
1329 command) are not included.
1330 .It Ic \&~
1331 Identical to
1332 .Ic \&~f ,
1333 except all message headers are included.
1334 .It Ic \&~h
1335 Edit the message header fields, and the options passed to sendmail (the
1336 .Li Smopts ) ,
1337 by typing each one in turn and allowing the user to append text to the
1338 end or modify the field by using the current terminal erase and kill
1339 characters.
1341 .Xr editline 3
1342 support is included, then that line editor is used.
1343 .It Ic \&~i Ns Ar string
1344 Inserts the value of the named option into the text of the message.
1345 .It Ic \&~m Ns Ar messages
1346 Read the named messages into the message being sent, indented by a
1347 tab or by the value of
1348 .Ar indentprefix .
1349 If no messages are specified, read the current message.
1350 Message headers currently being ignored (by the
1351 .Ic ignore
1353 .Ic retain
1354 command) are not included.
1355 .It Ic \&~M Ns Ar messages
1356 Identical to
1357 .Ic \&~m ,
1358 except all message headers are included.
1359 .It Ic \&~p
1360 Print out the message collected so far, prefaced by the message header
1361 fields.
1362 .It Ic \&~q
1363 Abort the message being sent, copying the message to
1364 .Dq Pa dead.letter
1365 in your home directory if
1366 .Ic save
1367 is set.
1368 .It Ic \&~x
1369 Exits as with \&~q, except the message is not saved in
1370 .Dq Pa dead.letter .
1371 .It Ic \&~r Ns Ar filename
1372 .It Ic \&~\*[Lt] Ns Ar filename
1373 Reads the named file into the message.
1374 If the argument begins with
1375 .Ql \&! ,
1376 the rest of the string is taken as an arbitrary system command and is
1377 executed, with the standard output inserted into the message.
1378 .It Ic \&~s Ns Ar string
1379 Cause the named string to become the current subject field.
1380 .It Ic \&~\&t Ns Ar name ...
1381 Add the given names to the direct recipient list.
1382 .It Ic \&~\&v
1383 Invoke an alternative editor (defined by the
1384 .Ev VISUAL
1385 option) on the message collected so far.
1386 Usually, the alternative editor will be a screen editor.
1387 After you quit the editor, you may resume appending
1388 text to the end of your message.
1389 .It Ic \&~w Ns Ar filename
1390 Write the message onto the named file.
1391 .It Ic \&~\&| Ns Ar command
1392 Pipe the message body through the command as a filter.
1393 If the command gives no output or terminates abnormally, retain the
1394 original text of the message.
1395 The command
1396 .Xr fmt 1
1397 is often used as
1398 .Ic command
1399 to rejustify the message.
1400 .It Ic \&~: Ns Ar mail-command
1401 Execute the given mail command.
1402 Not all commands, however, are allowed.
1403 .It Ic \&~~ Ns Ar string
1404 Insert the string of text in the message prefaced by a single ~.
1405 If you have changed the escape character, then you should double
1406 that character in order to send it.
1408 .Ss Mail Options
1409 Options are controlled via
1410 .Ic set
1412 .Ic unset
1413 commands.
1414 Options may be either binary, in which case it is only
1415 significant to see whether they are set or not; or string, in which
1416 case the actual value is of interest.
1417 The binary options include the following:
1418 .Bl -tag -width append
1419 .It Ar append
1420 Causes messages saved in
1421 .Ar mbox
1422 to be appended to the end rather than prepended.
1423 This should always be set (perhaps in
1424 .Pa /etc/mail.rc ) .
1425 .It Ar ask , Ar asksub
1426 Causes
1428 to prompt you for the subject of each message you send.
1429 If you respond with simply a newline, no subject field will be sent.
1430 .It Ar askcc
1431 Causes you to be prompted for additional carbon copy recipients at
1432 the end of each message.
1433 Responding with a newline indicates your
1434 satisfaction with the current list.
1435 .It Ar autoinc
1436 Causes new mail to be automatically incorporated when it arrives.
1437 Setting this is similar to issuing the
1438 .Ic inc
1439 command at each prompt, except that the current message is not
1440 reset when new mail arrives.
1441 .It Ar askbcc
1442 Causes you to be prompted for additional blind carbon copy recipients
1443 at the end of each message.
1444 Responding with a newline indicates your
1445 satisfaction with the current list.
1446 .It Ar autoprint
1447 Causes the
1448 .Ic delete
1449 command to behave like
1450 .Ic dp
1451 \- thus, after deleting a message, the next one will be typed
1452 automatically.
1453 .It Va crt
1455 .Va crt
1456 is set, then the
1457 .Ev PAGER
1458 will be used for the
1459 .Ic print ,
1460 .Ic Print ,
1461 .Ic type ,
1463 .Ic Type
1464 commands.
1465 Normally these commands do not invoke the pager.
1466 (See
1467 .Va page-also . )
1468 .It Ar debug
1469 Setting the binary option
1470 .Ar debug
1471 is the same as specifying
1472 .Fl d
1473 on the command line and causes
1475 to output all sorts of information useful for debugging
1476 .Nm .
1477 .It Ar dot
1478 The binary option
1479 .Ar dot
1480 causes
1482 to interpret a period alone on a line as the terminator
1483 of a message you are sending.
1484 .It Ar enable-pipes
1485 If defined, the output of most commands can be piped into a shell
1486 command or redirected to a file.
1487 The pipe/redirection is signaled by the first occurrence of a
1488 .Ql |
1490 .Ql \*[Gt]
1491 character that is not in a quoted string or in a parenthetical
1492 group.
1493 This character terminates the mail command line and the remaining
1494 string is passed to the shell.
1495 For example, assuming normal headers, something like
1496 .Bd -literal -offset indent
1497   from john@ | fgrep -i ' "Re:' | wc
1500 could be used to count how may replies were made by senders with
1501 .Ql john@
1502 in their address and
1503 .Bd -literal -offset indent
1504   from john@ \*[Gt]\*[Gt] /tmp/john
1507 would append all the headers from such senders to /tmp/john.
1509 Note: With piping enabled, you cannot use the
1510 .Ql \&|
1511 as a logical
1512 .Dq or
1513 operator outside of a parenthetical group.
1514 This should not be a problem as it is the default logical operator.
1515 (See the
1516 .Sx Specifying messages
1517 section.)
1518 .It Ar hold
1519 This option is used to hold messages in the system mailbox
1520 by default.
1521 .It Ar ignore
1522 Causes interrupt signals from your terminal to be ignored and echoed as
1523 @'s.
1524 .It Ar metoo
1525 Usually, when a group is expanded that contains the sender, the sender
1526 is removed from the expansion.
1527 Setting this option causes the sender to be included in the group.
1528 .It Ar mime-attach-list
1529 If set, the command line flag
1530 .Fl a
1531 will accept a whitespace delimited list of files.
1532 Otherwise, its argument is interpreted as a single filename.
1533 Warning: If enabled, care must be taken to properly quote files that
1534 contain whitespace, both from the shell and from this second expansion
1535 done by
1536 .Nm .
1537 .It Ar mime-decode-header
1538 If set, decode the headers along with the body when
1539 .Ar mime-decode-message
1540 is set.
1541 The header decode follows the same rules as the body (see
1542 .Ar mime-decode-message ) .
1543 .It Ar mime-decode-insert
1544 When inserting
1545 a message into the mail buffer
1546 .Po Ic \&~f
1548 .Ic \&~F
1549 .Pc ,
1550 the text inserted will be decoded according to the settings of the
1551 .Ar mime-decode-message
1553 .Ar mime-decode-header
1554 variables.
1555 .It Ar mime-decode-message
1556 If set, the
1557 .Ic More ,
1558 .Ic more ,
1559 .Ic Page ,
1560 .Ic page ,
1561 .Ic Print ,
1562 .Ic print ,
1563 .Ic Type ,
1565 .Ic type
1566 commands will display decoded the MIME messages.
1567 Otherwise, they display the undecoded message.
1568 Recall that the
1569 .Ic View
1571 .Ic view
1572 commands always have the opposite MIME decoding behavior from these
1573 commands.
1574 .It Ar mime-decode-quote
1575 When quoting
1576 a message into the mail buffer
1577 .Po Ic \&~m
1579 .Ic \&~M
1580 .Pc ,
1581 the text inserted will be decoded according to the settings of the
1582 .Ar mime-decode-message
1584 .Ar mime-decode-header
1585 variables.
1586 .It Ar mime-detach-batch
1587 If set, the detach command does not prompt for anything
1588 .Po unless
1589 .Ar mime-detach-overwrite
1590 is set to
1591 .Ql ask
1592 .Pc ,
1593 overwriting target files depending on the setting of
1594 .Ar mime-detach-overwrite .
1595 .It Ar noheader
1596 Setting the option
1597 .Ar noheader
1598 is the same as giving the
1599 .Fl N
1600 flag on the command line.
1601 .It Ar nosave
1602 Normally, when you abort a message with two
1603 .Tn RUBOUT
1604 (erase or delete)
1606 copies the partial letter to the file
1607 .Dq Pa dead.letter
1608 in your home directory.
1609 Setting the binary option
1610 .Ar nosave
1611 prevents this.
1612 .It Ar page-also
1613 A comma or whitespace delimited list of additional commands to page.
1614 The comparisons are case insensitive, so if
1615 .Ic view
1616 is in the list, both
1617 .Ic view
1619 .Ic View
1620 will page.
1621 .It Ar pager-off
1622 If set, disable the pager on all commands.
1623 .It Ar quiet
1624 Suppresses the printing of the version when first invoked.
1625 .It Ar recursive-commands
1626 When defined, and threading is in effect, the following commands
1627 operate on the entire thread (if it is
1628 .Dq hidden )
1629 rather than just the top displayed message of the thread:
1630 .Bd -literal -offset indent
1631 More Page Print Type View more page print type view
1633 Save copy save write
1634 Detach detach
1635 delete dp dt
1636 undelete
1637 hold preserve
1638 mbox mkread touch unread
1639 tag untag invtags
1642 If not defined, or if the threads are
1643 .Dq exposed ,
1644 commands behave exactly as they do in non-threaded mode, i.e., each
1645 operates on individual messages.
1646 .It Ar Replyall
1647 Reverses the sense of
1648 .Ic reply
1650 .Ic Reply
1651 commands.
1652 .It Ar searchheaders
1653 If this option is set, then a message-list specifier in the form
1654 .Dq /x:y
1655 will expand to all messages containing the substring
1656 .Dq y
1657 in the header field
1658 .Dq x .
1659 The string search is case insensitive.
1661 .Dq x
1662 is omitted, it will default to the
1663 .Ql Subject
1664 header field.
1666 .Dq y
1667 is omitted, only those messages that contain the field
1668 .Dq x
1669 will be matched.
1670 The three forms
1671 .Dq /from:y ,
1672 .Dq /to:y ,
1674 .Dq /body:y
1675 are special.
1676 The first will match all messages which contain the substring
1677 .Dq y
1678 in the headline (which is added locally at receipt time and begins
1679 with
1680 .Dq From \& ) .
1681 The second will match all messages containing the substring
1682 .Dq y
1683 in the
1684 .Ql To ,
1685 .Ql Cc ,
1687 .Ql Bcc
1688 header fields.
1689 The third will match all messages which contain the substring
1690 .Dq y
1691 in a line of the message body.
1692 The check for
1693 .Dq from ,
1694 .Dq to ,
1696 .Dq body
1697 is case sensitive, so that
1698 .Dq /From:y
1700 .Dq /To:y
1701 can be used to search the
1702 .Ql From
1704 .Ql To
1705 fields, respectively.
1706 (See also
1707 .Ar "regex-search" . )
1708 .It Ar smopts-verify
1709 Verify the sendmail options used on outgoing mail if they were obtained from a
1710 .Ar smopts
1711 match.
1712 This has no effect if there are no sendmail flags or if the flags
1713 were set by the
1714 .Ic \&~h
1715 escape.
1716 .It Ar verbose
1717 Setting the option
1718 .Ar verbose
1719 is the same as using the
1720 .Fl v
1721 flag on the command line.
1722 When mail runs in verbose mode, the actual delivery of messages is
1723 displayed on the user's terminal.
1725 .Ss Option String Values
1726 .Bl -tag -width Va
1727 .It Ev EDITOR
1728 Pathname of the text editor to use in the
1729 .Ic edit
1730 command and
1731 .Ic \&~e
1732 escape.
1733 If not defined, then a default editor is used.
1734 .It Ev LISTER
1735 Pathname of the directory lister to use in the
1736 .Ic folders
1737 command.
1738 Default is
1739 .Pa /bin/ls .
1740 .It Ev PAGER
1741 Pathname of the program to use in the
1742 .Ic more
1743 command or when
1744 .Ic crt
1745 variable is set.
1746 The default paginator
1747 .Xr more 1
1748 is used if this option is not defined.
1749 .It Ev SHELL
1750 Pathname of the shell to use in the
1751 .Ic \&!
1752 command and the
1753 .Ic \&~!
1754 escape.
1755 A default shell is used if this option is not defined.
1756 .It Ev VISUAL
1757 Pathname of the text editor to use in the
1758 .Ic visual
1759 command and
1760 .Ic \&~v
1761 escape.
1762 .It Ar el-completion-keys
1763 A comma or space delimited list of keys to do
1764 .Xr editline 3
1765 completion.
1766 For example
1767 .Nm set el-completion-keys=^I,^D
1768 will bind completion to both the tab and CTRL-D keys.
1769 (Requires
1770 .Xr editline 3
1771 support.)
1772 .It Ar el-editor
1773 The line editing mode: must be
1774 .Ql emacs
1776 .Ql vi .
1777 If unset, editing is not enabled.
1778 (Requires
1779 .Xr editline 3
1780 support.)
1781 .It Ar el-history-size
1782 The number of lines of history to remember.
1783 If unset, history is not enable.
1784 (Requires
1785 .Xr editline 3
1786 support.)
1787 .It Ar escape
1788 If defined, the first character of this option gives the character to
1789 use in the place of
1790 .Ic \&~
1791 to denote escapes.
1792 .It Ar folder
1793 The name of the directory to use for storing folders of
1794 messages.
1795 If this name begins with a
1796 .Ql / ,
1798 considers it to be an absolute pathname; otherwise, the
1799 folder directory is found relative to your home directory.
1800 .It Ar header-format
1801 If set, use this format string when displaying headers in command
1802 mode.
1803 The format string supports the following conversions in addition to
1804 those of
1805 .Xr strftime 3 :
1807 .Bl -tag -width ".Ar \&%?key?" -compact
1808 .It Ar \&%?key?
1809 The header field with name
1810 .Ql key .
1811 Note: if key[0] is
1812 .Ql \&- ,
1813 ignore the
1814 .Ql \&-
1815 and extract the address
1816 portion of the field (i.e.,
1817 .Dq skin
1818 the field).
1819 .It Ar \&%?*string?
1820 If the depth is
1821 .Ar n ,
1822 substitute
1823 .Ql string
1824 .Ar n
1825 times.
1826 This is intended to be used when displaying an
1827 .Dq exposed thread .
1828 .It Ar \&%?\*[Am]string?
1829 Like
1830 .Ar \&%?*string? ,
1831 but uses the depth relative to the current depth rather than the
1832 absolute depth.
1833 .It Ar \&%J
1834 The number of header lines in the message.
1835 .It Ar \&%K
1836 The number of body lines in the message.
1837 .It Ar \&%L
1838 The total number of lines in the message.
1839 .It Ar \&%N
1840 The sender's full name (as in the
1841 .Ql From
1843 .Ql Sender
1844 fields).
1845 .It Ar \&%O
1846 The message size.
1847 .It Ar \&%P
1848 The current
1849 .Dq dot
1850 .Pq Sq \*[Gt]
1851 message.
1852 .It Ar \&%Q
1853 The message status flag.
1854 .It Ar \&%Z
1855 The time zone name (if it exists).
1856 .It Ar \&%f
1857 The email address of sender.
1858 .It Ar \&%i
1859 The message number.
1860 .It Ar \&%n
1861 The sender's login name (taken from the address).
1862 .It Ar \&%q
1863 The subject.
1864 .It Ar \&%t
1865 The total number of messages.
1866 .It Ar \&%z
1867 The GMT offset (if found).
1870 If the format string begins with
1871 .Ql "\&%??"
1872 then the date will be extracted from the headline.
1873 Otherwise it will be extracted from the
1874 .Ql Date
1875 header falling back to the headline if that extraction fails.
1876 For example, the default format is:
1877 .Bd -literal -offset 0
1878 set header-format=\&"\&%??%P%Q%?* ?%3i \&%-21.20f \&%a \&%b \&%e \&%R \&%3K/%-5O \&\\"%q\\""
1881 Note 1: The message status flag
1882 .Ql \&%Q
1883 will display the single character
1884 .Ql \&+
1885 for the parent of a subthread.
1886 This will be overwritten by a
1887 .Ql T ,
1888 .Ql E ,
1889 .Ql \&* ,
1890 .Ql P ,
1891 .Ql U ,
1892 .Ql N ,
1893 .Ql M
1894 indicating, respectively, a tagged, modified, saved, preserved,
1895 unread, new, or modified message, in that order with the last matching
1896 condition being the one displayed.
1897 In the case of hidden threads, the entire subthread is searched and
1898 the letters above will be displayed in lower case if the property is
1899 that of a hidden child with the case
1900 .Ql \&*
1901 being displayed as
1902 .Ql \*[Am] .
1904 Note 2:
1905 .Ar \&%n
1907 .Ar \&%t
1908 as used by
1909 .Xr strftime 3
1910 were redundant with \\t and \\n, respectively, so nothing is lost
1911 using them here.
1912 .It Ar ignoreeof
1913 An option related to
1914 .Ar dot
1916 .Ar ignoreeof
1917 which makes
1919 refuse to accept a
1920 .Ql control-D
1921 as the end of a message.
1922 If given a numeric argument
1923 .Ar n ,
1925 .Ql control-D
1926 will be accepted after
1927 .Ar n
1928 tries.
1929 .Ar Ignoreeof
1930 also applies to
1932 command mode.
1933 .It Ar indentpreamble
1934 If set, this format string will be inserted before quoting a message
1935 .Po Ic \&~m
1937 .Ic \&~M
1938 .Pc .
1939 The format syntax is the same as for
1940 .Ar header-format .
1941 For example, the following:
1942 .Bd -literal -offset 0
1943 set indentpreamble=
1944   \&"On \&%b \&%e \&%T, \&%Y \&%z (%Z), \&%n (%.50N) wrote:\\n-- Subject: \&%.65q\\n"
1947 would insert something like
1948 .Bd -literal -offset 0
1949 On Oct 27 11:00:07, 2006 -0400 (EDT), anon (Anon Ymous) wrote:
1950 -- Subject: suggestions for mail(1)
1953 before the quoted message.
1954 .It Ar indentprefix
1955 String used by the
1956 .Ic ~m
1958 .Ic ~M
1959 tilde escapes for indenting messages, in place of
1960 the normal tab character
1961 .Pq Sq ^I .
1962 Be sure to quote the value if it contains
1963 spaces or tabs.
1964 .It Ar indentpostscript
1965 If set, this format string will be inserted after quoting a message
1966 .Po Ic \&~m
1968 .Ic \&~M
1969 .Pc .
1970 The format syntax is the same as for
1971 .Ar header-format .
1972 For example, the following:
1973 .Bd -literal -offset 0
1974 set indentpostscript="-- End of excerpt from \&%.50N"
1977 would insert something like
1978 .Bd -literal -offset 0
1979 -- End of excerpt from Anon Ymous
1982 after the quoted message.
1983 .It Ar mime-body-TYPE-SUBTYPE
1984 MIME-hook for the body of a MIME block of
1985 .Ql "Content-Type: TYPE/SUBTYPE" .
1986 (See
1987 .Sy MIME Enhancements
1988 below.)
1989 .It Ar mime-charset
1990 Convert
1991 .Ql "Content-type: text"
1992 messages to this character set or
1993 .Ql us-ascii
1994 if the value is empty.
1995 If unset, no character set conversion is done.
1996 .It Ar mime-detach-dir
1997 The directory to detach files to if the
1998 .Ar detach
1999 command is given no arguments.
2000 (See
2001 .Ar detach . )
2002 .It Ar mime-detach-overwrite
2003 This controls overwriting of existing files by the detach command.
2004 If set to
2005 .Ql ask
2006 the user will be prompted before overwriting a file.
2007 If set to
2008 .Ql yes ,
2009 or to the empty string, existing target files will be overwritten.
2010 If set to
2011 .Ql no ,
2012 no target files will be overwritten.
2013 .It Ar mime-encode-message
2014 If set, encode the body of the message as required.
2015 Typically, this is just an issue of whether
2016 .Ql quoted-printable
2017 encoding is used or not.
2018 If it has a value, then use it to determine the encoding type.
2019 Allowed values are
2020 .Ql 7bit ,
2021 .Ql 8bit ,
2022 .Ql binary ,
2023 .Ql quoted-printable ,
2025 .Ql base64 .
2026 .It Ar mime-head-TYPE-SUBTYPE
2027 MIME-hook for the header of a MIME block of
2028 .Ql "Content-Type: TYPE/SUBTYPE" .
2029 (See
2030 .Sy MIME Enhancements
2031 below.)
2032 .It Ar mime-hook-TYPE-SUBTYPE
2033 MIME-hook for MIME block of
2034 .Ql "Content-Type: TYPE/SUBTYPE" .
2035 (See
2036 .Sy MIME Enhancements
2037 below.)
2038 .It Ev MBOX
2039 The name of the
2040 .Ar mbox
2041 file.
2042 It can be the name of a folder.
2043 The default is
2044 .Dq Li mbox
2045 in the user's home directory.
2046 .It Ar prompt
2047 If defined, it specifies the prompt to use when in command mode.
2048 Otherwise, the default
2049 .Ql \*[Am]
2050 is used.
2051 The format syntax is the same as for
2052 .Ar header-format .
2053 .It Ar record
2054 If defined, gives the pathname of the file used to record all outgoing
2055 mail.
2056 If not defined, then outgoing mail is not so saved.
2057 .It Ar regex-search
2058 If set, regular expression searches are used, instead of simple case
2059 insensitive substring matches, when determining message lists by
2060 searching sender names, subjects, or header fields (if
2061 .Ar searchheaders
2062 is defined); see the
2063 .Sx Specifying message
2064 section.
2065 The value of the variable is a space or comma delimited list of
2066 options.
2067 Valid options are
2068 .Ql icase
2069 to do case insensitive searches,
2070 .Ql extended
2071 to use extended (rather than basic) regular expressions, and
2072 .Ql nospec
2073 to turn off all special character meanings and do literal string
2074 searches.
2075 Note that
2076 .Ql extended
2078 .Ql nospec
2079 are not compatible (see
2080 .Xr regcomp 3 ) .
2081 .It Ar ReplyAsRecipient
2082 This is used when replying to email (see the
2083 .Ic reply
2085 .Ic Reply
2086 commands).
2087 It is useful if you have multiple email addresses and wish to ensure
2088 that replies respect them.
2089 If set, grab the email address(es) from the
2090 .Ql To
2091 field of the message being replied to.
2092 If there is only one such address, and if it does not match any
2093 address in the value of
2094 .Ar ReplyAsRecipient
2095 (a comma or space delimited list of addresses, possibly empty), then
2096 use this address in the
2097 .Ql From
2098 field of the reply.
2099 This is accomplished by passing the address to
2100 .Xr sendmail 1
2101 with the
2102 .Fl f
2103 option.
2104 Note: the sendmail options can be edited with the
2105 .Ic \&~h
2106 escape.
2107 (See also the
2108 .Ic smopts
2109 command.)
2110 .It Ar toplines
2111 If defined, gives the number of lines of a message to be printed out
2112 with the
2113 .Ic top
2114 command; normally, the first five lines are printed.
2116 .Ss MIME Enhancements
2117 A MIME message is (recursively) divided into a series of MIME parts
2118 that can be thought of as sub-messages, each with a header and body.
2119 When MIME support is enabled (by setting
2120 .Ar mime-decode-message ) ,
2122 splits a message into a series of its smallest MIME parts and
2123 processes those parts as if they were messages themselves, passing the
2124 header and body through a pipeline of the form:
2126 .Dl mail -\*[Gt] MIME-decoder -\*[Gt] MIME-hook -\*[Gt] pager -\*[Gt] screen
2129 .Em MIME-decoder
2130 decodes
2131 .Ql base64
2133 .Ql quoted-printable
2134 encoding and is enabled according to the
2135 .Ql Content-Transfer-Encoding
2136 of the part.
2138 .Em MIME-hook
2139 is an external program to further process the part (see below).
2141 .Em pager
2142 is the program that pages the message
2143 (see
2144 .Ev PAGER ) .
2145 Any of these intermediate pipe stages may be missing and/or different
2146 for the head and body of each MIME part.
2147 Certain
2148 .Ql Content-Types
2149 may disable the entire pipeline (e.g.,
2150 .Ql application/octet ) .
2153 .Em MIME-hook
2154 stage is not present unless one of the following variables is set:
2155 .Bd -literal -offset indent
2156 mime-hook-TYPE-SUBTYPE    applies to the entire MIME part
2157 mime-head-TYPE-SUBTYPE    applies to the header of the MIME part
2158 mime-body-TYPE-SUBTYPE    applies to the body of the MIME part
2161 where TYPE and SUBTYPE are the
2162 .Ql Content-Type
2163 type and subtype
2164 (respectively) of the MIME part to which the hook applies.
2165 If the
2166 .Dq -SUBTYPE
2167 is missing, any subtype is matched.
2168 The value of these variables has the format:
2169 .Bd -filled -offset indent
2170 .Op Ar flags
2171 .Ar command
2174 where the
2175 .Ar command
2176 is expected to read from stdin and write to stdout, and the possible
2177 flags are
2178 .Bl -tag -width Ds -offset indent
2179 .It !
2180 Execute
2181 .Ar command
2182 in a sub-shell rather than doing an
2183 .Xr exec 3
2184 (see
2185 .Va SHELL ) .
2186 .It +
2187 Use this hook when selecting the part to display in a
2188 .Ql multipart/alternative
2189 block.
2190 Multipart blocks contain
2191 .Dq alternative
2192 versions with the same information, in increasing order of preference
2193 (and decoding complexity).
2194 The last one the mail agent understands is the one to be displayed.
2195 This is typically used for sending a message in both
2196 .Dq plain text
2198 .Dq html ,
2199 but more complex subtypes are also possible.
2200 .It -
2201 Do not decode before executing
2202 .Ar command .
2205 If your
2206 .Ar command
2207 begins with one of these flags, precede it with a space to signal the
2208 end of the flags.
2210 WARNING: automatically running a program is a potential security risk
2211 if that program has bugs, so be careful what you run.
2213 .Em Examples :
2214 View all
2215 .Ql "Content-Type: image/jpeg"
2216 parts with
2217 .Xr xv 1
2218 (assuming it is installed):
2220 .Dl set mime-body-image-jpeg="/usr/pkg/bin/xv -"
2222 Decode all
2223 .Ql "Content-Type: images/*"
2224 blocks with
2225 .Xr uudeview 1
2226 (assuming it is installed), placing the results in
2227 .Pa /tmp :
2229 .Dl set mime-hook-image="-/usr/pkg/bin/uudeview -p /tmp -i -a +o -q -"
2231 Read all
2232 .Ql "Content-Type: text/html"
2233 parts using
2234 .Xr lynx 1
2235 (assuming it is installed) and add this support to
2236 .Ql multipart/alternative
2237 blocks:
2239 .Bd -literal -offset indent
2240 set mime-body-text-html="+/usr/pkg/bin/lynx -force_html -dump -stdin"
2242 .Sh ENVIRONMENT
2244 uses the
2245 .Ev HOME ,
2246 .Ev TMPDIR ,
2248 .Ev USER
2249 environment variables.
2250 .Sh FILES
2251 .Bl -tag -width /usr/share/misc/mail.*help -compact
2252 .It Pa /var/mail/*
2253 Post office.
2254 .It ~/mbox
2255 User's old mail.
2256 .It ~/.mailrc
2257 File giving initial mail commands.
2258 This can be overridden by setting the
2259 .Ev MAILRC
2260 environment variable.
2261 .It Pa /tmp/mail.R*
2262 Temporary files.
2263 .It Pa /usr/share/misc/mail.*help
2264 Help files.
2265 .It Pa /etc/mail.rc
2266 System initialization file.
2268 .Sh SEE ALSO
2269 .Xr fmt 1 ,
2270 .Xr newaliases 1 ,
2271 .Xr sendmail 1 ,
2272 .Xr vacation 1 ,
2273 .Xr aliases 5 ,
2274 .Xr mailaddr 7
2277 .%T "The Mail Reference Manual"
2279 .Sh HISTORY
2282 command
2283 appeared in
2284 .At v6 .
2285 This man page is derived from
2286 .%T "The Mail Reference Manual"
2287 originally written by Kurt Shoens.
2288 .Sh BUGS
2289 There are some flags and commands that are not documented here.
2290 Most are not useful to the general user.
2292 Usually,
2294 is just a link to
2295 .Nm Mail ,
2296 which can be confusing.
2298 The name of the
2299 .Ic alternates
2300 list is incorrect English (it should be
2301 .Dq alternatives ) ,
2302 but is retained for compatibility.
2304 There must be sufficient space on $TMPDIR for various temporary files.
2306 If an unrecoverable character set conversion error occurs (during
2307 display), the message is truncated and a warning is printed.
2308 This seems to be rare, but probably the remainder of the message
2309 should be printed without conversion.
2311 The internal sh-like parser is not terribly sh-like.
2313 Selecting messages by their content (i.e., with
2314 .Ql /body: )
2315 is rather slow.