From 3e4606af46eeb97b95450c6cdf8bb9154bd771ab Mon Sep 17 00:00:00 2001 From: "Steffen (Daode) Nurpmeso" Date: Mon, 3 Oct 2016 23:46:28 +0200 Subject: [PATCH] Bump S-nail v14.8.11.ar, 2016-10-03 --- .gitignore | 9 - .mailmap | 3 - TODO | 887 ---------------------------------------- nail.1 | 1334 +++++++++++++++++++++++------------------------------------- nail.rc | 2 - 5 files changed, 509 insertions(+), 1726 deletions(-) delete mode 100644 .gitignore delete mode 100644 .mailmap delete mode 100644 TODO diff --git a/.gitignore b/.gitignore deleted file mode 100644 index ec66f9e0..00000000 --- a/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -mime_types.h -config.* -*.mk -mkman.1 -mkrc.rc -*.o -s-nail -s-nail-privsep -.cc-* diff --git a/.mailmap b/.mailmap deleted file mode 100644 index fd106e2f..00000000 --- a/.mailmap +++ /dev/null @@ -1,3 +0,0 @@ -Gunnar Ritter -Steffen (Daode) Nurpmeso -Steffen (Daode) Nurpmeso diff --git a/TODO b/TODO deleted file mode 100644 index b8bd9f1e..00000000 --- a/TODO +++ /dev/null @@ -1,887 +0,0 @@ -TODO reminder. - -Release S-nail v20 on 2018-03-25, the 40th anniversary of Mail. -With a clean, conforming and efficient codebase, then. - -- Recipients specified on the command line should be added to those - specified in the message when the -t option is set. - -- At least optionally disallow silent discarding of invalid addresses, - i.e., cause sending to be aborted if not all recipient addresses pass the - validity test. - -- Ditto if a resource file can't be found that has been explicitly set via - environment variables there should be some feedback. - -- I.e., it is fine to be silent unless an error occurs, but then please - report errors and offer (in interactive mode) the possibility to act at - a glance. (See error ring topic around here.) - -- POSIX says that, when written to DEAD: "If the file exists, the message - shall be written to replace the contents of the file". This is mentioned - for ASYNCHRONOUS EVENTS, but it's the only description of what should be - done in which way to DEAD. savedeadletter() yet appends. See ZOMBIE ,) - -- It irritates me that a message with 5 visible lines but 115 header lines - goes through the pager, even if i have *crt=*. - -- We should possibly get away of using command line utilities for - compression. (At least optionally?) Instead we should link against - zlib(3), bz2lib(3) and lzma(3), if found. Or we may use dlopen(3) - instead, if found, to avoid linking (though those libraries don't need - much linker work unless actually used afaik, 'should look in detail). - We should also drop lzw.c, it is used for the IMAP cache. - -- We should maybe turn -~ into the meaning "force interactive". - We should extend cc-test.sh, then, to test some interactive things. - E.g., via (tcl(1) or, better.., perl(1) (CPAN)) expect. - -- We need a "void" box that can be jumped to, i.e., a state in which no box - at all is active. - --- When a MBOX mailbox is removed while it is opened then changing the - folder is not possible. This is an inherent problem of the Berkeley - Mail codebase, and we need to have a fully functional intermediate - VOID box mechanism plus an object-based mailbox implementation to - overcome it. - --- Also, when the folder was modified concurrently we should bail, or, - in an interactive session, prompt the user what to do. - -- IDNA decoding. Needs a complete design change. - (Unless wants to brute force decode anything before display, of course.) - -- If pipes fail for part viewers then at least the usual PART X.Y should be - shown, maybe even including some error message. - I had 'set pipe-text/html="lynx -dump -force_html /dev/stdin"' but NetBSD - does not have lynx(1), and i thought i've found a S-nail(1) bug. - --- Also, when we run a pipe handler asynchronously there should possible - written something like [pipe-handler xy started] or something - -- Offer the possibility to work with certificate fingerprints instead of - full certificates, in equal spirit to the current maintainers S-Postman - and Mercurial. S-nail(1) could simply offer something in equal spirit to - the formers --fingerprint, so that no other tool is necessary for - certificate management (for at least secure transport). - -- It would be nice if it would be possible to define a format string for - *quote*, like 'set quote="format=some formats"'. - In general the current approach is somewhat messy IMO. I.e., it would - make more sense to act rather like mutt(1) and as written elsewhere in - this document, i.e., have some toggles that act on the display and use it - for multiple modes (show/reply/forward etc.) - Otherwise introduce commands which include all the headers plus, e.g., - "hreply" or "freply", and then the ditto series, i.e., "hReply" ... - --- This would also mean that interactive message editing would work - accordingly. PleasE! - -- Command line editing should gain possibility of context sensitive tab - completion. - -- Maybe there should be an additional ZOMBIE directive that is served in - equal spirit to DEAD, but that could be a valid MBOX... ? - What i want is a *real* resend, best if possible from command line. - Meaning, also the possibility to postpone a message. In general. - -- Having a newsreader would be a really cool thing. (RFC 977 and 2980) - -- There should be a way to ignore the From_ line, as opposed to the From: - line, i.e., distinctively. - -- There should be a variable that controls wether leading and trailing - empty lines of parts and/or messages as such should be printed or not. - -- printhead()/hprf(): support %n newline format (%t tab?). - Make it possible to use the *datefield* algorithm for plain From_ derived - dates (needs a From_ parser, i.e., strptime()-alike). - Once we have that, rename *datefield-markout-older* to - *date-markout-older* ?? - Note that NetBSD's mail(1) has some other nice things. - Note also that our code is quite unflexible. - --- NetBSD's mail(1) has nice *indentprefix* and *indentpostscript* - variables (though prefix and appendix or prefix and suffix, but..). - Note that our code is quite unflexible. - -- The "top" command should honour ignoretab, or there should be a very - special "top" ignoretab. It simply doesn't make sense to "top" 5 lines - when all that you get are Received: lines... - -- In the very end it is not that hard to add (optional) MTA - functionality at a most simple level. - Use sqlite for aliases (and possibly cache), then. - (Though a nice dynamic cpdict should also be sufficient.) - -- We should support IMAP compression over the wire. - -Low-Level ---------- - -- Improve name extraction rules. And field parsing. There - are structured and unstructured fields. There are quoted pairs and - comments etc. Rewrite the entire parsing mechanism to comply to RFC - 5322, and try to merge all those many subparsers around in the codebase, - and accordingly. So much duplicated work ... - Name parsing has been improved a bit for v13, but it's still broken. - yankword(), *extract(), etc.: RFC 5322 says that comments in address - fields SHOULD NOT be used (mutt(1) maps them to full name-addr forms if - approbiate, even if that actually changes content!!?), and that full - name-addr SHOULD be used. Our functions are yet quite silly (i.e., - leading comments remain, as in "(bier2) ", unless the address - doesn't come in angle brackets, trailing go away, as in " - (bier6)", that becomes ""). - Something silly like - (co$mm1) abc@däf.de (cö,mm,2) ('c'o"m"m.3) - Should eventually become - co$mm1 cö,mm,2 'c'o"m"m.3 - on the display, or, with IDNA decoding (and thus rather unlikely) - co$mm1 cö,mm,2 'c'o"m"m.3 - It should NOT become this mutt(1)ism: - "co$mm1 cö,mm,2 'c'omm.3" - Or? - --- Think about a name bypass hashmap cache, and whenever we have to skin or - nalloc() or whatever, look in there. Maybe even an additional link for - non GFULL(/GSKIN) and fully skinned struct name objects. - The amount of duplicated work in this codebase is frustrating, but the - real healing would make necessary a complete rewrite of the name handling! - Such a cache would work without touching the current code flow ... or - allow a smooth transition to a new one anyway. - -++ NOTE: 'alternates' tracking happens BEFORE we enter composing, this - means that an account switch during message composing will NOT cause - reevaluation of all that very very clumy - elide/delete_alternates/gexpand/is_myname etc. handling. - -- The char classification stuff can be improved; currently each character - has exactly one classification bit set, even if multiple would apply - (e.g., HT=\t == CNTRL|SPACE|ASCII|BLANK). This would allow better - testing using our own classification functions in quite some places. - -- The quoted-printable Content-Transfer-Encoding: supports soft linebreaks; - it happens that a lot of mailers (Apple Mail?, Microsoft Word, Yahoo! - Webmail) create HTML parts which solely consist of a single line, - created via soft linebreaks. - To handle such mess we need to be able to break out of the input-line == - output line relationship that is still fixated in the codebase. - I.e., it is not even sufficient to convert "rest" into an array, but best - would be if we would be able to sequentially work what we have, and - detect when it is safe to "dump that out". - This MUST be part of the send/mime layer rewrite in 15.0. - --- In v15.0, when we can address attachments of a message individually, - it would be nice to provide even more access, just like nmh(1) does - (Johan Commelin: Are s-nail and mh related?). - -- I never used anything but the *datefield* option, and it would really be - nice if the date strings would be parsed off into some 16 byte or what - storage when about to producing the summary, so that it would be directly - available and there would be no need to reread the mail. Moreover, or - even more than that - the m_date field exists and should possibly simply - be init, at least in these cases. (P.S.: this doesn't contradict the - statement somewhere else in this file that the structure should be - slacked; simply use multiple thereof or so) - -- At some later time extend the logic behind -# -- it should not have - a current folder, but start in VOID mode (...), and unless one is - explicitly chosen.. We need a reliable batch mode. - -- After I/O layer rework we should optionally be able to read RSS - (Atom?) feeds -- Expat should be available almost everywhere and - should be able to parse that? - Atom is harder because it may support html+. - I mean, yeah, it's stupid, but we could fill in header fields with - dummies and still use S-nail to look into the separated feeds as if - they were mail messages; anyway i would like to save me from using too - many tools -- three seems reasonable. - --- `sync'hronize commando -- robin@stjerndorff.org (Robin Stjerndorff): - Wondering how to update back to my Maildir, moving new read mails - in ~/Maildir from new to cur, without exiting the application. - Automation available? [And simply re-`[Ff]i' involves a lot of - unnecessary work] - --- Provide sync'ing options -- Jacob Gelbman : - If I open two instances of mailx, I then delete a message and then - quit in one. Then in the other one I read a message and quit, mailx - saves the status of the read message and the fact that a message was - deleted, even though it was opened before the other instance deleted - it. How is it doing that? [Of course he was using Maildir] - -- Add TODO notes for those RFCs: - RFC 5322 - The basic format of email messages. - MIME (Multimeda) email extensions - RFC 2405 - The format of MIME message bodies. - RFC 2406 - Common multimedia types. - RFC 2017 - URL External-Body Access-Type - RFC 3676 - Updates to the text/plain MIME type and extensions for flowed - text (format=flowed). (Martin Neitzel) - RFC 2407 - Encoding of non-ASCII text in message headers. - RFC 2183 - The Content-Disposition Header - RFC 5321 - Simple Mail Transfer Protocol. - RFC 6409 - Message Submission for Mail - RFC 4954 - SMTP Authentication - RFC 3207 - SMTP over TLS - RFC 6152 - SMTP Service Extension for 8-bit MIME Transport - Post Office Protocol (POP) - RFC 1939 - Post Office Protocol v3 - RFC 2449 - POP3 Extensions (including SASL) - RFC 2595 - TLS for POP3 (among others) - Security - RFC 4422, 4505 - Simple Authentication and Security layer (SASL) - (Tarqi Kazan) - RFC 5246 - Transport Layer Security (TLS) - RFC 977 -> 3977 - Network News Transfer Protocol - RFC 1036 - Standard for USENET Messages - RFC 2980 - Common NNTP Extensions - RFC 2387 - multipart/related -- yet handled like /alternative - RFC 2384,1738 - I.e., Much better URL support - RFC 5751 - Secure/Multipurpose Internet Mail Extensions (S/MIME) - RFC 6125 - Representation and Verification of Domain-Based Application - Service Identity within Internet Public Key Infrastructure Using - X.509 (PKIX) Certificates in the Context of Transport Layer Security - (TLS) - RFC 3461, 3464 - - Simple Mail Transfer Protocol (SMTP) Service Extension for Delivery - Status Notifications (DSNs), - An Extensible Message Format for Delivery Status Notifications - RFC 5598 - Internet Mail Architecture - RFC 1524 - True support for mailcap files? - draft-ietf-uta-email-tls-certs-01.txt - SMTP security via opportunistic DANE TLS draft-ietf-dane-smtp-with-dane-15 - draft-melnikov-smime-header-signing - Considerations for protecting Email header with S/MIME - -- This is how the codebase has to be reworked in respect to signals and - jumping: - - 1. We introduce some environment/carrier structs: struct eval_ctx, - struct cmd_ctx, (struct send_ctx). All of these form lists. - eval_ctx gets a new instance every time evaluate() is entered; for - the interactive mode, commands() instantiates an outermost eval_ctx - that "cannot be left". - cmd_ctx knows about the eval_ctx in which it is was created; it is - created for each command that has an entry in cmd_tab and is passed - as the new argument of these kind of functions. - (send_ctx is the carrier for the MIME and send layer rewrite.) - 2. We'll get a signal manager. This is a global layer which is the - sole object-in-charge for signals. We'll install a complete set of - handlers once -- those will only set has-occurred bits. - All interested parties have to peek at the signal manager when they - are in the position to deal with signals, via a series of - "ha(s|ve)_occurred", "needs_action", "would_raise" or whatever, as - well as "doact". - 3. We need a sort of non-local return, everything else would require - a totally different way of programming. Also, non-local returns - are not *that* bad, generally speaking. We'll be easy and add the - possibility to define a jump target location in eval_ctx and - cmd_ctx, by peeking at the signal manager (for object design - reasons, though done by a macro, say), just like saying "i need to - have the chance to perform some actions shall a jump be necessary". - 4. So, somewhere deep down the still recursive codebase, shall the - necessity to honour a jump request occur, we peek the signal - manager to "unroll" the current cmd_ctx/eval_ctx chain(s), which - will result in none-to-multiple jumps to locations which require - cleanup actions, ultimately ending in the non-leavable commands() - eval_ctx or whatever. - 6. Hot: we save us from thousands of syscalls, and get rid of the - fucking sig* shit. It rhymes, it rhymes :) - Should we even be able to go the non-blocking select(2) way in the - end -- that would be fantastic! - 10. The line buffer used in evaluate() that is passed through to - commands (thus: in cmd_ctx, then) needs to become `const'. - (I tried to do so in the past, but some commands write into it, - thus i stopped and iirc even added some changes on my own which - take favour of reusing that buffer.) - + Macro execution then no longer needs to clone the macro content - lines before executing then. - + The temporary hack which duplicates the line buffer in order to - place the original content in history can be removed again. - 11. Macro execution is potentially recursive. Meaning that - `undefine', etc. can occur while macros are executing. - The simplemost approach would be to have some recursion counter for - each macro and a delete_later flag that gets honoured when the - recursion counter gets zero. It would be already possible to - immediately remove the macro from the hashtable, so that deeper - levels wouldn't find it anymore. To avoid leaks (which *are*) we - need to have a jump location for our upcoming signal handler - anyway. (Also to get rid of the temporary_localopts_free() hack. - + The same is true for `account's. Here things are complicated by - the global `account_name', i.e., the account could be the current - one. - + That also is: redefinition of names that have yet-pending - deletion requests are possible. - 12. It is annoying that you cannot `source' your MAILRC multiple times. - Defining a macro/account/xy should overwrite the current thing, - just as it does anyway for normal variables! - This is no different than 11. plus additional re-addition. - (Same exception: what if the currently active account is - overwritten? Same answer, plus a message "new settings take effect - when account is switched to the next time".) - 20. The attachment charset selection loop can then be rewritten to - check wether an ^C occurred and treat that as end-of-loop - condition. In v14.6.3 this was introduced, but it should act - differently depending on wether the interrupt occurred during - character set selection or attachment filename input. - Also in respect wether the interrupt is "propagated" or not. - It's ugly, and documented accordingly. - 30. Mail protocols and mail messages are accessed through a "VFS". - URL should then support file:// and maildir:// etc. Update manual! - 31. Flag updates of individual messages must find their way through to - the protocol. - 32. Use deque (on partial views). - 34. We need a new abstraction: `vie[ws]'. I.e, viewset, viewclear, - view(show|look)? We will have (possibly readonly) boxes, a summary - cache file, which is created when a mailbox is read in, and all - that crap that we currently have (setptr(), setmsize(), etc.!) must - vanish. Instead there is another, in-memory abstraction, the view. - Some views are builtin and are somehow selectable (the "all" view, - for example, and the "new" view). - It is possible to make a view persistent by giving it a name, e.g., - 'viewset NAME MSG-SPEC' -- 'viewset allnew :n' (and 'viewset XY `' - or something must be capable to tag the last a.k.a current). - Switching to a named view would thus look over the entire current - view (!) for all messages that comply to the message-spec of the - view, then create a sorted/threaded display of that subset and - create a new anonymous "result" view. It must be possible to - specify that a view is to be applied to the entire mailbox instead - of the current view, via a simple easy understandable syntax. - 50. Support SASL, unite all GSS-API etc. under an abstraction! - Maybe even drop direct GSS-API and support only through SASL. - That is, we can very well provide our own little SASL-client - abstraction with what we have already by simply defining some - "readline" abstraction plus struct ccred for use by the - authentication layer: the protocols must set it up by passing in - a line of authentication mechanisms and a callback mechanism. - Possibly the user should be able to permit or forbid automatic - selection of GSS-API (to avoid useless round-trips) etc. etc. - 99. Now i'm dreaming some more: with the new object-based approach - multiple mailboxes could be in an open state. And it should be - possible to do so for the user (`file' and `folder' are required to - quit the current mailbox [first -- this not yet]), which is why we - either need new trigger characters or new commands. - The absolute sensation would be joinable operations over multiple - open mailboxes, e.g., views over multiple such! -100. If i say `p 3 2 1' then i mean `3 2 1' not `1 2 3'. - -- Deal with faulty message selection that may occur when selecting threads - via & (when at least mixed with other selectors). - --- Also (?same problem?) the thread sort doesn't get - - [A is deleted] - B answers A - C answers B - D answers B - E is unrelated - F answers A - - The current sort fails to recognize that F and the thread starting at - B are related, which results in a mess. - -- Drop **use-starttls* in favour of something better: support 'auto', - 'no' and 'yes' and act accordingly. For the former be smart enough on - the protocol side. (RFC 3207 describes man-in-the-middle attacks due - to 'auto' TLS, so explicit 'yes' should be favoured). - -- NOTE: we do not really support IPv6 sofar in that we are not prepared to - deal with IPv6 addresses (as in '[ADDR]:PORT'). Pimp url_parse(). - And socket I/O. - -- mutt(1) dotlock ..., "mbox" command doesn'T work? - -- ARGH! Should `folders' auto-login if *folder* is an IMAP account that is - not active? Why does _expand() use *mailname* to expand `@', not - getfold() (care: res may point into cbuf, savestr() or so!). - Why does demail() etc. treat *mailname* as a file (more or less), why do - we need *mailname* at all; we should have Folder objects, multiple of - which concurrently, one the active; a Folder may not become *folder* - unless it has write (store) capabilities). Maybe then `mbox' works fine - if connected to a POP3 server with a *MBOX* on an IMAP account that yet - never was connected and needs to read a password on the terminal before - the login works ... note the latter situation yet kills us since i think - INT is blocked during all that ;-(( - -- I had a connection collapse during a POP3 download, and neither was - there a chance to get access to the 22 yet downloaded mails (after - five minutes of waiting followed by CNTRL-C), nor did the layer - recognize this very well (got myriads of `POP3 connection already - closed.' messages, btw., the thirty-something messages which were not - yet downloaded caused (after CNTRL-C) this: ETC. ETC. - -- Add a value-duplication command, i.e., - clone _x header - unset header - ... - clone header _x - unset _x - -- Ensure that `.' and EOF on a line works with all TTY modes (*ignoreeof* - relationship, too)! EOF conditions in general! - --- NCL / current expand-on-tab: fexpand() should take additional size_t* to - store the number of the results OR should "return char** array", so that - individual results can be addressed. - Then we could simply print "\nALL-RESULTS\n" and NOT expand the current - line if the result is ambiguous, i.e., we have more than one possible - expansion. - However, we would then need something to print the results page-wise, - in case we have so many of them that they don't fit on the screen. - ... Etc. ... - -- I got an email in base64 that obviously used CRNL line endings, and once - i've replied the CR where quoted as *control* characters. - Get rid of those (kwcrtest.mbox; may be hard to do everywhere for some - time, due to how we deal with I/O and Send layer etc). - -- edit.c doesn't do NEED_BODY (but IMAP won't work anyway). - -- Stuff - .. s-nail FILE' is not interactive, even though it accepts terminal input.) - . Automatically track message attachments when switching off the - folder. - NOTE: 'alternates' tracking happens BEFORE we enter composing, this - means that an account switch during message composing will NOT cause - reevaluation of all that very very clumy - elide/delete_alternates/gexpand/is_myname etc. handling. - We REALLY need an object based rework of all that. - . It would be cool if ghosts, shortcuts, alternates could - (optionally?) be tracked via localopts. And macros. And inner macros. - (Additional entry on xy-local xy somewhere above) - And / or local to a macro/account if defined in one. - . DESTDIR= should not be taken into account when deciding wether - a rebuild is necessary (not wrong to give that to Gaetan Bisson). - . Just like the RFC 3676 link above, it would be nice if it would be - somehow possible to recognize links in a document; i don't know yet - how this could be achieved without loosing formatting information (i - mean, we could enable this and inject terminal colour sequences, but - one should be able to say 'follow link x', starting an action - handler, and the 'x' must come from somwhere - simply injecting - '[NUMBER]' references distorts visual). Anyway, it's just a filter - that recognized the usual stuff, and of course we can - simply have a buffer which records all such occurrences, so that - user can say '? xy NUMBER', but without the context it soon gets - hard. - . TTY layer: the tc*() family may fail with EINTR, which MUST be - handled; setting also generates SIGTTOU when we're not in foreground - pgrp, so we better deal with all that and ENSURE WE GET THROUGH when - resetting terminal attributes! - .. "I guess it would be much better to create our own session via - setpgid(2) and then tcsetpgrp(3) any processes we run synchronously, - and properly deal with SIGTTOU, but it always has been like that and - i won't do that before other things have been changed. - . Remove all occurrences of mbtowc() with mbrtowc(); temporarily add (some) - global mbstate_t objects until the send / MIME layer rewrite is done and - has the carrier. Use flip states and add aux funs with only update the - state+toggle on success -- CURRENTLY MBTOWC FAILURES ARE PRACTICALLY NOT - HANDLED!! - . Ypnose (linuxien AT legtux DOT org) pointed out that for the IMAP - cache we have some kind of UID validity check -- couldn't that be - used to perform some kind of automatic reconnection when we get that - much-too-frequent connection breaks in IMAP mode?? - Also, and also for POP3, don't let the ALARM based (ugh! I'm - starting to dream wet from select(2), almost truly) timer blindly - tick, but restart it with a full interval when we did regular - conversation with a server. Don't forget the SSL timeouts (300 - seconds) and their interaction with normal (user) keepalives. - Add a global *keepalive*, add *keepalive-USER@HOST*. (Add and use - a generic, single function to get the value for either protocol.) - . HAVE_HISTORY plus: for WANT_EDITLINE and WANT_READLINE the - mk-conf.sh yet always tests anything, i.e., we could fail due to - history related stuff even though the user doesn't WANT_HISTORY. - .. We should in fact convert our NCL history to a shared history - implementation, and only hook editline(3) and readline(3) so that - ^R and Cursor-(Up|Down) work as expected everywhere. - Like that we would have duplicate elimination for readline(3), too. - .. tty_addhist() should take a struct str. Anyway, evaluate() should - enter a history entry if the caller allows so, and it should trim - also trailing whitespace; also, the expanded command should be - stored, not the abbreviation, so that 'sst' and 'sstats' will no - longer produce two separate entries. - ... Because of laststring() and because the evaluate()d line buffer is - not constant history entries sometimes do not 100% reflect what - was actually present on the command line, but i refrained from - hacking a solution since that buffer must end up as a constant - (TODOs or so in the source). - P.S.: i have hacked that in in [f1ded4c] (as a temporary user - goodie because of inconvenience for v14.7.6). - . getprompt() could reserve for each dynamic entry at least one - visible offset, so that at least a `?' could be written if the room - is otherwise insufficient; in addition, if there were 3 such - dynamics, but all in all two visible offsets would be left, a single - entry with as much `?' as possible c/should be written, so as to - indicate the user anything visually. - . pop3,mime_cte +++: \r,\n -> \015,\012, to avoid ANY problems.. - . which_protocol(), *newmail* mechanism, displayname, mailname: all of - this SHIT must vanish and be replaced by a URL, and - a nice "VFS" mailbox object that carries all necessary state so that - one can work with it. - - If not mentioned somewhere else: struct message should be splitted - into a tree of objects, with a base class that has as few fields as - possible; the global *message should be a deque, only accessible via - iterator; it should store pointers to (the actually used subtype of) - message structures instead; i.e., for maildir boxes the path is yet - allocated separately, then it could be part of the message object, - etc. - It should contain a ui8_t that tracks the number of contained parts, - so that the "fits-onto-the-screen" tests are more useful than today; - i think 8-bit is sufficient, with 0xFF meaning more-than-fits-here. - . Given how many temporary files we use, it would make sense to - support a reusable single temporary file, as in singletmp_take() and - singletmp_release(), where singletmp_release() would close and thus - drop the file if it excesses a specific (configurable) size, and the - mainloop tick would close it (after X (configurable) unused ticks)) - otherwise. I guess this would improve performance for searching - etc. etc. - . Searching code *could* perform a prepass, joining stuff together, - dropping useless cases etc. - But anyway: if there are multiple search expressions, it shouldn't - be an error if at least one of them matches at least one message. - . _(), N_(), V_(): - use GNU tools for extraction etc., and write a simple helper program - which converts these files to a serialized hashmap, just like we did - for the okeys (and *exactly* so); add a config check wether the ({}) - extension is supported and finally use that for some ({static char - const *tr_res;}) injection optimization, then. (Think SFSYS) - . Searching body/text yet includes headers from attachments and - attachment data. This is shit. :) - . Btw.: (with IMAP) when opening a folder the hook gets executed after - the flags but before the headers are loaded, but for `newmail' it is - *after* the headers have been loaded. - . /* TODO *batch-exit-on-error*: sourcing and loading MUST BE FLAGS! - * TODO the current behaviour is suboptimal AT BEST! */ - . The "nifty" unregister_file()->_compress() mechanism that even - shovels '-Sfolder=imaps://user1@localhost -Srecord="+Sent Items"' - *records* calls clearerr() on the descriptor before performing it's - action anyway. when we really make it even to the I/O rewrite, it - should be possible to dis-/allow such -- it doesn't make sense to - add something faulty to whatever was not faulty before! - . The message from Andy Switala on nail-devel made me think about some - mechanism that invokes a macro after a message has been sent. - Unless macros can have args (or do we introduce $*/$@/$1..). - Even if the codebase will at some future time be stable and really - reliable, sending a message via multiple channels will never be - atomic, so that it would make sense for a user to be able to restore - *the complete message* in a save place if any of the sends failed, - but to remove it from our temporary place otherwise. A simple - version of this would be a matter of five minutes, but since - mightrecord() may internally (via _compress()) instantiate - a complete IMAP session and try to send incomplete data etc., - and all that may jump, i refrained from doing so. - .. Note that mutt also has send-hooks with special triggers etc., - which even allows setting some options which affect the mail to be - sent, like choosing a signing certificate dependend on the value in - From: and such; - That is (v15.0) - 1. init send carrier enough for allowing - 2. user compose mode - 3. fully initialize send carrier according to what is "final" - 4. run trigger macros WHICH MAY MODIFY THE MESSAGE AGAIN, so - 5. fully reinitialize the send carrier (as necessary) - 6. pass the _final_ message down the send/mime chain - . SMTPS never became a standard and :465 was already reassigned - (thanks, carriers), but if a user says SMTPS and doesn't specify - a port also then we could simply assume :465 because except NetBSD - noone has SMTPS in their /etc/services? - Or at least automatically restart a failed getaddrinfo() in the - SMPTS case (if EAI_SERVICE)? - (Ooops - i think this should go to Gianluca Ramunno!) - . `dp' prints EOF at the end of a thread even if unread messages - follow - . When doing `~w FILE' and FILE cannot be written to (was a directory) - then the composed mail is lost completely, it seems we jump to the - very main loop! - . `resend' doesn't smime-sign. - . Really do extend the test already today; test S/MIME - signing/encryption/decryption with two pairs of identities, instead - of of one. - . RFC 5751 describes a message multipart layout that also includes the - headers in the signature; it would be nice (for completeness sake) - to be able to support that. - . The capability to save a message under the name of a recipient is in - the standard etc., but i've never used it. - What would be cool, otoh, would be if there would be the possibility - to register a regular expression, and if just *any* recipient of - a message matches, store the message in the given folder instead. - I.e., if i send a message to s-nail-users@ then i most likely want - to get a copy to the corresponding box, regardless of whoever the - message was sent To: Cc: or Bcc: else.. - . Things like colalign(), makeprint(), colour*, as well as - possibly even cmd1.c:(__hprf|putindent)(), etc. belong into a cui.c, - display.c or the like, but not into auxlily.c etc. for sure. - Also writing a range of headers should be done through an - iterator-thing with setup/finalize init/destroy life cycle, which - would encapsulate the entire cmd1.c:_print_head() in the single - iterator setup function! - .. Unite - defined HAVE_SETLOCALE && defined HAVE_C90AMEND1 && defined HAVE_WCWIDTH - into HAVE_NATCH_CHAR, solely keep that. But improve the name - . Using -t should still optionally offer an option to enter editing. - Also we should support command line arguments on top. - Add a -T flag for that. Drop -q, let -T mean the same if no header - fields are given (i.e., header fields are not mandatory as with -t). - ANYWAY: -t and -q are mutual, enforce that (yet done?) - While there, it should be possible to send non text/plain for - -q/-t, i.e., perform MIME classification; v15.0 and not only this, - why not simply sucking in complete MIME messages via -t? - (Brezn Stangl, brezn DOT stangl AT yandex DOT com) - . mutt list handling (`~') is very powerful - . Check what happens if an account switch or a network connection is - done while we are loading the resource files... - . We have some use of *at() functions, especially anything which - temporarily switches cwd. - . *newmail* is terrible. At some later time we need to do somethings - with timeouts etc. (for MBOX and Maildir it's not that bad, but for - anything over the network, yet the mentioned may come in over NFS). - Remove it until we have something better? - . The :d modifier is extremely useless even though POSIX compliant (No - deleted message or deleted message header shall be displayed by any - mailx command other than undelete.) - If i explicitly say p:d or f:d or c:d it should work. - . The RFC 3798 *disposition-notification-send* mechanism is yet not - truly conforming (and works with *from*). Also, this is only the - sender side, there should be support for creating the MDN response. - (Maybe ternary option: off (default), - create-when-unread-flag-goes-away, ditto-but-also-strip-header) - .. Also, there is DSN as a SMTP extension, see the RFCs 3461, 346 (as - above) and 6522 (Wikipedia). - . Add a env_blook()/env_vlook() series like that: add a FROM-ENV bit - to variables; use the normal var lookup, but even if found, when - FROM-ENV not set, use getenv(3); question yet open is wether that - value should then override what we have; in fact i think we should - possibly during loading phase act like this automatically for *all* - variable settings, i.e., settings from the environment MUST override - settings from ressource files UNLESS command line arguments - explicitly override anything else. That is pretty shitty, which - makes me think that we should possibly iterate over environ(3) and - explicitly overtake all values therein, or at least those which have - a meaning for S-nail; this needn't be as expensive as it sounds. - .. Some things need to be tracked, e.g. HOME (homedir), TMPDIR - (tempdir) or must not be settable (USER). We should be able to - do so (currently "USER" etc. are "assembled") and error out as - necessary (currently "setenv USER=goof" just works!) - .. More on variables below! - . We should support more named colours, enabled via a, e.g., - *colour-plus*, but provide downgrade colours for given colour names - if that isn't set. (Gavin Troy) - . I want *pipemac* (or *pipe-hookXY*). This requires v15.0 - infrastructure (pseudo: evaluate() returns enum eval_retval{OK=0, - ERR=1, ISMAC=0x80, MACOK=ISMAC|OK, MACERR=ISMAC|ERR}; new `return' - command which only works in an executing macro (care: recursion); - macro arguments in pseudo variables $1...$x (works?); `return' can - "return" a list (simply keep argument list around); macro execution - can then simply check the return value to decide what to do (no - jumping); btw.: where is our `clone' command which clones WHATEVER?): - define pipemac { - clone name=$1 base=$2 ext=$3 ACTION=$4([SEND_]MBOX|DISPLAY|etc) - if $name =~ 'README|INSTALL|TODO|COPYING|*.(txt|rc|cfg|conf)$' - return 'text/plain' - elif $ext =~ 'gz$' - return 'application/gzip' - elif $ext =~ '*.\.nim$' - return 'text/x-nimrod' - else - varshell i /usr/bin/file --preserve-date $name - return $i - endif - } - Also interesting would be the possibility to let a macro BE the - (forked+exec, I/O redirected) external handler, "returning the - output I/O handle". - Inspired by Gavin Troy and Bob Tennent. - . Check cmd_tab.h <-> POSIX: - The following commands shall be invalid in the start-up file: !, - edit, hold, mail, preserve, reply, Reply, shell, visual, Copy, - followup, and Followup. - Add setenv, unsetenv etc. But that shouldn't be covered by the - ARG_I bit, but we need another one; setenv and unsetenv currently - explicitly test for the "starting" variable. (That+ should be - a bit(s) anyway, see elsewhere in this file.) - .. NOTE: POSIX also has a clear idea on what variable comes in from - the environment and which not. This was actually adjusted - accordingly in the manual after v14.7.1, but we don't really honour - it; since our -S mechanism now works correctly it is possibly - a good idea to again make a *true and real difference* in between - external variables that will be overtaken from the environment and - internal variables, which *may not* come in from the environment. - They may however override values which (are allowed to) come in - from the environment -- that is, for those we should force - overriding via setenv even upon startup! (Add a FROMENV flag for - enum okeys, and handle it somehow like special!) - ... While here: variables with a defined fallback value (like LISTER - <- XLISTER, SHELL <- XSHELL etc.) should RETURN the fallback - value, i.e., the following should NOT be necessary: - if ((sh = ok_vlook(SHELL)) == NULL) - sh = XSHELL; - but be done automatically -- why not have yet another enum okeys - flag that names a preprocessor macro, as in fallback=NAME? - ... More on variables above! - ... fexpand() the 2nd: it should return structure because we need to - check for FEDIT_SYSBOX, which currently only checks wether the first - character of a file name is '%', not wether it is '%', '%:FILEPATH' - or '%VALIDUSER', because that is impossible to do! - ... ALL OF THAT: another fexpand() thing below!! - . On the long run in-memory password storage should be zeroed after - use, possibly even encoded *during* use. After v15. - . Add direct support of gpg-agent(1) and add *agent-lookup* (requires - libassuan, but is so much more performant than *agent-shell-lookup*). - Then again, how about either adding a special config variable or - interpreting the very first character of *agent-shell-lookup* - specially in order to support caching of looked up passwords? - Let it be a number in seconds as necessary? - . Try to deal with invalid MBOXes: if a final MIME boundary is seen, - don't require the separating newline before the from (when reading - the mailbox). - . We need a `spamcheck' command that is like `spamrate' but updates - the mail in-place, i.e., with the headers that the spam engine adds. - . My signal handling is pretty messy, too. E.g., for the new spam - handling we even reset TTIN etc. etc., whereas for - *agent-shell-lookup* we don't do just about anything. Even though - it work (due to stacking of handlers all over the place etc.), but - we need to have a clean design at some later time. - . How hard would it be adding support for mixmaster? - . lex.c:__narrow_suffix() is wrong (for stateful encodings that we - don't support yet) and should inject a reset sequence if it shortens - the string. - .. Ditto field_put_bidi_clip() and possibly more. - .. THAT IS TO SAY: the entire codebase doesn't really support stateful - encodings, including the bidi_ things that i've done (but the NCL - does iirc? what is this??). We should have a global string that - has the multibyte reset sequence plus length available for easy - access. - . Note (for v15.0 most likely): when quoting an original message then - if that doesn't end with a newline we should automatically add one. - I thought about hacking it in via quoteflt in the meanwhile?? - .. We want this stuff also for message specification btw., look at - NetBSD Mail in particular. (I.e., the parenthesis are yet taken by - IMAP searches, but if sole parens are separated by WS, maybe?) - . When a user edits a specific header, it should no longer be - modified. This unfortunately requires v15.0 infrastructure. - . Regular expression list resorting is no good; the user should be - able to specify a match order weight, as in: - mlist 10 a@b.org 8 c@d.org .*@else@org 0 almost@never.com - So: optional digit 0-10, where 0-4 are never relinked and always - placed at the tail, 6-10 are never relinked and always placed at - head (all in decreasing order, head to tail), and 5 is the implicit - value, placed in between and automatically resorted just as is the - sole algorithm we currently have. - .. And maybe we should have an event mechanism with one-shot etc.. - Then install a resorter function when we actually have lookups and - one-shot sort the entire thing once (when the loop ticks). - Instead of busy resorting, that is. - . Some pieces of cake (e.g. usermap()) don't perform actions on - addresse(e)s if the first character is a backslash. Others do. - And do we really support that notion all through the codebase. - And, even more: should we support that at all? - . The var_* series should return "const char*" not "char*". - This should already work today because otherwise we would get SEGV - all through the way. - .. Now that we have flags and VIRTUAL variables we can very well - extend that and provide an additional set of DEFVAL. On the one - hand it doesn't make sense to do all those first-time-inits due - comply to POSIX compliance, because many get vanished again when - the resource(s) is (are) loaded; many others are never ever needed, - but still require dynamic memory. Better to have DEFVAL and - a init-on-first-use for those which have this set. - .. I think it would really be better if localopts handling is replaced - by an "environment" with copy-on-change adjustments via reference - counting. (But not before we have a signal manager.) - . We need more hooks: on-leave, on-connect.. whatever - . callforeachexec MACRO SHELL..STUFF.. - -> MACRO called with each line read (in $1 ...) - . fio.c:_globname() is a security risk, but anyway the current POSIX - definition of wordexp(3) is a joke (Rich Felker, - gmane.comp.security.oss.general-15785). Beside that. - What can be encapsulated in the v15.0 URL object (scheme:// prefix). - Otherwise and in addition: change semantics in v15.0, support POSIX: - Several unquoted special characters shall be recognized when used - as file names, with the following substitutions: - % The system mailbox for the invoking user. - %user The system mailbox for user. - # The previous file. - & The current mbox. - +file The named file in the folder directory. (See the folder variable.) - --> Transition to internal mechanism started with topic/fexpand.2. - .. The new internal expansion mechanism should possibly get support - for POSIX parameter expansions ${[:]-} and ${[:]+} (and ${[:]?}). - There is no real way to get the functionality otherwise... - . struct ignoretab and handling can be merged with the new generic - struct group stuff (with some effort) and localized in nam_a_grp.c, - then. Then -- rename that file to grpignnam.c?? :-) - . run_command()++: when we change TTY modes then if we "release" the - terminal to child processes (note STDERR...) then we should - proactively reset before exec and reinstantiate once the child has - finished. Maybe the former anyway. I.e.: don't rely on the shell. - Also, if our stdin is a pipe we possibly want to adjust that for the - child instead of simply leaving the fd alone, which isn't an - impossible case as of today. - . Make S/MIME an option separate of SSL/TLS, i.e., optional. - . Read https://tools.ietf.org/html/draft-ietf-uta-tls-bcp-07. - Can we implement OCSP (see RFC 6066)???? - . With very long input Heirloom mailx(1) / S-nail(1) can produce - encoded-words (RFC 2047) with incomplete multibyte sequences (i.e., - non self-contained encoded-words). - . Group addresses, especially the undisclosed recipients but also - "Bla": addresses; are missing. - . The interface must be straight. "history clear" -> "unhistory". - Ugly but straight. And ditto all the stuff in equal spirit. - . ~@: comma-separated list input should be possible even for filenames - which include commas, proper quoting provided. Adjust manual - . It is terrible that -S sets variables twice, at once and after the - resource files have been loaded. Instead we should look for - PS_LOADING and simply don't overwrite variables that are yet set; of - course this interferes with the plain basic settings which we yet - establish for POSIX compliance -- i.e., first we need a compile-time - automatism for those, thereafter... Ok we still need a bit to mark - them, but isn't it worth the effort. - . The Base64 decoder must become a filter with its own buffer, so that - we can join splitted sequences etc.; yes, that is invalid, but we - should be tolerant (tolerant on input, strict on output - right?). - mutt(1), e.g., even tolerates characters that are invalid ($,!,?++) - and simply ignores them. This is great on the one and shit on the - other hand -- if like that, the error ring should at least mention - that the message WAS FAULTY. E.g., mutt(1) ignores long,long - sequences of those bytes, which i don't consider a good thing.. - And then, should we (really, see mime_enc.c) make a difference in - B64_T and B64, ... and regarding this?? - . OPT_INTERACTIVE and ARG_I are two different kinds of - "interactivity". The latter should be "non-loading/sourcing". - . Cleanup: mime_param.c uses _ALPHA_, urlcrecry.c uses ALPHA_. Unify - that across all sources / headers, full recompile test anywhere - thereafter. - . Several facilities can use table-based settings: colour-stuff - (auxlily.c), ccred_lookup() (maybe including availability error - stuff!) - . *smime-sign* (*asksign*) i would like to see in all XOK forms, yet - today the credentials are looked up after variable check, in fact - even conditionalized on wether signing is desired or not. - . Per-folder (S/MIME) en- and decryption key (Tarqi Kazan): if a xy - variable is set (that points to a key) add a transparent en- and - decryption layer on top of any per-message operation (for boxes for - which the variable is set). - . For v15.0: remember private thread with Tarqi Kazan (2015-05) and - try to improve situation with *record*, so that only messages enter - it which have really been sent. If we support postponing and have - a multi-process layout and add an intermediate *record-queue* we - may be able to improve the situation. - . All of OPT_INTERACTIVE, (OPT_SENDMODE,) OPT_UNICODE, OPT_TTYIN, - OPT_TTYOUT should not be user_options but instead program_state - members. - --- - - . We can "steal" features from msmtp(1) that make sense: SOCKS support - (primitive) and /etc/aliases ($mta_alias_file). At least postfix(1) - supports file and pipe addressees in the latter... It also - supports include files via :include:/filename but which i think - should be supported in a second step. Ditto caching (timestamp - check and a mechanism to support/disable caching.) - -# s-ts-mode diff --git a/nail.1 b/nail.1 index 9265976f..0bf65078 100644 --- a/nail.1 +++ b/nail.1 @@ -34,20 +34,15 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\"--MKREL-START-- .\"@ S-nail(1): v14.8.11 / 2016-10-03 .Dd Oct 03, 2016 .ds VV \\%v14.8.11 -.\"--MKREL-END-- .\"--MKMAN-START-- .ds UU \\%S-NAIL .ds UA \\%S-nail .ds ua \\%s-nail .ds UR \\%s-nail.rc .\"--MKMAN-END-- -.\" --BEGINSTRIP-- -.\" -.\" If not ~/.mailrc, it breaks POSIX compatibility. And adjust main.c. .ds ur \\%~/.mailrc .ds OB [Obsolete] .ds OP [Option] @@ -56,20 +51,521 @@ .ds ID [v15 behaviour may differ] .ds BY (Binary) .ds RO (Read-only) -. .Dt "\*(UU" 1 .Os -.Mx -enable -. -. +.\" Uncomment for mandoc(1) compat.: +.\".ds mx-toc-name TABLE OF CONTENTS +.Mx -enable -preprocessed +.Mx -anchor-spass Sh "NAME" 1 +.Mx -anchor-spass Sh "SYNOPSIS" 2 +.Mx -anchor-spass Sh "\*[mx-toc-name]" 3 +.Mx -anchor-spass Sh "DESCRIPTION" 4 +.Mx -anchor-spass Sh "COMMANDS" 5 +.Mx -anchor-spass Sh "TILDE ESCAPES" 6 +.Mx -anchor-spass Sh "VARIABLE OPTIONS" 7 +.Mx -anchor-spass Sh "ENVIRONMENT" 8 +.Mx -anchor-spass Sh "FILES" 9 +.Mx -anchor-spass Sh "EXAMPLES" 10 +.Mx -anchor-spass Sh "FAQ" 11 +.Mx -anchor-spass Sh "SEE ALSO" 12 +.Mx -anchor-spass Sh "HISTORY" 13 +.Mx -anchor-spass Sh "AUTHORS" 14 +.Mx -anchor-spass Sh "CAVEATS" 15 +.Mx -anchor-spass Sh "BUGS" 16 +.Mx -anchor-spass Ss "Options" 4 +.Mx -anchor-spass Ss "A starter" 4 +.Mx -anchor-spass Ss "Sending mail" 4 +.Mx -anchor-spass Ss "Reading mail" 4 +.Mx -anchor-spass Ss "Viewing HTML mail and MIME attachments" 4 +.Mx -anchor-spass Ss "Mailing lists" 4 +.Mx -anchor-spass Ss "Resource files" 4 +.Mx -anchor-spass Ss "Character sets" 4 +.Mx -anchor-spass Ss "Message states" 4 +.Mx -anchor-spass Ss "Specifying messages" 4 +.Mx -anchor-spass Ss "On URL syntax and credential lookup" 4 +.Mx -anchor-spass Ss "Command line editor" 4 +.Mx -anchor-spass Ss "Coloured message display" 4 +.Mx -anchor-spass Ss "Initial Settings" 7 +.Mx -anchor-spass Ss "Binary options" 7 +.Mx -anchor-spass Ss "Value options" 7 +.Mx -anchor-spass Ss "The mime.types files" 9 +.Mx -anchor-spass Ss "The .netrc file" 9 +.Mx -anchor-spass Ss "An example configuration" 10 +.Mx -anchor-spass Ss "Signed and encrypted messages with S/MIME" 10 +.Mx -anchor-spass Ss "Using CRLs with S/MIME or SSL/TLS" 10 +.Mx -anchor-spass Ss "Handling spam" 10 +.Mx -anchor-spass Ss "\*(UA shortly hangs on startup" 11 +.Mx -anchor-spass Ss "I can't login to Google mail a.k.a. GMail" 11 +.Mx -anchor-spass Fl "A" +.Mx -anchor-spass Fl "a" +.Mx -anchor-spass Fl "B" +.Mx -anchor-spass Fl "b" +.Mx -anchor-spass Fl "c" +.Mx -anchor-spass Fl "D" +.Mx -anchor-spass Fl "d" +.Mx -anchor-spass Fl "E" +.Mx -anchor-spass Fl "e" +.Mx -anchor-spass Fl "F" +.Mx -anchor-spass Fl "f" +.Mx -anchor-spass Fl "H" +.Mx -anchor-spass Fl "h" +.Mx -anchor-spass Fl "i" +.Mx -anchor-spass Fl "L" +.Mx -anchor-spass Fl "N" +.Mx -anchor-spass Fl "n" +.Mx -anchor-spass Fl "q" +.Mx -anchor-spass Fl "R" +.Mx -anchor-spass Fl "r" +.Mx -anchor-spass Fl "S" +.Mx -anchor-spass Fl "s" +.Mx -anchor-spass Fl "t" +.Mx -anchor-spass Fl "u" +.Mx -anchor-spass Fl "V" +.Mx -anchor-spass Fl "v" +.Mx -anchor-spass Fl "X" +.Mx -anchor-spass Fl "~" +.Mx -anchor-spass Fl "#" +.Mx -anchor-spass Fl "." +.Mx -anchor-spass Pa "\*(UR" +.Mx -anchor-spass Pa "\*(ur" +.Mx -anchor-spass Ic "#" +.Mx -anchor-spass Ic "~" +.Mx -anchor-spass Ic "-" +.Mx -anchor-spass Ic "=" +.Mx -anchor-spass Ic "?" +.Mx -anchor-spass Ic "!" +.Mx -anchor-spass Ic "|" +.Mx -anchor-spass Ic "account" +.Mx -anchor-spass Ic "alias" +.Mx -anchor-spass Ic "alternates" +.Mx -anchor-spass Ic "answered" +.Mx -anchor-spass Ic "cache" +.Mx -anchor-spass Ic "call" +.Mx -anchor-spass Ic "cd" +.Mx -anchor-spass Ic "certsave" +.Mx -anchor-spass Ic "chdir" +.Mx -anchor-spass Ic "collapse" +.Mx -anchor-spass Ic "connect" +.Mx -anchor-spass Ic "Copy" +.Mx -anchor-spass Ic "copy" +.Mx -anchor-spass Ic "cwd" +.Mx -anchor-spass Ic "Decrypt" +.Mx -anchor-spass Ic "decrypt" +.Mx -anchor-spass Ic "define" +.Mx -anchor-spass Ic "delete" +.Mx -anchor-spass Ic "discard" +.Mx -anchor-spass Ic "disconnect" +.Mx -anchor-spass Ic "dp" +.Mx -anchor-spass Ic "dt" +.Mx -anchor-spass Ic "draft" +.Mx -anchor-spass Ic "echo" +.Mx -anchor-spass Ic "edit" +.Mx -anchor-spass Ic "elif" +.Mx -anchor-spass Ic "else" +.Mx -anchor-spass Ic "endif" +.Mx -anchor-spass Ic "errors" +.Mx -anchor-spass Ic "exit" +.Mx -anchor-spass Ic "features" +.Mx -anchor-spass Ic "File" +.Mx -anchor-spass Ic "file" +.Mx -anchor-spass Ic "flag" +.Mx -anchor-spass Ic "folder" +.Mx -anchor-spass Ic "folders" +.Mx -anchor-spass Ic "Followup" +.Mx -anchor-spass Ic "followup" +.Mx -anchor-spass Ic "followupall" +.Mx -anchor-spass Ic "followupsender" +.Mx -anchor-spass Ic "Forward" +.Mx -anchor-spass Ic "forward" +.Mx -anchor-spass Ic "from" +.Mx -anchor-spass Ic "Fwd" +.Mx -anchor-spass Ic "fwd" +.Mx -anchor-spass Ic "fwdignore" +.Mx -anchor-spass Ic "fwdretain" +.Mx -anchor-spass Ic "ghost" +.Mx -anchor-spass Ic "headers" +.Mx -anchor-spass Ic "help" +.Mx -anchor-spass Ic "history" +.Mx -anchor-spass Ic "hold" +.Mx -anchor-spass Ic "if" +.Mx -anchor-spass Ic "ignore" +.Mx -anchor-spass Ic "imap" +.Mx -anchor-spass Ic "inc" +.Mx -anchor-spass Ic "list" +.Mx -anchor-spass Ic "localopts" +.Mx -anchor-spass Ic "Lreply" +.Mx -anchor-spass Ic "Mail" +.Mx -anchor-spass Ic "mail" +.Mx -anchor-spass Ic "mbox" +.Mx -anchor-spass Ic "mimetype" +.Mx -anchor-spass Ic "mlist" +.Mx -anchor-spass Ic "mlsubscribe" +.Mx -anchor-spass Ic "Move" +.Mx -anchor-spass Ic "move" +.Mx -anchor-spass Ic "More" +.Mx -anchor-spass Ic "more" +.Mx -anchor-spass Ic "netrc" +.Mx -anchor-spass Ic "newmail" +.Mx -anchor-spass Ic "next" +.Mx -anchor-spass Ic "New" +.Mx -anchor-spass Ic "new" +.Mx -anchor-spass Ic "noop" +.Mx -anchor-spass Ic "Page" +.Mx -anchor-spass Ic "page" +.Mx -anchor-spass Ic "Pipe" +.Mx -anchor-spass Ic "pipe" +.Mx -anchor-spass Ic "preserve" +.Mx -anchor-spass Ic "Print" +.Mx -anchor-spass Ic "print" +.Mx -anchor-spass Ic "quit" +.Mx -anchor-spass Ic "redirect" +.Mx -anchor-spass Ic "Redirect" +.Mx -anchor-spass Ic "remove" +.Mx -anchor-spass Ic "rename" +.Mx -anchor-spass Ic "Reply" +.Mx -anchor-spass Ic "reply" +.Mx -anchor-spass Ic "replyall" +.Mx -anchor-spass Ic "replysender" +.Mx -anchor-spass Ic "Resend" +.Mx -anchor-spass Ic "resend" +.Mx -anchor-spass Ic "Respond" +.Mx -anchor-spass Ic "respond" +.Mx -anchor-spass Ic "respondall" +.Mx -anchor-spass Ic "respondsender" +.Mx -anchor-spass Ic "retain" +.Mx -anchor-spass Ic "Save" +.Mx -anchor-spass Ic "save" +.Mx -anchor-spass Ic "savediscard" +.Mx -anchor-spass Ic "saveignore" +.Mx -anchor-spass Ic "saveretain" +.Mx -anchor-spass Ic "seen" +.Mx -anchor-spass Ic "set" +.Mx -anchor-spass Ic "setenv" +.Mx -anchor-spass Ic "shell" +.Mx -anchor-spass Ic "shortcut" +.Mx -anchor-spass Ic "show" +.Mx -anchor-spass Ic "size" +.Mx -anchor-spass Ic "sort" +.Mx -anchor-spass Ic "source" +.Mx -anchor-spass Ic "source_if" +.Mx -anchor-spass Ic "spamclear" +.Mx -anchor-spass Ic "spamforget" +.Mx -anchor-spass Ic "spamham" +.Mx -anchor-spass Ic "spamrate" +.Mx -anchor-spass Ic "spamset" +.Mx -anchor-spass Ic "spamspam" +.Mx -anchor-spass Ic "thread" +.Mx -anchor-spass Ic "top" +.Mx -anchor-spass Ic "touch" +.Mx -anchor-spass Ic "Type" +.Mx -anchor-spass Ic "type" +.Mx -anchor-spass Ic "unaccount" +.Mx -anchor-spass Ic "unalias" +.Mx -anchor-spass Ic "unanswered" +.Mx -anchor-spass Ic "uncollapse" +.Mx -anchor-spass Ic "undefine" +.Mx -anchor-spass Ic "undelete" +.Mx -anchor-spass Ic "undraft" +.Mx -anchor-spass Ic "unflag" +.Mx -anchor-spass Ic "unfwdignore" +.Mx -anchor-spass Ic "unfwdretain" +.Mx -anchor-spass Ic "unghost" +.Mx -anchor-spass Ic "unignore" +.Mx -anchor-spass Ic "unmimetype" +.Mx -anchor-spass Ic "unmlist" +.Mx -anchor-spass Ic "unmlsubscribe" +.Mx -anchor-spass Ic "Unread" +.Mx -anchor-spass Ic "unread" +.Mx -anchor-spass Ic "unretain" +.Mx -anchor-spass Ic "unsaveignore" +.Mx -anchor-spass Ic "unsaveretain" +.Mx -anchor-spass Ic "unset" +.Mx -anchor-spass Ic "unsetenv" +.Mx -anchor-spass Ic "unshortcut" +.Mx -anchor-spass Ic "unsort" +.Mx -anchor-spass Ic "unthread" +.Mx -anchor-spass Ic "urldecode" +.Mx -anchor-spass Ic "urlencode" +.Mx -anchor-spass Ic "varedit" +.Mx -anchor-spass Ic "varshow" +.Mx -anchor-spass Ic "verify" +.Mx -anchor-spass Ic "visual" +.Mx -anchor-spass Ic "write" +.Mx -anchor-spass Ic "xit" +.Mx -anchor-spass Ic "z" +.Mx -anchor-spass Ic "Z" +.Mx -anchor-spass Ic "~~" +.Mx -anchor-spass Ic "~!" +.Mx -anchor-spass Ic "~." +.Mx -anchor-spass Ic "~:" +.Mx -anchor-spass Ic "~?" +.Mx -anchor-spass Ic "~<" +.Mx -anchor-spass Ic "~' # But... try it in an isolated dry-run mode first @@ -586,7 +1029,6 @@ $ LC_ALL=C MAILRC=/dev/null \e \*(ua -n -d -vv -Sfrom="me " \e -s Subject -. "(Lovely) Bob " .Ed -. .Pp The user is then expected to type in the message contents. In this compose mode \*(UA treats lines beginning with the character @@ -612,7 +1054,6 @@ denoted by unless .Pf no Va save is set.) -. .Pp A number of options can be used to alter default behavior; e.g., .Ic set Ns @@ -627,7 +1068,6 @@ and the option will allow leaving compose mode by writing a line consisting solely of a dot .Pf ( Ql \&. ) . -. .Pp Very important, though, is to define which .Sx "Character sets" @@ -640,7 +1080,6 @@ to understand how the MIME-type of outgoing attachments is classified and the knowledge that messages are sent asynchronously unless .Va sendwait is set: only with it MTA delivery errors will be recognizable. -. .Pp Setting .Va from @@ -666,7 +1105,6 @@ contains an example configuration for sending messages via some of the well-known public mail providers; note it also gives a compact overview on how to setup a secure SSL/TLS environment. -. .Pp Message recipients (as specified on the command line or defined in .Ql To: , @@ -685,9 +1123,6 @@ is not set then only network addresses (see for a description of mail addresses) and plain user names (including MTA aliases) may be used, other types will be filtered out, giving a warning message. -. -.\" When changing any of the following adjust any RECIPIENTADDRSPEC; -.\" grep the latter for the complete picture .Pp If the variable .Va expandaddr @@ -716,7 +1151,6 @@ or percent sign .Ql % character before also specifies a mailbox name; What remains is treated as a network address. -. .Bd -literal -offset indent $ echo bla | \*(ua -Sexpandaddr -s test ./mbox.mbox $ echo bla | \*(ua -Sexpandaddr -s test '|cat >> ./mbox.mbox' @@ -725,17 +1159,14 @@ $ echo safe | LC_ALL=C MAILRC=/dev/null \e -Sexpandaddr=fail,-all,+addr -s test \e -. bob@home.net .Ed -. .Pp It is possible to create personal distribution lists via the .Ic alias command, so that, for instance, the user can send mail to .Ql cohorts and have it go to a group of people: -. .Pp .Dl alias cohorts bill jkf mark kridle@ucbcory ~/mail/cohorts.mbox -. .Pp Please note that this mechanism has nothing in common with the system wide aliases that may be used by the local MTA (mail-transfer-agent), @@ -752,7 +1183,6 @@ and Personal aliases will be expanded by \*(UA before the message is sent, and are thus a convenient alternative to specifying each addressee by itself. -. .Pp To avoid environmental noise scripts should .Dq detach @@ -762,7 +1192,6 @@ environment, either by pointing the variable to a custom configuration file, or by using the .Fl S command line option to specify options: -. .Bd -literal -offset indent $ env LC_ALL=C MAILRC=/dev/null password=NOTSECRET \e \*(ua -n -Sv15-compat -Ssendwait -Snosave \e @@ -773,11 +1202,7 @@ $ env LC_ALL=C MAILRC=/dev/null password=NOTSECRET \e -. "Recipient 1 " recipient2@domain \e < content_file .Ed -.\" }}} -. -.\" .Ss "Reading mail" {{{ .Ss "Reading mail" -. When invoked without addressees \*(UA enters interactive mode in which mails may be read. When used like that the user's system mailbox is read in and a one line @@ -789,7 +1214,6 @@ Note that if the mailbox is empty \*(UA will exit after printing a message unless the option .Va emptystart is found to be set. -. .Pp At the .Va prompt @@ -808,7 +1232,6 @@ order of commands doesn't necessarily relate to the abbreviations; it is possible to define overwrites with the .Ic ghost command, however). -. .Pp Messages are given numbers (starting at 1) which uniquely identify messages; the current message \(en the @@ -817,7 +1240,6 @@ messages; the current message \(en the or the first message of the mailbox; the option .Va showlast will instead cause usage of the last message for this purpose. -. .Pp Messages can be printed with the .Ic print @@ -842,7 +1264,6 @@ will print the messages 1 through 5, and and .Ql p+ will print the last and the next message, respectively. -. .Pp In the default setup all header fields of a message will be printed, but this can be changed: either by blacklisting a list of fields via @@ -860,7 +1281,6 @@ controls whether and when \*(UA will use the configured .Ev PAGER for printing instead of directly writing to the terminal (generally speaking). -. .Pp Dependent upon the configuration a .Sx "Command line editor" @@ -878,7 +1298,6 @@ modifier then messages which have been read will be moved to the user's file automatically when the mailbox is left, either by changing the active mailbox or by quitting \*(UA (also see .Sx "Message states" ) . -. .Pp After examining a message the user can also .Ic delete Ql d @@ -902,7 +1321,6 @@ the message by giving its number, or the \*(UA session can be ended by giving the .Ic exit Ql x command. -. .Pp To end a mail processing session one may either issue .Ic quit Ql q @@ -913,11 +1331,7 @@ as well as updating the \*(OPal command line editor history file, or use the command .Ic exit Ql x instead in order to prevent any of these actions. -.\" }}} -. -.\" .Ss "Viewing HTML mail and MIME attachments" {{{ .Ss "Viewing HTML mail and MIME attachments" -. Messages which are HTML-only get more and more common and of course many messages come bundled with a bouquet of MIME attachments. Whereas \*(UA \*(OPally supports a simple HTML-to-text converter to deal @@ -934,7 +1348,6 @@ The latter type of programs by default \*(UA until the external viewer has terminated, but asynchronous side-by-side execution is also possible, in which case \*(UA will continue to display the message and remain responsive. -. .Pp To install an external handler program for a specific MIME type set an according @@ -955,7 +1368,6 @@ or .Xr elinks 1 , teach \*(UA about MathML documents and make it display them as plain text and to open PDF attachments in an external PDF viewer, asynchronously: -. .Bd -literal -offset indent if $features !@ HTML-FILTER #set pipe-text/html="elinks -force-html -dump 1" @@ -972,7 +1384,6 @@ set pipe-application/pdf="@&set -C;\e cat > \e"${TMPDIR}/${NAIL_FILENAME_GENERATED}\e"; \e xpdf \e"${TMPDIR}/${NAIL_FILENAME_GENERATED}\e"" .Ed -. .Pp Note: special care must be taken when using such commands as mail viruses may be distributed by this method: if messages of type @@ -986,11 +1397,7 @@ section .Sx "The mime.types files" and the command .Ic mimetype . -.\" }}} -. -.\" .Ss "Mailing lists" {{{ .Ss "Mailing lists" -. \*(UA offers some support to ease handling of mailing lists. The command .Ic mlist @@ -1010,20 +1417,17 @@ format .Ql \&%T can be used to mark out messages with configured list addresses in the header display. -. .Pp \*(OPally mailing lists may also be specified as regular expressions, which allows matching of many addresses with a single expression. However, all fully qualified list addresses are matched via a fast dictionary, whereas expressions are placed in (a) list(s) which is (are) matched sequentially. -. .Bd -literal -offset indent set followup-to followup-to-honour=ask-yes reply-to-honour=ask-yes mlist a1@b1.c1 a2@b2.c2 .*@lists.c3$ mlsubscribe a4@b4.c4 exact@lists.c3 .Ed -. .Pp The variable .Va followup-to-honour @@ -1046,7 +1450,6 @@ is used, when is used to respond to a message with its .Ql Mail-Followup-To: being honoured etc. -. .Pp A difference in between the handling of known and subscribed lists is that the address of the sender is usually not part of a generated @@ -1069,13 +1472,8 @@ for this purpose in order to accept a list administrators' wish that is supposed to have been manifested like that (but only if it provides a single address which resides on the same domain as what is stated in .Ql List-To: ) . -.\" }}} -. -.\" .Ss "Resource files" {{{ .Ss "Resource files" -. Upon startup \*(UA reads in several resource files: -. .Bl -tag -width ".It Pa _AIL_EXTRA_R_" .Mx .It Pa \*(UR @@ -1084,23 +1482,19 @@ Reading of this file can be suppressed, either by using the .Fl n command line option, or by setting the environment variable .Ev NAIL_NO_SYSTEM_RC . -. .Mx .It Pa \*(ur File giving initial commands. A different file can be chosen by setting the environment variable .Ev MAILRC . -. .It Va NAIL_EXTRA_RC Can be used to define an optional startup file to be read after .Pa \*(ur . This variable is only honoured in certain circumstances (see its documentation for more). .El -. .Pp The content of these files is interpreted as follows: -. .Pp .Bl -bullet -compact .It @@ -1122,7 +1516,6 @@ by preceding it with the backslash character Note that any leading whitespace of follow lines is removed: If whitespace is desired it must be placed before the backslash. For example: -. .Bd -literal -offset indent # This line is a comment command. And y\e es, it is really continued here. @@ -1130,11 +1523,7 @@ set debug \e verbose .Ed .El -.\" }}} -. -.\" .Ss "Character sets" {{{ .Ss "Character sets" -. \*(OP \*(UA detects the character set of the terminal by using mechanisms that are controlled by the .Ev LC_CTYPE @@ -1148,7 +1537,6 @@ and will thus show up in the output of the commands .Ic set and .Ic varshow . -. .Pp However, a user supplied .Va ttycharset @@ -1161,7 +1549,6 @@ ISO8859-1, which is not a valid name for this character set; to be on the safe side, one may set .Va ttycharset to the correct name, which is ISO-8859-1. -. .Pp Note that changing the value doesn't mean much beside that, since several aspects of the real character set are implied by the @@ -1173,7 +1560,6 @@ variable. It is actually possible to send mail in a completely .Dq faked locale environment.) -. .Pp If no character set conversion capabilities have been compiled into \*(UA (i.e., no @@ -1186,7 +1572,6 @@ and the rest of this section does not apply; it may however still be necessary to explicitly set it if automatic detection fails, since in that case it defaults to the mentioned ISO-8859-1. -. .Pp When reading messages, their text is converted into .Va ttycharset @@ -1198,7 +1583,6 @@ was set once \*(UA was started). Also see .Va charset-unknown-8bit to deal with another hairy aspect of message interpretation. -. .Pp When sending messages all their parts and attachments are classified. Whereas no character set conversion is performed on those parts which @@ -1213,7 +1597,6 @@ variable, and which defines a catch-all last-resort fallback character set that is implicitly appended to the list of character-sets in .Va sendcharsets . -. .Pp When replying to a message and the variable .Va reply-in-same-charset @@ -1223,7 +1606,6 @@ And it is also possible to make \*(UA work even more closely related to the current locale setting automatically by using the variable .Va sendcharsets-else-ttycharset , please see there for more information. -. .Pp All the specified character sets are tried in order unless the conversion of the part or attachment succeeds. @@ -1240,7 +1622,6 @@ In the first case, it is necessary to set an appropriate .Ev LC_CTYPE locale and/or the variable .Va ttycharset . -. .Pp The best results are usually achieved when \*(UA is run in a UTF-8 locale on a UTF-8 capable terminal, in which case the full Unicode @@ -1248,11 +1629,7 @@ spectrum of characters is available. In this setup characters from various countries can be displayed, while it is still possible to use more simple character sets for sending to retain maximum compatibility with older mail clients. -.\" }}} -. -.\" .Ss "Message states" {{{ .Ss "Message states" -. \*(UA differentiates in between several different message states; the current state will be reflected in the header display if .Va headline @@ -1269,17 +1646,14 @@ sets the and .Va keepsave variables in order to suppress this behaviour. -. .Bl -tag -width ".It Ql _reserved" .It Ql new Message has neither been viewed nor moved to any other state. Such messages are retained even in the system mailbox. -. .It Ql unread Message has neither been viewed nor moved to any other state, but the message was present already when the mailbox has been opened last: Such messages are retained even in the system mailbox. -. .It Ql read The message has been processed by one of the following commands: .Ic ~f , @@ -1317,7 +1691,6 @@ state when the mailbox is left will be saved in unless the option .Va hold it set. -. .It Ql deleted The message has been processed by one of the following commands: .Ic delete , @@ -1326,12 +1699,10 @@ The message has been processed by one of the following commands: Only .Ic undelete can be used to access such messages. -. .It Ql preserved The message has been processed by a .Ic preserve command and it will be retained in its current location. -. .It Ql saved The message has been processed by one of the following commands: .Ic save @@ -1350,11 +1721,7 @@ when the option .Va keepsave is set. .El -.\" }}} -. -.\" .Ss "Specifying messages" {{{ .Ss "Specifying messages" -. Commands such as .Ic print and @@ -1377,7 +1744,6 @@ header summary. Multiple colon modifiers can be joined into one, e.g., .Ql :du . The following special message names exist: -. .Bl -tag -width ".It Ar _n_u" .It Ar :n All @@ -1454,7 +1820,6 @@ the first such message in the sorted/threaded order. The last message. In sorted/threaded mode, the last message in the sorted/threaded order. -. .It Ar & Ns Ar x In threaded mode, selects the message addressed with @@ -1469,13 +1834,11 @@ If .Ar x is omitted, the thread beginning with the current message is selected. -. .It Ar * All messages. .It Ar ` All messages that were included in the message list for the previous command. -. .It Ar / Ns Ar string All messages that contain .Ar string @@ -1487,7 +1850,6 @@ If .Ar string is empty, the string from the previous specification of that type is used again. -. .It Xo Op Ar @ Ns Ar name-list Ns .Ar @ Ns Ar expr .Xc @@ -1555,7 +1917,6 @@ search expression is to be matched against, prefix the header name .Ql ~ : .Pp .Dl '@~f@@a\e.safe\e.domain\e.match$' -. .It Ar address A case-insensitive .Dq any substring matches @@ -1577,7 +1938,6 @@ search expression; the \*(OPal IMAP-style .Ql (from address) expression can also be used if substring matches are desired. .El -. .Pp \*(OP IMAP-style SEARCH expressions may also be used. This addressing mode is available with all types of folders; @@ -1594,17 +1954,14 @@ When the description indicates that the representation of an address field is used, this means that the search string is checked against both a list constructed as -. .Bd -literal -offset indent (\*qname\*q \*qsource\*q \*qlocal-part\*q \*qdomain-part\*q) .Ed -. .Pp for each address, and the addresses without real names from the respective header field. These search expressions can be nested using parentheses, see below for examples. -. .Pp .Bl -tag -compact -width ".It Ar _n_u" .It Ar ( criterion ) @@ -1612,7 +1969,6 @@ All messages that satisfy the given .Ar criterion . .It Ar ( criterion1 criterion2 ... criterionN ) All messages that satisfy all of the given criteria. -. .It Ar ( or criterion1 criterion2 ) All messages that satisfy either .Ar criterion1 @@ -1634,7 +1990,6 @@ operation of independent criteria on the lowest nesting level, it is possible to achieve similar effects by using three separate criteria, as with .Ql (a) (b) (c) . -. .It Ar ( not criterion ) All messages that do not satisfy .Ar criterion . @@ -1690,7 +2045,6 @@ All messages that are larger than All messages that are smaller than .Ar size (in bytes). -. .It Ar ( before date ) All messages that were received before .Ar date , @@ -1706,7 +2060,6 @@ and .Ql yyyy is the year as four digits, e.g., .Ql 28-Dec-2012 . -. .It Ar ( on date ) All messages that were received on the specified date. .It Ar ( since date ) @@ -1723,11 +2076,7 @@ This specification cannot be used as part of another criterion. If the previous command line contained more than one independent criterion then the last of those criteria is used. .El -.\" }}} -. -.\" .Ss "On URL syntax and credential lookup" {{{ .Ss "On URL syntax and credential lookup" -. \*(IN For accessing protocol-specific resources, like POP3 mailboxes, usage of compact and standardized Uniform Resource Locators (URL, RFC 1738) has become omnipresent. @@ -1739,10 +2088,8 @@ ways to define the information in question or because support of the part is protocol-specific \(en e.g., .Ql /path is used by the IMAP protocol but not by POP3. -. .Pp .Dl PROTOCOL://[USER[:PASSWORD]@]server[:port][/path] -. .Pp If .Ql USER @@ -1760,7 +2107,6 @@ on a string and use that instead of having to deal with several different standards.) On the other hand, values given in variables are expected not to be URL percent encoded. -. .Pp Many variable options of \*(UA exist in multiple versions, called variable chains for the rest of this document: the plain @@ -1785,7 +2131,6 @@ that had been found when doing the user chain lookup as is described below, i.e., this .Ql USER will never be in URL percent encoded form, whether it came from an URL or not. -. .Pp For example, whether an hypothetical URL .Ql smtp://hey%3Ayou@our.house @@ -1798,11 +2143,9 @@ and the user had been found differently, to lookup the variable chain is defined, then whether .Ql smtp-\:use-\:starttls-\:our.house exists before finally ending up looking at the plain variable itself. -. .Pp \*(UA obeys the following logic scheme when dealing with the necessary credential informations of an account: -. .Bl -bullet .It If no @@ -1839,13 +2182,11 @@ or the user. The identity of this user has been fixated during \*(UA startup and is known to be a valid user on the current host. -. .It Authentication: unless otherwise noted this will lookup the .Va PROTOCOL-auth-USER@HOST , PROTOCOL-auth-HOST , PROTOCOL-auth variable chain, falling back to a protocol-specific default should this have no success. -. .It If no .Ql PASSWORD @@ -1879,7 +2220,6 @@ If at that point there is still no password available, but the (protocols') chosen authentication type requires a password, then in interactive mode the user will be prompted on the terminal. .El -. .Pp .Sy Note: S/MIME verification works relative to the values found in the @@ -1903,20 +2243,14 @@ and combinations may therefore be involved \(en on the other hand those unusual cases become possible. The usual case is as short as: -. .Pp .Dl set smtp=smtp://USER:PASS@HOST smtp-use-starttls \e .Dl \ \ \ \ smime-sign smime-sign-cert=+smime.pair -. .Pp The section .Sx EXAMPLES contains complete example configurations. -.\" }}} -. -.\" .Ss "Command line editor" {{{ .Ss "Command line editor" -. \*(OP \*(UA can be configured to support a command line editor and command history lists which are saved in between sessions. One may link against fully-fledged external libraries @@ -1928,7 +2262,6 @@ ISO C standard (ISO/IEC 9899:1990/Amendment 1:1995). When an external library is used, interactive behaviour of \*(UA relies on that library and may not correspond one-to-one to what is described in this manual. -. .Pp Regardless of the actually used command line editor .Ic history @@ -1947,7 +2280,6 @@ For more information see the documentation of the options .Va NAIL_HISTFILE and .Va NAIL_HISTSIZE . -. .Pp The builtin \*(UA command line editor supports the following operations; the notation @@ -1958,7 +2290,6 @@ key plus the mentioned character, e.g., .Ql ^A means .Dq hold down control key and press the A key : -. .Pp .Bl -tag -compact -width "Ql _M" .It Ql ^A @@ -1974,7 +2305,6 @@ option is set. Go to the end of the line. .It Ql ^F Move the cursor forward one character. -. .It Ql ^G Cancel current operation, full reset. If there is an active history search or tabulator expansion then this @@ -1982,12 +2312,10 @@ command will first reset that, reverting to the former line content; thus a second reset is needed for a full reset in this case. In all cases \*(UA will reset a possibly used multibyte character input state machine. -. .It Ql ^H The same as .Dq backspace : backward delete one character. -. .It Ql ^I \*(OP The same as .Dq horizontal tabulator : @@ -1999,7 +2327,6 @@ as is known from the but really means the usual \*(UA expansion, as documented for .Ic file , yet it involves shell expansion as a last step, too.) -. .It Ql ^J The same as .Dq ENTER : @@ -2030,13 +2357,11 @@ Move the cursor forward one word boundary. .It Ql ^Y Move the cursor backward one word boundary. .El -. .Pp If problems with commands that are based upon rightwise movement are encountered, adjustments of the option .Va line-editor-cursor-right may solve the problem, as documented for it. -. .Pp If the terminal produces key sequences which are compatible with .Xr xterm 1 @@ -2057,11 +2382,7 @@ command with the respective arguments and .Ql + (i.e., perform scrolling through the header summary list). -.\" }}} -. -.\" .Ss "Coloured message display" {{{ .Ss "Coloured message display" -. \*(OP \*(UA can be configured to support coloured message display, realized by emitting ANSI colour escape sequences. Colours are only used when the @@ -2070,7 +2391,6 @@ environment variable is set and either the terminal type can be found in .Va colour-terms or its name includes the string .Ql color . -. .Pp On top of that the binary option .Va colour-pager @@ -2082,11 +2402,9 @@ of a command needs to go through the ) \(en this is not enabled by default because different pager programs need different command line switches or other configuration in order to support those colour sequences, please see the option for more details. -. .Pp To forcefully disable all colour support, set .Va colour-disable . -. .Pp Colours can be configured through font attributes .Pf ( Ql ft= @@ -2110,10 +2428,8 @@ colours and .Ql white ) . Multiple specifications can be joined in a comma separated list, as in -. .Pp .Dl set colour-msginfo="ft=bold,fg=magenta,bg=cyan" -. .Pp Options to be set are .Va colour-msginfo , @@ -2128,13 +2444,7 @@ which is a list of headers to be colourized via .Va colour-uheader instead of the default .Va colour-header . -.\" }}} -.\" }}} (DESCRIPTION) -. -. -.\" .Sh COMMANDS {{{ .Sh COMMANDS -. Each command is typed on a line by itself, and may take arguments following the command word. The command need not be typed in its entirety \(en @@ -2149,7 +2459,6 @@ when given an argument, will show a documentation string for the expansion, as in .Ql ?unc ; documentation strings are however \*(OPal.) -. .Pp For commands which take message lists as arguments, the next message forward that satisfies the command's requirements will be used shall no @@ -2161,7 +2470,6 @@ and if there are no good messages at all, .Dq no applicable messages and aborts the command. The arguments to commands can be quoted, using the following methods: -. .Pp .Bl -bullet -compact -offset indent .It @@ -2180,24 +2488,19 @@ used nonetheless by escaping it with a backslash .Ql \e , as in .Ql """y\e""ou""" . -. .It An argument that is not enclosed in quotes, as above, can usually still contain space characters if those spaces are backslash-escaped. -. .It A backslash outside of the enclosing quotes is discarded and the following character is treated literally as part of the argument. -. .It An unquoted backslash at the end of a command line is discarded and the next line continues the command. .El -. .Pp Filenames, where expected, are subsequently subjected to the following transformations, in sequence: -. .Pp .Bl -bullet -compact -offset indent .It @@ -2210,10 +2513,8 @@ variable followed by a slash. If the .Va folder variable is unset or is set to null, the filename will be unchanged. -. .It Shell word expansions are applied to the filename. -.\" TODO shell word expansion shell expand fexpand FEXP_NSHELL .Sy Compatibility note: on the long run support for complete shell word expansion will be replaced by an internally implemented restricted expansion mechanism in @@ -2248,10 +2549,8 @@ backslash quoting is performed automatically as necessary, e.g., a file will be displayed as .Ql diet\e\e is \e\ecurd.txt . .El -. .Pp The following commands are available: -. .Bl -tag -width ".Ic _ccount" .Mx .It Ic # @@ -2262,7 +2561,6 @@ arguments, not a .Dq comment-start indicating special character, which means that, e.g., trailing comments on a line are not possible. -. .Mx .It Ic ~ Interprets the remainder of the word as a macro name and passes it @@ -2272,18 +2570,15 @@ command; e.g., .Ql ~ Ns Ar mymacro is a shorter synonym for .Ql call Ar mymacro . -. .Mx .It Ic - Print out the preceding message. If given a numeric argument n, goes to the n'th previous message and prints it. -. .Mx .It Ic = Show the current message number (the .Dq dot ) . -. .Mx .It Ic \&? Prints a brief summary of commands. @@ -2297,7 +2592,6 @@ try, e.g., and .Ql ?help and see how the display changes. -. .Mx .It Ic \&! Executes the @@ -2305,13 +2599,11 @@ Executes the (see .Xr sh 1 Ns ) command which follows. -. .Mx .It Ic \&| A synonym for the .Ic pipe command. -. .Mx .It Ic account (ac) Creates, selects or lists (an) account(s). @@ -2347,7 +2639,6 @@ can be used to localize account settings \(en different to normal macros the settings will be reverted once the account is switched off. Accounts can be deleted via .Ic unaccount . -. .Mx .It Ic alias (a) With no arguments, prints out all currently-defined aliases. @@ -2356,7 +2647,6 @@ With more than one argument, creates a new alias or appends to an existing one. .Ic unalias can be used to delete aliases. -. .Mx .It Ic alternates (alt) Manage a list of alternate addresses / names of the active user, @@ -2366,25 +2656,21 @@ messages (and the variable is not set). If arguments are given the set of alternate names is replaced by them, without arguments the current set is displayed. -. .Mx .It Ic answered Takes a message list and marks each message as having been answered. This mark has no technical meaning in the mail system; it just causes messages to be marked in the header summary, and makes them specially addressable. -. .Mx .It Ic cache \*(OP Only applicable to cached IMAP mailboxes; takes a message list and reads the specified messages into the IMAP cache. -. .Mx .It Ic call Calls a macro that has been created via .Ic define . -. .Mx .It Ic cd (ch) Change the working directory to @@ -2392,7 +2678,6 @@ Calls a macro that has been created via or the given argument. Synonym for .Ic chdir . -. .Mx .It Ic certsave \*(OP Only applicable to S/MIME signed messages. @@ -2403,7 +2688,6 @@ The certificates can later be used to send encrypted messages to the respective message senders by setting .Va smime-encrypt-USER@HOST variables. -. .Mx .It Ic chdir (ch) Change the working directory to @@ -2411,14 +2695,12 @@ variables. or the given argument. Synonym for .Ic cd . -. .Mx .It Ic collapse Only applicable to threaded mode. Takes a message list and makes all replies to these messages invisible in header summaries, unless they are in state .Ql new . -. .Mx .It Ic connect \*(OP If operating in disconnected mode on an IMAP mailbox, @@ -2427,36 +2709,30 @@ the mailbox status. See the description of the .Va disconnected variable for more information. -. .Mx .It Ic Copy (C) Copy messages to files whose names are derived from the author of the respective message and don't mark them as being saved; otherwise identical to .Ic Save . -. .Mx .It Ic copy (c) Copy messages to the named file and don't mark them as being saved; otherwise identical to .Ic save . -. .Mx .It Ic cwd Print the current working directory. -. .Mx .It Ic Decrypt \*(OP For unencrypted messages this command is identical to .Ic Copy ; Encrypted messages are first decrypted, if possible, and then copied. -. .Mx .It Ic decrypt \*(OP For unencrypted messages this command is identical to .Ic copy ; Encrypted messages are first decrypted, if possible, and then copied. -. .Mx .It Ic define Without arguments the current list of macros, including their content, @@ -2487,7 +2763,6 @@ depends on how (i.e., normal macro, folder hook, account switch) the macro is invoked. Macros can be deleted via .Ic undefine . -. .Mx .It Ic delete (d) Marks the given message list as @@ -2495,14 +2770,12 @@ Macros can be deleted via Deleted messages will neither be saved in .Ev MBOX nor will they be available for most other commands. -. .Mx .It Ic discard (di) Identical to .Ic ignore . Also see .Ic retain . -. .Mx .It Ic disconnect \*(OP (disco) If operating in online mode on an IMAP mailbox, @@ -2514,21 +2787,18 @@ A list of messages may optionally be given as argument; the respective messages are then read into the cache before the connection is closed. Thus `disco *' makes the entire mailbox available for disconnected use. -. .Mx .Mx .It Ic dp , dt Deletes the current message and prints the next message. If there is no next message, \*(UA says .Dq at EOF . -. .Mx .It Ic draft Takes a message list and marks each given message as a draft. This mark has no technical meaning in the mail system; it just causes messages to be marked in the header summary, and makes them specially addressable. -. .Mx .It Ic echo (ec) Echoes its arguments, @@ -2549,7 +2819,6 @@ and are interpreted just as they are by .Xr printf 1 (proper quoting provided). -. .Mx .It Ic edit (e) Point the text editor (as defined in @@ -2558,7 +2827,6 @@ at each message from the given list in turn. Modified contents are discarded unless the .Va writebackedited variable is set. -. .Mx .It Ic elif Part of the @@ -2567,7 +2835,6 @@ conditional \(em if the condition of a preceeding .Ic if was false, check the following condition and execute the following block if it evaluates true. -. .Mx .It Ic else (el) Part of the @@ -2579,13 +2846,11 @@ and commands was true, the .Ic else block is executed. -. .Mx .It Ic endif (en) Marks the end of an .Ic if Ns / Ns Ic elif Ns / Ns Ic else Ns / Ns Ic endif conditional execution block. -. .Mx .It Ic errors \*(OP Since \*(UA uses the console as a user interface it can happen @@ -2602,24 +2867,20 @@ can be used to manage this message queue: if given or no argument the queue will be displayed and cleared, .Ar clear will only clear all messages from the queue. -. .Mx .It Ic exit (ex or x) Exit from \*(UA without changing the active mailbox and skip any saving of messages in .Ev MBOX as well as a possibly tracked command line editor history file. -. .Mx .It Ic features Print the list of features that have been compiled into \*(UA. -. .Mx .It Ic File (Fi) Like .Ic file , but open the mailbox readonly. -. .Mx .It Ic file (fi) The file command switches to a new mailbox. @@ -2753,7 +3014,6 @@ if it is omitted, the default `INBOX' is used. If \*(UA is connected to an IMAP server, a name of the form `@mailbox' refers to the `mailbox' on that server, but otherwise a `@' prefix has no special meaning. -. .Mx .It Ic flag Takes a message list and marks the messages as @@ -2762,12 +3022,10 @@ ged for urgent/special attention. This mark has no technical meaning in the mail system; it just causes messages to be highlighted in the header summary, and makes them specially addressable. -. .Mx .It Ic folder (fold) The same as .Ic file . -. .Mx .It Ic folders With no arguments, list the names of the folders in the folder directory. @@ -2777,7 +3035,6 @@ e.\|g. the command `folders @' lists the folders on the base level of the current IMAP server. See also the variable .Va imap-list-depth . -. .Mx .It Ic Followup (F) Similar to @@ -2785,7 +3042,6 @@ See also the variable but saves the message in a file named after the local part of the first recipient's address (instead of in .Va record Ns ). -. .Mx .It Ic followup (fo) Similar to @@ -2793,7 +3049,6 @@ recipient's address (instead of in but saves the message in a file named after the local part of the first recipient's address (instead of in .Va record Ns ). -. .Mx .It Ic followupall Similar to @@ -2801,7 +3056,6 @@ Similar to but responds to all recipients regardless of the .Va flipr variable. -. .Mx .It Ic followupsender Similar to @@ -2809,22 +3063,18 @@ Similar to but responds to the sender only regardless of the .Va flipr variable. -. .Mx .It Ic Forward Alias for .Ic Fwd . -. .Mx .It Ic forward Alias for .Ic fwd . -. .Mx .It Ic from (f) Takes a list of messages and prints their message headers (which qualifies this command as \*(UAs search facility). -. .Mx .It Ic Fwd Similar to @@ -2832,7 +3082,6 @@ Similar to but saves the message in a file named after the local part of the recipient's address (instead of in .Va record Ns ). -. .Mx .It Ic fwd Takes a message and the address of a recipient @@ -2852,7 +3101,6 @@ option is set. Unless the option .Va fullnames is set recipient addresses will be stripped from comments, names etc. -. .Mx .It Ic fwdignore Specifies which header fields are to be ignored with the command @@ -2860,7 +3108,6 @@ Specifies which header fields are to be ignored with the command This command has no effect when the .Va forward-as-attachment option is set. -. .Mx .It Ic fwdretain Specifies which header fields are to be retained with the command @@ -2871,7 +3118,6 @@ overrides This command has no effect when the .Va forward-as-attachment option is set. -. .Mx .It Ic ghost Define or list command aliases, so-called ghosts. @@ -2897,7 +3143,6 @@ hello, ? xx world hello, world .Ed -. .Mx .It Ic headers (h) Show the current group of headers, the size of which depends on @@ -2907,12 +3152,10 @@ If a message-specification is given the group of headers containing the first message therein is shown and the message at the top of the screen becomes the new .Dq dot . -. .Mx .It Ic help (hel) A synonym for .Ic \&? . -. .Mx .It Ic history \*(OP Either @@ -2928,7 +3171,6 @@ press to accept it, and the history entry will become the new history top. The default mode if no arguments are given is .Ar show . -. .Mx .It Ic hold (ho, also @@ -2944,8 +3186,6 @@ command. command issued after .Ic hold will display the following message, not the current one. -. -. .Mx .It Ic if (i) Part of the nestable @@ -2967,7 +3207,6 @@ The syntax of the nestable .Ic if conditional execution construct requires that each condition and syntax element is surrounded by whitespace. -. .Bd -literal -offset indent if receive commands ... @@ -2975,7 +3214,6 @@ else commands ... endif .Ed -. .Pp Another condition can be any boolean value (see the section .Sx "Value options" @@ -3013,7 +3251,6 @@ Except for the substring checks the comparison will instead be performed arithmetically if both, the user given value as well as the variable content, can be parsed as numbers (integers). An unset variable is treated as the empty string. -. .Pp When the \*(OPal regular expression support is available, the additional test cases @@ -3026,7 +3263,6 @@ case-insensitively and according to the active .Ev LC_CTYPE locale, meaning that strings in the locale encoding should be matched correctly. -. .Pp Conditions can be joined via AND-OR lists (where the AND operator is .Ql && @@ -3040,13 +3276,11 @@ them in pairs of brackets .Ql [\ \&.\&.\&.\ ] , which may be interlocked within each other, and also be joined via AND-OR lists. -. .Pp The results of individual conditions and entire groups may be modified via unary operators: the unary operator .Ql \&! will reverse the result. -. .Bd -literal -offset indent if $debug echo *debug* is set @@ -3076,8 +3310,6 @@ if $version-major >= 15 endif endif .Ed -. -. .Mx .It Ic ignore Without arguments the list of ignored header fields is printed, @@ -3092,7 +3324,6 @@ Also see .Ic discard and .Ic retain . -. .Mx .It Ic imap \*(OP Sends command strings directly to the current IMAP server. @@ -3116,16 +3347,13 @@ inner parentheses separate them. For each namespace a prefix and a hierarchy separator is listed. Not all IMAP servers support this command. .El -. .Mx .It Ic inc Same as .Ic newmail . -. .Mx .It Ic list Prints the names of all available commands, alphabetically sorted. -. .Mx .It Ic localopts This command can be used to localize changes to variables, meaning that @@ -3162,7 +3390,6 @@ which explicitly resets localization, then any value changes within .Ql macro2 will still be reverted by .Ql macro1 ! -. .Mx .It Ic Lreply Reply to messages that come in via known @@ -3180,7 +3407,6 @@ For example it will also implicitly generate a .Ql Mail-Followup-To: header if that seems useful, regardless of the setting of the variable .Va followup-to . -. .Mx .It Ic Mail Similar to @@ -3188,13 +3414,11 @@ Similar to but saves the message in a file named after the local part of the first recipient's address (instead of in .Va record Ns ). -. .Mx .It Ic mail (m) Takes a (list of) recipient address(es) as (an) argument(s), or asks on standard input if none were given; then collects the remaining mail content and sends it out. -. .Mx .It Ic mbox (mb) The given message list is to be sent to @@ -3204,7 +3428,6 @@ when \*(UA is quit; this is the default action unless the option is set. \*(ID This command can only be used in a system mailbox (see .Ic file ) . -. .Mx .It Ic mimetype Without any arguments the content of the MIME type cache will displayed. @@ -3218,7 +3441,6 @@ Refer to the section on for more on MIME type specifications and this topic in general. MIME type unregistration and cache resets can be triggered with .Ic unmimetype . -. .Mx .It Ic mlist Without arguments the list of all currently defined mailing lists @@ -3232,7 +3454,6 @@ If the \*(OPal regular expression support is available then mailing lists may also be specified as regular expressions (see .Xr re_format 7 for more on those). -. .Mx .It Ic mlsubscribe Without arguments the list of all currently defined mailing lists which @@ -3244,7 +3465,6 @@ Subscription attributes may be removed via the command .Ic unmlsubscribe . Also see .Va followup-to . -. .Mx .It Ic Move Similar to @@ -3252,14 +3472,12 @@ Similar to but moves the messages to a file named after the local part of the sender address of the first message (instead of in .Va record Ns ). -. .Mx .It Ic move Acts like .Ic copy but marks the messages for deletion if they were transferred successfully. -. .Mx .It Ic More Like @@ -3267,7 +3485,6 @@ Like but also prints ignored header fields and all MIME parts. Identical to .Ic Page . -. .Mx .It Ic more Invokes the @@ -3276,7 +3493,6 @@ on the given messages, even in non-interactive mode and as long as the standard output is a terminal. Identical to .Ic page . -. .Mx .It Ic netrc \*(OP Either @@ -3296,7 +3512,6 @@ and the section the section .Sx "The .netrc file" documents the file format in detail. -. .Mx .It Ic newmail Checks for new mail in the current folder without committing any changes @@ -3306,7 +3521,6 @@ If the .Va header variable is set, the headers of each new message are also printed. -. .Mx .It Ic next (n) (like @@ -3315,23 +3529,19 @@ or .Dq ENTER ) Goes to the next message in sequence and types it. With an argument list, types the next matching message. -. .Mx .It Ic New Same as .Ic Unread . -. .Mx .It Ic new Same as .Ic unread . -. .Mx .It Ic noop If the current folder is accessed via a network connection, a .Dq NOOP command is sent, otherwise no operation is performed. -. .Mx .It Ic Page Like @@ -3339,7 +3549,6 @@ Like but also prints ignored header fields and all MIME parts. Identical to .Ic More . -. .Mx .It Ic page Invokes the @@ -3348,7 +3557,6 @@ on the given messages, even in non-interactive mode and as long as the standard output is a terminal. Identical to .Ic more . -. .Mx .It Ic Pipe Like @@ -3356,7 +3564,6 @@ Like but also pipes ignored header fields and all parts of MIME .Ql multipart/alternative messages. -. .Mx .It Ic pipe (pi) Takes a message list and a shell command @@ -3369,12 +3576,10 @@ If the .Va page variable is set, every message is followed by a formfeed character. -. .Mx .It Ic preserve (pre) A synonym for .Ic hold . -. .Mx .It Ic Print (P) Like @@ -3387,7 +3592,6 @@ See also .Ic ignore and .Ic retain . -. .Mx .It Ic print (p) Takes a message list and types out each message on the user's @@ -3399,7 +3603,6 @@ or are shown, the other are hidden except for their headers. Messages are decrypted and converted to the terminal character set if necessary. -. .Mx .It Ic quit (q) Terminates the session, saving all undeleted, unsaved messages in @@ -3421,22 +3624,18 @@ then the edit file is rewritten. A return to the shell is effected, unless the rewrite of edit file fails, in which case the user can escape with the exit command. -. .Mx .It Ic redirect Same as .Ic resend . -. .Mx .It Ic Redirect Same as .Ic Resend . -. .Mx .It Ic remove Removes the named folders. The user is asked for confirmation in interactive mode. -. .Mx .It Ic rename Takes the name of an existing folder @@ -3444,7 +3643,6 @@ and the name for the new folder and renames the first to the second one. Both folders must be of the same type and must be located on the current server for IMAP. -. .Mx .It Ic Reply (R) Reply to originator. @@ -3455,7 +3653,6 @@ will exchange this command with Unless the option .Va fullnames is set the recipient address will be stripped from comments, names etc. -. .Mx .It Ic reply (r) Take a message and group-responds to it by addressing the sender @@ -3479,21 +3676,18 @@ is set the commands and .Ic reply are exchanged. -. .Mx .It Ic replyall Similar to .Ic reply , but initiates a group-reply regardless of the value of .Va flipr . -. .Mx .It Ic replysender Similar to .Ic Reply , but responds to the sender only regardless of the value of .Va flipr . -. .Mx .It Ic Resend Like @@ -3501,34 +3695,28 @@ Like but does not add any header lines. This is not a way to hide the sender's identity, but useful for sending a message again to the same recipients. -. .Mx .It Ic resend Takes a list of messages and a user name and sends each message to the named user. .Ql Resent-From: and related header fields are prepended to the new copy of the message. -. .Mx .It Ic Respond Same as .Ic Reply . -. .Mx .It Ic respond Same as .Ic reply . -. .Mx .It Ic respondall Same as .Ic replyall . -. .Mx .It Ic respondsender Same as .Ic replysender . -. .Mx .It Ic retain (ret) Without arguments the list of retained header fields is printed, @@ -3545,7 +3733,6 @@ and .Ic ignore ; .Ic retain takes precedence over the mentioned. -. .Mx .It Ic Save (S) Similar to @@ -3554,7 +3741,6 @@ but saves the messages in a file named after the local part of the sender of the first message instead of (in .Va record and) taking a filename argument. -. .Mx .It Ic save (s) Takes a message list and a filename and appends each message in turn @@ -3568,12 +3754,10 @@ If editing a system mailbox the messages are marked for deletion. Compressed files and IMAP mailboxes are handled as described for the .Fl f command line option above. -. .Mx .It Ic savediscard Same as .Ic saveignore . -. .Mx .It Ic saveignore Is to @@ -3594,7 +3778,6 @@ as MIME content fields do. If saving messages on an IMAP account ignoring fields makes it impossible to copy the data directly on the server, thus operation usually becomes much slower. -. .Mx .It Ic saveretain Is to @@ -3615,11 +3798,9 @@ overrides .Ic saveignore . The use of this command is strongly discouraged since it may strip header fields that are needed to decode the message correctly. -. .Mx .It Ic seen Takes a message list and marks all messages as having been read. -. .Mx .It Ic set (se) Without arguments this command prints all options and, for @@ -3658,7 +3839,6 @@ the effect is the same as invoking the .Ic unset command with the remaining part of the variable .Pf ( Ql unset save ) . -. .Mx .It Ic setenv Identical to @@ -3671,11 +3851,9 @@ in this case). This operation is a no-op unless all resource files have been loaded. Also see .Ic unsetenv . -. .Mx .It Ic shell (sh) Invokes an interactive version of the shell. -. .Mx .It Ic shortcut Without arguments the list of all currently defined shortcuts is @@ -3689,19 +3867,16 @@ The expansion strings should be in the syntax that has been described for the .Ic file command. -. .Mx .It Ic show Like .Ic print , but performs neither MIME decoding nor decryption, so that the raw message text is shown. -. .Mx .It Ic size (si) Print the size in characters of each message of the given message-list. -. .Mx .It Ic sort Create a sorted representation of the current folder, @@ -3750,11 +3925,9 @@ variable is set, the recipient's real name (if any) is used. .Pp If no argument is given, the current sorting criterion is printed. -. .Mx .It Ic source (so) The source command reads commands from a file. -. .Mx .It Ic source_if The difference to @@ -3763,13 +3936,11 @@ is that this command will not generate an error if the given file argument cannot be opened successfully. This can matter in, e.g., resource files, since loading of those is stopped when an error is encountered. -. .Mx .It Ic spamclear \*(OP Takes a list of messages and clears their .Ql is-spam flag. -. .Mx .It Ic spamforget \*(OP Takes a list of messages and causes the @@ -3782,7 +3953,6 @@ forgotten to be .Dq ham or .Dq spam . -. .Mx .It Ic spamham \*(OP Takes a list of messages and informs the Bayesian filter of the @@ -3792,7 +3962,6 @@ that they are This also clears the .Ql is-spam flag of the messages in question. -. .Mx .It Ic spamrate \*(OP Takes a list of messages and rates them using the configured @@ -3804,13 +3973,11 @@ will be forgotten once the mailbox is left. Refer to the manual section .Sx "Handling spam" for the complete picture of spam handling in \*(UA. -. .Mx .It Ic spamset \*(OP Takes a list of messages and sets their .Ql is-spam flag. -. .Mx .It Ic spamspam \*(OP Takes a list of messages and informs the Bayesian filter of the @@ -3820,7 +3987,6 @@ that they are This also sets the .Ql is-spam flag of the messages in question. -. .Mx .It Ic thread \*(OB The same as @@ -3839,14 +4005,12 @@ If the .Va header variable is set, a header summary in threaded order is also printed. -. .Mx .It Ic top (to) Takes a message list and prints the top few lines of each. The number of lines printed is controlled by the variable .Va toplines and defaults to five. -. .Mx .It Ic touch (tou) Takes a message list and marks the messages for saving in @@ -3855,18 +4019,15 @@ and defaults to five. as a following .Ic next command will display the following message instead of the current one. -. .Mx .It Ic Type (T) Identical to the .Ic Print command. -. .Mx .It Ic type (t) A synonym for .Ic print . -. .Mx .It Ic unaccount Delete all given accounts. @@ -3874,7 +4035,6 @@ An error message is printed if a given account is not defined. The special name .Ql * will discard all existing accounts. -. .Mx .It Ic unalias (una) Takes a list of names defined by alias commands @@ -3882,11 +4042,9 @@ and discards the remembered groups of users. The special name .Ql * will discard all existing aliases. -. .Mx .It Ic unanswered Takes a message list and marks each message as not having been answered. -. .Mx .It Ic uncollapse Only applicable to threaded mode. @@ -3896,7 +4054,6 @@ When a message becomes the current message, it is automatically made visible. Also when a message with collapsed replies is printed, all of these are automatically uncollapsed. -. .Mx .It Ic undefine Undefine all given macros. @@ -3904,22 +4061,18 @@ An error message is printed if a given macro is not defined. The special name .Ql * will discard all existing macros. -. .Mx .It Ic undelete (u) Takes a message list and marks each message as not being deleted. -. .Mx .It Ic undraft Takes a message list and .Pf un Ic draft Ns s each message. -. .Mx .It Ic unflag Takes a message list and marks each message as not being .Ic flag Ns ged . -. .Mx .It Ic unfwdignore Removes the header field names from the list of ignored fields for the @@ -3928,7 +4081,6 @@ command. The special name .Ql * will remove all fields. -. .Mx .It Ic unfwdretain Removes the header field names from the list of retained fields for the @@ -3937,7 +4089,6 @@ command. The special name .Ql * will remove all fields. -. .Mx .It Ic unghost Remove all the given command @@ -3945,14 +4096,12 @@ Remove all the given command The special name .Ql * will remove all ghosts. -. .Mx .It Ic unignore Removes the header field names from the list of ignored fields. The special name .Ql * will remove all fields. -. .Mx .It Ic unmimetype Delete all given MIME types, e.g., @@ -3965,7 +4114,6 @@ will discard all existing MIME types, just as will .Ql reset , but which also reenables cache initialization via .Va mimetypes-load-control . -. .Mx .It Ic unmlist Forget about all the given mailing lists. @@ -3974,7 +4122,6 @@ The special name will remove all lists. Also see .Ic mlist . -. .Mx .It Ic unmlsubscribe Remove the subscription attribute from all given mailing lists. @@ -3983,23 +4130,19 @@ The special name will clear the attribute from all lists which have it set. Also see .Ic mlsubscribe . -. .Mx .It Ic Unread Same as .Ic unread . -. .Mx .It Ic unread Takes a message list and marks each message as not having been read. -. .Mx .It Ic unretain Removes the header field names from the list of retained fields. The special name .Ql * will remove all fields. -. .Mx .It Ic unsaveignore Removes the header field names from the list of ignored fields for @@ -4007,7 +4150,6 @@ saving. The special name .Ql * will remove all fields. -. .Mx .It Ic unsaveretain Removes the header field names from the list of retained fields for @@ -4015,13 +4157,11 @@ saving. The special name .Ql * will remove all fields. -. .Mx .It Ic unset (uns) Takes a list of option names and discards their remembered values; the inverse of .Ic set . -. .Mx .It Ic unsetenv Identical to @@ -4034,14 +4174,12 @@ report error if that is not available (but still act like This operation is a no-op unless all resource files have been loaded. Also see .Ic setenv . -. .Mx .It Ic unshortcut Deletes the shortcut names given as arguments. The special name .Ql * will remove all shortcuts. -. .Mx .It Ic unsort Disable sorted or threaded mode @@ -4055,27 +4193,22 @@ if the .Va header variable is set, print a header summary. -. .Mx .It Ic unthread \*(OB Same as .Ic unsort . -. .Mx .It Ic urldecode Decode the given URL-encoded string arguments and show the results. -. .Mx .It Ic urlencode URL-encode the given arguments and show the results. -. .Mx .It Ic varedit Edit the values of or create the given variable(s) in the .Ev EDITOR . Binary variables cannot be edited. -. .Mx .It Ic varshow Show informations about all the given options. @@ -4098,7 +4231,6 @@ variables, which are expected to be able to store values, may exist. "foo": (assembled) set=1 (ENVIRON=0) value "bar": (assembled) set=0 (ENVIRON=0) value .Ed -. .Mx .It Ic verify \*(OP Takes a message list and verifies each message. @@ -4109,14 +4241,12 @@ certificate, if the message sender's email address matches one of those contained within the certificate, and if the message content has been altered. -. .Mx .It Ic visual (v) Takes a message list and invokes the display editor on each message. Modified contents are discarded unless the .Va writebackedited variable is set. -. .Mx .It Ic write (w) For conventional messages the body without all headers is written. @@ -4143,12 +4273,10 @@ For attachments, the contents of the destination file are overwritten if the file previously existed. No special handling of compressed files is performed. -. .Mx .It Ic xit (x) A synonym for .Ic exit . -. .Mx .It Ic z \*(UA presents message headers in windowfuls as described under the @@ -4166,7 +4294,6 @@ A number without a prefix specifies an absolute window number, and a .Ql $ lets \*(UA scroll to the last window of messages. -. .Mx .It Ic Z Similar to @@ -4177,12 +4304,7 @@ or .Ic flag Ns ged message. .El -.\" }}} -. -. -.\" .Sh TILDE ESCAPES {{{ .Sh "TILDE ESCAPES" -. Here is a summary of the tilde escapes, which are used to perform special functions when composing messages. Tilde escapes are only recognized at the beginning of lines. @@ -4191,7 +4313,6 @@ The name is somewhat of a misnomer since the actual escape character can be changed by adjusting the option .Va escape . -. .Bl -tag -width ".Ic __ filename" .Mx .It Ic ~~ Ar string @@ -4200,37 +4321,30 @@ Insert the string of text in the message prefaced by a single (If the escape character has been changed, that character must be doubled in order to send it at the beginning of a line.) -. .Mx .It Ic ~! Ar command Execute the indicated shell .Ar command , then return to the message. -. .Mx .It Ic ~. Same effect as typing the end-of-file character. -. .Mx .It Ic ~: Ar \*(UA-command Ns \0or Ic ~_ Ar \*(UA-command Execute the given \*(UA command. Not all commands, however, are allowed. -. .Mx .It Ic ~? Write a summary of command escapes. -. .Mx .It Ic ~< Ar filename Identical to .Ic ~r . -. .Mx .It Ic ~&2 XY-LOAD; gzip -cd' \e file-hook-save-xy='echo >&2 XY-SAVE; gzip -c' \e record=+null-sent.xy .Ed -. .Mx .It Va folder The name of the directory to use for storing folders of messages. @@ -5915,7 +5864,6 @@ See the .Ic imap namespace command for a method to detect the appropriate prefix and delimiter. -. .Mx .It Va folder-hook When a folder is opened and this variable is set, @@ -5927,7 +5875,6 @@ If .Ic localopts are activated in a folder hook, then the covered settings will be reverted once the folder is left again. -. .Mx .It Va folder-hook-FOLDER Overrides @@ -5950,7 +5897,6 @@ will be tried as .Ql folder-hook-/home/usr1/mail/sent first, but then followed by .Ql folder-hook-+sent . -. .Mx .It Va followup-to-honour Controls whether a @@ -5967,7 +5913,6 @@ and the commands .Ic mlist and .Ic mlsubscribe . -. .Mx .It Va from The address (or a list of addresses) to put into the @@ -5993,7 +5938,6 @@ contains more than one address, setting the .Va sender variable is required (according to the standard RFC 5322). -. .Mx .It Va fwdheading The string to print before the text of a message with the @@ -6005,7 +5949,6 @@ variable is set). Defaults to .Dq -------- Original Message -------- if unset; No heading is printed if it is set to the empty string. -. .Mx .It Va headline A format string to use for the header summary, @@ -6078,7 +6021,6 @@ Also see .Va attrlist and .Va headline-bidi . -. .Mx .It Va headline-bidi Bidirectional text requires special treatment when displaying headers, @@ -6121,7 +6063,6 @@ and .Ql 3 select Unicode 1.1 support (U+200E, LEFT-TO-RIGHT MARK); the latter again reserves room for two spaces in addition. -. .Mx .It Va hostname Use this string as hostname when expanding local addresses instead of @@ -6148,7 +6089,6 @@ and/or .Va from , .Va sender etc. first. -. .Mx Va imap-auth .It Va imap-auth-USER@HOST , imap-auth \*(OP Sets the IMAP authentication method. @@ -6157,7 +6097,6 @@ Valid values are `login' for the usual password-based authentication `cram-md5', which is a password-based authentication that does not send the password over the network in clear text, and `gssapi' for GSS-API based authentication. -. .Mx .It Va imap-cache \*(OP Enables caching of IMAP mailboxes. @@ -6165,7 +6104,6 @@ The value of this variable must point to a directory that is either existent or can be created by \*(UA. All contents of the cache can be deleted by \*(UA at any time; it is not safe to make assumptions about them. -. .Mx Va imap-keepalive .It Va imap-keepalive-USER@HOST , imap-keepalive-HOST , imap-keepalive \*(OP IMAP servers may close the connection after a period of @@ -6174,7 +6112,6 @@ but practical experience may vary. Setting this variable to a numeric `value' greater than 0 causes a `NOOP' command to be sent each `value' seconds if no other operation is performed. -. .Mx .It Va imap-list-depth \*(OP When retrieving the list of folders on an IMAP server, the @@ -6187,7 +6124,6 @@ If the folder separator on the current IMAP server is a slash `/', this variable has no effect and the .Ic folders command does not descend to subfolders. -. .Mx .It Va indentprefix String used by the @@ -6202,7 +6138,6 @@ in place of the normal tabulator character .Ql ^I , which is the default. Be sure to quote the value if it contains spaces or tabs. -. .Mx .It Va line-editor-cursor-right \*(OP If the builtin command line editor is used, actions which are @@ -6224,7 +6159,6 @@ sequences, e.g., .Ql \e033 for (US-ASCII) .Dq Escape . -. .Mx .It Va MAIL Is used as the user's mailbox, if set. @@ -6235,7 +6169,6 @@ for the command and the .Va folder option. -. .Mx .It Va mime-counter-evidence Normally the @@ -6272,13 +6205,7 @@ overridden content-type by showing a plus-sign If bit three is set (4) then the counter-evidence is always produced and a positive result will be used as the MIME type, even forcefully overriding the parts given MIME type. -.\".It -.\"If bit four is set (8) then as a last resort the content of -.\".Ql application/octet-stream -.\"parts will be inspected, so that data that looks like (english) plain -.\"text can be treated as such. .El -. .Mx .It Va mimetypes-load-control This option can be used to control which of the @@ -6307,7 +6234,6 @@ letters plus pairs; the given filenames will be expanded and loaded, and their content may use the extended syntax that is described in the section .Sx "The mime.types files" . -. .Mx .It Va NAIL_EXTRA_RC The name of an optional startup file to be read after @@ -6323,7 +6249,6 @@ invocations. Use this file for commands that are not understood by other POSIX .Xr mailx 1 implementations. -. .Mx .It Va NAIL_HEAD A string to put at the beginning of each new message. @@ -6332,12 +6257,10 @@ The escape sequences tabulator and newline .Ql \en are understood. -. .Mx .It Va NAIL_HISTFILE \*(OP If a command line editor is available then this can be set to name the (expandable) path of the location of a permanent history file. -. .Mx .It Va NAIL_HISTSIZE \*(OP If a command line editor is available this value restricts the @@ -6352,7 +6275,6 @@ Dependent on the available command line editor this will also define the number of history entries in memory; it is also editor-specific whether runtime updates of this value will be honoured. -. .Mx .It Va NAIL_TAIL A string to put at the end of each new message. @@ -6361,13 +6283,11 @@ The escape sequences tabulator and newline .Ql \en are understood. -. .Mx .It Va newfolders If this variable has the value .Ql maildir , newly created local folders will be in Maildir format. -. .Mx .It Va newmail Checks for new mail in the current folder each time the prompt is @@ -6393,13 +6313,11 @@ If this variable is set to the special value .Ql nopoll then a Maildir folder will not be rescanned completely, but only timestamp changes are detected. -. .Mx .It Va ORGANIZATION The value to put into the .Ql Organization: field of the message header. -. .Mx Va password .It Va password-USER@HOST , password-HOST , password \*(IN Variable chain that sets a password, which is used in case none has @@ -6408,7 +6326,6 @@ as a last resort \*(UA will ask for a password on the user's terminal if the authentication method requires a password. Specifying passwords in a startup file is generally a security risk; the file should be readable by the invoking user only. -. .It Va password-USER@HOST \*(OU (see the chain above for \*(IN) Set the password for @@ -6419,7 +6336,6 @@ If no such variable is defined for a host, the user will be asked for a password on standard input. Specifying passwords in a startup file is generally a security risk; the file should be readable by the invoking user only. -. .Mx .It Va pipe-TYPE/SUBTYPE When a MIME message part of type @@ -6480,7 +6396,6 @@ MIME content-type; not only then identical to .Ev \&\&NAIL_CONTENT otherwise. .El -. .Mx .It Va pipe-EXTENSION This is identical to @@ -6491,7 +6406,6 @@ except that names a file extension, e.g., .Ql xhtml . Handlers registered using this method take precedence. -. .Mx Va pop3-keepalive .It Va pop3-keepalive-USER@HOST , pop3-keepalive-HOST , pop3-keepalive \*(OP POP3 servers close the connection after a period of inactivity; @@ -6502,7 +6416,6 @@ Setting this variable to a numeric value greater than causes a .Ql NOOP command to be sent each value seconds if no other operation is performed. -. .Mx .It Va prompt The string printed when a command is accepted. @@ -6563,7 +6476,6 @@ escape character for usage with the mechanism: \*(UA configures the control character .Ql \e01 for this. -. .Mx .It Va quote If set, \*(UA starts a replying message with the original message @@ -6597,7 +6509,6 @@ act like an automatic .Pf ` Ic ~M Ns ' command; also see .Va quote-as-attachment . -. .Mx .It Va quote-fold \*(OP Can be set in addition to @@ -6615,7 +6526,6 @@ The goal can't be smaller than the length of .Va indentprefix plus some additional pad. Necessary adjustments take place silently. -. .Mx .It Va record If defined, gives the pathname of the folder used to record all outgoing @@ -6624,7 +6534,6 @@ If not defined, then outgoing mail is not saved. When saving to this folder fails the message is not sent, but instead saved to .Ev DEAD . -. .Mx .It Va reply_strings Can be set to a comma-separated list of (case-insensitive according to @@ -6635,7 +6544,6 @@ reply message indicators \(en builtin are .Ql Re: , which is mandated by RFC 5322, as well as the german .Ql Aw: . -. .Mx .It Va replyto A list of addresses to put into the @@ -6644,7 +6552,6 @@ field of the message header. Members of this list are handled as if they were in the .Ic alternates list. -. .Mx .It Va reply-to-honour Controls whether a @@ -6655,7 +6562,6 @@ or .Ic Lreply . This is a quadoption; if set without a value it defaults to .Dq yes . -. .Mx .It Va screen When \*(UA initially prints the message headers it determines the number @@ -6666,7 +6572,6 @@ headers are printed. This number is also used for scrolling with the .Ic z command. -. .Mx .It Va sendcharsets \*(OP A comma-separated list of character set names that can be used in @@ -6682,7 +6587,6 @@ Also see and refer to the section .Sx "Character sets" for the complete picture of character set conversion in \*(UA. -. .Mx .It Va sender An address that is put into the @@ -6697,7 +6601,6 @@ The address is handled as if it were in the .Ic alternates list. -. .Mx .It Va sendmail To use an alternate mail transport agent (MTA), @@ -6739,7 +6642,6 @@ command line option \*(UA will also pass .Ql -f as well as .Ql -F . -. .Mx .It Va sendmail-arguments Arguments to pass through to the Mail-Transfer-Agent can be given via @@ -6748,14 +6650,12 @@ The content of this variable will be split up in a vector of arguments which will be joined onto other possible MTA options: .Pp .Dl set sendmail-arguments='-t -X \&"/tmp/my log\&"' -. .Mx .It Va sendmail-no-default-arguments \*(BY Unless this option is set \*(UA will pass some well known standard command line options to the defined .Va sendmail program, see there for more. -. .Mx .It Va sendmail-progname Many systems use a so-called @@ -6770,19 +6670,16 @@ actually executed when calling will treat its contents as that name. The default is .Ql sendmail . -. .Mx .It Va Sign A string for use with the .Ic ~A tilde escape. -. .Mx .It Va sign A string for use with the .Ic ~a tilde escape. -. .Mx .It Va signature Must correspond to the name of a readable file if set. @@ -6790,17 +6687,14 @@ The file's content is then appended to each singlepart message and to the first part of each multipart message. Be warned that there is no possibility to edit the signature for an individual message. -. .Mx .It Va smime-ca-dir \*(OP Specifies a directory with CA certificates in PEM (Privacy Enhanced Mail) format for verification of S/MIME signed messages. -. .Mx .It Va smime-ca-file \*(OP Specifies a file with CA certificates in PEM format for verification of S/MIME signed messages. -. .Mx Va smime-cipher .It Va smime-cipher-USER@HOST , smime-cipher \*(OP Specifies the cipher to use when generating S/MIME encrypted @@ -6828,17 +6722,14 @@ library that \*(UA uses. dynamic loading via, e.g., .Xr EVP_get_cipherbyname 3 (OpenSSL) if \*(UA has been compiled to support this. -. .Mx .It Va smime-crl-dir \*(OP Specifies a directory that contains files with CRLs in PEM format to use when verifying S/MIME messages. -. .Mx .It Va smime-crl-file \*(OP Specifies a file that contains a CRL in PEM format to use when verifying S/MIME messages. -. .Mx .It Va smime-encrypt-USER@HOST \*(OP If this variable is set, messages send to the given receiver are @@ -6856,7 +6747,6 @@ variable is set. It is recommended to sign encrypted messages, i.e., to also set the .Va smime-sign variable. -. .Mx Va smime-sign-cert .It Va smime-sign-cert-USER@HOST , smime-sign-cert \*(OP Points to a file in PEM format. @@ -6887,7 +6777,6 @@ a variable is set. \*(UA always uses the first address that matches, so if the same message is sent to more than one of the user's addresses using different encryption keys, decryption might fail. -. .Mx Va smime-sign-include-certs .It Va smime-sign-include-certs-USER@HOST , smime-sign-include-certs \*(OP If used, this is supposed to a consist of a comma-separated list @@ -6907,7 +6796,6 @@ refers to the variable .Va from (or, if that contains multiple addresses, .Va sender ) . -. .Mx Va smime-sign-message-digest .It Va smime-sign-message-digest-USER@HOST , smime-sign-message-digest \*(OP Specifies the message digest to use when signing S/MIME messages. @@ -6933,7 +6821,6 @@ refers to the variable .Va from (or, if that contains multiple addresses, .Va sender ) . -. .Mx .It Va smtp \*(OP Normally \*(UA invokes the program defined via @@ -6997,7 +6884,6 @@ or the variable is set. If it receives a TERM signal, it will abort and save the message to .Ev DEAD . -. .Mx Va smtp-auth .It Va smtp-auth-USER@HOST , smtp-auth-HOST , smtp-auth \*(OP Variable chain that sets the SMTP authentication method. @@ -7033,7 +6919,6 @@ is \*(IN. .Va smtp-auth-USER@HOST : may override dependend on sender address in the variable .Va from . -. .It Va smtp-auth-password \*(OP \*(OU Sets the global fallback password for SMTP authentication. If the authentication method requires a password, but neither @@ -7042,13 +6927,11 @@ nor a matching .Va smtp-auth-password-USER@HOST can be found, \*(UA will ask for a password on the user's terminal. -. .It Va smtp-auth-password-USER@HOST \*(OU Overrides .Va smtp-auth-password for specific values of sender addresses, dependent upon the variable .Va from . -. .It Va smtp-auth-user \*(OP \*(OU Sets the global fallback user name for SMTP authentication. If the authentication method requires a user name, but neither @@ -7057,13 +6940,11 @@ nor a matching .Va smtp-auth-user-USER@HOST can be found, \*(UA will ask for a user name on the user's terminal. -. .It Va smtp-auth-user-USER@HOST \*(OU Overrides .Va smtp-auth-user for specific values of sender addresses, dependent upon the variable .Va from . -. .Mx .It Va smtp-hostname \*(IN Normally \*(UA uses the variable @@ -7093,8 +6974,6 @@ a provider other than which (in is about to send the message. Setting this variable also influences the generated .Ql Message-ID: . -. -. .Mx .It Va spam-interface \*(OP In order to use any of the spam-related commands (like, e.g., @@ -7104,7 +6983,6 @@ Please refer to the manual section .Sx "Handling spam" for the complete picture of spam handling in \*(UA. All or none of the following interfaces may be available: -. .Bl -tag -width ".It Ql _ilte_" .It Ql spamc Interaction with @@ -7134,7 +7012,6 @@ Note that this interface doesn't inspect the .Ql is-spam flag of a message for the command .Ic spamforget . -. .It Ql spamd \*(UA will directly communicate with the .Xr spamassassin 1 @@ -7146,7 +7023,6 @@ stream socket as specified in .Va spamd-socket . It is possible to specify a per-user configuration via .Va spamd-user . -. .It Ql filter generic spam filter support via freely configurable hooks. This interface is ment for programs like @@ -7184,15 +7060,12 @@ available and the .Va spamfilter-rate-scanscore variable is set. .El -. -. .Mx .It Va spam-maxsize \*(OP Messages that exceed this size won't be passed through to the configured .Va spam-interface . The default is 420000 bytes. -. .Mx .It Va spamc-command \*(OP The path to the @@ -7204,7 +7077,6 @@ Note that the path is not expanded, but used .Dq as is . A fallback path will have been compiled into the \*(UA binary if the executable had been found during compilation. -. .Mx .It Va spamc-arguments \*(OP Even though \*(UA deals with most arguments for the @@ -7213,7 +7085,6 @@ executable had been found during compilation. automatically, it may at least sometimes be desirable to specifiy connection-related ones via this variable, e.g., .Ql -d server.example.com -p 783 . -. .Mx .It Va spamc-user \*(OP Specify a username for per-user configuration files for the @@ -7222,7 +7093,6 @@ connection-related ones via this variable, e.g., If this is set to the empty string then \*(UA will use the name of the current .Va user . -. .Mx .It Va spamd-socket \*(OP Specify the path of the @@ -7234,7 +7104,6 @@ listens for connections for the .Va spam-interface . Note that the path is not expanded, but used .Dq as is . -. .Mx .It Va spamd-user \*(OP Specify a username for per-user configuration files for the @@ -7243,7 +7112,6 @@ Note that the path is not expanded, but used If this is set to the empty string then \*(UA will use the name of the current .Va user . -. .Mx .Mx .Mx @@ -7257,7 +7125,6 @@ current The manual section .Sx "Handling spam" contains examples for some programs. -. .Mx .It Va spamfilter-rate-scanscore \*(OP Because of the generic nature of the @@ -7274,7 +7141,6 @@ Then the latter is used to parse the first output line of the .Va spamfilter-rate hook, and, in case the evaluation is successful, the group that has been specified via the number is interpreted as a floating point scan score. -. .Mx .It Va ssl-ca-dir \*(OP Specifies a directory with CA certificates in PEM (Pricacy @@ -7282,7 +7148,6 @@ Enhanced Mail) for verification of of SSL/TLS server certificates. See .Xr SSL_CTX_load_verify_locations 3 for more information. -. .Mx .It Va ssl-ca-file \*(OP Specifies a file with CA certificates in PEM format for @@ -7290,7 +7155,6 @@ verification of SSL/TLS server certificates. See .Xr SSL_CTX_load_verify_locations 3 for more information. -. .Mx Va ssl-cert .It Va ssl-cert-USER@HOST , ssl-cert-HOST , ssl-cert \*(OP Variable chain that sets the file name for a SSL/TLS client @@ -7300,7 +7164,6 @@ This is a direct interface to the slot of the .Xr SSL_CONF_cmd 3 function of the OpenSSL library, if available. -. .Mx Va ssl-cipher-list .It Va ssl-cipher-list-USER@HOST , ssl-cipher-list-HOST , ssl-cipher-list \*(OP Specifies a list of ciphers for SSL/TLS connections. @@ -7318,7 +7181,6 @@ ciphers), possibly cramped to what the actually used SSL/TLS library supports \(en the manual section .Sx "An example configuration" also contains a SSL/TLS use case. -. .Mx .It Va ssl-config-file \*(OP If this variable is set \*(UA will call @@ -7330,17 +7192,14 @@ configuration file to be used instead of the global OpenSSL default; note that in this case it is an error if the file cannot be loaded. The application name will always be passed as .Dq \*(ua . -. .Mx .It Va ssl-crl-file \*(OP Specifies a file that contains a CRL in PEM format to use when verifying SSL/TLS server certificates. -. .Mx .It Va ssl-crl-dir \*(OP Specifies a directory that contains files with CRLs in PEM format to use when verifying SSL/TLS server certificates. -. .Mx Va ssl-key .It Va ssl-key-USER@HOST , ssl-key-HOST , ssl-key \*(OP Variable chain that sets the file name for the private key of @@ -7352,7 +7211,6 @@ This is a direct interface to the slot of the .Xr SSL_CONF_cmd 3 function of the OpenSSL library, if available. -. .Mx Va ssl-method .It Va ssl-method-USER@HOST , ssl-method-HOST , ssl-method \*(OP @@ -7379,7 +7237,6 @@ is mapped to .Ql ALL, -SSLv2 and thus includes the SSLv3 protocol. Note that SSLv2 is no longer supported at all. -. .Mx Va ssl-protocol .It Va ssl-protocol-USER@HOST , ssl-protocol-HOST , ssl-protocol \*(OP Specify the used SSL/TLS protocol. @@ -7416,20 +7273,17 @@ Especially for older protocols explicitly securing .Va ssl-cipher-list may be worthwile, see .Sx "An example configuration" . -. .Mx .It Va ssl-rand-egd \*(OP Gives the pathname to an entropy daemon socket, see .Xr RAND_egd 3 . Not all SSL/TLS libraries support this. -. .Mx .It Va ssl-rand-file \*(OP Gives the pathname to a file with entropy data, see .Xr RAND_load_file 3 . If the file is a regular file writable by the invoking user, new data is written to it after it has been loaded. -. .Mx Va ssl-verify .It Va ssl-verify-USER@HOST , ssl-verify-HOST , ssl-verify \*(OP Variable chain that sets the action to be performed if an error @@ -7445,7 +7299,6 @@ Valid (case-insensitive) values are (do not perform validation). The default is .Ql ask . -. .Mx .It Va stealthmua If only set without an assigned value, then this option inhibits the @@ -7463,12 +7316,10 @@ If set to the value then the mentioned .Ql Message-ID: suppression doesn't occur. -. .Mx .It Va toplines If defined, gives the number of lines of a message to be printed out with the top command; normally, the first five lines are printed. -. .Mx .It Va ttycharset The character set of the terminal \*(UA operates on, @@ -7481,7 +7332,6 @@ locale environment. Refer to the section .Sx "Character sets" for the complete picture about character sets. -. .Mx Va user .It Va user-HOST , user \*(IN Variable chain that sets a global fallback user name, which is @@ -7489,7 +7339,6 @@ used in case none has been given in the protocol and account-specific URL. This variable defaults to the value of .Ev USER . -. .Mx .Mx .Mx @@ -7502,13 +7351,7 @@ the output of the command The latter three contain only digits: the major, minor and update version numbers. .El -.\" }}} -.\" }}} (Variable options) -. -. -.\" .Sh ENVIRONMENT {{{ .Sh ENVIRONMENT -. The term .Dq environment variable should be considered an indication that the following variables are @@ -7516,14 +7359,12 @@ either standardized as being vivid parts of process environments, or are commonly found in there. Unless otherwise explicitly noted they integrate into the normal variable handling, as documented above, from \*(UAs point of view. -. .Bl -tag -width ".It Ev _AILR_" .Mx .It Ev COLUMNS The user's preferred width in column positions for the terminal screen or window. Queried and used once on program startup. -. .Mx .It Ev DEAD The name of the file to use for saving aborted messages if @@ -7533,7 +7374,6 @@ is set; this defaults to in the user's .Ev HOME directory. -. .Mx .It Ev EDITOR Pathname of the text editor to use in the @@ -7542,7 +7382,6 @@ command and .Ic ~e .Sx "TILDE ESCAPES" . A default editor is used if this value is not defined. -. .Mx .It Ev HOME The user's home directory. @@ -7550,7 +7389,6 @@ This variable is only used when it resides in the process environment. Use .Ic setenv to update the value at runtime. -. .Mx .Mx .Mx @@ -7561,13 +7399,11 @@ See .Xr locale 7 and .Sx "Character sets" . -. .Mx .It Ev LINES The user's preferred number of lines on a page or the vertical screen or window size in lines. Queried and used once on program startup. -. .Mx .It Ev LISTER Pathname of the directory lister to use in the @@ -7577,7 +7413,6 @@ Default is .Xr ls 1 (path search through .Ev SHELL ) . -. .Mx .It Ev MBOX The name of the user's mbox file. @@ -7592,7 +7427,6 @@ The fallback default is in the user's .Ev HOME directory. -. .Mx .It Ev MAILRC Is used as a startup file instead of @@ -7603,7 +7437,6 @@ this variable should be set to .Pa /dev/null to avoid side-effects from reading their configuration files. This variable is only used when it resides in the process environment. -. .Mx .It Ev NAIL_NO_SYSTEM_RC If this variable is set then reading of @@ -7612,13 +7445,11 @@ at startup is inhibited, i.e., the same effect is achieved as if \*(UA had been started up with the option .Fl n . This variable is only used when it resides in the process environment. -. .Mx .It Ev NETRC \*(IN \*(OP This variable overrides the default location of the user's .Pa .netrc file. -. .Mx .It Ev PAGER Pathname of the program to use in the more command or when the @@ -7628,12 +7459,10 @@ The default paginator is .Xr more 1 (path search through .Ev SHELL ) . -. .Mx .It Ev PATH A list of directories that is searched by the shell when looking for commands (as such only recognized in the process environment). -. .Mx .It Ev SHELL The shell to use for the commands @@ -7644,15 +7473,12 @@ the .Sx "TILDE ESCAPES" and when starting subprocesses. A default shell is used if this option is not defined. -. .Mx .It Ev SYSV3 Changes the letters printed in the first column of a header summary. -. .Mx .It Ev TERM \*(OP The terminal type for which output is to be prepared. -. .Mx .It Ev TMPDIR Used as directory for temporary files instead of @@ -7662,7 +7488,6 @@ This variable is only used when it resides in the process environment. Use .Ic setenv to update the value at runtime. -. .Mx .It Ev USER Force identification as the given user, i.e., identical to the @@ -7673,7 +7498,6 @@ Use .Ic setenv to update the value at runtime, but note that doing so won't trigger any of those validation checks that were performed on program startup (again). -. .Mx .It Ev VISUAL Pathname of the text editor to use in the @@ -7682,29 +7506,20 @@ command and .Ic ~v .Sx "TILDE ESCAPES" . .El -.\" }}} -. -. -.\" .Sh FILES {{{ .Sh FILES -. .Bl -tag -width ".It Pa _etc/mime.type_" .It Pa \*(ur File giving initial commands. -. .It Pa \*(UR System wide initialization file. -. .Mx .It Pa ~/.mime.types Personal MIME types, see .Sx "The mime.types files" . -. .Mx .It Pa /etc/mime.types System wide MIME types, see .Sx "The mime.types files" . -. .Mx .It Pa ~/.netrc \*(IN \*(OP The default location of the users @@ -7713,10 +7528,7 @@ file \(en the section .Sx "The .netrc file" documents the file format. .El -. -.\" .Ss "The mime.types files" {{{ .Ss "The mime.types files" -. When sending messages \*(UA tries to determine the content type of all attachments. When displaying message content or attachments \*(UA uses the content @@ -7726,7 +7538,6 @@ deal with content handlers, as can be defined via (and .Va pipe-EXTENSION ) variables, to do so. -. .Pp It learns about MIME types and how to treat them by reading .Pa mime.types @@ -7737,10 +7548,8 @@ files, the loading of which can be controlled by setting the variable can also be used to deal with MIME types.) .Pa mime.types files have the following syntax: -. .Pp .Dl type/subtype extension [extension ...] -. .Pp where .Ql type/subtype @@ -7751,19 +7560,15 @@ the last dot (of interest). Comments may be introduced anywhere on a line with a number sign .Ql # , causing the remaining line to be discarded. -. \*(UA also supports an extended, non-portable syntax in specially crafted files, which can be loaded via the alternative value syntax of .Va mimetypes-load-control and prepends an optional .Ql type-marker : -. .Pp .Dl [type-marker ]type/subtype extension [extension ...] -. .Pp The following type markers are supported: -. .Pp .Bl -tag -compact -offset indent -width ".It Ar _n_u" .It Ar @ @@ -7781,7 +7586,6 @@ Likewise but instead of falling back to plain text require an explicit content handler to be defined. .El -. .Pp Further reading: for sending messages: @@ -7791,11 +7595,7 @@ For reading etc. messages: .Va mime-counter-evidence , .Va pipe-TYPE/SUBTYPE , .Va pipe-EXTENSION . -.\" }}} -. -.\" .Ss "The .netrc file" {{{ .Ss "The .netrc file" -. The .Pa .netrc file contains user credentials for machine accounts. @@ -7810,7 +7610,6 @@ syntax, but users should nonetheless be aware of portability glitches of that file format, shall their .Pa .netrc be usable across multiple programs and platforms: -. .Pp .Bl -bullet -compact .It @@ -7837,14 +7636,12 @@ than .Dq anonymous , \*(UA will always require these strict permissions. .El -. .Pp Of the following list of supported tokens \*(UA only uses (and caches) .Cd machine , .Cd login and .Cd password : -. .Bl -tag -width password .It Cd machine Ar name The hostname of the entries' machine, lowercase-normalized by \*(UA @@ -7880,24 +7677,19 @@ nor .Ql smtp.example.com will be matched by the wildcard, since the exact matches take precedence (it is however faster to specify it the other way around). -. .It Cd default This is the same as .Cd machine except that it is a fallback entry that is used shall none of the specified machines match; only one default token may be specified, and it must be the last first-class token. -. .It Cd login Ar name The user name on the remote machine. -. .It Cd password Ar string The user's password on the remote machine. -. .It Cd account Ar string Supply an additional account password. This is merely for FTP purposes. -. .It Cd macdef Ar name Define a macro. A macro is defined with the specified @@ -7915,17 +7707,8 @@ If a macro named exists, it is automatically run as the last step of the login process. This is merely for FTP purposes. .El -.\" }}} -. -.\" }}} -. -. -.\" .Sh EXAMPLES {{{ .Sh EXAMPLES -. -.\" .Ss "An example configuration" {{{ .Ss "An example configuration" -. .Bd -literal -offset indent # This example assumes v15.0 compatibility mode set v15-compat @@ -8082,7 +7865,6 @@ define RK { } ghost RK call RK .Ed -. .Pp When storing passwords in .Pa \*(ur @@ -8094,7 +7876,6 @@ is available user credentials can be stored in the central .Pa .netrc file instead; e.g., here is a different version of the example account that sets up SMTP and POP3: -. .Bd -literal -offset indent account XandeX { localopts true @@ -8108,16 +7889,13 @@ account XandeX { ghost xp fi pop3s://pop.yXXXXx.ru } .Ed -. .Pp and, in the .Pa .netrc file: -. .Bd -literal -offset indent machine *.yXXXXx.ru login USER password PASS .Ed -. .Pp If the also \*(OPal .Va agent-shell-lookup @@ -8131,7 +7909,6 @@ example .Ic account above, then create the encrypted password storage file .Pa .pass.gpg : -. .Bd -literal -offset indent $ echo PASS > .pass $ gpg -e .pass @@ -8139,19 +7916,13 @@ $ eval `gpg-agent --daemon \e --pinentry-program=/usr/bin/pinentry-curses \e --max-cache-ttl 99999 --default-cache-ttl 99999` .Ed -. .Pp This configuration should now work just fine (use the .Fl d command line option for a(n almost) dry-run): -. .Pp .Dl $ echo text | \*(ua -vv -AXandeX -s Subject some@where -.\" }}} -. -.\" .Ss "Signed and encrypted messages with S/MIME" {{{ .Ss "Signed and encrypted messages with S/MIME" -. \*(OP S/MIME provides two central mechanisms: message signing and message encryption. A signed message contains some data in addition to the regular text. @@ -8161,7 +7932,6 @@ that in the certificate, and that the message text has not been altered. Signing a message does not change its regular text; it can be read regardless of whether the recipient's software is able to handle S/MIME. -. .Pp It is thus usually possible to sign all outgoing messages if so desired. Encryption, in contrast, makes the message text invisible for all people @@ -8174,7 +7944,6 @@ directories. A message should always be signed before it is encrypted. Otherwise, it is still possible that the encrypted message text is altered. -. .Pp A central concept to S/MIME is that of the certification authority (CA). A CA is a trusted institution that issues certificates. @@ -8196,7 +7965,6 @@ certificate has been retrieved with, though. Thus if you download a CA certificate from the Internet, you can only trust the messages you verify using that certificate as much as you trust the download process. -. .Pp The first thing you need for participating in S/MIME message exchange is your personal certificate, including a private key. @@ -8208,7 +7976,6 @@ The certificate is included in each signed message you send. The private key must be kept secret. It is used to decrypt messages that were previously encrypted with your public key, and to sign messages. -. .Pp For personal use it is recommended that you get a S/MIME certificate from one of the major CAs on the Internet using your WWW browser. @@ -8227,7 +7994,6 @@ or as a vivid member of the .Va smime-ca-file . But let's take a step-by-step tour on how to setup S/MIME with a certificate from CAcert.org despite this situation! -. .Pp First of all you will have to become a member of the CAcert.org community, simply by registrating yourself via the web interface. @@ -8239,15 +8005,12 @@ Now ready to create S/MIME certificates, so let's create a new ensure to include all email addresses that should be covered by the certificate in the following web form, and also to use your name as the .Dq common name . -. .Pp Create a private key and a certificate request on your local computer (please see the manual pages of the used commands for more in-depth knowledge on what the used arguments etc. do): -. .Pp .Dl openssl req -nodes -newkey rsa:4096 -keyout key.pem -out creq.pem -. .Pp Afterwards copy-and-paste the content of .Dq creq.pem @@ -8261,15 +8024,12 @@ will find its way into the certificate via the certificate-request). You are now ready and can create your CAcert certified certificate. Download and store or copy-and-paste it as .Dq pub.crt . -. .Pp Yay. In order to use your new S/MIME setup you will have to create a combined private key/public key (certificate) file: -. .Pp .Dl cat key.pem pub.crt > ME@HERE.com.paired -. .Pp This is the file \*(UA will work with. If you have created your private key with a passphrase then \*(UA will @@ -8277,14 +8037,12 @@ ask you for it whenever a message is signed or decrypted. Set the following variables to henceforth use S/MIME (setting .Va smime-ca-file is of interest for verification only): -. .Bd -literal -offset indent set smime-ca-file=ALL-TRUSTED-ROOT-CERTS-HERE \e smime-sign-cert=ME@HERE.com.paired \e smime-sign-message-digest=SHA256 \e smime-sign .Ed -. .Pp From each signed message you send, the recipient can fetch your certificate and use it to send encrypted mail back to you. @@ -8292,7 +8050,6 @@ Accordingly if somebody sends you a signed message, you can do the same, and use the .Ic verify command to check the validity of the certificate. -. .Pp Options of interest for S/MIME signing: .Va smime-ca-dir , @@ -8305,25 +8062,21 @@ Options of interest for S/MIME signing: .Va smime-sign-include-certs and .Va smime-sign-message-digest . -. .Pp After it has been verified save the certificate via .Ic certsave and tell \*(UA that it should use it for encryption for further communication with that somebody: -. .Bd -literal -offset indent certsave FILENAME set smime-encrypt-USER@HOST=FILENAME \e smime-cipher-USER@HOST=AES256 .Ed -. .Pp Additional options of interest for S/MIME en- and decryption: .Va smime-cipher and .Va smime-encrypt-USER@HOST . -. .Pp You should carefully consider if you prefer to store encrypted messages in decrypted form. @@ -8337,7 +8090,6 @@ command saves messages in decrypted form, while the and .Ic move commands leave them encrypted. -. .Pp Note that neither S/MIME signing nor encryption applies to message subjects or other header fields yet. @@ -8346,11 +8098,7 @@ and cannot be trusted even if the message content has been verified. When sending signed messages, it is recommended to repeat any important header information in the message text. -.\" }}} -. -.\" .Ss "Using CRLs with S/MIME or SSL/TLS" {{{ .Ss "Using CRLs with S/MIME or SSL/TLS" -. \*(OP Certification authorities (CAs) issue certificate revocation lists (CRLs) on a regular basis. These lists contain the serial numbers of certificates that have been @@ -8365,14 +8113,11 @@ There is otherwise no method to distinguish between valid and invalidated certificates. \*(UA currently offers no mechanism to fetch CRLs, nor to access them on the Internet, so you have to retrieve them by some external mechanism. -. .Pp \*(UA accepts CRLs in PEM format only; CRLs in DER format must be converted, like, e.\|g.: -. .Pp .Dl $ openssl crl \-inform DER \-in crl.der \-out crl.pem -. .Pp To tell \*(UA about the CRLs, a directory that contains all CRL files (and no other files) must be created. @@ -8383,11 +8128,7 @@ or variables, respectively, must then be set to point to that directory. After that, \*(UA requires a CRL to be present for each CA that is used to verify a certificate. -.\" }}} -. -.\" .Ss "Handling spam" {{{ .Ss "Handling spam" -. \*(OP \*(UA can make use of several spam interfaces for the purpose of identification of, and, in general, dealing with spam messages. A precondition of most commands in order to function is that the @@ -8404,7 +8145,6 @@ message specifications will address respective messages and their entries will be used when displaying the .Va headline in the header display. -. .Bl -bullet .It .Ic spamrate @@ -8440,7 +8180,6 @@ will simply set and clear, respectively, the mentioned volatile .Ql is-spam message flag, without any interface interaction. .El -. .Pp The .Xr spamassassin 1 @@ -8458,16 +8197,13 @@ shall Bayesian filter learning be possible. only works via a local path-based .Xr unix 4 socket, but otherwise the following will be equivalently fine: -. .Bd -literal -offset indent $ spamd -i localhost:2142 -i /tmp/.spamsock -d [-L] [-l] $ spamd --listen=localhost:2142 --listen=/tmp/.spamsock \e --daemonize [--local] [--allow-tell] .Ed -. .Pp Thereafter \*(UA can make use of these interfaces: -. .Bd -literal -offset indent $ \*(ua -Sspam-interface=spamd -Sspam-maxsize=500000 \e -Sspamd-socket=/tmp/.spamsock -Sspamd-user= @@ -8480,7 +8216,6 @@ $ \*(ua -Sspam-interface=spamc -Sspam-maxsize=500000 \e -Sspamc-command=/usr/local/bin/spamc \e -Sspamc-arguments="-d localhost -p 2142" -Sspamc-user= .Ed -. .Pp Using the generic filter approach allows usage of programs like .Xr bogofilter 1 @@ -8488,7 +8223,6 @@ and .Xr sylfilter 1 . Here is an example for the former, requiring it to be accessible via .Ev PATH : -. .Bd -literal -offset indent $ \*(ua -Sspam-interface=filter -Sspam-maxsize=500000 \e -Sspamfilter-ham="bogofilter -n" \e @@ -8498,12 +8232,10 @@ $ \*(ua -Sspam-interface=filter -Sspam-maxsize=500000 \e -Sspamfilter-spam="bogofilter -s" \e -Sspamfilter-rate-scanscore="1;^(.+)$" .Ed -. .Pp Because messages must exist on local storage in order to be scored (or used for Bayesian filter training), it is possibly a good idea to perform the local spam check last: -. .Bd -literal -offset indent define spamdelhook { # Server side DCC @@ -8518,7 +8250,6 @@ define spamdelhook { } set folder-hook-FOLDER=spamdelhook .Ed -. .Pp See also the documentation for the variables .Va spam-interface , spam-maxsize , @@ -8528,16 +8259,8 @@ See also the documentation for the variables spamfilter-rate and .Va spamfilter-rate-scanscore . -.\" }}} -.\" }}} (Examples) -. -. -.\" .Sh "FAQ" {{{ .Sh "FAQ" -. -.\" .Ss "\*(UA shortly hangs on startup" {{{ .Ss "\*(UA shortly hangs on startup" -. This can have two reasons, one is the necessity to wait for a file lock and can't be helped, the other being that \*(UA calls the function .Xr uname 2 @@ -8552,17 +8275,12 @@ or, more generally, that the name service is properly setup \(en and does .Xr hostname 1 return what you'd expect? -.\" }}} -. -.\" .Ss "I can't login to Google mail a.k.a. GMail" {{{ .Ss "I can't login to Google mail a.k.a. GMail" -. Since 2014 some free service providers classify programs as .Dq less secure unless they use a special authentification method (OAuth 2.0) which wasn't standardized for non-HTTP protocol authentication token query until August 2015 (RFC 7628). -. .Pp Different to Kerberos / GSSAPI, which is developed since the mid of the 1980s, where a user can easily create a local authentication ticket for @@ -8572,14 +8290,12 @@ program, that protocol has no such local part but instead requires a world-wide-web query to create or fetch a token; since there is no local cache this query has to be performed whenever \*(UA is invoked from the command line (in interactive sessions situation may differ). -. .Pp \*(UA doesn't support OAuth. Because of this it is necessary to declare \*(UA a .Dq less secure app (on the providers account web page) in order to read and send mail. However, it also seems possible to take the following steps instead: -. .Pp .Bl -enum -compact .It @@ -8594,13 +8310,7 @@ use that special password instead of your real Google account password in S-nail (for more on that see the section .Sx "On URL syntax and credential lookup" ) . .El -.\" }}} -.\" }}} -. -. -.\" .Sh "SEE ALSO" {{{ .Sh "SEE ALSO" -. .Xr bogofilter 1 , .Xr bzip2 1 , .Xr file 1 , @@ -8635,12 +8345,7 @@ S-nail (for more on that see the section .Xr exim 8 , .Xr mailwrapper 8 , .Xr sendmail 8 -.\" }}} -. -. -.\" .Sh HISTORY {{{ .Sh HISTORY -. A .Em mail command appeared in Version 1 AT&T Unix. @@ -8653,7 +8358,6 @@ enhancements are maintained and documented by Gunnar Ritter. .Dq S-nail is maintained and documented by Steffen (Daode) Nurpmeso. -. .Pp Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology @@ -8667,28 +8371,19 @@ The original Standard can be obtained online at .Lk http://www.opengroup.org/unix/online.html OpenGroup.org Redistribution of this material is permitted so long as this notice remains intact. -.\" }}} -. -. .Sh AUTHORS -. .An "Kurt Shoens" , .An "Christos Zoulas" , .An "Gunnar Ritter" , .An "Steffen Nurpmeso" Aq Mt s-nail-users@lists.sourceforge.net (later .Mt s-mailx@sdaoden.eu ) . -. -. -.\" .Sh CAVEATS {{{ .Sh CAVEATS -. The character set conversion uses and relies upon the .Xr iconv 3 function. Its functionality differs widely between the various system environments \*(UA runs on. -. .Pp Limitations with IMAP mailboxes are: It is not possible to edit messages, but it is possible to append them. @@ -8717,7 +8412,6 @@ printed if \*(UA is notified by the server that messages have been deleted by some other client or process. In this case, `Expunged n messages' is printed, and message numbers may have changed. -. .Pp Limitations with POP3 mailboxes are: It is not possible to edit messages, they can only be copied and deleted. @@ -8734,7 +8428,6 @@ command and the .Va newmail variable have no effect. It is not possible to rename or to remove POP3 mailboxes. -. .Pp If a .Dq RUBOUT @@ -8752,7 +8445,6 @@ before the next command can be performed. If the cancelled operation was using an SSL/TLS encrypted channel, an error in the SSL transport will very likely result and render the connection unusable. -. .Pp As \*(UA is a mail user agent, it provides only basic SMTP services. If it fails to contact its upstream SMTP server, it will not make @@ -8765,7 +8457,6 @@ local network as the computer on which \*(UA is run. However, care should be taken when using a remote server of an ISP; it might be better to set up a local SMTP server then which just acts as a proxy. -. .Pp \*(UA immediately contacts the SMTP server (or .Xr sendmail 1 Ns @@ -8780,11 +8471,7 @@ Thus the recommended setup for sending mail in mode is to configure a local SMTP server such that it sends outgoing mail as soon as an external network connection is available again, i.e., to advise it to do that from a network startup script. -.\" }}} -. -. .Sh BUGS -. With IMAP, at least if the IMAP cache is used, if multiple .Ic connect and @@ -8798,11 +8485,8 @@ The solution is to change the active mailbox before that happens :). Also see the file .Pa TODO from the distribution or the repository. -. After deleting some message of a POP3 mailbox the header summary falsely claims that there are no messages to display, you need to perform a scroll or dot movement to restore proper state. -. In threaded display a power user may encounter crashes very occasionally (this is may and very). -.\" s-ts-mode diff --git a/nail.rc b/nail.rc index 2e08f6be..3212c56b 100644 --- a/nail.rc +++ b/nail.rc @@ -1,9 +1,7 @@ #--MKRC-START-- # /etc/s-nail.rc - configuration file for S-nail(1) #--MKRC-END-- -#--MKREL-START-- #@ S-nail(1): v14.8.11 / 2016-10-03 -#--MKREL-END-- ## The standard POSIX 2008/Cor 1-2013 mandates the following initial settings: # (Keep in sync: ./main.c:_startup(), ./nail.rc, ./nail.1:"Initial settings"!) -- 2.11.4.GIT