Completely rework colour: add `colour' and `mono' commands..
[s-mailx.git] / nail.1
blob41f4725bea2a7ecc7b3a47545b7d67b03f506f9e
1 .\"@ nail.1 - S-nail(1) reference manual.
2 .\"
3 .\" Copyright (c) 1980, 1990, 1993
4 .\"     The Regents of the University of California.  All rights reserved.
5 .\" Copyright (c) 2000
6 .\"     Gunnar Ritter.  All rights reserved.
7 .\" Copyright (c) 2012 - 2015 Steffen (Daode) Nurpmeso <sdaoden@users.sf.net>.
8 .\"
9 .\" Redistribution and use in source and binary forms, with or without
10 .\" modification, are permitted provided that the following conditions
11 .\" are met:
12 .\" 1. Redistributions of source code must retain the above copyright
13 .\"    notice, this list of conditions and the following disclaimer.
14 .\" 2. Redistributions in binary form must reproduce the above copyright
15 .\"    notice, this list of conditions and the following disclaimer in the
16 .\"    documentation and/or other materials provided with the distribution.
17 .\" 3. All advertising materials mentioning features or use of this software
18 .\"    must display the following acknowledgement:
19 .\"     This product includes software developed by the University of
20 .\"     California, Berkeley and its contributors.
21 .\"     This product includes software developed by Gunnar Ritter
22 .\"     and his contributors.
23 .\"
24 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS 'AS IS' AND
25 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 .\" SUCH DAMAGE.
35 .\"
36 .\"--MKREL-START--
37 .\" S-nail(1): v14.8.10 / 2016-08-20
38 .Dd Aug 20, 2016
39 .ds VV \\%v14.8.10
40 .\"--MKREL-END--
41 .\"--MKMAN-START--
42 .ds UU \\%S-NAIL
43 .ds UA \\%S-nail
44 .ds ua \\%s-nail
45 .ds UR \\%s-nail.rc
46 .\"--MKMAN-END--
47 .\" --BEGINSTRIP--
48 .\"
49 .\" If not ~/.mailrc, it breaks POSIX compatibility.  And adjust main.c.
50 .ds ur \\%~/.mailrc
51 .ds OB [Obsolete]
52 .ds OP [Option]
53 .ds IN [v15-compat]
54 .ds OU [no v15-compat]
55 .ds ID [v15 behaviour may differ]
56 .ds BO (Boolean)
57 .ds RO (Read-only)
59 .Dt "\*(UU" 1
60 .Os
61 .Mx -enable
64 .Sh NAME
65 .Nm \*(UA \%[\*(VV]
66 .Nd send and receive Internet mail
69 .\" .Sh SYNOPSIS {{{
70 .Sh SYNOPSIS
72 .Nm \*(ua
73 .Fl h | Fl Fl help
74 .Nm \*(ua
75 .Bk -words
76 .Op Fl BDdEFintv~
77 .Op Fl A Ar account
78 .Op Fl a Ar attachment
79 .Op Fl b Ar bcc-addr
80 .Op Fl c Ar cc-addr
81 .Op Fl q Ar quote-file
82 .Op Fl r Ar from-addr
83 .Op Fl S Ar variable Ns Op Ns = Ns Ar value
84 .Op Fl s Ar subject
85 .Op Fl X Ar cmd
86 .Op Fl \&.
87 .Ar to-addr ...
88 .Op Fl Fl \: Ar mta-option ...
89 .Ek
90 .Nm \*(ua
91 .Bk -words
92 .Op Fl BDdEeHiNnRv~#
93 .Op Fl A Ar account
94 .Op Fl L Ar spec-list
95 .Op Fl r Ar from-addr
96 .Op Fl S Ar variable Ns Op Ns = Ns Ar value
97 .Op Fl X Ar cmd
98 .Fl f Op Ar file
99 .Op Fl Fl \: Ar mta-option ...
101 .Nm \*(ua
102 .Bk -words
103 .Op Fl BDdEeHiNnRv~#
104 .Op Fl A Ar account
105 .Op Fl L Ar spec-list
106 .Op Fl r Ar from-addr
107 .Op Fl S Ar variable Ns Op Ns = Ns Ar value
108 .Op Fl u Ar user
109 .Op Fl X Ar cmd
110 .Op Fl Fl \: Ar mta-option ...
112 .\" }}}
115 .Mx -toc -tree html pdf ps xhtml
118 .\" .Sh DESCRIPTION {{{
119 .Sh DESCRIPTION
121 .Bd -filled -compact -offset indent
122 .Sy Compatibility note:
123 S-nail (\*(UA) will wrap up into \%S-mailx in v15.0 (circa 2018).
124 A partial set of compatibility options exist, tagged as \*(IN and \*(OU.
125 To choose upward compatible behaviour, please set the internal variable
126 .Va v15-compat .
127 Anything which will vanish in v15.0 is tagged \*(OB, and using
128 .Fl d
129 will print warnings for many use cases of obsolete features.
133 \*(UA is a mail processing system with a command syntax reminiscent of
134 .Xr ed 1
135 with lines replaced by messages.
136 It is intended to provide the functionality of the POSIX
137 .Xr mailx 1
138 command and offers (mostly optional) extensions for line editing, IDNA,
139 MIME, S/MIME, SMTP and POP3 (and IMAP).
140 It is usable as a mail batch language.
142 .\" .Ss "Options" {{{
143 .Ss "Options"
145 .Bl -tag -width ".Fl _ Ar _ccount"
147 .It Fl A Ar account
148 Executes an
149 .Ic account
150 command (see below) for
151 .Ar account
152 after the startup files have been read.
155 .It Fl a Ar file
156 Attach the given file to the message.
157 The same filename conventions as described in the section
158 .Sx COMMANDS
159 apply: shell word expansion is restricted to the tilde
160 .Ql ~
161 and variables.
162 Shall
163 .Ar file
164 not be accessible but contain a
165 .Ql =
166 character, then anything after the
167 .Ql =
168 is assumed to specify the input character set and anything before
169 .Ql =
170 the filename: this is the only option to specify the input character set
171 (and don't perform any character set conversion) for text attachments
172 from the command line, not using the
173 .Ic ~@
174 tilde escape command.
177 .It Fl B
178 Make standard input and standard output line-buffered.
181 .It Fl b Ar address
182 Send a blind carbon copy to
183 .Ar address .
184 Can be used multiple times, but it is also possible to give
185 a comma-separated list of receivers in a single argument, proper shell
186 quoting provided, e.g.,
187 .Ql -b """qrec1  ,  rec2,rec3, Ex <am@ple>""" .
188 Also see the section
189 .Sx "On sending mail, and non-interactive mode" .
192 .It Fl c Ar address
193 Send carbon copies to the given receiver(s).
194 Can be used multiple times.
197 .It Fl D
198 \*(OP\*(OB Set the
199 .Va disconnected
200 variable.
203 .It Fl d
204 Sets the
205 .Va debug
206 variable which enables debug messages and disables message delivery,
207 among others; effectively turns almost any operation into a dry-run.
210 .It Fl E
211 Set the
212 .Va skipemptybody
213 variable and thus discard messages with an empty message part body.
214 This is useful for sending messages from scripts.
217 .It Fl e
218 Just check if mail is present (in the specified or system mailbox).
219 If yes, return an exit status of zero, a non-zero value otherwise.
220 To restrict the set of mails to consider in this evaluation a message
221 specification can be added with the option
222 .Fl L .
225 .It Fl F
226 Save the message to send in a file named after the local part of the
227 first recipient's address (instead of in
228 .Va record Ns ).
231 .It Fl f Op Ar file
232 Read in the contents of the user's
233 .Ev MBOX
234 (or the specified file) for processing;
235 when \*(UA is quit, it writes undeleted messages back to this file
236 (but be aware of the
237 .Va hold
238 option).
239 Some special conventions are recognized for the string
240 .Ar file
241 which are documented for the
242 .Ic file
243 command below.
244 Note that
245 .Ar file
246 is not a direct argument to the flag
247 .Fl f ,
248 but is instead taken from the command line after option processing has
249 been completed.
250 In order to use a
251 .Ar file
252 that starts with a hyphen, prefix it with a (relative) path, as in
253 .Ql ./-hyphenbox.mbox .
256 .It Fl H
257 Display a summary of the
258 .Ic headers
259 of all messages in the specified or system mailbox and exit.
260 A configurable summary view is available via the
261 .Fl L
262 option.
265 .It Fl h
266 Show a short usage summary.
267 Because of widespread use a
268 .Fl Fl help
269 argument will have the same effect.
272 .It Fl i
273 Set the
274 .Va ignore
275 variable to ignore tty interrupt signals.
278 .It Fl L Ar spec-list
279 Display a summary of all
280 .Ic headers
281 of only those messages in the specified or system mailbox that match the
282 given
283 .Ar spec-list ,
284 then exit.
285 See the section
286 .Sx "Specifying messages"
287 for the format of
288 .Ar spec-list .
289 If the
290 .Fl e
291 (\*(OB or
292 .Fl H )
293 option has been given in addition no header summary is produced,
294 but \*(UA will instead indicate via its exit status wether
295 .Ar spec-list
296 matched any messages
297 .Pf ( Ql 0 )
298 or not
299 .Pf ( Ql 1 ) ;
300 note that any verbose output is suppressed in this mode and must instead
301 be enabled explicitly (e.g., by using the option
302 .Fl v ) .
305 .It Fl N
306 Unset the
307 .Va header
308 variable and thus inhibit initial display of message headers when
309 reading mail or editing a mail folder.
312 .It Fl n
313 Inhibits reading
314 .Pa \*(UR
315 upon startup.
316 This option should be activated for \*(UA scripts that are invoked on
317 more than one machine, because the contents of that file may differ
318 between them.
319 (The same behaviour can be achieved by setting the
320 .Ev NAIL_NO_SYSTEM_RC
321 environment variable.)
324 .It Fl q Ar file
325 Start the message with the contents of the specified file.
326 May be given in send mode only.
329 .It Fl R
330 Any folder opened will be in read-only mode.
333 .It Fl r Ar address
335 .Ar address
336 is a valid address then it specifies the envelope sender address to be
337 passed to the MTA as
338 .Ql -f Ar address
339 when a message is send.
340 Shall
341 .Ar address
342 include a user name, comments etc., then the components will be
343 separated and the name part will be passed to the MTA individually via
344 .Ql -F Ar name .
345 The given
346 .Ar address
347 will also be assigned to the
348 .Va from
349 variable, just as if additionally
350 .Ql -Sfrom=address
351 had been specified (therefore affecting SMTP data transfer, too).
353 If instead an empty string is passed as
354 .Ar address
355 then the content of the variable
356 .Va from
357 will be evaluated and used for this purpose whenever the MTA is
358 contacted.
359 Note that \*(UA by default, without
360 .Fl \&\&r
361 that is, neither passes
362 .Ql -f
364 .Ql -F
365 flags to the MTA by itself.
368 .It Fl S Ar variable Ns Op = Ns value
369 Sets the internal option
370 .Ar variable
371 and, in case of a value option, assigns
372 .Ar value
373 to it.
374 Even though variables set via
375 .Fl S
376 may be overwritten from within resource files,
377 the command line setting will be reestablished after all resource files
378 have been loaded.
381 .It Fl s Ar subject
382 Specify the subject of the to-be-sent message.
385 .It Fl t
386 The message to be sent is expected to contain a message header with
387 .Ql To: ,
388 .Ql Cc: ,
390 .Ql Bcc:
391 fields giving its recipients, which will be added to those given on the
392 command line.
393 If a message subject is specified via
394 .Ql Subject:
395 then it'll be used in favour of one given on the command line.
397 Also understood are
398 .Ql Reply-To:
399 (possibly overriding
400 .Va replyto ) ,
401 .Ql Sender:
402 (p.\ o.\&
403 .Va sender ) ,
404 .Ql Organization:
405 (p.\ o.\&
406 .Ev ORGANIZATION ) .
407 Note you can also specify
408 .Ql From: ,
409 possibly overriding
410 .Va from
411 and the envelope address possibly specified with the option
412 .Fl r !
414 The following, which are normally created automatically based
415 upon the message context, can also be specified:
416 .Ql Message-ID: ,
417 .Ql In-Reply-To: ,
418 .Ql References:
420 .Ql Mail-Followup-To:
421 (special address massage will however still occur for the latter).
424 .It Fl u Ar user
425 Read the system mailbox of
426 .Ar user
427 (appropriate privileges presumed), and
428 .Dq assume to be
429 .Ar user
430 in some aspects, e.g. in respect to
431 .Ic file Ns
432 \(enexpansions of
433 .Ql %
434 etc.; also see
435 .Ev USER .
438 .It Fl V
439 Show \*(UA's version and exit.
442 .It Fl v
443 Setting the
444 .Va verbose
445 option enables display of some informational context messages.
446 Using it twice increases the level of verbosity.
449 .It Fl X Ar cmd
450 Add the given
451 .Ar cmd
452 to the list of commands to be executed before normal operation starts.
453 Correlates with
454 .Fl #
456 .Va batch-exit-on-error ;
457 the only possibility to execute commands in non-interactive mode when
458 reading startup files is actively prohibited.
461 .It Fl ~
462 Enable
463 .Sx TILDE ESCAPES
464 even if not in interactive mode.
467 .It Fl #
468 This sets several variables to prepare \*(UA for working in (most likely
469 non-interactive) batch mode:
470 .Va dot ,
471 .Va emptystart ,
472 .Pf no Va header ,
473 .Va quiet ,
474 .Va sendwait ,
475 as well as
476 .Ev MBOX
478 .Va folder
479 (both to
480 .Pa /dev/null ) .
481 It also enables processing of
482 .Sx "TILDE ESCAPES" .
483 E.g., the following should send an email message to
484 .Dq bob :
485 .Bd -literal -offset indent
486 $ LC_ALL=C printf 'm bob\en~s ubject\enText\en.\enx\en' | \e
487   LC_ALL=C MAILRC=/dev/null \*(ua -n -# -Snosave
491 .It Fl \&.
492 This flag forces termination of option processing in order to prevent
493 .Dq option injection
494 (attacks).
495 It also forcefully puts \*(UA into send mode, see
496 .Sx "On sending mail, and non-interactive mode" .
500 In the above list of supported command line options,
501 .Fl D , d , E , i , N
503 .Fl v
504 are implemented by means of setting the respective option, as via
505 .Fl S .
506 .Bk -words
507 .Op Ar mta-option ...
509 arguments that are given at the end of the command line after a
510 .Ql --
511 separator will be passed through to the mail-transfer-agent (MTA) and
512 persist for an entire (interactive) session \(en if the setting of
513 .Va expandargv
514 allows their recognition;
515 MTA arguments can also be specified in the variable
516 .Va sendmail-arguments ;
517 find MTA interaction described in more detail in the documentation of
518 .Va sendmail .
519 MTA arguments are ignored when mail is send via SMTP data transfer.
520 .\" }}}
522 .\" .Ss "A starter" {{{
523 .Ss "A starter"
525 \*(UA is a direct descendant of
527 Mail, a successor of the Research
529 mail which
530 .Dq was there from the start
531 according to
532 .Sx HISTORY .
535 Mail reference manual begins with the following words:
537 .Bd -ragged -offset indent
538 Mail provides a simple and friendly environment for sending and
539 receiving mail.
540 It divides incoming mail into its constituent messages and allows the
541 user to deal with them in any order.
542 In addition, it provides a set of
543 .Xr ed 1 Ns
544 -like commands for manipulating messages and sending mail.
545 Mail offers the user simple editing capabilities to ease the composition
546 of outgoing messages, as well as providing the ability to define and
547 send to names which address groups of users.
551 \*(UA is thus the user side of the
553 mail system, whereas the system side (mail-transfer-agent, MTA) was
554 traditionally taken by
555 .Xr sendmail 8 ;
556 today
557 .Xr postfix 1
559 .Xr exim 8
560 are often used for this purpose instead.
561 If the \*(OPal SMTP is included in the
562 .Ic features
563 of \*(UA then the system side is not a mandatory precondition for mail
564 delivery.
567 Because \*(UA strives for compliance with POSIX
568 .Xr mailx 1
569 it is likely that some configuration settings have to be adjusted before
570 using it is a smooth experience.
571 The default global
572 .Pa \*(UR
573 file already bends those standard settings a bit towards more user
574 friendliness and safety, e.g., it sets the
575 .Va hold
577 .Va keepsave
578 variables in order to suppress the automatic moving of messages to
579 .Ev MBOX
580 that would otherwise occur (see
581 .Sx "Message states" )
583 .Va keep
584 to not remove empty files in order not to mangle file permissions when
585 files eventually get recreated.
586 It does not set the
587 .Va folder
588 option so that by default file grouping (via the
589 .Ql +
590 prefix as documented also for
591 .Ic file )
592 is not enabled.
593 The section
594 .Sx EXAMPLES
595 contains some further suggestions.
596 .\" }}}
598 .\" .Ss "On sending mail, and non-interactive mode" {{{
599 .Ss "On sending mail, and non-interactive mode"
601 To send a message to one or more people, using a local
602 mail-transfer-agent (MTA; the executable path can be set via
603 .Va sendmail )
604 or the \*(OPal builtin SMTP (set and see the variable
605 .Va smtp )
606 transport to actually deliver the generated mail message, \*(UA can be
607 invoked with arguments which are the names of people to whom the mail
608 will be sent:
610 .Bd -literal -offset indent
611 $ \*(ua -s Subject -a attachm.ent bill@host1 'Bob <bob@host2>'
612 # But... try it in an isolated dry-run mode first
613 $ LC_ALL=C MAILRC=/dev/null \e
614   \*(ua -n -d -vv -Sfrom="me <he@re>" \e
615     -b bcc@exam.ple -c cc@exam.ple \e
616     -s Subject -. "(Lovely) Bob <bob@host2>"
620 The command line options
621 .Fl b
623 .Fl c
624 can be used to add (blind) carbon copy receivers.
625 Almost always lists of addresses can be given where an address is
626 expected:
627 whereas comma-separated lists should be given, e.g.,
628 .Ql -c """r1@exam.ple ,  r2@exam.ple,r3@exam.ple""" ,
629 that very example could also be given as the whitespace-separated list
630 .Ql -c """r1@exam.ple   r2@exam.ple r3@exam.ple""" ,
631 but which for obvious reasons would not work for
632 .Ql -c """R1 <r1@exam.ple>, R2 (heh!) <r2@exam.ple>""" .
635 The user is then expected to type in the message contents.
636 In this compose mode \*(UA treats lines beginning with the character
637 .Ql ~
638 special \(en these are so-called
639 .Sx "TILDE ESCAPES"
640 which can be used to read in files, process shell commands, add and edit
641 attachments and more; e.g., the tilde escape
642 .Ql Ic ~e
643 will start the text editor to revise the message in it's current state,
644 .Ql Ic ~h
645 allows editing of the message recipients and
646 .Ql Ic ~?
647 gives an overview of available tilde escapes.
648 Typing control-D
649 .Ql ^D
650 at the beginning of an empty line leaves compose mode and causes the
651 message to be send, whereas typing control-C
652 .Ql ^C
653 twice will abort the current letter (saving its contents in the file
654 denoted by
655 .Ev DEAD
656 unless
657 .Pf no Va save
658 is set).
661 A number of variables can be used to alter default behavior; e.g.,
662 .Ic set Ns
663 ting (also via
664 .Fl S )
665 .Va editalong
666 will automatically startup a text editor when compose mode is entered,
667 .Va askcc
668 will cause the user to be prompted actively for carbon-copy recipients
669 and the
670 .Va dot
671 option will allow leaving compose mode by writing a line consisting
672 solely of a dot
673 .Pf ( Ql \&. ) .
676 Very important, though, is to define which
677 .Sx "Character sets"
678 may be used when sending messages, usually by setting the option
679 .Va sendcharsets
680 accordingly,
681 having read the section
682 .Sx "The mime.types files"
683 to understand how the MIME-type of outgoing attachments is classified
684 and the knowledge that messages are sent asynchronously unless
685 .Va sendwait
686 is set: only with it MTA delivery errors will be recognizable.
689 Setting
690 .Va from
691 is often necessary (e.g., in conjunction with
692 .Va smtp )
693 or desirable, you may want to do some dry-run tests before you go.
694 Saving a copy of the sent messages in a
695 .Va record
696 may also be desirable \(en as for most mailbox file targets some
697 special conventions are recognized, see the
698 .Ic file
699 command for more on that.
700 The section
701 .Sx "On URL syntax and credential lookup"
702 will spread some light on the
703 .Ql USER@HOST
704 variable chains as well as on using URLs for accessing protocol-specific
705 resources, like
706 .Va smtp ,
708 .Sx EXAMPLES
709 contains an example configuration for sending messages via some of the
710 well-known public mail providers;
711 note it also gives a compact overview on how to setup a secure SSL/TLS
712 environment.
715 Message recipients (as specified on the command line or defined in
716 .Ql To: ,
717 .Ql Cc:
719 .Ql Bcc: )
720 may not only be email addressees but can also be names of mailboxes and
721 even complete shell command pipe specifications.
722 Proper (shell) quoting is necessary, e.g., to embed whitespace characters.
723 (Recall that \*(UA deals with mail standards, therefore those define the
724 rules with which content is interpreted.)
725 If the variable
726 .Va expandaddr
727 is not set then only network addresses (see
728 .Xr mailaddr 7
729 for a description of mail addresses) and plain user names (including MTA
730 aliases) may be used, other types will be filtered out, giving a warning
731 message.
733 .\" When changing any of the following adjust any RECIPIENTADDRSPEC;
734 .\" grep the latter for the complete picture
736 If the variable
737 .Va expandaddr
738 is set then extended recipient addresses will optionally be accepted:
739 Any name which starts with a vertical bar
740 .Ql |
741 character specifies a command pipe \(en the command string following the
742 .Ql |
743 is executed and the message is sent to its standard input;
744 Likewise, any name that starts with the character slash
745 .Ql /
746 or the character sequence dot slash
747 .Ql ./
748 is treated as a file, regardless of the remaining content.
749 Any other name which contains an at sign
750 .Ql @
751 character is treated as a network address;
752 Any other name which starts with a plus sign
753 .Ql +
754 character specifies a mailbox name;
755 Any other name which contains a slash
756 .Ql /
757 character but no exclamation mark
758 .Ql \&!
759 or percent sign
760 .Ql %
761 character before also specifies a mailbox name;
762 What remains is treated as a network address.
764 .Bd -literal -offset indent
765 $ echo bla | \*(ua -Sexpandaddr -s test ./mbox.mbox
766 $ echo bla | \*(ua -Sexpandaddr -s test '|cat >> ./mbox.mbox'
767 $ echo safe | LC_ALL=C MAILRC=/dev/null \e
768     \*(ua -n -Sv15-compat -Ssendwait -Snosave \e
769       -Sexpandaddr=fail,-all,+addr -s test \e
770       -. bob@home.net
774 It is possible to create personal distribution lists via the
775 .Ic alias
776 command, so that, for instance, the user can send mail to
777 .Ql cohorts
778 and have it go to a group of people:
781 .Dl alias cohorts bill jkf mark kridle@ucbcory ~/mail/cohorts.mbox
784 Please note that this mechanism has nothing in common with the system
785 wide aliases that may be used by the local MTA (mail-transfer-agent),
786 which are subject to the
787 .Ql name
788 constraint of
789 .Va expandaddr
790 and are often tracked in a file
791 .Pa /etc/aliases
792 (and documented in
793 .Xr aliases 5
795 .Xr sendmail 1 ) .
796 Personal aliases will be expanded by \*(UA before the message is sent,
797 and are thus a convenient alternative to specifying each addressee by
798 itself.
801 To avoid environmental noise scripts should
802 .Dq detach
803 \*(UA from any configuration files and create a script-local
804 environment, either by pointing the
805 .Ev MAILRC
806 variable to a custom configuration file, or by using the
807 .Fl S
808 command line option to specify variables:
810 .Bd -literal -offset indent
811 $ env LC_ALL=C MAILRC=/dev/null password=NOTSECRET \e
812   \*(ua -n -Sv15-compat -Ssendwait -Snosave \e
813     -Sexpandaddr=fail,-all,+addr \e
814     -S 'smtp=smtps://mylogin@some.host:465' -Ssmtp-auth=login \e
815     -S 'from=scriptreply@domain' \e
816     -s 'subject' -a attachment_file \e
817     -. "Recipient 1 <recipient1@domain>" recipient2@domain \e
818     < content_file
822 In interactive mode, which is introduced in the next section, messages
823 can be send by calling the
824 .Ic mail
825 command with a list of recipient addresses \(em the semantics are
826 completely identical to non-interactive message sending, except that
827 it is likely necessary to separate recipient lists with commas:
829 .Bd -literal -offset indent
830 $ \*(ua -d -Squiet -Semptystart
831 "/var/spool/mail/user": 0 messages
832 ? mail "Recipient 1 <recipient1@domain>", recipient2@domain
833 ? # Will do the right thing (tm)
834 ? m recipient1@domain recipient2@domain
836 .\" }}}
838 .\" .Ss "On reading mail, and interactive mode" {{{
839 .Ss "On reading mail, and interactive mode"
841 When invoked without addressees \*(UA enters interactive mode in which
842 mails may be read.
843 When used like that the user's system mailbox (see the command
844 .Ic file
845 for an in-depth description of the different mailbox types that exist)
846 is read in and a one line header of each message therein is displayed.
847 The visual style of this summary of
848 .Ic headers
849 can be adjusted through the variable
850 .Va headline
851 and the possible sorting criterion via
852 .Va autosort .
853 If the initially opened mailbox is empty \*(UA will instead exit
854 immediately (after displaying a message) unless the variable
855 .Va emptystart
856 is set.
859 At the
860 .Va prompt
861 the command
862 .Ic list
863 will give a listing of all available commands and
864 .Ic help
865 will give a summary of some common ones.
866 If the \*(OPal documentation strings are available one can type
867 .Ql ?X
868 and see the actual expansion of
869 .Ql X
870 and what it's purpose is, i.e., commands can be abbreviated
871 (note that POSIX defines some abbreviations, so that the alphabetical
872 order of commands doesn't necessarily relate to the abbreviations; it is
873 possible to define overwrites with the
874 .Ic ghost
875 command, however).
878 Messages are given numbers (starting at 1) which uniquely identify
879 messages; the current message \(en the
880 .Dq dot
881 \(en will either be the first new message, or the first unread message,
882 or the first message of the mailbox; the option
883 .Va showlast
884 will instead cause usage of the last message for this purpose.
885 The command
886 .Ic headers
887 will display a
888 .Va screen Ns
889 ful of header summaries containing the
890 .Dq dot ,
891 whereas
892 .Ic from
893 will display only the summaries of the given messages, defaulting to the
894 .Dq dot .
897 Messages can be displayed on the user's terminal with the
898 .Ic type
899 command, or short:
900 .Ql t .
901 By default the current message
902 .Pf ( Dq dot )
903 is displayed, but like with many other commands it is possible to give
904 a fancy message specification (see
905 .Sx "Specifying messages" ) ,
906 e.g.,
907 .Ql t:u
908 will display all unread messages,
909 .Ql t.
910 will display the
911 .Dq dot ,
912 .Ql t 1 5
913 will type the messages 1 and 5,
914 .Ql t 1-5
915 will type the messages 1 through 5, and
916 .Ql t-
918 .Ql t+
919 will display the last and the next message, respectively.
920 The command
921 .Ic search
922 (a more substantial alias of the standard command
923 .Ic from )
924 will display a header summary of the given message specification list
925 instead of their content, e.g., the following will search for subjects:
928 .Dl ? from """@Some subject to search for"""
931 In the default setup all header fields of a message will be displayed,
932 but this can be changed: either by blacklisting a list of fields via
933 .Ic ignore ,
934 or by whitelisting only a given list with the
935 .Ic retain
936 command, e.g.,
937 .Ql Ic \:retain Ns \0date from to cc subject .
938 In order to display all header fields of a message regardless of
939 currently active ignore or retain lists, use the command
940 .Ic Type .
941 The variable
942 .Va crt
943 controls wether and when \*(UA will use the configured
944 .Ev PAGER
945 for display instead of directly writing to the user terminal
946 (generally speaking).
947 Note that historically the global
948 .Pa \*(UR
949 not only adjusts the list of displayed headers, but also sets
950 .Va crt .
953 Dependent upon the configuration a
954 .Sx "Command line editor"
955 aims at making user experience with the many
956 .Sx COMMANDS
957 a bit nicer.
958 When reading the system mailbox or when
959 .Fl f
961 .Ic file )
962 specified a mailbox explicitly prefixed with the special
963 .Ql %:
964 modifier (propagating the mailbox to a primary one) then messages which
965 have been read will be moved to a secondary mailbox, the user's
966 .Ev MBOX
967 file, automatically when the mailbox is left, either by changing the
968 active mailbox or by quitting \*(UA (also see
969 .Sx "Message states" )
970 \(en this automatic moving from a system or primary to the secondary
971 mailbox is not performed when the variable
972 .Va hold
973 is set.
976 After examining a message the user can also
977 .Ic delete Ql d
978 the message,
979 .Ic reply Ql r
980 to the sender and all recipients or
981 .Ic Reply Ql R
982 exclusively to the sender(s).
983 Messages can also be
984 .Ic forward Ns
985 ed (shorter alias is
986 .Ic fwd Ns ).
987 Note that when replying to or forwarding a message recipient addresses
988 will be stripped from comments and names unless the option
989 .Va fullnames
990 is set.
991 Deletion causes \*(UA to forget about the message;
992 This is not irreversible, though, one can
993 .Ic undelete Ql u
994 the message by giving its number,
995 or the \*(UA session can be ended by giving the
996 .Ic exit Ql x
997 command.
1000 To end a mail processing session one may either issue
1001 .Ic quit Ql q
1002 to cause a full program exit, which possibly includes
1003 automatic moving of read messages to
1004 .Ev MBOX
1005 as well as updating the \*(OPal command line editor history file,
1006 or use the command
1007 .Ic exit Ql x
1008 instead in order to prevent any of these actions.
1009 .\" }}}
1011 .\" .Ss "HTML mail and MIME attachments" {{{
1012 .Ss "HTML mail and MIME attachments"
1014 Messages which are HTML-only get more and more common and of course many
1015 messages come bundled with a bouquet of MIME attachments.
1016 Whereas \*(UA \*(OPally supports a simple HTML-to-text converter to deal
1017 with HTML messages (see
1018 .Sx "The mime.types files" ) ,
1019 it normally can't deal with any of these itself, but instead programs
1020 need to become registered to deal with specific MIME types or file
1021 extensions.
1022 These programs may either prepare plain text versions of their input
1023 in order to enable \*(UA to display the content on the terminal,
1024 or display the content themselves, for example in a graphical window.
1027 To install an external handler program for a specific MIME type set an
1028 according
1029 .Va pipe-TYPE/SUBTYPE
1030 variable; to instead define a handler for a specific file extension set
1031 the respective
1032 .Va pipe-EXTENSION
1033 variable \(en these handlers take precedence.
1034 \*(OPally \*(UA supports mail user agent configuration as defined in
1035 RFC 1524; this mechanism, documented in the section
1036 .Sx "The Mailcap files" ,
1037 will be queried for display or quote handlers if none of the former two
1038 .\" TODO v15-compat "will be" -> "is"
1039 did; it will be the sole source for handlers of other purpose.
1040 A last source for handlers may be the MIME type definition itself, if
1041 the \*(UA specific type-marker extension was used when defining the type
1042 with the command
1043 .Ic mimetype .
1044 (Many of the builtin MIME types do so by default.)
1047 The variable
1048 .Va mime-counter-evidence
1049 can be set to improve dealing with faulty MIME part declarations as are
1050 often seen in real-life messages.
1051 E.g., to display a HTML message inline (that is, converted to a more
1052 fancy plain text representation than the builtin converter is capable to
1053 produce) with either of the text-mode browsers
1054 .Xr lynx 1
1056 .Xr elinks 1 ,
1057 teach \*(UA about MathML documents and make it display them as plain
1058 text, and to open PDF attachments in an external PDF viewer,
1059 asynchronously and with some other magic attached:
1061 .Bd -literal -offset indent
1062 if $features !@ HTML-FILTER
1063   #set pipe-text/html="elinks -force-html -dump 1"
1064   set pipe-text/html="lynx -stdin -dump -force_html"
1065   # Display HTML as plain text instead
1066   #set pipe-text/html=@
1067 endif
1068 mimetype '@ application/mathml+xml mathml'
1069 set pipe-application/pdf="@&=@ \e
1070   trap \e"rm -f \e\e\e"${NAIL_FILENAME_TEMPORARY}\e\e\e"\e" EXIT;\e
1071   trap \e"trap \e\e\e"\e\e\e" INT QUIT TERM; exit 1\e" \e INT QUIT TERM;\e
1072   xpdf \e"${NAIL_FILENAME_TEMPORARY}\e""
1076 Note: special care must be taken when using such commands as mail
1077 viruses may be distributed by this method: if messages of type
1078 .Ql application/x-sh
1079 or files with the extension
1080 .Ql .sh
1081 were blindly filtered through the shell, for example, a message sender
1082 could easily execute arbitrary code on the system \*(UA is running on.
1083 For more on MIME, also in respect to sending of messages, see the
1084 sections
1085 .Sx "The mime.types files" ,
1086 .Sx "The Mailcap files"
1087 and the command
1088 .Ic mimetype .
1089 .\" }}}
1091 .\" .Ss "Mailing lists" {{{
1092 .Ss "Mailing lists"
1094 \*(UA offers some support to ease handling of mailing lists.
1095 The command
1096 .Ic mlist
1097 promotes all given arguments to known mailing lists, and
1098 .Ic mlsubscribe
1099 sets their subscription attribute, creating them first as necessary.
1100 (On the other hand
1101 .Ic unmlsubscribe
1102 doesn't
1103 .Ic unmlist
1104 automatically, but only resets the subscription attribute.)
1105 Using the commands without arguments will show (a subset of) all
1106 currently defined mailing lists.
1108 .Va headline
1109 format
1110 .Ql \&%T
1111 can be used to mark out messages with configured list addresses
1112 in the header display.
1115 \*(OPally mailing lists may also be specified as (extended) regular
1116 expressions, which allows matching of many addresses with a single
1117 expression.
1118 However, all fully qualified list addresses are matched via a fast
1119 dictionary, whereas expressions are placed in (a) list(s) which is
1120 (are) matched sequentially.
1122 .Bd -literal -offset indent
1123 set followup-to followup-to-honour=ask-yes reply-to-honour=ask-yes
1124 mlist a1@b1.c1 a2@b2.c2 .*@lists.c3$
1125 mlsubscribe a4@b4.c4 exact@lists.c3
1129 The variable
1130 .Va followup-to-honour
1131 will ensure that a
1132 .Ql Mail-\:Followup-\:To:
1133 header is honoured when the message is being replied to (via
1134 .Ic reply
1136 .Ic Lreply )
1138 .Va followup-to
1139 controls wether this header is created when sending mails; it will be
1140 created automatically for a couple of reasons, too, like when the
1141 special
1142 .Dq mailing list specific
1143 respond command
1144 .Ic Lreply
1145 is used, when
1146 .Ic reply
1147 is used to respond to a message with its
1148 .Ql Mail-Followup-To:
1149 being honoured etc.
1152 A difference in between the handling of known and subscribed lists is
1153 that the address of the sender is usually not part of a generated
1154 .Ql Mail-Followup-To:
1155 when addressing the latter, whereas it is for the former kind of lists.
1156 Usually because there are exceptions: say, if multiple lists are
1157 addressed and not all of them are subscribed lists.
1159 For convenience \*(UA will, temporarily, automatically add a list
1160 address that is presented in the
1161 .Ql List-To:
1162 header of a message that is being responded to to the list of known
1163 mailing lists.
1164 Shall that header have existed \*(UA will instead, dependend on the
1165 variable
1166 .Va reply-to-honour ,
1167 use an also set
1168 .Ql Reply-To:
1169 for this purpose in order to accept a list administrators' wish that
1170 is supposed to have been manifested like that (but only if it provides
1171 a single address which resides on the same domain as what is stated in
1172 .Ql List-To: ) .
1173 .\" }}}
1175 .\" .Ss "Resource files" {{{
1176 .Ss "Resource files"
1178 Upon startup \*(UA reads in several resource files:
1180 .Bl -tag -width ".It Pa _AIL_EXTRA_R_"
1182 .It Pa \*(UR
1183 System wide initialization file.
1184 Reading of this file can be suppressed, either by using the
1185 .Fl n
1186 command line option, or by setting the environment variable
1187 .Ev NAIL_NO_SYSTEM_RC .
1190 .It Pa \*(ur
1191 File giving initial commands.
1192 A different file can be chosen by setting the environment variable
1193 .Ev MAILRC .
1195 .It Va NAIL_EXTRA_RC
1196 Can be used to define an optional startup file to be read after
1197 .Pa \*(ur .
1198 This variable is only honoured in certain circumstances (see its
1199 documentation for more).
1203 The content of these files is interpreted as follows:
1206 .Bl -bullet -compact
1208 A lines' leading whitespace is removed.
1210 Empty lines are ignored.
1212 Any other line is interpreted as a command.
1213 It may be spread over multiple input lines if the newline character is
1214 .Dq escaped
1215 by placing a backslash character
1216 .Ql \e
1217 as the last character of the line; whereas any leading whitespace of
1218 follow lines is ignored, trailing whitespace before a escaped newline
1219 remains in the input.
1221 If the line (content) starts with the number sign
1222 .Ql #
1223 then it is a comment-command \(en a real command! \(en and also ignored.
1224 This command is the only form of comment that is understood.
1228 For example:
1230 .Bd -literal -offset indent
1231  # This line is a comment command.  And y\e
1232     es, it is really continued here.
1233 set debug \e
1234     verbose
1235     set editheaders
1237 .\" }}}
1239 .\" .Ss "Character sets" {{{
1240 .Ss "Character sets"
1242 \*(OP \*(UA detects the character set of the terminal by using
1243 mechanisms that are controlled by the
1244 .Ev LC_CTYPE
1245 locale setting
1246 (the manual for
1247 .Xr setlocale 3
1248 should give an overview); the \*(UA internal variable
1249 .Va ttycharset
1250 will be set to the detected terminal character set accordingly
1251 and will thus show up in the output of the commands
1252 .Ic set
1254 .Ic varshow .
1257 However, a user supplied
1258 .Va ttycharset
1259 value is not overwritten by this detection mechanism: this
1260 .Dq feature
1261 must be used if the detection doesn't work properly,
1262 and it may be used to adjust the name of the locale character set.
1263 E.g., on BSD systems one may use a locale with the character set
1264 ISO8859-1, which is not a valid name for this character set; to be on
1265 the safe side, one may set
1266 .Va ttycharset
1267 to the correct name, which is ISO-8859-1.
1270 Note that changing the value doesn't mean much beside that,
1271 since several aspects of the real character set are implied by the
1272 locale environment of the system,
1273 and that stays unaffected by the content of an overwritten
1274 .Va ttycharset
1275 variable.
1276 (This is mostly an issue when interactively using \*(UA, though.
1277 It is actually possible to send mail in a completely
1278 .Dq faked
1279 locale environment, an option that \*(UA's test-suite uses excessively.)
1282 If no character set conversion capabilities have been compiled into
1283 \*(UA
1284 .Pf ( Ic features
1285 doesn't include the term
1286 .Ql ICONV ) ,
1287 then
1288 .Va ttycharset
1289 will be the only supported character set,
1290 it is simply assumed that it can be used to exchange 8-bit messages,
1291 and the rest of this section does not apply;
1292 it may however still be necessary to explicitly set it if automatic
1293 detection fails, since in that case it defaults to the mentioned
1294 .\" (Keep in SYNC: ./nail.1:"Character sets", ./nail.h:CHARSET_*!)
1295 ISO-8859-1.
1298 When reading messages, their text is converted into
1299 .Va ttycharset
1300 as necessary in order to display them on the users terminal.
1301 Unprintable characters and invalid byte sequences are detected
1302 and replaced by proper substitution characters (unless the variable
1303 .Va print-all-chars
1304 was set once \*(UA was started).
1305 Also see
1306 .Va charset-unknown-8bit
1307 to deal with another hairy aspect of message interpretation.
1310 When sending messages all their parts and attachments are classified.
1311 Whereas no character set conversion is performed on those parts which
1312 appear to be binary data,
1313 the character set being used must be declared within the MIME header of
1314 an outgoing text part if it contains characters that do not conform to
1315 the set of characters that are allowed by the email standards.
1316 Permissible values for character sets can be declared using the
1317 .Va sendcharsets
1318 variable, and
1319 .Va charset-8bit ,
1320 which defines a catch-all last-resort fallback character set that is
1321 implicitly appended to the list of character-sets in
1322 .Va sendcharsets .
1325 When replying to a message and the variable
1326 .Va reply-in-same-charset
1327 is set then the character set of the message being replied to is tried
1328 first.
1329 And it is also possible to make \*(UA work even more closely related to
1330 the current locale setting automatically by using the variable
1331 .Va sendcharsets-else-ttycharset ,
1332 please see there for more information.
1335 All the specified character sets are tried in order unless the
1336 conversion of the part or attachment succeeds.
1337 If none of the tried (8-bit) character sets is capable to represent the
1338 content of the part or attachment,
1339 then the message will not be sent and its text will optionally be
1340 .Va save Ns d
1342 .Ev DEAD .
1343 In general, if the message
1344 .Dq Cannot convert from a to b
1345 appears, either some characters are not appropriate for the currently
1346 selected (terminal) character set,
1347 or the needed conversion is not supported by the system.
1348 In the first case, it is necessary to set an appropriate
1349 .Ev LC_CTYPE
1350 locale and/or the variable
1351 .Va ttycharset .
1354 The best results are usually achieved when \*(UA is run in a UTF-8
1355 locale on a UTF-8 capable terminal, in which case the full Unicode
1356 spectrum of characters is available.
1357 In this setup characters from various countries can be displayed,
1358 while it is still possible to use more simple character sets for sending
1359 to retain maximum compatibility with older mail clients.
1362 On the other hand the POSIX standard defines a locale-independent 7-bit
1363 .Dq portable character set
1364 that should be used when overall portability is an issue, the even more
1365 restricted subset named
1366 .Dq portable filename character set
1367 consisting of A-Z, a-z, 0-9, period
1368 .Ql \&. ,
1369 underscore
1370 .Ql _
1372 .Ql -
1373 hyphen.
1374 .\" }}}
1376 .\" .Ss "Message states" {{{
1377 .Ss "Message states"
1379 \*(UA differentiates in between several different message states;
1380 the current state will be reflected in header summary displays if
1381 .Va headline
1382 is configured to do so (via the internal variable
1383 .Va attrlist ) ,
1384 and messages can also be selected and be acted upon depending on their
1385 state (see
1386 .Sx "Specifying messages" ) .
1387 When operating on the system mailbox or in primary mailboxes opened with
1388 the special prefix
1389 .Ql %:
1390 (see
1391 .Ic file )
1392 special actions, like the automatic moving of messages to the secondary
1393 .Ev MBOX
1394 mailbox may be applied when the mailbox is left (also implicitly via
1395 a successful exit of \*(UA, but not if the special command
1396 .Ic exit
1397 is used) \(en however, because this may be irritating to users which
1398 are used to
1399 .Dq more modern
1400 mail-user-agents, the default global
1401 .Pa \*(UR
1402 sets the internal
1403 .Va hold
1405 .Va keepsave
1406 variables in order to suppress this behaviour.
1408 .Bl -tag -width ".It Ql _reserved"
1409 .It Ql new
1410 Message has neither been viewed nor moved to any other state.
1411 Such messages are retained even in the system mailbox.
1413 .It Ql unread
1414 Message has neither been viewed nor moved to any other state, but the
1415 message was present already when the mailbox has been opened last:
1416 Such messages are retained even in the system mailbox.
1418 .It Ql read
1419 The message has been processed by one of the following commands:
1420 .Ic ~f ,
1421 .Ic ~m ,
1422 .Ic ~F ,
1423 .Ic ~M ,
1424 .Ic copy ,
1425 .Ic mbox ,
1426 .Ic next ,
1427 .Ic pipe  ,
1428 .Ic Print ,
1429 .Ic print ,
1430 .Ic top ,
1431 .Ic Type ,
1432 .Ic type ,
1433 .Ic undelete .
1435 .Ic delete ,
1436 .Ic dp ,
1438 .Ic dt
1439 commands may also cause the next message to be marked as read, depending
1440 on the value of the
1441 .Va autoprint
1442 variable.
1443 Except when the
1444 .Ic exit
1445 command is used, messages that are in the system mailbox or in mailboxes
1446 which were opened with the special
1447 .Ql %:
1448 prefix and are in
1449 .Ql read
1450 state when the mailbox is left will be saved in
1451 .Ev MBOX
1452 unless the option
1453 .Va hold
1454 it set.
1456 .It Ql deleted
1457 The message has been processed by one of the following commands:
1458 .Ic delete ,
1459 .Ic dp ,
1460 .Ic dt .
1461 Only
1462 .Ic undelete
1463 can be used to access such messages.
1465 .It Ql preserved
1466 The message has been processed by a
1467 .Ic preserve
1468 command and it will be retained in its current location.
1470 .It Ql saved
1471 The message has been processed by one of the following commands:
1472 .Ic save
1474 .Ic write .
1475 Unless when the
1476 .Ic exit
1477 command is used, messages that are in the system mailbox or in mailboxes
1478 which were opened with the special
1479 .Ql %:
1480 prefix and are in
1481 .Ql saved
1482 state when the mailbox is left will be deleted; they will be saved in
1483 .Ev MBOX
1484 when the option
1485 .Va keepsave
1486 is set.
1488 .\" }}}
1490 .\" .Ss "Specifying messages" {{{
1491 .Ss "Specifying messages"
1493 Commands such as
1494 .Ic from ,
1495 .Ic type
1497 .Ic delete
1498 can be given a list of message numbers as arguments to apply to a number
1499 of messages at once.
1500 Thus
1501 .Ql delete 1 2
1502 deletes messages 1 and 2,
1503 whereas
1504 .Ql delete 1-5
1505 will delete the messages 1 through 5.
1506 In sorted or threaded mode (see the
1507 .Ic sort
1508 command),
1509 .Ql delete 1-5
1510 will delete the messages that are located between (and including)
1511 messages 1 through 5 in the sorted/threaded order, as shown in the
1512 .Ic headers
1513 summary.
1514 Multiple colon modifiers can be joined into one, e.g.,
1515 .Ql :du .
1516 The following special message names exist:
1518 .Bl -tag -width ".It Ar _n_u"
1519 .It Ar :n
1521 .Ql new
1522 messages.
1523 .It Ar :o
1524 All old messages (any not in state
1525 .Ql read
1527 .Ql new ) .
1528 .It Ar :u
1530 .Ql unread
1531 messages.
1532 .It Ar :d
1534 .Ql deleted
1535 messages (for the
1536 .Ic undelete
1538 .Ic from
1539 commands only).
1540 .It Ar :r
1542 .Ql read
1543 messages.
1544 .It Ar :f
1546 .Ic flag Ns
1547 ged messages.
1548 .It Ar :a
1549 All answered messages
1550 (cf. the
1551 .Va markanswered
1552 variable).
1553 .It Ar :t
1554 All messages marked as draft.
1555 .It Ar :s
1556 \*(OP All messages classified as spam.
1557 .It Ar :S
1558 \*(OP All messages with unsure spam classification.
1559 .It Ar \&.
1560 The current message, the so-called
1561 .Dq dot .
1562 .It Ar \&;
1563 The message that was previously the current message.
1564 .It Ar \&,
1565 The parent message of the current message,
1566 that is the message with the Message-ID given in the
1567 .Ql In-Reply-To:
1568 field or the last entry of the
1569 .Ql References:
1570 field of the current message.
1571 .It Ar -
1572 The next previous undeleted message,
1573 or the next previous deleted message for the
1574 .Ic undelete
1575 command.
1576 In sorted/threaded mode,
1577 the next previous such message in the sorted/threaded order.
1578 .It Ar +
1579 The next undeleted message,
1580 or the next deleted message for the
1581 .Ic undelete
1582 command.
1583 In sorted/threaded mode,
1584 the next such message in the sorted/threaded order.
1585 .It Ar ^
1586 The first undeleted message,
1587 or the first deleted message for the
1588 .Ic undelete
1589 command.
1590 In sorted/threaded mode,
1591 the first such message in the sorted/threaded order.
1592 .It Ar $
1593 The last message.
1594 In sorted/threaded mode,
1595 the last message in the sorted/threaded order.
1597 .It Ar & Ns Ar x
1598 In threaded mode,
1599 selects the message addressed with
1600 .Ar x ,
1601 where
1602 .Ar x
1603 is any other message specification,
1604 and all messages from the thread that begins at it.
1605 Otherwise it is identical to
1606 .Ar x .
1608 .Ar x
1609 is omitted,
1610 the thread beginning with the current message is selected.
1612 .It Ar *
1613 All messages.
1614 .It Ar `
1615 All messages that were included in the message list for the previous
1616 command.
1618 .It Ar / Ns Ar string
1619 All messages that contain
1620 .Ar string
1621 in the subject field (case ignored).
1622 See also the
1623 .Va searchheaders
1624 variable.
1626 .Ar string
1627 is empty,
1628 the string from the previous specification of that type is used again.
1630 .It Xo Op Ar @ Ns Ar name-list Ns
1631 .Ar @ Ns Ar expr
1633 All messages that contain the given case-insensitive search
1634 .Ar expr Ns
1635 ession; if the \*(OPal regular expression (see
1636 .Xr re_format 7 )
1637 support is available
1638 .Ar expr
1639 will be interpreted as (an extended) one if any of the
1640 .Dq magical
1641 (extended) regular expression characters is seen.
1642 If the optional
1643 .Ar @ Ns Ar name-list
1644 part is missing, the search is restricted to the subject field body,
1645 but otherwise
1646 .Ar name-list
1647 specifies a comma-separated list of header fields to search, as in
1649 .Dl '@to,from,cc@Someone i ought to know'
1651 In order to search for a string that includes a
1652 .Ql @
1653 (commercial at) character the
1654 .Ar name-list
1655 is effectively non-optional, but may be given as the empty string.
1656 Some special header fields may be abbreviated:
1657 .Ql f ,
1658 .Ql t ,
1659 .Ql c ,
1660 .Ql b
1662 .Ql s
1663 will match
1664 .Ql From ,
1665 .Ql To ,
1666 .Ql Cc ,
1667 .Ql Bcc
1669 .Ql Subject ,
1670 respectively and case-insensitively.
1671 The special names
1672 .Ql header
1674 .Ql <
1675 can be used to search in (all of) the header(s) of the message, and the
1676 special names
1677 .Ql body
1679 .Ql >
1681 .Ql text
1683 .Ql =
1684 can be used to perform full text searches \(en whereas the former
1685 searches only the body, the latter also searches the message header.
1687 This message specification performs full text comparison, but even with
1688 regular expression support it is almost impossible to write a search
1689 expression that savely matches only a specific address domain.
1690 To request that the content of the header is treated as a list of
1691 addresses, and to strip those down to the plain email address which the
1692 search expression is to be matched against, prefix the header name
1693 (abbreviation) with a tilde
1694 .Ql ~ :
1696 .Dl @~f@@a\e.safe\e.domain\e.match$
1698 .It Ar address
1699 A case-insensitive
1700 .Dq any substring matches
1701 search against the
1702 .Ql From:
1703 header, which will match addresses (too) even if
1704 .Va showname
1705 is set (and POSIX says
1706 .Dq any address as shown in a header summary shall be matchable in this form ) ;
1707 However, if the
1708 .Va allnet
1709 variable is set, only the local part of the address is evaluated
1710 for the comparison, not ignoring case, and the setting of
1711 .Va showname
1712 is completely ignored.
1713 For finer control and match boundaries use the
1714 .Ql @
1715 search expression; the \*(OPal IMAP-style
1716 .Ql (from address)
1717 expression can also be used if substring matches are desired.
1721 \*(OP IMAP-style SEARCH expressions may also be used.
1722 This addressing mode is available with all types of folders;
1723 \*(UA will perform the search locally as necessary.
1724 Strings must be enclosed by double quotes
1725 .Ql \&"
1726 in their entirety if they contain white space or parentheses;
1727 within the quotes, only backslash
1728 .Ql \e
1729 is recognized as an escape character.
1730 All string searches are case-insensitive.
1731 When the description indicates that the
1732 .Dq envelope
1733 representation of an address field is used,
1734 this means that the search string is checked against both a list
1735 constructed as
1737 .Bd -literal -offset indent
1738 (\*qname\*q \*qsource\*q \*qlocal-part\*q \*qdomain-part\*q)
1742 for each address,
1743 and the addresses without real names from the respective header field.
1744 These search expressions can be nested using parentheses, see below for
1745 examples.
1748 .Bl -tag -compact -width ".It Ar _n_u"
1749 .It Ar ( criterion )
1750 All messages that satisfy the given
1751 .Ar criterion .
1752 .It Ar ( criterion1 criterion2 ... criterionN )
1753 All messages that satisfy all of the given criteria.
1755 .It Ar ( or criterion1 criterion2 )
1756 All messages that satisfy either
1757 .Ar criterion1
1759 .Ar criterion2 ,
1760 or both.
1761 To connect more than two criteria using
1762 .Ql or
1763 specifications have to be nested using additional parentheses,
1764 as with
1765 .Ql (or a (or b c)) ,
1766 since
1767 .Ql (or a b c)
1768 really means
1769 .Ql ((a or b) and c) .
1770 For a simple
1771 .Ql or
1772 operation of independent criteria on the lowest nesting level,
1773 it is possible to achieve similar effects by using three separate
1774 criteria, as with
1775 .Ql (a) (b) (c) .
1777 .It Ar ( not criterion )
1778 All messages that do not satisfy
1779 .Ar criterion .
1780 .It Ar ( bcc \*q Ns Ar string Ns Ar \*q )
1781 All messages that contain
1782 .Ar string
1783 in the envelope representation of the
1784 .Ql Bcc:
1785 field.
1786 .It Ar ( cc \*q Ns Ar string Ns Ar \*q )
1787 All messages that contain
1788 .Ar string
1789 in the envelope representation of the
1790 .Ql Cc:
1791 field.
1792 .It Ar ( from \*q Ns Ar string Ns Ar \*q )
1793 All messages that contain
1794 .Ar string
1795 in the envelope representation of the
1796 .Ql From:
1797 field.
1798 .It Ar ( subject \*q Ns Ar string Ns Ar \*q )
1799 All messages that contain
1800 .Ar string
1801 in the
1802 .Ql Subject:
1803 field.
1804 .It Ar ( to \*q Ns Ar string Ns Ar \*q )
1805 All messages that contain
1806 .Ar string
1807 in the envelope representation of the
1808 .Ql To:
1809 field.
1810 .It Ar ( header name \*q Ns Ar string Ns Ar \*q )
1811 All messages that contain
1812 .Ar string
1813 in the specified
1814 .Ql Name:
1815 field.
1816 .It Ar ( body \*q Ns Ar string Ns Ar \*q )
1817 All messages that contain
1818 .Ar string
1819 in their body.
1820 .It Ar ( text \*q Ns Ar string Ns Ar \*q )
1821 All messages that contain
1822 .Ar string
1823 in their header or body.
1824 .It Ar ( larger size )
1825 All messages that are larger than
1826 .Ar size
1827 (in bytes).
1828 .It Ar ( smaller size )
1829 All messages that are smaller than
1830 .Ar size
1831 (in bytes).
1833 .It Ar ( before date )
1834 All messages that were received before
1835 .Ar date ,
1836 which must be in the form
1837 .Ql d[d]-mon-yyyy ,
1838 where
1839 .Ql d
1840 denotes the day of the month as one or two digits,
1841 .Ql mon
1842 is the name of the month \(en one of
1843 .Ql Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ,
1845 .Ql yyyy
1846 is the year as four digits, e.g.,
1847 .Ql 28-Dec-2012 .
1849 .It Ar ( on date )
1850 All messages that were received on the specified date.
1851 .It Ar ( since date )
1852 All messages that were received since the specified date.
1853 .It Ar ( sentbefore date )
1854 All messages that were sent on the specified date.
1855 .It Ar ( senton date )
1856 All messages that were sent on the specified date.
1857 .It Ar ( sentsince date )
1858 All messages that were sent since the specified date.
1859 .It Ar ()
1860 The same criterion as for the previous search.
1861 This specification cannot be used as part of another criterion.
1862 If the previous command line contained more than one independent
1863 criterion then the last of those criteria is used.
1865 .\" }}}
1867 .\" .Ss "On URL syntax and credential lookup" {{{
1868 .Ss "On URL syntax and credential lookup"
1870 \*(IN For accessing protocol-specific resources usage of Uniform
1871 Resource Locators (URL, RFC 1738) has become omnipresent.
1872 \*(UA expects and understands URLs in the following form;
1873 parts in brackets
1874 .Ql []
1875 denote optional parts, optional either because there also exist other
1876 ways to define the information in question or because support of the
1877 part is protocol-specific (e.g.,
1878 .Ql /path
1879 is used by the IMAP protocol but not by POP3);
1880 If any of
1881 .Ql USER
1883 .Ql PASSWORD
1884 are specified they must be given in URL percent encoded form (RFC 3986;
1885 the commands
1886 .Ic urlencode
1888 .Ic urldecode
1889 may be helpful):
1892 .Dl PROTOCOL://[USER[:PASSWORD]@]server[:port][/path]
1895 Note that these \*(UA URLs most often don't conform to any real
1896 standard, but instead represent a normalized variant of RFC 1738 \(en
1897 they are not used in data exchange but only ment as a compact,
1898 easy-to-use way of defining and representing information in
1899 a well-known notation.
1902 Many internal variables of \*(UA exist in multiple versions, called
1903 variable chains for the rest of this document: the plain
1904 .Ql variable
1905 as well as
1906 .Ql variable-HOST
1908 .Ql variable-USER@HOST .
1909 Here
1910 .Ql HOST
1911 indeed means
1912 .Ql server:port
1913 if a
1914 .Ql port
1915 had been specified in the respective URL, otherwise it refers to the plain
1916 .Ql server .
1917 Also,
1918 .Ql USER
1919 isn't truly the
1920 .Ql USER
1921 that had been found when doing the user chain lookup as is described
1922 below, i.e., this
1923 .Ql USER
1924 will never be in URL percent encoded form, wether it came from an URL or
1925 not; i.e., values of
1926 .Sx "INTERNAL VARIABLES"
1927 must not be URL percent encoded.
1930 For example, wether an hypothetical URL
1931 .Ql smtp://hey%3Ayou@our.house
1932 had been given that includes a user, or wether the URL was
1933 .Ql smtp://our.house
1934 and the user had been found differently, to lookup the variable chain
1935 .Va smtp-use-starttls
1936 \*(UA first looks for wether
1937 .Ql smtp-\:use-\:starttls-\:hey:you@our.house
1938 is defined, then wether
1939 .Ql smtp-\:use-\:starttls-\:our.house
1940 exists before finally ending up looking at the plain variable itself.
1943 \*(UA obeys the following logic scheme when dealing with the
1944 necessary credential informations of an account:
1946 .Bl -bullet
1948 If no
1949 .Ql USER
1950 has been given in the URL the variables
1951 .Va user-HOST
1953 .Va user
1954 are looked up; if no such variable(s) can be found then \*(UA will,
1955 when enforced by the \*(OPal variables
1956 .Va netrc-lookup-HOST
1958 .Va netrc-lookup ,
1959 search the users
1960 .Pa .netrc
1961 file for a
1962 .Ql HOST
1963 specific entry which provides a
1964 .Ql login
1965 name: this lookup will only succeed if unambiguous (one possible matching
1966 entry for
1967 .Ql HOST ) .
1969 If there is still no
1970 .Ql USER
1971 then \*(UA will fall back to the user who is supposed to run \*(UA:
1972 either the name that has been given with the
1973 .Fl u
1974 command line option (or, equivalently, but with less precedence, the
1975 environment variable
1976 .Ev USER ) ,
1977 or the
1978 .Dq current
1979 user.
1980 The identity of this user has been fixated during \*(UA startup and is
1981 known to be a valid user on the current host.
1984 Authentication: unless otherwise noted this will lookup the
1985 .Va PROTOCOL-auth-USER@HOST , PROTOCOL-auth-HOST , PROTOCOL-auth
1986 variable chain, falling back to a protocol-specific default should this
1987 have no success.
1990 If no
1991 .Ql PASSWORD
1992 has been given in the URL, then if the
1993 .Ql USER
1994 has been found through the \*(OPal
1995 .Va netrc-lookup
1996 then that may have already provided the password, too.
1997 Otherwise the variable chain
1998 .Va password-USER@HOST , password-HOST , password
1999 is looked up and used if existent.
2001 \*(OP Then if any of the variables of the chain
2002 .Va agent-shell-lookup-USER@HOST , agent-shell-lookup-HOST , \
2003   agent-shell-lookup
2004 is set the shell command specified therein is run and the output (less
2005 newline characters) will be used as the password.
2006 It is perfectly valid for such an agent to simply not return any data,
2007 in which case the password lookup is continued somewhere else;
2008 Any command failure is treated as a hard error, however.
2010 Afterwards the complete \*(OPal variable chain
2011 .Va netrc-lookup-USER@HOST , netrc-lookup-HOST , netrc-lookup
2012 is looked up.
2013 If set, the
2014 .Pa .netrc
2015 cache is searched for a password only (multiple user accounts for
2016 a single machine may exist as well as a fallback entry without user
2017 but with a password).
2019 If at that point there is still no password available, but the
2020 (protocols') chosen authentication type requires a password, then in
2021 interactive mode the user will be prompted on the terminal.
2025 .Sy Note:
2026 S/MIME verification works relative to the values found in the
2027 .Ql From:
2029 .Ql Sender: )
2030 header field(s), which means that the values of
2031 .Va smime-sign , smime-sign-cert , smime-sign-include-certs
2033 .Va smime-sign-message-digest
2034 will not be looked up using the
2035 .Ql USER
2037 .Ql HOST
2038 chains from above but instead use the corresponding values from the
2039 message that is being worked on.
2040 In unusual cases multiple and different
2041 .Ql USER
2043 .Ql HOST
2044 combinations may therefore be involved \(en on the other hand those
2045 unusual cases become possible.
2046 The usual case is as short as:
2049 .Dl set smtp=smtp://USER:PASS@HOST smtp-use-starttls \e
2050 .Dl \ \ \ \ smime-sign smime-sign-cert=+smime.pair
2053 The section
2054 .Sx EXAMPLES
2055 contains complete example configurations.
2056 .\" }}}
2058 .\" .Ss "Command line editor" {{{
2059 .Ss "Command line editor"
2061 \*(OP \*(UA can be configured to support a command line editor and
2062 command history lists which are saved in between sessions.
2063 One may link against fully-fledged external libraries
2064 .Pf ( Xr readline 6 ,
2065 .Xr editline 3 Ns
2066 ) or use \*(UA's own command line editor NCL (Nail-Command-Line)
2067 instead, which should work in all environments which comply to the
2068 ISO C standard (ISO/IEC 9899:1990/Amendment 1:1995).
2069 When an external library is used, interactive behaviour of \*(UA relies
2070 on that library and may not correspond one-to-one to what is described
2071 in this manual.
2074 Regardless of the actually used command line editor
2075 .Ic history
2076 entries will be created for lines entered in command mode only, and
2077 creation of such an entry can be forcefully suppressed by starting the
2078 line with a space character.
2079 Note that
2080 .Ic history
2081 handling is by itself an optional feature and may therefore not be
2082 available.
2083 For more information see the documentation of the variables
2084 .Va emptystart ,
2085 .Va history-file ,
2086 .Va history-gabby ,
2087 .Va history-gabby-persist ,
2088 .Va history-size
2090 .Va line-editor-disable .
2091 And there is also the \*(OPal
2092 .Va term-ca-mode
2093 will can be set to cause overall screen resets when \*(UA releases the
2094 terminal in interactive mode.
2097 The builtin \*(UA command line editor supports the following operations;
2098 the notation
2099 .Ql ^-character
2100 stands for the combination of the
2101 .Dq Control
2102 key plus the mentioned character, e.g.,
2103 .Ql ^A
2104 means
2105 .Dq hold down control key and press the A key :
2108 .Bl -tag -compact -width "Ql _M"
2109 .It Ql ^A
2110 Go to the start of the line.
2111 .It Ql ^B
2112 Move the cursor backward one character.
2113 .It Ql ^D
2114 Forward delete the character under the cursor;
2115 quits \*(UA if used on the empty line unless the
2116 .Va ignoreeof
2117 option is set.
2118 .It Ql ^E
2119 Go to the end of the line.
2120 .It Ql ^F
2121 Move the cursor forward one character.
2123 .It Ql ^G
2124 Cancel current operation, full reset.
2125 If there is an active history search or tabulator expansion then this
2126 command will first reset that, reverting to the former line content;
2127 thus a second reset is needed for a full reset in this case.
2128 In all cases \*(UA will reset a possibly used multibyte character input
2129 state machine.
2131 .It Ql ^H
2132 The same as
2133 .Dq backspace :
2134 backward delete one character.
2136 .It Ql ^I
2137 \*(OP The same as
2138 .Dq horizontal tabulator :
2139 try to expand the word before the cursor.
2140 (Note this is not
2141 .Dq tabulator-completion
2142 as is known from the
2143 .Xr sh 1
2144 but really means the usual \*(UA expansion, as documented for
2145 .Ic file ,
2146 yet it involves shell expansion as a last step, too.)
2148 .It Ql ^J
2149 The same as
2150 .Dq ENTER :
2151 complete this line of input.
2152 .It Ql ^K
2153 Delete all characters from the cursor to the end of the line.
2154 .It Ql ^L
2155 Repaint the line.
2156 .It Ql ^N
2157 \*(OP Go to the next history entry.
2158 .It Ql ^O
2159 Execute the command
2160 .Ic dp .
2161 .It Ql ^P
2162 \*(OP Go to the previous history entry.
2163 .It Ql ^R
2164 \*(OP Complete the current line from (the remaining older) history entries.
2165 .It Ql ^U
2166 The same as
2167 .Ql ^A
2168 followed by
2169 .Ql ^K .
2170 .It Ql ^W
2171 Delete the characters from the one preceding the cursor to the preceding
2172 word boundary.
2173 .It Ql ^X
2174 Move the cursor forward one word boundary.
2175 .It Ql ^Y
2176 Move the cursor backward one word boundary.
2180 If problems with commands that are based upon rightwise movement are
2181 encountered, adjustments of the option
2182 .Va line-editor-cursor-right
2183 may solve the problem, as documented for it.
2186 If the terminal produces key sequences which are compatible with
2187 .Xr xterm 1
2188 then the left and right cursor keys will map to
2189 .Ql ^B
2191 .Ql ^F ,
2192 respectively, the up and down cursor keys will map to
2193 .Ql ^P
2195 .Ql ^N ,
2196 and the Home/End/PgUp/PgDown keys will call the
2197 .Ic z
2198 command with the respective arguments
2199 .Ql 0 ,
2200 .Ql $ ,
2201 .Ql -
2203 .Ql +
2204 (i.e., perform scrolling through the header summary list).
2205 .\" }}}
2207 .\" .Ss "Coloured display" {{{
2208 .Ss "Coloured display"
2210 \*(OP \*(UA can be configured to support coloured display,
2211 realized by emitting ISO 6429 (ECMA-48 / ANSI) terminal control escape
2212 sequences for colour and font attribute control.
2213 At least the latter can optionally be used on a monochrome display, too.
2214 Colour usage depends on the value of the environment variable
2215 .Ev TERM :
2216 if that is not set or set to the value
2217 .Ql dumb
2218 then this section doesn't apply, if the value includes the string
2219 .Ql color ,
2220 or if it can be found (case-insensitively) in the variable
2221 .Va colour-terms
2222 then \*(UA will assume a colour-enabled display, but otherwise
2223 a monochrome display is assumed.
2226 On top of what \*(UA knows about the terminal the boolean variable
2227 .Va colour-pager
2228 defines wether colour and font attribute sequences should also be
2229 generated when the output of a command needs to go through the
2230 .Ev PAGER
2231 (also see
2232 .Va crt Ns
2234 This is not enabled by default because different pager programs need
2235 different command line switches or other configuration in order to
2236 support those colour sequences.
2237 \*(UA knows about some widely used pagers and in a clean environment
2238 it is often enough to simply set
2239 .Va colour-pager ;
2240 please refer to that variable for more on this topic.
2243 If the variable
2244 .Va colour-disable
2245 is set then any active usage of colour and font attribute sequences
2246 is suppressed, but without affecting possibly established
2247 .Ic colour
2249 .Ic mono Ns
2250 chrome mappings.
2253 To define and control colours and font attributes two commands exist:
2254 .Ic colour
2255 shows or defines colour mappings which are used if coloured display is
2256 possible and
2257 .Ic mono
2258 shows or defines font attribute mappings for monochrome displays.
2259 The commands
2260 .Ic uncolour
2262 .Ic unmono
2263 can be used to remove mappings.
2264 The following (case-insensitive) keywords and attributes exist:
2266 .Bl -tag -width ft=
2267 .It Cd ft=
2268 a font attribute:
2269 .Ql bold ,
2270 .Ql reverse
2272 .Ql underline .
2273 It is possible (and often applicable) to specify multiple font
2274 attributes for a single mapping.
2275 .It Cd fg=
2276 foreground colour attribute:
2277 .Ql black ,
2278 .Ql blue ,
2279 .Ql green ,
2280 .Ql red ,
2281 .Ql brown ,
2282 .Ql magenta ,
2283 .Ql cyan
2285 .Ql white .
2286 .It Cd bg=
2287 background colour attribute (see
2288 .Cd fg=
2289 for possible values).
2293 When creating a colour or font attribute mapping for one of the
2294 mappable slots (the command
2295 .Ic colour
2296 gives a listing of all possible slots) multiple keywords / attribute
2297 pairs can be joined in a comma-separated list:
2299 .Bd -literal -offset indent
2300 if terminal
2301   colour view-header ft=bold,fg=magenta,bg=cyan
2303   mono   view-header ft=bold
2304   mono   view-header ft=bold,ft=reverse subject,from
2306   unmono view-header
2307   unmono view-header subject,from
2308   uncolour view-header
2309 endif
2311 .\" }}}
2312 .\" }}} (DESCRIPTION)
2315 .\" .Sh COMMANDS {{{
2316 .Sh COMMANDS
2318 Each command is typed on a line by itself,
2319 and may take arguments following the command word.
2320 The command need not be typed in its entirety \(en
2321 the first command which matches the typed prefix is used.
2322 An \(en alphabetically \(en sorted list of commands can be shown
2323 with the command
2324 .Ic list ,
2325 and the command
2326 .Ic help
2328 .Ic \&? ) ,
2329 when given an argument, will show a documentation string for the
2330 command matching the expanded argument, as in
2331 .Ql ?t ,
2332 which should be a shorthand of
2333 .Ql ?type ;
2334 documentation strings are however \*(OPal.
2337 For commands which take message lists as arguments, the next message
2338 forward that satisfies the command's requirements will be used shall no
2339 explicit message list have been specified.
2340 If there are no messages forward of the current message,
2341 the search proceeds backwards,
2342 and if there are no good messages at all,
2343 \*(UA types
2344 .Dq no applicable messages
2345 and aborts the command.
2346 The arguments to commands can be quoted, using the following methods:
2349 .Bl -bullet -compact -offset indent
2351 An argument can be enclosed between paired double-quotes
2352 .Ql """argument"""
2354 single-quotes
2355 .Ql 'argument' ;
2356 any white space, shell word expansion, or backslash characters (except
2357 as described next) within the quotes are treated literally as part of
2358 the argument.
2359 A double-quote will be treated literally within single-quotes and vice
2360 versa.
2361 Inside such a quoted string the actually used quote character can be
2362 used nonetheless by escaping it with a backslash
2363 .Ql \e ,
2364 as in
2365 .Ql """y\e""ou""" .
2368 An argument that is not enclosed in quotes, as above, can usually still
2369 contain space characters if those spaces are backslash-escaped, as in
2370 .Ql you\e are .
2373 A backslash outside of the enclosing quotes is discarded
2374 and the following character is treated literally as part of the argument.
2377 An unquoted backslash at the end of a command line is discarded and the
2378 next line continues the command.
2382 Filenames, where expected, are subsequently subjected to the following
2383 transformations, in sequence:
2386 .Bl -bullet -compact -offset indent
2388 If the filename begins with an unquoted plus sign, and the
2389 .Va folder
2390 variable is defined,
2391 the plus sign will be replaced by the value of the
2392 .Va folder
2393 variable followed by a slash.
2394 If the
2395 .Va folder
2396 variable is unset or is set to null, the filename will be unchanged.
2399 Shell word expansions are applied to the filename.
2400 .\" TODO shell word expansion shell expand fexpand FEXP_NSHELL
2401 .Sy Compatibility note:
2402 on the long run support for complete shell word expansion will be
2403 replaced by an internally implemented restricted expansion mechanism in
2404 order to circumvent possible security impacts through shell expansion.
2405 Expect that a growing number of program parts only support this
2406 restricted syntax:
2408 Meta expansions are applied to the filename: leading tilde characters
2409 .Pf ( Ql ~/ )
2410 will be replaced by the expansion of
2411 .Ev HOME ,
2412 and any occurrence of
2413 .Ql $VARIABLE
2415 .Ql ${VARIABLE} )
2416 will be replaced by the expansion of the variable, if possible;
2417 \*(UA internal as well as environmental (shell) variables can be
2418 accessed through this mechanism.
2419 In order to include a raw
2420 .Ql $
2421 character precede it with a backslash
2422 .Ql \e ,
2423 to include a backslash double it.
2424 If more than a single pathname results from this expansion and the
2425 command is expecting one file, an error results.
2427 Note that in interactive display context, in order to allow simple
2428 value acceptance (typing
2429 .Dq ENTER ) ,
2430 backslash quoting is performed automatically as necessary, e.g., a file
2431 .Ql diet\e is \ecurd.txt
2432 will be displayed as
2433 .Ql diet\e\e is \e\ecurd.txt .
2437 The following commands are available:
2439 .Bl -tag -width ".Ic _ccount"
2441 .It Ic \&!
2442 Executes the
2443 .Ev SHELL
2444 (see
2445 .Xr sh 1 Ns
2446 ) command which follows.
2449 .It Ic #
2450 The comment-command causes the entire line to be ignored.
2451 .Sy Note:
2452 this really is a normal command which' purpose is to discard its
2453 arguments, not a
2454 .Dq comment-start
2455 indicating special character, which means that, e.g., trailing comments
2456 on a line are not possible.
2459 .It Ic +
2460 Goes to the next message in sequence and types it
2461 (like
2462 .Dq ENTER ) .
2465 .It Ic -
2466 Display the preceding message, or the n'th previous message if given
2467 a numeric argument n.
2470 .It Ic =
2471 Show the current message number (the
2472 .Dq dot ) .
2475 .It Ic \&?
2476 Show a brief summary of commands.
2477 \*(OP Given an argument a synopsis for the command in question is
2478 shown instead; commands can be abbreviated in general and this command
2479 can be used to see the full expansion of an abbreviation including the
2480 synopsis, try, e.g.,
2481 .Ql ?h ,
2482 .Ql ?hel
2484 .Ql ?help
2485 and see how the output changes.
2488 .It Ic \&|
2489 A synonym for the
2490 .Ic pipe
2491 command.
2494 .It Ic ~
2495 Interprets the remainder of the word as a macro name and passes it
2496 through to the
2497 .Ic call
2498 command; e.g.,
2499 .Ql ~ Ns Ar mymacro
2500 is a shorter synonym for
2501 .Ql call Ar mymacro .
2504 .It Ic account
2505 (ac) Creates, selects or lists (an) account(s).
2506 An account is a group of commands and variable settings which together
2507 usually arrange the environment for the purpose of creating a system login.
2508 Without any argument a listing of all defined accounts and their content
2509 is shown.
2510 A specific account can be activated by giving solely its name, resulting
2511 in the system mailbox or inbox of that account to be activated as via an
2512 explicit use of the command
2513 .Ic file .
2514 The two argument form is identical to defining a macro as via
2515 .Ic define .
2516 For example:
2517 .Bd -literal -offset indent
2518 account myisp {
2519   set folder=imaps://mylogin@imap.myisp.example
2520   set record=+Sent
2521   set from="myname@myisp.example (My Name)"
2522   set smtp=smtp://mylogin@smtp.myisp.example
2526 creates an account named
2527 .Ql myisp
2528 which can later be selected by specifying
2529 .Ql account myisp .
2530 The special account
2531 .Ql null
2532 (case-insensitive) always exists.
2533 .Ic localopts
2534 can be used to localize account settings \(en different to normal macros
2535 the settings will be reverted once the account is switched off.
2536 Accounts can be deleted via
2537 .Ic unaccount .
2540 .It Ic alias
2541 (a) With no arguments, shows all currently-defined aliases.
2542 With one argument, shows that alias.
2543 With more than one argument,
2544 creates a new alias or appends to an existing one.
2545 .Ic unalias
2546 can be used to delete aliases.
2549 .It Ic alternates
2550 (alt) Manage a list of alternate addresses / names of the active user,
2551 members of which will be removed from recipient lists when replying to
2552 messages (and the
2553 .Va metoo
2554 variable is not set).
2555 If arguments are given the set of alternate names is replaced by them,
2556 without arguments the current set is displayed.
2559 .It Ic answered
2560 Takes a message list and marks each message as having been answered.
2561 This mark has no technical meaning in the mail system;
2562 it just causes messages to be marked in the header summary,
2563 and makes them specially addressable.
2566 .It Ic cache
2567 \*(OP\*(OB Only applicable to cached IMAP mailboxes;
2568 takes a message list and reads the specified messages into the IMAP
2569 cache.
2572 .It Ic call
2573 Calls a macro that has been created via
2574 .Ic define .
2577 .It Ic cd
2578 (ch) Change the working directory to
2579 .Ev HOME
2580 or the given argument.
2581 Synonym for
2582 .Ic chdir .
2585 .It Ic certsave
2586 \*(OP Only applicable to S/MIME signed messages.
2587 Takes a message list and a file name and saves the certificates
2588 contained within the message signatures to the named file in both
2589 human-readable and PEM format.
2590 The certificates can later be used to send encrypted messages to the
2591 respective message senders by setting
2592 .Va smime-encrypt-USER@HOST
2593 variables.
2596 .It Ic chdir
2597 (ch) Change the working directory to
2598 .Ev HOME
2599 or the given argument.
2600 Synonym for
2601 .Ic cd .
2604 .It Ic collapse
2605 Only applicable to threaded mode.
2606 Takes a message list and makes all replies to these messages invisible
2607 in header summaries, unless they are in state
2608 .Ql new .
2612 .It Ic colour
2613 \*(OP Without arguments the list of all currently defined colour
2614 mappings is shown.
2615 If given two or three arguments a mapping of colour and font attributes,
2616 as documented in the section
2617 .Sx "Coloured display" ,
2618 is established for the given slot, e.g.:
2620 .Bd -literal -offset indent
2621 colour view-msginfo ft=bold,fg=green
2622 colour view-header  ft=bold,fg=red   "from,subject"
2623 colour view-header  fg=red
2625 uncolour view-header from,subject
2629 If called with two arguments a default mapping is created, the optional
2630 third argument defines a mapping with precondition: if conditioned
2631 mappings exist they are tested in (creation) order unless
2632 a (case-insensitive) match has been found, and the default mapping (if
2633 any) will only be chosen as a last resort.
2634 The available types of preconditions depend on the mappable slot.
2635 The following mappable slots exist:
2638 .Bl -tag -compact -width view-partinfo
2639 .It Cd sum-dotmark
2640 Mappings prefixed with
2641 .Ql sum-
2642 are used in header summaries, and they all understand the preconditions
2643 .Ql dot
2644 (the current message) and
2645 .Ql older
2646 for elder messages (only honoured in conjunction with
2647 .Va datefield-markout-older ) .
2648 This mapping is used for the
2649 .Dq dotmark
2650 that can be created with the
2651 .Ql %>
2653 .Ql %<
2654 formats of the variable
2655 .Va headline .
2656 .It Cd sum-header
2657 For the complete header summary line except the
2658 .Dq dotmark
2659 and the thread structure.
2660 .It Cd sum-thread
2661 For the thread structure which can be created with the
2662 .Ql %i
2663 format of the variable
2664 .Va headline .
2666 .It Cd view-from_
2667 Mappings prefixed with
2668 .Ql view-
2669 are used when displaying messages.
2670 This mapping is used for so-called
2671 .Ql From_
2672 lines, which are MBOX file format specific header lines.
2673 .It Cd view-header
2674 For header lines.
2675 A comma-separated list of headers to which the mapping applies may be
2676 given as a precondition; if the \*(OPal regular expression support is
2677 available then if any of the
2678 .Dq magical
2679 (extended) regular expression characters is seen the precondition will
2680 be evaluated as (an extended) one.
2681 .It Cd view-msginfo
2682 For the introductional message info line.
2683 .It Cd view-partinfo
2684 For MIME part info lines.
2688 Colour mappings may be removed with the command
2689 .Ic uncolour ,
2690 as shown above; Use the command
2691 .Ic mono
2692 to create mappings for monochrome displays.
2696 .It Ic connect
2697 \*(OP\*(OB If operating in disconnected mode on an IMAP mailbox,
2698 switch to online mode and connect to the mail server while retaining
2699 the mailbox status.
2700 See the description of the
2701 .Va disconnected
2702 variable for more information.
2705 .It Ic Copy
2706 (C) Copy messages to files whose names are derived from the author of
2707 the respective message and don't mark them as being saved;
2708 otherwise identical to
2709 .Ic Save .
2712 .It Ic copy
2713 (c) Copy messages to the named file and don't mark them as being saved;
2714 otherwise identical to
2715 .Ic save .
2718 .It Ic cwd
2719 Show the name of the current working directory.
2722 .It Ic Decrypt
2723 \*(OP For unencrypted messages this command is identical to
2724 .Ic Copy ;
2725 Encrypted messages are first decrypted, if possible, and then copied.
2728 .It Ic decrypt
2729 \*(OP For unencrypted messages this command is identical to
2730 .Ic copy ;
2731 Encrypted messages are first decrypted, if possible, and then copied.
2734 .It Ic define
2735 Without arguments the current list of macros, including their content,
2736 is shown, otherwise a macro is defined.
2737 A macro definition is a sequence of commands in the following form:
2738 .Bd -literal -offset indent
2739 define name {
2740   command1
2741   command2
2742   ...
2743   commandN
2747 A defined macro can be invoked explicitly by using the
2748 .Ic call
2750 .Ic ~
2751 commands, or implicitly by setting the
2752 .Va folder-hook
2754 .Va folder-hook-FOLDER
2755 variables.
2756 Note that interpretation of
2757 .Ic localopts
2758 depends on how (i.e.,
2759 .Dq as what :
2760 normal macro, folder hook, account switch) the macro is invoked.
2761 Macros can be deleted via
2762 .Ic undefine .
2763 .Bd -filled -compact -offset indent
2764 .Sy \*(ID:
2765 Macro behaviour, including option localization, will change in v15.
2766 To be on the absolutely safe side and avoid any surprises it may be wise
2767 to use wrappers that depend on the program version, e.g.,:
2769 .Bd -literal -offset indent
2770 if $version-major < 15
2771   define name {
2772     echo "pre v15"
2773   }
2774 else
2775   define name {
2776     echo "Please reverify macro name (post v15)"
2777   }
2778 endif
2782 .It Ic delete
2783 (d) Marks the given message list as
2784 .Ql deleted .
2785 Deleted messages will neither be saved in
2786 .Ev MBOX
2787 nor will they be available for most other commands.
2790 .It Ic discard
2791 (di) Identical to
2792 .Ic ignore .
2793 Also see
2794 .Ic retain .
2797 .It Ic disconnect
2798 \*(OP\*(OB (disco) If operating in online mode on an IMAP mailbox,
2799 switch to disconnected mode while retaining the mailbox status.
2800 See the description of the
2801 .Va disconnected
2802 variable for more.
2803 A list of messages may optionally be given as argument;
2804 the respective messages are then read into the cache before the
2805 connection is closed.
2806 Thus `disco *' makes the entire mailbox available for disconnected use.
2810 .It Ic dp , dt
2811 Deletes the current message and displays the next message.
2812 If there is no next message, \*(UA says
2813 .Dq at EOF .
2816 .It Ic draft
2817 Takes a message list and marks each given message as a draft.
2818 This mark has no technical meaning in the mail system;
2819 it just causes messages to be marked in the header summary,
2820 and makes them specially addressable.
2823 .It Ic echo
2824 (ec) Echoes its arguments,
2825 resolving special names as documented for the command
2826 .Ic file .
2827 The escape sequences
2828 .Ql \ea ,
2829 .Ql \eb ,
2830 .Ql \ec ,
2831 .Ql \ef ,
2832 .Ql \en ,
2833 .Ql \er ,
2834 .Ql \et ,
2835 .Ql \ev ,
2836 .Ql \e\e
2838 .Ql \e0octal-num
2839 are interpreted just as they are by
2840 .Xr printf 1
2841 (proper quoting provided).
2844 .It Ic edit
2845 (e) Point the text editor (as defined in
2846 .Ev EDITOR )
2847 at each message from the given list in turn.
2848 Modified contents are discarded unless the
2849 .Va writebackedited
2850 variable is set.
2853 .It Ic elif
2854 Part of the
2855 .Ic if Ns / Ns Ic elif Ns / Ns Ic else Ns / Ns Ic endif
2856 conditional \(em if the condition of a preceeding
2857 .Ic if
2858 was false, check the following condition and execute the following block
2859 if it evaluates true.
2862 .It Ic else
2863 (el) Part of the
2864 .Ic if Ns / Ns Ic elif Ns / Ns Ic else Ns / Ns Ic endif
2865 conditional \(em if none of the conditions of the preceeding
2866 .Ic if
2868 .Ic elif
2869 commands was true, the
2870 .Ic else
2871 block is executed.
2874 .It Ic endif
2875 (en) Marks the end of an
2876 .Ic if Ns / Ns Ic elif Ns / Ns Ic else Ns / Ns Ic endif
2877 conditional execution block.
2880 .It Ic errors
2881 \*(OP Since \*(UA uses the console as a user interface it can happen
2882 that messages scroll by too fast to become recognized.
2883 Optionally an error message ring queue is available which stores
2884 duplicates of any error message and notifies the user in interactive
2885 sessions whenever a new error has occurred.
2886 The queue is finite: if its maximum size is reached any new message
2887 replaces the eldest.
2888 The command
2889 .Ic errors
2890 can be used to manage this message queue: if given
2891 .Ar show
2892 or no argument the queue will be displayed and cleared,
2893 .Ar clear
2894 will only clear all messages from the queue.
2897 .It Ic exit
2898 (ex or x) Exit from \*(UA without changing the active mailbox and skip
2899 any saving of messages in
2900 .Ev MBOX
2901 as well as a possibly tracked command line editor history file.
2904 .It Ic features
2905 Show the list of features that have been compiled into \*(UA.
2906 (Outputs the contents of the variable
2907 .Va features . )
2910 .It Ic File
2911 (Fi) Like
2912 .Ic file ,
2913 but open the mailbox readonly.
2916 .It Ic file
2917 (fi) The file command switches to a new mailbox.
2918 Without arguments it shows status information of the current mailbox.
2919 If an argument is given, it will write out changes (such as deletions)
2920 the user has made and open a new mailbox.
2921 Some special conventions are recognized for the
2922 .Ar name
2923 argument:
2925 .Bl -tag -compact -offset indent -width ".Ar %:__lespec"
2926 .It Ar #
2927 (number sign) means the previous file,
2928 .It Ar %
2929 (percent sign) means the invoking user's system mailbox
2930 (or the value of
2931 .Va folder
2932 for IMAP folders),
2933 .It Ar %user
2934 means the system mailbox of
2935 .Ar user
2936 (and never the value of
2937 .Va folder ,
2938 regardless of its actual setting),
2939 .It Ar &
2940 (ampersand) means the invoking user's
2941 .Ev MBOX
2942 file and
2943 .It Ar +file
2944 means a
2945 .Ar file
2946 in the
2947 .Va folder
2948 directory.
2949 .It Ar %:filespec
2950 expands to the same value as
2951 .Ar filespec ,
2952 but the file is handled as a system mailbox by, e.g., the
2953 .Ic mbox
2955 .Ic save
2956 commands, meaning that messages that have been read in the current
2957 session will be moved to the
2958 .Ev MBOX
2959 mailbox instead of simply being flagged as read.
2962 If the name matches one of the strings defined with the command
2963 .Ic shortcut ,
2964 it is replaced by its long form and expanded.
2965 If the name ends with
2966 .Ql .gz ,
2967 .Ql .bz2
2969 .Ql .xz
2970 it is treated as being compressed with
2971 .Xr gzip 1 ,
2972 .Xr bzip2 1
2974 .Xr xz 1 ,
2975 respectively, and transparently handled through an intermediate
2976 (un)compression step (using a temporary file) with the according
2977 facility, sufficient support provided.
2978 Likewise, if the named file doesn't exist, but a file with one of the
2979 mentioned compression extensions does, then the name is automatically
2980 expanded and the compressed file is used.
2982 Otherwise, if the name ends with an extension for which
2983 .Va file-hook-load-EXTENSION
2985 .Va file-hook-save-EXTENSION
2986 variables are set, then the given hooks will be used to load and save
2987 .Dq name ,
2988 and \*(UA will work with an intermediate temporary file.
2990 MBOX files (flat file-based mailboxes) are generally locked during file
2991 operations in order to avoid inconsistencies due to concurrent
2992 modifications.
2993 \*(OPal Mailbox files which \*(UA treats as system or primary mailboxes
2994 will also be protected by so-called dotlock files, the traditional way
2995 of mail spool file locking: for any file
2996 .Ql a
2997 a lock file
2998 .Ql a.lock
2999 will be created for the duration of the synchronization \(em
3000 as necessary a privilege-separated dotlock child process will be used
3001 to accommodate for necessary privilege adjustments in order to create
3002 the dotlock file in the same directory
3003 and with the same user and group identities as the file of interest.
3004 Also see
3005 .Va mbox-rfc4155
3006 for fine-tuning the handling of MBOX files.
3009 .Ar name
3010 refers to a directory with the subdirectories
3011 .Ql tmp ,
3012 .Ql new
3014 .Ql cur ,
3015 then it is treated as a folder in
3016 .Dq Maildir
3017 format.
3018 A name of the form
3020 .Dl \*(IN protocol://[user[:password]@]host[:port][/path]
3021 .Dl \*(OU protocol://[user@]host[:port][/path]
3023 is taken as an Internet mailbox specification.
3024 The \*(OPally supported protocols are
3025 .Ar pop3
3026 (POP3) and
3027 .Ar pop3s
3028 (POP3 with SSL/TLS encrypted transport).
3030 .Ar [/path]
3031 part is valid only for IMAP; there it defaults to
3032 .Ar INBOX .
3033 Also see the section
3034 .Sx "On URL syntax and credential lookup" .
3036 \*(OU If
3037 .Ar user
3038 contains special characters, in particular
3039 .Ql /
3041 .Ql % ,
3042 they must be escaped in URL notation \(en the command
3043 .Ic urlencode
3044 can be used to show the necessary conversion.
3045 The optional `path' part applies to IMAP only;
3046 if it is omitted, the default `INBOX' is used.
3048 If \*(UA is connected to an IMAP server,
3049 a name of the form `@mailbox' refers to the `mailbox' on that server,
3050 but otherwise a `@' prefix has no special meaning.
3053 .It Ic flag
3054 Takes a message list and marks the messages as
3055 .Ic flag Ns
3056 ged for urgent/special attention.
3057 This mark has no technical meaning in the mail system;
3058 it just causes messages to be highlighted in the header summary,
3059 and makes them specially addressable.
3062 .It Ic folder
3063 (fold) The same as
3064 .Ic file .
3067 .It Ic folders
3068 With no arguments, list the names of the folders in the folder directory.
3069 With an existing folder as an argument,
3070 lists the names of folders below the named folder;
3071 e.\|g. the command `folders @' lists the folders on the base level of
3072 the current IMAP server.
3073 See also the variable
3074 .Va imap-list-depth .
3077 .It Ic Followup
3078 (F) Similar to
3079 .Ic Respond ,
3080 but saves the message in a file named after the local part of the first
3081 recipient's address (instead of in
3082 .Va record Ns ).
3085 .It Ic followup
3086 (fo) Similar to
3087 .Ic respond ,
3088 but saves the message in a file named after the local part of the first
3089 recipient's address (instead of in
3090 .Va record Ns ).
3093 .It Ic followupall
3094 Similar to
3095 .Ic followup ,
3096 but responds to all recipients regardless of the
3097 .Va flipr
3098 variable.
3101 .It Ic followupsender
3102 Similar to
3103 .Ic Followup ,
3104 but responds to the sender only regardless of the
3105 .Va flipr
3106 variable.
3109 .It Ic Forward
3110 Alias for
3111 .Ic Fwd .
3114 .It Ic forward
3115 Alias for
3116 .Ic fwd .
3119 .It Ic from
3120 (f) Takes a list of message specifications and displays a summary of
3121 their message headers, as via
3122 .Ic headers .
3123 An alias of this command is
3124 .Ic search .
3125 Also see
3126 .Sx "Specifying messages" .
3129 .It Ic Fwd
3130 Similar to
3131 .Ic fwd ,
3132 but saves the message in a file named after the local part of the
3133 recipient's address (instead of in
3134 .Va record Ns ).
3137 .It Ic fwd
3138 Takes a message and the address of a recipient
3139 and forwards the message to him.
3140 The text of the original message is included in the new one,
3141 with the value of the
3142 .Va fwdheading
3143 variable preceding it.
3145 .Ic fwdignore
3147 .Ic fwdretain
3148 commands specify which header fields are included in the new message.
3149 Only the first part of a multipart message is included unless the
3150 .Va forward-as-attachment
3151 option is set.
3152 Unless the option
3153 .Va fullnames
3154 is set recipient addresses will be stripped from comments, names etc.
3157 .It Ic fwdignore
3158 Specifies which header fields are to be ignored with the command
3159 .Ic fwd .
3160 This command has no effect when the
3161 .Va forward-as-attachment
3162 option is set.
3165 .It Ic fwdretain
3166 Specifies which header fields are to be retained with the command
3167 .Ic fwd .
3168 .Ic fwdretain
3169 overrides
3170 .Ic fwdignore .
3171 This command has no effect when the
3172 .Va forward-as-attachment
3173 option is set.
3176 .It Ic ghost
3177 Define or list command aliases, so-called ghosts.
3178 Without arguments a list of all currently known aliases is shown.
3179 With one argument the expansion of the given alias is shown.
3180 With two or more arguments a command alias is defined or updated: the
3181 first argument is the name under which the remaining command line should
3182 be accessible, the content of which can be just about anything.
3183 A ghost can be used everywhere a normal command can be used, but always
3184 takes precedence; any arguments that are given to the command alias are
3185 joined onto the alias content, and the resulting string forms the
3186 command line that is, in effect, executed.
3187 Also see
3188 .Ic unghost .
3189 .Bd -literal -offset indent
3190 ? gh xx
3191 `ghost': no such alias: "xx"
3192 ? gh xx echo hello,
3193 ? gh xx
3194 ghost xx "echo hello,"
3195 ? xx
3196 hello,
3197 ? xx world
3198 hello, world
3202 .It Ic headers
3203 (h) Show the current group of headers, the size of which depends on
3204 the variable
3205 .Va screen
3206 and the style of which can be adjusted with the variable
3207 .Va headline .
3208 If a message-specification is given the group of headers containing the
3209 first message therein is shown and the message at the top of the screen
3210 becomes the new
3211 .Dq dot .
3214 .It Ic help
3215 (hel) A synonym for
3216 .Ic \&? .
3219 .It Ic history
3220 \*(OP Either
3221 .Ar show
3223 .Ar clear
3224 the list of history entries;
3225 a decimal
3226 .Ar NUMBER
3227 argument selects and shows the respective history entry \(en
3228 press
3229 .Dq ENTER
3230 to accept it, and the history entry will become the new history top.
3231 The default mode if no arguments are given is
3232 .Ar show .
3235 .It Ic hold
3236 (ho, also
3237 .Ic preserve )
3238 Takes a message list and marks each message therein to be saved in the
3239 user's system mailbox instead of in
3240 .Ev MBOX .
3241 Does not override the
3242 .Ic delete
3243 command.
3244 \*(UA deviates from the POSIX standard with this command, because a
3245 .Ic next
3246 command issued after
3247 .Ic hold
3248 will display the following message, not the current one.
3252 .It Ic if
3253 (i) Part of the nestable
3254 .Ic if Ns / Ns Ic elif Ns / Ns Ic else Ns / Ns Ic endif
3255 conditional execution construct \(em if the given condition is true then
3256 the encapsulated block is executed.
3257 POSIX only supports the (case-insensitive) conditions
3258 .Ql r Ns
3259 eceive
3261 .Ql s Ns
3262 end, all remaining conditions are non-portable extensions; note that
3263 falsely specified conditions cause the execution of the entire
3264 conditional construct until the (matching) closing
3265 .Ic endif
3266 command to be suppressed.
3267 The syntax of the nestable
3268 .Ic if
3269 conditional execution construct requires that each condition and syntax
3270 element is surrounded by whitespace.
3272 .Bd -literal -offset indent
3273 if receive
3274   commands ...
3275 else
3276   commands ...
3277 endif
3281 The (case-insensitive) condition
3282 .Ql t Ns
3283 erminal will evaluate to true if the standard input is a terminal, i.e.,
3284 in interactive sessions.
3285 Another condition can be any boolean value (see the section
3286 .Sx "INTERNAL VARIABLES"
3287 for textual boolean representations) to mark an enwrapped block as
3288 .Dq never execute
3290 .Dq always execute .
3291 It is possible to check a variable for existence or compare its
3292 expansion against a user given value or another variable via the
3293 .Ql $
3294 .Pf ( Dq variable next )
3295 conditional trigger character.
3296 The available comparison operators are
3297 .Ql <
3298 (less than),
3299 .Ql <=
3300 (less than or equal to),
3301 .Ql ==
3302 (equal),
3303 .Ql !=
3304 (not equal),
3305 .Ql >=
3306 (greater than or equal to),
3307 .Ql >
3308 (greater than),
3309 .Ql =@
3310 (is substring of) and
3311 .Ql !@
3312 (is not substring of).
3313 The values of the left and right hand side are treated as strings and
3314 are compared 8-bit byte-wise, ignoring case according to the rules of
3315 the US-ASCII encoding (therefore, dependend on the active locale,
3316 possibly producing false results for strings in the locale encoding).
3317 Except for the substring checks the comparison will instead be performed
3318 arithmetically if both, the user given value as well as the variable
3319 content, can be parsed as numbers (integers).
3320 An unset variable is treated as the empty string.
3323 When the \*(OPal regular expression support is available, the additional
3324 test cases
3325 .Ql =~
3327 .Ql !~
3328 can be used.
3329 They treat the right hand side as an extended regular expression that is
3330 matched case-insensitively and according to the active
3331 .Ev LC_CTYPE
3332 locale, meaning that strings in the locale encoding should be matched
3333 correctly.
3336 Conditions can be joined via AND-OR lists (where the AND operator is
3337 .Ql &&
3338 and the OR operator is
3339 .Ql || ) ,
3340 which have equal precedence and will be evaluated with left
3341 associativity, thus using the same syntax that is known for the
3342 .Xr sh 1 .
3343 It is also possible to form groups of conditions and lists by enclosing
3344 them in pairs of brackets
3345 .Ql [\ \&.\&.\&.\ ] ,
3346 which may be interlocked within each other, and also be joined via
3347 AND-OR lists.
3350 The results of individual conditions and entire groups may be modified
3351 via unary operators: the unary operator
3352 .Ql \&!
3353 will reverse the result.
3355 .Bd -literal -offset indent
3356 if $debug
3357   echo *debug* is set
3358 endif
3359 if $ttycharset == "UTF-8"
3360   echo *ttycharset* is set to UTF-8, case-insensitively
3361 endif
3362 set t1=one t2=one
3363 if $t1 == $t2
3364   echo These two variables are equal
3365 endif
3366 if $version-major >= 15
3367   echo Running a new version..
3368   if $features =@ "regex"
3369     if $TERM =~ "^xterm\&.*"
3370       echo ..in an X terminal
3371     endif
3372   endif
3373   if [ [ true ] && [ [ $debug ] || [ $verbose ] ] ]
3374     echo Noisy, noisy
3375   endif
3376   if true && $debug || $verbose
3377     echo Left associativity, as is known from the shell
3378   endif
3379   if ! ! true && ! [ ! $debug && ! $verbose ]
3380     echo Unary operator support
3381   endif
3382 endif
3387 .It Ic ignore
3388 Without arguments the list of ignored header fields is shown,
3389 otherwise the given list of header fields is added to the ignore list:
3390 Header fields in the ignore list are not shown on the terminal when
3391 a message is displayed.
3392 To display a message in its entirety, use the commands
3393 .Ic Type
3395 .Ic Print .
3396 Also see
3397 .Ic discard
3399 .Ic retain .
3402 .It Ic imap
3403 \*(OP\*(OB Sends command strings directly to the current IMAP server.
3404 \*(UA operates always in IMAP `selected state' on the current mailbox;
3405 commands that change this will produce undesirable results and should be
3406 avoided.
3407 Useful IMAP commands are:
3408 .Bl -tag -offset indent -width ".Ic getquotearoot"
3409 .It create
3410 Takes the name of an IMAP mailbox as an argument and creates it.
3411 .It getquotaroot
3412 (RFC 2087) Takes the name of an IMAP mailbox as an argument
3413 and prints the quotas that apply to the mailbox.
3414 Not all IMAP servers support this command.
3415 .It namespace
3416 (RFC 2342) Takes no arguments and prints the Personal Namespaces,
3417 the Other User's Namespaces and the Shared Namespaces.
3418 Each namespace type is printed in parentheses;
3419 if there are multiple namespaces of the same type,
3420 inner parentheses separate them.
3421 For each namespace a prefix and a hierarchy separator is listed.
3422 Not all IMAP servers support this command.
3426 .It Ic list
3427 Shows the names of all available commands, alphabetically sorted.
3430 .It Ic localopts
3431 This command can be used to localize changes to variables, meaning that
3432 their state will be reverted to the former one once the covered scope
3433 is left.
3434 It can only be used inside of macro definition blocks introduced by
3435 .Ic account
3437 .Ic define ,
3438 and is interpreted as a boolean (string, see
3439 .Sx "INTERNAL VARIABLES" ) ;
3441 .Dq covered scope
3442 of an account is left once it is switched off again.
3443 .Bd -literal -offset indent
3444 define temporary_settings {
3445   set global_option1
3446   localopts on
3447   set local_option1
3448   set local_option2
3449   localopts off
3450   set global_option2
3454 .Sy Note
3455 that this setting
3456 .Dq stacks up :
3457 i.e., if
3458 .Ql macro1
3459 enables change localization and calls
3460 .Ql macro2 ,
3461 which explicitly resets localization, then any value changes within
3462 .Ql macro2
3463 will still be reverted by
3464 .Ql macro1 !
3467 .It Ic Lreply
3468 Reply to messages that come in via known
3469 .Pf ( Ic mlist )
3470 or subscribed
3471 .Pf ( Ic mlsubscribe )
3472 mailing lists, or pretend to do so (see
3473 .Sx "Mailing lists" ) :
3474 on top of the usual
3475 .Ic reply
3476 functionality this will actively resort and even remove message
3477 recipients in order to generate a message that is supposed to be send to
3478 a mailing list.
3479 For example it will also implicitly generate a
3480 .Ql Mail-Followup-To:
3481 header if that seems useful, regardless of the setting of the variable
3482 .Va followup-to .
3485 .It Ic Mail
3486 Similar to
3487 .Ic mail ,
3488 but saves the message in a file named after the local part of the first
3489 recipient's address (instead of in
3490 .Va record Ns ).
3493 .It Ic mail
3494 (m) Takes a (list of) recipient address(es) as (an) argument(s),
3495 or asks on standard input if none were given;
3496 then collects the remaining mail content and sends it out.
3499 .It Ic mbox
3500 (mb) The given message list is to be sent to
3501 .Ev MBOX
3502 when \*(UA is quit; this is the default action unless the
3503 .Va hold
3504 option is set.
3505 \*(ID This command can only be used in a system mailbox (see
3506 .Ic file ) .
3509 .It Ic mimetype
3510 Without any arguments the content of the MIME type cache will displayed.
3511 Otherwise each argument defines a complete MIME type specification of
3512 a type that shall be added (prepended) to the cache.
3513 In any event MIME type sources are loaded first as necessary \(en
3514 .Va mimetypes-load-control
3515 can be used to fine-tune which sources are actually loaded.
3516 Refer to the section on
3517 .Sx "The mime.types files"
3518 for more on MIME type specifications and this topic in general.
3519 MIME type unregistration and cache resets can be triggered with
3520 .Ic unmimetype .
3523 .It Ic mlist
3524 Without arguments the list of all currently defined mailing lists
3525 (and their attributes, if any) is shown.
3526 Otherwise all given arguments (which need not be quoted except for
3527 whitespace) will be added and henceforth be recognized as mailing lists.
3528 Mailing lists may be removed via the command
3529 .Ic unmlist .
3531 If the \*(OPal regular expression support is available then mailing
3532 lists may also be specified as (extended) regular expressions (see
3533 .Xr re_format 7
3534 for more on those).
3537 .It Ic mlsubscribe
3538 Without arguments the list of all currently defined mailing lists which
3539 have a subscription attribute is shown.
3540 Otherwise this attribute will be set for all given mailing lists,
3541 newly creating them as necessary (as via
3542 .Ic mlist ) .
3543 Subscription attributes may be removed via the command
3544 .Ic unmlsubscribe .
3545 Also see
3546 .Va followup-to .
3549 .It Ic mono
3550 \*(OP Without arguments the list of all currently defined monochrome
3551 mappings is shown.
3552 If given arguments monochrome mappings are newly established, please
3553 refer to the documentation of the command
3554 .Ic colour
3555 for actual semantics, it creates mappings for coloured terminals and the
3556 only difference is that no colour attributes are allowed for
3557 .Ic \&\&mono .
3558 Monochrome mappings may be removed via the command
3559 .Ic unmono .
3562 .It Ic Move
3563 Similar to
3564 .Ic move ,
3565 but moves the messages to a file named after the local part of the
3566 sender address of the first message (instead of in
3567 .Va record Ns ).
3570 .It Ic move
3571 Acts like
3572 .Ic copy
3573 but marks the messages for deletion if they were transferred
3574 successfully.
3577 .It Ic More
3578 Like
3579 .Ic more ,
3580 but also displays ignored header fields and all MIME parts.
3581 Identical to
3582 .Ic Page .
3585 .It Ic more
3586 Invokes the
3587 .Ev PAGER
3588 on the given messages, even in non-interactive mode and as long as the
3589 standard output is a terminal.
3590 Identical to
3591 .Ic page .
3594 .It Ic netrc
3595 \*(OP When used without arguments or if
3596 .Ar show
3597 has been given the content of the
3598 .Pa .netrc
3599 cache is shown, loading it first as necessary,
3600 If the argument is
3601 .Ar load
3602 then the cache will only be initialized and
3603 .Ar clear
3604 will remove its contents.
3605 Note that \*(UA will try to load the file only once, use
3606 .Ql Ic netrc Ns \:\0\:clear
3607 to unlock further attempts.
3609 .Va netrc-lookup
3610 and the section
3611 .Sx "On URL syntax and credential lookup" ;
3612 the section
3613 .Sx "The .netrc file"
3614 documents the file format in detail.
3617 .It Ic newmail
3618 Checks for new mail in the current folder without committing any changes
3619 before.
3620 If new mail is present, a message is shown.
3621 If the
3622 .Va header
3623 variable is set,
3624 the headers of each new message are also shown.
3627 .It Ic next
3628 (n) (like
3629 .Ql +
3631 .Dq ENTER )
3632 Goes to the next message in sequence and types it.
3633 With an argument list, types the next matching message.
3636 .It Ic New
3637 Same as
3638 .Ic Unread .
3641 .It Ic new
3642 Same as
3643 .Ic unread .
3646 .It Ic noop
3647 If the current folder is accessed via a network connection, a
3648 .Dq NOOP
3649 command is sent, otherwise no operation is performed.
3652 .It Ic Page
3653 Like
3654 .Ic page ,
3655 but also displays ignored header fields and all MIME parts.
3656 Identical to
3657 .Ic More .
3660 .It Ic page
3661 Invokes the
3662 .Ev PAGER
3663 on the given messages, even in non-interactive mode and as long as the
3664 standard output is a terminal.
3665 Identical to
3666 .Ic more .
3669 .It Ic Pipe
3670 Like
3671 .Ic pipe
3672 but also pipes ignored header fields and all parts of MIME
3673 .Ql multipart/alternative
3674 messages.
3677 .It Ic pipe
3678 (pi) Takes a message list and a shell command
3679 and pipes the messages through the command.
3680 Without an argument the current message is piped through the command
3681 given by the
3682 .Va cmd
3683 variable.
3684 If the
3685 .Va page
3686 variable is set,
3687 every message is followed by a formfeed character.
3690 .It Ic preserve
3691 (pre) A synonym for
3692 .Ic hold .
3695 .It Ic Print
3696 (P) Alias for
3697 .Ic Type .
3700 .It Ic print
3701 (p) Research
3703 equivalent of
3704 .Ic type .
3707 .It Ic quit
3708 (q) Terminates the session, saving all undeleted, unsaved messages in
3709 the current
3710 .Ev MBOX ,
3711 preserving all messages marked with
3712 .Ic hold
3714 .Ic preserve
3715 or never referenced in the system mailbox,
3716 and removing all other messages from the system mailbox.
3717 If new mail has arrived during the session,
3718 the message
3719 .Dq You have new mail
3720 will be shown.
3721 If given while editing a mailbox file with the command line flag
3722 .Fl f ,
3723 then the edit file is rewritten.
3724 A return to the shell is effected,
3725 unless the rewrite of edit file fails,
3726 in which case the user can escape with the exit command.
3729 .It Ic redirect
3730 Same as
3731 .Ic resend .
3734 .It Ic Redirect
3735 Same as
3736 .Ic Resend .
3739 .It Ic remove
3740 Removes the named folders.
3741 The user is asked for confirmation in interactive mode.
3744 .It Ic rename
3745 Takes the name of an existing folder
3746 and the name for the new folder
3747 and renames the first to the second one.
3748 Both folders must be of the same type
3749 and must be located on the current server for IMAP.
3752 .It Ic Reply
3753 (R) Reply to originator.
3754 Does not reply to other recipients of the original message.
3755 .Va flipr
3756 will exchange this command with
3757 .Ic reply .
3758 Unless the option
3759 .Va fullnames
3760 is set the recipient address will be stripped from comments, names etc.
3763 .It Ic reply
3764 (r) Take a message and group-responds to it by addressing the sender
3765 and all recipients.
3766 .Va followup-to ,
3767 .Va followup-to-honour ,
3768 .Va reply-to-honour
3769 as well as
3770 .Va recipients-in-cc
3771 influence response behaviour.
3772 The command
3773 .Ic Lreply
3774 offers special support for replying to mailing lists.
3775 Unless the option
3776 .Va fullnames
3777 is set recipient addresses will be stripped from comments, names etc.
3779 .Va flipr
3780 is set the commands
3781 .Ic Reply
3783 .Ic reply
3784 are exchanged.
3787 .It Ic replyall
3788 Similar to
3789 .Ic reply ,
3790 but initiates a group-reply regardless of the value of
3791 .Va flipr .
3794 .It Ic replysender
3795 Similar to
3796 .Ic Reply ,
3797 but responds to the sender only regardless of the value of
3798 .Va flipr .
3801 .It Ic Resend
3802 Like
3803 .Ic resend ,
3804 but does not add any header lines.
3805 This is not a way to hide the sender's identity,
3806 but useful for sending a message again to the same recipients.
3809 .It Ic resend
3810 Takes a list of messages and a user name
3811 and sends each message to the named user.
3812 .Ql Resent-From:
3813 and related header fields are prepended to the new copy of the message.
3816 .It Ic Respond
3817 Same as
3818 .Ic Reply .
3821 .It Ic respond
3822 Same as
3823 .Ic reply .
3826 .It Ic respondall
3827 Same as
3828 .Ic replyall .
3831 .It Ic respondsender
3832 Same as
3833 .Ic replysender .
3836 .It Ic retain
3837 (ret) Without arguments the list of retained header fields is shown,
3838 otherwise the given list of header fields is added to the retain list:
3839 Header fields in the retain list are shown on the terminal when
3840 a message is displayed, all other header fields are suppressed.
3841 To display a message in its entirety, use the commands
3842 .Ic Type
3844 .Ic Print .
3845 Also see
3846 .Ic discard
3848 .Ic ignore ;
3849 .Ic retain
3850 takes precedence over the mentioned.
3853 .It Ic Save
3854 (S) Similar to
3855 .Ic save,
3856 but saves the messages in a file named after the local part of the
3857 sender of the first message instead of (in
3858 .Va record
3859 and) taking a filename argument.
3862 .It Ic save
3863 (s) Takes a message list and a filename and appends each message in turn
3864 to the end of the file.
3865 If no filename is given, the
3866 .Ev MBOX
3867 file is used.
3868 The filename in quotes, followed by the generated character count
3869 is echoed on the user's terminal.
3870 If editing a system mailbox the messages are marked for deletion.
3871 Filename interpretation as described for the
3872 .Ic file
3873 command is performed.
3876 .It Ic savediscard
3877 Same as
3878 .Ic saveignore .
3881 .It Ic saveignore
3882 Is to
3883 .Ic save
3884 what
3885 .Ic ignore
3886 is to
3887 .Ic print
3889 .Ic type .
3890 Header fields thus marked are filtered out when saving a message by
3891 .Ic save
3892 or when automatically saving to
3893 .Ev MBOX .
3894 This command should only be applied to header fields that do not contain
3895 information needed to decode the message,
3896 as MIME content fields do.
3897 If saving messages on an IMAP account ignoring fields makes it
3898 impossible to copy the data directly on the server,
3899 thus operation usually becomes much slower.
3902 .It Ic saveretain
3903 Is to
3904 .Ic save
3905 what
3906 .Ic retain
3907 is to
3908 .Ic print
3910 .Ic type .
3911 Header fields thus marked are the only ones saved with a message when
3912 saving by
3913 .Ic save
3914 or when automatically saving to
3915 .Ev MBOX .
3916 .Ic saveretain
3917 overrides
3918 .Ic saveignore .
3919 The use of this command is strongly discouraged since it may strip
3920 header fields that are needed to decode the message correctly.
3923 .It Ic search
3924 Takes a message specification (list) and displays a header summary of
3925 all matching messages, as via
3926 .Ic headers .
3927 This command is an alias of
3928 .Ic from .
3929 Also see
3930 .Sx "Specifying messages" .
3933 .It Ic seen
3934 Takes a message list and marks all messages as having been read.
3937 .It Ic set
3938 (se) Without arguments this command shows all variables and their
3939 values which are currently known to \*(UA.
3940 Setting any of the variables
3941 .Va bsdcompat
3943 .Va bsdset
3944 changes the output format to BSD style, otherwise a properly quoted
3945 listing is produced.
3947 .Va debug
3948 is set or
3949 .Va verbose
3950 has been set twice then the listing is modified to mark out assembled
3951 variables.
3953 Otherwise modifies (set and unsets) the given variables.
3954 Arguments are of the form
3955 .Ql option=value
3956 (no space before or after
3957 .Ql = ) ,
3958 or plain
3959 .Ql option
3960 if there is no value.
3961 Quotation marks may be placed around any part of the assignment
3962 statement to quote blanks or tabs, e.g.,
3964 .Dl set indentprefix="->"
3966 If an argument begins with
3967 .Ql no ,
3968 as in
3969 .Ql set nosave ,
3970 the effect is the same as invoking the
3971 .Ic unset
3972 command with the remaining part of the variable
3973 .Pf ( Ql unset save ) .
3976 .It Ic setenv
3977 Identical to
3978 .Ic set
3979 except that the variables are also exported into the program environment;
3980 since this task requires native host support the command will always
3981 report error if that is not available (but still act like
3982 .Ic set
3983 in this case).
3984 This operation is a no-op unless all resource files have been loaded.
3985 Also see
3986 .Ic unsetenv .
3989 .It Ic shell
3990 (sh) Invokes an interactive version of the shell.
3993 .It Ic shortcut
3994 Without arguments the list of all currently defined shortcuts is
3995 shown.
3996 Otherwise all given arguments (which need not be quoted except for
3997 whitespace) are treated as pairs of shortcuts and their expansions,
3998 creating new or changing already existing shortcuts, as necessary.
3999 Shortcuts may be removed via the command
4000 .Ic unshortcut .
4001 The expansion strings should be in the syntax that has been described
4002 for the
4003 .Ic file
4004 command.
4007 .It Ic show
4008 Like
4009 .Ic type ,
4010 but performs neither MIME decoding nor decryption, so that the raw
4011 message text is shown.
4014 .It Ic size
4015 (si) Shows the size in characters of each message of the given
4016 message-list.
4019 .It Ic sort
4020 Shows the current sorting criterion when used without an argument.
4021 Otherwise creates a sorted representation of the current folder,
4022 and changes the
4023 .Ic next
4024 command and the addressing modes such that they refer to messages in
4025 the sorted order.
4026 Message numbers are the same as in regular mode.
4027 If the
4028 .Va header
4029 variable is set,
4030 a header summary in the new order is also displayed.
4031 Automatic folder sorting can be enabled by setting the
4032 .Va autosort
4033 variable, as in, e.g.,
4034 .Ql set autosort=thread .
4035 Possible sorting criterions are:
4037 .Bl -tag -compact -offset indent -width "subject"
4038 .It date
4039 Sort the messages by their
4040 .Ql Date:
4041 field, that is by the time they were sent.
4042 .It from
4043 Sort messages by the value of their
4044 .Ql From:
4045 field, that is by the address of the sender.
4046 If the
4047 .Va showname
4048 variable is set, the sender's real name (if any) is used.
4049 .It size
4050 Sort the messages by their size.
4051 .It spam
4052 \*(OP Sort the message by their spam score, as has been classified by
4053 .Ic spamrate .
4054 .It status
4055 Sort the messages by their message status.
4056 .It subject
4057 Sort the messages by their subject.
4058 .It thread
4059 Create a threaded display.
4060 .It to
4061 Sort messages by the value of their
4062 .Ql To:
4063 field, that is by the address of the recipient.
4064 If the
4065 .Va showname
4066 variable is set, the recipient's real name (if any) is used.
4070 .It Ic source
4071 (so) The source command reads commands from a file.
4074 .It Ic source_if
4075 The difference to
4076 .Ic source
4077 is that this command will not generate an error if the given file
4078 argument cannot be opened successfully.
4079 This can matter in, e.g., resource files, since loading of those is
4080 stopped when an error is encountered.
4083 .It Ic spamclear
4084 \*(OP Takes a list of messages and clears their
4085 .Ql is-spam
4086 flag.
4089 .It Ic spamforget
4090 \*(OP Takes a list of messages and causes the
4091 .Va spam-interface
4092 to forget it has ever used them to train its Bayesian filter.
4093 Unless otherwise noted the
4094 .Ql is-spam
4095 flag of the message is inspected to chose wether a message shall be
4096 forgotten to be
4097 .Dq ham
4099 .Dq spam .
4102 .It Ic spamham
4103 \*(OP Takes a list of messages and informs the Bayesian filter of the
4104 .Va spam-interface
4105 that they are
4106 .Dq ham .
4107 This also clears the
4108 .Ql is-spam
4109 flag of the messages in question.
4112 .It Ic spamrate
4113 \*(OP Takes a list of messages and rates them using the configured
4114 .Va spam-interface ,
4115 without modifying the messages, but setting their
4116 .Ql is-spam
4117 flag as appropriate; because the spam rating headers are lost the rate
4118 will be forgotten once the mailbox is left.
4119 Refer to the manual section
4120 .Sx "Handling spam"
4121 for the complete picture of spam handling in \*(UA.
4124 .It Ic spamset
4125 \*(OP Takes a list of messages and sets their
4126 .Ql is-spam
4127 flag.
4130 .It Ic spamspam
4131 \*(OP Takes a list of messages and informs the Bayesian filter of the
4132 .Va spam-interface
4133 that they are
4134 .Dq spam .
4135 This also sets the
4136 .Ql is-spam
4137 flag of the messages in question.
4140 .It Ic thread
4141 \*(OB The same as
4142 .Ql sort thread
4143 (consider using a
4144 .Ql ghost
4145 as necessary).
4146 Create a threaded representation of the current folder,
4147 i.\|e. indent messages that are replies to other messages in the header
4148 display and change the
4149 .Ic next
4150 command and the addressing modes such that they refer to messages in the
4151 threaded order.
4152 Message numbers are the same as in unthreaded mode.
4153 If the
4154 .Va header
4155 variable is set,
4156 a header summary in threaded order is also displayed.
4159 .It Ic top
4160 (to) Takes a message list and displays the top few lines of each.
4161 The number of lines shown is controlled by the variable
4162 .Va toplines
4163 and defaults to five.
4166 .It Ic touch
4167 (tou) Takes a message list and marks the messages for saving in
4168 .Ev MBOX .
4169 \*(UA deviates from the POSIX standard with this command,
4170 as a following
4171 .Ic next
4172 command will display the following message instead of the current one.
4175 .It Ic Type
4176 (T) Like
4177 .Ic type
4178 but also displays out ignored header fields and all parts of MIME
4179 .Ql multipart/alternative
4180 messages.
4183 .It Ic type
4184 (t) Takes a message list and types out each message on the user's
4185 terminal, honouring
4186 .Ic ignore
4188 .Ic retain
4189 lists.
4190 For MIME multipart messages, all parts with a content type of
4191 .Ql text
4193 .Ql message
4194 are shown, the other are hidden except for their headers.
4195 Messages are decrypted and converted to the terminal character set
4196 if necessary.
4199 .It Ic unaccount
4200 Delete all given accounts.
4201 An error message is shown if a given account is not defined.
4202 The special name
4203 .Ql *
4204 will discard all existing accounts.
4207 .It Ic unalias
4208 (una) Takes a list of names defined by alias commands
4209 and discards the remembered groups of users.
4210 The special name
4211 .Ql *
4212 will discard all existing aliases.
4215 .It Ic unanswered
4216 Takes a message list and marks each message as not having been answered.
4219 .It Ic uncollapse
4220 Only applicable to threaded mode.
4221 Takes a message list and makes the message and all replies to it visible
4222 in header summaries again.
4223 When a message becomes the current message,
4224 it is automatically made visible.
4225 Also when a message with collapsed replies is displayed,
4226 all of these are automatically uncollapsed.
4229 .It Ic uncolour
4230 Forget about the given
4231 .Ic colour
4232 mapping; if the optional precondition argument is used then only the
4233 exact tuple of mapping and precondition is removed.
4234 The special name
4235 .Ql *
4236 will remove all mappings (no precondition allowed).
4237 Also see
4238 .Ic mono
4240 .Ic unmono
4241 as well as
4242 .Sx "Coloured display"
4243 for the general picture.
4246 .It Ic undefine
4247 Undefine all given macros.
4248 An error message is shown if a given macro is not defined.
4249 The special name
4250 .Ql *
4251 will discard all existing macros.
4254 .It Ic undelete
4255 (u) Takes a message list and marks each message as not being deleted.
4258 .It Ic undraft
4259 Takes a message list and
4260 .Pf un Ic draft Ns
4261 s each message.
4264 .It Ic unflag
4265 Takes a message list and marks each message as not being
4266 .Ic flag Ns ged .
4269 .It Ic unfwdignore
4270 Removes the header field names from the list of ignored fields for the
4271 .Ic forward
4272 command.
4273 The special name
4274 .Ql *
4275 will remove all fields.
4278 .It Ic unfwdretain
4279 Removes the header field names from the list of retained fields for the
4280 .Ic forward
4281 command.
4282 The special name
4283 .Ql *
4284 will remove all fields.
4287 .It Ic unghost
4288 Remove all the given command
4289 .Ic ghost Ns s Ns .
4290 The special name
4291 .Ql *
4292 will remove all ghosts.
4295 .It Ic unignore
4296 Removes the header field names from the list of ignored fields.
4297 The special name
4298 .Ql *
4299 will remove all fields.
4302 .It Ic unmimetype
4303 Delete all given MIME types, e.g.,
4304 .Ql unmimetype text/plain
4305 will remove all registered specifications for the MIME type
4306 .Ql text/plain .
4307 The special name
4308 .Ql *
4309 will discard all existing MIME types, just as will
4310 .Ql reset ,
4311 but which also reenables cache initialization via
4312 .Va mimetypes-load-control .
4315 .It Ic unmlist
4316 Forget about all the given mailing lists.
4317 The special name
4318 .Ql *
4319 will remove all lists.
4320 Also see
4321 .Ic mlist .
4324 .It Ic unmlsubscribe
4325 Remove the subscription attribute from all given mailing lists.
4326 The special name
4327 .Ql *
4328 will clear the attribute from all lists which have it set.
4329 Also see
4330 .Ic mlsubscribe .
4333 .It Ic unmono
4334 Forget about the given
4335 .Ic mono Ns
4336 chrome mapping; the special name
4337 .Ql *
4338 will remove all mappings.
4339 Please refer to the documentation of the command
4340 .Ic uncolour
4341 for actual semantics, the syntax is identical.
4344 .It Ic Unread
4345 Same as
4346 .Ic unread .
4349 .It Ic unread
4350 Takes a message list and marks each message as not having been read.
4353 .It Ic unretain
4354 Removes the header field names from the list of retained fields.
4355 The special name
4356 .Ql *
4357 will remove all fields.
4360 .It Ic unsaveignore
4361 Removes the header field names from the list of ignored fields for
4362 saving.
4363 The special name
4364 .Ql *
4365 will remove all fields.
4368 .It Ic unsaveretain
4369 Removes the header field names from the list of retained fields for
4370 saving.
4371 The special name
4372 .Ql *
4373 will remove all fields.
4376 .It Ic unset
4377 (uns) Takes a list of option names and discards their remembered values;
4378 the reverse of
4379 .Ic set .
4382 .It Ic unsetenv
4383 Identical to
4384 .Ic unset
4385 except that the variables are also removed from the program environment;
4386 since this task requires native host support the command will always
4387 report error if that is not available (but still act like
4388 .Ic unset Ns
4390 This operation is a no-op unless all resource files have been loaded.
4391 Also see
4392 .Ic setenv .
4395 .It Ic unshortcut
4396 Deletes the shortcut names given as arguments.
4397 The special name
4398 .Ql *
4399 will remove all shortcuts.
4402 .It Ic unsort
4403 Disable sorted or threaded mode
4404 (see the
4405 .Ic sort
4407 .Ic thread
4408 commands),
4409 return to normal message order and,
4410 if the
4411 .Va header
4412 variable is set,
4413 displays a header summary.
4416 .It Ic unthread
4417 \*(OB
4418 Same as
4419 .Ic unsort .
4422 .It Ic urldecode
4423 Decode the given URL-encoded string arguments and show the results.
4424 Note the resulting strings may not be valid in the current locale, see
4425 .Ic urlencode .
4428 .It Ic urlencode
4429 URL-encode the given arguments and show the results.
4430 Because the arguments effectively are in the character set of the
4431 current locale the results will vary accordingly unless the input solely
4432 consists of characters in the portable character set, see
4433 .Sx "Character sets" .
4436 .It Ic varedit
4437 Edit the values of or create the given variable(s) in the
4438 .Ev EDITOR .
4439 Boolean variables cannot be edited.
4442 .It Ic varshow
4443 Show informations about all the given variables.
4444 \*(UA knows about a finite set of known builtin variables that are
4445 subdivided further in boolean and value variants;
4446 they may have special properties, like
4447 .Dq read-only
4448 (setting may not be changed) and
4449 .Dq virtual ,
4450 meaning that the value is generated on-the-fly as necessary.
4451 Beside those known variables an infinite number of unknown, so-called
4452 .Dq assembled
4453 variables, which are expected to be able to store values, may exist.
4454 .Bd -literal -offset indent
4455 ? set foo=bar nobar
4456 ? varshow sendwait version-major foo bar
4457 "sendwait": (73) boolean: set=1 (ENVIRON=0)
4458 "version-major": (192) value, read-only, virtual:\e
4459   set=1 (ENVIRON=0) value<14>
4460 "foo": (assembled) set=1 (ENVIRON=0) value<bar>
4461 "bar": (assembled) set=0 (ENVIRON=0) value<NULL>
4465 .It Ic verify
4466 \*(OP Takes a message list and verifies each message.
4467 If a message is not a S/MIME signed message,
4468 verification will fail for it.
4469 The verification process checks if the message was signed using a valid
4470 certificate,
4471 if the message sender's email address matches one of those contained
4472 within the certificate,
4473 and if the message content has been altered.
4476 .It Ic visual
4477 (v) Takes a message list and invokes the display editor on each message.
4478 Modified contents are discarded unless the
4479 .Va writebackedited
4480 variable is set.
4483 .It Ic write
4484 (w) For conventional messages the body without all headers is written.
4485 The output is decrypted and converted to its native format as necessary.
4486 If the output file exists, the text is appended.
4487 If a message is in MIME multipart format its first part is written to
4488 the specified file as for conventional messages,
4489 and the user is asked for a filename to save each other part.
4490 For convience saving of each part may be skipped by giving an empty value;
4491 the same result can also be achieved by writing it to
4492 .Pa /dev/null .
4493 For the second and subsequent parts a leading
4494 .Ql |
4495 character causes the part to be piped to the remainder of the user input
4496 interpreted as a shell command;
4497 otherwise the user input is expanded as usually for folders,
4498 e.g., tilde expansion is performed.
4499 In non-interactive mode, only the parts of the multipart message
4500 that have a filename given in the part header are written,
4501 the others are discarded.
4502 The original message is never marked for deletion in the originating
4503 mail folder.
4504 For attachments,
4505 the contents of the destination file are overwritten if the file
4506 previously existed.
4507 No special handling of compressed files is performed.
4510 .It Ic xit
4511 (x) A synonym for
4512 .Ic exit .
4515 .It Ic z
4516 \*(UA presents message headers in windowfuls as described under the
4517 .Ic headers
4518 command.
4519 This command scrolls to the next window of messages.
4520 If an argument is given,
4521 it specifies the window to use.
4522 A number prefixed by
4523 .Ql +
4525 .Ql \-
4526 indicates that the window is calculated in relation to the current position.
4527 A number without a prefix specifies an absolute window number,
4528 and a
4529 .Ql $
4530 lets \*(UA scroll to the last window of messages.
4533 .It Ic Z
4534 Similar to
4535 .Ic z ,
4536 but scrolls to the next or previous window that contains at least one
4537 .Ql new
4539 .Ic flag Ns
4540 ged message.
4542 .\" }}}
4545 .\" .Sh TILDE ESCAPES {{{
4546 .Sh "TILDE ESCAPES"
4548 Here is a summary of the tilde escapes,
4549 which are used to perform special functions when composing messages.
4550 Tilde escapes are only recognized at the beginning of lines.
4551 The name
4552 .Dq tilde escape
4553 is somewhat of a misnomer since the actual escape character can be
4554 changed by adjusting the option
4555 .Va escape .
4557 .Bl -tag -width ".Ic __ filename"
4559 .It Ic ~~ Ar string
4560 Insert the string of text in the message prefaced by a single
4561 .Ql ~ .
4562 (If the escape character has been changed,
4563 that character must be doubled
4564 in order to send it at the beginning of a line.)
4567 .It Ic ~! Ar command
4568 Execute the indicated shell
4569 .Ar command ,
4570 then return to the message.
4573 .It Ic ~.
4574 Same effect as typing the end-of-file character.
4577 .It Ic ~: Ar \*(UA-command Ns \0or Ic ~_ Ar \*(UA-command
4578 Execute the given \*(UA command.
4579 Not all commands, however, are allowed.
4582 .It Ic ~?
4583 Write a summary of command escapes.
4586 .It Ic ~< Ar filename
4587 Identical to
4588 .Ic ~r .
4591 .It Ic ~<! Ar command
4592 .Ar command
4593 is executed using the shell.
4594 Its standard output is inserted into the message.
4597 .It Ic ~@ Op Ar filename...
4598 With no arguments, edit the attachment list interactively.
4599 If an attachment's file name is left empty,
4600 that attachment is deleted from the list.
4601 When the end of the attachment list is reached,
4602 \*(UA will ask for further attachments until an empty name is given.
4603 If a given file name solely consists of the number sign
4604 .Ql #
4605 followed by a valid message number of the currently active mailbox, then
4606 the given message is attached as a MIME
4607 .Ql message/rfc822
4608 and the rest of this section does not apply.
4610 If character set conversion has been compiled into \*(UA, then this mode
4611 gives the user the option to specify input and output character sets,
4612 unless the file extension indicates binary content, in which case \*(UA
4613 asks wether this step shall be skipped for the attachment in question.
4614 If not skipped, then the charset that succeeds to represent the
4615 attachment data will be used in the
4616 .Ql charset=
4617 MIME parameter of the mail message:
4619 .Bl -bullet -compact
4621 If input and output character sets are specified, then the conversion is
4622 performed on the fly.
4623 The user will be asked repeatedly until the desired conversion succeeds.
4625 If only an output character set is specified, then the input is assumed
4626 to be in the
4627 .Va ttycharset
4628 charset and will be converted to the given output charset on the fly.
4629 The user will be asked repeatedly until the desired conversion succeeds.
4631 If no character sets are specified at all then the algorithm that is
4632 documented in the section
4633 .Sx "Character sets"
4634 is applied, but directly and on the fly.
4635 The user will be asked repeatedly until the desired conversion succeeds.
4637 Finally, if an input-, but no output character set is specified, then no
4638 conversion is ever performed, but the
4639 .Ql charset=
4640 MIME parameter value will still be set to the user input.
4642 The character set selection loop can be left by typing
4643 .Ql control-C ,
4644 i.e., causing an interrupt.
4645 .\" \*(OU next sentence
4646 Note that before \*(UA version 15.0 this terminates the entire
4647 current attachment selection, not only the character set selection.
4650 Without character set conversion support, \*(UA will ask for the input
4651 character set only, and it'll set the
4652 .Ql charset=
4653 MIME parameter value to the given input, if any;
4654 if no user input is seen then the
4655 .Va ttycharset
4656 character set will be used for the parameter value instead.
4657 Note that the file extension check isn't performed in this mode, since
4658 no conversion will take place anyway.
4660 Note that in non-interactive mode, for reproduceabilities sake, there
4661 will always be two questions for each attachment, regardless of wether
4662 character set conversion is available and what the file extension is.
4663 The first asks for the filename, and the second asks for the input
4664 character set to be passed through to the corresponding MIME parameter;
4665 no conversion will be tried if there is input to the latter question,
4666 otherwise the usual conversion algorithm, as above, is applied.
4667 For message attachments, the answer to the second question is completely
4668 ignored.
4670 If (instead)
4671 .Ar filename
4672 arguments are specified for the
4673 .Ic \&\&~@
4674 command they are treated as a comma-separated list of files,
4675 which are all expanded and appended to the end of the attachment list.
4676 (Filenames with commas, or with leading or trailing whitespace can only
4677 be added via the command line or the first method.
4678 Message attachments can only be added via the first method;
4679 filenames which clash with message numbers can only be added via the
4680 command line or the second method.)
4681 In this mode the (text) attachments are assumed to be in
4682 .Va ttycharset
4683 encoding, and will be evaluated as documented in the section
4684 .Sx "Character sets" .
4687 .It Ic ~A
4688 Inserts the string contained in the
4689 .Va Sign
4690 variable (same as
4691 .Ql Ic ~i Ns \0Sign ) .
4692 The escape sequences tabulator
4693 .Ql \et
4694 and newline
4695 .Ql \en
4696 are understood.
4699 .It Ic ~a
4700 Inserts the string contained in the
4701 .Va sign
4702 variable (same as
4703 .Ql Ic ~i Ns \0sign ) .
4704 The escape sequences tabulator
4705 .Ql \et
4706 and newline
4707 .Ql \en
4708 are understood.
4711 .It Ic ~b Ar name ...
4712 Add the given names to the list of blind carbon copy recipients.
4715 .It Ic ~c Ar name ...
4716 Add the given names to the list of carbon copy recipients.
4719 .It Ic ~d
4720 Read the file specified by the
4721 .Ev DEAD
4722 variable into the message.
4725 .It Ic ~e
4726 Invoke the text editor on the message collected so far.
4727 After the editing session is finished,
4728 the user may continue appending text to the message.
4731 .It Ic ~F Ar messages
4732 Read the named messages into the message being sent, including all
4733 message headers and MIME parts.
4734 If no messages are specified, read in the current message.
4737 .It Ic ~f Ar messages
4738 Read the named messages into the message being sent.
4739 If no messages are specified, read in the current message.
4740 .Ic ignore
4742 .Ic retain
4743 lists are used to modify the message headers.
4744 For MIME multipart messages,
4745 only the first displayable part is included.
4748 .It Ic ~H
4749 Edit the message header fields
4750 .Ql From: ,
4751 .Ql Reply-To: ,
4752 .Ql Sender:
4754 .Ql Organization:
4755 by typing each one in turn and allowing the user to edit the field.
4756 The default values for these fields originate from the
4757 .Va from , replyto , sender
4759 .Ev ORGANIZATION
4760 variables.
4763 .It Ic ~h
4764 Edit the message header fields
4765 .Ql To: ,
4766 .Ql Cc: ,
4767 .Ql Bcc:
4769 .Ql Subject:
4770 by typing each one in turn and allowing the user to edit the field.
4773 .It Ic ~i Ar variable
4774 Insert the value of the specified variable into the message,
4775 adding a newline character at the end.
4776 The message remains unaltered if the variable is unset or empty.
4777 The escape sequences tabulator
4778 .Ql \et
4779 and newline
4780 .Ql \en
4781 are understood.
4784 .It Ic ~M Ar messages
4785 Read the named messages into the message being sent,
4786 indented by
4787 .Va indentprefix .
4788 If no messages are specified, read the current message.
4791 .It Ic ~m Ar messages
4792 Read the named messages into the message being sent,
4793 indented by
4794 .Va indentprefix .
4795 If no messages are specified, read the current message.
4796 .Ic ignore
4798 .Ic retain
4799 lists are used to modify the message headers.
4800 For MIME multipart messages,
4801 only the first displayable part is included.
4804 .It Ic ~p
4805 Display the message collected so far,
4806 prefaced by the message header fields
4807 and followed by the attachment list, if any.
4810 .It Ic ~q
4811 Abort the message being sent,
4812 copying it to the file specified by the
4813 .Ev DEAD
4814 variable if
4815 .Va save
4816 is set.
4819 .It Ic ~R Ar filename
4820 Read the named file into the message, indented by
4821 .Va indentprefix .
4824 .It Ic ~r Ar filename
4825 Read the named file into the message.
4828 .It Ic ~s Ar string
4829 Cause the named string to become the current subject field.
4832 .It Ic ~t Ar name ...
4833 Add the given name(s) to the direct recipient list.
4836 .It Ic ~U Ar messages
4837 Read in the given / current message(s) excluding all headers, indented by
4838 .Va indentprefix .
4841 .It Ic ~u Ar messages
4842 Read in the given / current message(s), excluding all headers.
4845 .It Ic ~v
4846 Invoke an alternate editor (defined by the
4847 .Ev VISUAL
4848 option) on the message collected so far.
4849 Usually, the alternate editor will be a screen editor.
4850 After the editor is quit,
4851 the user may resume appending text to the end of the message.
4854 .It Ic ~w Ar filename
4855 Write the message onto the named file.
4856 If the file exists,
4857 the message is appended to it.
4860 .It Ic ~x
4861 Same as
4862 .Ic ~q ,
4863 except that the message is not saved at all.
4866 .It Ic ~| Ar command
4867 Pipe the message through the specified filter command.
4868 If the command gives no output or terminates abnormally,
4869 retain the original text of the message.
4870 E.g., the command
4871 .Xr fmt 1
4872 is often used as a rejustifying filter.
4874 .\" }}}
4877 .\" .Sh INTERNAL VARIABLES {{{
4878 .Sh "INTERNAL VARIABLES"
4880 Internal \*(UA variables are controlled via the
4881 .Ic set
4883 .Ic unset
4884 commands; prefixing a variable name with the string
4885 .Ql no
4886 and calling
4887 .Ic set
4888 has the same effect as using
4889 .Ic unset :
4890 .Ql unset crt
4892 .Ql set nocrt
4893 do the same thing.
4894 Creation or editing of variables can be performed in the
4895 .Ev EDITOR
4896 with the command
4897 .Ic varedit .
4898 .Ic varshow
4899 will give more insight on the given variable(s), and
4900 .Ic set ,
4901 when called without arguments, will show a listing of all variables.
4902 Variables are also implicitly inherited from the program
4903 .Sx ENVIRONMENT
4904 and can be set explicitly via the command line option
4905 .Fl S .
4908 Two different kind of variables exist.
4909 There are boolean variables, which can only be in one of the two states
4910 .Dq set
4912 .Dq unset ,
4913 and value variables with a(n optional) string value.
4914 For the latter proper quoting is necessary upon assignment time:
4915 To embed whitespace (space and tabulator) in a value it either needs to
4916 be escaped with a backslash character, or the entire value must be
4917 enclosed in (double or single) quotation marks;
4918 To use quotation marks identical to those used to enclose the value,
4919 escape them with a backslash character.
4920 The backslash character has no special meaning except in these cases.
4922 .Bd -literal -offset indent
4923 set one=val\e 1 two="val 2" \e
4924     three='val "3"' four='val \e'4\e''
4925 varshow one two three four
4926 unset one two three four
4930 Dependent upon the actual option the string values will be interpreted
4931 as numbers, colour names, normal text etc., but there also exists
4932 a special kind of string value, the
4933 .Dq boolean string ,
4934 which must either be a decimal integer (in which case
4935 .Ql 0
4936 is false and
4937 .Ql 1
4938 and any other value is true) or any of the (case-insensitive) strings
4939 .Ql off ,
4940 .Ql no
4942 .Ql false
4943 for a false boolean and
4944 .Ql on ,
4945 .Ql yes
4947 .Ql true
4948 for a true boolean; a special kind of boolean string is the
4949 .Dq quadoption ,
4950 which is a boolean string that can optionally be prefixed with the
4951 (case-insensitive) term
4952 .Ql ask- ,
4953 as in
4954 .Ql ask-yes ,
4955 which causes prompting of the user in interactive mode, with the given
4956 boolean as the default value.
4958 .\" .Ss "Initial settings" {{{
4959 .\" (Keep in SYNC: ./main.c:_startup(), ./nail.rc, ./nail.1:"Initial settings"!)
4960 .Ss "Initial Settings"
4962 The standard POSIX 2008/Cor 1-2013 mandates the following initial
4963 variable settings:
4964 .Pf no Va allnet ,
4965 .Pf no Va append ,
4966 .Va asksub ,
4967 .Pf no Va askbcc ,
4968 .Pf no Va autoprint ,
4969 .Pf no Va bang ,
4970 .Pf no Va cmd ,
4971 .Pf no Va crt ,
4972 .Pf no Va debug ,
4973 .Pf no Va dot ,
4974 .Va escape
4975 set to
4976 .Ql ~ ,
4977 .Pf no Va flipr ,
4978 .Pf no Va folder ,
4979 .Va header ,
4980 .Pf no Va hold ,
4981 .Pf no Va ignore ,
4982 .Pf no Va ignoreeof ,
4983 .Pf no Va keep ,
4984 .Pf no Va keepsave ,
4985 .Pf no Va metoo ,
4986 .Pf no Va outfolder ,
4987 .Pf no Va page ,
4988 .Va prompt
4989 set to
4990 .Ql ?\0
4991 (note that \*(UA deviates from the standard by using
4992 .Ql \e&\0 ,
4993 but the
4994 .Ql \e&
4995 special prompt escape results in
4996 .Dq \&?
4997 being shown unless
4998 .Va bsdcompat
4999 is set),
5000 .Pf no Va quiet ,
5001 .Pf no Va record ,
5002 .Va save ,
5003 .Pf no Va sendwait ,
5004 .Pf no Va showto ,
5005 .Pf no Va Sign ,
5006 .Pf no Va sign ,
5007 .Va toplines
5008 set to
5009 .Ql 5 .
5012 Notes: \*(UA doesn't support the
5013 .Pf no Va onehop
5014 variable \(en use command line options or
5015 .Va sendmail-arguments
5016 to pass options through to a MTA.
5017 And the default global
5018 .Pa \*(UR
5019 file (which is loaded unless the
5020 .Fl n
5021 command line flag has been used or the
5022 .Ev NAIL_NO_SYSTEM_RC
5023 environment variable is set) bends those initial settings a bit, e.g.,
5024 it sets the variables
5025 .Va hold ,
5026 .Va keepsave
5028 .Va keep ,
5029 to name a few, calls
5030 .Ic retain
5031 etc., and should thus be taken into account.
5032 .\" }}}
5034 .\" .Ss "Variables" {{{
5035 .Ss "Variables"
5037 .Bl -tag -width ".It Va _utoprin_"
5039 .It Va add-file-recipients
5040 \*(BO When file or pipe recipients have been specified,
5041 mention them in the corresponding address fields of the message instead
5042 of silently stripping them from their recipient list.
5043 By default such addressees are not mentioned.
5045 .Mx Va agent-shell-lookup
5046 .It Va agent-shell-lookup-USER@HOST , agent-shell-lookup-HOST , \
5047   agent-shell-lookup
5048 \*(IN\*(OP Account passwords can be fetched via an external agent
5049 program in order to permit encrypted password storage \(en see
5050 .Sx "On URL syntax and credential lookup"
5051 for more on credential lookup.
5052 If this is set then the content is interpreted as a shell command the
5053 output of which (with newline characters removed) is treated as the
5054 account password shall the command succeed (and have produced non-empty
5055 non-newline output); e.g., via
5056 .Xr gpg 1 :
5057 .Bd -literal -offset indent
5058 $ echo PASSWORD > .pass
5059 $ gpg -e .pass
5060 $ eval `gpg-agent --daemon \e
5061     --pinentry-program=/usr/bin/pinentry-curses \e
5062     --max-cache-ttl 99999 --default-cache-ttl 99999`
5063 $ echo 'set agent-shell-lookup="gpg -d .pass.gpg"' \e
5064     >> \*(ur
5067 A couple of environment variables will be set for the agent:
5069 .Bl -tag -compact -width ".It Ev _AIL_TMPDIR[337]"
5070 .It Ev NAIL_TMPDIR
5071 The temporary directory that \*(UA uses.
5072 Usually identical to
5073 .Ev TMPDIR ,
5074 but guaranteed to be set and usable by child processes;
5075 to ensure the latter condition for
5076 .Ev TMPDIR
5077 also, it'll be set.
5078 .It Ev NAIL_USER
5079 The user
5080 .Pf ( Ql USER )
5081 for which the password is looked up.
5082 .It Ev NAIL_USER_ENC
5083 The URL percent-encoded variant of
5084 .Ev NAIL_USER .
5085 .It Ev NAIL_HOST
5086 The plain machine hostname of the user account.
5087 .It Ev NAIL_HOST_PORT
5089 .Ql HOST
5090 (hostname possibly including port) of the user account.
5094 .It Va allnet
5095 \*(BO Causes only the local part to be evaluated
5096 when comparing addresses.
5099 .It Va append
5100 \*(BO Causes messages saved in
5101 .Ev MBOX
5102 to be appended to the end rather than prepended.
5103 This should always be set.
5106 .It Va ask
5107 \*(BO Causes \*(UA to prompt for the subject of each message sent.
5108 If the user responds with simply a newline,
5109 no subject field will be sent.
5112 .It Va askatend
5113 \*(BO Causes the prompts for
5114 .Ql Cc:
5116 .Ql Bcc:
5117 lists to appear after the message has been edited.
5120 .It Va askattach
5121 \*(BO If set, \*(UA asks for files to attach at the end of each message,
5122 shall the list be found empty at that time.
5123 An empty line finalizes the list.
5126 .It Va askcc
5127 \*(BO Causes the user to be prompted for carbon copy recipients
5128 (at the end of each message if
5129 .Va askatend
5131 .Va bsdcompat
5132 are set) shall the list be found empty (at that time).
5133 An empty line finalizes the list.
5136 .It Va askbcc
5137 \*(BO Causes the user to be prompted for blind carbon copy
5138 recipients (at the end of each message if
5139 .Va askatend
5141 .Va bsdcompat
5142 are set) shall the list be found empty (at that time).
5143 An empty line finalizes the list.
5146 .It Va asksign
5147 \*(BO\*(OP Causes the user to be prompted if the message is to be
5148 signed at the end of each message.
5150 .Va smime-sign
5151 variable is ignored when this variable is set.
5154 .It Va asksub
5155 \*(BO Alternative name for
5156 .Va ask .
5162 .It Va attachment-ask-content-description , \
5163   attachment-ask-content-disposition , \
5164   attachment-ask-content-id , \
5165   attachment-ask-content-type
5166 \*(BO If set then the user will be prompted for some attachment
5167 information when editing the attachment list.
5168 It is advisable to not use these but for the first of the variables;
5169 even for that it has to be noted that the data is used
5170 .Dq as is .
5174 .It Va attrlist
5175 A sequence of characters to display in the
5176 .Ql attribute
5177 column of the
5178 .Va headline
5179 as shown in the display of
5180 .Ic headers ;
5181 each for one type of messages (see
5182 .Sx "Message states" ) ,
5183 with the default being
5184 .Ql NUROSPMFAT+\-$~
5186 .Ql NU\ \ *HMFAT+\-$~
5187 if the
5188 .Va bsdflags
5189 variable is set, in the following order:
5191 .Bl -tag -compact -offset indent -width ".It Ql _"
5192 .It Ql N
5193 new.
5194 .It Ql U
5195 unread but old.
5196 .It Ql R
5197 new but read.
5198 .It Ql O
5199 read and old.
5200 .It Ql S
5201 saved.
5202 .It Ql P
5203 preserved.
5204 .It Ql M
5205 mboxed.
5206 .It Ql F
5207 flagged.
5208 .It Ql A
5209 answered.
5210 .It Ql T
5211 draft.
5212 .It Ql +
5213 start of a collapsed thread.
5214 .It Ql -
5215 an uncollapsed thread (TODO ignored for now).
5216 .It Ql $
5217 classified as spam.
5218 .It Ql ~
5219 classified as possible spam.
5224 .It Va autobcc
5225 Specifies a list of recipients to which a blind carbon copy of each
5226 outgoing message will be sent automatically.
5229 .It Va autocc
5230 Specifies a list of recipients to which a carbon copy of each outgoing
5231 message will be sent automatically.
5234 .It Va autocollapse
5235 \*(BO Causes threads to be collapsed automatically when threaded mode
5236 is entered (see the
5237 .Ic collapse
5238 command).
5241 .It Va autoprint
5242 \*(BO Causes the delete command to behave like
5243 .Ql dp - ;
5244 thus, after deleting a message the next one will be typed automatically.
5247 .It Va autothread
5248 \*(BO\*(OB Causes threaded mode (see the
5249 .Ic thread
5250 command) to be entered automatically when a folder is opened.
5251 The same as
5252 .Ql autosort=thread .
5255 .It Va autosort
5256 Causes sorted mode (see the
5257 .Ic sort
5258 command) to be entered automatically with the value of this option as
5259 sorting method when a folder is opened, e.g.,
5260 .Ql set autosort=thread .
5263 .It Va bang
5264 \*(BO Enables the substitution of
5265 .Ql \&!
5266 by the contents of the last command line in shell escapes.
5269 .It Va batch-exit-on-error
5270 \*(BO If the batch mode has been enabled via the
5271 .Fl #
5272 command line option, then this variable will be consulted whenever \*(UA
5273 completes one operation (returns to the command prompt); if it is set
5274 then \*(UA will terminate if the last operation generated an error.
5277 .It Va bsdannounce
5278 \*(BO Causes automatic display of a header summary after executing a
5279 .Ic file
5280 command.
5283 .It Va bsdcompat
5284 \*(BO Sets some cosmetical features to traditional BSD style;
5285 has the same affect as setting
5286 .Va askatend
5287 and all other variables prefixed with
5288 .Ql bsd ;
5289 it also changes the meaning of the \*(UA specific
5290 .Ql \e&
5291 .Va prompt
5292 escape sequence and changes behaviour of
5293 .Va emptystart
5294 (which doesn't exist in BSD).
5297 .It Va bsdflags
5298 \*(BO Changes the letters shown in the first column of a header
5299 summary to traditional BSD style.
5302 .It Va bsdheadline
5303 \*(BO Changes the display of columns in a header summary to traditional
5304 BSD style.
5307 .It Va bsdmsgs
5308 \*(BO Changes some informational messages to traditional BSD style.
5311 .It Va bsdorder
5312 \*(BO Causes the
5313 .Ql Subject:
5314 field to appear immediately after the
5315 .Ql To:
5316 field in message headers and with the
5317 .Ic ~h
5318 .Sx "TILDE ESCAPES" .
5321 .It Va bsdset
5322 \*(BO Changes the output format of the
5323 .Ic set
5324 command to traditional BSD style.
5327 .It Va charset-7bit
5328 The value that should appear in the
5329 .Ql charset=
5330 parameter of
5331 .Ql Content-Type:
5332 MIME header fields when no character set conversion of the message data
5333 was performed.
5334 This defaults to US-ASCII, and the chosen character set should be
5335 US-ASCII compatible.
5338 .It Va charset-8bit
5339 \*(OP The default 8-bit character set that is used as an implicit last
5340 member of the variable
5341 .Va sendcharsets .
5342 This defaults to UTF-8.
5343 If no character set conversion capabilities are available in \*(UA then
5344 the only supported character set is
5345 .Va ttycharset .
5346 Refer to the section
5347 .Sx "Character sets"
5348 for the complete picture of character set conversion in \*(UA.
5351 .It Va charset-unknown-8bit
5352 \*(OP RFC 1428 specifies conditions when internet mail gateways shall
5353 .Dq upgrade
5354 the content of a mail message by using a character set with the name
5355 .Ql unknown-8bit .
5356 Because of the unclassified nature of this character set \*(UA will not
5357 be capable to convert this character set to any other character set.
5358 If this variable is set any message part which uses the character set
5359 .Ql unknown-8bit
5360 is assumed to really be in the character set given in the value,
5361 otherwise the (final) value of
5362 .Va charset-8bit
5363 is used for this purpose.
5366 .It Va cmd
5367 The default value for the
5368 .Ic pipe
5369 command.
5372 .It Va colour-disable
5373 \*(BO\*(OP Forcefully disable usage of colours.
5374 Also see the section
5375 .Sx "Coloured display" .
5378 .It Va colour-pager
5379 \*(BO\*(OP Wether colour shall be used for output that is paged through
5380 .Ev PAGER .
5381 Note that pagers may need special flags, e.g.,
5382 .Xr less 1
5383 requires the option
5384 .Fl \&\&R
5386 .Xr lv 1
5387 the option
5388 .Fl \&\&c
5389 in order to support colours; therefore \*(UA will inspect the variable
5390 .Ev PAGER
5391 \(en if that starts with the string
5392 .Dq less
5393 a non-existing environment variable
5394 .Va LESS
5395 will be set to
5396 .Ql FRSXi ,
5397 likewise for
5398 .Dq lv
5399 .Va LV
5400 will optionally be set to
5401 .Dq -c .
5402 Also see the section
5403 .Sx "Coloured display"
5404 for more on this.
5407 .It Va colour-terms
5408 \*(OP A comma-separated list of
5409 .Ev TERM Ns
5410 inals for which coloured display can be used.
5411 Entries only need to be added if the string
5412 .Ql color
5413 isn't part of the terminal name itself; the default value is
5415 .\" (Keep in SYNC: ./nail.h:n_COLOUR_TERMS, ./nail.1:*colour-terms*"!)
5416 .Dl aterm,cons25,gnome,konsole,\:kterm,\:linux,\:\
5417 rxvt,\:rxvt-unicode,\:screen,\:sun,\:vt100,\:vt220,\:wsvt25,\:xterm
5420 .It Va crt
5421 In a(n interactive) terminal session, then if this valued option is set
5422 it'll be used as a threshold to determine how many lines the given
5423 output has to span before it will be displayed via the configured
5424 .Ev PAGER ;
5425 Usage of the
5426 .Ev PAGER
5427 can be forced by setting this to the value
5428 .Ql 0 ,
5429 setting it without a value will deduce the current height of the
5430 terminal screen to compute the treshold (see
5431 .Ev LINES ,
5432 .Va screen
5434 .Xr stty 1 ) .
5437 .It Va datefield
5438 In the summary of
5439 .Ic headers
5440 the message date, if any is to be displayed according to the format of
5441 .Va headline ,
5442 is by default taken from the
5443 .Ql From_
5444 line of the message.
5445 If this variable is set the date as given in the
5446 .Ql Date:
5447 header field is used instead, converted to local time.
5448 To control the display format of the date assign a valid
5449 .Xr strftime 3
5450 format string.
5451 (Note that the
5452 .Ql %n
5453 format should not be used, because \*(UA doesn't take embedded newlines
5454 into account when calculating how many lines fit onto the screen.)
5455 Also see
5456 .Va datefield-markout-older .
5459 .It Va datefield-markout-older
5460 This option, when set in addition to
5461 .Va datefield ,
5462 is used to display
5463 .Dq older
5464 messages (concept is rather comparable to the
5465 .Fl \&\&l
5466 option of the POSIX utility
5467 .Xr ls 1 ) .
5468 The content interpretation is identical to
5469 .Va \&\&datefield .
5472 .It Va debug
5473 \*(BO Enables debug messages and obsoletion warnings, disables the
5474 actual delivery of messages and also implies
5475 .Pf no Va record
5476 as well as
5477 .Pf no Va save .
5480 .It Va disconnected
5481 \*(BY\*(OP\*(OB When an IMAP mailbox is selected and this variable is set,
5482 no connection to the server is initiated.
5483 Instead, data is obtained from the local cache (see
5484 .Va imap-cache Ns
5486 Mailboxes that are not present in the cache
5487 and messages that have not yet entirely been fetched from the server
5488 are not available;
5489 to fetch all messages in a mailbox at once,
5490 the command
5491 .No ` Ns Li copy * /dev/null Ns '
5492 can be used while still in connected mode.
5493 Changes that are made to IMAP mailboxes in disconnected mode are queued
5494 and committed later when a connection to that server is made.
5495 This procedure is not completely reliable since it cannot be guaranteed
5496 that the IMAP unique identifiers (UIDs) on the server still match the
5497 ones in the cache at that time.
5498 Data is saved to
5499 .Ev DEAD
5500 when this problem occurs.
5502 .It Va disconnected-USER@HOST
5503 The specified account is handled as described for the
5504 .Va disconnected
5505 variable above,
5506 but other accounts are not affected.
5509 .It Va disposition-notification-send
5510 \*(BO\*(OP Emit a
5511 .Ql Disposition-Notification-To:
5512 header (RFC 3798) with the message.
5513 This requires the
5514 .Va from
5515 variable to be set.
5516 .\" TODO .It Va disposition-notification-send-HOST
5517 .\"Overrides
5518 .\".Va disposition-notification-send
5519 .\" for SMTP accounts on a specific host.
5520 .\" TODO .It Va disposition-notification-send-USER@HOST
5521 .\"Overrides
5522 .\".Va disposition-notification-send
5523 .\"for a specific account.
5526 .It Va dot
5527 \*(BO When dot is set, a period
5528 .Ql \&.
5529 on a line by itself during message input in (interactive) compose mode
5530 will be treated as end-of-message (in addition to the normal end-of-file
5531 condition).
5533 .Va ignoreeof
5534 is set
5535 .Pf no Va dot
5536 is ignored.
5539 .It Va dotlock-ignore-error
5540 \*(BO\*(OP Synchronization of mailboxes which \*(UA treats as system
5541 mailboxes (see the command
5542 .Ic file )
5543 will be protected with so-called dotlock files\(emthe traditional mail
5544 spool file locking method\(emin addition to system file locking.
5545 Because \*(UA ships with a privilege-separated dotlock creation program
5546 that should always be able to create such a dotlock file there is no
5547 good reason to ignore dotlock file creation errors, and thus these are
5548 fatal unless this variable is set.
5551 .It Va editalong
5552 \*(BO If this variable is set then the editor is started automatically
5553 when a message is composed in interactive mode, as if the
5554 .Ic ~e
5555 .Sx "TILDE ESCAPES"
5556 had been specified.
5558 .Va editheaders
5559 variable is implied for this automatically spawned editor session.
5562 .It Va editheaders
5563 \*(BO When a message is edited while being composed,
5564 its header is included in the editable text.
5566 .Ql To: ,
5567 .Ql Cc: ,
5568 .Ql Bcc: ,
5569 .Ql Subject: ,
5570 .Ql From: ,
5571 .Ql Reply-To: ,
5572 .Ql Sender: ,
5574 .Ql Organization:
5575 fields are accepted within the header, other fields are ignored.
5578 .It Va emptystart
5579 \*(BO When entering interactive mode \*(UA normally writes
5580 .Dq \&No mail for user
5581 and exits immediately if a mailbox is empty or doesn't exist.
5582 If this option is set \*(UA starts even with an empty or nonexistent
5583 mailbox (the latter behaviour furtherly depends upon
5584 .Va bsdcompat ,
5585 though).
5588 .It Va encoding
5589 Suggestion for the MIME encoding to use in outgoing text messages
5590 and message parts.
5591 Valid values are the default
5592 .Ql quoted-printable ,
5593 .Ql 8bit
5595 .Ql base64 .
5596 .Ql 8bit
5597 may cause problems when transferring mail messages over channels that
5598 are not ESMTP (RFC 1869) compliant.
5599 If there is no need to encode a message,
5600 .Ql 7bit
5601 transfer mode is always used regardless of this variable.
5602 Binary data is always encoded as
5603 .Ql base64 .
5606 .It Va escape
5607 If defined, the first character of this option
5608 gives the character to use in place of
5609 .Ql ~
5610 to denote
5611 .Sx "TILDE ESCAPES" .
5614 .It Va expandaddr
5615 If not set then file and command pipeline targets are not allowed,
5616 and any such address will be filtered out, giving a warning message.
5617 If set without a value then all possible recipient address
5618 specifications will be accepted \(en see the section
5619 .Sx "On sending mail, and non-interactive mode"
5620 for more on this.
5621 To accept them, but only in interactive mode, or when tilde commands
5622 were enabled explicitly by using one of the command line options
5623 .Fl ~
5625 .Fl # ,
5626 set this to the (case-insensitive) value
5627 .Ql restrict
5628 (note right now this is actually like setting
5629 .Ql restrict,-all,+name,+addr ) .
5631 In fact the value is interpreted as a comma-separated list of values.
5632 If it contains
5633 .Ql fail
5634 then the existence of disallowed specifications is treated as a hard
5635 send error instead of only filtering them out.
5636 The remaining values specify wether a specific type of recipient
5637 address specification is allowed (optionally indicated by a plus sign
5638 .Ql +
5639 prefix) or disallowed (prefixed with a hyphen
5640 .Ql - ) .
5641 The value
5642 .Ql all
5643 addresses all possible address specifications,
5644 .Ql file
5645 file targets,
5646 .Ql pipe
5647 command pipeline targets,
5648 .Ql name
5649 plain user names and (MTA) aliases (\*(OB
5650 .Ql noalias
5651 may be used as an alternative syntax to
5652 .Ql -name )
5654 .Ql addr
5655 network addresses.
5656 These kind of values are interpreted in the given order, so that
5657 .Ql restrict,\:fail,\:+file,\:-all,\:+addr
5658 will cause hard errors for any non-network address recipient address
5659 unless \*(UA is in interactive mode or has been started with the
5660 .Fl ~
5662 .Fl #
5663 command line option; in the latter case(s) any address may be used, then.
5666 .It Va expandargv
5667 Unless this variable is set additional mail-transfer-agent (MTA)
5668 arguments from the command line, as can be given after a
5669 .Ql --
5670 separator, are ignored due to safety reasons.
5671 However, if set to the special value
5672 .Ql fail ,
5673 then the presence of additional MTA arguments is treated as a hard
5674 error that causes \*(UA to exit with failure status.
5675 A lesser strict variant is the otherwise identical
5676 .Ql restrict ,
5677 which does accept such arguments in interactive mode, or if tilde
5678 commands were enabled explicitly by using one of the command line options
5679 .Fl ~
5681 .Fl # .
5684 .It Va features
5685 \*(RO Information on the features compiled into \*(UA \(en the content
5686 of this variable is identical to the output of the command
5687 .Ic features .
5690 .It Va flipr
5691 \*(BO This option reverses the meanings of a set of reply commands,
5692 turning the lowercase variants, which by default address all recipients
5693 included in the header of a message
5694 .Pf ( Ic reply , respond , followup )
5695 into the uppercase variants, which by default address the sender only
5696 .Pf ( Ic Reply , Respond , Followup )
5697 and vice versa.
5698 The commands
5699 .Ic replysender , respondsender , followupsender
5700 as well as
5701 .Ic replyall , respondall , followupall
5702 are not affected by the current setting of
5703 .Va flipr .
5707 .It Va file-hook-load-EXTENSION , file-hook-save-EXTENSION
5708 It is possible to install file hooks which will be used by the
5709 .Ic file
5710 command in order to be able to transparently handle (through an
5711 intermediate temporary file) files with specific
5712 .Ql EXTENSION Ns
5713 s: the variable values can include shell snippets and are expected to
5714 write data to standard output / read data from standard input,
5715 respectively.
5716 \*(ID The variables may not be changed while there is a mailbox
5717 attendant.
5718 .Bd -literal -offset indent
5719 set file-hook-load-xy='echo >&2 XY-LOAD; gzip -cd' \e
5720     file-hook-save-xy='echo >&2 XY-SAVE; gzip -c' \e
5721     record=+null-sent.xy
5725 .It Va folder
5726 The name of the directory to use for storing folders of messages.
5727 All folder names that begin with
5728 .Ql +
5729 refer to files below it.
5730 The same special conventions as documented for the
5731 .Ic file
5732 command may be used when specifying a new value for
5733 .Va \&\&folder ,
5734 but be aware that the expansion is fully performed immediately.
5735 E.g., if the expanded name refers to an IMAP account, all names that
5736 begin with `+' refer to IMAP mailboxes below the
5737 .Va folder
5738 target box.
5740 Note: some IMAP servers do not accept the creation of mailboxes in
5741 the hierarchy base, but require that they are created as subfolders of
5742 `INBOX' \(en with such servers a folder name of the form
5744 .Dl imaps://mylogin@imap.myisp.example/INBOX.
5746 should be used (the last character is the server's hierarchy delimiter).
5747 Folder names prefixed by `+' will then refer to folders below `INBOX',
5748 while folder names prefixed by `@' refer to folders below the hierarchy
5749 base.
5750 See the
5751 .Ic imap
5752 namespace command for a method to detect the appropriate prefix and
5753 delimiter.
5756 .It Va folder-hook
5757 This variable can be set to the name of a
5758 .Ic define Ns d
5759 macro which will be called whenever a
5760 .Ic file
5761 is opened.
5762 The macro will also be invoked when new mail arrives,
5763 but message lists for commands executed from the macro
5764 only include newly arrived messages then.
5766 .Ic localopts
5767 are activated in a folder hook, then the covered settings will be
5768 reverted once the folder is left again.
5769 .Bd -filled -offset indent
5770 .Sy \*(ID:
5771 Macro behaviour, including option localization, will change in v15.
5772 To be on the absolutely safe side and avoid any surprises it may be wise
5773 to use wrappers that depend on the program version, e.g.,:
5775 .Bd -literal -offset indent
5776 if $version-major < 15
5777   define sent-hook {
5778     echo "pre v15"
5779   }
5780 else
5781   define sent-hook {
5782     echo "Please re-verify sent-hook (post v15)"
5783   }
5784 endif
5785 folder-hook-+sent=sent-hook
5789 .It Va folder-hook-FOLDER
5790 Overrides
5791 .Va folder-hook
5792 for a folder named
5793 .Ql FOLDER .
5794 Unlike other folder specifications, the fully expanded name of a folder,
5795 without metacharacters, is used to avoid ambiguities.
5796 However, if the mailbox resides under
5797 .Va folder
5798 then the usual
5799 .Ql +
5800 specification is tried in addition, e.g., if
5801 .Va \&\&folder
5803 .Dq mail
5804 (and thus relative to the user's home directory) then
5805 .Pa /home/usr1/mail/sent
5806 will be tried as
5807 .Ql folder-hook-/home/usr1/mail/sent
5808 first, but then followed by
5809 .Ql folder-hook-+sent .
5812 .It Va followup-to
5813 \*(BO Controls wether a
5814 .Ql Mail-Followup-To:
5815 header is generated when sending messages to known mailing lists.
5816 Also see
5817 .Va followup-to-honour
5818 and the commands
5819 .Ic mlist , mlsubscribe , reply
5821 .Ic Lreply .
5824 .It Va followup-to-honour
5825 Controls wether a
5826 .Ql Mail-Followup-To:
5827 header is honoured when group-replying to a message via
5828 .Ic reply
5830 .Ic Lreply .
5831 This is a quadoption; if set without a value it defaults to
5832 .Dq yes .
5833 Also see
5834 .Va followup-to
5835 and the commands
5836 .Ic mlist
5838 .Ic mlsubscribe .
5841 .It Va forward-as-attachment
5842 \*(BO Original messages are normally sent as inline text with the
5843 .Ic forward
5844 command,
5845 and only the first part of a multipart message is included.
5846 With this option messages are sent as unmodified MIME
5847 .Ql message/rfc822
5848 attachments with all of their parts included.
5851 .It Va from
5852 The address (or a list of addresses) to put into the
5853 .Ql From:
5854 field of the message header, quoting RFC 5322:
5855 the author(s) of the message, that is, the mailbox(es) of the person(s)
5856 or system(s) responsible for the writing of the message.
5857 If replying to messages these addresses are handled as if they were in
5859 .Ic alternates
5860 list.
5861 If the machine's hostname is not valid at the Internet (for example at
5862 a dialup machine) then either this variable or
5863 .Va hostname
5864 (\*(IN and with
5865 .Va smtp
5866 .Va smtp-hostname
5867 adds even more fine-tuning capabilities),
5868 have to be set.
5870 .Va \&\&from
5871 contains more than one address,
5872 setting the
5873 .Va sender
5874 variable is required (according to the standard RFC 5322).
5877 .It Va fullnames
5878 \*(BO When replying to or forwarding a message \*(UA normally removes
5879 the comment and name parts of email addresses.
5880 If this variable is set such stripping is not performed,
5881 and comments, names etc. are retained.
5884 .It Va fwdheading
5885 The string to put before the text of a message with the
5886 .Ic forward
5887 command
5888 (unless the
5889 .Va forward-as-attachment
5890 variable is set).
5891 Defaults to
5892 .Dq -------- Original Message --------
5893 if unset; No heading is put if it is set to the empty string.
5896 .It Va header
5897 \*(BO Causes the header summary to be written at startup and after
5898 commands that affect the number of messages or the order of messages in
5899 the current folder; enabled by default.
5900 The command line option
5901 .Fl N
5902 can be used to set
5903 .Pf no Va header .
5907 .It Va headline
5908 A format string to use for the summary of
5909 .Ic headers ,
5910 similar to the ones used for
5911 .Xr printf 3
5912 formats.
5913 Format specifiers in the given string start with a percent character
5914 .Ql %
5915 and may be followed by an optional decimal number indicating the field
5916 width \(em if that is negative, the field is to be left-aligned.
5917 Valid format specifiers are:
5920 .Bl -tag -compact -offset indent -width "_%%_"
5921 .It Ql %%
5922 A plain percent character.
5923 .It Ql %>
5924 .Dq Dotmark :
5925 a space character but for the current message
5926 .Pf ( Dq dot ) ,
5927 for which it expands to
5928 .Ql > .
5929 .It Ql %<
5930 .Dq Dotmark :
5931 a space character but for the current message
5932 .Pf ( Dq dot ) ,
5933 for which it expands to
5934 .Ql < .
5935 .It Ql %$
5936 \*(OP The spam score of the message, as has been classified via the
5937 command
5938 .Ic spamrate .
5939 Shows only a replacement character if there is no spam support.
5940 .It Ql %a
5941 Message attribute character (status flag); the actual content can be
5942 adjusted by setting
5943 .Va attrlist .
5944 .It Ql %d
5945 The date when the message was received, or the date found in the
5946 .Ql From:
5947 header when the
5948 .Va datefield
5949 variable is set (optionally to a date display format string).
5950 .It Ql %e
5951 The indenting level in threaded mode.
5952 .It Ql %f
5953 The address of the message sender.
5954 .It Ql %i
5955 The message thread tree structure.
5956 (Note that this format doesn't support a field width.)
5957 .It Ql %l
5958 The number of lines of the message, if available.
5959 .It Ql %m
5960 Message number.
5961 .It Ql %o
5962 The number of octets (bytes) in the message, if available.
5963 .It Ql %s
5964 Message subject (if any).
5965 .It Ql %S
5966 Message subject (if any) in double quotes.
5967 .It Ql \&%T
5968 Message recipient flags: is the addressee of the message a known or
5969 subscribed mailing list \(en see
5970 .Ic mlist
5972 .Ic mlsubscribe .
5973 .It Ql %t
5974 The position in threaded/sorted order.
5977 The default is
5978 .Ql %>\&%a\&%m\ %-18f\ %16d\ %4l/%\-5o\ %i%-s ,
5980 .Ql %>\&%a\&%m\ %20-f\ \ %16d\ %3l/%\-5o\ %i%-S
5982 .Va bsdcompat
5983 is set.
5984 Also see
5985 .Va attrlist
5987 .Va headline-bidi .
5991 .It Va headline-bidi
5992 Bidirectional text requires special treatment when displaying headers,
5993 because numbers (in dates or for file sizes etc.) will not affect the
5994 current text direction, in effect resulting in ugly line layouts when
5995 arabic or other right-to-left text is to be displayed.
5996 On the other hand only a minority of terminals is capable to correctly
5997 handle direction changes, so that user interaction is necessary for
5998 acceptable results.
5999 Note that extended host system support is required nonetheless, e.g.,
6000 detection of the terminal character set is one precondition;
6001 and this feature only works in an Unicode (i.e., UTF-8) locale.
6003 In general setting this variable will cause \*(UA to encapsulate text
6004 fields that may occur when displaying
6005 .Va headline
6006 (and some other fields, like dynamic expansions in
6007 .Va prompt )
6008 with special Unicode control sequences;
6009 it is possible to fine-tune the terminal support level by assigning
6010 a value:
6011 no value (or any value other than
6012 .Ql 1 ,
6013 .Ql 2
6015 .Ql 3 )
6016 will make \*(UA assume that the terminal is capable to properly deal
6017 with Unicode version 6.3, in which case text is embedded in a pair of
6018 U+2068 (FIRST STRONG ISOLATE) and U+2069 (POP DIRECTIONAL ISOLATE)
6019 characters.
6020 In addition no space on the line is reserved for these characters.
6022 Weaker support is chosen by using the value
6023 .Ql 1
6024 (Unicode 6.3, but reserve the room of two spaces for writing the control
6025 sequences onto the line).
6026 The values
6027 .Ql 2
6029 .Ql 3
6030 select Unicode 1.1 support (U+200E, LEFT-TO-RIGHT MARK); the latter
6031 again reserves room for two spaces in addition.
6034 .It Va history-file
6035 \*(OP If a command line editor is available then this can be set to
6036 name the (expandable) path of the location of a permanent history file.
6039 .It Va history-gabby
6040 \*(BO\*(OP Add more entries to the history as is normally done.
6043 .It Va history-gabby-persist
6044 \*(BO\*(OP \*(UA's own MLE will not save the additional
6045 .Va history-gabby
6046 entries in persistent storage unless this variable is set.
6047 On the other hand it will not loose the knowledge of wether a persistent
6048 entry was gabby or not.
6049 Also see
6050 .Va history-file .
6053 .It Va history-size
6054 \*(OP If a command line editor is available this value restricts the
6055 amount of history entries that are saved into a set and valid
6056 .Va history-file .
6057 A value of less than 0 disables this feature;
6058 note that loading and incorporation of
6059 .Va history-file
6060 upon program startup can also be suppressed by doing this.
6061 An unset or invalid value, or 0, causes a default value to be used.
6062 Dependent on the available command line editor this will also define the
6063 number of history entries in memory;
6064 it is also editor-specific wether runtime updates of this value will be
6065 honoured.
6068 .It Va hold
6069 \*(BO This option is used to hold messages in the system mailbox,
6070 and it is set by default.
6073 .It Va hostname
6074 Use this string as hostname when expanding local addresses instead of
6075 the value obtained from
6076 .Xr uname 3
6078 .Xr getaddrinfo 3 ,
6079 i.e., in
6080 .Ql Message-ID:
6082 .Ql From:
6083 fields.
6084 Note that when
6085 .Va smtp
6086 transport is not used then it is normally the responsibility of the MTA
6087 to create these fields, \*(IN in conjunction with
6088 .Va smtp
6089 however
6090 .Va smtp-hostname
6091 also influences the results;
6092 you should produce some test messages with the desired combination of
6093 .Va \&\&hostname ,
6094 and/or
6095 .Va from ,
6096 .Va sender
6097 etc. first.
6100 .It Va idna-disable
6101 \*(BO\*(OP Can be used to turn off the automatic conversion of domain
6102 names according to the rules of IDNA (internationalized domain names
6103 for applications).
6104 Since the IDNA code assumes that domain names are specified with the
6105 .Va ttycharset
6106 character set, an UTF-8 locale charset is required to represent all
6107 possible international domain names (before conversion, that is).
6110 .It Va ignore
6111 \*(BO Ignore interrupt signals from the terminal while entering
6112 messages; instead echo them as
6113 .Ql @
6114 characters and discard the current line.
6117 .It Va ignoreeof
6118 \*(BO Ignore end-of-file conditions
6119 .Pf ( Ql control-D )
6120 in compose mode on message input and in interactive command input.
6121 If set an interactive command input session can only be left by
6122 explicitly using one of the commands
6123 .Ic exit
6125 .Ic quit ,
6126 and message input in compose mode can only be terminated by entering
6127 a period
6128 .Ql \&.
6129 on a line by itself or by using the
6130 .Ic ~.
6131 .Sx "TILDE ESCAPES" ;
6132 .Va ignoreeof
6133 overrides a setting of
6134 .Pf no Va dot .
6136 .Mx Va imap-auth
6137 .It Va imap-auth-USER@HOST , imap-auth
6138 \*(OP\*(OB Sets the IMAP authentication method.
6139 Valid values are `login' for the usual password-based authentication
6140 (the default),
6141 `cram-md5', which is a password-based authentication that does not send
6142 the password over the network in clear text,
6143 and `gssapi' for GSS-API based authentication.
6146 .It Va imap-cache
6147 \*(OP\*(OB Enables caching of IMAP mailboxes.
6148 The value of this variable must point to a directory that is either
6149 existent or can be created by \*(UA.
6150 All contents of the cache can be deleted by \*(UA at any time;
6151 it is not safe to make assumptions about them.
6153 .Mx Va imap-keepalive
6154 .It Va imap-keepalive-USER@HOST , imap-keepalive-HOST , imap-keepalive
6155 \*(OP\*(OB IMAP servers may close the connection after a period of
6156 inactivity; the standard requires this to be at least 30 minutes,
6157 but practical experience may vary.
6158 Setting this variable to a numeric `value' greater than 0 causes
6159 a `NOOP' command to be sent each `value' seconds if no other operation
6160 is performed.
6163 .It Va imap-list-depth
6164 \*(OP\*(OB When retrieving the list of folders on an IMAP server, the
6165 .Ic folders
6166 command stops after it has reached a certain depth to avoid possible
6167 infinite loops.
6168 The value of this variable sets the maximum depth allowed.
6169 The default is 2.
6170 If the folder separator on the current IMAP server is a slash `/',
6171 this variable has no effect and the
6172 .Ic folders
6173 command does not descend to subfolders.
6175 .Mx Va imap-use-starttls
6176 .It Va imap-use-starttls-USER@HOST , imap-use-starttls-HOST , imap-use-starttls
6177 \*(OP\*(OB Causes \*(UA to issue a `STARTTLS' command to make an unencrypted
6178 IMAP session SSL/TLS encrypted.
6179 This functionality is not supported by all servers,
6180 and is not used if the session is already encrypted by the IMAPS method.
6183 .It Va indentprefix
6184 String used by the
6185 .Ic ~m , ~M
6187 .Ic ~R
6188 .Sx "TILDE ESCAPES"
6189 and by the
6190 .Va quote
6191 option for indenting messages,
6192 in place of the normal tabulator character
6193 .Ql ^I ,
6194 which is the default.
6195 Be sure to quote the value if it contains spaces or tabs.
6198 .It Va keep
6199 \*(BO If set, an empty mailbox file is not removed.
6200 This may improve the interoperability with other mail user agents
6201 when using a common folder directory, and prevents malicious users
6202 from creating fake mailboxes in a world-writable spool directory.
6203 Note this only applies to local regular (MBOX) files, other mailbox
6204 types will never be removed.
6207 .It Va keep-content-length
6208 \*(BO When (editing messages and) writing
6209 .Ev MBOX
6210 mailbox files \*(UA can be told to keep the
6211 .Ql Content-Length:
6213 .Ql Lines:
6214 header fields that some MUAs generate by setting this variable.
6215 Since \*(UA does neither use nor update these non-standardized header
6216 fields (which in itself shows one of their conceptual problems),
6217 stripping them should increase interoperability in between MUAs that
6218 work with with same mailbox files.
6219 Note that, if this is not set but
6220 .Va writebackedited ,
6221 as below, is, a possibly performed automatic stripping of these header
6222 fields already marks the message as being modified.
6225 .It Va keepsave
6226 \*(BO When a message is saved it is usually discarded from the
6227 originating folder when \*(UA is quit.
6228 Setting this option causes all saved message to be retained.
6231 .It Va line-editor-cursor-right
6232 \*(OP If the builtin command line editor is used, actions which are
6233 based on rightwise movement may not work on some terminals.
6234 If you encounter such problems, set this variable to the terminal
6235 control sequence that is necessary to move the cursor one column to the
6236 right.
6237 The default is
6238 .Ql \e033[C ,
6239 which should work for most terminals.
6240 Less often occur
6241 .Ql \e033OC
6243 .Ql \e014 .
6244 Note that
6245 .Dq Escape
6246 and other control character have to be written as shell-style escape
6247 sequences, e.g.,
6248 .Ql \e033
6249 for (US-ASCII)
6250 .Dq Escape .
6253 .It Va line-editor-disable
6254 \*(BO Turn off any enhanced line editing capabilities (see
6255 .Sx "Command line editor"
6256 for more).
6259 .It Va markanswered
6260 \*(BO When a message is replied to and this variable is set,
6261 it is marked as having been answered.
6262 This mark has no technical meaning in the mail system;
6263 it just causes messages to be marked in the header summary,
6264 and makes them specially addressable.
6267 .It Va mbox-rfc4155
6268 \*(BO \*(UA generates and expects fully RFC 4155 compliant MBOX text
6269 mailboxes.
6270 Messages which are fetched over the network or from within already
6271 existing Maildir (or any non-MBOX) mailboxes may require so-called
6272 .Ql From_
6273 quoting (insertion of additional
6274 .Ql >
6275 characters to prevent line content misinterpretation) to be applied in
6276 order to be storable in MBOX mailboxes, however, dependent on the
6277 circumspection of the message producer.
6278 (E.g., \*(UA itself will, when newly generating messages, choose a
6279 .Pf Content-Transfer- Va encoding
6280 that prevents the necessity for such quoting \(en a necessary
6281 precondition to ensure message checksums won't change.)
6283 By default \*(UA will perform this
6284 .Ql From_
6285 quoting in a way that results in a MBOX file that is compatible with
6286 the POSIX MBOX layout, which means that, in order not to exceed the
6287 capabilities of simple applications, many more
6288 .Ql From_
6289 lines get quoted (thus modified) than necessary according to RFC 4155.
6290 Set this option to instead generate MBOX files which comply to RFC 4155.
6293 .It Va memdebug
6294 \*(BO Internal development variable.
6297 .It Va message-id-disable
6298 \*(BO By setting this option the generation of
6299 .Ql Message-ID:
6300 can be completely suppressed, effectively leaving this task up to the
6301 mail-transfer-agent (MTA) or the SMTP server.
6302 (According to RFC 5321 your SMTP server is not required to add this
6303 field by itself, so you should ensure that it accepts messages without a
6304 .Ql Message-ID . )
6307 .It Va message-inject-head
6308 A string to put at the beginning of each new message.
6309 The escape sequences tabulator
6310 .Ql \et
6311 and newline
6312 .Ql \en
6313 are understood.
6316 .It Va message-inject-tail
6317 A string to put at the end of each new message.
6318 The escape sequences tabulator
6319 .Ql \et
6320 and newline
6321 .Ql \en
6322 are understood.
6325 .It Va metoo
6326 \*(BO Usually, when an
6327 .Ic alias
6328 expansion contains the sender, the sender is removed from the expansion.
6329 Setting this option suppresses these removals.
6330 Note that a set
6331 .Va metoo
6332 also causes a
6333 .Ql -m
6334 option to be passed to mail-transfer-agents (MTAs);
6335 though most of the modern MTAs don't (no longer) document this flag, no
6336 MTA is known which doesn't support it (for historical compatibility).
6339 .It Va mime-allow-text-controls
6340 \*(BO When sending messages, each part of the message is MIME-inspected
6341 in order to classify the
6342 .Ql Content-Type:
6344 .Ql Content-Transfer-Encoding:
6345 (see
6346 .Va encoding )
6347 that is required to send this part over mail transport, i.e.,
6348 a computation rather similar to what the
6349 .Xr file 1
6350 command produces when used with the
6351 .Ql --mime
6352 option.
6354 This classification however treats text files which are encoded in
6355 UTF-16 (seen for HTML files) and similar character sets as binary
6356 octet-streams, forcefully changing any
6357 .Ql text/plain
6359 .Ql text/html
6360 specification to
6361 .Ql application/octet-stream :
6362 If that actually happens a yet unset charset MIME parameter is set to
6363 .Ql binary ,
6364 effectively making it impossible for the receiving MUA to automatically
6365 interpret the contents of the part.
6367 If this option is set, and the data was unambiguously identified as text
6368 data at first glance (by a
6369 .Ql .txt
6371 .Ql .html
6372 file extension), then the original
6373 .Ql Content-Type:
6374 will not be overwritten.
6377 .It Va mime-alternative-favour-rich
6378 \*(BO If this variable is set then rich MIME alternative parts (e.g.,
6379 HTML) will be preferred in favour of included plain text versions when
6380 displaying messages, provided that a handler exists which produces
6381 output that can be (re)integrated into \*(UA's normal visual display.
6382 (E.g., at the time of this writing some newsletters ship their full
6383 content only in the rich HTML part, whereas the plain text part only
6384 contains topic subjects.)
6387 .It Va mime-counter-evidence
6388 Normally the
6389 .Ql Content-Type:
6390 field is used to decide how to handle MIME parts.
6391 Some MUAs however don't use
6392 .Xr mime.types 5
6393 or a similar mechanism to correctly classify content, but simply specify
6394 .Ql application/octet-stream ,
6395 even for plain text attachments like
6396 .Ql text/diff .
6397 If this variable is set then \*(UA will try to classify such MIME
6398 message parts on its own, if possible, for example via a possibly
6399 existent attachment filename.
6400 A non-empty value may also be given, in which case a number is expected,
6401 actually a carrier of bits.
6402 Creating the bit-carrying number is a simple addition:
6403 .Bd -literal -offset indent
6404 ? !echo Value should be set to $((2 + 4 + 8))
6405 Value should be set to 14
6408 .Bl -bullet -compact
6410 If bit two is set (2) then the detected
6411 .Dq real
6412 content-type will be carried along with the message and be used for
6413 deciding which
6414 .Va pipe-TYPE/SUBTYPE
6415 is responsible for the MIME part, shall that question arise;
6416 when displaying such a MIME part the part-info will indicate the
6417 overridden content-type by showing a plus-sign
6418 .Ql + .
6420 If bit three is set (4) then the counter-evidence is always produced
6421 and a positive result will be used as the MIME type, even forcefully
6422 overriding the parts given MIME type.
6424 If bit four is set (8) then as a last resort the actual content of
6425 .Ql application/octet-stream
6426 parts will be inspected, so that data which looks like plain text can be
6427 treated as such.
6431 .It Va mimetypes-load-control
6432 This option can be used to control which of the
6433 .Xr mime.types 5
6434 databases are loaded by \*(UA, as furtherly described in the section
6435 .Sx "The mime.types files" .
6436 If the letter
6437 .Ql u
6438 is part of the option value, then the user's personal
6439 .Pa ~/.mime.types
6440 file will be loaded (if it exists); likewise the letter
6441 .Ql s
6442 controls loading of the system wide
6443 .Pa /etc/mime.types ;
6444 directives found in the user file take precedence, letter matching is
6445 case-insensitive.
6446 If this option is not set \*(UA will try to load both files.
6447 Incorporation of the \*(UA-builtin MIME types cannot be suppressed,
6448 but they will be matched last.
6450 More sources can be specified by using a different syntax: if the
6451 value string contains an equals sign
6452 .Ql =
6453 then it is instead parsed as a comma-separated list of the described
6454 letters plus
6455 .Ql f=FILENAME
6456 pairs; the given filenames will be expanded and loaded, and their
6457 content may use the extended syntax that is described in the section
6458 .Sx "The mime.types files" .
6459 Directives found in such files always take precedence (are prepended to
6460 the MIME type cache).
6463 .It Va NAIL_EXTRA_RC
6464 The name of an optional startup file to be read after
6465 .Pa \*(ur .
6466 This variable has an effect only if it is set in
6467 .Pa \*(UR
6469 .Pa \&\&\*(ur ,
6470 it is not imported from the environment in order to honour
6471 .Ql MAILRC=/dev/null Ns /
6472 .Fl n
6473 invocations.
6474 Use this file for commands that are not understood by other POSIX
6475 .Xr mailx 1
6476 implementations.
6478 .Mx Va netrc-lookup
6479 .It Va netrc-lookup-USER@HOST , netrc-lookup-HOST , netrc-lookup
6480 \*(BO\*(IN\*(OP Used to control usage of the users
6481 .Pa .netrc
6482 file for lookup of account credentials, as documented in the section
6483 .Sx "On URL syntax and credential lookup"
6484 and for the command
6485 .Ic netrc ;
6486 the section
6487 .Sx "The .netrc file"
6488 documents the file format.
6491 .It Va newfolders
6492 If this variable has the value
6493 .Ql maildir ,
6494 newly created local folders will be in Maildir format.
6497 .It Va newmail
6498 Checks for new mail in the current folder each time the prompt is shown.
6499 For IMAP mailboxes the server is then polled for new mail,
6500 which may result in delayed operation if the connection to the server is
6501 slow.
6502 A Maildir folder must be re-scanned to determine if new mail has arrived.
6504 If this variable is set to the special value
6505 .Ql nopoll
6506 an IMAP server is not actively asked for new mail, but new mail may
6507 still be detected and announced with any other IMAP command that is sent
6508 to the server.
6509 In either case the IMAP server may send notifications about messages
6510 that have been deleted on the server by another process or client.
6511 In this case,
6512 .Dq Expunged X messages
6513 is printed regardless of this variable, and message numbers may have
6514 changed.
6516 If this variable is set to the special value
6517 .Ql nopoll
6518 then a Maildir folder will not be rescanned completely, but only
6519 timestamp changes are detected.
6522 .It Va outfolder
6523 \*(BO Causes the filename given in the
6524 .Va record
6525 variable
6526 and the sender-based filenames for the
6527 .Ic Copy
6529 .Ic Save
6530 commands to be interpreted relative to the directory given in the
6531 .Va folder
6532 variable rather than to the current directory,
6533 unless it is set to an absolute pathname.
6536 .It Va page
6537 \*(BO If set, each message feed through the command given for
6538 .Ic pipe
6539 is followed by a formfeed character
6540 .Ql \ef .
6542 .Mx Va password
6543 .It Va password-USER@HOST , password-HOST , password
6544 \*(IN Variable chain that sets a password, which is used in case none has
6545 been given in the protocol and account-specific URL;
6546 as a last resort \*(UA will ask for a password on the user's terminal if
6547 the authentication method requires a password.
6548 Specifying passwords in a startup file is generally a security risk;
6549 the file should be readable by the invoking user only.
6551 .It Va password-USER@HOST
6552 \*(OU (see the chain above for \*(IN)
6553 Set the password for
6554 .Ql USER
6555 when connecting to
6556 .Ql HOST .
6557 If no such variable is defined for a host,
6558 the user will be asked for a password on standard input.
6559 Specifying passwords in a startup file is generally a security risk;
6560 the file should be readable by the invoking user only.
6563 .It Va piperaw
6564 \*(BO Send messages to the
6565 .Ic pipe
6566 command without performing MIME and character set conversions.
6570 .It Va pipe-TYPE/SUBTYPE
6571 When a MIME message part of type
6572 .Ql TYPE/SUBTYPE
6573 (case-insensitive) is displayed or quoted,
6574 its text is filtered through the value of this variable interpreted as
6575 a shell command.
6576 The special value
6577 .Ql @
6578 forces interpretation of the message part as plain text, e.g.,
6579 .Ql set pipe-application/xml=@
6580 will henceforth display XML
6581 .Dq as is .
6582 (The same could also be achieved by adding a MIME type marker with the
6583 .Ic mimetype
6584 command.
6585 And \*(OPally MIME type handlers may be defined via
6586 .Sx "The Mailcap files"
6587 \(em corresponding flag strings are shown in parenthesis below.)
6590 The special value
6591 .Ql @
6592 can in fact be used to adjust usage and behaviour of a following shell
6593 command specification by appending trigger characters to it, e.g., the
6594 following hypothetical command specification could be used:
6595 .Bd -literal -offset indent
6596 set pipe-X/Y="@*!++=@vim ${NAIL_FILENAME_TEMPORARY}"
6600 .Bl -tag -compact -width ".It Ql __"
6601 .It Ql *
6602 Simply by using the special
6603 .Ql @
6604 prefix the MIME type (shell command) handler will only be invoked to
6605 display or convert the MIME part if the message is addressed directly
6606 and alone by itself.
6607 Use this trigger to disable this and always invoke the handler
6608 .Pf ( Cd x-mailx-always ) .
6610 .It Ql #
6611 If set the handler will not be invoked when a message is to be quoted,
6612 but only when it will be displayed
6613 .Pf ( Cd x-mailx-noquote ) .
6615 .It Ql &
6616 The command will be run asynchronously, i.e., without blocking \*(UA,
6617 which may be a handy way to display a, e.g., PDF file while also
6618 continuing to read the mail message
6619 .Pf ( Cd x-mailx-async ) .
6620 Asynchronous execution implies
6621 .Ql # .
6623 .It Ql \&!
6624 The command must be run on an interactive terminal, \*(UA will
6625 temporarily release the terminal to it
6626 .Pf ( Cd needsterminal ) .
6627 This flag is mutual exclusive with
6628 .Ql & ,
6629 will only be used in interactive mode and implies
6630 .Ql # .
6632 .It Ql +
6633 Request creation of a zero-sized temporary file, the absolute pathname
6634 of which will be made accessable via the environment variable
6635 .Ev NAIL_FILENAME_TEMPORARY
6636 .Pf ( Cd x-mailx-tmpfile ) .
6637 If this trigger is given twice then the file will be unlinked
6638 automatically by \*(UA when the command loop is entered again at latest
6639 .Pf ( Cd x-mailx-tmpfile-unlink ) .
6640 (Don't use this for asynchronous handlers.)
6642 .It Ql =
6643 Normally the MIME part content is passed to the handler via standard
6644 input; if this flag is set then the data will instead be written into
6645 .Ev NAIL_FILENAME_TEMPORARY
6646 .Pf ( Cd x-mailx-tmpfile-fill ) ,
6647 the creation of which is implied; note however that in order to cause
6648 deletion of the temporary file you still have to use two plus signs
6649 .Ql ++
6650 explicitly!
6652 .It Ql @
6653 To avoid ambiguities with normal shell command content you can use
6654 another at-sign to forcefully terminate interpretation of remaining
6655 characters.
6656 (Any character not in this list will have the same effect.)
6660 Some information about the MIME part to be displayed is embedded into
6661 the environment of the shell command:
6664 .Bl -tag -compact -width ".It Ev _AIL__ILENAME__ENERATED"
6666 .It Ev NAIL_CONTENT
6667 The MIME content-type of the part, if known, the empty string otherwise.
6670 .It Ev NAIL_CONTENT_EVIDENCE
6672 .Va mime-counter-evidence
6673 includes the carry-around-bit (2), then this will be set to the detected
6674 MIME content-type; not only then identical to
6675 .Ev \&\&NAIL_CONTENT
6676 otherwise.
6679 .It Ev NAIL_FILENAME
6680 The filename, if any is set, the empty string otherwise.
6683 .It Ev NAIL_FILENAME_GENERATED
6684 A random string.
6687 .It Ev NAIL_FILENAME_TEMPORARY
6688 If temporary file creation has been requested through the command prefix
6689 this variable will be set and contain the absolute pathname of the
6690 temporary file.
6693 .It Ev NAIL_TMPDIR
6694 The temporary directory that \*(UA uses.
6695 Usually identical to
6696 .Ev TMPDIR ,
6697 but guaranteed to be set and usable by child processes;
6698 to ensure the latter condition for
6699 .Ev \&\&TMPDIR
6700 also, it'll be set.
6705 .It Va pipe-EXTENSION
6706 This is identical to
6707 .Va pipe-TYPE/SUBTYPE
6708 except that
6709 .Ql EXTENSION
6710 (normalized to lowercase using character mappings of the ASCII charset)
6711 names a file extension, e.g.,
6712 .Ql xhtml .
6713 Handlers registered using this method take precedence.
6715 .Mx Va pop3-auth
6716 .It Va pop3-auth-USER@HOST , pop3-auth-HOST , pop3-auth
6717 \*(OP\*(IN Variable chain that sets the POP3 authentication method.
6718 The only possible value as of now is
6719 .Ql plain ,
6720 which is thus the default.
6723 .Mx Va pop3-bulk-load
6724 .It Va pop3-bulk-load-USER@HOST , pop3-bulk-load-HOST , pop3-bulk-load
6725 \*(BO\*(OP When accessing a POP3 server \*(UA loads the headers of
6726 the messages, and only requests the message bodies on user request.
6727 For the POP3 protocol this means that the message headers will be
6728 downloaded twice.
6729 If this option is set then \*(UA will download only complete messages
6730 from the given POP3 server(s) instead.
6732 .Mx Va pop3-keepalive
6733 .It Va pop3-keepalive-USER@HOST , pop3-keepalive-HOST , pop3-keepalive
6734 \*(OP POP3 servers close the connection after a period of inactivity;
6735 the standard requires this to be at least 10 minutes,
6736 but practical experience may vary.
6737 Setting this variable to a numeric value greater than
6738 .Ql 0
6739 causes a
6740 .Ql NOOP
6741 command to be sent each value seconds if no other operation is performed.
6743 .Mx Va pop3-no-apop
6744 .It Va pop3-no-apop-USER@HOST , pop3-no-apop-HOST , pop3-no-apop
6745 \*(BO\*(OP Unless this variable is set the
6746 .Ql APOP
6747 authentication method will be used when connecting to a POP3 server that
6748 advertises support.
6749 The advantage of
6750 .Ql APOP
6751 is that the password is not sent in clear text over the wire and that
6752 only a single packet is sent for the user/password tuple.
6753 Note that
6754 .Va pop3-no-apop-HOST
6755 requires \*(IN.
6757 .Mx Va pop3-use-starttls
6758 .It Va pop3-use-starttls-USER@HOST , pop3-use-starttls-HOST , pop3-use-starttls
6759 \*(BO\*(OP Causes \*(UA to issue a
6760 .Ql STLS
6761 command to make an unencrypted POP3 session SSL/TLS encrypted.
6762 This functionality is not supported by all servers,
6763 and is not used if the session is already encrypted by the POP3S method.
6764 Note that
6765 .Va pop3-use-starttls-HOST
6766 requires \*(IN.
6769 .It Va print-all-chars
6770 \*(BY This option causes all characters to be considered printable.
6771 It is only effective if given in a startup file.
6772 With this option set some character sequences in messages may put the
6773 user's terminal in an undefined state when displayed;
6774 it should only be used as a last resort if no working system locale can
6775 be found.
6778 .It Va print-alternatives
6779 \*(BO When a MIME message part of type
6780 .Ql multipart/alternative
6781 is displayed and it contains a subpart of type
6782 .Ql text/plain ,
6783 other parts are normally discarded.
6784 Setting this variable causes all subparts to be displayed,
6785 just as if the surrounding part was of type
6786 .Ql multipart/mixed .
6789 .It Va prompt
6790 The string shown when a command is accepted.
6791 Prompting may be prevented by either setting this to the null string
6792 or by setting
6793 .Pf no Va prompt .
6794 The same XSI escape sequences that are understood by the
6795 .Ic echo
6796 command may be used within
6797 .Va \&\&prompt .
6799 In addition, the following \*(UA specific additional sequences are
6800 understood:
6801 .Ql \e& ,
6802 which expands to
6803 .Dq \&?
6804 unless
6805 .Va bsdcompat
6806 is set, in which case it expands to
6807 .Dq \&& ;
6808 note that
6809 .Ql \e&\0
6810 is the default value of
6811 .Va \&\&prompt .
6812 .Ql \e? ,
6813 which will expand to
6814 .Dq 1
6815 if the last command failed and to
6816 .Dq 0
6817 otherwise,
6818 .Ql \e$ ,
6819 which will expand to the name of the currently active
6820 .Ic account ,
6821 if any, and to the empty string otherwise, and
6822 .Ql \e@ ,
6823 which will expand to the name of the currently active mailbox.
6824 (Note that the prompt buffer is size-limited, excess is cut off.)
6826 Even though
6827 .Va \&\&prompt
6828 checks for
6829 .Va headline-bidi
6830 to encapsulate the expansions of the
6831 .Ql \e$
6833 .Ql \e@
6834 escape sequences as necessary to correctly display bidirectional text,
6835 this is not true for the final string that makes up
6836 .Va \&\&prompt
6837 as such, i.e., real BIDI handling is not supported.
6839 When a newer version of the
6840 .Xr editline 3
6841 .Sx "Command line editor"
6842 is used, any escape sequence must itself be encapsulated with another
6843 escape character for usage with the
6844 .Va EL_PROMPT_ESC
6845 mechanism: \*(UA configures the control character
6846 .Ql \e01
6847 for this.
6850 .It Va quiet
6851 \*(BO Suppresses the printing of the version when first invoked.
6854 .It Va quote
6855 If set, \*(UA starts a replying message with the original message
6856 prefixed by the value of the variable
6857 .Va indentprefix .
6858 Normally, a heading consisting of
6859 .Dq Fromheaderfield wrote:
6860 is put before the quotation.
6861 If the string
6862 .Ql noheading
6863 is assigned to the
6864 .Va \&\&quote
6865 variable, this heading is omitted.
6866 If the string
6867 .Ql headers
6868 is assigned, the headers selected by the
6869 .Ic ignore Ns / Ns Ic retain
6870 commands are put above the message body,
6871 thus
6872 .Va \&\&quote
6873 acts like an automatic
6874 .Pf ` Ic ~m Ns '
6875 .Sx "TILDE ESCAPES"
6876 command, then.
6877 If the string
6878 .Ql allheaders
6879 is assigned, all headers are put above the message body and all MIME
6880 parts are included, making
6881 .Va \&\&quote
6882 act like an automatic
6883 .Pf ` Ic ~M Ns '
6884 command; also see
6885 .Va quote-as-attachment .
6888 .It Va quote-as-attachment
6889 \*(BO Add the original message in its entirety as a
6890 .Ql message/rfc822
6891 MIME attachment when replying to a message.
6892 Note this works regardless of the setting of
6893 .Va quote .
6896 .It Va quote-fold
6897 \*(OP Can be set in addition to
6898 .Va indentprefix .
6899 Setting this turns on a more fancy quotation algorithm in that leading
6900 quotation characters are compressed and overlong lines are folded.
6901 .Va \&\&quote-fold
6902 can be set to either one or two (space separated) numeric values,
6903 which are interpreted as the maximum (goal) and the minimum line length,
6904 respectively, in a spirit rather equal to the
6905 .Xr fmt 1
6906 program, but line-, not paragraph-based.
6907 If not set explicitly the minimum will reflect the goal algorithmically.
6908 The goal can't be smaller than the length of
6909 .Va indentprefix
6910 plus some additional pad.
6911 Necessary adjustments take place silently.
6914 .It Va recipients-in-cc
6915 \*(BO On group replies, specify only the sender of the original mail in
6916 .Ql To:
6917 and mention the other recipients in the secondary
6918 .Ql Cc: .
6919 By default all recipients of the original mail will be addressed via
6920 .Ql To: .
6923 .It Va record
6924 If defined, gives the pathname of the folder used to record all outgoing
6925 mail.
6926 If not defined, then outgoing mail is not saved.
6927 When saving to this folder fails the message is not sent,
6928 but instead saved to
6929 .Ev DEAD .
6932 .It Va record-resent
6933 \*(BO If both this variable and the
6934 .Va record
6935 variable are set,
6937 .Ic resend
6939 .Ic Resend
6940 commands save messages to the
6941 .Va record
6942 folder as it is normally only done for newly composed messages.
6945 .It Va reply-in-same-charset
6946 \*(BO If this variable is set \*(UA first tries to use the same
6947 character set of the original message for replies.
6948 If this fails, the mechanism described in
6949 .Sx "Character sets"
6950 is evaluated as usual.
6953 .It Va reply_strings
6954 Can be set to a comma-separated list of (case-insensitive according to
6955 ASCII rules) strings which shall be recognized in addition to the
6956 builtin strings as
6957 .Ql Subject:
6958 reply message indicators \(en builtin are
6959 .Ql Re: ,
6960 which is mandated by RFC 5322, as well as the german
6961 .Ql Aw: .
6964 .It Va replyto
6965 A list of addresses to put into the
6966 .Ql Reply-To:
6967 field of the message header.
6968 Members of this list are handled as if they were in the
6969 .Ic alternates
6970 list.
6973 .It Va reply-to-honour
6974 Controls wether a
6975 .Ql Reply-To:
6976 header is honoured when replying to a message via
6977 .Ic reply
6979 .Ic Lreply .
6980 This is a quadoption; if set without a value it defaults to
6981 .Dq yes .
6984 .It Va rfc822-body-from_
6985 \*(BO This variable can be used to force displaying a so-called
6986 .Ql From_
6987 line for messages that are embedded into an envelope mail via the
6988 .Ql message/rfc822
6989 MIME mechanism, for more visual convenience.
6992 .It Va save
6993 \*(BO Enable saving of (partial) messages in
6994 .Ev DEAD
6995 upon interrupt or delivery error.
6998 .It Va screen
6999 When \*(UA initially displays the message headers it determines the
7000 number to display by looking at the speed of the terminal.
7001 The faster the terminal, the more will be shown.
7002 This option specifies the number to use and overrides the calculation.
7003 This number is also used for scrolling with the
7004 .Ic z
7005 command.
7006 Overall screen dimensions and pager usage is influenced by the
7007 environment variables
7008 .Ev COLUMNS
7010 .Ev LINES
7011 and the variable
7012 .Va crt .
7015 .It Va searchheaders
7016 \*(BO Expand message-list specifiers in the form
7017 .Ql /x:y
7018 to all messages containing the substring
7019 .Dq y
7020 in the header field
7021 .Ql x .
7022 The string search is case insensitive.
7025 .It Va sendcharsets
7026 \*(OP A comma-separated list of character set names that can be used in
7027 outgoing internet mail.
7028 The value of the variable
7029 .Va charset-8bit
7030 is automatically appended to this list of character-sets.
7031 If no character set conversion capabilities are compiled into \*(UA then
7032 the only supported charset is
7033 .Va ttycharset .
7034 Also see
7035 .Va sendcharsets-else-ttycharset
7036 and refer to the section
7037 .Sx "Character sets"
7038 for the complete picture of character set conversion in \*(UA.
7041 .It Va sendcharsets-else-ttycharset
7042 \*(BO\*(OP If this variable is set, but
7043 .Va sendcharsets
7044 is not, then \*(UA acts as if
7045 .Va sendcharsets
7046 had been set to the value of the variable
7047 .Va ttycharset .
7048 In effect this combination passes through the message data in the
7049 character set of the current locale (given that
7050 .Va ttycharset
7051 hasn't been set manually), i.e., without converting it to the
7052 .Va charset-8bit
7053 fallback character set.
7054 Thus, mail message text will be in ISO-8859-1 encoding when send from
7055 within a ISO-8859-1 locale, and in UTF-8 encoding when send from within
7056 an UTF-8 locale.
7057 If no character set conversion capabilities are available in \*(UA then
7058 the only supported character set is
7059 .Va ttycharset .
7062 .It Va sender
7063 An address that is put into the
7064 .Ql Sender:
7065 field of outgoing messages, quoting RFC 5322: the mailbox of the agent
7066 responsible for the actual transmission of the message.
7067 This field should normally not be used unless the
7068 .Ql From:
7069 field contains more than one address, on which case it is required.
7071 .Va \&\&sender
7072 address is handled as if it were in the
7073 .Ic alternates
7074 list.
7077 .It Va sendmail
7078 To use an alternate mail transport agent (MTA),
7079 set this option to the full pathname of the program to use.
7080 It may be necessary to set
7081 .Va sendmail-progname
7082 in addition.
7084 The MTA will be passed command line arguments from several possible
7085 sources: from the variable
7086 .Va sendmail-arguments
7087 if set, from the command line if given and the variable
7088 .Va expandargv
7089 allows their use.
7090 Argument processing of the MTA will be terminated with a
7091 .Ql --
7092 separator.
7094 The otherwise occurring implicit usage of the following MTA command line
7095 arguments can be disabled by setting the boolean option
7096 .Va sendmail-no-default-arguments
7097 (which will also disable passing
7098 .Ql --
7099 to the MTA):
7100 .Ql -i
7101 (for not treating a line with only a dot
7102 .Ql \&.
7103 character as the end of input),
7104 .Ql -m
7105 (shall the option
7106 .Va metoo
7107 be set) and
7108 .Ql -v
7109 (if the
7110 .Va verbose
7111 option is set); in conjunction with the
7112 .Fl r
7113 command line option \*(UA will also pass
7114 .Ql -f
7115 as well as
7116 .Ql -F .
7119 .It Va sendmail-arguments
7120 Arguments to pass through to the Mail-Transfer-Agent can be given via
7121 this option.
7122 The content of this variable will be split up in a vector of arguments
7123 which will be joined onto other possible MTA options:
7125 .Dl set sendmail-arguments='-t -X \&"/tmp/my log\&"'
7128 .It Va sendmail-no-default-arguments
7129 \*(BO Unless this option is set \*(UA will pass some well known
7130 standard command line options to the defined
7131 .Va sendmail
7132 program, see there for more.
7135 .It Va sendmail-progname
7136 Many systems use a so-called
7137 .Xr mailwrapper 8
7138 environment to ensure compatibility with
7139 .Xr sendmail 1 .
7140 This works by inspecting the name that was used to invoke the mail
7141 delivery system.
7142 If this variable is set then the mailwrapper (the program that is
7143 actually executed when calling
7144 .Dq sendmail )
7145 will treat its contents as that name.
7146 The default is
7147 .Ql sendmail .
7150 .It Va sendwait
7151 \*(BO When sending a message wait until the MTA (including the builtin
7152 SMTP one) exits before accepting further commands.
7153 .Sy Only
7154 with this variable set errors reported by the MTA will be recognizable!
7155 If the MTA returns a non-zero exit status,
7156 the exit status of \*(ua will also be non-zero.
7159 .It Va showlast
7160 \*(BO Setting this option causes \*(UA to start at the last message
7161 instead of the first one when opening a mail folder.
7164 .It Va showname
7165 \*(BO Causes \*(UA to use the sender's real name instead of the plain
7166 address in the header field summary and in message specifications.
7169 .It Va showto
7170 \*(BO Causes the recipient of the message to be shown in the header
7171 summary if the message was sent by the user.
7174 .It Va Sign
7175 A string for use with the
7176 .Ic ~A
7177 tilde escape.
7180 .It Va sign
7181 A string for use with the
7182 .Ic ~a
7183 tilde escape.
7186 .It Va signature
7187 Must correspond to the name of a readable file if set.
7188 The file's content is then appended to each singlepart message
7189 and to the first part of each multipart message.
7190 Be warned that there is no possibility to edit the signature for an
7191 individual message.
7194 .It Va skipemptybody
7195 \*(BO If an outgoing message does not contain any text in its first or
7196 only message part, do not send it but discard it silently (see also the
7197 command line option
7198 .Fl E ) .
7201 .It Va smime-ca-dir
7202 \*(OP Specifies a directory with CA certificates in PEM (Privacy
7203 Enhanced Mail) format for verification of S/MIME signed messages.
7206 .It Va smime-ca-file
7207 \*(OP Specifies a file with CA certificates in PEM format for
7208 verification of S/MIME signed messages.
7210 .Mx Va smime-cipher
7211 .It Va smime-cipher-USER@HOST , smime-cipher
7212 \*(OP Specifies the cipher to use when generating S/MIME encrypted
7213 messages (for the specified account).
7214 RFC 5751 mandates a default of
7215 .Ql aes128
7216 (AES-128 CBC).
7217 Possible values are (case-insensitive and) in decreasing cipher strength:
7218 .Ql aes256
7219 (AES-256 CBC),
7220 .Ql aes192
7221 (AES-192 CBC),
7222 .Ql aes128
7223 (AES-128 CBC),
7224 .Ql des3
7225 (DES EDE3 CBC, 168 bits; default if
7226 .Ql aes128
7227 isn't available) and
7228 .Ql des
7229 (DES CBC, 56 bits).
7231 The actually available cipher algorithms depend on the cryptographic
7232 library that \*(UA uses.
7233 \*(OP Support for more cipher algorithms may be available through
7234 dynamic loading via, e.g.,
7235 .Xr EVP_get_cipherbyname 3
7236 (OpenSSL) if \*(UA has been compiled to support this.
7239 .It Va smime-crl-dir
7240 \*(OP Specifies a directory that contains files with CRLs in PEM format
7241 to use when verifying S/MIME messages.
7244 .It Va smime-crl-file
7245 \*(OP Specifies a file that contains a CRL in PEM format to use when
7246 verifying S/MIME messages.
7249 .It Va smime-encrypt-USER@HOST
7250 \*(OP If this variable is set, messages send to the given receiver are
7251 encrypted before sending.
7252 The value of the variable must be set to the name of a file that
7253 contains a certificate in PEM format.
7255 If a message is sent to multiple recipients,
7256 each of them for whom a corresponding variable is set will receive an
7257 individually encrypted message;
7258 other recipients will continue to receive the message in plain text
7259 unless the
7260 .Va smime-force-encryption
7261 variable is set.
7262 It is recommended to sign encrypted messages, i.e., to also set the
7263 .Va smime-sign
7264 variable.
7267 .It Va smime-force-encryption
7268 \*(BO\*(OP Causes \*(UA to refuse sending unencrypted messages.
7271 .It Va smime-no-default-ca
7272 \*(BO\*(OP Don't load default CA locations when verifying S/MIME signed
7273 messages.
7276 .It Va smime-sign
7277 \*(BO\*(OP S/MIME sign outgoing messages with the user's private key
7278 and include the user's certificate as a MIME attachment.
7279 Signing a message enables a recipient to verify that the sender used
7280 a valid certificate,
7281 that the email addresses in the certificate match those in the message
7282 header and that the message content has not been altered.
7283 It does not change the message text,
7284 and people will be able to read the message as usual.
7285 Also see
7286 .Va smime-sign-cert , smime-sign-include-certs
7288 .Va smime-sign-message-digest .
7290 .Mx Va smime-sign-cert
7291 .It Va smime-sign-cert-USER@HOST , smime-sign-cert
7292 \*(OP Points to a file in PEM format.
7293 For the purpose of signing and decryption this file needs to contain the
7294 user's private key as well as his certificate.
7296 For message signing
7297 .Ql USER@HOST
7298 is always derived from the value of
7299 .Va from
7300 (or, if that contains multiple addresses,
7301 .Va sender ) .
7302 For the purpose of encryption the recipient's public encryption key
7303 (certificate) is expected; the command
7304 .Ic certsave
7305 can be used to save certificates of signed messages (the section
7306 .Sx "Signed and encrypted messages with S/MIME"
7307 gives some details).
7308 This mode of operation is usually driven by the specialized form.
7310 When decrypting messages the account is derived from the recipient
7311 fields
7312 .Pf ( Ql To:
7314 .Ql Cc: )
7315 of the message, which are searched for addresses for which such
7316 a variable is set.
7317 \*(UA always uses the first address that matches,
7318 so if the same message is sent to more than one of the user's addresses
7319 using different encryption keys, decryption might fail.
7321 .Mx Va smime-sign-include-certs
7322 .It Va smime-sign-include-certs-USER@HOST , smime-sign-include-certs
7323 \*(OP If used, this is supposed to a consist of a comma-separated list
7324 of files, each of which containing a single certificate in PEM format to
7325 be included in the S/MIME message in addition to the
7326 .Va smime-sign-cert
7327 certificate.
7328 This is most useful for long certificate chains if it is desired to aid
7329 the receiving party's verification process.
7330 Note that top level certificates may also be included in the chain but
7331 don't play a role for verification.
7332 Also see
7333 .Va smime-sign-cert .
7334 Remember that for this
7335 .Ql USER@HOST
7336 refers to the variable
7337 .Va from
7338 (or, if that contains multiple addresses,
7339 .Va sender ) .
7341 .Mx Va smime-sign-message-digest
7342 .It Va smime-sign-message-digest-USER@HOST , smime-sign-message-digest
7343 \*(OP Specifies the message digest to use when signing S/MIME messages.
7344 RFC 5751 mandates a default of
7345 .Ql sha1 .
7346 Possible values are (case-insensitive and) in decreasing cipher strength:
7347 .Ql sha512 ,
7348 .Ql sha384 ,
7349 .Ql sha256 ,
7350 .Ql sha224
7352 .Ql md5 .
7354 The actually available message digest algorithms depend on the
7355 cryptographic library that \*(UA uses.
7356 \*(OP Support for more message digest algorithms may be available
7357 through dynamic loading via, e.g.,
7358 .Xr EVP_get_digestbyname 3
7359 (OpenSSL) if \*(UA has been compiled to support this.
7360 Remember that for this
7361 .Ql USER@HOST
7362 refers to the variable
7363 .Va from
7364 (or, if that contains multiple addresses,
7365 .Va sender ) .
7369 .It Va smtp
7370 \*(OP Normally \*(UA invokes the program defined via
7371 .Va sendmail
7372 to transfer messages, as described in
7373 .Sx "On sending mail, and non-interactive mode" .
7374 Setting the
7375 .Va \&\&smtp
7376 variable will instead cause SMTP network connections be made to the
7377 server specified therein in order to directly submit the message.
7378 \*(UA knows about three different
7379 .Dq SMTP protocols :
7381 .Bl -bullet -compact
7383 The plain SMTP protocol (RFC 5321) that normally lives on the
7384 server port 25 and requires setting the
7385 .Va smtp-use-starttls
7386 variable to enter a SSL/TLS encrypted session state.
7387 Assign a value like \*(IN
7388 .Ql [smtp://][user[:password]@]server[:port]
7389 (\*(OU
7390 .Ql [smtp://]server[:port] )
7391 to choose this protocol.
7393 Then the so-called SMTPS which is supposed to live on server port 465
7394 and is automatically SSL/TLS secured.
7395 Unfortunately it never became a standardized protocol and may thus not
7396 be supported by your hosts network service database
7397 \(en in fact the port number has already been reassigned to other
7398 protocols!
7400 SMTPS is nonetheless a commonly offered protocol and thus can be
7401 chosen by assigning a value like \*(IN
7402 .Ql smtps://[user[:password]@]server[:port]
7403 (\*(OU
7404 .Ql smtps://server[:port] ) ;
7405 due to the mentioned problems it is usually necessary to explicitly
7406 specify the port as
7407 .Ql :465 ,
7408 however.
7410 Finally there is the SUBMISSION protocol (RFC 6409), which usually
7411 lives on server port 587 and is practically identically to the SMTP
7412 protocol from \*(UA's point of view beside that; it requires setting the
7413 .Va smtp-use-starttls
7414 variable to enter a SSL/TLS secured session state.
7415 Assign a value like \*(IN
7416 .Ql submission://[user[:password]@]server[:port]
7417 (\*(OU
7418 .Ql submission://server[:port] ) .
7421 For more on credentials etc. please see
7422 .Sx "On URL syntax and credential lookup" .
7423 The SMTP transfer is executed in a child process, which runs
7424 asynchronously unless either the
7425 .Va sendwait
7426 or the
7427 .Va verbose
7428 variable is set.
7429 If it receives a TERM signal, it will abort and save the message to
7430 .Ev DEAD .
7433 .Mx Va smtp-auth
7434 .It Va smtp-auth-USER@HOST , smtp-auth-HOST , smtp-auth
7435 \*(OP Variable chain that sets the SMTP authentication method.
7436 Possible values are
7437 .Ql none
7438 (\*(OU default),
7439 .Ql plain
7440 (\*(IN default),
7441 .Ql login
7442 as well as the \*(OPal methods
7443 .Ql cram-md5
7445 .Ql gssapi .
7447 .Ql none
7448 method doesn't need any user credentials,
7449 .Ql gssapi
7450 requires a user name and all other methods require a user name and
7451 a password.
7452 See \*(IN
7453 .Va smtp ,
7454 .Va user
7456 .Va password
7457 (\*(OU
7458 .Va smtp-auth-password
7460 .Va smtp-auth-user ) .
7461 Note that
7462 .Va smtp-auth-HOST
7463 is \*(IN.
7464 \*(OU: Note for
7465 .Va smtp-auth-USER@HOST :
7466 may override dependend on sender address in the variable
7467 .Va from .
7469 .It Va smtp-auth-password
7470 \*(OP\*(OU Sets the global fallback password for SMTP authentication.
7471 If the authentication method requires a password, but neither
7472 .Va smtp-auth-password
7473 nor a matching
7474 .Va smtp-auth-password-USER@HOST
7475 can be found,
7476 \*(UA will ask for a password on the user's terminal.
7478 .It Va smtp-auth-password-USER@HOST
7479 \*(OU Overrides
7480 .Va smtp-auth-password
7481 for specific values of sender addresses, dependent upon the variable
7482 .Va from .
7484 .It Va smtp-auth-user
7485 \*(OP\*(OU Sets the global fallback user name for SMTP authentication.
7486 If the authentication method requires a user name, but neither
7487 .Va smtp-auth-user
7488 nor a matching
7489 .Va smtp-auth-user-USER@HOST
7490 can be found,
7491 \*(UA will ask for a user name on the user's terminal.
7493 .It Va smtp-auth-user-USER@HOST
7494 \*(OU Overrides
7495 .Va smtp-auth-user
7496 for specific values of sender addresses, dependent upon the variable
7497 .Va from .
7500 .It Va smtp-hostname
7501 \*(IN Normally \*(UA uses the variable
7502 .Va from
7503 to derive the necessary
7504 .Ql USER@HOST
7505 information to issue a
7506 .Ql MAIL FROM:<>
7507 SMTP command.
7508 Setting
7509 .Va smtp-hostname
7510 can be used to use the
7511 .Ql USER
7512 from the SMTP account
7513 .Pf ( Va smtp
7514 or the
7515 .Va user
7516 variable chain)
7517 and the
7518 .Ql HOST
7519 from the content of this variable (or, if that is the empty string,
7520 .Va hostname
7521 or the local hostname as a last resort).
7522 This often allows using an address that is itself valid but hosted by
7523 a provider other than which (in
7524 .Va from )
7525 is about to send the message.
7526 Setting this variable also influences the generated
7527 .Ql Message-ID: .
7529 .Mx Va smtp-use-starttls
7530 .It Va smtp-use-starttls-USER@HOST , smtp-use-starttls-HOST , smtp-use-starttls
7531 \*(BO\*(OP Causes \*(UA to issue a
7532 .Ql STARTTLS
7533 command to make an SMTP session SSL/TLS encrypted, i.e., to enable
7534 transport layer security.
7538 .It Va spam-interface
7539 \*(OP In order to use any of the spam-related commands (like, e.g.,
7540 .Ic spamrate )
7541 the desired spam interface must be defined by setting this variable.
7542 Please refer to the manual section
7543 .Sx "Handling spam"
7544 for the complete picture of spam handling in \*(UA.
7545 All or none of the following interfaces may be available:
7547 .Bl -tag -width ".It Ql _ilte_"
7548 .It Ql spamc
7549 Interaction with
7550 .Xr spamc 1
7551 from the
7552 .Xr spamassassin 1
7553 .Pf ( Lk http://spamassassin.apache.org SpamAssassin )
7554 suite.
7555 Different to the generic filter interface \*(UA will automatically add
7556 the correct arguments for a given command and has the necessary
7557 knowledge to parse the program's output.
7558 A default value for
7559 .Va spamc-command
7560 will have been compiled into the \*(UA binary if
7561 .Xr spamc 1
7562 has been found in
7563 .Ev PATH
7564 during compilation.
7565 Shall it be necessary to define a specific connection type (rather than
7566 using a configuration file for that), the variable
7567 .Va spamc-arguments
7568 can be used as in, e.g.,
7569 .Ql -d server.example.com -p 783 .
7570 It is also possible to specify a per-user configuration via
7571 .Va spamc-user .
7572 Note that this interface doesn't inspect the
7573 .Ql is-spam
7574 flag of a message for the command
7575 .Ic spamforget .
7577 .It Ql spamd
7578 \*(UA will directly communicate with the
7579 .Xr spamassassin 1
7580 daemon
7581 .Xr spamd 1
7582 via a path-based
7583 .Xr unix 4
7584 stream socket as specified in
7585 .Va spamd-socket .
7586 It is possible to specify a per-user configuration via
7587 .Va spamd-user .
7589 .It Ql filter
7590 generic spam filter support via freely configurable hooks.
7591 This interface is ment for programs like
7592 .Xr bogofilter 1
7594 .Xr sylfilter 1
7595 and requires according behaviour in respect to the hooks' exit
7596 status for at least the command
7597 .Ic spamrate
7598 .Pf ( Ql 0
7599 meaning a message is spam,
7600 .Ql 1
7601 for non-spam,
7602 .Ql 2
7603 for unsure and any other return value indicating a hard error);
7604 since the hooks can include shell code snippets diverting behaviour
7605 can be intercepted as necessary.
7606 The hooks are
7607 .Va spamfilter-ham , spamfilter-noham , spamfilter-nospam , \
7608   spamfilter-rate
7610 .Va spamfilter-spam ;
7611 the manual section
7612 .Sx "Handling spam"
7613 contains examples for some programs.
7614 The process environment of the hooks will have the variables
7615 .Ev NAIL_TMPDIR , TMPDIR
7617 .Ev NAIL_FILENAME_GENERATED
7618 set.
7619 Note that spam score support for
7620 .Ic spamrate
7621 isn't supported unless the \*(OPtional regular expression support is
7622 available and the
7623 .Va spamfilter-rate-scanscore
7624 variable is set.
7629 .It Va spam-maxsize
7630 \*(OP Messages that exceed this size won't be passed through to the
7631 configured
7632 .Va spam-interface .
7633 The default is 420000 bytes.
7636 .It Va spamc-command
7637 \*(OP The path to the
7638 .Xr spamc 1
7639 program for the
7640 .Ql spamc
7641 .Va spam-interface .
7642 Note that the path is not expanded, but used
7643 .Dq as is .
7644 A fallback path will have been compiled into the \*(UA binary if the
7645 executable had been found during compilation.
7648 .It Va spamc-arguments
7649 \*(OP Even though \*(UA deals with most arguments for the
7650 .Ql spamc
7651 .Va spam-interface
7652 automatically, it may at least sometimes be desirable to specifiy
7653 connection-related ones via this variable, e.g.,
7654 .Ql -d server.example.com -p 783 .
7657 .It Va spamc-user
7658 \*(OP Specify a username for per-user configuration files for the
7659 .Ql spamc
7660 .Va spam-interface .
7661 If this is set to the empty string then \*(UA will use the name of the
7662 current
7663 .Va user .
7666 .It Va spamd-socket
7667 \*(OP Specify the path of the
7668 .Xr unix 4
7669 domain socket on which
7670 .Xr spamd 1
7671 listens for connections for the
7672 .Ql spamd
7673 .Va spam-interface .
7674 Note that the path is not expanded, but used
7675 .Dq as is .
7678 .It Va spamd-user
7679 \*(OP Specify a username for per-user configuration files for the
7680 .Ql spamd
7681 .Va spam-interface .
7682 If this is set to the empty string then \*(UA will use the name of the
7683 current
7684 .Va user .
7691 .It Va spamfilter-ham , spamfilter-noham , \
7692   spamfilter-nospam , spamfilter-rate , spamfilter-spam
7693 \*(OP Command and argument hooks for the
7694 .Ql filter
7695 .Va spam-interface .
7696 The manual section
7697 .Sx "Handling spam"
7698 contains examples for some programs.
7701 .It Va spamfilter-rate-scanscore
7702 \*(OP Because of the generic nature of the
7703 .Ql filter
7704 .Va spam-interface
7705 spam scores are not supported for it by default, but if the \*(OPtional
7706 regular expression support is available then setting this variable can
7707 be used to overcome this restriction.
7708 It is interpreted as follows: first a number (digits) is parsed that
7709 must be followed by a semicolon
7710 .Ql \&;
7711 and an extended regular expression.
7712 Then the latter is used to parse the first output line of the
7713 .Va spamfilter-rate
7714 hook, and, in case the evaluation is successful, the group that has been
7715 specified via the number is interpreted as a floating point scan score.
7718 .It Va ssl-ca-dir
7719 \*(OP Specifies a directory with CA certificates in PEM (Pricacy
7720 Enhanced Mail) for verification of of SSL/TLS server certificates.
7722 .Xr SSL_CTX_load_verify_locations 3
7723 for more information.
7726 .It Va ssl-ca-file
7727 \*(OP Specifies a file with CA certificates in PEM format for
7728 verification of SSL/TLS server certificates.
7730 .Xr SSL_CTX_load_verify_locations 3
7731 for more information.
7733 .Mx Va ssl-cert
7734 .It Va ssl-cert-USER@HOST , ssl-cert-HOST , ssl-cert
7735 \*(OP Variable chain that sets the file name for a SSL/TLS client
7736 certificate required by some servers.
7737 This is a direct interface to the
7738 .Ql Certificate
7739 slot of the
7740 .Xr SSL_CONF_cmd 3
7741 function of the OpenSSL library, if available.
7743 .Mx Va ssl-cipher-list
7744 .It Va ssl-cipher-list-USER@HOST , ssl-cipher-list-HOST , ssl-cipher-list
7745 \*(OP Specifies a list of ciphers for SSL/TLS connections.
7746 This is a direct interface to the
7747 .Ql CipherString
7748 slot of the
7749 .Xr SSL_CONF_cmd 3
7750 function of the OpenSSL library, if available; see
7751 .Xr ciphers 1
7752 for more information.
7753 By default \*(UA doesn't set a list of ciphers, which in effect will use a
7754 .Va ssl-protocol
7755 specific cipher (protocol standards ship with a list of acceptable
7756 ciphers), possibly cramped to what the actually used SSL/TLS library
7757 supports \(en the manual section
7758 .Sx "An example configuration"
7759 also contains a SSL/TLS use case.
7762 .It Va ssl-config-file
7763 \*(OP If this variable is set \*(UA will call
7764 .Xr CONF_modules_load_file 3
7765 to allow OpenSSL to be configured according to the host system wide
7766 security settings.
7767 If a non-empty value is given then this will be used to specify the
7768 configuration file to be used instead of the global OpenSSL default;
7769 note that in this case it is an error if the file cannot be loaded.
7770 The application name will always be passed as
7771 .Dq \*(ua .
7774 .It Va ssl-crl-file
7775 \*(OP Specifies a file that contains a CRL in PEM format to use when
7776 verifying SSL/TLS server certificates.
7779 .It Va ssl-crl-dir
7780 \*(OP Specifies a directory that contains files with CRLs in PEM format
7781 to use when verifying SSL/TLS server certificates.
7783 .Mx Va ssl-key
7784 .It Va ssl-key-USER@HOST , ssl-key-HOST , ssl-key
7785 \*(OP Variable chain that sets the file name for the private key of
7786 a SSL/TLS client certificate.
7787 If unset, the name of the certificate file is used.
7788 The file is expected to be in PEM format.
7789 This is a direct interface to the
7790 .Ql PrivateKey
7791 slot of the
7792 .Xr SSL_CONF_cmd 3
7793 function of the OpenSSL library, if available.
7795 .Mx Va ssl-method
7796 .It Va ssl-method-USER@HOST , ssl-method-HOST , ssl-method
7797 \*(OP
7798 \*(OB Please use the newer and more flexible
7799 .Va ssl-protocol
7800 instead: if both values are set,
7801 .Va ssl-protocol
7802 will take precedence!
7803 Can be set to the following values, the actually used
7804 .Va ssl-protocol
7805 specification to which it is mapped is shown in parenthesis:
7806 .Ql tls1.2
7807 .Pf ( Ql -ALL, TLSv1.2 ) ,
7808 .Ql tls1.1
7809 .Pf ( Ql -ALL, TLSv1.1 ) ,
7810 .Ql tls1
7811 .Pf ( Ql -ALL, TLSv1 )
7813 .Ql ssl3
7814 .Pf ( Ql -ALL, SSLv3 ) ;
7815 the special value
7816 .Ql auto
7817 is mapped to
7818 .Ql ALL, -SSLv2
7819 and thus includes the SSLv3 protocol.
7820 Note that SSLv2 is no longer supported at all.
7823 .It Va ssl-no-default-ca
7824 \*(BO\*(OP Don't load default CA locations to verify SSL/TLS server
7825 certificates.
7827 .Mx Va ssl-protocol
7828 .It Va ssl-protocol-USER@HOST , ssl-protocol-HOST , ssl-protocol
7829 \*(OP Specify the used SSL/TLS protocol.
7830 This is a direct interface to the
7831 .Ql Protocol
7832 slot of the
7833 .Xr SSL_CONF_cmd 3
7834 function of the OpenSSL library, if available;
7835 otherwise an \*(UA internal parser is used which understands the
7836 following subset of (case-insensitive) command strings:
7837 .Ql SSLv3 ,
7838 .Ql TLSv1 ,
7839 .Ql TLSv1.1
7841 .Ql TLSv1.2 ,
7842 as well as the special value
7843 .Ql ALL .
7844 Multiple specifications may be given via a comma-separated list which
7845 ignores any whitespace.
7846 An optional
7847 .Ql +
7848 plus prefix will enable a protocol, a
7849 .Ql -
7850 minus prefix will disable it, so that
7851 .Ql -ALL, TLSv1.2
7852 will enable only the TLSv1.2 protocol.
7854 It depends upon the used TLS/SSL library which protocols are actually
7855 supported and which protocols are used if
7856 .Va ssl-protocol
7857 is not set, but note that SSLv2 is no longer supported at all and
7858 actively disabled.
7859 Especially for older protocols explicitly securing
7860 .Va ssl-cipher-list
7861 may be worthwile, see
7862 .Sx "An example configuration" .
7865 .It Va ssl-rand-egd
7866 \*(OP Gives the pathname to an entropy daemon socket, see
7867 .Xr RAND_egd 3 .
7868 Not all SSL/TLS libraries support this.
7871 .It Va ssl-rand-file
7872 \*(OP Gives the pathname to a file with entropy data, see
7873 .Xr RAND_load_file 3 .
7874 If the file is a regular file writable by the invoking user,
7875 new data is written to it after it has been loaded.
7877 .Mx Va ssl-verify
7878 .It Va ssl-verify-USER@HOST , ssl-verify-HOST , ssl-verify
7879 \*(OP Variable chain that sets the action to be performed if an error
7880 occurs during SSL/TLS server certificate validation.
7881 Valid (case-insensitive) values are
7882 .Ql strict
7883 (fail and close connection immediately),
7884 .Ql ask
7885 (ask whether to continue on standard input),
7886 .Ql warn
7887 (show a warning and continue),
7888 .Ql ignore
7889 (do not perform validation).
7890 The default is
7891 .Ql ask .
7894 .It Va stealthmua
7895 If only set without an assigned value, then this option inhibits the
7896 generation of the
7897 .Ql Message-ID:
7899 .Ql User-Agent:
7900 header fields that include obvious references to \*(UA.
7901 There are two pitfalls associated with this:
7902 First, the message id of outgoing messages is not known anymore.
7903 Second, an expert may still use the remaining information in the header
7904 to track down the originating mail user agent.
7905 If set to the value
7906 .Ql noagent ,
7907 then the mentioned
7908 .Ql Message-ID:
7909 suppression doesn't occur.
7912 .It Va term-ca-mode
7913 \*(BY\*(OP If terminal capability queries
7914 .Pf ( Xr termcap 5 ,
7915 .Xr terminfo 5 )
7916 are supported and this option is set then \*(UA will try to
7917 switch to the
7918 .Dq alternate screen
7919 when in interactive mode if the
7920 .Ev TERM Ns
7921 inal allows to do so, so that the terminal will go back to the
7922 normal screen, leaving all the text there intact, when \*(UA exits.
7924 .Sy Note:
7925 even when supported for this to produce appealing results the used
7926 .Ev PAGER
7927 and possibly configured
7928 .Va pipe-TYPE/SUBTYPE
7929 applications that take control over the terminal need to have
7930 corresponding support and must be configured accordingly, too, e.g., the
7931 .Xr less 1
7932 pager should be driven with the
7933 .Ql -X
7934 command line flag.
7937 .It Va toplines
7938 If defined, gives the number of lines of a message to be displayed
7939 with the command
7940 .Ic top ;
7941 normally, the first five lines are printed.
7944 .It Va ttycharset
7945 The character set of the terminal \*(UA operates on,
7946 and the one and only supported character set that \*(UA can use if no
7947 character set conversion capabilities have been compiled into it,
7948 in which case it defaults to ISO-8859-1 unless it can deduce a value
7949 from the
7950 .Ev LC_CTYPE
7951 locale environment.
7952 Refer to the section
7953 .Sx "Character sets"
7954 for the complete picture about character sets.
7956 .Mx Va user
7957 .It Va user-HOST , user
7958 \*(IN Variable chain that sets a global fallback user name, which is
7959 used in case none has been given in the protocol and account-specific
7960 URL.
7961 This variable defaults to the value of
7962 .Ev USER .
7965 .It Va v15-compat
7966 \*(BO Setting this option enables upward compatibility with \*(UA
7967 version 15.0 in respect to which configuration options are available and
7968 how they are handled.
7969 This manual uses \*(IN and \*(OU to refer to the new and the old way of
7970 doing things, respectively.
7973 .It Va verbose
7974 \*(BO Setting this option, also controllable via the command line option
7975 .Fl v ,
7976 causes \*(UA to be more verbose, e.g., it will display obsoletion
7977 warnings and SSL/TLS certificate chains.
7978 Even though marked \*(BO this option may be set twice in order to
7979 increase the level of verbosity even more, in which case even details of
7980 the actual message delivery and protocol conversations are shown.
7981 A single
7982 .Pf no Va verbose
7983 is sufficient to disable verbosity as such.
7989 .It Va version , version-major , version-minor , version-update
7990 \*(RO \*(UA version information: the first variable contains a string
7991 containing the complete version identification \(en this is identical to
7992 the output of the command
7993 .Ic version .
7994 The latter three contain only digits: the major, minor and update
7995 version numbers.
7998 .It Va writebackedited
7999 If this variable is set messages modified using the
8000 .Ic edit
8002 .Ic visual
8003 commands are written back to the current folder when it is quit;
8004 it is only honoured for writable folders in MBOX format, though.
8005 Note that the editor will be pointed to the raw message content in that
8006 case, i.e., neither MIME decoding nor decryption will have been
8007 performed, and proper RFC 4155
8008 .Ql From_
8009 quoting of newly added or edited content is also left as an excercise to
8010 the user.
8012 .\" }}} (Variables)
8013 .\" }}} (INTERNAL VARIABLES)
8016 .\" .Sh ENVIRONMENT {{{
8017 .Sh ENVIRONMENT
8019 The term
8020 .Dq environment variable
8021 should be considered an indication that the following variables are
8022 either standardized as being vivid parts of process environments, or
8023 are commonly found in there.
8024 The process environment is inherited from the
8025 .Xr sh 1
8026 once \*(UA is started, and unless otherwise explicitly noted variables
8027 in there integrate into the normal handling of
8028 .Sx "INTERNAL VARIABLES" ,
8029 from \*(UAs point of view, i.e., they can be
8030 .Ic set
8031 as such in resource files and need not necessarily come from the process
8032 environment and be managed via
8033 .Ic setenv
8035 .Ic unsetenv .
8036 E.g., the following example, applicable to a POSIX shell, sets the
8037 .Ev COLUMNS
8038 environment variable for \*(UA only, and beforehand exports the
8039 .Ev EDITOR
8040 in order to affect any further processing in the running shell:
8042 .Bd -literal -offset indent
8043 $ EDITOR="vim -u ${HOME}/.vimrc"
8044 $ export EDITOR
8045 $ COLUMNS=80 \*(ua -R
8048 .Bl -tag -width ".It Ev _AILR_"
8050 .It Ev COLUMNS
8051 The user's preferred width in column positions for the terminal screen
8052 or window.
8053 Queried and used once on program startup.
8056 .It Ev DEAD
8057 The name of the file to use for saving aborted messages if
8058 .Va save
8059 is set; this defaults to
8060 .Pa dead.letter
8061 in the user's
8062 .Ev HOME
8063 directory.
8066 .It Ev EDITOR
8067 Pathname of the text editor to use in the
8068 .Ic edit
8069 command and
8070 .Ic ~e
8071 .Sx "TILDE ESCAPES" .
8072 A default editor is used if this value is not defined.
8075 .It Ev HOME
8076 The user's home directory.
8077 This variable is only used when it resides in the process environment.
8079 .Ic setenv
8080 to update the value at runtime.
8087 .It Ev LANG , LC_ALL , LC_COLLATE , LC_CTYPE , LC_MESSAGES
8089 .Xr locale 7
8091 .Sx "Character sets" .
8094 .It Ev LINES
8095 The user's preferred number of lines on a page or the vertical screen
8096 or window size in lines.
8097 Queried and used once on program startup.
8100 .It Ev LISTER
8101 Pathname of the directory lister to use in the
8102 .Ic folders
8103 command when operating on local mailboxes.
8104 Default is
8105 .Xr ls 1
8106 (path search through
8107 .Ev SHELL ) .
8110 .It Ev MAIL
8111 Is used as the user's mailbox, if set.
8112 Otherwise, a system-dependent default is used.
8113 Supports a logical subset of the special conventions that are documented
8114 for the
8115 .Ic file
8116 command and the
8117 .Va folder
8118 option.
8121 .It Ev MAILCAPS
8122 \*(OP Overrides the default path search for
8123 .Sx "The Mailcap files" ,
8124 which is defined in the standard RFC 1524 as
8125 .Ql ~/.mailcap:\:/etc/mailcap:\:/usr/etc/mailcap:\:/usr/local/etc/mailcap .
8126 .\" TODO we should have a mailcaps-default virtual RDONLY option!
8127 (\*(UA makes it a configuration option, however.)
8128 Note this is not a search path, but a path search.
8131 .It Ev MAILRC
8132 Is used as a startup file instead of
8133 .Pa \*(ur
8134 if set.
8135 When \*(UA scripts are invoked on behalf of other users,
8136 this variable should be set to
8137 .Pa /dev/null
8138 to avoid side-effects from reading their configuration files.
8139 This variable is only used when it resides in the process environment.
8142 .It Ev MBOX
8143 The name of the user's mbox file.
8144 A logical subset of the special conventions that are documented for the
8145 .Ic file
8146 command and the
8147 .Va folder
8148 option may be used.
8149 The fallback default is
8150 .Pa mbox
8151 in the user's
8152 .Ev HOME
8153 directory.
8154 Traditionally this secondary mailbox is used as the file to save
8155 messages from the system mailbox that have been read.
8156 Also see
8157 .Sx "Message states" .
8160 .It Ev NAIL_NO_SYSTEM_RC
8161 If this variable is set then reading of
8162 .Pa \*(UR
8163 at startup is inhibited, i.e., the same effect is achieved as if \*(UA
8164 had been started up with the option
8165 .Fl n .
8166 This variable is only used when it resides in the process environment.
8169 .It Ev NETRC
8170 \*(IN\*(OP This variable overrides the default location of the user's
8171 .Pa .netrc
8172 file.
8175 .It Ev ORGANIZATION
8176 The value to put into the
8177 .Ql Organization:
8178 field of the message header.
8181 .It Ev PAGER
8182 Pathname of the program to use in the more command or when the
8183 .Va crt
8184 variable is set.
8185 The default paginator is
8186 .Xr more 1
8187 (path search through
8188 .Ev SHELL ) .
8191 .It Ev PATH
8192 A list of directories that is searched by the shell when looking for
8193 commands (as such only recognized in the process environment).
8196 .It Ev SHELL
8197 The shell to use for the commands
8198 .Ic \&! ,
8199 .Ic shell ,
8201 .Ic ~!
8202 .Sx "TILDE ESCAPES"
8203 and when starting subprocesses.
8204 A default shell is used if this option is not defined.
8207 .It Ev TERM
8208 \*(OP The terminal type for which output is to be prepared.
8209 For extended colour and font control please refer to
8210 .Sx "Coloured display" ,
8211 and for terminal capability queries to
8212 .Va term-ca-mode .
8215 .It Ev TMPDIR
8216 Used as directory for temporary files instead of
8217 .Pa /tmp ,
8218 if set.
8219 This variable is only used when it resides in the process environment.
8221 .Ic setenv
8222 to update the value at runtime.
8225 .It Ev USER
8226 Force identification as the given user, i.e., identical to the
8227 .Fl u
8228 command line option.
8229 This variable is only used when it resides in the process environment.
8231 .Ic setenv
8232 to update the value at runtime, but note that doing so won't trigger any
8233 of those validation checks that were performed on program startup (again).
8236 .It Ev VISUAL
8237 Pathname of the text editor to use in the
8238 .Ic visual
8239 command and
8240 .Ic ~v
8241 .Sx "TILDE ESCAPES" .
8243 .\" }}}
8246 .\" .Sh FILES {{{
8247 .Sh FILES
8249 .Bl -tag -width ".It Pa _etc/mime.type_"
8250 .It Pa \*(ur
8251 File giving initial commands.
8253 .It Pa \*(UR
8254 System wide initialization file.
8257 .It Pa ~/.mailcap
8258 \*(OP Personal MIME type handler definition file, see
8259 .Sx "The Mailcap files" .
8260 (RFC 1524 location, the actual path is a configuration option.)
8263 .It Pa /etc/mailcap
8264 \*(OP System wide MIME type handler definition file, see
8265 .Sx "The Mailcap files" .
8266 (RFC 1524 location, the actual path is a configuration option.)
8269 .It Pa ~/.mime.types
8270 Personal MIME types, see
8271 .Sx "The mime.types files" .
8274 .It Pa /etc/mime.types
8275 System wide MIME types, see
8276 .Sx "The mime.types files" .
8279 .It Pa ~/.netrc
8280 \*(IN\*(OP The default location of the users
8281 .Pa .netrc
8282 file \(en the section
8283 .Sx "The .netrc file"
8284 documents the file format.
8287 .\" .Ss "The mime.types files" {{{
8288 .Ss "The mime.types files"
8290 When sending messages \*(UA tries to determine the content type of all
8291 attachments.
8292 When displaying message content or attachments \*(UA uses the content
8293 type to decide wether it can directly display data or wether it needs to
8294 deal with content handlers.
8295 It learns about MIME types and how to treat them by reading
8296 .Pa mime.types
8297 files, the loading of which can be controlled by setting the variable
8298 .Va mimetypes-load-control .
8299 (The command
8300 .Ic mimetype
8301 can also be used to deal with MIME types.)
8302 .Pa mime.types
8303 files have the following syntax:
8306 .Dl type/subtype extension [extension ...]
8309 where
8310 .Ql type/subtype
8311 are strings describing the file contents, and one or multiple
8312 .Ql extension Ns
8313 s, separated by whitespace, name the part of a filename starting after
8314 the last dot (of interest).
8315 Comments may be introduced anywhere on a line with a number sign
8316 .Ql # ,
8317 causing the remaining line to be discarded.
8319 \*(UA also supports an extended, non-portable syntax in specially
8320 crafted files, which can be loaded via the alternative value syntax of
8321 .Va mimetypes-load-control
8322 and prepends an optional
8323 .Ql type-marker :
8326 .Dl [type-marker ]type/subtype extension [extension ...]
8329 The following type markers are supported:
8332 .Bl -tag -compact -offset indent -width ".It Ar _n_u"
8333 .It Ar @
8334 Treat message parts with this content as plain text.
8335 .It Ar @t@
8336 The same as plain
8337 .Ar @ .
8338 .It Ar @h@
8339 Treat message parts with this content as HTML tagsoup.
8340 If the \*(OPal HTML-tagsoup-to-text converter is not available treat
8341 the content as plain text instead.
8342 .It Ar @H@
8343 Likewise
8344 .Ar @h@
8345 but instead of falling back to plain text require an explicit content
8346 handler to be defined.
8350 Further reading:
8351 for sending messages:
8352 .Ic mimetype ,
8353 .Va mime-allow-text-controls ,
8354 .Va mimetypes-load-control .
8355 For reading etc. messages:
8356 .Sx "HTML mail and MIME attachments" ,
8357 .Sx "The Mailcap files" ,
8358 .Ic mimetype ,
8359 .Va mime-counter-evidence ,
8360 .Va mimetypes-load-control ,
8361 .Va pipe-TYPE/SUBTYPE ,
8362 .Va pipe-EXTENSION .
8363 .\" }}}
8365 .\" .Ss "The Mailcap files" {{{
8366 .Ss "The Mailcap files"
8368 RFC 1524 defines a
8369 .Dq User Agent Configuration Mechanism
8370 which \*(UA \*(OPally supports.
8371 It defines a file format to be used to inform mail user agent programs
8372 about the locally-installed facilities for handling various data
8373 formats, i.e., about commands and how they can be used to display, edit
8374 etc. MIME part contents, as well as a default path search that includes
8375 multiple possible locations of
8376 .Dq mailcap
8377 files and the
8378 .Ev MAILCAPS
8379 environment variable that can be used to overwrite that (repeating here
8380 that it is not a search path, but instead a path search specification).
8381 Any existing files will be loaded in sequence, appending any content to
8382 the list of MIME type handler directives.
8385 .Dq Mailcap
8386 files consist of a set of newline separated entries.
8387 Comment lines start with a number sign
8388 .Ql #
8389 (in the first column!) and are ignored.
8390 Empty lines are also ignored.
8391 All other lines form individual entries that must adhere to the syntax
8392 described below.
8393 To extend a single entry (not comment) its line can be continued on
8394 follow lines if newline characters are
8395 .Dq escaped
8396 by preceding them with the backslash character
8397 .Ql \e .
8398 The standard doesn't specify how leading whitespace of follow lines is
8399 to be treated, therefore \*(UA retains it.
8402 .Dq Mailcap
8403 entries consist of a number of semicolon
8404 .Ql \&;
8405 separated fields, and the backslash
8406 .Ql \e
8407 character can be used to escape any following character including
8408 semicolon and itself.
8409 The first two fields are mandatory and must occur in the specified
8410 order, the remaining fields are optional and may appear in any order.
8411 Leading and trailing whitespace of content is ignored (removed).
8414 The first field defines the MIME
8415 .Ql TYPE/SUBTYPE
8416 the entry is about to handle (case-insensitively, and no backslash
8417 escaping is possible in this field).
8418 If the subtype is specified as an asterisk
8419 .Ql *
8420 the entry is ment to match all subtypes of the named type, e.g.,
8421 .Ql audio/*
8422 would match any audio type.
8423 The second field defines the shell command which shall be used to
8424 .Dq display
8425 MIME parts of the given type; it is implicitly called the
8426 .Cd view
8427 command.
8430 For data
8431 .Dq consuming
8432 shell commands message (MIME part) data is passed via standard input
8433 unless the given shell command includes one or more instances of the
8434 (unquoted) string
8435 .Ql %s ,
8436 in which case these instances will be replaced with a temporary filename
8437 and the data will have been stored in the file that is being pointed to.
8438 Likewise, for data
8439 .Dq producing
8440 shell commands data is assumed to be generated on standard output unless
8441 the given command includes (one ore multiple)
8442 .Ql %s .
8443 In any case any given
8444 .Ql %s
8445 format is replaced with a(n already) properly quoted filename.
8446 Note that when a command makes use of a temporary file via
8447 .Ql %s
8448 then \*(UA will remove it again, as if the
8449 .Cd x-mailx-tmpfile ,
8450 .Cd x-mailx-tmpfile-fill
8452 .Cd x-mailx-tmpfile-unlink
8453 flags had been set; see below for more.
8456 The optional fields either define a shell command or an attribute (flag)
8457 value, the latter being a single word and the former being a keyword
8458 naming the field followed by an equals sign
8459 .Ql =
8460 succeeded by a shell command, and as usual for any
8461 .Dq Mailcap
8462 content any whitespace surrounding the equals sign will be removed, too.
8463 Optional fields include the following:
8466 .Bl -tag -width textualnewlines
8467 .It Cd compose
8468 A program that can be used to compose a new body or body part in the
8469 given format.
8470 (Currently unused.)
8472 .It Cd composetyped
8473 Similar to the
8474 .Cd compose
8475 field, but is to be used when the composing program needs to specify the
8476 .Ql Content-type:
8477 header field to be applied to the composed data.
8478 (Currently unused.)
8480 .It Cd edit
8481 A program that can be used to edit a body or body part in the given
8482 format.
8483 (Currently unused.)
8485 .It Cd print
8486 A program that can be used to print a message or body part in the given
8487 format.
8488 (Currently unused.)
8490 .It Cd test
8491 Specifies a program to be run to test some condition, e.g., the machine
8492 architecture, or the window system in use, to determine whether or not
8493 this mailcap entry applies.
8494 If the test fails, a subsequent mailcap entry should be sought; also see
8495 .Cd x-mailx-test-once .
8497 .It Cd needsterminal
8498 This flag field indicates that the given shell command must be run on
8499 an interactive terminal.
8500 \*(UA will temporarily release the terminal to the given command in
8501 interactive mode, in non-interactive mode this entry will be entirely
8502 ignored; this flag implies
8503 .Cd x-mailx-noquote .
8505 .It Cd copiousoutput
8506 A flag field which indicates that the output of the
8507 .Cd view
8508 command will be an extended stream of textual output that can be
8509 (re)integrated into \*(UA's normal visual display.
8510 It is mutually exclusive with
8511 .Cd needsterminal
8512 and implies
8513 .Cd x-mailx-always .
8515 .It Cd textualnewlines
8516 A flag field which indicates that this type of data is line-oriented and
8517 that, if encoded in
8518 .Ql base64 ,
8519 all newlines should be converted to canonical form (CRLF) before
8520 encoding, and will be in that form after decoding.
8521 (Currently unused.)
8523 .It Cd nametemplate
8524 This field gives a file name format, in which
8525 .Ql %s
8526 will be replaced by a random string, the joined combination of which
8527 will be used as the filename denoted by
8528 .Ev NAIL_FILENAME_TEMPORARY .
8529 One could specify that a GIF file being passed to an image viewer should
8530 have a name ending in
8531 .Ql .gif
8532 by using
8533 .Ql nametemplate=%s.gif .
8534 Note that \*(UA ignores the name template unless that solely specifies
8535 a filename suffix that consists of (ASCII) alphabetic and numeric
8536 characters, the underscore and dot only.
8538 .It Cd x11-bitmap
8539 Names a file, in X11 bitmap (xbm) format, which points to an appropriate
8540 icon to be used to visually denote the presence of this kind of data.
8541 This field is not used by \*(UA.
8543 .It Cd description
8544 A textual description that describes this type of data.
8546 .It Cd x-mailx-always
8547 Extension flag field that denotes that the given
8548 .Cd view
8549 command shall be executed even if multiple messages will be displayed
8550 at once.
8551 Normally messages which require external viewers that produce output
8552 which doesn't integrate into \*(UA's visual display (i.e., don't have
8553 .Cd copiousoutput
8554 set) have to be addressed directly and individually.
8555 (To avoid cases where, e.g., a thousand PDF viewer instances are spawned
8556 in sequence.)
8558 .It Cd x-mailx-even-if-not-interactive
8559 An extension flag test field \(em by default handlers without
8560 .Cd copiousoutput
8561 are entirely ignored in non-interactive mode, but if this flag is set
8562 then their use will be considered.
8563 It is an error if this flag is set for commands that use the flag
8564 .Cd needsterminal .
8566 .It Cd x-mailx-noquote
8567 An extension flag field that indicates that even a
8568 .Cd copiousoutput
8569 .Cd view
8570 command shall not be used to generate message quotes
8571 (as it would be by default).
8573 .It Cd x-mailx-async
8574 Extension flag field that denotes that the given
8575 .Cd view
8576 command shall be executed asynchronously, without blocking \*(UA.
8577 Cannot be used in conjunction with
8578 .Cd needsterminal .
8580 .It Cd x-mailx-test-once
8581 Extension flag which denotes wether the given
8582 .Cd test
8583 command shall be evaluated once only and the (boolean) result be cached.
8584 This is handy if some global unchanging condition is to be queried, like
8585 .Dq running under the X Window System .
8587 .It Cd x-mailx-tmpfile
8588 Extension flag field that requests creation of a zero-sized temporary
8589 file, the name of which is to be placed in the environment variable
8590 .Ev NAIL_FILENAME_TEMPORARY .
8591 It is an error to use this flag with commands that include a
8592 .Ql %s
8593 format.
8595 .It Cd x-mailx-tmpfile-fill
8596 Normally the MIME part content is passed to the handler via standard
8597 input; if this flag is set then the data will instead be written into
8598 the implied
8599 .Cd x-mailx-tmpfile .
8600 In order to cause deletion of the temporary file you will have to set
8601 .Cd x-mailx-tmpfile-unlink
8602 explicitly!
8603 It is an error to use this flag with commands that include a
8604 .Ql %s
8605 format.
8607 .It Cd x-mailx-tmpfile-unlink
8608 Extension flag field that requests that the temporary file shall be
8609 deleted automatically when the command loop is entered again at latest.
8610 (Don't use this for asynchronous handlers.)
8611 It is an error to use this flag with commands that include a
8612 .Ql %s
8613 format, or without also setting
8614 .Cd x-mailx-tmpfile
8616 .Cd x-mailx-tmpfile-fill .
8618 .It Cd x-mailx-tmpfile-keep
8619 Using the string
8620 .Ql %s
8621 implies the three tmpfile related flags above, but if you want, e.g.,
8622 .Cd x-mailx-async
8623 and deal with the temporary file yourself, you can add in this flag to
8624 forcefully ignore
8625 .Cd x-mailx-tmpfile-unlink .
8630 The standard includes the possibility to define any number of additional
8631 entry fields, prefixed by
8632 .Ql x- .
8633 Flag fields apply to the entire
8634 .Dq Mailcap
8635 entry \(em in some unusual cases, this may not be desirable, but
8636 differentiation can be accomplished via separate entries, taking
8637 advantage of the fact that subsequent entries are searched if an earlier
8638 one does not provide enough information.
8639 E.g., if a
8640 .Cd view
8641 command needs to specify the
8642 .Cd needsterminal
8643 flag, but the
8644 .Cd compose
8645 command shall not, the following will help out the latter (with enabled
8646 .Va debug
8647 or an increased
8648 .Va verbose
8649 level \*(UA will show informations about handler evaluation):
8651 .Bd -literal -offset indent
8652 application/postscript; ps-to-terminal %s; needsterminal
8653 application/postscript; ps-to-terminal %s; compose=idraw %s
8657 In fields any occurrence of the format string
8658 .Ql %t
8659 will be replaced by the
8660 .Ql TYPE/SUBTYPE
8661 specification.
8662 Named parameters from the
8663 .Ql Content-type:
8664 field may be placed in the command execution line using
8665 .Ql %{
8666 followed by the parameter name and a closing
8667 .Ql }
8668 character.
8669 The entire parameter should appear as a single command line argument,
8670 regardless of embedded spaces; thus:
8672 .Bd -literal -offset indent
8673 # Message
8674 Content-type:  multipart/mixed; boundary=42
8676 # Mailcap file
8677 multipart/*; /usr/local/bin/showmulti \e
8678   %t %{boundary}  ;  composetyped  = /usr/local/bin/makemulti
8680 # Executed shell command
8681 /usr/local/bin/showmulti multipart/mixed 42
8685 .\" TODO v15: Mailcap: %n,%F
8686 Note that \*(UA doesn't support handlers for multipart MIME parts as
8687 shown in this example (as of today).
8688 \*(UA doesn't support the additional formats
8689 .Ql %n
8691 .Ql %F .
8692 An example file, also showing how to properly deal with the expansion of
8693 .Ql %s ,
8694 which includes any quotes that are necessary to make it a valid shell
8695 argument by itself and thus will cause undesired behaviour when placed
8696 in additional user-provided quotes:
8698 .Bd -literal -offset indent
8699 # Comment line
8700 text/richtext; richtext %s; copiousoutput
8702 text/x-perl; perl -cWT %s
8704 application/pdf; \e
8705   infile=%s\e; \e
8706     trap "rm -f ${infile}" EXIT\e; \e
8707     trap "exit 75" INT QUIT TERM\e; \e
8708     mupdf %s; \e
8709   x-mailx-async; x-mailx-tmpfile-keep
8711 application/*; echo "This is \e"%t\e" but \e
8712     is 50 \e% Greek to me" \e; < %s head -c 1024 | cat -vET; \e
8713   copiousoutput; x-mailx-noquote
8717 Further reading:
8718 .Sx "HTML mail and MIME attachments" ,
8719 .Sx "The mime.types files" ,
8720 .Ic mimetype ,
8721 .Ev MAILCAPS ,
8722 .Va mime-counter-evidence ,
8723 .Va pipe-TYPE/SUBTYPE ,
8724 .Va pipe-EXTENSION .
8725 .\" }}}
8727 .\" .Ss "The .netrc file" {{{
8728 .Ss "The .netrc file"
8731 .Pa .netrc
8732 file contains user credentials for machine accounts.
8733 The default location in the user's
8734 .Ev HOME
8735 directory may be overridden by the
8736 .Ev NETRC
8737 environment variable.
8738 The file consists of space, tabulator or newline separated tokens.
8739 \*(UA implements a parser that supports a superset of the original BSD
8740 syntax, but users should nonetheless be aware of portability glitches
8741 of that file format, shall their
8742 .Pa .netrc
8743 be usable across multiple programs and platforms:
8746 .Bl -bullet -compact
8748 BSD doesn't support single, but only double quotation marks, e.g.,
8749 .Ql password="pass with spaces" .
8751 BSD (only?) supports escaping of single characters via a backslash
8752 (e.g., a space can be escaped via
8753 .Ql \e\0 ) ,
8754 in- as well as outside of a quoted string.
8756 BSD doesn't require the final quotation mark of the final user input token.
8758 At least Hewlett-Packard seems to support a format which also allows
8759 tokens to be separated with commas \(en this format is not supported!
8761 Whereas other programs may require that the
8762 .Pa .netrc
8763 file is accessible by only the user if it contains a
8764 .Cd password
8765 token for any other
8766 .Cd login
8767 than
8768 .Dq anonymous ,
8769 \*(UA will always require these strict permissions.
8773 Of the following list of supported tokens \*(UA only uses (and caches)
8774 .Cd machine ,
8775 .Cd login
8777 .Cd password .
8778 At runtime the command
8779 .Ic netrc
8780 can be used to control \*(UAs
8781 .Pa .netrc
8782 cache.
8784 .Bl -tag -width password
8785 .It Cd machine Ar name
8786 The hostname of the entries' machine, lowercase-normalized by \*(UA
8787 before use.
8788 Any further file content, until either end-of-file or the occurrence
8789 of another
8790 .Cd machine
8791 or a
8792 .Cd default
8793 first-class token is bound (only related) to the machine
8794 .Ar name .
8796 As an extension that shouldn't be the cause of any worries
8797 \*(UA supports a single wildcard prefix for
8798 .Ar name :
8799 .Bd -literal -offset indent
8800 machine *.example.com login USER password PASS
8801 machine pop3.example.com login USER password PASS
8802 machine smtp.example.com login USER password PASS
8805 which would match
8806 .Ql xy.example.com
8807 as well as
8808 .Ql pop3.example.com ,
8809 but neither
8810 .Ql example.com
8812 .Ql local.smtp.example.com .
8813 Note that in the example neither
8814 .Ql pop3.example.com
8816 .Ql smtp.example.com
8817 will be matched by the wildcard, since the exact matches take
8818 precedence (it is however faster to specify it the other way around).
8820 .It Cd default
8821 This is the same as
8822 .Cd machine
8823 except that it is a fallback entry that is used shall none of the
8824 specified machines match; only one default token may be specified,
8825 and it must be the last first-class token.
8827 .It Cd login Ar name
8828 The user name on the remote machine.
8830 .It Cd password Ar string
8831 The user's password on the remote machine.
8833 .It Cd account Ar string
8834 Supply an additional account password.
8835 This is merely for FTP purposes.
8837 .It Cd macdef Ar name
8838 Define a macro.
8839 A macro is defined with the specified
8840 .Ar name ;
8841 it is formed from all lines beginning with the next line and continuing
8842 until a blank line is (consecutive newline characters are) encountered.
8843 (Note that
8844 .Cd macdef
8845 entries cannot be utilized by multiple machines, too, but must be
8846 defined following the
8847 .Ic machine
8848 they are intended to be used with.)
8849 If a macro named
8850 .Ar init
8851 exists, it is automatically run as the last step of the login process.
8852 This is merely for FTP purposes.
8854 .\" }}}
8856 .\" }}}
8859 .\" .Sh EXAMPLES {{{
8860 .Sh EXAMPLES
8862 .\" .Ss "An example configuration" {{{
8863 .Ss "An example configuration"
8865 .Bd -literal -offset indent
8866 # This example assumes v15.0 compatibility mode
8867 set v15-compat
8869 # Where are the up-to-date SSL certificates?
8870 #set ssl-ca-dir=/etc/ssl/certs
8871 set ssl-ca-file=/etc/ssl/certs/ca-certificates.crt
8873 # (Since we manage up-to-date ones explicitly, don't use any,
8874 # possibly outdated, default certificates shipped with OpenSSL
8875 set ssl-no-default-ca
8877 # Don't use protocols older than TLS v1.2.
8878 # Change this only when the remote server doesn't support it:
8879 # maybe use ssl-protocol-HOST (or -USER@HOST) syntax to define
8880 # such explicit exceptions, then
8881 set ssl-protocol="-ALL,+TLSv1.2"
8883 # Explicitly define the list of ciphers, which may improve security,
8884 # especially with protocols older than TLS v1.2.  See ciphers(1).
8885 # Hint: it is important to include "@STRENGTH": only with it the
8886 # final list will be sorted by algorithm strength.
8887 # This is an example: in reality it is possibly best to only use
8888 # ssl-cipher-list-HOST (or -USER@HOST), as necessary, again..
8889 set ssl-cipher-list="ALL:!aNULL:!MEDIUM:!LOW:\e
8890     !MD5:!RC4:!EXPORT:@STRENGTH"
8892 # Request strict transport security checks!
8893 set ssl-verify=strict
8895 # Essential setting: select allowed character sets
8896 set sendcharsets=utf-8,iso-8859-1
8898 # A very kind option: when replying to a message, first try to
8899 # use the same encoding that the original poster used herself!
8900 set reply-in-same-charset
8902 # When replying to or forwarding a message the comment and name
8903 # parts of email addresses are removed unless this variable is set
8904 set fullnames
8906 # When sending messages, wait until the Mail-Transfer-Agent finishs.
8907 # Only like this you'll be able to see errors reported through the
8908 # exit status of the MTA (including the builtin SMTP one)!
8909 set sendwait
8911 # Only use builtin MIME types, no mime.types(5) files
8912 set mimetypes-load-control
8914 # Default directory where we act in (relative to $HOME)
8915 set folder=mail
8916 # A leading "+" (often) means: under *folder*
8917 # *record* is used to save copies of sent messages
8918 set MBOX=+mbox.mbox record=+sent.mbox DEAD=+dead.mbox
8920 # Make "file mymbox" and "file myrec" go to..
8921 shortcut mymbox %:+mbox.mbox myrec +sent.mbox
8923 # Not really optional, e.g., for S/MIME
8924 set from="Your Name <youremail@domain>"
8926 # It may be necessary to set hostname and/or smtp-hostname
8927 # if the "SERVER" of smtp and "domain" of from don't match.
8928 # The `urlencode' command can be used to encode USER and PASS
8929 set smtp=(smtp[s]/submission)://[USER[:PASS]@]SERVER[:PORT] \e
8930     smtp-auth=login/plain... \e
8931     smtp-use-starttls
8933 # Never refuse to start into interactive mode, and more
8934 set emptystart \e
8935     colour-pager crt= \e
8936     followup-to followup-to-honour=ask-yes \e
8937     history-file=+.\*(uahist history-size=-1 history-gabby \e
8938     mime-counter-evidence=0xE \e
8939     prompt="\e033[31m?\e?[\e$ \e@]\e& \e033[0m" \e
8940     reply-to-honour=ask-yes
8942 # When `p'rinting messages, show only these headers
8943 # (use `P'rint for all headers and `S'how for raw message)
8944 retain date from to cc subject
8946 # Some mailing lists
8947 mlist @xyz-editor.xyz$ @xyzf.xyz$
8948 mlsubscribe ^xfans@xfans.xyz$
8950 # A real life example of a very huge free mail provider
8951 account XooglX {
8952   localopts yes
8953   set from="Your Name <youremail@domain>"
8954   # (The plain smtp:// proto is optional)
8955   set smtp=USER:PASS@smtp.gmXil.com smtp-use-starttls
8958 # Here is a pretty large one which does not allow sending mails
8959 # if there is a domain name mismatch on the SMTP protocol level,
8960 # which would bite us if the value of from does not match, e.g.,
8961 # for people who have a sXXXXeforge project and want to speak
8962 # with the mailing list under their project account (in from),
8963 # still sending the message through their normal mail provider
8964 account XandeX {
8965   localopts true
8966   set from="Your Name <youremail@domain>"
8967   set smtp=smtps://USER:PASS@smtp.yaXXex.ru:465 \e
8968       hostname=yaXXex.com smtp-hostname=
8971 # Create some new commands so that, e.g., `ls /tmp' will..
8972 ghost l   !ls -aFtr
8973 ghost L   !ls -aFt
8974 ghost ll  !ls -aFltr
8975 ghost Ll  !ls -aFlt
8976 ghost la  !ls -aFr
8977 ghost La  !ls -aF
8978 ghost lla !ls -aFlr
8979 ghost Lla !ls -aFl
8980 ghost lS  !ls -aFrS
8981 ghost LS  !ls -aFS
8982 ghost llS !ls -aFlrS
8983 ghost LlS !ls -aFlS
8985 # We don't support gpg(1) directly yet.  But simple --clearsign'd
8986 # message parts can be dealt with as follows:
8987 define V {
8988   localopts yes
8989   set pipe-text/plain="@*#++=@\e
8990     < \e"${NAIL_FILENAME_TEMPORARY}\e" awk \e
8991         -v TMPFILE=\e"${NAIL_FILENAME_TEMPORARY}\e" '\e
8992       BEGIN {done=0}\e
8993       /^-----BEGIN PGP SIGNED MESSAGE-----/,/^$/ {\e
8994         if (done++ != 0)\e
8995           next;\e
8996         print \e"--- GPG --verify ---\e";\e
8997         system(\e"gpg --verify \e" TMPFILE \e" 2>&1\e");\e
8998         print \e"--- GPG --verify ---\e";\e
8999         print \e"\e";\e
9000         next;\e
9001       }\e
9002       /^-----BEGIN PGP SIGNATURE-----/,\e
9003           /^-----END PGP SIGNATURE-----/ {\e
9004         next;\e
9005       }\e
9006       {print}\e
9007       '"
9008   print
9010 ghost V call V
9012 define RK {
9013   !printf 'Key IDs to gpg --recv-keys: ';\e
9014     read keyids;\e
9015     gpg --recv-keys ${keyids};
9017 ghost RK call RK
9021 When storing passwords in
9022 .Pa \*(ur
9023 appropriate permissions should be set on this file with
9024 .Ql $ chmod 0600 \*(ur .
9025 If the \*(OPal
9026 .Va netrc-lookup
9027 is available user credentials can be stored in the central
9028 .Pa .netrc
9029 file instead; e.g., here is a different version of the example account
9030 that sets up SMTP and POP3:
9032 .Bd -literal -offset indent
9033 account XandeX {
9034   localopts true
9035   set from="Your Name <youremail@domain>"
9036   set netrc-lookup
9037   #set agent-shell-lookup="gpg -d .pass.gpg"
9039   set smtp=smtps://smtp.yXXXXx.ru:465 \e
9040       smtp-hostname= hostname=yXXXXx.com
9041   set pop3-keepalive=240 pop3-no-apop-pop.yXXXXx.ru
9042   ghost xp fi pop3s://pop.yXXXXx.ru
9047 and, in the
9048 .Pa .netrc
9049 file:
9051 .Bd -literal -offset indent
9052 machine *.yXXXXx.ru login USER password PASS
9056 If the also \*(OPal
9057 .Va agent-shell-lookup
9058 is available things could be diversified further by using encrypted
9059 password storage: for this, don't specify
9060 .Ql password PASS
9061 in the
9062 .Pa .netrc
9063 file and instead uncomment the line that defines agent lookup in the
9064 example
9065 .Ic account
9066 above, then create the encrypted password storage file
9067 .Pa .pass.gpg :
9069 .Bd -literal -offset indent
9070 $ echo PASS > .pass
9071 $ gpg -e .pass
9072 $ eval `gpg-agent --daemon \e
9073         --pinentry-program=/usr/bin/pinentry-curses \e
9074         --max-cache-ttl 99999 --default-cache-ttl 99999`
9078 This configuration should now work just fine (use the
9079 .Fl d
9080 command line option for a(n almost) dry-run):
9083 .Dl $ echo text | \*(ua -vv -AXandeX -s Subject some@where
9084 .\" }}}
9086 .\" .Ss "Signed and encrypted messages with S/MIME" {{{
9087 .Ss "Signed and encrypted messages with S/MIME"
9089 \*(OP S/MIME provides two central mechanisms:
9090 message signing and message encryption.
9091 A signed message contains some data in addition to the regular text.
9092 The data can be used to verify that the message was sent using a valid
9093 certificate, that the sender's address in the message header matches
9094 that in the certificate, and that the message text has not been altered.
9095 Signing a message does not change its regular text;
9096 it can be read regardless of whether the recipient's software is able to
9097 handle S/MIME.
9100 It is thus usually possible to sign all outgoing messages if so desired.
9101 Encryption, in contrast, makes the message text invisible for all people
9102 except those who have access to the secret decryption key.
9103 To encrypt a message, the specific recipient's public encryption key
9104 must be known.
9105 It is therefore not possible to send encrypted mail to people unless their
9106 key has been retrieved from either previous communication or public key
9107 directories.
9108 A message should always be signed before it is encrypted.
9109 Otherwise, it is still possible that the encrypted message text is
9110 altered.
9113 A central concept to S/MIME is that of the certification authority (CA).
9114 A CA is a trusted institution that issues certificates.
9115 For each of these certificates it can be verified that it really
9116 originates from the CA, provided that the CA's own certificate is
9117 previously known.
9118 A set of CA certificates is usually delivered with OpenSSL and installed
9119 on your system.
9120 If you trust the source of your OpenSSL software installation,
9121 this offers reasonable security for S/MIME on the Internet.
9122 (Otherwise set
9123 .Va ssl-no-default-ca
9124 and use
9125 .Va smime-ca-file
9126 and/or
9127 .Va smime-ca-dir . )
9128 In general, a certificate cannot be more secure than the method its CA
9129 certificate has been retrieved with, though.
9130 Thus if you download a CA certificate from the Internet,
9131 you can only trust the messages you verify using that certificate as
9132 much as you trust the download process.
9135 The first thing you need for participating in S/MIME message exchange is
9136 your personal certificate, including a private key.
9137 The certificate contains public information, in particular your name and
9138 your email address(es), and the public key that is used by others to
9139 encrypt messages for you,
9140 and to verify signed messages they supposedly received from you.
9141 The certificate is included in each signed message you send.
9142 The private key must be kept secret.
9143 It is used to decrypt messages that were previously encrypted with your
9144 public key, and to sign messages.
9147 For personal use it is recommended that you get a S/MIME certificate
9148 from one of the major CAs on the Internet using your WWW browser.
9149 Many CAs offer such certificates for free.
9150 There is also
9151 .Lk https://www.CAcert.org
9152 which issues client and server certificates to members of their
9153 community for free; their root certificate
9154 .Pf ( Lk https://\:www.cacert.org/\:certs/\:root.crt )
9155 is often not in the default set of trusted CA root certificates, though,
9156 which means you will have to download their root certificate separately
9157 and ensure it is part of our S/MIME certificate validation chain by
9158 including it in
9159 .Va smime-ca-dir
9160 or as a vivid member of the
9161 .Va smime-ca-file .
9162 But let's take a step-by-step tour on how to setup S/MIME with
9163 a certificate from CAcert.org despite this situation!
9166 First of all you will have to become a member of the CAcert.org
9167 community, simply by registrating yourself via the web interface.
9168 Once you are, create and verify all email addresses you want to be able
9169 to create signed and encrypted messages for/with using the corresponding
9170 entries of the web interface.
9171 Now ready to create S/MIME certificates, so let's create a new
9172 .Dq client certificate ,
9173 ensure to include all email addresses that should be covered by the
9174 certificate in the following web form, and also to use your name as the
9175 .Dq common name .
9178 Create a private key and a certificate request on your local computer
9179 (please see the manual pages of the used commands for more in-depth
9180 knowledge on what the used arguments etc. do):
9183 .Dl openssl req -nodes -newkey rsa:4096 -keyout key.pem -out creq.pem
9186 Afterwards copy-and-paste the content of
9187 .Dq creq.pem
9188 into the certificate-request (CSR) field of the web form on the
9189 CAcert.org website (you may need to unfold some
9190 .Dq advanced options
9191 to see the corresponding text field).
9192 This last step will ensure that your private key (which never left your
9193 box) and the certificate belong together (through the public key that
9194 will find its way into the certificate via the certificate-request).
9195 You are now ready and can create your CAcert certified certificate.
9196 Download and store or copy-and-paste it as
9197 .Dq pub.crt .
9200 Yay.
9201 In order to use your new S/MIME setup you will have to create
9202 a combined private key/public key (certificate) file:
9205 .Dl cat key.pem pub.crt > ME@HERE.com.paired
9208 This is the file \*(UA will work with.
9209 If you have created your private key with a passphrase then \*(UA will
9210 ask you for it whenever a message is signed or decrypted.
9211 Set the following variables to henceforth use S/MIME (setting
9212 .Va smime-ca-file
9213 is of interest for verification only):
9215 .Bd -literal -offset indent
9216 set smime-ca-file=ALL-TRUSTED-ROOT-CERTS-HERE \e
9217   smime-sign-cert=ME@HERE.com.paired \e
9218   smime-sign-message-digest=SHA256 \e
9219   smime-sign
9223 From each signed message you send, the recipient can fetch your
9224 certificate and use it to send encrypted mail back to you.
9225 Accordingly if somebody sends you a signed message, you can do the same,
9226 and use the
9227 .Ic verify
9228 command to check the validity of the certificate.
9231 Variables of interest for S/MIME signing:
9232 .Va smime-ca-dir ,
9233 .Va smime-ca-file ,
9234 .Va smime-crl-dir ,
9235 .Va smime-crl-file ,
9236 .Va smime-no-default-ca ,
9237 .Va smime-sign ,
9238 .Va smime-sign-cert ,
9239 .Va smime-sign-include-certs
9241 .Va smime-sign-message-digest .
9244 After it has been verified save the certificate via
9245 .Ic certsave
9246 and tell \*(UA that it should use it for encryption for further
9247 communication with that somebody:
9249 .Bd -literal -offset indent
9250 certsave FILENAME
9251 set smime-encrypt-USER@HOST=FILENAME \e
9252     smime-cipher-USER@HOST=AES256
9256 Additional variables of interest for S/MIME en- and decryption:
9257 .Va smime-cipher
9259 .Va smime-encrypt-USER@HOST .
9262 You should carefully consider if you prefer to store encrypted messages
9263 in decrypted form.
9264 If you do, anybody who has access to your mail folders can read them,
9265 but if you do not, you might be unable to read them yourself later if
9266 you happen to lose your private key.
9268 .Ic decrypt
9269 command saves messages in decrypted form, while the
9270 .Ic save , copy ,
9272 .Ic move
9273 commands leave them encrypted.
9276 Note that neither S/MIME signing nor encryption applies to message
9277 subjects or other header fields yet.
9278 Thus they may not contain sensitive information for encrypted messages,
9279 and cannot be trusted even if the message content has been verified.
9280 When sending signed messages,
9281 it is recommended to repeat any important header information in the
9282 message text.
9283 .\" }}}
9285 .\" .Ss "Using CRLs with S/MIME or SSL/TLS" {{{
9286 .Ss "Using CRLs with S/MIME or SSL/TLS"
9288 \*(OP Certification authorities (CAs) issue certificate revocation
9289 lists (CRLs) on a regular basis.
9290 These lists contain the serial numbers of certificates that have been
9291 declared invalid after they have been issued.
9292 Such usually happens because the private key for the certificate has
9293 been compromised,
9294 because the owner of the certificate has left the organization that is
9295 mentioned in the certificate, etc.
9296 To seriously use S/MIME or SSL/TLS verification,
9297 an up-to-date CRL is required for each trusted CA.
9298 There is otherwise no method to distinguish between valid and
9299 invalidated certificates.
9300 \*(UA currently offers no mechanism to fetch CRLs, nor to access them on
9301 the Internet, so you have to retrieve them by some external mechanism.
9304 \*(UA accepts CRLs in PEM format only;
9305 CRLs in DER format must be converted, like, e.\|g.:
9308 .Dl $ openssl crl \-inform DER \-in crl.der \-out crl.pem
9311 To tell \*(UA about the CRLs, a directory that contains all CRL files
9312 (and no other files) must be created.
9314 .Va smime-crl-dir
9316 .Va ssl-crl-dir
9317 variables, respectively, must then be set to point to that directory.
9318 After that, \*(UA requires a CRL to be present for each CA that is used
9319 to verify a certificate.
9320 .\" }}}
9322 .\" .Ss "Handling spam" {{{
9323 .Ss "Handling spam"
9325 \*(OP \*(UA can make use of several spam interfaces for the purpose of
9326 identification of, and, in general, dealing with spam messages.
9327 A precondition of most commands in order to function is that the
9328 .Va spam-interface
9329 variable is set to one of the supported interfaces.
9330 Once messages have been identified as spam their (volatile)
9331 .Ql is-spam
9332 state can be prompted: the
9333 .Ql Ar :s
9335 .Ql Ar :S
9336 message specifications will address respective messages and their
9337 .Va attrlist
9338 entries will be used when displaying the
9339 .Va headline
9340 in the header display.
9342 .Bl -bullet
9344 .Ic spamrate
9345 rates the given messages and sets their
9346 .Ql is-spam
9347 flag accordingly.
9348 If the spam interface offers spam scores those can also be displayed in
9349 the header display by including the
9350 .Ql %$
9351 format in the
9352 .Va headline
9353 variable.
9355 .Ic spamham ,
9356 .Ic spamspam
9358 .Ic spamforget
9359 will interact with the Bayesian filter of the chosen interface and learn
9360 the given messages as
9361 .Dq ham
9363 .Dq spam ,
9364 respectively; the last command can be used to cause
9365 .Dq unlearning
9366 of messages; it adheres to their current
9367 .Ql is-spam
9368 state and thus reverts previous teachings.
9370 .Ic spamclear
9372 .Ic spamset
9373 will simply set and clear, respectively, the mentioned volatile
9374 .Ql is-spam
9375 message flag, without any interface interaction.
9380 .Xr spamassassin 1
9381 based
9382 .Va spam-interface Ns s
9383 .Ql spamc
9385 .Ql spamd
9386 require a running instance of the
9387 .Xr spamd 1
9388 server in order to function, started with the option
9389 .Fl -allow-tell
9390 shall Bayesian filter learning be possible.
9391 .Ql spamd
9392 only works via a local path-based
9393 .Xr unix 4
9394 socket, but otherwise the following will be equivalently fine:
9396 .Bd -literal -offset indent
9397 $ spamd -i localhost:2142 -i /tmp/.spamsock -d [-L] [-l]
9398 $ spamd --listen=localhost:2142 --listen=/tmp/.spamsock \e
9399     --daemonize [--local] [--allow-tell]
9403 Thereafter \*(UA can make use of these interfaces:
9405 .Bd -literal -offset indent
9406 $ \*(ua -Sspam-interface=spamd -Sspam-maxsize=500000 \e
9407     -Sspamd-socket=/tmp/.spamsock -Sspamd-user=
9409 $ \*(ua -Sspam-interface=spamc -Sspam-maxsize=500000 \e
9410     -Sspamc-command=/usr/local/bin/spamc \e
9411     -Sspamc-arguments="-U /tmp/.spamsock" -Sspamc-user=
9413 $ \*(ua -Sspam-interface=spamc -Sspam-maxsize=500000 \e
9414     -Sspamc-command=/usr/local/bin/spamc \e
9415     -Sspamc-arguments="-d localhost -p 2142" -Sspamc-user=
9419 Using the generic filter approach allows usage of programs like
9420 .Xr bogofilter 1
9422 .Xr sylfilter 1 .
9423 Here is an example for the former, requiring it to be accessible via
9424 .Ev PATH :
9426 .Bd -literal -offset indent
9427 $ \*(ua -Sspam-interface=filter -Sspam-maxsize=500000 \e
9428     -Sspamfilter-ham="bogofilter -n" \e
9429     -Sspamfilter-noham="bogofilter -N" \e
9430     -Sspamfilter-nospam="bogofilter -S" \e
9431     -Sspamfilter-rate="bogofilter -TTu 2>/dev/null" \e
9432     -Sspamfilter-spam="bogofilter -s" \e
9433     -Sspamfilter-rate-scanscore="1;^(.+)$"
9437 Because messages must exist on local storage in order to be scored (or
9438 used for Bayesian filter training), it is possibly a good idea to
9439 perform the local spam check last:
9441 .Bd -literal -offset indent
9442 define spamdelhook {
9443   # Server side DCC
9444   spamset (header x-dcc-brand-metrics "bulk")
9445   # Server-side spamassassin(1)
9446   spamset (header x-spam-flag "YES")
9447   del :s # TODO we HAVE to be able to do `spamrate :u ! :sS'
9448   move :S +maybe-spam
9449   spamrate :u
9450   del :s
9451   move :S +maybe-spam
9453 set folder-hook-FOLDER=spamdelhook
9457 See also the documentation for the variables
9458 .Va spam-interface , spam-maxsize ,
9459 .Va spamc-command , spamc-arguments , spamc-user ,
9460 .Va spamd-socket , spamd-user ,
9461 .Va spamfilter-ham , spamfilter-noham , spamfilter-nospam , \
9462   spamfilter-rate
9464 .Va spamfilter-rate-scanscore .
9465 .\" }}}
9466 .\" }}} (Examples)
9469 .\" .Sh "FAQ" {{{
9470 .Sh "FAQ"
9472 .\" .Ss "\*(UA shortly hangs on startup" {{{
9473 .Ss "\*(UA shortly hangs on startup"
9475 This can have two reasons, one is the necessity to wait for a file lock
9476 and can't be helped, the other being that \*(UA calls the function
9477 .Xr uname 2
9478 in order to query the nodename of the box (sometimes the real one is
9479 needed instead of the one represented by the internal variable
9480 .Va hostname ) .
9481 You may have varying success by ensuring that the real hostname and
9482 .Ql localhost
9483 have entries in
9484 .Pa /etc/hosts ,
9485 or, more generally, that the name service is properly setup \(en
9486 and does
9487 .Xr hostname 1
9488 return what you'd expect?
9489 Does this local hostname has a domain suffix?
9490 RFC 6762 standardized the link-local top-level domain
9491 .Ql .local .
9492 .\" }}}
9494 .\" .Ss "I can't login to Google mail a.k.a. GMail" {{{
9495 .Ss "I can't login to Google mail a.k.a. GMail"
9497 Since 2014 some free service providers classify programs as
9498 .Dq less secure
9499 unless they use a special authentification method (OAuth 2.0) which
9500 wasn't standardized for non-HTTP protocol authentication token query
9501 until August 2015 (RFC 7628).
9504 Different to Kerberos / GSSAPI, which is developed since the mid of the
9505 1980s, where a user can easily create a local authentication ticket for
9506 her- and himself with the locally installed
9507 .Xr kinit 1
9508 program, that protocol has no such local part but instead requires
9509 a world-wide-web query to create or fetch a token; since there is no
9510 local cache this query has to be performed whenever \*(UA is invoked
9511 from the command line (in interactive sessions situation may differ).
9514 \*(UA doesn't support OAuth.
9515 Because of this it is necessary to declare \*(UA a
9516 .Dq less secure app
9517 (on the providers account web page) in order to read and send mail.
9518 However, it also seems possible to take the following steps instead:
9521 .Bl -enum -compact
9523 give the provider the number of a mobile phone,
9525 enable
9526 .Dq 2-Step Verification ,
9528 create an application specific password (16 characters), and
9530 use that special password instead of your real Google account password in
9531 S-nail (for more on that see the section
9532 .Sx "On URL syntax and credential lookup" ) .
9534 .\" }}}
9535 .\" }}}
9538 .\" .Sh "SEE ALSO" {{{
9539 .Sh "SEE ALSO"
9541 .Xr bogofilter 1 ,
9542 .Xr bzip2 1 ,
9543 .Xr file 1 ,
9544 .Xr fmt 1 ,
9545 .Xr gpg 1 ,
9546 .Xr gpg-agent 1 ,
9547 .Xr gzip 1 ,
9548 .Xr less 1 ,
9549 .Xr more 1 ,
9550 .Xr newaliases 1 ,
9551 .Xr openssl 1 ,
9552 .Xr postfix 1 ,
9553 .Xr printf 1 ,
9554 .Xr sendmail 1 ,
9555 .Xr sh 1 ,
9556 .Xr spamassassin 1 ,
9557 .Xr spamc 1 ,
9558 .Xr spamd 1 ,
9559 .Xr sylfilter 1 ,
9560 .Xr vacation 1 ,
9561 .Xr xterm 1 ,
9562 .Xr xz 1 ,
9563 .Xr editline 3 ,
9564 .Xr iconv 3 ,
9565 .Xr readline 3 ,
9566 .Xr setlocale 3 ,
9567 .Xr ssl 3 ,
9568 .Xr aliases 5 ,
9569 .Xr termcap 5 ,
9570 .Xr terminfo 5 ,
9571 .Xr locale 7 ,
9572 .Xr mailaddr 7 ,
9573 .Xr re_format 7 ,
9574 .Xr exim 8 ,
9575 .Xr mailwrapper 8 ,
9576 .Xr sendmail 8
9577 .\" }}}
9580 .\" .Sh HISTORY {{{
9581 .Sh HISTORY
9583 M. Douglas McIlroy writes in his article
9584 .Dq A Research UNIX Reader: Annotated Excerpts \
9585 from the Programmer's Manual, 1971-1986
9587 .Xr mail 1
9588 command already appeared in First Edition
9590 in 1971:
9592 .Bd -ragged -offset indent
9593 Electronic mail was there from the start.
9594 Never satisfied with its exact behavior, everybody touched it at one
9595 time or another: to assure the safety of simultaneous access, to improve
9596 privacy, to survive crashes, to exploit uucp, to screen out foreign
9597 freeloaders, or whatever.
9598 Not until v7 did the interface change (Thompson).
9599 Later, as mail became global in its reach, Dave Presotto took charge and
9600 brought order to communications with a grab-bag of external networks
9601 (v8).
9606 Mail was written in 1978 by Kurt Shoens and developed as part of the
9609 distribution until 1995.
9610 Mail has then seen further development in open source
9612 variants, noticeably by Christos Zoulas in
9613 .Pf Net Bx .
9614 Basing upon this Nail, later Heirloom Mailx, was developed by Gunnar
9615 Ritter in the years 2000 until 2008.
9616 Since 2012 S-nail is maintained by Steffen (Daode) Nurpmeso.
9617 This man page is derived from
9618 .Dq The Mail Reference Manual
9619 that was originally written by Kurt Shoens.
9620 .\" }}}
9623 .Sh AUTHORS
9625 .An "Kurt Shoens" ,
9626 .An "Christos Zoulas" ,
9627 .An "Gunnar Ritter" ,
9628 .An "Steffen Nurpmeso" Aq Mt s-nail-users@lists.sourceforge.net
9629 (later
9630 .Mt s-mailx@sdaoden.eu ) .
9633 .\" .Sh CAVEATS {{{
9634 .Sh CAVEATS
9636 The character set conversion uses and relies upon the
9637 .Xr iconv 3
9638 function.
9639 Its functionality differs widely between the various system environments
9640 \*(UA runs on.
9643 Limitations with IMAP mailboxes are:
9644 It is not possible to edit messages, but it is possible to append them.
9645 Thus to edit a message, create a local copy of it, edit it, append it,
9646 and delete the original.
9647 The line count for the header display is only appropriate if the entire
9648 message has been downloaded from the server.
9649 The marking of messages as `new' is performed by the IMAP server;
9650 use of the
9651 .Ic exit
9652 command instead of
9653 .Ic quit
9654 will not cause it to be reset, and if the
9655 .Va newmail
9656 variable is unset, messages that arrived during a session will not be
9657 in state `new' anymore when the folder is opened again.
9658 Also if commands queued in disconnected mode are committed,
9659 the IMAP server will delete the `new' flag for all messages in the
9660 changed folder,
9661 and new messages will appear as unread when it is selected for viewing
9662 later.
9663 The `flagged', `answered', and `draft' attributes are usually permanent,
9664 but some IMAP servers are known to drop them without notification.
9665 Message numbers may change with IMAP every time before the prompt is
9666 printed if \*(UA is notified by the server that messages have been
9667 deleted by some other client or process.
9668 In this case, `Expunged n messages' is printed, and message numbers may
9669 have changed.
9672 Limitations with POP3 mailboxes are:
9673 It is not possible to edit messages, they can only be copied and deleted.
9674 The line count for the header display is only appropriate if the entire
9675 message has been downloaded from the server.
9676 The status field of a message is maintained by the server between
9677 connections; some servers do not update it at all, and with a server
9678 that does, the
9679 .Ic exit
9680 command will not cause the message status to be reset.
9682 .Ic newmail
9683 command and the
9684 .Va newmail
9685 variable have no effect.
9686 It is not possible to rename or to remove POP3 mailboxes.
9689 If a
9690 .Dq RUBOUT
9691 (interrupt,
9692 .Ql control-C )
9693 is typed while an IMAP or POP3 operation is in progress, \*(UA will wait
9694 until the operation can be safely aborted, and will then return to the
9695 command loop and print the prompt again.
9696 When a second
9697 .Dq RUBOUT
9698 is typed while \*(UA is waiting for the operation to complete, the
9699 operation itself will be cancelled.
9700 In this case, data that has not been fetched yet will have to be fetched
9701 before the next command can be performed.
9702 If the cancelled operation was using an SSL/TLS encrypted channel,
9703 an error in the SSL transport will very likely result and render the
9704 connection unusable.
9707 As \*(UA is a mail user agent, it provides only basic SMTP services.
9708 If it fails to contact its upstream SMTP server, it will not make
9709 further attempts to transfer the message at a later time,
9710 and it does not leave other information about this condition than an
9711 error message on the terminal and an entry in
9712 .Ev DEAD .
9713 This is usually not a problem if the SMTP server is located in the same
9714 local network as the computer on which \*(UA is run.
9715 However, care should be taken when using a remote server of an ISP;
9716 it might be better to set up a local SMTP server then which just acts as
9717 a proxy.
9720 \*(UA immediately contacts the SMTP server (or
9721 .Xr sendmail 1 Ns
9722 ) even when operating in
9723 .Va disconnected
9724 mode.
9725 It would not make much sense for \*(UA to defer outgoing mail since SMTP
9726 servers usually provide much more elaborated delay handling than \*(UA
9727 could perform as a client.
9728 Thus the recommended setup for sending mail in
9729 .Va disconnected
9730 mode is to configure a local SMTP server such that it sends outgoing
9731 mail as soon as an external network connection is available again,
9732 i.e., to advise it to do that from a network startup script.
9733 .\" }}}
9736 .Sh BUGS
9738 With IMAP, at least if the IMAP cache is used, if multiple
9739 .Ic connect
9741 .Ic disconnect
9742 cycles happen without an intervening change of the active mailbox then
9743 \*(UA will at some time loose the ability to keep the local state
9744 up-to-date, meaning that, e.g., messages show up with false numbers, and
9745 including the possibility that messages are accessed via numbers that
9746 are no(t longer) valid, resulting in program crashes.
9747 The solution is to change the active mailbox before that happens :).
9748 Also see the file
9749 .Pa TODO
9750 from the distribution or the repository.
9752 After deleting some message of a POP3 mailbox the header summary falsely
9753 claims that there are no messages to display, you need to perform
9754 a scroll or dot movement to restore proper state.
9756 In threaded display a power user may encounter crashes very
9757 occasionally (this is may and very).
9758 .\" s-ts-mode