diff options
-rw-r--r-- | alpine/mailpart.c | 9 | ||||
-rw-r--r-- | doc/alpine.1 | 2 | ||||
-rw-r--r-- | doc/tech-notes/tech-notes.txt | 12464 | ||||
-rw-r--r-- | pico/browse.c | 41 | ||||
-rw-r--r-- | pico/efunc.h | 6 | ||||
-rw-r--r-- | pico/osdep/spell.c | 4 | ||||
-rw-r--r-- | pico/search.c | 238 | ||||
-rw-r--r-- | pith/filter.c | 4 | ||||
-rw-r--r-- | pith/pine.hlp | 8 |
9 files changed, 12715 insertions, 61 deletions
diff --git a/alpine/mailpart.c b/alpine/mailpart.c index b3b355a9..56ee8afa 100644 --- a/alpine/mailpart.c +++ b/alpine/mailpart.c @@ -2137,6 +2137,15 @@ display_attachment(long int msgno, ATTACH_S *a, int flags) ? a->body->subtype : "unk"); } + /* We are creating a temporary name. This is just a prefix. If you + * need the original name, use the save command, so if the prefix + * is too long, shorten it. + */ + if (strlen(prefix) > 9){ + prefix[9] = '-'; + prefix[10] = '\0'; + } + filename = temp_nam_ext(NULL, prefix, ext); if(!filename){ diff --git a/doc/alpine.1 b/doc/alpine.1 index 61b2de5e..c295a453 100644 --- a/doc/alpine.1 +++ b/doc/alpine.1 @@ -295,6 +295,8 @@ uses the following environment variables: .br ~/.pinerc Personal alpine config file. .br +~/.pine-crash Debug information useful to debug a crash. +.br ~/.newsrc News subscription/state file. .br ~/.mailcap Personal mail capabilities file. diff --git a/doc/tech-notes/tech-notes.txt b/doc/tech-notes/tech-notes.txt new file mode 100644 index 00000000..7b4a9664 --- /dev/null +++ b/doc/tech-notes/tech-notes.txt @@ -0,0 +1,12464 @@ + + Alpine Technical Notes + + Version 2.19.5, February 2014 + +Table of Contents + + Introduction + + * Design Goals + * Alpine Components + + Background Details + + * Domain Names + * RFC 2822 Compliance + * SMTP and Sendmail + * Internet Message Access Protocol (IMAP) + * Multipurpose Internet Mail Extensions (MIME) + * Folder Collections + + Building and Installation + + * Compile-time Options + * Including LDAP Functionality + * Including Kerberos 5 Functionality + * Other Alpine Compile-time Options + * IMAPd Compile-time Options + * Building the Alpine Programs + * Installing Alpine and Pico on UNIX Platforms + * Installing PC-Alpine + * Installing IMAPd + * Support Files and Environment Variables: UNIX Alpine + * Support Files, Environment Variables, and Registry Values: + PC-Alpine + + Command Line Arguments + + * Alpine + * Pico + * Pilot + + Configuration and Preferences + + * Alpine Configuration + * General Configuration Variables + * Configuration Features + * Hidden Config Variables and Features + * Retired Variables + * Tokens for Index and Replying + * Conditional Inclusion of Text for Reply-Leadin, Signatures, and + Templates + * Per Server Directory Configuration + * Color Configuration + * Index Line Color Configuration + * Role Configuration + * Filtering Configuration + * Scoring Configuration + * Other Rules Configuration + * Search Rules Configuration + * Patterns + * Configuring News + Configuration Notes + + Alpine in Function Key Mode + + Domain Settings + + Syntax for Collections + + Syntax for Folder Names + + Server Name Syntax + + Folder Namespaces + + What is a Mail Drop? + + Sorting a Folder + + Alternate Editor + + Signatures and Signature Placement + + Feature List Variable + + Configuration Inheritance + + Using Environment Variables + + SMTP Servers + + MIME.Types file + + Color Details + + S/MIME Overview + + Additional Notes on PC-Alpine + + Behind the Scenes + + * Address Books + * Remote Configuration + * Checkpointing + * Debug Files + * INBOX and Special Folders + * Internal Help Files + * International Character Sets + * Interrupted and Postponed Messages + * Message Status + * MIME: Reading a Message + * MIME: Sending a Message + * New Mail Notification + * NFS + * Printers and Printing + * Save and Export + * Sent Mail + * Spell Checker + * Terminal Emulation and Key Mapping + + Introduction + +Design Goals + + Throughout _Alpine_ development, we have had to strike a balance + between the need to include features which advanced users require and + the need to keep things simple for beginning users. To strike this + balance, we have tried to adhere to these design principles: + + - The model presented to the user has to be simple and clear. + Underlying system operation is hidden as much as possible. + - It's better to have a few easily understood commands that can + be repeated than to have some more sophisticated command that + will do the job all at once. + - Whenever the user has to select a command, file name, address, + etc., the user should be given (or can get) a menu from which to + make the selection. Menus need to be complete, small, organized + and well thought out. + - _Alpine_ must provide immediate feedback for the user with + each operation. + - _Alpine_ must be very tolerant of user errors. Any time a user + is about to perform an irreversible act (send a message, expunge + messages from a folder), _Alpine_ should ask for confirmation. + - Users should be able to learn by exploration without fear of + doing anything wrong. This is an important feature so the user + can get started quickly without reading any manuals and so fewer + manuals are required. + - The core set of _Alpine_ functions should be kept to a minimum + so new users don't feel "lost" in seemingly extraneous commands + and concepts. + + Just as there were goals relating to the look and feel of _Alpine_, + there were equally important goals having to do with _Alpine_'s + structure-the things that users never see but still rely on every time + they use _Alpine_. While _Alpine_ can be used as a stand-alone mail + user agent, one of its strongest assets is its use of the Internet + Message Access Protocol (IMAP) for accessing remote email folders. In + addition, _Pine_ (the predecessor of _Alpine_) was one of the first + programs to support the Multipurpose Internet Mail Extensions (MIME) + specification. With MIME, _Alpine_ users can reliably send any binary + file to any other person on the Internet who uses a MIME compliant + email program. + + The decision to use IMAP and MIME reflects the importance of + interoperability, standardization and robustness in _Alpine_. As you + work with _Alpine_ more, you will see other features which reflect the + same values. For example, _Alpine_ enforces strict compliance with RFC + 2822, implements a strong mail folder locking mechanism and verifies a + process before overwriting any files (e.g. addressbook, expunging + messages). + +Alpine Components + + If you have picked up the _Alpine_ distribution, then you already know + that _Alpine_ comes in a few different pieces. They are: + + _Alpine_ + The main code from which the _Alpine_ program is compiled. + _Pico_ + _Pico_ is the name for the _Alpine_ composer. The _Pico_ code is + used in two ways: (1) it is compiled on its own to be a + stand-alone editor and, (2) it is compiled as a library for + _Alpine_ to support composition of messages within _Alpine_. + _Pico_ is _Alpine_'s internal editor invoked when users need to + fill in header lines or type the text of an email message. + _Imap_ + An API for IMAP. Includes the C-Client library, which is + compiled into _Alpine_, and the IMAP server _IMAPd_. C-Client + implements the IMAP protocol and also negotiates all access + between _Alpine_ and the mail folders it operates on, even if + the folders are local. The C-Client routines are used for email + folder parsing and interpreting MIME messages. _IMAPd_ is a + separate server that handles IMAP connections from any + IMAP-compliant email program. When _Alpine_ accesses a remote + mailbox, the _Alpine_ program is the IMAP client and the _IMAPd_ + program is the IMAP server. Of course, _Alpine_ can use any + IMAP-compliant IMAP server, not just _IMAPd_. + + Background Details + +Domain Names + + Domain names are used to uniquely name each host on the Internet. A + domain name has a number of parts separated by periods. Each label + represents a level in the hierarchy. An example of a name is: + + olive.cac.washington.edu + + In this domain name the top-level label is _edu_, indicating it is at + an educational institution, the second-level label is _washington_, + indicating the University of Washington. _cac_ is a specific department + within the University of Washington, and _olive_ is the host name. The + top-level names are assigned by Internet organizations, and other names + are assigned at the appropriate level. The Domain Name Service, DNS, is + the distributed database used to look up these names. + + _Alpine_ relies on domain names in multiple places. A domain name is + embedded into the message-id line generated for each piece of email. A + domain name is needed to contact an IMAP server to get access to remote + INBOXes and folders. Most importantly, domain names are needed to + construct the From: line of your outgoing messages so that people on + the Internet will be able to get email back to you. + + On UNIX systems, you can set the domain via the user-domain variable in + the _Alpine_ configuration file, or rely on the file /etc/hosts which + usually sets the name of the local host. While _Alpine_ can often + deliver email without the domain name being properly configured, it is + best to have this set correctly. Problems can usually be solved by + adjusting the system's entry in the /etc/hosts file. The + fully-qualified name should be listed before any abbreviations. For + example, + + 128.95.112.99 olive.cac.washington.edu olive + + is preferred over + + 128.95.112.99 olive olive.cac.washington.edu + + On PCs, the task of configuring the domain name is a bit different. + Often times PCs do not have domain names-they have _IP addresses_. IP + addresses are the numbers which uniquely identify a computer on the + network. The way you configure your IP address depends on the + networking software which you use on the PC. You can refer to the + documentation which came with your networking software or see the PC + specific installation notes for help configuring the IP address with + your network software. + + With PCs, it is vital that users set the variable user-domain in the + _Alpine_ configuration file (PINERC). + + Details on configuring _Alpine_ with correct domain names can be found + in the Domain Settings section of this document. + __________________________________________________________________ + +RFC 2822 Compliance + + _Alpine_ tries to adhere to RFC 2822 fairly strictly. + + As far as outgoing email is concerned, _Alpine_ fully-qualifies + addresses whenever possible. They are even displayed in fully-qualified + form on the terminal as the user composes a message. This makes + addresses more clear and gives a hint to the user that the network + extends beyond the local organization. _Alpine_ implements + fully-qualified domain names by tacking on the local domain to all + unqualified addresses which a user types in. Any address which does not + contain an "@" is considered unqualified. + + The format for addresses allows for spaces and special characters in + the full name of an address. For this reason, commas are required to + separate addresses. If any special characters as defined in RFC 2822 + appear in the full name, quotes are required around the address. + _Alpine_ will insert the quotes automatically if needed. The common + cases where this happens are with periods after initials and + parentheses. + + _Alpine_ expects dates to be in the standard RFC 822 format which is + something like: + [www, ] dd mmm yy hh:mm[:ss] [timezone] + + It will attempt to parse dates that are not in this format. When an + unparsable date is encountered it is shown as question marks in the + FOLDER INDEX screen. + __________________________________________________________________ + +SMTP and Sendmail + + _Alpine_ is a _user agent_ not a _message transfer agent_ (MTA). In + plain English, that means _Alpine_ does not know how to interact with + other computers on the Internet to deliver or receive email. What + _Alpine_ does know how to do is help users read, organize and create + email. The "dirty work" of delivering and accepting email is handled by + other programs. + + All outgoing email is delivered to an SMTP server or to a mail transfer + agent. A common mail transfer agent is sendmail. The usual method of + delivery used by _Alpine_ is to use either a local or a remote SMTP + server. + + The selection of which MTA to use depends on the settings of + smtp-server, sendmail-path, and compile-time options. The first MTA + specified in the following list is used: + 1. _sendmail-path_ in /usr/local/lib/pine.conf.fixed + 2. _smtp-server_ in /usr/local/pine.conf.fixed + 3. _sendmail-path_ specified on the command line. + 4. _smtp-server_ specified on the command line. + 5. _sendmail-path_ in the user's .pinerc file. + 6. _smtp-server_ in the user's .pinerc file. + 7. _sendmail-path_ in /usr/local/lib/pine.conf + 8. _smtp-server_ in /usr/local/pine.conf + 9. DF_SENDMAIL_PATH defined at compile time. + 10. SENDMAIL and SENDMAILFLAGS defined at compile time. + + If the _sendmail-path_ form is used, a child process is forked, and the + specified command is executed with the message passed on standard + input. Standard output is then passed back and displayed for the user. + _NOTE: The program MUST read the message to be posted on standard input, + AND operate in the style of sendmail's "-t" option. This method is not + recommended unless there are special reasons you want to do this._ + + If an _smtp-server_ is specified, _Alpine_ operates as an SMTP client. + SMTP stands for _Simple Mail Transfer Protocol_; it specifies the rules + by which computers on the Internet pass email to one another. In this + case, _Alpine_ passes outgoing email messages to a designated SMTP + server instead of to a mail transfer program on the local machine. A + program on the server then takes care of delivering the message. To + make _Alpine_ operate as an SMTP client, the smtp-server variable must + be set to the IP address or host name of the SMTP server within your + organization. This variable accepts a comma separated list of servers, + so you can specify multiple alternate SMTP servers. _PC-Alpine_ only + runs as an SMTP client so the _smtp-server_ option is mandatory. + + For UNIX _Alpine_, if neither _smtp-server_ or _sendmail-path_ is set, + the default sendmail program is invoked with the "-bs -odb -oem" flags, + and the message is sent using the SMTP protocol. + __________________________________________________________________ + +Internet Message Access Protocol (IMAP) + + IMAP is a remote access protocol for message stores. _Alpine_ uses IMAP + to get at messages and folders which reside on remote machines. With + IMAP, messages are kept on the server. An IMAP client (such as + _Alpine_) can request specific messages, headers, message structures, + message parts, etc. The client can also issue commands which delete + messages from folders on the server. IMAP's closest kin is POP, the + Post Office Protocol, which works by transferring an entire mailbox to + the client where all the mail is kept. For a comparison of IMAP and + POP, see the paper "Comparing Two Approaches to Remote Mailbox Access: + IMAP vs. POP" by Terry Gray. A more detailed exploration of message + access may be found in the paper " Message Access Paradigms and + Protocols." + + IMAP Features: + * Allows access to mail folders from more than one client computer. + * Works well over low-bandwidth lines because information is sent in + small pieces as needed by the user. For example, only header + information is sent to build index lists, and if someone sends a + large audio file via MIME, you can choose when (or if) you want to + get that part of the message. + * Email can be delivered and stored on a well-maintained and reliable + server which is "always-up". + * Folders can be accessed and manipulated from anywhere on the + Internet. + * Users can get to messages stored in different folders within the + same _Alpine_ session. + * Allows use of IMAP server for searching and parsing. + * The latest revision of IMAP (IMAP4) also provides for disconnected + operation, including resynchronization of message state between + mail servers and message caches on clients. _Alpine_ does not + support this capability, however. + + IMAP4rev1 is described in RFC 3501. Further information about IMAP may + be obtained from the University of Washington's IMAP Information + Center. + + _Alpine_ is an IMAP4rev1 client. + __________________________________________________________________ + +Multipurpose Internet Mail Extensions (MIME) + + MIME is a way of encoding a multipart message structure into a standard + Internet email message. The parts may be nested and may be of seven + different types: Text, Audio, Image, Video, Message, Application and + Multipart (nested). The MIME specification allows email programs such + as _Alpine_ to reliably and simply exchange binary data (images, + spreadsheets, etc.). MIME includes support for international character + sets, tagging each part of a message with the character set it is + written in, and providing 7-bit encoding of 8-bit character sets. + + The MIME standard was officially published in June of 1992 as RFC 1341 + and subsequently revised in RFC 2045 when it became a full Internet + Standard. _Pine_ 3.0 was one of the first email programs to Implement + MIME. Now, there are dozens of commercial and freely available + MIME-capable email programs. In addition, MIME is being added to + newsreaders so MIME messages can be posted and read in USENET + newsgroups. + + The MIME standard also includes support for non-ASCII text in message + headers through the extensions described in RFC 1342 and subsequently + revised in RFC 2047. + + An actual MIME message looks something like this: +Date: Tue, 12 Mar 1996 15:39:35 -0800 (PST) +From: David L Miller <dlm@cac.washington.edu> +To: David L Miller <dlm@cac.washington.edu> +Subject: =?iso-8859-1?Q?Test_MIME_message_with_RFC-1522_headers_=28=E1?= =?is +o-8859-1?Q?=E2=E3=29?= +Message-Id: <Pine.ULT.3.92.960312150851.21583I-101000@shiva2.cac.washington.edu> +Mime-Version: 1.0 +Content-Type: MULTIPART/MIXED; BOUNDARY="0-1737669234-826673975=:21583" +Content-Id: <Pine.ULT.3.92.960312153928.21583O@shiva2.cac.washington.edu> + + This message is in MIME format. The first part should be readable text, + while the remaining parts are likely unreadable without MIME-aware tools. + Send mail to mime@docserver.cac.washington.edu for more info. + +--0-1737669234-826673975=:21583 +Content-Type: TEXT/PLAIN; CHARSET=US-ASCII +Content-ID: <Pine.ULT.3.92.960312153104.21583L@shiva2.cac.washington.edu> + +The text of the message would go here. It is readable if +one doesn't mind wading around a little bit of the MIME +formatting. After this is a binary file in base 64 +encoding. + +|\ | |\/| David L. Miller dlm@cac.washington.edu (206) 685-6240 +|/ |_ | | Software Engineer, Pine Development Team (206) 685-4045 (FAX) +University of Washington, Networks & Distributed Computing, JE-20 +4545 15th Ave NE, Seattle WA 98105, USA + +--0-1737669234-826673975=:21583 +Content-Type: APPLICATION/ZIP; NAME="test.zip" +Content-Transfer-Encoding: BASE64 +Content-ID: <Pine.ULT.3.92.960312153638.21583N@shiva2.cac.washington.edu> +Content-Description: Test Attachment + +UEsDBBQAAAAIAGh8bCBbZKT4ygIAAHgFAAAEAAAAdGVzdIVUX2vbMBB/16c4 +9rSBNyjsYX1UHSUROLInycv2qNhKI5ZYxlLa5dvvpDRLw6CFgJF09/t3Rxo3 +WDBDD43rPJjJQpxMbw9m+h3AbyHuLLSDe7JTcPGUbtYm7NzwGP3wBYQnnT8c +7NQ5s4djsC8t4QbmYE6wsfjpLTy7uPPHCOPk/ATPk4vRDmS008GF4PzwPich +zY3m4LfxOQlPNy4GcEO3P/a2h2j/xGyp9ONpco+7CHf33+4/393ff4XNibzL +c1UVfXJXQIdIBRx877b4TYy9C3Fym2NEyzsX/pNDet8dD3aIJiagLbo2wwnG +4zT6cK66ZLK1NhH9J4tcZQEy7OxkNyd4nMwQbV9glP7JZb87E3O32fgnm7We +XQ8+us4SM47WTCkgMPt9enc2ZAW5c+Pj7o32l0IXXk/r8pSRE3A4jqOfIqqF +G+PFlSdRDOaQduXNESTwtDcYfJ8191gWXUjYmOJ43Oxdh11JTzRuSPcY37+B +vNqmf0O5RB1G27mt64rLCp4X8pW1L6BvxunCeYHNk3F7s9lb+GAwyvAhOyNE +Lxm0gv9gUnH9C+o5rKlacrHQtYAZV2VF+UoBrSp8kJIKzZkqgP1sJFMKagl8 +1VSczQqy5noJki2onIGuQS+5AlXPNfaxArgoq3aGwJDq6lZDxVdcU82RKMG/ +4JArTVKzYrJc4pE+8CoJpGIGc65FIp8jO4WGSs3LtqISmlY2tUKyVMUFETWw +H0xoUMvE8KbXB4aC6EPFzrDiF6iGlZxWBeFixiUrdXJb1kKx7y2C4hPM6Iou +WI4hdVyO6yXVqkZqiXmottLJ9lzWK1LVKttqk8oZ1TS1NrJGS5jqeslQI0aK +ieCvzNlgNZJqiccCc5WafLxmKdii4gsmSvYpISkteamzkRwXJiG5SoUpcERK +8xIE8QQ7o+eh5WAUy1qYRP8rioip/maI+OfyF1BLAQIUAxQAAAAIAGh8bCBb +ZKT4ygIAAHgFAAAEAAAAAAAAAAEAAACkgQAAAAB0ZXN0UEsFBgAAAAABAAEA +MgAAAOwCAAAAAA== +--0-1737669234-826673975=:21583-- + + + For details about _Alpine_'s implementation of MIME, see the two MIME + sections "MIME: Reading a Message" and "MIME: Sending a Message" later + in this document. + __________________________________________________________________ + +Folder Collections + + Folder Collections are _Alpine_'s way of dealing with more than a + single group of folders. + + For a more complete description of Folder Collections, see the section + on "Syntax for Collections." + + The _Alpine_ distribution is designed to require as little + configuration and effort at compile time as possible. Still, there are + some _Alpine_ behaviors which are set at the time you compile _Alpine_. + For each of these, there is a reasonable (our opinion) default built + into the code, so most systems administrators will have no need for + these steps. + + Building and Installation + +Compile-time Options + + _Alpine_'s UNIX build environment is based on Autotools (the GNU Build + System). Once you've unpacked the source distribution find the file + configure in the top-level directory. You may look at the many options + available by typing + + ./configure --help + + or you could just try building with the command + + ./configure + + followed by + + make + + Note, while the UW IMAP Toolkit (whose c-client library _Alpine_ uses + for mailbox access) build is not based on Autotools, _Alpine_'s + configure script should set an appropriate make target and compilation + options for most systems. + + Some of the following can only be set when you build. Others, however, + can be overridden by command-line flags to _Alpine_ or settings in + _Alpine_'s user or system configuration files. Some of the options which + can be set when building: + + Including LDAP Functionality + + By default, the configure script will attempt to find the LDAP library + support for you. If you are having trouble with LDAP take a look at the + configure options + --with-ldap-dir=DIR + Specify the root of the LDAP lib/include path. + --with-ldap-include-dir=DIR + Specify the LDAP include path. + --with-ldap-lib-dir=DIR + Specify the LDAP library path. + --without-ldap + Disable LDAP support. + + _Alpine_ uses LDAPv3 protocol. When using the LDAPv3 protocol, the + results are assumed to be in the UTF-8 character set, which _Alpine_ + handles well. If the LDAP server returns non-ascii data which is not + encoded as UTF-8 you will probably run into problems. + + Including Kerberos 5 Functionality + + This works analogously to the LDAP build. By default, the configure + script will attempt to find the Kerberos library support for you. If + you are having trouble with Kerberos take a look at the configure + options + --with-krb5-dir=DIR + Specify the root of the Kerberos lib/include path. + --with-krb5-include-dir=DIR + Specify the Kerberos include path. + --with-krb5-lib-dir=DIR + Specify the Kerberos library path. + --without-krb5 + Disable Kerberos support. + + Other Alpine Compile-time Options + + --disable-nls + Do not use Native Language Support. NLS refers to the use of GNU + gettext utilities to localize a program, in the sense that + English is translated to some other language. At the time this + was written the low-level support for NSL is included in _Alpine_ + but no translations have been done. If there is no translation + available, that means that disabling NLS will make no + difference. If you have trouble building which is due to gettext + or libintl you could try this option, or one of the following. + --with-libintl-prefix[=DIR] + --without-libintl-prefix + --with-ssl-dir=DIR + Specify the root of the SSL lib/include path (OpenSSL). + --with-ssl-include-dir=DIR + Specify the SSL include path. + --with-ssl-lib-dir=DIR + Specify the SSL library path. + --with-ssl-certs-dir=DIR + Specify the path to the SSL certificates directory. + --without-ssl + Disable SSL support. + --without-pthread + Do not test for nor build with POSIX thread support, which is + used only for the Busy-Cue in the status line at this time. + --without-smime + Disable S/MIME support. + --disable-debug + Never create debug files. + --with-smtp-msa=PATH + Local Mail Submission Agent (sendmail, by default). + --with-smtp-msa-flags=FLAGS + MSA flags for SMTP on stdin/stdout (-bs -odb -oem). + + There are many more options which you can see using the + + ./configure --help + + command. + + IMAPd Compile-time Options + + There are no options or settings required for the version of _IMAPd_ + distributed with _Alpine_. If you need to be doing more complex + modifications to IMAP, then you should pick up the IMAP development + package and work with that code. The developer's version of IMAP is + available for anonymous ftp from ftp.cac.washington.edu in the + directory mail. The file is called imap.tar.Z. Unless it has changed + since _Alpine_ was released, the directory imap in the _Alpine_ + distribution is the IMAP development package. + + The c-client library has not been converted to use the GNU Build + System's autotools. The _Alpine_ configure script will try to correctly + guess the arguments needed for the c-client make command and will build + the library, but if you need to change anything you should take a look + at imap/docs/BUILD for more detailed instructions. + __________________________________________________________________ + +Building the Alpine Programs + + You may have already compiled _Alpine_ and tried it out. If so, great! + If not, you should be able to do it without too much trouble by + following these step-by-step instructions: + + 1. Make sure you're in the root of the _Alpine_ source. When you type + ls you should see the following files and directories (or something + close to it): +aclocal.m4 config.sub imap Makefile.am packages web +alpine configure include Makefile.in pico +build.bat configure.ac install-sh mapi pith +build.cmd contrib LICENSE missing po +config.guess depcomp ltmain.sh mkinstalldirs README +config.rpath doc m4 NOTICE VERSION + + 2. Give the command ./configure Configure should grind away for a few + minutes. + 3. When configure is complete, give the command make. If make stops + and asks + + Do you want to build with IPv6 anyway? Type y or n please: + you should answer with a 'y'. The compiler should grind away for a + few minutes. The _Alpine_ binary will end up in .../alpine/alpine + and the Pico and Pilot binaries in .../pico/pico and + .../pico/pilot. Other binaries you may be interested in are + .../alpine/rpdump and .../alpine/rpload and c-client binaries in + the directories .../imap/imapd, .../imap/ipopd, .../imap/mailutil, + and so on. + 4. If you need to try again, make sure you're getting a clean start by + giving the command make clean. + __________________________________________________________________ + +Installing Alpine and Pico on UNIX Platforms + + Installing _Alpine_ and _Pico_ is simple. You take the program files + which you have just transferred or built and you move them to the + correct directory on your system. Most often the binaries go in + /usr/local/bin though sometimes they are placed in /usr/bin. All the + help text is compiled into _Alpine_ so there are no _required_ + auxiliary files. Instead of copying the binaries manually, you may use + make install to install them. + + There are three optional auxiliary files: /usr/local/lib/pine.info, + /usr/local/lib/pine.conf, and /usr/local/lib/pine.conf.fixed. The file + pine.info contains text on how to get further help on the local system. + It is part of the help text for the main menu and should probably refer + to the local help desk or the system administrator. If this file + doesn't exist a generic version which suggests ``talking to the + computer support staff at your site'' is shown. The file pine.conf is + used to set system-wide default configurations for _Alpine_. The file + pine.conf.fixed is also used to set system-wide default configurations + for _Alpine_. The difference between these two files is that + configuration variables set in the pine.conf.fixed file may not + normally be over-ridden by a user. See the section on Alpine + Configuration later in this document for details about the pine.conf + and pine.conf.fixed files. + __________________________________________________________________ + +Installing PC-Alpine + + The PC-Alpine distribution comes as a .zip file. To install, unzip the + files to a directory where you would like the program to reside. Modern + Windows versions come with the capability of unzipping .zip files. + Failing that, you can use one of the many .zip file extractors out + there. Following current Windows conventions, a common directory into + which the files could be extracted would be C:\Program + Files\PC-Alpine\. + + Having extracted PC-Alpine's .zip file to the directory of choice, you + can now run that directory's alpine.exe, which is the actual PC-Alpine + program. For convenience, you could place shortcuts to it on the task + bar, start menu, etc. + + Upon first running PC-Alpine, you may be asked where you would like to + access your Configuration file (called the _pinerc_). This is useful in + accessing already existing configuration files, and it does not matter + where this file gets created. If you are connecting to an IMAP server + to access your email, it is also possible to store this Configuration + data on that server, which facilitates accessing the same configuration + from multiple machines (in fact, your configuration may have already + been set up this way for use with other _Alpine_ programs). + + After having established the location of the configuration file, it may + be necessary to specify a few configuration settings before reading or + sending mail. You may be prompted for the following (which may also be + edited from the (S)etup (C)onfig screen from the Main Menu): + + Folder to open as inbox (or _inbox-path_) - This can be an inbox + residing on an IMAP or POP3 server, or one residing locally. An example + of an INBOX for an IMAP server is: {server.example.com}INBOX. + + User-id, Personal name, and host/domain, which are to be used as your + email address. + + SMTP server to forward message - You must enter your SMTP server + before you can send any messages. + + At this point, you will be able to read and send email messages. There + are, however, many more preferences that you can set in the + Configuration screen. + __________________________________________________________________ + +Installing IMAPd + + When the _Alpine_ distribution is built on a UNIX system, the IMAP + server binary, imapd, is compiled. Installing imapd requires placing + the binary in the appropriate directory, usually /usr/etc, and adding + entries to /etc/services and /etc/inetd.conf or their counterparts. + + Instead of including installation instructions here we'll just include + a pointer to detailed instructions in the c-client distribution. Please + take a look at the file imap/docs/BUILD in the source tree. + __________________________________________________________________ + +Support Files and Environment Variables: UNIX Alpine + + This section lists the various files which _Alpine_ uses which are not + email folders. All of these are the default names of files, they may + vary based on _Alpine_'s configuration. + /usr/local/lib/pine.conf + Pine's global configuration file. + /usr/local/lib/pine.conf.fixed + Non-overridable global configuration file. + /usr/local/lib/pine.info + Local pointer to system administrator. + ~/.pinerc + Personal configuration file for each user. + ~/.pinercex + Personal exceptions configuration file for each user. + ~/.addressbook + Personal addressbook + ~/.newsrc + Personal USENET subscription list. This is shared with other + newsreading programs. + ~/.pine-debugX + The files created for debugging _Alpine_ problems. By default, + there are 4 .pine-debug files kept at any time. + ~/.signature + A signature file which will be included in all outgoing email + messages. + ~/.pine-interrupted-mail + The text of a message which was interrupted by some unexpected + error which _Alpine_ detected. + ~/mail/postponed-msgs + A folder of messages which the user chose to postpone. + /etc/mailcap + System-wide mail capabilities file. Only used if $MAILCAPS not + set. + ~/.mailcap + Personal mail capabilities file. Combines with system-wide + mailcap. Only used if $MAILCAPS not set. + + The location of the following support files may be controlled by + variables in the personal or global _Alpine_ configuration file: + signature, addressbook and its index file, postponed messages, and + newsrc. + + Unix _Alpine_ uses the following environment variables: + TERM + Tells _Alpine_ what kind of terminal is being used. + DISPLAY + Determines if _Alpine_ will try to display IMAGE attachments. + TMPDIR, TMP, or TEMP + Specifies location of temporary storage area, first one set wins + SHELL + If not set, default is /bin/sh + MAILCAPS + A semicolon delimited list of path names to mailcap files. + __________________________________________________________________ + +Support Files, Environment Variables, and Registry Settings: PC-Alpine + + This section lists the various files which _PC-Alpine_ uses which are + not normal mail folders. All of these are the default names of files, + they may vary based on _Alpine_'s configuration. + + $PINERC or <PineRC registry value> or $HOME\PINE\PINERC or <PINE.EXE + dir>\PINERC + Path to (required) personal configuration file. + $PINERCEX or $HOME\PINE\PINERCEX or <PINE.EXE dir>\PINERCEX + Path to personal exceptions configuration file. + $PINECONF + Path of optional global configuration file. + <PINERC directory>\ADDRBOOK + Personal addressbook + <PINERC directory>\PINEDEBG.TXT + Location of _Alpine_ debug file. + <PINERC directory>\MAILCAP and/or <PINE.EXE dir>\MAILCAP + These paths are only used if $MAILCAPS not set. + $HOME\NEWSRC or <PINERC directory>\NEWSRC + Personal USENET subscription list. This may be shared with other + newsreading programs. + $HOME\MAIL\INTRUPTD + The text of a message which was interrupted by some unexpected + error which _Alpine_ detected. + $HOME\MAIL\POSTPOND + A folder of messages which the user chose to postpone. + + Registry Values: + HKEY_LOCAL_MACHINE\Software\University of Washington\Alpine\1.0 + _Pinedir_: The directory that contains the _Alpine_ executable. + _PineEXE_: The name of the _Alpine_ executable (most commonly + "alpine.exe"). + HKEY_CURRENT_USER\Software\University of Washington\Alpine\1.0 + _PineRC_: The path that points to the default pinerc to use. + HKEY_LOCAL_MACHINE\Software\Clients\Mail\Alpine + _DLLPath_: The path that points to _Alpine_'s pmapi32.dll. + HKLM\Software\Clients\Mail\Alpine\shell\open\command + _(Default)_: When set as the default mailer, this is the command + that is run by external programs. + HKLM\Software\Clients\Mail\Alpine\Protocols\Mailto\DefaultIcon + _(Default)_: This points to the icon to display in relation to + _Alpine_'s mailto URL rendering. + HKLM\Software\Clients\Mail\Alpine\Protocols\Mailto\shell\open\command + _(Default)_: This value is the command that gets run by external + programs when a mailto URL is run with _PC-Alpine_ set as the + default mailer. + HKLM\Software\Clients\News\Alpine\shell\open\command + _(Default)_: When set as the default newsreader, this is the + command that is run by external programs. + HKLM\Software\Clients\News\Alpine\Protocols\news\DefaultIcon + _(Default)_: This points to the icon to display in relation to + _Alpine_'s news URL rendering. + HKLM\Software\Clients\News\Alpine\Protocols\news\shell\open\command + _(Default)_: This value is the command that gets run by external + programs when a news URL is run with _Alpine_ set as the default + newsreader. + HKLM\Software\Clients\News\Alpine\Protocols\nntp\DefaultIcon + _(Default)_: This points to the icon to display in relation to + _Alpine_'s nntp URL rendering. + HKLM\Software\Clients\News\Alpine\Protocols\nntp\shell\open\command + _(Default)_: This value is the command that gets run by external + programs when a nntp URL is run with _Alpine_ set as the default + newsreader. + + _Alpine_'s personal configuration file may be in the same directory as + the executable, or if that is inconvenient because the executable is on + a shared or read-only drive, then it can be in a file named by the + $PINERC environment variable, or in $HOME\ALPINE\PINERC, where if not + set, $HOME defaults to the root of the current working drive. + + Most of the other support files key off of the location of the PINERC + file. However, in the case of the NEWSRC file, the path $HOME\NEWSRC is + checked first. Also, the postponed messages and interrupted message + folders are placed in the default folder collection, normally in the + directory $HOME\MAIL. + + The location of the following support files may be controlled by + variables in the personal or global _Alpine_ configuration file: + signature, addressbook (and its index file), postponed messages, and + newsrc. + + _PC-Alpine_ uses the following environment variables: + PINERC + Overrides default path to pinerc file. + PINERCEX + Overrides default path to personal exceptions configuration + file. + PINECONF + Optional path to global _Alpine_ config file. + HOME + If not set, _Alpine_ uses the root of the current drive, e.g. C: + TMPDIR, TMP, or TEMP + Specifies location of temporary storage area, first one set wins + COMSPEC + Specifies shell for external commands. + MAILCAPS + A semicolon delimited list of path names to mailcap files. + + Command Line Arguments + +Alpine + + _Alpine_ and _PC-Alpine_ can accept quite a few command-line arguments. + Many of these arguments overlap with variables in the _Alpine_ + configuration file. If there is a difference, then a flag set in the + command line takes precedence. Both _Alpine_ and _PC-Alpine_ expect + command line arguments (other than addresses) to be preceded by the "-" + (dash) as normally used by UNIX programs. + + _[addresses]_ + Send-to: If you give _Alpine_ an argument or arguments which do + not begin with a dash, _Alpine_ treats them as email addresses. + _Alpine_ will startup in the composer with a message started to + the addresses specified. Once the message is sent, the _Alpine_ + session closes. Standard input redirection is allowed. Separate + multiple addresses with a space between them. Addresses are + placed in the "To" field only. + < _file_ + _Alpine_ will startup in the composer with _file_ read into the + body of the message. Once the message is sent, the _Alpine_ + session closes. + -attach _file_ + Go directly into composer with given file attached. + -attachlist _file-list_ + Go directly into composer with given files attached. This must + be the last option on the command line. + -attach_and_delete _file_ + Go directly into composer with given file attached, delete when + finished. + -aux _local_directory_ + _PC-Alpine_ only. This tells _PC-Alpine_ the local directory to + use for storing auxiliary files, like debug files, address + books, and signature files. The pinerc may be local or remote. + -nosplash + _PC-Alpine_ only. This tells _PC-Alpine_ to not display the + splash screen upon startup. This may be helpful for certain + troubleshooting or terminal server scenarios. + -bail + If the personal configuration file doesn't already exist, exit. + This might be useful if the configuration file is accessed using + some remote filesystem protocol. If the remote mount is missing + this will cause _Alpine_ to quit instead of creating a new + pinerc. + -c _n_ + When used with the -f option, apply the _n_th context. This is + used when there are multiple folder collections (contexts) and + you want to open a folder not in the primary collection. + -conf + Configuration: Prints a sample system configuration file to the + screen or standard output. To generate an initial system + configuration file, execute + alpine -conf > /usr/local/lib/pine.conf + + To generate a system configuration file using settings from an + old system configuration file, execute + alpine -P old-pine.conf -conf > /usr/local/lib/pine.conf + + A system configuration file is not required. + -convert_sigs _-p pinerc_ + Convert signatures contained in signature files into literal + signatures. + -copy_abook _<local_abook_file> <remote_abook_folder>_ + Copy an address book file to a remote address book folder. If + the remote folder doesn't exist, it will be created. If it + exists but the first message in the folder isn't a remote + address book header message, the copy will be aborted. This flag + will not usually be used by a user. Instead, the user will + create a remote address book from within _Alpine_ and copy + entries from the local address book by using aggregate Save in + the address book screen. + -copy_pinerc _<local_pinerc_file> <remote_pinerc_folder>_ + Copy a pinerc configuration file to a remote pinerc folder. If + the remote folder doesn't exist, it will be created. If it + exists but the first message in the folder isn't a remote pinerc + header message, the copy will be aborted. This flag may be + useful to users who already have a local pinerc file and would + like to convert it to a remote pinerc folder and use that + instead. This gives a way to bootstrap that conversion without + having to manually reset all of the variables in the remote + pinerc folder. + -d _debug-level_ + Debug Level: Sets the level of debugging information written by + _Alpine_. _Debug-level_ can be set to any integer 0-9. A debug + level of 0 turns off debugging for the session. (Actually there + are some levels higher than 9, but you probably don't want to + see them. Sensitive authentication information is hidden at + levels less than 10.) + -d _keywords_ + You may use a more detailed version of the debugging flag to set + the debug level in separate parts of _Alpine_. The possibilities + are flush, timestamp, imap=0..4, tcp, numfiles=0..31, and + verbose=0..9. _Flush_ causes debugging information to be flushed + immediately to the debug file as it is written. _Verbose_ is the + general debugging verbosity level. _Timestamp_ causes timestamps + to be added to the debug file, which is useful when you are + trying to figure out what is responsible for delays. _Numfiles_ + sets the number of debug files saved. _Imap_ sets the debug + level for the debugging statements related to the conversation + with the IMAP server, and more generally, for the debugging + related to _Alpine_'s interaction with the C-Client library. If + _imap_ is set higher than 4, sensitive authentication information + will be included in the debug file. _Tcp_ adds more TCP/IP + debugging information. + -f _folder_ + Startup folder: _Alpine_ will open this folder in place of the + standard INBOX. + -F _file_ + Open named text file for viewing and forwarding. + -h + Help: Prints the list of available command-line arguments to the + screen. + -i + _Alpine_ will start up in the FOLDER INDEX screen instead of the + MAIN MENU. + Configuration equivalent: _initial-keystroke-list=i_. + -I _a,b,c,..._ + Initial Keystrokes: _Alpine_ will execute this comma-separated + sequence of commands upon startup. This allows users to get + _Alpine_ to start in any of its menus/screens. You cannot include + any input to the composer in the initial keystrokes. The key + <Return> is represented by a ``CR'' in the keystroke list; the + spacebar is designated by the letters ``SPACE''. Control keys + are two character sequences beginning with ``^'', such as + ``^I''. A tab character is ``TAB''. Function keys are ``F1'' - + ``F12'' and the arrow keys are ``UP'', ``DOWN'', ``LEFT'', and + ``RIGHT''. A restriction is that you can't mix function keys and + character keys in this list even though you can, in some cases, + mix them when running _Alpine_. A user can always use only + _character_ keys in the startup list even if he or she is using + _function_ keys normally, or vice versa. If an element in this + list is a string of characters surrounded by double quotes (") + then it will be expanded into the individual characters in the + string, excluding the double quotes. + Configuration equivalent: _initial-keystroke-list_ + -install + For _PC-Alpine_ only, this option prompts for some basic setup + information, then exits. + -k + Function-Key Mode: When invoked in this way, _Alpine_ expects + the input of commands to be function-keys. Otherwise, commands + are linked to the regular character keys. + Configuration equivalent: _use-function-keys_ included in + _feature-list_. + -n _n_ + Message-Number: When specified, _Alpine_ starts up in the FOLDER + INDEX screen with the current message being the specified + message number. + -nowrite_password_cache + This tells _Alpine_ to use the local password cache if there is + one, but to never offer writing new passwords to the cache. + -o _folder_ + Opens the INBOX (or a folder specified via the -f argument) + ReadOnly. + -p _pinerc_ + Uses the named file as the personal configuration file instead + of _~/.pinerc_ or the default PINERC search sequence _PC-Alpine_ + uses. Pinerc may be either a local file or a remote + configuration folder. + -P _pinerc_ + Uses the named file as the system wide configuration file + instead of _/usr/local/lib/pine.conf_ on UNIX, or nothing on + _PC-Alpine_. Pinerc may be either a local file or a remote + configuration folder. + -passfile _passfile_ + This tells _Alpine_ what file should be used as the password + file. This should be a fully-qualified filename. + -pinerc _file_ + Output fresh pinerc configuration to _file_, preserving the + settings of variables that the user has made. Use _file_ set to + ``-'' to make output go to standard out. + -r + Restricted Mode: For UNIX _Alpine_ only. _Alpine_ in restricted + mode can only send email to itself. Save and export are limited. + -registry _cmd_ + For _PC-Alpine_ only, this option affects the values of + _Alpine_'s registry entries. Possible values for _cmd_ are set, + noset, clear, clearsilent, and dump. _Set_ will always reset + _Alpine_'s registry entries according to its current settings. + _NoSet_ will never set any values in the registry, but it will + still use the values already set in the registry. _Clear_ will + clear the registry values. _Clearsilent_ will silently clear the + registry values. _Dump_ will display the values of current + registry settings. Note that the dump command is currently + disabled. Without the -registry option, _PC-Alpine_ will write + values into the registry only if there currently aren't any + values set. + -sort _key_ + Sort-Key: Specifies the order messages will be displayed in for + the FOLDER INDEX screen. _Key_ can have the following values: + arrival, date, subject, orderedsubj, thread, from, size, score, + to, cc, arrival/reverse, date/reverse, subject/reverse, + orderedsubj/reverse, thread/reverse, from/reverse, size/reverse, + score/reverse, to/reverse, and cc/reverse. The default value is + "arrival". The _key_ value reverse is equivalent to + arrival/reverse. + Configuration equivalent: _sort-key_. + -supported + Some options may or may not be supported depending on how + _Alpine_ was compiled. This is a way to determine which options + are supported in the particular copy of _Alpine_ you are using. + -install + For _PC-Alpine_ only, this option removes references to Alpine + in Windows settings. The registry settings are removed and the + password cache is cleared. + -url _url_ + Open the given URL. + -v + Version: Print version information to the screen. + -version + Version: Print version information to the screen. + -x _exceptions_config_ + Configuration settings in the exceptions config override your + normal default settings. _Exceptions_config_ may be either a + local file or a remote pinerc folder. + -z + Enable Suspend: When run with this flag, the key sequence ctrl-z + will suspend the _Alpine_ session. + Configuration equivalent: _enable-suspend_ included in + _feature-list_. + -_option_=_value_ + Assign _value_ to the config option _option_. For example, + _-signature-file=sig1_ or _-feature-list=signature-at-bottom_. + (Note: feature-list values are additive and features may be + preceded with no- to turn them off). + +Pico + + The following command line options are supported in _Pico_: + + +_n_ + Causes _Pico_ to be started with the cursor located _n_ lines + into the file. (Note: no space between "+" sign and number) + + -a + Display all files and directories, including those beginning + with a period (.). + + -b + Enable the option to Replace text matches found using the "Where + is" command. This now does nothing. Instead, the option is + always turned on (as if the -b flag had been specified). + + -d + Rebind the "delete" key so the character the cursor is on is + rubbed out rather than the character to its left. + + -e + Enable file name completion. + + -f + Use function keys for commands. _This option supported only in + conjunction with UW Enhanced NCSA telnet._ + + -g + Enable "Show Cursor" mode in file browser. Cause cursor to be + positioned before the current selection rather than placed at + the lower left of the display. + + -k + Causes "Cut Text" command to remove characters from the cursor + position to the end of the line rather than remove the entire + line. + + -m + Enable mouse functionality. This only works when _Pico_ is run + from within an X Window System "xterm" window. + + -n_n_ + The -n_n_ option enables new mail notification. The _n_ argument + is optional, and specifies how often, in seconds, your mailbox + is checked for new mail. For example, -n60 causes _Pico_ to + check for new mail once every minute. The default interval is + 180 seconds, while the minimum allowed is 30. (Note: no space + between "n" and the number) + + -o _dir_ + Sets operating directory. Only files within this directory are + accessible. Likewise, the file browser is limited to the + specified directory subtree. + + -p + Preserve the "start" and "stop" characters, typically Ctrl-Q and + Ctrl-S, which are sometimes used in communications paths to + control data flow between devices that operate at different + speeds. + + -q + TermdefWins. Termcap or terminfo escape sequences are used in + preference to default escape sequences. + + -Q _quotestr_ + Set the quote string. Especially useful when composing email, + setting this allows the quote string to be checked for when + Justifying paragraphs. A common quote string is "> ". + + -r_n_ + Sets column used to limit the "Justify" command's right margin. + + -t + Enable "tool" mode. Intended for when _Pico_ is used as the + editor within other tools (e.g., Elm, Pnews). _Pico_ will not + prompt for save on exit, and will not rename the buffer during + the "Write Out" command. + + -v + View the file only, disallowing any editing. + + -version + Print version information. + + -w + Disable word wrap (thus allow editing of long lines). + + _Note: Pico will break any lines over 255 characters when + reading a file, regardless of word wrapping._ + + -x + Disable keymenu at the bottom of the screen. + + -z + Enable ^Z suspension of _Pico_. + +Pilot + + The following command line options are supported in _Pilot_: + + -a + Display all files including those beginning with a period (.). + + -f + Use function keys for commands. _This option supported only in + conjunction with UW Enhanced NCSA telnet._ + + -g + Enable "Show Cursor" mode. Cause cursor to be positioned before + the current selection rather than placed at the lower left of + the display. + + -m + Enable mouse functionality. This only works when _Pilot_ is run + from within an X Window System "xterm" window. + + -n_n_ + The -n_n_ option enables new mail notification. The _n_ argument + is optional, and specifies how often, in seconds, your mailbox + is checked for new mail. For example, -n60 causes _Pilot_ to + check for new mail once every minute. The default interval is + 180 seconds, while the minimum allowed is 30. (Note: no space + between "n" and the number) + + -o _dir_ + Sets operating directory. Only files within the specified + directory are accessible and browsing is limited to the + specified directory subtree. + + -v + Enable single vertical column display. + + -x + Disable keymenu at the bottom of the screen. + + -z + Enable ^Z suspension of _Pilot_. + + Configuration and Preferences + +Alpine Configuration + + There is very little in _Alpine_ which _requires_ compile-time + configuration. In most cases, the compiled-in preferences will suit + users and administrators just fine. When running _Alpine_ on a UNIX + system, the default built-in configuration can be changed by setting + variables in the system configuration files, /usr/local/lib/pine.conf + or /usr/local/lib/pine.conf.fixed. (Actually, these files can be + changed using the configure arguments --with-system-pinerc=VALUE or + --with-system-fixed-pinerc=VALUE.) The location of the pine.conf file + can be changed with the -P command line argument. Both _Alpine_ and + _PC-Alpine_ also use personal (user-based) configuration files. On UNIX + machines, the personal configuration file is the file ~/.pinerc. For + _PC-Alpine_ systems, the personal configuration file is in $PINERC or + <PineRC registry value> or ${HOME}\ALPINE\PINERC or <ALPINE.EXE + dir>\PINERC. Or the personal configuration file can be specified with + the -p command line argument. + + All of these configuration files, other than the fixed system config + pine.conf.fixed on UNIX systems, may optionally be remote configuration + files instead of local files. This is discussed further in the + following section and in Remote Configuration. + + After the personal configuration, _Alpine_ may optionally use a + personal exceptions configuration file which is specified with the + command line option "-x exceptions_config". "Exceptions_config" may + also be either a local file or a remote configuration folder. For Unix + _Alpine_, if you don't have a "-x" command line option, _Alpine_ will + look for the file ".pinercex" in the same local directory that the + regular config file is located in. If the regular config file is remote + then Unix _Alpine_ looks in the home directory for ".pinercex". + + For _PC-Alpine_, if you don't have a "-x" command line option, + _PC-Alpine_ will use the value of the environment variable $PINERCEX. If + that is not set, _PC-Alpine_ will look for the local file "PINERCEX" in + the same local directory that the regular config file is located in. If + the regular config file is remote then _PC-Alpine_ looks in the local + directory specfied by the "-aux local_directory" command line argument, + or the directory ${HOME}\ALPINE, or in <ALPINE.EXE directory>. + + The syntax of a non-list configuration variable is this: + + <variable> = <value> + + If the value is absent then the variable is unset. To set a variable to + the empty value two double quotes (""). This is equivalent to an absent + value except that it overrides any system-wide default value that may + be set. Quotes may be used around any value. All values are strings and + end at the end of the line or the closing quote. Leading and trailing + space is ignored unless it is included in the quotes. There is one + variable, _use-only-domain-name_, for which the only appropriate values + are _yes_ and _no_. That's because it is a variable from the early days + of _Alpine_ before features existed. + + There is also a second type of variable, lists. A list is a + comma-separated list of values. The syntax for a list is: + + <variable> = <value> [, <value> , ... ] + + A list can be continued on subsequent lines by beginning the line with + white-space. Both the per-user and global configuration files may + contain comments which are lines beginning with a #. + + For UNIX _Alpine_, there are five ways in which each variable can be + set. In decreasing order of precedence they are: + 1. the system-wide _fixed_ configuration file + 2. a command line argument + 3. the personal exceptions file + 4. the personal configuration file + 5. the system-wide configuration file. + + If the variable is not set in any of those places, there is a default + setting in the source code. + + So, system-wide fixed settings always take precedence over command line + flags, which take precedence over per-user exception settings, which + take precedence over per-user settings, which take precedence over + system-wide configuration settings. _PC-Alpine_ has the same list, + except that it does not use a system-wide _fixed_ configuration file. + This can be modified slightly by using inheritance, which is covered + below. + + You may get a sample/fresh copy of the system configuration file by + running _alpine -conf_. The result will be printed on the standard + output with very short comments describing each variable. (The online + help in the Setup screens provides much longer comments.) If you need + to fix some of the configuration variables, you would use the same + template for the fixed configuration file as for the regular + system-wide configuration file. (If it isn't clear, the purpose of the + fixed configuration file is to allow system administrators to restrict + the configurability of _Alpine_. It is by no means a bullet-proof + method.) _Alpine_ will automatically create the personal configuration + file the first time it is run, so there is no need to generate a + sample. _Alpine_ reads and writes the personal configuration file + occasionally during normal operation. Users will not normally look at + their personal configuration file, but will use the Setup screens from + within _Alpine_ to set the values in this file. If a user does add + additional comments to the personal configuration file they will be + retained. + + References to environment variables may be included in the _Alpine_ + configuration files. The format is $variable or ${variable}. The + character ~ will be expanded to the $HOME environment variable. For a + more complete explanation of how environment variables work, see the + section Using Environment Variables. + + When environment variables are used for _Alpine_ settings which take + lists, you must have an environment variable set for each member of the + list. That is, _Alpine_ won't properly recognize an environment + variable which is set equal to a comma-delimited list. It is OK to + reference unset environment variables in the _Alpine_ configuration + file, which will expand to nothing. + + Remote and Local Configuration + + There are two types of storage for configuration information. _Local_ + configuration files are used by default. These are just regular files + on the UNIX system or on the PC. _Remote_ configuration folders are + stored on an IMAP server. The advantage of using a remote configuration + is that the same information may be accessed from multiple platforms. + For example, if you use one computer at work and another at home, the + same configuration could be used from both places. A configuration + change from one place would be seen in both places. Technical + information about remote configuration is in Remote Configuration. + + Generic and Exceptional Configuration + + If you use _Alpine_ from more than one platform it may be convenient to + split your configuration information into two pieces, a generic piece + and exceptions which apply to a particular platform. For example, + suppose you use _Alpine_ from home and from work. Most of your + configuration settings are probably the same in both locations, so + those settings belong in the generic settings configuration. However, + you may use a different SMTP server and INBOX from home than you do + from work. The "smtp-server" and "inbox-path" variables could be part + of your exceptional configuration so that they could be different in + the two places. + + You can use the command line option "-x config" to split your + configuration into generic and exceptional pieces. Config may be either + local or remote. + + For most people, splitting the configuration information into two + pieces is only going to be useful if the generic information is + accessed remotely. If you already have a local pinerc file with + settings you like you may find that the command Setup/RemoteConfigSetup + will be useful in helping you convert to a remote configuration. The + command line flag copy_pinerc may also be useful. + + Configuration Inheritance + + Configuration inheritance is a power user feature. It is confusing and + not completely supported by the configuration user interface. + + For configuration variables which are lists, like "smtp-server" or + "incoming-folders", the inheritance mechanism makes it possible to + _combine_ the values of options from different configuration locations + instead of _replacing_ the value. Configuration Inheritance has more + information about how inheritance is used. + __________________________________________________________________ + +General Configuration Variables + + The following is a list of all _Alpine_ configuration variables, in + alphabetical order. Note that not all variables apply to all versions + of _Alpine_ and that some variables are only applicable in a system + configuration file and some are only applicable in a personal + configuration file. These are configuration _variables_. Configuration + Features are in a separate section. + + _addrbook-sort-rule_ + This variable sets up the default address book sorting. + Currently, _Alpine_ will accept the values _dont-sort_, + _fullname-with-lists-last_, _fullname_, + _nickname-with-lists-last_, and _nickname_. The default is to sort + by fullname with lists last. If you use an address book from + more than one computer and those computers sort the address book + differently then the sort order will be the order where the last + change to the address book was made. There are two reasons the + sorting might be different on different systems. First, the + addrbook-sort-rule may be set differently in the two places. + Second, the collation rules on the two computers may be + different. For example, one system might ignore special + characters while the other doesn't or one may sort upper and + lower case letters together while the other doesn't. In any + case, the order you see is the order on the system where the + last change was made, for example by an address book edit or a + Take Address command. + This option is displayed as "Addressbook Sort Rule". + _address-book_ + A list of personal address books. Each entry in the list is an + optional nickname followed by a pathname or file name relative + to the home directory. The nickname is separated from the rest + of the line with whitespace. Instead of a local pathname or file + name, a remote folder name can be given. This causes the address + book to be a Remote address book. Remote folder syntax is + discussed in Syntax for Remote Folders. This list of address + books will be combined with the global-address-book list to + arrive at the complete set of address books. + _addressbook-formats_ + This option specifies the format that address books are + displayed in. By default, address books are displayed with the + nicknames in the first column, the fullnames in the second + column, and addresses in the third column. The system figures + out reasonable defaults for the widths of the columns. An + address book may be given a different format by listing special + tokens in the order you want them to display. The possible + tokens are NICKNAME, FULLNAME, ADDRESS, FCC, and COMMENT. More + details are included in the online help for this variable. + _alt-addresses_ + This option provides a place for you to list alternate email + addresses you may have. Each address in the list should be the + actual email address part of an address, without the full name + field or the angle brackets. For example: + + user@example.com + The matching is case-insensitive, so this would match any of + User@example.com, user@Example.Com, or USER@EXAMPLE.COM as well. + If set, the option affects the behavior of the Reply command and + the "+" symbol in the MESSAGE INDEX, which denotes that a + message has been addressed specifically to you. + In the default INDEX display the personal name (or email + address) of the person listed in the message's "From:" header + field is usually displayed except when that address is yours or + one of your alternate addresses. In that case you will usually + see the name of the first person specified in the message's + "To:" header field with the prefix "To: " prepended. + With respect to Reply, the reply-to-all option will exclude + addresses listed here. + The feature copy-to-address-to-from-if-it-is-us is somewhat + related to this option. + In addition to a list of actual addresses, you may use regular + expressions (as used with egrep with the ignore case flag) to + describe the addresses you want to match. _Alpine_ will somewhat + arbitrarily interpret your entry as a regular expression if it + contains any of the characters *, |, +, ?, {, [, ^, $, or \. + Otherwise, it will be treated literally. The feature + disable-regular-expression-matching-for-alternate-addresses may + be used to turn off regular expression processing regardless of + whether or not special characters appear in the entry. + A description of how regular expressions work is beyond the + scope of this help text, but some examples follow. + The entry + + .*@example.com + in the alt-addresses list would mean that any address with a + domain name of example.com (such as fred@example.com or + wilma@example.com) will be considered one of your alternate + addresses. Strictly speaking, the dot in example.com ought to be + escaped with a backslash, as in example\.com, and a dollar sign + anchor ought to come at the end of the expression to prevent a + match of example.com.org. Complicating things further, the + dollar sign is special in the _Alpine_ configuration (it + signifies environment variable expansion) so the dollar sign + should be doubled or backslash escaped for _Alpine_'s sake. + Quotes around the whole expression will not escape the dollar + sign successfully. So this example should look like + + .*@example\.com$$ + The entry + + ^fred[0-9]*@example.com$$ + would match fred3@example.com or fred17@example.com as well as + fred@example.com. + You could match all addresses that look like + fred+stuff@example.com for any value of stuff with the entry + + ^fred\+.*@example.com$$ + Notice that you have to escape the plus sign with a backslash + because plus is a special character in regular expressions. If + you wanted to match plain fred as well as fred+stuff the + expression + + ^fred(()|\+.*)@example.com$$ + would do it, but it would be easier to just add fred@example.com + as a separate entry. + One more example, a match of all first-level subdomains, is + given by + + ^fred@[[:alnum:]_-]*\.example\.com$$ + Because the regular expression matching is based on an old + library (hs_regex) the regular expressions might not work + exactly as you expect, but they should be close. + This option is displayed as "Alternate Addresses". + _bugs-additional-data_ + System-wide configuration files only. Program/Script used by + _Report Bug_ command. Output from the program/script is captured + and attached to the bug report. + _bugs-fullname_, _bugs-address_, _local-fullname_, _local-address_, + _suggest-fullname_, and _suggest-address_ + System-wide configuration files only. These are used by the bug + report commands which can be accessed from some of the Help + screens. + _busy-cue-rate_ + When _Alpine_ is delayed for some reason it usually shows that + something is happening with a small animated display in the + status message line near the bottom of the screen. This option + sets how frequently the characters (for example, a spinning bar) + in the active status message lines are updated. At most, it can + be set to be udpated 20 times per second. + Setting this value to zero will prevent display of the + animations altogether. + The option busy-cue-spinner-only can be used to remove the + randomness from this animated display. + _character-set_ + This is now obsolete, replaced by three separate variables: + _display-character-set_, _keyboard-character-set_, and + _posting-character-set_. See the section on International + Character Sets for more details. + _color-style_ + UNIX _Alpine_ only (color is automatically on with _PC-Alpine_). + If the terminal or terminal emulator you are using is capable of + displaying colors, this variable controls whether or not color + will be used in _Alpine_. If you turn color on and things are + set up correctly, you should see color appear on the screen + immmediately. Modern terminal emulators are usually capable of + displaying colors. + This variable may be set to any of the following values: + + no-color + Don't use color. + + use-termdef + In order to decide if your terminal is capable of color, + _Alpine_ looks in the terminal capabilities database, + TERMINFO or TERMCAP, depending on how _Alpine_ was + compiled. This is a good option to choose if you switch + between a color and a non-color terminal with the same + _Alpine_ configuration. _Alpine_ will know to use color on + the color terminal because it is described in the termcap + entry, and _Alpine_ will know to use black and white on + the non-color terminal. Color Details has more information + about configuring a termcap entry for color. This is + usually something a system administrator does. + + force-ansi-8color + Because setting up a termcap entry is confusing and + because the terminal capabilities database is often not + correctly configured for color, this choice and the next + may be easier for you to use. If your terminal emulator + responds to ANSI color escape sequences, which many do, + this option will cause _Alpine_ to believe your terminal + will respond to the escape sequences which produce eight + different foreground and background colors. The escape + sequences used to set the foreground colors are + + ESC [ 3 <color_number> m + + where the color_number is an ASCII digit between 0 and 7. + The numbers 0 through 7 should correspond to the colors + black, red, green, yellow, blue, magenta, cyan, and white. + Some terminal emulators use a pre-ANSI scheme which swaps + the colors blue and red and the colors yellow and cyan. + This will cause the default colors to be different, but + other than that things should work fine. There is also a + 9th color available, the last one shown, which is the + default color from the terminal emulator. When used as a + background color some people refer to this color as + "transparent", which is why the letters "TRAN" are shown + in the color swatch of the SETUP COLOR screen. The + foreground transparent color is shown as the color of the + "TRAN" text. (The transparent color will not work + correctly in a PC-Alpine configuration.) The escape + sequences used to set the background colors are the same + as for the foreground colors except a "4" replaces the + "3". + + Note: With the Tera Term terminal emulator this setting + works well. You should also have the Tera Term "Full + color" option turned OFF. You may find the "Full color" + option in Tera Term's "Setup" menu, in the "Window" + submenu. + + force-ansi-16color + Many terminal emulators know about the same eight colors + above plus eight more. This option attempts to use all 16 + colors. The same escape sequences as for the eight-color + terminal are used for the first eight colors. The escape + sequences used to set foreground colors 8-15 are the same + as for 0-7 except the "3" is replaced with a "9". The + background color sequences for colors 8-15 are the same as + for 0-7 except the "4" is replaced with "10". You can tell + if the 16 colors are working by turning on this option and + then going into one of the color configuration screens, + for example, the configuration screen for Normal Color. If + you see 16 different colors to select from (plus a 17th + for the transparent color), it's working. + + force-xterm-256color + Some versions of xterm (and some other terminal emulators) + have support for 256 colors. The escape sequences used to + set the foreground colors are + + ESC [ 38 ; 5 ; <color_number> m + + where the color_number is an ASCII digit between 0 and + 255. Background colors are the same with the 38 replaced + with a 48. The numbers 0 through 15 are probably similar + to the 16 color version above, then comes a 6x6x6 color + cube, followed by 24 colors of gray. The terminal default + (transparent) color is the 257th color at the bottom. Some + terminal emulators will misinterpret these escape + sequences causing the terminal to blink or overstrike + characters or to do something else undesirable. + + The PuTTY terminal emulator has an option called "Allow + terminal to use xterm 256-colour mode" which allows PuTTY + to work well with this 256-color setting. + + There are two other possible color values which may be useful in + some situations. In the color configuration screens there will + sometimes be a color which has the label "NORM" inside its color + swatch. If this is selected the corresponding foreground or + background Normal Color will be used. Another similar color is + the one that has the label "NONE" inside its color swatch. The + meaning of this setting is that no color changing will be done. + This NONE color is only useful in contexts where _Alpine_ is + already coloring the text some color other than the Normal + Color. For example, if the Reverse Color is set then the current + line in the MESSAGE INDEX will be colored. If one of the index + symbols (for example, the Index-to-me Symbol) has the NONE color + as its background then the symbol's foreground color will be + used to draw the actual text but the background color will be + the same as whatever the background color already was. The color + values which end up in the configuration file for these special + values are the 11-character words "norm-padded", "none-padded", + and "transparent". + The normal default is "no-color". + Once you've turned on color you may set the colors of many + objects on the screen individually. The Color Configuration + section has more information, or you may just try it by running + the "Setup" command and typing "K" for Kolor to enter the color + configuration screen (Kolor instead of Color because C means + Config). Most categories of color which _Alpine_ supports are + configurable there. Index line color is configured separately. + _composer-word-separators_ + This option affects how a "word" is defined in the composer. The + definition of a word is used when using the Forward Word and + Backward Word commands in the composer, as well as when using + the spell checker. Whitespace is always considered a word + separator. Punctuation (like question marks, periods, commas, + and so on) is always a word separator if it comes at the end of + a word. By default, a punctuation character which is in the + middle of a word does not break up that word as long as the + character before and the character after it are both + alphanumeric. If you add a character to this option it will be + considered a word separator even when it occurs in the middle of + an alphanumeric word. For example, if you want to skip through + each part of an address instead of skipping the whole address at + once you might want to include"@" and "." in this list. If you + want the word-skipper to stop on each part of a UNIX filename + you could add "/" to the list. The equal sign and dash are other + possibilities you might find helpful. + _composer-wrap-column_ + This option specifies an aspect of _Alpine_'s Composer. This + gives the maximum width that auto-wrapped lines will have. It's + also the maximum width of lines justified using the ^J Justify + command. The normal default is _74_. The largest allowed setting + is normally _80_ in order to prevent very long lines from being + sent in outgoing mail. When the mail is actually sent, trailing + spaces will be stripped off of each line. + _current-indexline-style_ + current-indexline-style. + _customized-hdrs_ + You may add your own custom headers to outgoing messages. Each + header you specify here must include the header tag (Reply-To:, + Approved:, etc.) and may optionally include a value for that + header. If you want to see these custom headers each time you + compose a message, you must add them to your + default-composer-hdrs list, otherwise they become part of the + rich header set which you only see when you press the rich + header command. (If you are looking for a way to change which + headers are _displayed_ when you view a message, take a look at + the viewer-hdrs option instead.) Here's an example which shows + how you might set your From address + + From: Full Name <user@example.com> + and another showing how you might set a Reply-To address + + Reply-To: user@example.com + You may also set non-standard header values here. For example, + you could add + + Organization: My Organization Name + or even + + X-Favorite-Colors: Purple and Gold + If you include a value after the colon then that header will be + included in your outgoing messages unless you delete it before + sending. If a header in the Customized-Headers list has only a + tag but no value, then it will not be included in outgoing + messages unless you edit a value in manually. For example, if + + Reply-To: + is in the list, then the Reply-To header will be available for + editing but won't be included unless a value is added while in + the composer. + It's actually a little more complicated than that. The values of + headers that you set with the Customized-Headers option are + defaults. If the message you are about to compose already has a + value for a header, that value is used instead of a value from + your Customized-Headers. For example, if you are Replying to a + message the Subject field will already be filled in. In that + case, if the Customized-Headers list contains a Subject line, + the custom subject will _NOT_ be used. The subject derived from + the subject of the message you are Replying to will be used + instead. + It is also possible to make header setting even more complicated + and more automatic by using Roles, but if all you want to do is + set a default value for a header, you don't need to think about + Roles. + If you change your From address you may also find it useful to + add the changed From address to the alt-addresses configuration + option. + Limitation: Because commas are used to separate the list of + Customized-Headers, it is not possible to have the value of a + header contain a comma. Nor is there currently an "escape" + mechanism provided to make this work. + This option is displayed as "Customized Headers". + _dead-letter-files_ + This option affects _Alpine_'s behavior when you cancel a + message being composed. _Alpine_'s usual behavior is to write + the canceled message to a file named "dead.letter" in your home + directory, or "DEADLETR" when using _PC-Alpine_, overwriting any + previous message. + If you set this option to a value higher than one, then that + many copies of dead letter files will be saved. For example, if + you set this option to "3" then you may have files named + "DEADLETR", "DEADLETR2", and "DEADLETR3"; or "dead.letter", + "dead.letter2", and "dead.letter3". In this example, the most + recently cancelled message will be in "dead.letter", and the + third most recently cancelled message will be in "dead.letter3". + The fourth most recently cancelled message will no longer be + saved. + If you set this option to zero, then NO record of canceled + messages is maintained. + If the feature Quell-Dead-Letter-On-Cancel is set, that + overrides whatever you set for this option. If this option had + existed at the time, then the Quell feature would not have been + added, but it is still there for backwards compatibility. So, in + order for this option to have the desired effect, make sure the + Quell feature is turned off. + _default-composer-hdrs_ + You can control which headers you want visible when composing + outgoing email using this option. You can specify any of the + regular set, any Rich Header, or any Customized-Hdrs which you + have already defined. If you use this setting at all, you must + specify all the headers you want to see, you can't just add to + the regular header set. The default set is To:, Cc:, Attchmnt:, + and Subject:. + Note that the "Newsgroups:" header will be abbreviated in the + Composer display, but should be spelled out in full here. + This option is displayed as "Default Composer Headers". + _default-fcc_ + The name of the folder to which all outgoing mail goes is set + here. The compiled-in default is _sent-mail_ (UNIX) or _sentmail_ + (PC). It can be set to "" (two double quotes with nothing + between them) to turn off saving copies of outgoing mail. If + _default-fcc_ is a relative file name, then it is relative to + your default collection for saves (see folder-collections). + This option is displayed as "Default Fcc (File carbon copy)". + _default-saved-msg-folder_ + This option determines the default folder name for _Saves_... If + this is not a path name, it will be in the default collection + for saves. Any valid folder specification, local or IMAP, is + allowed. This default folder only applies when the + saved-msg-name-rule doesn't override it. Unix _Alpine_ default + is normally _saved-messages_ in the default folder collection. + _PC-Alpine_ default is _SAVEMAIL_ (normally stored as + _SAVEMAIL.MTX_). + This option is displayed as "Default Saved Message Folder". + _disable-these-authenticators_ + This variable is a list of SASL (Simple Authentication and + Security Layer) authenticators which will be disabled. SASL is a + mechanism for authenticating to IMAP, POP3, SMTP, and other + network servers. + _Alpine_ matches its list of supported authenticators with the + server to determine the most secure authenticator that is + supported by both. If no matching authenticators are found, + _Alpine_ will revert to plaintext login (or, in the case of SMTP, + will be unable to authenticate at all). + The candidates for disabling are listed below. There may be more + if you compile _Alpine_ with additional authenticators and/or a + newer version of the c-client library. + + GSSAPI + + CRAM-MD5 + + PLAIN + + LOGIN + Normally, you will not disable any authenticators. There are two + exceptions: + 1. You use a broken server that advertises an authenticator, but + does not actually implement it. + 2. You have a Kerberos-capable version of _Alpine_ and the server + is also Kerberos-capable, but you can not obtain Kerberos + credentials on the server machine, thus you desire to disable + GSSAPI (which in turn disables _Alpine_'s Kerberos support). + It is never necessary to disable authenticators, since _Alpine_ + will try other authenticators before giving up. However, + disabling the relevant authenticator avoids annoying error + messages. + _disable-these-drivers_ + This variable is a list of mail drivers which will be disabled. + The candidates for disabling are listed below. There may be more + in the future if you compile _Alpine_ with a newer version of + the c-client library. + + mbox + + mbx + + mh + + mix + + mmdf + + mtx + + mx + + news + + phile + + tenex + + unix + The _mbox_ driver enables the following behavior: if there is a + file called mbox in your home directory, and if that file is + either empty or in Unix mailbox format, then every time you open + _INBOX_ the _mbox_ driver will automatically transfer mail from + the system mail spool directory into the mbox file and delete it + from the spool directory. If you disable the _mbox_ driver, this + will not happen. + It is not recommended to disable the driver which supports the + system default mailbox format. On most non-SCO systems, that + driver is the _unix_ driver. On most SCO systems, it is the + _mmdf_ driver. The system default driver may be configured to + something else on your system; check with your system manager + for additional information. + It is most likely not very useful for you to disable any of the + drivers other than possibly _mbox_. You could disable some of + the others if you know for certain that you don't need them but + the performance gain in doing so is very modest. + _display-character-set_ + See the discussion in International Character Sets for details. + _display-filters_ + This option defines a list of text-filtering commands (programs + or scripts) that may be used to filter text portions of received + messages prior to their use (e.g., presentation in the "Message + Text" display screen). For security reasons, the full path name + of the filter command must be specified. + Display filters do not work with _PC-Alpine_. + The command is executed and the message is piped into its + standard input. The standard output of the command is read back + by _Alpine_. The __TMPFILE__ token (see below) overrides this + default behavior. + The filter's use is based on the configured _trigger_ string. + The format of a filter definition is: + + <trigger> <command> <arguments> + You can specify as many filters as you wish, separating them + with a comma. Each filter can have only one trigger and command. + Thus, two trigger strings which invoke the same command require + separate filter specifications. + The _trigger_ is simply text that, if found in the message, will + invoke the associated command. If the trigger contains any space + characters, it must be placed within quotes. Likewise, should + you wish a filter to be invoked unconditionally, define the + trigger as the null string, "" (two consecutive double-quote + characters). If the trigger string is found anywhere in the text + of the message the filter is invoked. Placing the trigger text + within the tokens defined below changes where within the text + the trigger must be before considering it a match. + Trigger Modifying Tokens: + + __CHARSET(string)__ + This token tells _Alpine_ to invoke the supplied command + if the text is in a character set matching string (e.g., + ISO-8859-2 or ISO-2022-JP). + + __LEADING(string)__ + This token tells _Alpine_ to invoke the supplied command + if the enclosed string is found to be the first + non-whitespace text. + NOTE: Quotes are necessary if string contains the space + character. + + __BEGINNING(string)__ + This token tells _Alpine_ to invoke the supplied command + if the enclosed string is found at the beginning of any + line in the text. + NOTE: Quotes are necessary if string contains the space + character. + + The "command" and "arguments" portion is simply the command line + to be invoked if the trigger string is found. Below are tokens + that _Alpine_ will recognize and replace with special values + when the command is actually invoked. + Command Modifying Tokens: + + __TMPFILE__ + When the command is executed, this token is replaced with + the path and name of the temporary file containing the + text to be filtered. _Alpine_ expects the filter to + replace this data with the filter's result. NOTE: Use of + this token implies that the text to be filtered is not + piped into standard input of the executed command and its + standard output is ignored. _Alpine_ restores the tty + modes before invoking the filter in case the filter + interacts with the user via its own standard input and + output. + + __RESULTFILE__ + When the command is executed, this token is replaced with + the path and name of a temporary file intended to contain + a status message from the filter. _Alpine_ displays this + in the message status field. + + __DATAFILE__ + When the command is executed, this token is replaced with + the path and name of a temporary file that _Alpine_ + creates once per session and deletes upon exit. The file + is intended to be used by the filter to store state + information between instances of the filter. + + __PREPENDKEY__ + When the command is executed, this token indicates that a + random number will be passed down the input stream before + the message text. This number could be used as a session + key. It does not appear as a command-line argument. It is + sent in this way to improve security. The number is unique + to the current _Alpine_ session and is only generated once + per session. + + The feature disable-terminal-reset-for-display-filters is + related. + Performance caveat/considerations: + Testing for the trigger and invoking the filter doesn't come for + free. There is overhead associated with searching for the + trigger string, testing for the filter's existence and actually + piping the text through the filter. The impact can be reduced if + the Trigger Modifying Tokens above are employed. + Limitation: + If Header Colors are being used, the sequences of bytes which + indicate color changes will be contained in the text which is + passed to the display-filter. If this causes problems you'll + need to turn off Header Colors. The thirteen bytes which + indicate a color change are the character \377 followed by \010 + for a foreground color or \011 for a background color. Then + comes eleven characters of RGB data which looks something like + 255, 0,255, depending on the particular color, of course. + _download-command_ + This option affects the behavior of the _Export_ command. It + specifies a Unix program name, and any necessary command line + arguments, that _Alpine_ can use to transfer the exported + message to your personal computer's disk. + _download-command-prefix_ + This option is used in conjunction with the _download-command_ + option. It defines text to be written to the terminal emulator + (via standard output) immediately prior to starting the download + command. This is useful for integrated serial line file transfer + agents that permit command passing (e.g., Kermit's APC method). + _editor_ + UNIX _Alpine_ only. Sets the name of the alternate editor for + composing mail (message text only, not headers). It will be + invoked with the "^_" command or it will be invoked + automatically if the enable-alternate-editor-implicitly feature + is set. + _empty-header-message_ + When sending, if both the To and Cc fields are empty and you are + sending the message to a Bcc, _Alpine_ will put a special + address in the To line. The default value is + "undisclosed-recipients: ;". The reason for this is to avoid + embarrassment caused by some Internet mail transfer software + that interprets a "missing" To: header as an error and replaces + it with an Apparently-to: header that may contain the addresses + you entered on the Bcc: line, defeating the purpose of the Bcc. + You may change the part of this message that comes before the ": + ;" by setting the _empty-header-message_ variable to something + else. + _fcc-name-rule_ + Determines default folder name for fcc when composing. + Currently, _Alpine_ will accept the values _default-fcc_, + _by-recipient_, or _last-fcc-used_. If set to _default-fcc_, then + _Alpine_ will use the value defined in the default-fcc variable + (which itself has a default) for the Fcc header field. If set to + _by-recipient_, then _Alpine_ will use the name of the recipient + as a folder name for the fcc. The relevant recipient is the + first address in the To field. If set to "last-fcc-used", then + _Alpine_ will offer to Fcc to whatever folder you used + previously. In all cases, the field can still be edited after it + is initially assigned. If the fcc field in the address book is + set for the first To address, that value over-rides any value + derived from this rule. + _feature-list_ + This is a list of the many features (options) which may be + turned on or off. There is a separate section titled + Configuration Features which explains each of the features. + There is some additional explanation about the _feature-list_ + variable itself in Feature List Variable. + _file-directory_ + _PC-Alpine_ only. This value affects the Composer's "^J Attach" + command, the Attachment Index Screen's "S Save" command, and the + Message Index's "E Export" command. + Normally, when a filename is supplied that lacks a leading + "path" component, _Alpine_ assumes the file exists in the user's + home directory. Under Windows operating systems, this definition + isn't always clear. This feature allows you to explictly set + where _Alpine_ should look for files without a leading path. + NOTE: this feature's value is ignored if either use-current-dir + feature is set or the PINERC has a value for the operating-dir + variable. + _folder-collections_ + This is a list of one or more collections where saved mail is + stored. See the sections describing folder collections and + collection syntax for more information. The first collection in + this list is the default collection for _Save_s, including + default-fcc's. + _folder-extension_ + _PC-Alpine_ only. File extension used for local folder names. + This is .MTX by default. + _folder-reopen-rule_ + _Alpine_ normally checks for new mail in the currently open + folder and in the INBOX every few minutes. + There are some situations where automatic new-mail checking does + not work. For example, if a mail folder is opened using the POP + protocol or a newsgroup is being read using the NNTP protocol, + then new-mail checking is disabled. + It may be possible to check for new mail in these cases by + reopening the folder. _Alpine_ does not do this for you + automatically, but you may do the commands manually to cause + this to happen. You reopen by going back to the folder list + screen from the message index screen with the "<" command, and + then going back into the message index screen with the ">" + command. (Actually, any method you would normally use to open a + folder will work the same as the "<" followed by ">" method. For + example, the GoTo Folder command will work, or you may use L to + go to the Folder List screen and Carriage Return to reopen the + folder.) + There are some cases where _Alpine_ knows that reopening the + folder should be useful as a way to discover new mail. At the + time of this writing, connections made using the POP protocol, + news reading using the NNTP protocol, local news reading, and + local ReadOnly folders which are in the traditional UNIX or the + MMDF format all fall into this category. There are other cases + where it _may_ be a way to discover new mail, but _Alpine_ has + no way of knowing, so it might also just be an exercise in + futility. All remote, ReadOnly folders other than those listed + just above fall into this category. The setting of this option + together with the type of folder controls how _Alpine_ will + react to the apparent attempt to reopen a folder. + If you don't reopen, then you will just be back in the message + index with no change. You left the index and came back, but the + folder remained "open" the whole time. However, if you do reopen + the folder, the folder is closed and then reopened. In this + case, the current state of the open folder is lost. The New + status, Important and Answered flags, selected state, Zoom + state, collapsed or expanded state of threads, current message + number, and any other temporary state is all lost when the + reopen happens. For POP folders (but not NNTP newsgroups) the + Deleted flags are also lost. + In the possibilities listed below, the text says "POP/NNTP" in + several places. That really implies the case where _Alpine_ + knows it is a good way to discover new mail, which is more than + just POP and NNTP, but POP and NNTP are the cases of most + interest. This option probably has more possible values than it + deserves. They are: + + Always reopen + _Alpine_ will not ask whether you want to reopen but will + just do the reopen whenever you type a command that + implies a reopen, regardless of the access method. In + other words, it is assumed you would always answer Yes if + asked about reopening. + + Yes for POP/NNTP, Ask about other remote [Yes] + _Alpine_ will assume a Yes answer if the access method is + POP or NNTP, but will ask you whether to reopen other + remote folders, with a default answer of Yes. + + Yes for POP/NNTP, Ask about other remote [No] + _Alpine_ will assume a Yes answer if the access method is + POP or NNTP, but will ask you whether to reopen other + remote folders, with a default answer of No. + + Yes for POP/NNTP, No for other remote + _Alpine_ will assume a Yes answer if the access method is + POP or NNTP, and will assume a No answer for all other + remote folders. + + Always ask [Yes] + _Alpine_ will not differentiate based on access method. It + will always ask for all remote folders, with a default + answer of Yes. + + Always ask [No] + _Alpine_ will not differentiate based on access method. It + will always ask for all remote folders, with a default + answer of No. + + Ask about POP/NNTP [Yes], No for other remote + _Alpine_ will ask if the access method is POP or NNTP, + with a default answer of Yes. It will never attempt to + reopen other remote folders. + + Ask about POP/NNTP [No], No for other remote + This is the default. _Alpine_ will ask if the access + method is POP or NNTP, with a default answer of No. It + will never attempt to reopen other remote folders. + + Never reopen + _Alpine_ will never attempt to reopen already open + folders. + + Remember, wherever it says POP or NNTP above it really means POP + or NNTP or any of the other situations where it is likely that + reopening is a good way to discover new mail. + There is an alternative that may be of useful in some + situations. Instead of manually checking for new mail you can + set up a Mail Drop and automatically check for new mail. + _folder-sort-rule_ + This option controls the order in which folder list entries will + be presented in the FOLDER LIST screen. Choose one of the + following: + + _Alphabetical_ + sort by alphabetical name independent of type + + _Alpha-with-dirs-last_ + sort by alphabetical name grouping directory entries to + the end of the list + + _Alpha-with-dirs-first_ + sort by alphabetical name grouping directory entries to + the start of the list + + The normal default is _Alphabetical_. + _font-name_ + Winsock version of _PC-Alpine_ only. + _font-size_ + Winsock version of _PC-Alpine_ only. + _font-style_ + Winsock version of _PC-Alpine_ only. + _forced-abook-entry_ + System-wide _Alpine_ configuration files only. Force these + address book entries into all writable personal address books. + This is a list variable. Each item in the list has the form: + + Nickname | Fullname | Address + with optional whitespace in all the obvious places. + _form-letter-folder_ + A Form Letter Folder is a mail folder that is intended to + contain messages that you have composed and that are intended to + be sent in their original form repeatedly. + Setting this variable will alter _Alpine_'s usual behavior when + you execute the Compose command. Normally, _Alpine_ offers a + chance to continue a postponed or interrupted message should one + or the other exist. When this variable is set to a folder name + that exists, _Alpine_ will also offer the chance to select a + message from the folder to insert into the composer, much like + when continuing a postponed message. The difference, however, is + that _Alpine_ will not automatically delete the selected message + from the Form Letter Folder. + Setting this variable will also affect _Alpine_'s behavior when + you Postpone a message from the composer. Normally, _Alpine_ + simply stashes the message away in your Postponed-Folder. + Regardless of the specified folder's existence, _Alpine_ will + ask which folder you intend the message to be stored in. Choose + the "F" option to store the message in your Form Letter Folder. + This is the most common way to add a message to the folder. + Another method of adding messages to the folder is via the + _Alpine_ composer's Fcc: field. If you are sending a message that + you expect to send in the same form again, you can enter the + Form Letter Folder's name in this field. _Alpine_, as usual, + will copy the message as it's sent. Note, when you later select + this message from your Form Letter Folder, it will have the same + recipients as the original message. + To delete a message from the Form Letter Folder, you can either + select the folder from a suitable FOLDER LIST screen, or use the + Delete command in the MESSAGE INDEX offered when selecting from + the folder as part of the Compose command. You can delete a Form + Letter Folder just as any other folder from a suitable FOLDER + LIST screen. + You may find that the Roles facility can be used to replace the + Form Letter Folder. + _global-address-book_ + A list of shared address books. Each entry in the list is an + optional nickname followed by a pathname or file name relative + to the home directory. A SPACE character separates the nickname + from the rest of the line. Instead of a local pathname or file + name, a remote folder name can be given. This causes the address + book to be a Remote address book. Remote folder syntax is + discussed in Syntax for Remote Folders. This list will be added + to the address-book list to arrive at the complete set of + address books. Global address books are defined to be ReadOnly. + _goto-default-rule_ + This value affects _Alpine_'s behavior when using the _Goto_ + command. There are five possible values for this option: + + _folder-in-first-collection_ + _Alpine_ will offer the most recently visited folder in + the default collection found in the "Collection List" + screen as the default. + + _inbox-or-folder-in-first-collection_ + If the current folder is _INBOX_, _Alpine_ will offer the + most recently visited folder in the default collection + found in the "Collection List" screen. If the current + folder is other than _INBOX_, _INBOX_ is offered as the + default. + + _inbox-or-folder-in-recent-collection_ + This is _Alpine_'s default behavior. If the current folder + is _INBOX_, _Alpine_ will offer the last open folder as + the default. If the current folder is other than _INBOX_, + _INBOX_ is offered as the default. + + _first-collection-with-inbox-default_ + Instead of offering the most recently visited folder in + the default collection, the default collection is offered + but with _INBOX_ as the default folder. If you type in a + folder name it will be in the default collection. If you + simply accept the default, however, your _INBOX_ will be + opened. + + _most-recent-folder_ + The last accepted value simply causes the most recently + opened folder to be offered as the default regardless of + the currently opened folder. + + NOTE: The default while a newsgroup is open remains the same; + the last open newsgroup. + _header-general-background-color_ + _header-general-foreground-color_ + Header Colors. + _image-viewer_ + This variable names the program to call for displaying parts of + a MIME message that are of type IMAGE. If your system supports + the _mailcap_ system, you don't need to set this variable. + _inbox-path_ + This specifies the name of the folder to use for the _INBOX_. By + default this is unset and the system's default is used. The most + common reason for setting this is to open an IMAP mailbox for + the _INBOX_. For example, _{imap5.u.example.edu}inbox_ will open + the user's standard _INBOX_ on the mail server, _imap5_. + _incoming-archive-folders_ + This is like read-message-folder, only more general. This is a + list of folder pairs, with the first separated from the second + in the pair by a space. The first folder in a pair is the folder + you want to archive, and the second folder is the folder that + read messages from the first should be moved to. Depending on + how you define the auto-move-read-msgs feature, you may or may + not be asked when you leave the first folder if you want read + messages to be moved to the second folder. In either case, + moving the messages means they will be deleted from the first + folder. + If these are not path names, they will be in the default + collection for _Save_s. Any valid folder specification, local or + remote (via IMAP), is allowed. There is no default. + _incoming-check-interval_ + This option has no effect unless the feature + enable-incoming-folders-checking is set, which in turn has no + effect unless incoming-folders is set. + This option specifies, in seconds, how often _Alpine_ will check + for new mail and state changes in Incoming Folders when Incoming + Folders Checking is turned on. The default is 3 minutes (180). + This value applies only to folders that are local to the system + that _Alpine_ is running on or that are accessed using the IMAP + protocol. The similar option incoming-check-interval-secondary + applies to all other monitored folders. + _incoming-check-interval-secondary_ + This option has no effect unless the feature + enable-incoming-folders-checking is set, which in turn has no + effect unless incoming-folders is set. + This option together with the option incoming-check-interval + specifies, in seconds, how often _Alpine_ will check for new + mail and state changes in Incoming Folders when Incoming Folders + Checking is turned on. The default for this option is 3 minutes + (180). For folders that are local to this system or that are + accessed using the IMAP protocol the value of the option + incoming-check-interval is used. For all other monitored + folders, the value of this option is used. + The reason there are two separate options is because it is + usually less expensive to check local and IMAP folders than it + is to check other types, like POP or NNTP folders. You may want + to set this secondary value to a higher number than the primary + check interval. + _incoming-check-list_ + This option has no effect unless the feature + enable-incoming-folders-checking is set, which in turn has no + effect unless incoming-folders is set. + When monitoring the Incoming Message Folders for Unseen messages + Alpine will normally monitor all Incoming Folders. You may use + this option to restrict the list of monitored folders to a + subset of all Incoming Folders. + _incoming-check-timeout_ + This option has no effect unless the feature + enable-incoming-folders-checking is set, which in turn has no + effect unless incoming-folders is set. + Sets the time in seconds that Alpine will attempt to open a + network connection used for monitoring for Unseen messages in + Incoming Folders. The default is 5. If a connection has not + completed within this many seconds Alpine will give up and + consider it a failed connection. + _incoming-folders_ + This is a list of one or more folders other than _INBOX_ that + may receive new messages. This list is slightly special in that + it is always expanded in the folder lister. In the future, it + may become more special. For example, it would be nice if + _Alpine_ would monitor the folders in this list for new mail. + _incoming-startup-rule_ + This rule affects _Alpine_'s behavior when opening the _INBOX_ + or another folder from the "INCOMING MESSAGE FOLDERS". This rule + tells _Alpine_ which message to make the current message when an + incoming folder is opened. There are seven possible values for + this option: + + _first-unseen_ + The current message will be the first unseen message which + has not been marked deleted, or the last message if all of + the messages have been seen. This is the default setting. + + _first-recent_ + This is similar to _first-unseen_. Instead of first unseen + it is the first recent message. A message is considered to + be recent if it arrived since the last time the folder was + open (by any mail client, not just the current one). So + this option causes the current message to be set to the + first undeleted-recent message, or the last message if + none is both undeleted and recent. + + _first-important_ + This will result in the current message being set to the + first message marked Important (but not Deleted). If no + messages are marked Important, then it will be the last + message. + + _first-important-or-unseen_ + This selects the minimum of the first unseen and the first + important messages. + + _first-important-or-recent_ + This selects the first of the first recent and the first + important messages. + + _first_ + Set the current message to the first undeleted message + unless all are deleted. In that case set it to the last + message. + + _last_ + Set the current message to the last undeleted message + unless all are deleted. In that case set it to the last + message. + + _incoming-unseen-background-color_ + _incoming-unseen-foreground-color_ + Incoming Unseen Color. + _index-answered-background-color_ + _index-answered-foreground-color_ + _index-arrow-background-color_ + _index-arrow-foreground-color_ + _index-deleted-background-color_ + _index-deleted-foreground-color_ + _index-from-background-color_ + _index-from-foreground-color_ + _index-highpriority-background-color_ + _index-highpriority-foreground-color_ + _index-important-background-color_ + _index-important-foreground-color_ + _index-lowpriority-background-color_ + _index-lowpriority-foreground-color_ + _index-new-background-color_ + _index-new-foreground-color_ + _index-opening-background-color_ + _index-opening-foreground-color_ + _index-recent-background-color_ + _index-recent-foreground-color_ + _index-subject-background-color_ + _index-subject-foreground-color_ + _index-to-me-background-color_ + _index-to-me-foreground-color_ + _index-unseen-background-color_ + _index-unseen-foreground-color_ + Index Colors. + _index-format_ + This option is used to customize the content of lines in the + MESSAGE INDEX screen. Each line is intended to convey some + amount of immediately relevant information about each message in + the current folder. + _Alpine_ provides a pre-defined set of informational fields with + reasonable column widths automatically computed. You can, + however, replace this default set by listing special tokens in + the order you want them displayed. + The list of available tokens is here. + Spaces are used to separate listed tokens. Additionally, you can + specify how much of the screen's width the taken's associated + data should occupy on the index line by appending the token with + a pair of parentheses enclosing either a number or percentage. + For example, "SUBJECT(13)" means to allocate 13 characters of + space to the subject column, and "SUBJECT(20%)" means to + allocate 20% of the available space to the subjects column, + while plain "SUBJECT" means the system will attempt to figure + out a reasonable amount of space. + There is always one space between every pair of columns, so if + you use fixed column widths (like 13) you should remember to + take that into account. Several of the fields are virtually + fixed-width, so it doesn't make much sense to specify the width + for them. The fields STATUS, FULLSTATUS, IMAPSTATUS, MSGNO, the + DATE fields, SIZE, and DESCRIPSIZE all fall into that category. + You _may_ specify widths for those if you wish, but you're + probably better off letting the system pick those widths. + The default is equivalent to: + + index-format=STATUS MSGNO SMARTDATETIME24 FROMORTO(33%) SIZENARROW SUBJ + KEY(67%) + This means that the four fields without percentages will be + allocated first, and then 33% and 67% of the _remaining_ space + will go to the from and subject fields. If one of those two + fields is specified as a percentage and the other is left for + the system to choose, then the percentage is taken as an + absolute percentage of the screen, not of the space remaining + after allocating the first four columns. It doesn't usually make + sense to do it that way. If you leave off all the widths, then + the subject and from fields (if both are present) are allocated + space in a 2 to 1 ratio, which is almost exactly the same as the + default. + What you are most likely to do with this configuration option is + to specify which fields appear at all, which order they appear + in, and the percentage of screen that is used for the from and + subject fields if you don't like the 2 to 1 default. + If you want to retain the default format that _Pine_ 4.64 had, + use + + Index-Format=STATUS MSGNO DATE FROMORTO(33%) SIZE SUBJKEY(67%) + _and_ set the feature Disable-Index-Locale-Dates. + _initial-keystroke-list_ + This is a comma-separated list of keystrokes which _Alpine_ + executes on startup. Items in the list are usually just + characters, but there are some special values. _SPACE,_ _TAB,_ + and _CR_ mean a space character, tab character, and a carriage + return, respectively. _F1_ through _F12_ stand for the twelve + function keys. _UP, DOWN, LEFT, _and_ RIGHT _stand for the arrow + keys. Control characters are represented with _^<char>_. A + restriction is that you can't mix function keys and character + keys in this list even though you can, in some cases, mix them + when running _Alpine_. A user can always use only _character_ + keys in the startup list even if he or she is using _function_ + keys normally, or vice versa. If an element in this list is a + string surrounded by double quotes (") then it will be expanded + into the individual characters in the string, excluding the + double quotes. + _kblock-passwd-count_ + System-wide _Alpine_ configuration files only. Number of times a + user will have to enter a password when they run the keyboard + lock command in the main menu. + _keyboard-character-set_ + See the discussion in International Character Sets for details. + _keylabel-background-color_ + _keylabel-foreground-color_ + KeyLabel Color. + _keyname-background-color_ + _keyname-foreground-color_ + KeyName Color. + _keywords_ + You may define your own set of keywords and optionally set them + on a message by message basis. These are similar to the + "Important" flag which the user may set using the Flag command. + The difference is that the Important flag is always present for + each folder. User-defined keywords are chosen by the user. You + may set up the list of possible keywords here, or you may add + keywords from the Flag Details screen that you can get to after + typing the Flag (*) command. After the keywords have been + defined, then you use the Flag command to set or clear the + keywords in each message. The behavior of the flag command may + be modified by using the Enable-Flag-Screen-Implicitly option or + the Enable-Flag-Screen-Keyword-Shortcut option. + Keywords may be used when Selecting messages (Select Keyword). + Keywords may also be used in the Patterns of Rules (Filters, + Indexcolors, etc). Filter rules may be used to set keywords + automatically. Keywords may be displayed as part of the Subject + of a message by using the SUBJKEY or SUBJKEYINIT tokens in the + Index-Format option. The Keyword-Surrounding-Chars option may be + used to modify the display of keywords using SUBJKEY and + SUBJKEYINIT slightly. Keywords may also be displayed in a column + of their own in the MESSAGE INDEX screen by using the KEY or + KEYINIT tokens. It is also possible to color keywords in the + index using the Setup/Kolor screen (Keyword Colors). Keywords + are not supported by all mail servers. + You may give keywords nicknames if you wish. If the keyword + definition you type in contains a SPACE character, then the + actual value of the keyword is everything after the last SPACE + and the nickname for that keyword is everything before the last + SPACE. For example, suppose you are trying to interoperate with + another email program which uses a particular keyword with an + unpleasant name. Maybe it uses a keyword called + + VendorName.SoftwareName.08 + but for you that keyword means that the message is work-related. + You could define a keyword to have the value + + Work VendorName.SoftwareName.08 + and then you would use the name "Work" when dealing with that + keyword in _Alpine_. If you defined it as + + My Work VendorName.SoftwareName.08 + the nickname would be everything before the last SPACE, that is + the nickname would be "My Work". + Some commonly used keywords begin with dollar signs. This + presents a slight complication, because the dollar sign is + normally used to signify environment variable expansion in the + _Alpine_ configuration. In order to specify a keyword which + begins with a dollar sign you must precede the dollar sign with + a second dollar sign to escape its special meaning. For example, + if you want to include the keyword + + $Label1 + as one of your possible keywords, you must enter the text + + $$Label1 + instead. + _keyword-surrounding-chars_ + This option controls a minor aspect of _Alpine_'s MESSAGE INDEX + and MESSAGE TEXT screens. If you have modified the Index-Format + option so that either the "SUBJKEY" or "SUBJKEYINIT" tokens are + used to display keywords or their initials along with the + Subject; then this option may be used to modify the resulting + display slightly. By default, the keywords or initials displayed + for these tokens will be surrounded with curly braces ({ and }) + and a trailing space. For example, if keywords "Work" and "Now" + are set for a message, the "SUBJKEY" token will normally look + like + + {Work Now} actual subject + and the SUBJKEYINIT token would look like + + {WN} actual subject + The default character before the keywords is the left brace ({) + and the default after the keywords is the right brace followed + by a space (} ). + This option allows you to change that. You should set it to two + values separated by a space. The values may be quoted if they + include space characters. So, for example, the default value + could be specified explicitly by setting this option to + + Keyword-Surrounding-Chars="{" "} " + The first part wouldn't need to be quoted (but it doesn't hurt). + The second part does need the quotes because it includes a space + character. If you wanted to change the braces to brackets you + could use + + Keyword-Surrounding-Chars="[" "] " + Inside the quotes you can use backslash quote to mean quote, so + + Keyword-Surrounding-Chars="\"" "\" " + would produce + + "Work Now" actual subject + It is also possible to color keywords in the index using the + Setup/Kolor screen (Keyword Colors). + It is not possible to change the fact that a space character is + used to separate the keywords if more than one keyword is set + for a message. It is also not possible to change the fact that + there are no separators between the keyword initials if more + than one keyword is set. + This option is displayed as "Keyword Surrounding Characters". + _last-time-prune-questioned_ + Personal configuration file only. This variable records the + month the user was last asked if his or her _sent-mail_ folders + should be pruned. The format is _yy.mm_. This is automatically + updated by _Alpine_ when the the pruning is done or declined. If + a user wanted to make _Alpine_ stop asking this question he or + she could set this time to something far in the future. This may + not be set in the system-wide configuration files. Note: The _yy_ + year is actually the number of years since 1900, so it will be + equal to 101 in the year 2001. + _last-version-used_ + Personal configuration file only. This is set automatically by + _Alpine_. It is used to keep track of the last version of _Alpine_ + that was run by the user. Whenever the version number increases, + a new version message is printed out. This may not be set in the + system-wide configuration files. + _ldap-servers_ + This is only available if _Alpine_ was linked with an LDAP + library when it was compiled. This variable is normally managed + by _Alpine_ though it can be set in the system-wide + configuration files as well as the personal configuration. It is + a list variable. Each item in the list contains quite a bit of + extra information besides just the server name. To put this into + a system-wide config file the easiest thing to do is to + configure a personal _Alpine_ for the LDAP server then copy the + configuration line into the system-wide config file. Each item + in the list looks like: + + server_name[:port] "quoted stuff" + The server_name is just a hostname and it is followed by an + optional colon and port number. The default port is 389. + Following the server name is a single SPACE character followed + by a bunch of characters inside double quotes. The part inside + the quotes is a set of _tag_ = _value_ pairs. Each tag is + preceded by a slash (/) and followed by an equal sign. The value + for that tag is the text up to the next slash. An example of + some quoted stuff is: + + "/base=o=University of Washington, c=US/impl=0/.../nick=My Server" + This would set the search base for this server to o=University + of Washington, c=US, set the implicit bit to zero, and set the + nickname for the server to My Server. All of the tags correspond + directly to items in the Setup/Directory screen so experiment + with that if you want to see what the possible tags and values + are. + _literal-signature_ + With this option your actual signature, as opposed to the name + of a file containing your signature, is stored in the _Alpine_ + configuration file. If this is defined it takes precedence over + the _signature-file_ option. + This is simply a different way to store the signature data. The + signature is stored inside your _Alpine_ configuration file + instead of in a separate signature file. Tokens contained in the + signature work the same way they do with the regular + signature-file. + The Setup/Signature command in _Alpine_'s Main Menu will edit + the _literal-signature_ by default. However, if no + _literal-signature_ is defined and the file named in the + _signature-file_ option exists, then the latter will be used + instead. Compose (Reply, Forward, ...) will default to using the + _literal-signature_ if defined, otherwise it will use the + contents of the file named in _signature-file_. + The _Alpine_ composer is used to edit the literal-signature. The + result of that edit is first converted to a C-style string + before it is stored in the configuration file. In particular, + the two character sequence \n (backslash followed by the + character "n") will be used to signify a line-break in the + signature. You don't have to enter the \n, but it will be + visible in the SETUP CONFIGURATION window after you are done + editing the signature. + _mail-check-interval_ + This option specifies, in seconds, how often _Alpine_ will check + for new mail. If set to zero, new-mail checking is disabled. + (You can always manually force a new-mail check by typing ^L + (Ctrl-L), which is also the command to refresh the screen, or by + typing the Next command when the current message is the last + message of the folder.) There is a minimum value for this + option, normally 15 seconds. The default value is normally 150 + seconds. The higher you set this option, the easier it is on the + server. + There are some situations where automatic new-mail checking does + not work. See the discussion about new-mail checking in + folder-reopen-rule. + The new-mail checking will not happen exactly at the frequency + that you specify. For example, _Alpine_ may elect to defer a + non-INBOX mail check if you are busy typing. Or, it may check + more frequently than you have specified if that is thought to be + necessary to keep the server from closing the connection to the + folder due to inactivity. If _Alpine_ checks for new mail as a + side effect of another command, it will reset the timer, so that + new-mail checking may seem to happen irregularly instead of + every X seconds like clockwork. + If you are anxious to know about new mail as soon as possible, + set the check interval low, and you'll know about the new mail + by approximately that amount of time after it arrives. If you + aren't so worried about knowing right away, set this option to a + higher value. That will save the server some processing time and + may save you some of the time you spend waiting for new-mail + checks to happen if you are dealing with a slow server or slow + network connection. + If you suspect that new-mail checking is causing slow downs for + you, you may want to look into the options + Quell-Mailchecks-Composing-Except-Inbox, + Quell-Mailchecks-Composing-Inbox and + Mail-Check-Interval-Noncurrent, which refine when mail checking + is done. + If the mailbox being check uses a Mail Drop then there is a + minimum time (maildrop-check-minimum) between new-mail checks. + Because of this minimum you may notice that new mail does not + appear promptly when you expect it. The reason for this is to + protect the server from over-zealous opening and closing of the + Mail Drop folder, since that is a costly operation. + A side effect of disabling mail checking is that there will be + situations in which the user's IMAP connection will be broken + due to inactivity timers on the server. Another side effect is + that the user-input-timeout option won't work. + _mail-check-interval-noncurrent_ + This option is closely related to the Mail-Check-Interval + option, as well as the Quell-Mailchecks-Composing-Except-Inbox + and Quell-Mailchecks-Composing-Inbox options. If the + "Mail-Check-Interval" option is set to zero, then automatic + new-mail checking is disabled and this option will have no + effect. + Normally this option is set to zero, which means that the value + used will be the same as the value for the + "Mail-Check-Interval". If you set this option to a value + different from zero (usually larger than the value for + "Mail-Check-Interval") then that is the check interval that will + be used for folders which are not the currently open folder or + the INBOX. You may not even have any folders that are noncurrent + and not the INBOX. If you do, it is likely that they are due to + Stay-Open-Folders you have configured. This option also affects + the rate of mail checking done on cached connections to folders + you previously had open but are no longer actively using. You + aren't expected to understand that last sentence, but if you are + interested take a look at Max-Remote-Connections, and the + related options. + _mail-directory_ + This variable was more important in previous versions of + _Alpine_. Now it is used only as the default for storing personal + folders (and only if there are no folder-collections defined). + The default value is _~/mail_ on UNIX and _${HOME}\MAIL_ on a + PC. + _mailcap-search-path_ + This variable is used to replace _Alpine_'s default mailcap file + search path. It takes one or more file names (full paths must be + specified) in which to look for mail capability data. + _maildrop-check-minimum_ + New-mail checking for a Mail Drop is a little different from new + mail checking for a regular folder. One of the differences is + that the connection to the Mail Drop is not kept open and so the + cost of checking (delay for you and additional load for the + server) may be significant. Because of this additional cost we + set a minimum time that must pass between checks. This minimum + only applies to the automatic checking done by _Alpine_. If you + force a check by typing ^L (Ctrl-L) or by typing the Next + command when you are at the end of a folder index, then the + check is done right away. + This option specifies, in seconds, the _minimum_ time between + Mail Drop new-mail checks. You may want to set this minimum high + in order to avoid experiencing some of the delays associated + with the checks. Note that the time between checks is still + controlled by the regular Mail-Check-Interval option. When + _Alpine_ is about to do an automatic check for new mail (because + the Mail-Check-Interval has expired) then if the time since the + last new-mail check of any open Mail Drops has been greater than + the MailDrop-Check-Minimum, the Mail Drop is checked for new + mail as well. Therefore, it is only useful to set this option to + a value that is higher than the Mail-Check-Interval. + If this option is set to zero, automatic Mail Drop new-mail + checking is disabled. There is a minimum value, normally 60 + seconds. The default value is normally 60 seconds as well. This + applies to the INBOX and to the currently open folder if that is + different from the INBOX. + _max-remote-connections_ + This option affects low-level behavior of _Alpine_. The default + value for this option is _2_. If your INBOX is accessed using + the IMAP protocol from an IMAP server, that connection is kept + open throughout the duration of your _Alpine_ session, + independent of the value of this option. The same is true of any + Stay-Open-Folders you have defined. This option controls + _Alpine_'s behavior when connecting to remote IMAP folders other + than your INBOX or your Stay-Open-Folders. It specifies the + maximum number of remote IMAP connections (other than those + mentioned above) that _Alpine_ will use for accessing the rest + of your folders. If you set this option to zero, you will turn + off most remote connection re-use. It's difficult to understand + exactly what this option does, and it is usually fine to leave + it set to its default value. It is probably more likely that you + will be interested in setting the Stay-Open-Folders option + instead of changing the value of this option. A slightly longer + explanation of what is going on with this option is given in the + next paragraphs. + There are some time costs involved in opening and closing remote + IMAP folders, the main costs being the time you have to wait for + the connection to the server and the time for the folder to + open. Opening a folder may involve not only the time the server + takes to do its processing but time that _Alpine_ uses to do + filtering. These times can vary widely. They depend on how + loaded the server is, how large the folder being opened is, and + how you set up filtering, among other things. Once _Alpine_ has + opened a connection to a particular folder, it will attempt to + keep that connection open in case you use it again. In order to + do this, _Alpine_ will attempt to use the Max-Remote-Connections + (the value of this option) IMAP connections you have alloted for + this purpose. + For example, suppose the value of this option is set to "2". If + your INBOX is accessed on a remote server using the IMAP + protocol, that doesn't count as one of the remote connections + but it is always kept open. If you then open another IMAP + folder, that would be your first remote connection counted as + one of the Max-Remote-Connections connections. If you open a + third folder the second will be left open, in case you return to + it. You won't be able to tell it has been left open. It will + appear to be closed when you leave the folder but the connection + will remain in the background. Now suppose you go back to the + second folder (the first folder after the INBOX). A connection + to that folder is still open so you won't have to wait for the + startup time to open it. Meanwhile, the connection to the third + folder will be left behind. Now, if you open a fourth folder, + you will bump into the Max-Remote-Connections limit, because + this will be the third folder other than INBOX and you have the + option set to "2". The connection that is being used for the + third folder will be re-used for this new fourth folder. If you + go back to the third folder after this, it is no longer already + connected when you get there. You'll still save some time since + _Alpine_ will re-use the connection to the fourth folder and you + have already logged in on that connection, but the folder will + have to be re-opened from scratch. + If a folder is large and the startup cost is dominated by the + time it takes to open that folder or to run filters on it, then + it will pay to make the value of this option large enough to + keep it open. On the other hand, if you only revisit a handful + of folders or if the folders are small, then it might make more + sense to keep this number small so that the reconnect time (the + time to start up a new connection and authenticate) is + eliminated instead. + You may also need to consider the impact on the server. On the + surface, a larger number here may cause a larger impact on the + server, since you will have more connections open to the server. + On the other hand, not only will _you_ be avoiding the startup + costs associated with reopening a folder, but the _server_ will + be avoiding those costs as well. + When twenty five minutes pass without any active use of an IMAP + connection being saved for possible re-use, that connection will + be shut down, + This option is displayed as "Maximum Remote Connections". + _meta-message-background-color_ + _meta-message-foreground-color_ + Meta-message Color. + _mimetype-search-path_ + This variable is used to replace _Alpine_'s default mime.types + file search path. It takes one or more file names (full paths + must be specified) in which to look for file-name-extension to + MIME type mapping data. See the Config Notes for details on + _Alpine_'s usage of the MIME.Types File. + _new-version-threshold_ + When a new version of _Alpine_ is run for the first time it + offers a special explanatory screen to the user upon startup. + This option helps control when and if that special screen + appears for users that have previously run _Alpine_. It takes as + its value a _Alpine_ version number. _Alpine_ versions less than + the specified value will supress this special screen while + versions equal to or greater than that specified will behave + normally. + _newmail-fifo-path_ + This option is only available in UNIX _Alpine_. However, there + is a very similar feature built in to _PC-Alpine_. In + _PC-Alpine_'s Config menu at the top of the screen is an option + called "New Mail Window". + You may have _Alpine_ create a FIFO special file (also called a + named pipe, see mkfifo(3) and fifo(4)) where it will send a + one-line message each time a new message is received in the + current folder, the INBOX, or any open Stay-Open-Folders. To + protect against two different _Alpine_s both writing to the same + FIFO, _Alpine_ will only create the FIFO and write to it if it + doesn't already exist. + A possible way to use this option would be to have a separate + window on your screen running the command + + cat filename + where "filename" is the name of the file given for this option. + Because the file won't exist until after you start _Alpine_, you + must _first_ start _Alpine_ and _then_ run the "cat" command. + You may be tempted to use "tail -f filename" to view the new + mail log. However, the common implementations of the tail + command will not do what you are hoping. + The width of the messages produced for the FIFO may be altered + with the NewMail-Window-Width option. + On some systems, fifos may only be created in a local + filesystem. In other words, they may not be in NFS filesystems. + This requirement is not universal. If the system you are using + supports it, it should work. (It is often the case that your + home directory is in an NFS filesystem. If that is the case, you + might try using a file in the "/tmp" filesystem, which is + usually a local filesytem.) Even when it is possible to use an + NFS-mounted filesystem as a place to name the fifo (for example, + your home directory), it will still be the case that the reader + (probably the "cat" command) and the writer (_Alpine_) of the + fifo must be running on the same system. + _newmail-window-width_ + UNIX _Alpine_ only. + This option is only useful if you have turned on the + NewMail-FIFO-Path option. That option causes new mail messages + to be sent to a fifo file. Those messages will be 80 characters + wide by default. You can change the width of the messages by + changing this option. For example, if you are reading those + messages in another window you might want to set this width to + the width of that other window. + For UNIX _Alpine_, this option is only useful if you have turned + on the NewMail-FIFO-Path option. That option causes new mail + messages to be sent to a fifo file. Those messages will be 80 + characters wide by default. You can change the width of those + messages by changing this option. For example, if you are + reading those messages in another window you might want to set + this width to the width of that other window. + If you are using _PC-Alpine_, it has an option in the Config + menu to turn on the "New Mail Window". The present option also + controls the width of that window. + _news-active-file-path_ + This option tells _Alpine_ where to look for the "active file" + for newsgroups when accessing news locally, rather than via + NNTP. The default path is usually /usr/lib/news/active. + _news-collections_ + This is a list of collections where news folders are located. + See the section describing collections for more information. + _news-spool-directory_ + This option tells _Alpine_ where to look for the "news spool" + for newsgroups when accessing news locally, rather than via + NNTP. The default path is usually /usr/spool/news. + _newsrc-path_ + This option overrides the default name _Alpine_ uses for your + "newsrc" news status and subscription file. If set, _Alpine_ + will take this value as the full pathname for the desired newsrc + file. + _nntp-range_ + This option applies only to newsgroups accessed using the NNTP + protocol. It does not, for example, apply to newsgroups accessed + using an IMAP-to-NNTP proxy. + When you open a connection to a News server using the NNTP + protocol, you normally have access to all of the articles in + each newsgroup. If a server keeps a large backlog of messages it + may speed performance some to restrict attention to only the + newer messages in a group. This option allows you to set how + many article numbers should be checked when opening a newsgroup. + You can think of "nntp-range" as specifying the maximum number + of messages you ever want to see. For example, if you only ever + wanted to look at the last 500 messages in each newsgroup you + could set this option to 500. In actuality, it isn't quite that. + Instead, for performance reasons, it specifies the range of + article numbers to be checked, beginning with the highest + numbered article and going backwards from there. If there are + messages that have been canceled or deleted their article + numbers are still counted as part of the range. + So, more precisely, setting the "nntp-range" will cause article + numbers + + last_article_number - nntp-range + 1 through last_article_number + to be considered when reading a newsgroup. The number of + messages that show up in your index will be less than or equal + to the value of "nntp-range". + The purpose of this option is simply to speed up access when + reading news. The speedup comes because _Alpine_ can ignore all + but the last nntp-range article numbers, and can avoid + downloading any information about the ignored articles. There is + a cost you pay for this speedup. That cost is that there is no + way for you to see those ignored articles. The articles that + come before the range you specify are invisible to you and to + _Alpine_, as if they did not exist at all. There is no way to see + those messages using, for example, an unexclude command or + something similar. The only way to see those articles is to set + this option high enough (or set it to zero) and then to reopen + the newsgroup. + If this option is set to 0 (which is also the default), then the + range is unlimited. This option applies globally to all NNTP + servers and to all newsgroups on those servers. There is no way + to set different values for different newsgroups or servers. + _nntp-server_ + One or more NNTP servers (host name or IP address) which _Alpine_ + will use for reading and posting news. If you read and post news + to and from a single NNTP server, you can get away with only + setting the _nntp-server_ variable and leaving the + _news-collections_ variable unset. + When you define an NNTP server, _Alpine_ implicitly defines a + news collection for you, assuming that server as the news server + and assuming that you will use the NNTP protocol and a local + newsrc configuration file for reading news. See also Configuring + News. + Your NNTP server may offer NNTP "AUTHINFO SASL" or "AUTHINFO + USER" authentication. It may even require it. If your NNTP + server does offer such authentication you may specify a user + name parameter to cause _Alpine_ to attempt to authenticate. The + same is true for the server name in a folder collection which + uses NNTP. This parameter requires an associated value, the + username identifier with which to establish the server + connection. An example might be: + + nntpserver.example.com/user=katie + If authentication is offered by the server, this will cause + _Alpine_ to attempt to use it. If authentication is not offered + by the server, this will cause _Alpine_ to fail with an error + similar to: + + Error: NNTP authentication not available + For more details about the server name possibilities see Server + Name Syntax. + _normal-background-color_ + _normal-foreground-color_ + Normal Color. + _opening-text-separator-chars_ + This option controls a minor aspect of _Alpine_'s MESSAGE INDEX + screen. With some setups the text of the subject is followed by + the opening text of the message if there is any room available + in the index line. If you have configured your Index-Format + option to include one of the Subject tokens which causes this + behavior (SUBJECTTEXT, SUBJKEYTEXT, or SUBJKEYINITTEXT), then + this option may be used to modify what is displayed slightly. By + default, the Subject is separated from the opening text of the + message by the three characters space dash space; + + " - " + Use this option to set it to something different. The value must + be quoted if it includes any space characters. For example, the + default value could be specified explicitly by setting this + option to + + Opening-Text-Separator-Chars=" - " + This option is displayed as "Opening Text Separator Characters". + _operating-dir_ + System-wide _Alpine_ configuration files only. This names the + root of the tree to which the user is restricted when reading + and writing folders and files. It is usually used in the _fixed_ + configuration file. + _patterns-filters2_ + Matching patterns and their corresponding actions are stored in + this variable. These patterns are used with Filtering. This + variable is normally maintained through the Setup/Rules/Filters + configuration screen. It is a list variable. Each member of the + list is a single pattern/action pair, or it can be a file which + contains zero or more lines of pattern/action pairs. The only + way to create a filters file is to use the InsertFile command in + the Setup/Rules/Filters screen with a filename which doesn't yet + exist. Then use the Shuffle command to move existing filter + patterns into the file. This isn't very convenient but it isn't + thought that many users will need this functionality. The + purpose of filter files is for sharing filters. + This option is displayed as "Patterns Filters". + _patterns-indexcolors_ + Matching patterns and their corresponding actions are stored in + this variable. These patterns are used for Index Line Colors. + This variable is normally maintained through the + Setup/Rules/Indexcolor configuration screen. It is a list + variable. Each member of the list is a single pattern/action + pair, or it can be a file which contains zero or more lines of + pattern/action pairs. The only way to create a indexcolor file + is to use the InsertFile command in the Setup/Rules/Indexcolor + screen with a filename which doesn't yet exist. Then use the + Shuffle command to move existing patterns into the file. This + isn't very convenient but it isn't thought that many users will + need this functionality. The purpose of indexcolor files is for + sharing indexcolors. + _patterns-other_ + Matching patterns and their corresponding actions are stored in + this variable. These patterns are used with Miscellaneous Rules + configuration. This variable is normally maintained through the + Setup/Rules/Other configuration screen. It is a list variable. + Each member of the list is a single pattern/action pair, or it + can be a file which contains zero or more lines of + pattern/action pairs. The only way to create a rules file is to + use the InsertFile command in the Setup/Rules/Other screen with + a filename which doesn't yet exist. Then use the Shuffle command + to move existing rules into the file. This isn't very convenient + but it isn't thought that many users will need this + functionality. + _patterns-roles_ + Matching patterns and their corresponding actions are stored in + this variable. These patterns are used with Roles. This variable + is normally maintained through the Setup/Rules/Roles + configuration screen. It is a list variable. Each member of the + list is a single pattern/action pair, or it can be a file which + contains zero or more lines of pattern/action pairs. The only + way to create a roles file is to use the InsertFile command in + the Setup/Rules/Roles screen with a filename which doesn't yet + exist. Then use the Shuffle command to move existing roles into + the file. This isn't very convenient but it isn't thought that + many users will need this functionality. The purpose of role + files is for sharing roles. + _patterns-scores2_ + Matching patterns and their corresponding actions are stored in + this variable. These patterns are used with Scoring. This + variable is normally maintained through the + Setup/Rules/SetScores configuration screen. It is a list + variable. Each member of the list is a single pattern/action + pair, or it can be a file which contains zero or more lines of + pattern/action pairs. The only way to create a scores file is to + use the InsertFile command in the Setup/Rules/SetScores screen + with a filename which doesn't yet exist. Then use the Shuffle + command to move existing scoring patterns into the file. This + isn't very convenient but it isn't thought that many users will + need this functionality. The purpose of scoring files is for + sharing scoring rules. + This option is displayed as "Patterns Scores". + _patterns-search_ + Matching patterns for use with the Select command are stored in + this variable. These patterns are used with Search Rules + configuration. This variable is normally maintained through the + Setup/Rules/searCh configuration screen. It is a list variable. + Each member of the list is a single pattern, or it can be a file + which contains zero or more lines of patterns. The only way to + create a rules file is to use the InsertFile command in the + Setup/Rules/searCh screen with a filename which doesn't yet + exist. Then use the Shuffle command to move existing rules into + the file. This isn't very convenient but it isn't thought that + many users will need this functionality. + _personal-name_ + Personal configuration file only. User's full personal name. On + UNIX systems, the default is taken from the accounts data base + (/etc/passwd). The easiest way to change the full From address + is with the customized-hdrs variable. + _personal-print-category_ + Personal configuration file only. This is the category that the + default print command belongs to. There are three categories. + Category 1 is an attached printer which uses the ANSI escape + sequence, category 2 is the standard system print command, and + category 3 is the set of custom printer commands defined by the + user. This just helps _Alpine_ figure out where to put the + cursor when the user runs the _Setup/Printer_ command. This is + not used by _PC-Alpine_. + _personal-print-command_ + Personal configuration file only. This corresponds to the third + category in the printer menu, the personally selected print + commands. This variable contains the list of custom commands + that the user has entered in the _Setup/Printer_ screen. This is + not used by _PC-Alpine_. + _posting-character-set_ + See the discussion in International Character Sets for details. + _postponed-folder_ + The folder where postponed messages are stored. The default is + _postponed-msgs_ (Unix) or _POSTPOND_ (PC). + _print-font-name_ + Winsock version of _PC-Alpine_ only. + _print-font-size_ + Winsock version of _PC-Alpine_ only. + _print-font-style_ + Winsock version of _PC-Alpine_ only. + _printer_ + Personal configuration file only. This is the current setting + for a user's printer. This variable is set from _Alpine_'s + _Setup/Printer_ screen. + _prompt-background-color_ + _prompt-foreground-color_ + Prompt Color. + _pruned-folders_ + This variable allows you to define a list of one or more folders + that _Alpine_ will offer to prune for you in the same way it + automatically offers to prune your "sent-mail" folder each + month. Each folder in this list must be a folder in your default + folder collection (the first folder collection if you have more + than one), and it is just the relative name of the folder in the + collection, not the fully-qualified name. It is similar to + sent-mail. Instead of something like + + pruned-folders={servername}mail/folder + the correct value to use would be + + folder + There is an assumption here that your first collection is the + folders in + + {servername}mail + Once a month, for each folder listed, _Alpine_ will offer to + move the contents of the folder to a new folder of the same name + but with the previous month's date appended. _Alpine_ will then + look for any such date-appended folder names created for a + previous month, and offer each one it finds for deletion. + If you decline the first offer, no mail is moved and no new + folder is created. + The new folders will be created in your default folder + collection. + _pruning-rule_ + By default, _Alpine_ will ask at the beginning of each month + whether or not you want to rename your sent-mail folder to a + name like sent-mail-month-year. (See the feature + prune-uses-yyyy-mm to change the format of the folder to + sent-mail-yyyy-mm.) It will also ask whether you would like to + delete old sent-mail folders. If you have defined + read-message-folder or pruned-folders _Alpine_ will also ask + about pruning those folders. With this option you may provide an + automatic answer to the rename questions and you may tell + _Alpine_ to not ask about deleting old folders. + _quote1-background-color_ + _quote1-foreground-color_ + _quote2-background-color_ + _quote2-foreground-color_ + _quote3-background-color_ + _quote3-foreground-color_ + Quote Colors. + _quote-replace-string_ + This option specifies what string to use as a quote when + _viewing_ a message. The standard way of quoting messages when + replying is the string "> " (quote space). With this variable + set, viewing a message will replace occurrences of "> " with the + replacement string. This setting works best when + Reply-Indent-String or the equivalent setting in your + correspondents' mail programs is set to the default "> ", but it + will also work fine with the Reply-Indent-String set to ">". + Enable the feature Quote-Replace-Nonflowed to also have + quote-replacement performed on non-flowed messages. + Setting this option will replace ">" and "> " with the new + setting. This string may include trailing spaces. To preserve + those spaces enclose the full string in double quotes. + No padding to separate the text of the message from the quote + string is added. This means that if you do not add trailing + spaces to the value of this variable, text will be displayed + right next to the quote string, which may be undesirable. This + can be avoided by adding a new string separated by a space from + your selection of quote string replacement. This last string + will be used for padding. For example, setting this variable to + ">" " " has the effect of setting ">" as the + quote-replace-string, with the text padded by a space from the + last quote string to make it more readable. + One possible setting for this variable could be " " (four + spaces wrapped in quotes), which would have the effect of + indenting each level of quoting four spaces and removing the + ">"'s. Different levels of quoting could be made more + discernible by setting colors for quoted text. + Replying to or forwarding the viewed message will preserve the + original formatting of the message, so quote-replacement will + not be performed on messages that are being composed. + _quote-suppression-threshold_ + This option should be used with care. It will cause some of the + quoted text to be eliminated from the display when viewing a + message in the MESSAGE TEXT screen. For example, if you set the + Quote-Suppression-Threshold to the value "5", this will cause + quoted text that is longer than five lines to be truncated. + Quoted text of five or fewer consecutive lines will be displayed + in its entirety. Quoted text of more than six lines will have + the first five lines displayed followed by a line that looks + something like + + [ 12 lines of quoted text hidden from view ] + As a special case, if exactly one line of quoted text would be + hidden, the entire quote will be shown instead. So for the above + example, quoted text which is exactly six lines long will will + be shown in its entirety. (In other words, instead of hiding a + single line and adding a line that announces that one line was + hidden, the line is just shown.) + If the sender of a message has carefully chosen the quotes that + he or she includes, hiding those quotes may change the meaning + of the message. For that reason, _Alpine_ requires that when you + want to set the value of this variable to something less than + four lines, you actually have to set it to the negative of that + number. So if you want to set this option to "3", you actually + have to set it to "-3". The only purpose of this is to get you + to think about whether or not you really want to do this! If you + want to delete all quoted text you set the value of this option + to the special value "-10". + The legal values for this option are + + 0 Default, don't hide anything + -1,-2,-3 Suppress quote lines past 1, 2, or 3 lines + 4,5,6,... Suppress if more than that many lines + -10 Suppress all quoted lines + If you set this option to a non-default value you may sometimes + wish to view the quoted text that is not shown. When this is the + case, the HdrMode (Header Mode) command may be used to show the + hidden text. Typing the "H" command once will show the hidden + text. Typing a second "H" will also turn on Full Header mode. + The presence or absence of the HdrMode command is determined by + the "Enable-Full-Header-Cmd" Feature-List option in your _Alpine_ + configuration, so you will want to be sure that is turned on if + you use quote suppression. + For the purposes of this option, a quote is a line that begins + with the character ">". + Quotes are only suppressed when displaying a message on the + screen. The entire quote will be left intact when printing or + forwarding or something similar. + _read-message-folder_ + If set, mail in the _INBOX_ that has been read but not deleted + is moved here, or rather, the user is asked whether or not he or + she wants to move it here upon quitting _Alpine_. + _remote-abook-history_ + Sets how many extra copies of remote address book data will be + kept in each remote address book folder. The default is three. + These extra copies are simply old versions of the data. Each + time a change is made a new copy of the address book data is + appended to the folder. Old copies are trimmed, if possible, + when _Alpine_ exits. An old copy can be put back into use by + deleting and expunging newer versions of the data from the + folder. Don't delete the first message from the folder. It is a + special header message for the remote address book and it must + be there. This is to prevent regular folders from being used as + remote address book folders and having their data destroyed. + _remote-abook-metafile_ + Personal configuration file only. This is usually set by _Alpine_ + and is the name of a file that contains data about remote + address books and remote configuration files. + _remote-abook-validity_ + Sets the minimum number of minutes that a remote address book + will be considered up to date. Whenever an entry contained in a + remote address book is used, if more than this many minutes have + passed since the last check the remote server will be queried to + see if the address book has changed. If it has changed, the + local copy is updated. The default value is five minutes. The + special value of -1 means never check. The special value of zero + means only check when the address book is first opened. + No matter what the value, the validity check is always done when + the address book is about to be changed by the user. The check + can be initiated manually by typing _^L_ (Ctrl-L) while in the + address book maintenance screen for the remote address book. + _reply-indent-string_ + This variable specifies an aspect of _Alpine_'s _Reply_ command. + When a message is replied to and the text of the message is + included, the included text usually has the string "> " + prepended to each line indicating it is quoted text. + This option specifies a different value for that string. If you + wish to use a string which begins or ends with a space, enclose + the string in double quotes. + Besides simple text, the prepended string can be based on the + message being replied to. The following tokens are substituted + for the message's corresponding value: + + _FROM_ + This token gets replaced with the message sender's + "username". At most six characters are used. + + _NICK_ + This token gets replaced with the nickname of the message + sender's address as found in your addressbook. If no + addressbook entry is found, Pine replaces the characters + "_NICK_" with nothing. At most six characters are used. + + _INIT_ + This token gets replaced with the initials of the sender + of the message. + + When the enable-reply-indent-string-editing feature is enabled, + you are given the opportunity to edit the string, whether it is + the default or one automatically generated using the above + tokens. + _reply-leadin_ + This option is used to customize the content of the introduction + line that is included when replying to a message and including + the original message in the reply. The normal default (what you + will get if you delete this variable) looks something like: + + On Sat, 24 Oct 1998, Fred Flintstone wrote: + where the day of the week is only included if it is available in + the original message. You can replace this default with text of + your own. The text may contain tokens that are replaced with + text that depends on the message you are replying to. For + example, the default is equivalent to: + + On _DAYDATE_, _FROM_ wrote: + Since this variable includes regular text mixed with special + tokens the tokens have to be surrounded by underscore + characters. For example, to use the token "PREFDATE" you would + need to use "_PREFDATE_", not "PREFDATE". + The list of available tokens is here. + By default, the text is all on a single line and is followed by + a blank line. If your _Reply-Leadin_ turns out to be longer than + 80 characters when replying to a particular message, it is + shortened. However, if you use the token + + _NEWLINE_ + anywhere in the value, no end of line or blank line is appended, + and no shortening is done. The _NEWLINE_ token may be used to + get rid of the blank line following the text, to add more blank + lines, or to form a multi-line _Reply-Leadin_. To clarify how + _NEWLINE_ works recall that the default value is: + + On _DAYDATE_, _FROM_ wrote: + That is equivalent to + + On _DAYDATE_, _FROM_ wrote:_NEWLINE__NEWLINE_ + In the former case, two newlines are added automatically because + no _NEWLINE_ token appears in the value of the option (for + backwards compatibility). In the latter case, the newlines are + explicit. If you want to remove the blank line that follows the + _Reply-Leadin_ text use a single _NEWLINE_ token like + + On _DAYDATE_, _FROM_ wrote:_NEWLINE_ + Because of the backwards compatibility problem, it is not + possible to remove all of the ends of lines, because then there + will be no _NEWLINE_ tokens and that will cause the automatic + adding of two newlines! If you want, you may embed newlines in + the middle of the text, as well, producing a multi-line + _Reply-Leadin_. + By default, no attempt is made to localize the date. If you + prefer a localized form you may find that one of the tokens + _PREFDATE_ or _PREFDATETIME_ is a satisfactory substitute. If + you want more control one of the many other date tokens, such as + _DATEISO_, might be better. + For the adventurous, there is a way to conditionally include + text based on whether or not a token would result in specific + replacement text. For example, you could include some text based + on whether or not the _NEWS_ token would result in any + newsgroups if it was used. It's explained in detail here. + In the very unlikely event that you want to include a literal + token in the introduction line you must precede it with a + backslash character. For example, + + \_DAYDATE_ = _DAYDATE_ + would produce something like + + _DAYDATE_ = Sat, 24 Oct 1998 + It is not possible to have a literal backslash followed by an + expanded token. + _reverse-background-color_ + _reverse-foreground-color_ + Reverse Color. + _rsh-command_ + Sets the format of the command used to open a UNIX remote shell + connection. The default is "%s %s -l %s exec /etc/r%sd". All + four "%s" entries MUST exist in the provided command. The first + is for the command's pathname, the second is for the host to + connnect to, the third is for the user to connect as, and the + fourth is for the connection method (typically imap). + _rsh-open-timeout_ + Sets the time in seconds that _Alpine_ will attempt to open a + UNIX remote shell connection. The default is 15, the minimum + non-zero value is 5, and the maximum is unlimited. If this is + set to zero rsh connections will be completely disabled. + _rsh-path_ + Sets the name of the command used to open a UNIX remote shell + connection. The default is typically /usr/ucb/rsh. + _saved-msg-name-rule_ + Determines default folder name when _Sav_ing. If set to + _default-folder_ (which is the default setting), then _Alpine_ + will offer the folder "saved-messages" (UNIX) or "SAVEMAIL" (PC) + for _Sav_ing messages. The default folder offered in this way + may be changed by using the configuration variable + default-saved-msg-folder. + If this rule is set to _last-folder-used_, _Alpine_ offers to + _Save_ to the folder you last successfully _Saved_ a message to + (this session). The first time you _Save_ a message in a + session, _Alpine_ offers to _Save_ the message to the default + folder. + Choosing any of the _by-_ options causes _Alpine_ to attempt to + get the chosen option's value for the message being _Saved_ (or + for the first message being Saved if using an aggregate Save). + For example, if _by-from_ is chosen, _Alpine_ attempts to get + the value of who the message came from (i.e. the from address). + _Alpine_ then attempts to _Save_ the message to a folder matching + that value. If _by-from_ is chosen and no value is obtained, + _Alpine_ uses _by-sender_. The opposite is also true. If + _by-recipient_ was chosen and the message was posted to a + newsgroup, _Alpine_ will use the newsgroup name. If _by-replyto_ + is chosen and no value is obtained, _Alpine_ uses _by-from_. + If any of the "by-realname" options are chosen, _Alpine_ will + attempt to use the personal name part of the address instead of + the mailbox part. If any of the "by-nick" options are chosen, + the address is looked up in your address book and if found, the + nickname for that entry is used. Only simple address book + entries are checked, not distribution lists. Similarly, if any + of the "by-fcc" options are chosen, the fcc from the + corresponding address book entry is used. If by-realname, or the + by-nick or by-fcc lookups result in no value, then if the chosen + option ends with the "then-from", "then-sender", "then-replyto", + or "then-recip" suffix, _Alpine_ reverts to the same behavior as + "by-from", "by-sender", "by-replyto", or "by-recip" depending on + which option was specified. If the chosen option doesn't end + with one of the "then-" suffixes, then _Alpine_ reverts to the + default folder when no match is found in the address book. + Here is an example to make some of the options clearer. If the + message is From + + Fred Flintstone <flint@bedrock.org> + and this rule is set to "by-from", then the default folder + offered in the save dialog would be "flint". + If this rule is set to "by-realname-of-from" then the default + would be "Fred Flintstone". + If this rule is set to "by-nick-of-from" then _Alpine_ will + search for the address "flint@bedrock.org" in your address book. + If an entry is found and it has a nickname associated with it, + that nickname will be offered as the default folder. If not, the + default saved message folder will be offered as the default. + If this rule is set to "by-fcc-of-from" then _Alpine_ will + search for the address "flint@bedrock.org" in your address book. + If an entry is found and it has an Fcc associated with it, that + Fcc will be offered as the default folder. If not, the default + saved message folder will be offered as the default. + If this rule is set to "by-nick-of-from-then-from" then _Alpine_ + will search for the address "flint@bedrock.org" in your address + book. If an entry is found and it has a nickname associated with + it, that nickname will be offered as the default folder. If it + is not found (or has no nickname) then the default offered will + be the same as it would be for the "by-from" rule. That is, it + would be "flint" + This option is displayed as "Saved Message Name Rule". + _scroll-margin_ + This option controls when _Alpine_'s line-by-line scrolling + occurs. Typically, when a selected item is at the top or bottom + screen edge and the UP or DOWN (and Ctrl-P or Ctrl-N) keys are + pressed, the displayed items are scrolled down or up by a single + line. + This option allows you to tell _Alpine_ the number of lines from + the top and bottom screen edge that line-by-line scrolling + should occur. For example, setting this value to one (1) will + cause _Alpine_ to scroll the display when you move to select an + item on the display's top or bottom edge (instead of moving when + you move off the edge of the screen). + By default, this variable is zero (0), indicating that scrolling + happens when you move up or down to select an item immediately + off the display's top or bottom edge. + _selectable-item-background-color_ + _selectable-item-foreground-color_ + Selectable-item Color. + _sending-filters_ + This option defines a list of text-filtering commands (programs + and scripts) that may be selectively invoked to process a + message just before it is sent. If set, the Composer's _^X Send_ + command will allow you to select which filter (or none) to apply + to the message before it is sent. For security reasons, the full + path of the filter program must be specified. + Sending filters do not work with _PC-Alpine_ and sending filters + are not used if the feature send-without-confirm is set. + Command Modifying Tokens: + + __RECIPIENTS__ + When the command is executed, this token is replaced with + the space delimited list of recipients of the message + being sent. + + __TMPFILE__ + When the command is executed, this token is replaced with + the path and name of the temporary file containing the + text to be filtered. _Alpine_ expects the filter to + replace this data with the filter's result. NOTE: Use of + this token implies that the text to be filtered is not + piped into standard input of the executed command and its + standard output is ignored. _Alpine_ restores the tty + modes before invoking the filter in case the filter + interacts with the user via its own standard input and + output. + + __RESULTFILE__ + When the command is executed, this token is replaced with + the path and name of a temporary file intended to contain + a status message from the filter. _Alpine_ displays this + in the message status field. + + __DATAFILE__ + When the command is executed, this token is replaced in + the command line with the path and name of a temporary + file that _Alpine_ creates once per session and deletes + upon exit. The file is intended to be used by the filter + to store state information between instances of the + filter. + + __PREPENDKEY__ + When the command is executed, this token indicates that a + random number will be passed down the input stream before + the message text. It is not included as a command-line + argument. This number could be used as a session key. It + is sent in this way to improve security. The number is + unique to the current _Alpine_ session and is only + generated once per session. + + __INCLUDEALLHDRS__ + When the command is executed, this token indicates that + the headers of the message will be passed down the input + stream before the message text. It is not included as a + command-line argument. The filter should, of course, + remove the headers before returning control to _Alpine_. + + __MIMETYPE__ + When the command is executed, this token is replaced in + the command name with a temporary file name used to accept + any new MIME Content-Type information necessitated by the + output of the filter. Upon the filter's exit, if the file + contains new MIME type information, _Alpine_ verifies its + format and replaces the outgoing message's MIME type + information with that contained in the file. This is + basically a cheap way of sending something other than + Text/Plain. + + _sendmail-path_ + This names the path to an alternative program, and any necessary + arguments, to be used in posting mail messages. See the section + on SMTP and Sendmail for more details. + _signature-file_ + This is the name of a file which will be automatically inserted + into outgoing messages. It typically contains information such + as your name, email address and organizational affiliation. + _Alpine_ adds the signature into the message as soon as you enter + the composer so you can choose to remove it or edit it on a + message by message basis. Signature file placement in message + replies is controlled by the signature-at-bottom setting in the + feature list. + This defaults to ~/.signature on UNIX and <PINERC + directory>\PINE.SIG on a PC. + To create or edit your signature file choose Setup from the Main + Menu and then select S for Signature (Main/Setup/Signature). + This puts you into the Signature Editor where you can enter a + _few_ lines of text containing your identity and affiliation. + If the filename is followed by a vertical bar (|) then instead + of reading the contents of the file the file is assumed to be a + program which will produce the text to be used on its standard + output. The program can't have any arguments and doesn't receive + any input from _Alpine_, but the rest of the processing works as + if the contents came from a file. + Instead of storing the data in a local file, the signature data + may be stored remotely in an IMAP folder. In order to do this, + you must use a remote name for the file. A remote signature-file + name might look like: + + {myimaphost.myschool.k12.wa.us}mail/signature + or, if you have an SSL-capable version of _Alpine_, you might + try + + {myimaphost.myschool.k12.wa.us/user=loginname/ssl}mail/signature + The syntax used here is the same as the syntax used for remote + configuration files from the command line. Note that you may not + access an existing signature file remotely, you have to create a + new _folder_ which contains the signature data. If the name you + use here for the signature file is a remote name, then when you + edit the file from the Setup/Signature command the data will be + stored remotely in the folder. You aren't required to do + anything special to create the folder, it gets created + automatically if you use a remote name. + Besides regular text, the signature file may also contain (or a + signature program may produce) tokens which are replaced with + text which usually depends on the message you are replying to or + forwarding. For example, if the signature file contains the + token + + _DATE_ + anywhere in the text, then that token is replaced by the date + the message you are replying to or forwarding was sent. If it + contains + + _CURDATE_ + that is replaced with the current date. The first is an example + of a token which depends on the message you are replying to (or + forwarding) and the second is an example which doesn't depend on + anything other than the current date. You have to be a little + careful with this facility since tokens which depend on the + message you are replying to or forwarding will be replaced by + nothing in the case where you are composing a new message from + scratch. The use of roles may help you in this respect. It + allows you to use different signature files in different cases. + The list of tokens available for use in the signature file is + here. + Instead of, or along with the use of _roles_ to give you + different signature files in different situations, there is also + a way to conditionally include text based on whether or not a + token would result in specific replacement text. For example, + you could include some text based on whether or not the _NEWS_ + token would result in any newsgroups if it was used. This is + explained in detail here. This isn't for the faint of heart. + In the very unlikely event that you want to include a literal + token in the signature you must precede it with a backslash + character. For example, + + \_DAYDATE_ = _DAYDATE_ + would produce something like + + _DAYDATE_ = Sat, 24 Oct 1998 + It is not possible to have a literal backslash followed by an + expanded token. + _signature-background-color_ + _signature-foreground-color_ + Signature Color. + _smime-public-cert-directory_ + UNIX _Alpine_ only. + If the option smime-public-cert-container is set then this + option will have no effect. + Normally, Public Certificates for use with S/MIME will be stored + in the directory which is the value of this option. Those + certificates will be stored in PEM format, one certificate per + file. The name of the file for the certificate corresponding to + + emailaddress + should be + + emailaddress.crt + For example, a file for user@example.com would be in the file + + user@example.com.crt + in this directory. + Use the Setup/SMIME screen to modify this variable. + Typically, the public certificates that you have will come from + S/MIME signed messages that are sent to you. _Alpine_ will + extract the public certificate from the signed message and store + it in the certificates directory. These PEM format public + certificates look something like: +-----BEGIN CERTIFICATE----- +MIIFvTCCBKWgAwIBAgIQD4fYFHVI8T20yN4nus097DANBgkqhkiG9w0BAQUFADCB +rjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +... +2b9KGqDyMWW/rjNnmpjzjT2ObGM7lRA8lke4FLOLajhrz4ogO3b4DFfAAM1VSZH8 +D6sOwOLJZkLY8FRsfk63K+2EMzA2+qAzMKupgeTLqXIf +-----END CERTIFICATE----- + + + General S/MIME Overview + This option is displayed as "S/MIME - Public Cert Directory". + _smime-public-cert-container_ + UNIX _Alpine_ only. + If this option is set it will be used instead of + smime-public-cert-directory + This option gives you a way to store certificates remotely on an + IMAP server instead of storing the certificates one per file + locally. In order to do that you just give this option a remote + folder name for a folder which does not yet exist. The name is + similar to the name you might use for a remote configuration + file. A remote folder name might look something like: + + {myimaphost.myschool.k12.wa.us}mail/publiccerts + Use the Setup/SMIME screen to modify this variable. + + General S/MIME Overview + This option is displayed as "S/MIME - Public Cert Container". + _smime-private-key-directory_ + UNIX _Alpine_ only. + In order to sign outgoing S/MIME messages you will need a + personal digital ID certificate. You will usually get such a + certificate from a certificate authority such as Thawte or + CAcert. (In order to encrypt outgoing messages you don't need a + personal digital ID, you need the public certificate of the + recipient instead.) If the option smime-private-key-container is + set then this option will have no effect. + Normally, Private Keys for use with S/MIME will be stored in the + directory which is the value of this option. Those certificates + will be stored in PEM format, one certificate per file. The name + of the file for the certificate corresponding to your + + emailaddress + should be + + emailaddress.key + For example, if your address is user@example.com the name of the + file would be + + user@example.com.key + in this directory. + Use the Setup/SMIME screen to modify this variable. + Typically, the private key that you have will come from a + Certificate Authority. The private key should be stored in a PEM + format file that looks something like: +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: DES-EDE3-CBC,2CBD328FD84CF5C6 + +YBEXYLgLU9NJoc1V+vJ6UvcF08RX54S6jXsmgL0b5HGkudG6fhnmHkH7+UCvM5NI +SXO/F8iuZDfs1VGG0NyitkFZ0Zn2vfaGovBvm15gx24b2xnZDLRB7/bNZkurnK5k +VjAjZ2xXn2hFp2GJwqRdmxYNqsKGu52B99oti5HUWuZ2GFRaWjn5hYOqeApZE2uA +... +oSRqfI51UdSRt0tmGhHeTvybUVrHm9eKft8TTGf+qSBqzSc55CsmoVbRzw4Nfhix +m+4TJybNGNfAgOctSkEyY/OCb49fRRQTCBZVIhzLGGmpYmkO55HbIA== +-----END RSA PRIVATE KEY----- + + + General S/MIME Overview + This option is displayed as "S/MIME - Private Key Directory". + _smime-private-key-container_ + UNIX _Alpine_ only. + If this option is set it will be used instead of + smime-private-key-directory. + This option gives you a way to store keys remotely on an IMAP + server instead of storing the keys one per file locally. In + order to do that you just give this option a remote folder name + for a folder which does not yet exist. The name is similar to + the name you might use for a remote configuration file. A remote + folder name might look something like: + + {myimaphost.myschool.k12.wa.us}mail/privatekeys + Use the Setup/SMIME screen to modify this variable. + + General S/MIME Overview + This option is displayed as "S/MIME - Private Key Container". + _smime-cacert-directory_ + UNIX _Alpine_ only. + If the option smime-cacert-container is set then this option + will have no effect. + CACert is a shorthand name for certification authority + certificate. Normally _Alpine_ will use the CACerts that are + located in the standard system location for CACerts. It may be + the case that one of your correspondents has a Digital ID which + has been signed by a certificate authority that is not in the + regular set of system certificate authorities. You may + supplement the system list by adding further certificates of + your own. These should be stored in the directory which is the + value of this option. The certificates will be stored in PEM + format, one certificate per file. The names of the files can be + anything ending in ".crt". + Use the Setup/SMIME screen to modify this variable. + These PEM format CA certificates look very similar to your + public certificates for particular email addresses + (smime-public-cert-directory). + + General S/MIME Overview + This option is displayed as "S/MIME - Cert Authority Directory". + _smime-cacert-container_ + UNIX _Alpine_ only. + If this option is set it will be used instead of + smime-cacert-directory. + This option gives you a way to store certificates remotely on an + IMAP server instead of storing the certificates one per file + locally. In order to do that you just give this option a remote + folder name for a folder which does not yet exist. The name is + similar to the name you might use for a remote configuration + file. A remote folder name might look something like: + + {myimaphost.myschool.k12.wa.us}mail/cacerts + Use the Setup/SMIME screen to modify this variable. + + General S/MIME Overview + This option is displayed as "S/MIME - Cert Authority Container". + _smtp-server_ + One or more SMTP servers (host name or IP address) which _Alpine_ + will use for outgoing mail. If not set, _Alpine_ passes outgoing + email to the _sendmail_ program on the local machine. _PC-Alpine_ + users must have this variable set in order to send mail as they + have no _sendmail_ program. + Your SMTP server may offer SMTP AUTH authentication. It may even + require it. If your SMTP server offers SMTP AUTH authentication + you may specify a "user" name parameter to cause _Alpine_ to + attempt to authenticate. This parameter requires an associated + value, the username identifier with which to establish the + server connection. An example might be: + + smtpserver.example.com/user=katie + If AUTH authentication is offered by the server, this will cause + _Alpine_ to attempt to use it. If AUTH authentication is not + offered by the server, this will cause _Alpine_ to fail sending + with an error similar to: + + Error: SMTP authentication not available + Another type of authentication that is used by some ISPs is + called "POP before SMTP" or "IMAP before SMTP", which means that + you have to authenticate yourself to the POP or IMAP server by + opening a mailbox before you can send mail. To do this, you + usually only have to open your INBOX. + You may tell _Alpine_ to use the Message Submission port (587) + instead of the SMTP port (25) by including the "submit" + parameter in this option. At this time "/submit" is simply + equivalent to specifying port 587, though it may imply more than + that at some point in the future. Some ISPs are blocking port 25 + in order to reduce the amount of spam being sent to their users. + You may find that the submit option allows you to get around + such a block. + + smtpserver.example.com/submit + To specify any non-standard port number on the SMTP server you + may follow the hostname with a colon followed by the portnumber. + + smtpserver.example.com:12345 + Normally, when a connection is made to the Smtp-Server _Alpine_ + will attempt to negotiate a secure (encrypted) session using + Transport Layer Security (TLS). If that fails then a + non-encrypted connection will be attempted instead. You may + specify that a TLS connection is required if you wish. If you + append "/tls" to the name then the connection will fail instead + of falling back to a non-secure connection. + + smtpserver.example.com/tls + See the SMTP Servers section or the Server Name Syntax section + for some more details. + This option is displayed as "SMTP Server (for sending)". + _sort-key_ + This variable sets up the default Message Index sorting. The + default is to sort by arrival order (the order the messages + arrived in the folder). It has the same functionality as the + _-sort_ command line argument and the _$_ command in the "Folder + Index". If a _sort-key_ is set, then all folders open during the + session will have that as the default sort order. + _speller_ + UNIX _Alpine_ only. + For _PC-Alpine_, you must install the aspell library code that + you may get from http://aspell.net/win32/. + This option affects the behavior of the _^T_ (spell check) + command in the Composer. It specifies the program invoked by _^T_ + in the Composer. By default, _Alpine_ uses the system's "spell" + command. _Alpine_ will use the command defined by this option + (if any) instead. When invoking the spell-checking program, + _Alpine_ appends a tempfile name (where the message is passed) to + the command line. _Alpine_ expects the speller to correct the + spelling in that file. When you exit from the speller program + _Alpine_ will read the tmpfile back into the composer. + For Unix _Alpine_ the program _ispell_ works well as an + alternate spell checker. If your Unix system has _ispell_ it is + probably reasonable to make it the default speller by + configuring it as the default in the system configuration file, + /usr/local/lib/pine.conf. + If this option is not set, then the system's _spell_ command is + used. The spell command does not work the same as the alternate + speller. It produces a list of misspelled words on its standard + output, instead, and doesn't take a tempfile as an argument. + Don't set this speller option to the standard Unix spell + command. That won't work. If you want to use the standard Unix + spell command, set the speller option to nothing. + _ssh-command_ + Sets the format of the command used to open a UNIX secure shell + connection. The default is "%s %s -l %s exec /etc/r%sd". All + four "%s" entries MUST exist in the provided command. The first + is for the command's pathname, the second is for the host to + connnect to, the third is for the user to connect as, and the + fourth is for the connection method (typically imap). + _ssh-open-timeout_ + Sets the time in seconds that _Alpine_ will attempt to open a + UNIX secure shell connection. The default is 15, the minimum + non-zero value is 5, and the maximum is unlimited. If this is + set to zero ssh connections will be completely disabled. + _ssh-path_ + Sets the name of the command used to open a UNIX secure shell + connection. The default is typically /usr/bin/ssh. + _standard-printer_ + System-wide configuration file only. Specifies a list of + commands for category 2 of the _Setup/Printer_ screen, the + standard print command section. This is not used by _PC-Alpine_. + _status-background-color_ + _status-foreground-color_ + Status Color. + _status-message-delay_ + This option has evolved over time, causing the possible values + to be counter-intuitive. Read carefully before you set this + option. First we explain what the option does, then there is a + longer discussion following that. + If this is set to zero, the default value, it has _no_ effect. + Positive and negative values serve two similar, but different + purposes. + If it is set to a positive number, it causes the cursor to move + to the status line whenever a status message is printed and + pause there for this many seconds. It will probably only be + useful if the show-cursor feature is also turned on. Setting + this option to a postive number can only be used to _increase_ + the status message delay. This may be useful for Braille + displays, or other non-traditional displays. + If it is set to a negative number the interpretation is a bit + complicated. Negative numbers are used to _decrease_ the amount + of delay _Alpine_ uses to allow you to read important status + messages. Of course, this may cause you to miss some important + messages. If you see a message flash by but miss what it says + you can use the Journal command from the Main menu to read it. + If you set this option to a negative value, the delay will be no + more than one second less than the absolute value of the value + you set. So if you set it to -1, the delay will be no more than + zero seconds, no delay at all. If you set it to -2, the delay + will be no more than 1 second. And so on, -3 is 2 seconds, -4 is + 3 seconds, ... If the delay that _Alpine_ would have used by + default is less than this delay, then the smaller delay set by + _Alpine_ will be used. Setting this option to a negative value + can only reduce the amount of delay, never increase it. + Here is a more detailed explanation. Status messages are the + messages which show up spontaneously in the status message line, + the third line from the bottom of the screen. By default, + _Alpine_ assigns each status message it produces a minimum + display time. Some status messages have a minimum display time + of zero. You can see an example of such a message by paging up + in this help text until you reach the top of the screen. If you + try to page past the top you will see the message + + [Already at start of help text] + in the status line. If there is another more important use of + the status message line this message might be replaced quickly, + or it even might not be shown at all. However, if there is no + reason to get rid of the message, it might stay there for + several seconds while you read the help. An example where it is + replaced immediately happens when you page up in the help text + past the top of the screen, but then type the "WhereIs" command + right after paging up. The message will disappear immediately + without causing a delay (unless you have set this option to a + positive value) to allow you to type input for the "WhereIs" + command. Since it isn't a very important message, _Alpine_ has + set its minimum display time to zero seconds. + Other messages have minimum display times of three or more + seconds. These are usually error messages that _Alpine_ thinks + you ought to see. For example, it might be a message about a + failed Save or a failed folder open. It is often the case that + this minimum display time won't delay you in any way because the + status message line is not needed for another reason. However, + there are times when _Alpine_ has to delay what it is doing in + order to display a status message for the minimum display time. + This happens when a message is being displayed and _Alpine_ + wants to ask for input from the keyboard. For example, when you + Save a message you use the status message line. You get a prompt + there asking for the name of the folder to save to. If there is + a status message being displayed that has not yet displayed for + its minimum time _Alpine_ will display that status message + surrounded with the characters > and < to show you that it is + delaying. That might happen, for example, if you tried to save + to a folder that caused an error, then followed that immediately + with another Save command. You might find yourself waiting for a + status message like + + [>Can't get write access to mailbox, access is readonly<] + to finish displaying for three seconds. If that is something you + find happening to you frequently, you may use negative values of + this option to decrease or eliminate that delay, at the risk of + missing the message. + _stay-open-folders_ + This option affects low-level behavior of _Alpine_. There is no + default value for this option. It is related to the options + Preopen-Stayopen-Folders, Max-Remote-Connections, and + offer-expunge-of-Stayopen-Folders. + Note: changes made to this list take effect the next time you + open a folder in the list. + This is a list of folders that will be permanently kept open + once they are first opened. The names in this list may be either + the nickname of an Incoming folder or the full technical + specification of a folder. The folders in this list need not be + remote IMAP folders, they could usefully be local folders, as + well. If a folder in the list is a newsgroup or is not accessed + either locally or via IMAP, then the entry will be ignored. For + example, folders accessed via NNTP or POP3 will not be kept + open, since the way that new mail is found with those protocols + involves closing and reopening the connection. + Once a Stay Open folder has been opened, new-mail checking will + continue to happen on that folder for the rest of the _Alpine_ + session. Your INBOX is always implicitly included in this + Stay-Open list and doesn't need to be added explicitly. + Another difference that you may notice between a Stay Open + folder and a non-Stay Open folder is which message is selected + as the current message when you enter the folder index. + Normally, the starting position for an incoming folder (which + most Stay Open folders will likely be) is controlled by the + Incoming-Startup-Rule. However, if a folder is a Stay Open + folder, when you re-enter the folder after the first time the + current message will be the same as it was when you left the + folder. An exception is made if you use the TAB command to get + to the folder. In that case, the message number will be + incremented by one from what it was when you left the folder. + The above special behavior is thought to be useful. However, it + is special and different from what you might at first expect. + The feature Use-Regular-Startup-Rule-for-Stayopen-Folders may be + used to turn off this special treatment. + If the message that was current when you left the folder no + longer exists, then the regular startup rule will be used + instead. + This option is displayed as "Stayopen Folders". + _tcp-open-timeout_ + Sets the time in seconds that _Alpine_ will attempt to open a + network connection. The default is 30, the minimum is 5, and the + maximum is system defined (typically 75). If a connection has + not completed within this many seconds _Alpine_ will give up and + consider it a failed connection. + _tcp-query-timeout_ + When _Alpine_ times out a network read or write it will normally + just display a message saying "Still waiting". However, if + enough time has elapsed since it started waiting it will offer + to let you break the connection. That amount of time is set by + this option, which defaults to 60 seconds, has a minimum of 5 + seconds, and a maximum of 1000 seconds. + _tcp-read-warning-timeout_ + Sets the time in seconds that _Alpine_ will wait for a network + read before warning you that things are moving slowly and + possibly giving you the option to break the connection. The + default is 15 seconds. The minimum is 5 seconds and the maximumn + is 1000 seconds. + _tcp-write-warning-timeout_ + Sets the time in seconds that _Alpine_ will wait for a network + write before warning you that things are moving slowly and + possibly giving you the option to break the connection. The + default is 0 which means it is unset. If set to a non-zero + value, the minimum is 5 and the maximum is 1000. + _threading-display-style_ + When a folder is sorted by Threads or OrderedSubject, this + option will affect the MESSAGE INDEX display. By default, + _Alpine_ will display the MESSAGE INDEX in the + "show-thread-structure" style if a folder is sorted by Threads + or OrderedSubject. The possible values are: + + _none_ + Regular index display. The same index line as would be + displayed without threading is used. The only difference + will be in the order of the messages. + + _show-thread-structure_ + Threaded Subjects will be indented and vertical bars and + horizontal lines will be added to make it easier to see + the relationships among the messages in a thread (a + conversation). + + _mutt-like_ + This is the same as the option above except that the + Subject is suppressed (is blank) if it matches the + previous Subject in the thread. The name comes from the + email client Mutt. Here is an example of what a mutt-like + index might look like. In this example, the first column + represents the message number, the threading-index-style + is set to "regular-index-with-expanded-threads", and the + Threading-Lastreply-Character is set to a backslash: + + 1 Some topic + 2 . Subject original message in thread + 3 |-> reply to 2 + 4 . |-> another reply to 2 + 5 . | \-> reply to 4 + 6 . | \-> reply to 5 + 7 | \-> reply to 6 + 8 |-> another reply to 2 + 9 . |->New subject another reply to 2 but with a New subject + 10 | |-> reply to 9 + 11 | \-> another reply to 9 + 12 | \-> reply to 11 + 13 \-> final reply to 2 + 14 Next topic + + _indent-subject-1_ + Threaded Subjects will be indented one space per level of + the conversation. The bars and lines that show up in the + show-thread-structure display will not be there with this + style. + + _indent-subject-2_ + Same as above but indent two spaces per level instead of + one space. + + _indent-from-1_ + Similar to indent-subject-1, except that instead of + indenting the Subject field one space the From field of a + thread will be indented one space per level of the + conversation. + + _indent-from-2_ + Same as above but indent two spaces per level instead of + one space. + + _show-structure-in-from_ + The structure of the thread is illustrated with indenting, + vertical bars, and horizontal lines just like with the + show-thread-structure option, but the From field is used + to show the relationships instead of the Subject field. + + _threading-expanded-character_ + The Threading-Expanded-Character option has a small effect on + the MESSAGE INDEX display when using a threading-display-style + other than _none_. The value of this option is a single + character. This character is used to indicate that part of a + thread has been expanded and could be collapsed if desired with + the "/" Collapse/Expand command. By default, the value of this + option is a dot (.). + If this option is set to the Empty Value, then the column (and + the following blank column) will be deleted from the display. + This option is closely related to the + threading-indicator-character option. Another similar option + which affects the thread display is the + threading-lastreply-character option. + _threading-index-style_ + When a folder is sorted by Threads or OrderedSubject, this + option will affect the INDEX displays. The possible values are: + + _regular-index-with-expanded-threads_ + This is the default display. If the configuration option + threading-display-style is set to something other than + "none", then this setting will cause _Alpine_ to start off + with a MESSAGE INDEX with all of the threads expanded. + That is, each message will have a line in the MESSAGE + INDEX display. The Collapse/Expand command (/) may be used + to manually collapse or expand a thread or subthread (see + also slash-collapses-entire-thread). + + This setting affects the display when the folder is first + threaded. The collapsed state may also be re-initialized + by re-sorting the folder manually using the SortIndex + command ($). After re-sorting the threads will once again + all be expanded, even if you have previously collapsed + some of them. + + If "threading-display-style" is set to "none", then the + display will be the regular default _Alpine_ MESSAGE + INDEX, but sorted in a different order. + + _regular-index-with-collapsed-threads_ + If the configuration option threading-display-style is set + to something other than "none", then this setting will + cause _Alpine_ to start out with all of the threads + collapsed instead of starting out with all of the threads + expanded. The Collapse/Expand command (/) may be used to + manually collapse or expand a thread or subthread (see + also slash-collapses-entire-thread). + + This setting affects the display when the folder is first + threaded. The collapsed state may also be re-initialized + by re-sorting the folder manually using the SortIndex + command ($). After re-sorting the threads will once again + all be collapsed, even if you have previously expanded + some of them. + + _separate-index-screen-always_ + With this setting and the next, you will see an index of + threads instead of an index of messages, provided you have + sorted by Threads or OrderedSubject. + + The THREAD INDEX contains a '*' in the first column if any + message in the thread is marked Important. If not, it + contains a '+' if any message in the thread is to you. The + second column is blank. The third column contains a 'D' if + all of the messages in the thread are deleted. Otherwise, + it contains an 'N' if any of the messages in the thread + are New. + + When you view a particular thread from the THREAD INDEX + you will be in the MESSAGE INDEX display but the index + will only contain messages from the thread you are + viewing. + + _separate-index-screen-except-for-single-messages_ + This is very similar to the option above. When you are in + the THREAD INDEX, one of the available commands is + "ViewThd". With the setting "separate-index-screen-always" + (the option above) when you view a particular thread you + will be in the MESSAGE INDEX display and the index will + only contain messages from the thread you are viewing. If + the thread you are viewing consists of a single message, + the MESSAGE INDEX will be an index with only one message + in it. If you use this + "separate-index-screen-except-for-single-messages" setting + instead, then that index which contains a single message + will be skipped and you will go directly from the THREAD + INDEX into the MESSAGE TEXT screen. + + _threading-indicator-character_ + The Threading-Indicator-Character option has a small effect on + the MESSAGE INDEX display when using a threading-display-style + other than _none_ and sorting by Threads or OrderedSubject. The + value of this option is a single character. This character is + used to indicate that part of a thread (a conversation) is + hidden beneath a message. The message could be expanded if + desired with the "/" Collapse/Expand command. By default, the + value of this option is the greater than sign (>). + If this option is set to the Empty Value, then the column (and + the following blank column) will be deleted from the display. + This option is closely related to the + threading-expanded-character option. Another similar option + which affects the thread display is the + threading-lastreply-character option. + _threading-lastreply-character_ + The Threading-Lastreply-Character option has a small effect on + the MESSAGE INDEX display when using a threading-display-style + of _show-thread-structure_, _mutt-like_, or + _show-structure-in-from_; and sorting by Threads or + OrderedSubject. The value of this option is a single character. + This character is used instead of the vertical line character + when there are no more replies directly to the parent of the + current message. It can be used to "round-off" the bottom of the + vertical line by setting it to a character such as a backslash + (\) or a backquote (`). The default value of this option is the + backslash character (\). This option may not be set to the Empty + Value. In that case, the default will be used instead. + This option is displayed as "Threading Last Reply Character". + _title-background-color_ + _title-foreground-color_ + Title Color. + _title-closed-background-color_ + _title-closed-foreground-color_ + Title-closed Color. + _titlebar-color-style_ + titlebar-color-style. + _unknown-character-set_ + A text message should either be made up of all US-ASCII + characters or it should contain a charset label which tells the + software which character set encoding to use to interpret the + message. Sometimes a malformed message may be unlabeled but + contain non-ascii text. This message is outside of the standards + so any attempt to read it could fail. When _Alpine_ attempts to + read such a message it will try to interpret the text in the + character set you specify here. For example, if you have + correspondents who send you unlabeled messages that are usually + made up of characters from the WINDOWS-1251 character set, + setting this unknown-character-set to WINDOWS-1251 will allow + you to read those messages. Of course, if the unlabeled message + is actually in some other character set, then you may see + garbage on your screen. + In the Setup/Config screen you may choose from a list of all the + character sets _Alpine_ knows about by using the "T" ToCharsets + command. + _upload-command_ + This option affects the behavior of the Composer's _^R_ (Read + File) and _^J_ (Attach File, in the header) commands. It + specifies a Unix program name, and any necessary command line + arguments, that _Alpine_ can use to transfer files from your + personal computer into messages that you are composing. + _upload-command-prefix_ + This option is used in conjunction with the _upload-command_ + option. It defines text to be written to the terminal emulator + (via standard output) immediately prior to starting the upload + command. This is useful for integrated serial line file transfer + agents that permit command passing (e.g., Kermit's APC method). + _url-viewers_ + List of programs to use to open Internet URLs. This value + affects _Alpine_'s handling of URLs that are found in the text + of messages you read. Normally, only URLs _Alpine_ can handle + directly are automatically offered for selection in the "Message + Text" screen. When one or more comma delimited Web browsers + capable of deciphering URLs on their command line are added + here, _Alpine_ will choose the first available browser to + display URLs it doesn't recognize. + Additionally, to support various connection methods and + browsers, each entry in this list can begin with the special + token _TEST(test-string)_. The test-string is a shell command + that _Alpine_ will run and which must exit with a status of zero + for _Alpine_ to consider that browser for use (the other + criteria is that the browser must exist as a full path or a path + relative to your home directory). + Now for an example: + + url-viewers=_TEST("test -n '${DISPLAY}'")_ /usr/local/bin/netscape, + /usr/local/bin/lynx, C:\BIN\NETSCAPE.BAT + This example shows that for the first browser in the list to be + used the environment variable DISPLAY must be defined. If it is, + then the file /usr/local/bin/netscape must exist. If either + condition is not met, then the file /usr/local/bin/lynx must + exist. If it doesn't, then the final path and file must exist. + Note that the last entry is a DOS/Windows path. This is one way + to support _Alpine_ running on more than one architecture with + the same configuration file. + _use-only-domain-name_ + Can be set to _yes_ or _no._ Anything but _yes_ means _no._ If + set to _yes_ the first label in the host name will be lopped off + to get the domain name and the domain name will be used for + outgoing mail and such. That is, if the host name is + _carson.u.example.edu_ and this variable is set to _yes,_ then + _u.example.edu_ will be used on outgoing mail. Only meaningful if + user-domain is NOT set. + _user-domain_ + Sets the domain or host name for the user, overriding the system + host or domain name. See the domain name section. The easiest + way to change the full From address is with the customized-hdrs + variable. + _user-id_ + _PC-Alpine_ only and personal configuration file only. Sets the + username that is placed on all outgoing messages. The username + is the part of the address that comes before the "@". The + easiest way to change the full From address is with the + customized-hdrs variable. + _user-input-timeout_ + If this is set to an integer greater than zero, then this is the + number of _hours_ to wait for user input before _Alpine_ times + out. If _Alpine_ is in the midst of composing a message or is + waiting for user response to a question, then it will not + timeout. However, if _Alpine_ is sitting idle waiting for the + user to tell it what to do next and the user does not give any + input for this many hours, _Alpine_ will exit. No expunging or + moving of read messages will take place. It will exit similarly + to the way it would exit if it received a hangup signal. This + may be useful for cleaning up unused _Alpine_ sessions which + have been forgotten by their owners. The _Alpine_ developers + envision system administrators setting this to a value of + several hours (24?) so that it won't surprise a user who didn't + want to be disconnected. + _viewer-hdr-colors_ + This variable holds the optional Header Colors and patterns + which have been defined by the user. This is usually modified by + using the Header Colors section of the Setup Color screen. + _viewer-hdrs_ + You may change the default list of headers that are viewed by + listing the headers you want to view here. If the headers in + your _viewer-hdrs_ list are present in the message, then they + will be shown. The order of the headers you list will also be + honored. If the special value _all-except_ is included as the + first header in the _viewer-hdrs_ list, then all headers in the + message except those in the list will be shown. The values are + all case insensitive. + This option is displayed as "Viewer Headers". + _viewer-margin-left_ + This variable controls the left-hand vertical margin's width in + _Alpine_'s Message Viewing screen. Its value is the number of + space characters preceding each displayed line. For consistency + with Viewer-Margin-Right, you may specify the column number to + start in (column numbering begins with number 1) instead of the + width of the margin by appending a lower case letter "c" to the + number. For example, a value of "2c" means to start the text in + column two, which is entirely equivalent to a value of "1", + which means to leave a margin of 1 space. + The default is a left margin of 0 (zero). Misconfigurations (for + example, negative values or values with starting left columns + greater than the ending right column) are silently ignored. If + the number of columns for text between the Viewer-Margin-Left + and the Viewer-Margin-Right is fewer than 8, then margins of + zero will be used instead. + _viewer-margin-right_ + This variable controls the right-hand vertical margin's width in + _Alpine_'s Message Viewing screen. Its value is the number of + space characters following each displayed line. You may specify + the column number to end the text in (column numbering begins + with number 1) instead of the width of the margin by appending a + lower case letter "c" to the number. For example, a value of + "76c" means to end the text in column 76. If the screen is 80 + characters wide, this is equivalent to a value of "4", which + means to leave a margin of 4 spaces. However, if you use + different size screens at different times, then these two values + are not equivalent. + The default right margin is 4. Misconfigurations (for example, + negative values or values with starting left columns greater + than the ending right column) are silently ignored. If the + number of columns for text between the Viewer-Margin-Left and + the Viewer-Margin-Right is fewer than 8, then margins of zero + will be used instead. + _viewer-overlap_ + This option specifies an aspect of _Alpine_'s Message Viewing + screen. When the space bar is used to page forward in a message, + the number of lines specified by the _viewer-overlap_ variable + will be repeated from the bottom of the screen. That is, if this + was set to two lines, then the bottom two lines of the screen + would be repeated on the top of the next screen. The normal + default value is "2". + _window-position_ + Winsock version of _PC-Alpine_ only. Window position in the + format: CxR+X+Yn Where C and R are the window size in characters + and X and Y are the screen position of the top left corner of + the window. + __________________________________________________________________ + +Configuration Features + + There are several features (options) which may be turned off or on. The + configuration variable feature-list is a list of all the features that + are turned on or off. If the name of a feature is in the list it will + be turned on. If the name of a feature with the characters no- + prepended is in the list, it will turn the feature off. This is useful + for overriding system-wide defaults. This is because, unlike all the + other configuration variables, the _feature-list_ is additive. That is, + first the system-wide _feature-list_ is read and then the user's + _feature-list_ is read. This makes it possible for the system manager to + turn some of the features on by default while still allowing the user + to cancel that default. For example, if the system manager has turned + on the _allow-talk_ feature by default then a user may turn it back off + by including the feature _no-allow-talk_ in his or her personal + configuration file. Of course, these details are usually handled by + _Alpine_ when the user turns an option on or off from inside the + _Setup/Config_ screen. + + System managers should take some care when turning on features by + default. Some of the documentation assumes that all of the features are + off by default, so it could be confusing for a user if some are on by + default instead. Feature names are case-independent. + + Here is an alphabetical list of possible features. + _allow-changing-from_ + Prior to _Pine_ 4.00 there was a _compile_-time option called + ALLOW_CHANGING_FROM. That has been replaced by a _runtime_ + feature. If this feature is turned on then the From line can be + changed just like all the other header fields that can be + changed. See the configuration variables customized-hdrs and + default-composer-hdrs for more information on editing headers. + The default value for this feature is ON, so that editing of + From headers is allowed by default. + _allow-talk_ + Unix _Alpine_ only. By default, permission for others to _talk_ + to your terminal is turned off when you are running _Alpine_. + When this feature is set, permission is instead turned on. + Note: The _talk_ program has nothing to do with _Alpine_ or + email. The _talk_ daemon on your system will attempt to print a + message on your screen when someone else is trying to contact + you. If you wish to see these messages while you are running + _Alpine_, you should enable this feature. + If you do enable this feature and see a _talk_ message, you must + suspend or quit _Alpine_ before you can respond. + _alternate-compose-menu_ + This feature controls the menu that is displayed when Compose is + selected. If set, a list of options will be presented, with each + option representing the type of composition that could be used. + This feature is most useful for users who want to avoid being + prompted with each option separately, or who want to avoid the + checking of remote postponed or form letter folders. The + possible types of composition are: + New, for starting a new composition. Note that if New is + selected and roles are set, roles are checked for matches and + applied according to the setting of the matching role. + Interrupted, for continuing an interrupted composition. This + option is only offered if an interrupted message folder is + detected. + Postponed, for continuing postponed compositions. This option is + offered if a postponed-folder is set in the config _REGARDLESS + OF_ whether or not the postponed folder actually exists. This + option is especially handy for avoiding having to check for the + existence of a remote postponed folder. + Form, for using form letters. This option is offered if the + form-letter-folder is set in the config, and is not checked for + existence for reasons similar to those explained by the + postponed option. + setRole, for selecting a role to apply to a composition. + _alternate-role-menu_ + Normally the Role Command allows you to choose a role and + compose a new message using that role. When this feature is set, + the role command will first ask whether you want to Compose a + new message, Forward the current message, Reply to the current + message, or Bounce the current message. If you are not in the + MESSAGE INDEX and are not viewing a message, then there is no + current message and the question will be skipped. After you have + chosen to Compose, Forward, Reply or Bounce you will then choose + the role to be used. + When Bouncing the "Set From" address is used for the Resent-From + header, the "Set Fcc" value is used for the Fcc provided that + the option "Fcc-On-Bounce" is turned on, and the "Use SMTP + Server" value is used for the SMTP server, if set. Other actions + of the role are ignored when Bouncing. + This feature is displayed as "Alternate Role (#) Menu". + _assume-slow-link_ + UNIX _Alpine_ only. + This feature affects _Alpine_'s display routines. If set, the + normal inverse-video cursor (used to highlight the current item + in a list) will be replaced by an _arrow_ cursor and other + screen update optimizations for low-speed links (e.g. 2400 bps + dialup connections) will be activated. One of the optimizations + is that colored index lines (set up with Indexcolor Rules) will + not be colored. This might be useful if _you_ know you have a + slow speed link but for some reason _Alpine_ doesn't know. + _auto-move-read-msgs_ + This feature controls an aspect of _Alpine_'s behavior upon + quitting. If set, and the read-message-folder variable is also + set, then _Alpine_ will automatically transfer all read messages + from the _INBOX_ to the designated folder and mark them as + deleted in the _INBOX_. Messages in the _INBOX_ marked with an + _N_ (meaning New, or unseen) are not affected. + This feature is displayed as "Auto Move Read Messages". + _auto-open-next-unread_ + This feature controls the behavior of the TAB key when + traversing folders in the optional incoming-folders collection + or in optional news-collections. + When the TAB (Next New) key is pressed, and there are no more + unseen messages in the current (incoming message or news) + folder, _Alpine_ will search the list of folders in the current + collection for one containing New or Recent (new since the last + time the folder was opened) messages. This behavior may be + modified slightly with the Tab-Uses-Unseen-For-Next-Folder + feature which causes _Alpine_ to look for Unseen messages + instead of Recent messages. By default, when such a folder is + found, _Alpine_ will ask whether you wish to open the folder. If + this feature is set, _Alpine_ will automatically open the folder + without prompting. + _auto-unselect-after-apply_ + This feature affects the behavior of the Apply command. If set, + the Apply command will do the operation you specify, but then + will implicitly do an "UnSelect All", so that you will + automatically be back in the normal Index view after the Apply. + _auto-unzoom-after-apply_ + If set, and if you are currently looking at a Zoomed Index view + of selected messages, the _Apply_ command will do the operation + you specify, but then will implicitly do an _UnZoom_, so that + you will automatically be back in the normal Index view after + the _Apply_. This feature is set by default. + _auto-zoom-after-select_ + If set, the _; select_ command will automatically perform a + _Zoom_ after the _select_ is complete. This feature is set by + default. + _busy-cue-spinner-only_ + When _Alpine_ is delayed for some reason it usually shows that + something is happening with a small animated display in the + status message line near the bottom of the screen. Setting this + feature will cause that animation to be the same each time + instead of having _Alpine_ choose a random animation. You may + turn the animation off altogether by setting the busy-cue-rate + option to zero. + _check-newmail-when-quitting_ + If set, _Alpine_ will check for new mail after you give the Quit + command. If new mail has arrived since the previous check, you + will be notified and given the choice of quitting or not + quitting. + _combined-addrbook-display_ + This feature affects the address book display screens. Normally, + expanding an address book from the ADDRESS BOOK LIST screen will + cause the remaining address books and directory servers to + disappear from the screen, leaving only the entries of the + expanded address book. If this feature is set, then the other + address books will remain on the screen, so that all of the + address books can be present at once. + The way that commands work won't be changed. For example, the + Select All command will select all of the entries in the current + address book, not all of the entries in all of the address + books. The WhereIs command will change a little. It will search + through all of the text on the screen plus all of the entries + from expanded address books. + When this feature is set, the setting of the feature + expanded-view-of-addressbooks has an effect. + This feature is displayed as "Combined Addressbook Display". + _combined-folder-display_ + This feature affects the folder list display screens. Normally, + each folder list is viewed within its collection only. This + command allows folder lists to be viewed within a single screen + that combines the contents of all collections. + The way that commands work won't be changed. For example, the + Select All command will select all of the folders in the current + collection, not all of the entries in all of the collections. + The WhereIs command will change a little. It will search through + all of the folders in the current collection as well as all the + folder in any other expanded collection. + When this feature is set, the setting of the feature + expanded-view-of-folders has an effect. + _combined-subdirectory-display_ + This feature affects the Folder List screen when the + combined-folder-display feature is enabled. Normally, selecting + a directory from the Folder List takes you into a new screen + displaying only the contents of that directory. + Enabling this feature will cause the contents of the selected + directory to be displayed within the boundaries of the + Collection it is a part of. All previously displayed collections + will remain in the screen. + The way that commands work won't be changed. For example, the + Select All command will select all of the folders in the + directory, as opposed to all of the entries in all of the + collections. The WhereIs command will change a little. It will + search through all of the folders in the current collection as + well as all the folder in any other expanded collection. + _compose-cancel-confirm-uses-yes_ + This feature affects what happens when you type ^C to cancel a + composition. By default, if you attempt to cancel a composition + by typing ^C, you will be asked to confirm the cancellation by + typing a "C" for _C_onfirm. It logically ought to be a "Y" for + _Y_es, but that is risky because the "^C Y" needed to cancel a + message is close (on the keyboard) to the "^X Y" needed to send + a message. + If this feature is set the confirmation asked for will be a + "_Y_es" instead of a "_C_onfirm" response. + _compose-cut-from-cursor_ + If set, the _^K_ command in the composer will cut from the + current cursor position to the end of the line, rather than + cutting the entire line. + This feature is displayed as "Ctrl-K Cuts From Cursor". + _compose-maps-delete-key-to-ctrl-d_ + If set, Delete will be equivalent to ^D, and delete the current + character. Normally _Alpine_ defines the Delete key to be + equivalent to ^H, which deletes the _previous_ character. + This feature is displayed as "Delete Key Maps to Ctrl-D". + _compose-rejects-unqualified-addrs_ + If set, unqualified names entered as addresses will be treated + as errors unless they match an addressbook nickname or are + looked up successfully on an LDAP server. _Alpine_ will not + attempt to turn them into complete addresses by adding your + local domain (which _Alpine_ normally does by default). + A complete (fully-qualified) address is one containing a + username followed by an _@_ symbol, followed by a host or domain + name (e.g. _jsmith@example.com_). An unqualified name is one + without the _@_ symbol and host or domain name (e.g. _jsmith_). + This feature is displayed as "Compose Rejects Unqualified + Addresses". + _compose-send-offers-first-filter_ + If you have sending-filters configured, setting this feature + will cause the first filter in the _sending-filters_ list to be + offered as the default instead of _unfiltered_, the usual + default. + _compose-sets-newsgroup-without-confirm_ + If you enter the composer while reading a newsgroup, you will + normally be prompted to determine whether you intend the new + message to be posted to the current newsgroup or not. If this + feature is set, _Alpine_ will not prompt you in this situation, + and will assume that you do indeed wish to post to the newsgroup + you are reading. + This feature is displayed as "Compose Sets Newsgroup Without + Confirming". + _confirm-role-even-for-default_ + If you have roles, when you Reply to or Forward a message, or + Compose a new message, _Alpine_ will search through your roles + for one which matches. Normally, if no matches are found you + will be placed into the composer with no opportunity to select a + role. If this feature is set, then you will be asked to confirm + that you don't want a role. This will give you the opportunity + to select a role (with the ^T command). If you confirm no role + with a Return, you will be placed in the composer with no role. + You may also confirm with either an "N" or a "Y". These behave + the same as if you pressed the Return. (The "N" and "Y" answers + are available because they match what you might type if there + was a role match.) + If you are using the alternate form of the Compose command + called "Role", then all of your roles will be available to you, + independent of the value of this feauture and of the values set + for all of Reply Use, Forward Use, and Compose Use. + _continue-tab-without-confirm_ + Normally, when you use the TAB NextNew command and there is a + problem checking a folder, you are asked whether you want to + continue with the search in the following folder or not. This + gives you a chance to stop the NextNew processing. + If this feature is set you will not be asked. It will be assumed + that you want to continue. + This feature is displayed as "Continue NextNew Without + Confirming". + _convert-dates-to-localtime_ + Normally, the message dates that you see in the MESSAGE INDEX + and MESSAGE VIEW are displayed in the timezone they were sent + from. For example, if a message was sent to you from a few + timezones to the east it might appear that it was sent from the + future; or if it was sent from somewhere to the west it might + appear as if it is from yesterday even though it was sent only a + few minutes ago. If this feature is set an attempt will be made + to convert the dates to your local timezone to be displayed. + Note that this does not affect the results of Select by Date or + of anything else other than these displayed dates. When viewing + the message you may look at the original unconverted value of + the Date header by using the HdrMode Command. + _copy-to-address-to-from-if-it-is-us_ + This feature affects the From address used when Replying to a + message. It is probably only useful if you have some + alt-addresses defined. When enabled, it checks to see if any of + the addresses in the To or Cc fields of the message you are + replying to is one of your addresses. If it is, and there is + only one of them, then that address is used as the From address + in the message you are composing. In other words, you will be + using a From address that is the same as the To address that was + used to get the mail to you in the first place. + If a role is being used and it has a From address defined, that + From address will be used rather than the one derived from this + feature. + _delete-skips-deleted_ + If set, this feature will cause the _Delete_ command to advance + past other messages that are marked deleted. In other words, + pressing _D_ will both mark the current message deleted and + advance to the next message that is not marked deleted. This + feature is set by default. + _disable-config-cmd_ + If set, the configuration screen _Setup/Config_ will not be + available at all. + _disable-save-input-history_ + Many of the prompts that ask for input in the status line near + the bottom of the screen will respond to Up Arrow and Down Arrow + with the history of previous entries. For example, in the + MESSAGE INDEX screen when you use the WhereIs command the text + you entered will be remembered and can be recalled by using the + Up Arrow key. Another example, when saving a message the folders + saved to will be remembered and can be recalled using the arrow + keys. + In the Save prompt, some users prefer that the Up and Down arrow + keys be used for the Previous Collection and Next Collection + commands instead of for a history of previous saves. If this + option is set the Up and Down arrow keys will become synonyms + for the Previous Collection and Next Collection (^P and ^N) + commands in the prompt for the name of a folder to Save to or in + the prompt for the name of a folder to GoTo. When this feature + is not set (the default), ^P and ^N will change the collection + and the arrow keys will show the history. + _disable-keyboard-lock-cmd_ + In the Main _Alpine_ menu there is a Keyboard locking command + (_KBLock_). If this feature is set, that command won't be + available to the user. + _disable-keymenu_ + If set, the command key menu that normally appears on the bottom + two lines of the screen will not usually be there. Asking for + help with _^G_ or _?_ will cause the key menu to appear instead + of causing the help message to come up. If you want to actually + see the help text, another _^G_ or _?_ will show it to you. + After the key menu has popped up with the help key it will + remain there for an _O Other_ command but will disappear if any + other command is typed. + _disable-password-caching_ + Normally, loginname/password combinations are cached in _Alpine_ + so that the user does not have to enter the same password more + than once in a session. A disadvantage to this approach is that + the password must be stored in the memory image of the running + _Alpine_ in order that it can be reused. In the event that + _Alpine_ crashes and produces a core dump, and that core dump is + readable by others, the loginname and password could possibly be + read from the core dump. + If this feature is set, then the passwords will not be cached + and the user will have to retype the password whenever _Alpine_ + needs it. Even with this feature set there is still some chance + that the core file will contain a password, so care should be + taken to make the core files unreadable. + NOTE: If PASSFILE caching is enabled, this does not disable it. + That is a separate and independent feature. + _disable-password-cmd_ + If set the _Newpassword_ command usually available under the + _Setup_ command will not be available. + _disable-pipes-in-sigs_ + If set it will be an error to append a vertical bar (|) to the + name of a signature file. Appending a vertical bar normally + causes the signature file to be executed to produce the + signature. + _disable-pipes-in-templates_ + If set it will be an error to append a vertical bar (|) to the + name of a template file. Appending a vertical bar normally + causes the signature file to be executed to produce the + signature. + _disable-regular-expression-matching-for-alternate-addresses_ + Normally, the alt-addresses option is interpreted as a regular + expression. One type of address that might cause trouble is an + address that contains a plus sign. If you want to have an + address with a plus as one of your alternate addresses and you + don't want to use regular expressions, then setting this feature + will cause _Alpine_ to treat the addresses you list literally + instead. + _disable-roles-setup-cmd_ + If set the _Roles_ command usually available under the _Setup_ + command will not be available. + _disable-roles-sig-edit_ + If set the roles editor in the _Setup/Roles_ command will not + allow editing of signature files with the F subcommand. + _disable-roles-template-edit_ + If set the roles editor in the _Setup/Roles_ command will not + allow editing of template files with the F subcommand. + _disable-sender_ + If set, _Alpine_ will not generate a "Sender:" or "X-X-Sender" + header. This may be desirable on a system which is virtually + hosting many domains, and the sysadmin has other methods + available for tracking a message to its originator. + This feature is displayed as "Do Not Generate Sender Header". + _disable-setlocale-collate_ + This is a hard to understand feature that should only be used in + rare cases. Normally, the C function call + + setlocale(LC_COLLATE, "") + is used by _Alpine_. If you want to try turning it off, setting + this feature will turn it off. This part of the locale has to do + with the sort order of characters in your locale. + _disable-shared-namespaces_ + If this hidden feature is set the automatic search for + namespaces "ftp", "imapshared", and "imappublic" by the + underlying library will be disabled. The reason this feature + exists is because there are some implementations of system + password lookup routines which are very slow when presented with + a long loginname which does not exist. This feature could be set + to prevent the delay at startup time when the names above are + searched for in the password file. + _disable-signature-edit-cmd_ + If set the _Signature_ editing command usually available under + the _Setup_ command will not be available. + _disable-take-fullname-in-addresses_ + Normally, when TakeAddr is used to copy an address or addresses + from a message into an address book entry, _Alpine_ will try to + preserve the full name associated with each address in the list + of addresses. The reason for this is so that if the entry is a + list or later becomes a list, then information about the + individual addresses in the list is preserved. If you would + rather just have the simple addresses in the list of addresses, + set this feature. For example, with the default setting you + might see something like this in the ADDRESS BOOK editor after + you type TakeAddr + Nickname : nick + Fullname : Bedrock Elders + Fcc : + Comment : + Addresses : Fred Flintstone <flint@bedrock.org>, + Barney Rubble <rubble@bedrock.org> + + but with this feature set it would look like + Nickname : nick + Fullname : Bedrock Elders + Fcc : + Comment : + Addresses : flint@bedrock.org, + rubble@bedrock.org + + instead. Note the difference in the Addresses field. + _disable-take-last-comma-first_ + Normally, when _TakeAddr_ is used to copy an address from a + message into an address book, _Alpine_ will attempt to rewrite + the full name of the address in the form: + + Last, First + instead of + + First Last + It does this because many people find it useful to sort by Last + name instead of First name. If this feature is set, then the + _TakeAddr_ command will not attempt to reverse the name in this + manner. + _disable-terminal-reset-for-display-filters_ + UNIX _Alpine_ only. + This feature affects _Alpine_'s behavior when using + Display-Filters. Normally, before the display filter is run, the + terminal mode is reset to what it was before you started + _Alpine_. This may be necessary if the filter requires the use of + the terminal. For example, it may need to interact with you. If + you set this feature, then the terminal mode will not be reset. + One thing that turning on this feature should fix is the + coloring of quoted text in the message view, which breaks + because the terminal reset resets the color state of the + terminal (Color Configuration). + _downgrade-multipart-to-text_ + This feature affects _Alpine_'s behavior when sending mail. + Internet standards require _Alpine_ to translate all non-ASCII + characters in messages that it sends using MIME encoding. This + encoding can be ostensibly broken for recipients if any agent + between _Alpine_ and the recipient, such as an email list + expander, appends text to the message, such as list information + or advertising. When sending such messages _Alpine_ attempts to + protect such encoding by placing extra MIME boundaries around + the message text. + These extra boundaries are invisible to recipients that use + MIME-aware email programs (the vast majority). However, if you + correspond with users of email programs that are not MIME-aware, + or do not handle the extra boundaries gracefully, you can use + this feature to prevent _Alpine_ from including the extra MIME + information. Of course, it will increase the likelihood that + non-ASCII text you send may appear corrupt to the recipient. + _enable-8bit-esmtp-negotiation_ + This feature affects _Alpine_'s behavior when sending mail. By + default, this feature is set. Internet standards require that + all electronic mail messages traversing the global Internet + consist of 7bit ASCII characters unless a pair of cooperating + mail transfer agents explicitly agree to allow 8bit messages. In + general, then, exchanging messages in non-ASCII characters + requires MIME encoding. + However, there are now Internet standards that allow for + unencoded 8bit exchange of messages between cooperating systems. + When this feature is set _Alpine_ will try to negotiate + unencoded 8bit transmission during the sending process. Should + the negotiation fail, _Alpine_ will fall back to its ordinary + encoding rules. + Note, this feature relies on your system's mail transport agent + or configured smtp-server having the negotiation mechanism + introduced in "Extended SMTP" (ESMTP) and the specific extension + called _8BITMIME_. + _enable-8bit-nntp-posting_ + The Internet standard for exchanging USENET news messages + (RFC-1036) specifies that USENET messages should conform to + Internet mail standards and contain only 7bit characters, but + much of the news transport software in use today is capable of + successfully sending messages containing 8bit characters. Hence, + many people believe that it is appropriate to send 8bit news + messages without any MIME encoding. + Moreover, there is no Internet standard for explicitly + negotiating 8bit transfer, as there is for Internet email. + Therefore, _Alpine_ provides the option of posting unencoded + 8bit news messages, though not as the default. Setting this + feature will turn OFF _Alpine_'s MIME encoding of newsgroup + postings that contain 8bit characters. + Note, articles may cross a path or pass through news transport + software that is unsafe or even hostile to 8bit characters. At + best this will only cause the posting to become garbled. The + safest way to transmit 8bit characters is to leave _Alpine_'s + MIME encoding turned on, but recipients who lack MIME-aware + tools are often annoyed when they receive MIME-encoded messages. + _enable-aggregate-command-set_ + When this feature is set you may use the commands and + subcommands that relate to performing operations on more than + one message at a time. We call these "aggregate operations". In + particular, the _; Select_, _A Apply_, and _Z Zoom_ commands are + enabled by this feature. _Select_ is used to _tag_ one or more + messages meeting the specified criteria. _Apply_ can then be + used to apply any message command to all of the selected/tagged + messages. Further, the _Zoom_ command allows you to toggle the + "Folder Index" view between just those Selected and all messages + in the folder. + This feature also enables the _^X_ subcommand in the "Folder + Index" _WhereIs_ command which causes all messages matching the + _WhereIs_ argument to become selected. + You may also use aggregate operations in the address book + screens where you are operating on address book entries instead + of on messages. + _enable-alternate-editor-cmd_ + If this feature is set (the default), and the editor variable is + not set, entering the _^__ (Control-underscore) key while + composing a message will prompt you for the name of the editor + you would like to use. + If the environment variable $EDITOR is set, this value will be + offered as a default. If the _editor_ variable is set, the _^__ + key will activate the specified editor without prompting, in + which case it is not necessary to set the + _enable-alternate-editor-cmd_ feature. This feature is not + available in _PC-Alpine_. + This feature is displayed as "Enable Alternate Editor Command". + _enable-alternate-editor-implicitly_ + If this feature and the editor variable are both set, _Alpine_ + will automatically activate the specified editor when the cursor + is moved from the header of the message being composed into the + message text. For replies, the alternate editor will be + activated immediately. If this feature is set but the _editor_ + variable is not set, then _Alpine_ will automatically ask for + the name of an alternate editor when the cursor is moved out of + the headers, or if a reply is being done. This feature is not + available in _PC-Alpine_. + _enable-arrow-navigation_ + This feature controls the behavior of the left and right arrow + keys. If set, the left and right arrow keys will operate like + the usual navigation keys _<_ and _>_. This feature is set by + default. + If you set this feature, and do not like the changed behavior of + the up/down arrow keys when navigating through the FOLDER LIST + screen -- _first_ from column to column, if more than one folder + is displayed per row, and _then_ from row to row -- you may + either also wish to set the feature + enable-arrow-navigation-relaxed, single-column-folder-list, or + use the ^P/^N (instead of up/down arrow) keys to move up/down + the list of folders in each column. + _enable-arrow-navigation-relaxed_ + This feature controls the behavior of the left and right arrow + keys in the FOLDER LIST screen when the enable-arrow-navigation + feature is set. This feature is set by default. + When this feature is set, the left and right arrow keys in the + FOLDER LIST screen move the highlight bar to the left or right, + and the up and down arrows move it up or down. + When the "Enable-Arrow-Navigation" feature is set and this + feature is not set; the left and right arrow keys in the Folder + List screen strictly track the commands bound to the '<' and '>' + keys, and the up and down arrow keys move the highlight bar to + the previous and next folder or directory name. + _enable-background-sending_ + If set, this feature enables a subcommand in the composer's + _Send?_ confirmation prompt. The subcommand allows you to tell + _Alpine_ to handle the actual posting in the background. While + this feature usually allows posting to appear to happen very + fast, it has no affect on the actual delivery time it takes a + message to arrive at its destination. + This feature isn't supported on all systems. All DOS and + Windows, as well as several Unix ports, do not recognize this + feature. It is not possible to use background sending if the + feature send-without-confirm is set. + Error handling is significantly different when this feature is + enabled. Any message posting failure results in the message + being appended to your _Interrupted_ mail folder. When you type + the _Compose_ command, _Alpine_ will notice this folder and + offer to extract any messages contained. Upon continuing a + failed message, _Alpine_ will display the nature of the failure + in the status message line. + Under extreme conditions, it is possible for message data to get + lost. Do not enable this feature if you typically run close to + any sort of disk-space limits or quotas. + _enable-bounce-cmd_ + Setting this feature enables the _B Bounce_ command, which will + prompt for an address and _remail_ the message to the new + recipient. This command is used to re-direct messages that you + have received in error, or need to be redirected for some other + reason (e.g. list moderation). The final recipient will see a + header indicating that you have Resent the msg, but the + message's From: header will show the original author of the + message, and replies to it will go back to that author, and not + to you. + This feature is displayed as "Enable Bounce Command". + _enable-cruise-mode_ + This feature affects _Alpine_'s behavior when you hit the "Space + Bar" at the end of a displayed message. Typically, _Alpine_ + complains that the end of the text has already been reached. + Setting this feature causes such keystrokes to be interpreted as + if the _Tab_ key had been hit, thus taking you to the next + _interesting_ message, or scanning ahead to the next incoming + folder with _interesting_ messages. + _enable-cruise-mode-delete_ + This feature modifies the behavior of _Alpine_'s + _enable-cruise-mode_ feature. Setting this feature causes _Alpine_ + to implicitly delete read messages when it moves on to display + the next _interesting_ message. + NOTE: Beware when enabling this feature _and_ the + expunge-without-confirm feature. + This feature is displayed as "Enable Cruise Mode With Deleting". + _enable-delivery-status-notification_ + If set, this feature enables a subcommand in the composer's + "Send?" confirmation prompt. The subcommand allows you to tell + _Alpine_ to request the type of Delivery Status Notification + (DSN) which you would like. Most users will be happy with the + default, and need not enable this feature. See the online help + for more details. + It is not possible to use delivery status notifications if the + feature send-without-confirm is set. + Note that this is not a method to request _READ_ receipts, which + tells the sender when the receiver has read the message. In this + case we're talking about notification of delivery to the + mailbox, not notification that the message has been seen. + _enable-dot-files_ + If set, files beginning with dot (".") will be visible in the + file browser. For example, you'll be able to select them when + using the browser to add an attachment to a message. + _enable-dot-folders_ + If set, folders beginning with dot (".") may be added and + viewed. This feature is displayed as "Enable Hidden Folders". + _enable-exit-via-lessthan-command_ + If set, then on screens where there is an _Exit_ command but no + _<_ command, the _<_ key will perform the same function as the + _Exit_ command. This feature is set by default. + _enable-fast-recent-test_ + This feature controls the behavior of the TAB key when + traversing folders in the optional Incoming-Folders collection + or in optional News-Collections. + When the TAB (NextNew) key is pressed, the default behavior is + to explicitly examine the status of the folder for the number of + recent messages (messages delivered since the last time it was + viewed). Depending on the size and number of messages in the + folder, this test can be time consuming. + Enabling this feature will cause _Alpine_ to only test for the + existence of any recent messages rather than to obtain the + count. This is much faster in many cases. The downside is that + you're not given the number of recent messages when prompted to + view the next folder. If the feature + Tab-Uses-Unseen-For-Next-Folder is turned on, then the present + feature will have no effect. + _enable-flag-cmd_ + Setting this feature enables the _* Flag_ command, which allows + you to manipulate the status flags associated with a message. By + default, _Flag_ will set the _Important_ flag, which results in + an asterisk being displayed in column one of the "Folder Index" + for such messages. + This feature is displayed as "Enable Flag Command". + _enable-flag-screen-implicitly_ + This feature modifies the behavior of the _* Flag_ command + (provided it too is enabled). By default, when the _* Flag_ + command is selected, _Alpine_ offers a prompt to set one of + several flags and also offers the option of entering the + detailed flag manipulation screen via the _^T_ key. Enabling + this feature causes _Alpine_ to immediately enter the detailed + flag screen rather than first offer the simple prompt. The + Enable-Flag-Screen-Keyword-Shortcut option offers a slightly + different way of setting keywords. + _enable-flag-screen-keyword-shortcut_ + This feature modifies the behavior of the Flag command and the + Select command. By default, when the "* Flag" command is + selected, _Alpine_ offers a prompt to set one of several flags + and also offers the option of entering the detailed flag + manipulation screen via the "^T" key. If you have keywords + defined, then enabling this feature adds a shortcut way to set + or unset keywords. You use "*" followed by the first letter of a + keyword (or the nickname of a keyword if you've given it a + nickname) and that will set the keyword. + An example is easier to understand than the explanation. The + flag command can always be used to set the system flags. For + example, to set the Answered flag you would type + + * A + Now suppose you have defined a keyword "Work" using the Keywords + option in the Config screen. By default, to set a keyword like + "Work" you would usually have to go to the Flag Details screen + using the "^T To Flag Details" command. Instead, if you have + enabled this feature, you may type + + * W + to set the Work flag, or + + * ! W + to unset it. Just like for the other flag setting commands, the + case of the letter does not matter, so "w" or "W" both set the + "Work" keyword. + Notice that you can only use this trick for one keyword that + begins with "W". If you happen to have a "Work" keyword and + another keyword that is "WIFI" the "* W" command will set the + first one in your list of keywords. Also, there are five letters + which are reserved for system flags and the NOT command. If you + type "* A" it will always set the Answered flag, not your + "Aardvark" keyword. In order to set the "Aardvark" keyword + you'll still have to use the Flag Details screen. + Because enabling the Enable-Flag-Screen-Implicitly option causes + _Alpine_ to skip directly to the Flag Details screen when the + Flag command is used, setting it will cause this feature to have + no effect at all. + Similarly, when Selecting by Keyword, setting this option will + allow you to use Keyword initials instead of full keywords. + _enable-full-header-cmd_ + This feature enables the _H Full Headers_ command which toggles + between the display of all headers in the message and the normal + edited view of headers. The _Full Header_ command also controls + which headers are included for _Export_, _Pipe_, _Print_, + _Forward_, and _Reply_ functions. (For _Reply_, the _Full Header_ + mode will respect the _include-headers-in-reply_ feature + setting.) + If Full Header mode is turned on and you Forward a message, you + will be asked if you'd like to forward the message as an + attachment, as opposed to including the text of the message in + the body of your new message. + If you have also turned on the "Quote Suppression" option then + the Full Headers command actually rotates through three states + instead of just two. The first is the normal view with long + quotes suppressed. The second is the normal view but with the + long quotes included. The last enables the display of all + headers in the message. When using Export, Pipe, Print, Forward, + or Reply the quotes are never suppressed, so the first two + states are identical. + Normally, the Header Mode will reset to the default behavior + when moving to a new message. The mode can be made to persist + from message to message by setting the feature + Quell-Full-Header-Auto-Reset. + This feature is displayed as "Enable Full Header Command". + _enable-full-header-and-text_ + This feature affects how the _H Full Headers_ command displays + message text. If set, the raw message text will be displayed. + This especially affects MIME formatted email, where the entire + MIME format will be displayed. This feature similarly affects + how messages are included for the _Export_, _Pipe_, _Print_, + _Forward_, and _Reply_ functions. + _enable-goto-in-file-browser_ + Setting this causes _Alpine_ to offer the _G Goto_ command in + the file browser. The Goto command allows you to explicitly type + in the desired directory. That is the default. + _enable-incoming-folders_ + If set, this feature defines a pseudo-folder collection called + _INCOMING MESSAGE FOLDERS_. Initially, the only folder included + in this collection will be your _INBOX_, which will no longer + show up in your default saved-message folder collection. + This feature is displayed as "Enable Incoming Folders + Collection". + _enable-incoming-folders-checking_ + This feature is only operational if you have enabled the + optional incoming-folders If you do have Incoming Message + Folders and you also set this feature, then the number of Unseen + messages in each folder will be displayed in the FOLDER LIST + screen for the Incoming Message Folders. The number of Unseen + messages in a folder will be displayed in parentheses to the + right of the name of each folder. If there are no Unseen + messages in a folder then only the name is displayed, not a set + of parentheses with zero inside them. A redraw command, Ctrl-L, + can be used in the FOLDER LIST screen for the Incoming Message + Folders to cause an immediate update. + If a check for Unseen messages fails for a particular folder + then Alpine will no longer attempt to check that folder for the + duration of the session and this will be indicated by a question + mark inside the parentheses. + The features incoming-checking-includes-total, + incoming-checking-uses-recent, incoming-check-list, + incoming-check-interval, incoming-check-interval-secondary, and + incoming-check-timeout all affect how this feature behaves. + _Disable-Index-Locale-Dates_ + This feature affects the display of dates in the MESSAGE INDEX. + Normally an attempt is made to localize the dates used in the + MESSAGE INDEX display to your locale. This is controlled with + the LC_TIME locale setting on a UNIX system. On Windows the + Regional Options control panel may be used to set the date + format. At the programming level, _Alpine_ is using the strftime + routine to print the parts of a date. + If this feature is set, dates are displayed in English and with + the conventions of the United States. + _enable-jump-shortcut_ + When this feature is set you may enter a number (followed by + RETURN) and jump to that message number, when in the MESSAGE + INDEX or MESSAGE TEXT screens. In other words, it obviates the + need for typing the _J_ for the _Jump_ command. + _enable-lame-list-mode_ + This feature modifies the method _Alpine_ uses to ask your IMAP + server for folder names to display in the the FOLDER LIST + screen. It is intended to compensate for a small set of IMAP + servers that are programmed to ignore a part of the request, and + thus respond to _Alpine_'s query with nonsensical results. + If you find that _Alpine_ is erroneously displaying blank folder + lists, try enabling this feature. + NOTE: Enabling this feature has consequences for the Goto and + Save commands. Many servers allow access to folders outside the + area reserved for your personal folders via some reserved + character, typically '#' (sharp), '~' (tilde) or '/' (slash). + This mechanism allows, at the Goto and Save prompts, quick + access to folders outside your personal folder collection + without requiring a specific collection definition. This + behavior will generally not be available when this feature is + enabled. + This feature is displayed as "Compensate for Deficient IMAP + servers". + _enable-mail-check-cue_ + If set, this will cause an asterisk to appear in the upper + left-hand corner of the screen whenever _Alpine_ checks for new + mail, and two asterisks whenever _Alpine_ saves (checkpoints) + the state of the current mailbox to disk. + _enable-mailcap-param-substitution_ + If set, this will allow mailcap named parameter substitution to + occur in mailcap entries. By default, this is turned off to + prevent security problems which may occur with some incorrect + mailcap configurations. For more information, RFC1524 and look + for "named parameters" in the text of the RFC. + This feature is displayed as "Enable Mailcap Parameter + Substitution". + _enable-mouse-in-xterm_ + This feature controls whether or not an X terminal mouse can be + used with _Alpine_. If set, and the $DISPLAY variable indicates + that an X terminal is being used, the left mouse button on the + mouse can be used to select text or commands. Clicking on a + command at the bottom of the screen will behave as if you had + typed that command. Clicking on an index line will move the + current message highlight to that line. Double-clicking on an + index line will view the message. Double-clicking on a link will + view the link. + This type of mouse support will also work in some terminal + emulators which are not actually X terminals, but which have + extra code to support the xterm style mouse. For those emulators + you not only need to turn this feature on but you also have to + set the $DISPLAY environment variable even though it isn't + needed for your terminal. That will cause _Alpine_ to think that + it is an xterm and to properly interpret the escape sequences + sent by the mouse. + Note: if this feature is set, the behavior of X terminal + cut-and-paste is also modified. It is sometimes possible to hold + the shift key down while clicking left or middle mouse buttons + for the normal xterm cut/paste operations. There is also an + _Alpine_ command to toggle this mode on or off. The command is + Ctrl-\ (Control-backslash). + _enable-msg-view-addresses_ + This feature modifies the behavior of _Alpine_'s "Message Text" + screen. Setting this feature causes _Alpine_ to select possible + email addresses from the displayed text and display them in + boldface for selection. + The first available email address is displayed in inverse. This + is the "selected" address. Pressing _RETURN_ will cause _Alpine_ + to enter the message composition screen with the To field filled + in with the selected address. + Use the up and down arrow keys to change which of the addresses + displayed in boldface is the current selection. + This feature is displayed as "Enable Message View Address + Links". + _enable-msg-view-attachments_ + This feature modifies the behavior of _Alpine_'s "Message Text" + screen. Setting this feature causes _Alpine_ to present + attachments in boldface. The first available attachment is + displayed in inverse. This is the "selected" attachment. + Pressing _RETURN_ will cause _Alpine_ to display the selected + attachment. Use the up and down arrow keys to change which of + the attachments displayed in boldface is the current selection. + Speaking of arrow keys, the Up and Down Arrows will select the + next and previous attachments if one is available on the screen + for selection. Otherwise, they will simply adjust the viewed + text one line up or down. + Similarly, when selectable items are present in a message, the + Ctrl-F key can be used to select the next item in the message + independent of which portion of the viewed message is currently + displayed. The Ctrl-B key can be used to select the previous + item in the same way. + This feature is displayed as "Enable Message View Attachment + Links". + _enable-msg-view-forced-arrows_ + This feature modifies Up and Down arrow key behavior in + _Alpine_'s "Message Text" screen when selectable Attachments, + URL's, or web-hostnames are presented. _Alpine_'s usual behavior + is to move to the next or previous selectable item if currently + displayed or simply to adjust the screen view by one line if the + next selectable line is off the screen. + Setting this feature causes the Up and Down arrow keys to behave + as if no selectable items were present in the message. + Note, the _Ctrl-F_ (next selectable item) and _Ctrl-B_ (previous + selectable item) functionality is unchanged. + This feature is displayed as "Enable Message View Forced + Arrows". + _enable-msg-view-urls_ + This feature modifies the behavior of _Alpine_'s "Message Text" + screen. When this feature is set (the default) _Alpine_ will + select possible URLs from the displayed text and display them in + boldface for selection. + The first available URL is displayed in inverse. This is the + "selected" URL. Pressing _RETURN_ will cause _Alpine_ to display + the selected URL via either built-in means as with mailto:, + imap:, news:, and nntp:, or via an external application as + defined by the url-viewers variable. + Use the up and down arrow keys to change which of the URLs + displayed in boldface is the current selection. + This feature is displayed as "Enable Message View URL Links". + _enable-msg-view-web-hostnames_ + This feature modifies the behavior of _Alpine_'s "Message Text" + screen. When this feature is set (the default) _Alpine_ will + select possible web hostnames from the displayed text and + display them in boldface for selection. + The first available hostname is displayed in inverse. This is + the "selected" hostname. Pressing _RETURN_ will cause _Alpine_ + to display the selected hostname via an external application as + defined by the url-viewers variable. + Use the up and down arrow keys to change which of the hostnames + displayed in boldface is the current selection. + This feature is displayed as "Enable Message View Web Hostname + Links". + _enable-multiple-newsrcs_ + This feature makes it so _Alpine_ can use multiple newsrcs based + on the news server being connected to, which allows for separate + lists of subscribed-to newsgroups. When this feature is not set, + there is only one list of newsgroups. + Under this feature, the name of a newsrc is based on the news + server. For example, if your newsrc-path is set to ".newsrc", + and the news server you are connecting to is news.example.com, + then the newsrc to be used is .newsrc-news.example.com. Setting + this feature for the first time will allow for the option of + using your old newsrc the next time you read news. + If this feature is set, then the feature + Mult-Newsrc-Hostnames-As-Typed also may affect the name of the + newsrc file that is used. + _enable-newmail-in-xterm-icon_ + This feature controls whether or not _Alpine_ will attempt to + announce new mail arrival when it is running in an X terminal + window and that window is iconified. If set, and the $DISPLAY + variable indicates that an X terminal is being used, _Alpine_ + will send appropriate escape sequences to the X terminal to + modify the label on _Alpine_'s icon to indicate that new mail + has arrived. _Alpine_ will also modify the _Alpine_ window's + title to indicate new mail. See also + Enable-Newmail-Short-Text-in-Icon. + _enable-newmail-short-text-in-icon_ + This feature controls the text to be displayed in an icon in the + event of a new message arrival. Normally, the message will be + the one that is displayed on the screen. This feature shortens + the message to a count of the number of new messages in + brackets. This may be more useful for those who use the window's + title bar in the task bar as a new mail indicator. This feature + is only useful if the Enable-Newmail-in-Xterm-Icon is also set. + Like the Enable-Newmail-in-Xterm-Icon feature, this feature is + only relevant when run in an xterm environment. + _enable-partial-match-lists_ + This feature affects the subcommands available when _Sav_ing or + Opening a new folder. If set, the subcommand _^X ListMatches_ + will be available. This command allows you to type in a + substring of the folder you are looking for and when you type + _^X_ it will display all folders which contain that substring in + their names. This feature is set by default. + _enable-print-via-y-command_ + By default, _Alpine_'s print command is available by pressing + the _%_ key. In older versions of _Pine_, the print command was + accessed by pressing the _Y_ key. + Enabling this feature will cause _Alpine_ to recognize both the + old command, _Y_, and the new _%_ method for invoking printing. + Note, key menu labels are not changed as a result of enabling + this feature. + _enable-reply-indent-string-editing_ + This feature affects the Reply command's "Include original + message in Reply?" prompt. When enabled, it causes the "Edit + Indent String" sub-command to appear which allows you to edit + the string _Alpine_ would otherwise use to denote included text + from the message being replied to. + Thus, you can change _Alpine_'s default message quote character + (usually an angle bracket) on a per message basis. So you could + change your quoted message to look, for example, like this: +On Tues, 26 Jan 1999, John Q. Smith wrote: + +John: I just wanted to say hello and to congratulate you +John: on a job well done! + The configuration option "reply-indent-string" may be used to + change what appears as the default string to be edited. + NOTE: Edited reply-indent-strings only apply to the message + currently being replied to. + _enable-rules-under-take_ + Normally, the Take command takes addresses from a message and + helps you put them into your Address Book. If you use Rules for + Indexcolors, Roles, Filtering, or Scoring; you may find it + useful to be able to Take information from a message's headers + and put it into a new Rule. When this feature is set, you will + be given an extra prompt which gives you the choice to Take into + the Address Book or Take into a rule. + This feature is displayed as "Enable Take Rules". + _enable-search-and-replace_ + If set _Alpine_'s composer offers the _R Replace_ command option + inside the _W WhereIs_ command. + _enable-sigdashes_ + If set and a _signature-file_ exists, the line consisting of the + three characters "-- " (dash dash space) is included before the + signature. This only happens if the signature doesn't already + contain such a line. + In addition, when you Reply or Followup to a message containing + one of these special lines and choose to include its text, + _Alpine_ will observe the convention of not including text beyond + the special line in your reply. + _enable-suspend_ + Setting this feature will allow you to type _^Z_ and temporarily + suspend _Alpine_. Not available on _PC-Alpine_. + _enable-tab-completion_ + This feature enables the _TAB_ key when at a prompt for a + filename. In this case, _TAB_ will cause the partial name + already entered to be automatically completed, provided the + partial name is unambiguous. This feature is set by default. + Similarly, this feature also enables TAB completion of address + book nicknames when at a prompt for a nickname, or when typing + in an address field in the composer. + _enable-take-export_ + Normally, the Take command takes addresses from a message and + helps you put them into your Address Book. When this feature is + set, you will be given an extra prompt which gives you the + choice to Take addresses into a file instead of your Address + Book. Only the user@domain_name part of the address is put in + the file. + _enable-tray-icon_ + _PC-Alpine_ only. This option restores a behavior of previous + versions of PC-Alpine. These versions, when started, installed a + PC-Alpine icon in the notification tray of Window's Taskbar. The + primary use of this icon was to indicate new mail arrival by + turning red (while the Taskbar icon remained green). + Additionally, the icon now changes to yellow to signify that a + mail folder has been closed unexpectedly. + Rather than add another icon to the Taskbar, this version of + PC-Alpine will color its Taskbar entry's icon red (as well as + the icon in the Window Title). This feature is only provided for + backwards compatibility. + _enable-unix-pipe-cmd_ + This feature enables the _| Pipe_ command that sends the current + message to the specified Unix command for external processing. + This feature is displayed as "Enable Unix Pipe Command". + _enable-verbose-smtp-posting_ + This feature controls an aspect of _Alpine_'s message sending. + When enabled, _Alpine_ will send a VERB (i.e., VERBose) command + early in the posting process intended to cause the server SMTP + to provide a more detailed account of the transaction. This + feature is typically only useful to system administrators and + other support personel as an aid in troublshooting problems. + Note, this feature relies on a specific capability of the + system's mail transport agent or configured smtp-server. + _expanded-view-of-addressbooks_ + If multiple address books (either personal or global) are + defined, and you wish to have them all expanded implicitly upon + entering the ADDRESS BOOK screen, then set this feature. This + feature will have no effect unless the feature + combined-addrbook-display is also set. + _expanded-view-of-distribution-lists_ + If this feature is set, then distribution lists in the address + book screen will always be expanded automatically. + _expanded-view-of-folders_ + If multiple folder collections are defined, and you wish to have + them all expanded implicitly upon entering the FOLDER LIST + screen, then set this feature. This feature will have no effect + unless the feature combined-folder-display is also set. + _expose-hidden-config_ + The purpose of this feature is to allow you to change + configuration features and variables which are normally hidden. + This is particularly useful if you are using a remote + configuration file, where it is difficult to edit the file + manually, but it may also be used on a local pinerc + configuration file. + If set, most configuration variables and features which are + normally hidden from view will show up in the + Setup/Configuration screen. They will be at the bottom of the + configuration screen. You can find them by searching for the + word "hidden". + Note that this is an advanced feature which should be used with + care. The reason that this part of the configuration is normally + hidden is because there is a significant potential for causing + problems if you change these variables. If something breaks + after a change try changing it back to see if that is what is + causing the problem. There are also some variables which are + normally hidden because they are manipulated through _Alpine_ in + other ways. For example, the "address-book" variable is normally + set using the Setup/AddressBooks screen, so there is little + reason to edit it directly. The "incoming-folders" variable is + normally changed by using the Add, Delete, and Rename commands + in the FOLDER LIST screen, and the "last-time-prune-questioned" + variable is normally used internally by _Alpine_ and not set + directly by the user. + _expunge-only-manually_ + Normally, when you close a folder which contains deleted + messages you are asked if you want to expunge those messages + from the folder permanently. If this feature is set, you won't + be asked and the deleted messages will remain in the folder. If + you choose to set this feature you will have to expunge the + messages manually using the eXpunge command, which you can use + while in the MESSAGE INDEX screen. If you do not expunge deleted + messages the size of your folder will continue to increase until + you are out of disk space. + _expunge-without-confirm_ + If set, you will not be prompted to confirm your intent before + the expunge takes place. Actually, you will still be prompted + for confirmation if the folder is not the _INBOX_ folder or + another folder in the Incoming Folders collection. See the + _expunge-without-confirm-everywhere_ feature which follows. + This feature is displayed as "Expunge Without Confirming". + _expunge-without-confirm-everywhere_ + The regular _expunge-without-confirm_ feature actually only + works for the _INBOX_ folder and for other folders in the + "Incoming Folders" collection. If this feature is set then you + also won't be prompted to confirm expunges for all other + folders. + This feature is displayed as "Expunge Without Confirming + Everywhere". + _fcc-on-bounce_ + If set, normal Fcc (File Carbon Copy) processing will be done + for bounced messages, just as if you had composed a message to + the address you are bouncing to. If not set, no Fcc of the + message will be saved. + This feature is displayed as "Include Fcc When Bouncing + Messages". + _fcc-only-without-confirm_ + This features controls an aspect of _Alpine_'s composer. The + only time this feature will be used is if you attempt to send + mail which has no recipients but does have an Fcc. Normally, + _Alpine_ will ask if you really mean to copy the message only to + the Fcc. That is, it asks if you really meant to have no + recipients. If this feature is set, you will _not_ be prompted + to confirm your intent to make only a copy of a message with no + recipients. + This feature is closely related to + warn-if-blank-to-and-cc-and-newsgroups. The difference between + this feature and that feature is that this feature considers a + Bcc to be a recipient while that feature will ask for + confirmation even if there is a Bcc when there is no To, Cc, or + Newsgroup. The default values also differ. This feature defaults + to asking the question and you have to turn it off. The + warn-if-blank-to-and-cc-and-newsgroups feature defaults to not + asking unless you turn it on. + This feature is displayed as "Send to Fcc Only Without + Confirming". + _fcc-without-attachments_ + This features controls the way FCC's (File Carbon Copies) are + made of the messages you send. + Normally, _Alpine_ saves an exact copy of your message as it was + sent. When this feature is enabled, the "body" of the message + you send (the text you type in the composer) is preserved in the + copy as before, however all attachments are replaced with text + explaining what had been sent rather than the attachments + themselves. + This feature also affects _Alpine_'s "Send ?" confirmation + prompt in that a new "^F Fcc Attchmnts" option becomes available + which allows you to interactively set whether or not attachments + are saved to the Fcc'd copy. + This feature is displayed as "Fcc Does Not Include Attachments". + _force-arrow-cursor_ + This feature affects _Alpine_'s MESSAGE INDEX display routine. + If set, the normal inverse-video cursor will be replaced by a + simple "arrow" cursor, which normally occupies the second column + of the index display. + This is the same index cursor you get if you turn on + Assume-Slow-Link, but the index line coloring will still be + present if this feature is turned on and Assume-Slow-Link is + off. + An alternative version of the Arrow cursor is available by + including the ARROW token in the Index-Format option. + It ought to be the case that this feature also affects the + ATTACHMENT INDEX, but that is not implemented. + _hide-nntp-path_ + Normally the Path header that _Alpine_ generates when posting to + a newsgroup contains the name of the computer from which the + message is being sent and the user name. Some believe that this + information is used by spammers. If this feature is set, that + information will be replaced with the text + + not-for-mail + instead. + It should be noted that many servers being connected to will + still reveal the information that this feature attempts to + protect. + _include-attachments-in-reply_ + If set, any MIME attachments that were part of the original + message will automatically be included in a _Reply_. + _include-header-in-reply_ + If set, and a message being replied to is included in the + _Reply_, then headers from that message will also be part of the + reply. + _include-text-in-reply_ + Normally, _Alpine_ will ask whether you wish to include the + original message in your _Reply_. If this feature is set and the + feature enable-reply-indent-string-editing is _not_ set, then + the original message will be included in the reply + automatically, without prompting. + _incoming-checking-includes-total_ + This option has no effect unless the feature + enable-incoming-folders-checking is set, which in turn has no + effect unless incoming-folders is set. + When incoming folder checking is turned on the default is to + display the number of unseen messages in each folder. More + precisely, it is the number of undeleted unseen messages. Using + this option you may also display the total number of messages in + each folder. Instead of a single number representing the number + of unseen messages you will get two numbers separated by a slash + character. The first is the number of unseen messages and the + second is the total number of messages. + You may also use the recent message count instead of the unseen + message count by turning on the feature + incoming-checking-uses-recent. + _incoming-checking-uses-recent_ + This option has no effect unless the feature + enable-incoming-folders-checking is set, which in turn has no + effect unless incoming-folders is set. + When incoming folder checking is turned on the default is to + display the number of unseen messages in each folder. More + precisely, it is the number of undeleted unseen messages. Using + this option you may display the number of recent messages + instead of the number of unseen messages. A message is only + counted as recent if this is the first session to see it, so the + recent count might be less than the unseen count. The difference + between the two would be accounted for by the unseen messages in + the folder which were there previously but have not been looked + at yet. + If you simultaneously run more than one email client at a time + (for example, you run more than one _Alpine_ in parallel) then + turning this feature on can cause some confusion. The confusion + stems from the fact that each message is only considered to be + recent in one session. That means that the counts of new + messages may be different in the two _Alpine_s running side by + side, because each incoming message will only be counted as + recent in one of the two sessions. + You may also display the total number of messages in each folder + by using the incoming-checking-includes-total option. + _ldap-result-to-addrbook-add_ + This is only available if _Alpine_ was linked with an LDAP + library when it was compiled. If both the per-directory-server + option use-implicitly-from-composer and this feature are set, + then when an implicit directory lookup is done from the composer + you will automatically be prompted to add the result of the + directory lookup to your address book. + This feature is displayed as "LDAP Result to Addressbook Add". + _maildrops-preserve-state_ + This feature affects the way Mail Drops work. Normally, when + mail is moved from a Mail Drop folder to a destination folder, + the state changes that have taken place since the mail was + originally delivered are lost. Any Seen/New, Answered, + Important/Flagged state that has changed will be ignored. All of + the mail will be considered unSeen, unAnswered, and unImportant + after it is moved. + If this feature is set, then the state changes will not be lost. + In any case, messages which are already marked Deleted when the + mail is to be copied from the Mail Drop will be ignored. + _mark-fcc-seen_ + This features controls the way FCCs (File Carbon Copies) are + made of the messages you send. Normally, when _Alpine_ saves a + copy of a message you sent as an Fcc, that copy will be marked + as Unseen. When you look at the folder it was saved in the + message will appear to be a New message until you read it. When + this feature is enabled, the message will be marked as having + been Seen. + _mark-for-cc_ + This feature affects _Alpine_'s MESSAGE INDEX display. By + default, a '+' is displayed in the first column if the message + is addressed directly to you. When this feature is set and the + message is not addressed to you, then a '-' character is + displayed if the message is instead Cc'd directly to you. + _mult-newsrc-hostnames-as-typed_ + This feature will be of little use to most users. It has no + effect unless the feature Enable-Multiple-Newsrcs is set. When + the Enable-Multiple-Newsrcs feature is set then the setting of + this feature may have an effect on the names of the newsrc files + used. Normally, the name of the news server will be + canonicalized before it is used in the newsrc file name. For + example, if you type the news server name + + servername + it is likely that the canonical name will be something like + + servername.example.com + Or it may be the case that + + servername.example.com + is really an alias (a DNS CNAME) for + + othername.example.com + If this feature is not set, then the canonicalized names will be + used. If this feature is set, then the name you typed in (or put + in your configuration) will be used. + This feature is displayed as "Multiple Newsrc Hostnames as + Typed". + _news-approximates-new-status_ + This feature causes certain messages to be marked as _New_ in + the MESSAGE INDEX of newsgroups. This feature is set by default. + When opening a newsgroup, _Alpine_ will consult your _newsrc_ + file and determine the last message you have previously disposed + of via the _D_ key. If this feature is set, any subsequent + messages will be shown in the Index with an _N_, and the first + of these messages will be highlighted. Although this is only an + approximation of true _New_ or _Unseen_ status, it provides a + useful cue to distinguish more-or-less recent messages from + those you have seen previously, but are not yet ready to mark + deleted. + Background: your _newsrc_ file (used to store message status + information for newsgroups) is only capable of storing a single + flag, and _Alpine_ uses this to record whether or not you are + "done with" a message, as indicated by marking the message as + _Deleted_. Unfortunately, this means that _Alpine_ has no way to + record exactly which messages you have previously seen, so it + normally does not show the _N_ status flag for any messages in a + newsgroup. This feature enables a starting _approximation_ of + seen/unseen status that may be useful. + _news-deletes-across-groups_ + This feature controls what _Alpine_ does when you delete a + message in a newsgroup that appears in more than one newsgroup. + Such a message is sometimes termed a "crossposting" in that it + was posted across several newsgroups. + _Alpine_'s default behavior when you delete such a message is to + remove only the copy in the current newsgroup from view when you + use the "Exclude" command or the next time you visit the + newsgroup. + Enabling this feature causes _Alpine_ to remove every occurrence + of the message from all newsgroups it appears in and to which + you are subscribed. + NOTE: As currently implemented, enabling this feature may + increase the time it takes the Expunge command and newsgroup + closing to complete. + _news-offers-catchup-on-close_ + This feature controls what _Alpine_ does as it closes a + newsgroup. When set, _Alpine_ will offer to delete all messages + from the newsgroup as you are quitting _Alpine_ or opening a new + folder. + This feature is useful if you typically read all the interesting + messages in a newsgroup each time you open it. This feature + saves you from having to delete each message in a newsgroup as + you read it or from selecting all the messages and doing an + aggregate delete before you move on to the next folder or + newsgroup. + _news-post-without-validation_ + This feature controls whether the NNTP server is queried as + newsgroups are entered for posting. Validation over slow links + (e.g. dialup using SLIP or PPP) can cause delays. Set this + feature to eliminate such delays. + _news-read-in-newsrc-order_ + This feature controls the order that newsgroups will be + presented. If set, they will be presented in the same order as + they occur in your _newsrc_ file. If not set, the newsgroups + will be presented in alphabetical order. + _next-thread-without-confirm_ + This feature controls an aspect of _Alpine_'s Next and Prev + commands in the case where you are using one of the + "separate-index-screen" styles for the configuration option + threading-index-style and currently have the folder sorted by a + Threaded or OrderedSubject sort. When you are Viewing a + particular thread you have a MESSAGE INDEX of only the messages + in that thread. If you press the Next command with the last + message in the thread highlighted you will normally be asked if + you want to "View next thread?", assuming there is a next thread + to view. If this feature is set it will be assumed that you + always want to view the next thread and you won't be asked to + confirm that. Similarly, if the first message of the thread is + highlighted and you press the Prev command, this feature will + prevent the question "View previous thread". + This feature only has an effect in the MESSAGE INDEX screen. If + you then view a particular message from that screen and press + the Next command, you will be sent to the next thread without + being asked, independent of the setting of this feature. + The feature auto-open-next-unread, also has some similar + effects. + This feature is displayed as "Read Next Thread Without + Confirming". + _offer-expunge-of-inbox_ + The INBOX is normally treated differently from regular folders + in several ways. One of the differences is that the normal + "close" sequence of events is deferred until _Alpine_ is exited, + instead of happening when you leave the INBOX to view another + folder. The "close" sequence normally includes the Expunging of + deleted messages (either automatically or after a prompt, + controlled by the features Expunge-Without-Confirm, + Expunge-Without-Confirm-Everywhere, and Expunge-Only-Manually), + and the handling of the Read-Message-Folder. + If this feature is set the "close" sequence handling will take + place every time you leave the INBOX. The INBOX will still be + kept open, but the offer to Expunge and the archiving to the + Read-Message-Folder will take place each time you leave the + INBOX instead of only once at the end of the session. + _offer-expunge-of-stayopen-folders_ + This feature is related to the option Stay-Open-Folders. Stay + Open folders are treated differently from regular folders in + several ways. One of the differences is that the normal "close" + sequence of events is deferred until _Alpine_ is exited, instead + of happening when you leave the folder to view another folder. + The "close" sequence normally includes the Expunging of deleted + messages (either automatically or after a prompt, controlled by + the features Expunge-Without-Confirm, + Expunge-Without-Confirm-Everywhere, and Expunge-Only-Manually), + and the handling of Incoming-Archive-Folders. + If this feature is set the "close" sequence handling will take + place when you leave the Stay Open folder. The folder will still + be kept open, but the offer to Expunge and the archiving will + take place each time you leave the folder instead of only once + at the end of the session. This feature does not affect the + INBOX, which will still only be processed when you exit + _Alpine_. + _pass-c1-control-characters-as-is_ + It is probably not useful to set this option. This is a legacy + option left behind "just in case". Multi-byte characters which + have an octet which has the same value as a control character + are permitted through whether or not this option is turned on. + If the feature pass-control-characters-as-is is set, then this + feature has no effect. However, if you wish to filter out + regular control characters but pass the so-called C1 control + characters (0x80 <= char < 0xA0) through unchanged, then you may + leave pass-control-characters-as-is unset and set this feature. + _pass-control-characters-as-is_ + It is probably not useful to set this option. This is a legacy + option left behind "just in case". Multi-byte characters which + have an octet which has the same value as a control character + are permitted through whether or not this option is turned on. + If set, all characters in a message will be sent to the screen. + Normally, control characters are automatically suppressed in + order to avoid inadvertently changing terminal setup parameters. + Control characters are usually displayed as two character + sequences like + + ^C + for Control-C, + + ^[ + for ESCAPE, + + ^? + for DELETE, and + + ~E + for the character with value 133 (0x85). (The DEL character is + displayed as ^?, regular control characters are displayed as the + character ^ followed by the character obtained by adding the + five low-order bits of the character to 0x40, and the C1 control + characters 0x80 - 0x9F are displayed as the character ~ followed + by the character obtained by adding the five low-order bits of + the character to 0x40.) Sometimes, in cases where changing a + single control character into a two-character sequence would + confuse _Alpine_'s display routines, a question mark is + substituted for the control character. + If you wish to filter out regular control characters but pass + the so-called C1 control characters (0x80 <= char < 0xA0) + through unchanged, then you may leave this feature unset and set + the feature pass-c1-control-characters-as-is instead. + _predict-nntp-server_ + This feature allows _Alpine_ to assume that the open NNTP server + at the time of composition is the NNTP server to which the + message should be posted. This is especially recommended when + there are multiple News collections. If this feature is not set, + _Alpine_ will try to post to the first server in the nntp-server + variable. Setting this feature also negates the need to add News + collection servers to the nntp-server variable. + This feature can be especially handy when used in conjunction + with enable-multiple-newsrcs. + This option is displayed as "NNTP Server (for news)". + _prefer-plain-text_ + A message being viewed may contain alternate versions of the + same content. Those alternate versions are ordered by the + sending software such that the first alternative is the least + preferred and the last alternative is the most preferred. + _Alpine_ will normally display the most-preferred version that it + knows how to display. This is most often encountered where the + two alternate versions are a plain text version and an HTML + version, with the HTML version listed last as the most + preferred. + If this option is set, then any plain text version will be + preferred to all other versions. + _preopen-stayopen-folders_ + This feature is related to the option Stay-Open-Folders. + Normally, Stay Open folders are only opened on demand, when the + user asks to open them. From then on they are kept open for the + duration of the session. However, if this feature is set, then + the Stay Open folders will all be opened at startup, at the same + time that the INBOX is opened. + _preserve-start-stop-characters_ + This feature controls how special control key characters, + typically _^S_ and _^Q_, are interpreted when input to _Alpine_. + These characters are known as the "start" and "stop" characters + and are sometimes used in communications paths to control data + flow between devices that operate at different speeds. + By default, _Alpine_ turns the system's handling of these + special characters off except during printing. However, if you + see _Alpine_ reporting input errors such as: + + [ Command "^Q" not defined for this screen. ] + and, at the same time, see your display become garbled, then it + is likely that setting this option will solve the problem. Be + aware, though, that enabling this feature will also cause + _Alpine_ to ostensibly "hang" whenever the _Ctrl-S_ key + combination is entered as the system is now interpreting such + input as a "stop output" command. To "start output" again, + simply type _Ctrl-Q_. + This feature is displayed as "Preserve Start/Stop Characters". + _print-formfeed-between-messages_ + Setting this feature causes a formfeed to be printed between + messages when printing multiple messages with the _Apply Print_ + command. + _print-includes-from-line_ + If this feature is set, then the Unix mail style From line is + included at the start of each message that is printed. This line + looks something like the following, with the address replaced by + the address from the From line of the message being printed: + + From user@domain.somewhere.com Mon May 13 14:11:06 1996 + _print-index-enabled_ + This feature controls the behavior of the _Print_ command when + in the "Folder Index" screen. If set, the _Print_ command will + give you a prompt asking if you wish to print the message index, + or the currently highlighted message. If not set, the message + will be printed. + _print-offers-custom-cmd-prompt_ + When this feature is set, the _Print_ command will have an + additional subcommand called _C CustomPrint_. If selected, you + will have the opportunity to enter any system print command, + instead of being restricted to using those that have been + previously configured in the _Setup/Printer_ screen. + This feature is displayed as "Print Offers Custom Command + Prompt". + _prune-uses-yyyy-mm_ + By default, _Alpine_ asks monthly whether or not you would like + to rename some folders to a new name containing the date. It + also asks whether or not you would like to delete some old + folders. See the pruning-rule option for an explanation. + By default, the name used when renaming a folder looks like + + <foldername>-<month>-<year> + For example, the first time you run _Alpine_ in May of 2004, the + folder "sent-mail" might be renamed to + + sent-mail-apr-2004 + If this feature is set, the name used will be of the form + + <foldername>-<yyyy>-<mm> + where "yyyy" is the year and "mm" is the two-digit month (01, + 02, ..., 12). For the April, 2004 example above, it would + instead be + + sent-mail-2004-04 + because April is the 4th month of the year. A reason you might + want to set this feature is so that the folders will sort in + chronological order. + _publiccerts-in-keychain_ + Mac OS X _Alpine_ only. + If this feature is set the Mac OS X default keychain will be + used as the place to store public certificates instead of a + smime-public-cert-directory or a smime-public-cert-container. + This feature is displayed as "S/MIME -- Public Certs in MacOS + Keychain". + _quell-attachment-extension-warn_ + This feature suppresses the extra warning you can get when + trying to view an attachment for which there is no mime-type + match. Turning on this feature will just run the program + according to extension instead of first warning the user that it + will run according to the file's extension. + This feature can be used along side + quell-attachment-extra-prompt to preserve the behavior exhibited + in _Pine_ versions prior to _Pine_ 4.50. + This feature is displayed as "Suppress Attachment Extension + Warning". + _quell-attachment-extra-prompt_ + By default, when you attempt to view an attachment externally + from the "Attachment View" screen, you are asked if you really + want to view the selected attachment. + If this feature is set, you will _not_ be prompted to confirm + your selection. Prior to _Pine_ 4.50, the default behavior was + to not prompt. This feature was added for those wanting to + preserve that behavior. + This feature is displayed as "Suppress Attachment Extra Prompt". + _quell-berkeley-format-timezone_ + POSIX mandates a timezone in UNIX mailbox format folder + delimiters (the line which begins with From ). Some versions of + Berkeley mail have trouble with this, and don't recognize the + line as a message delimiter. If this feature is set, the + timezone will be left off the delimiter line. + This feature is displayed as "Suppress Berkeley Format + Timezone". + _quell-charset-warning_ + By default, if the message you are viewing contains characters + that are not representable in your display-character-set then + _Alpine_ will add a warning to the start of the displayed text. + If this option is set, then that editorial message will be + suppressed. + Setting this feature also suppresses the comment about the + character set in header lines. For example, when viewing a + message you might see + + From: "[ISO-8859-2] Name" <address> + in the From header if your Character-Set is something other than + ISO-8859-2. If you set this feature, the comment about the + character set will no longer be there. + This feature is displayed as "Suppress Character Set Warning". + _quell-content-id_ + This feature changes the behavior of _Alpine_ when sending + messages. It is intended to work around a bug in Microsoft's + Outlook XP mail user agent. As of this writing, Microsoft has + acknowledged the bug but has not added it to the Knowledge Base. + We have been told that there will be a post-SP1 hotfix for + Outlook XP. This particular bug has bug fix number + OfficeQFE:4781. The nature of the bug is that messages with + attachments which contain a Content-ID header (which standard + _Alpine_ attachments do) do not show the attachment indicator (a + paperclip) when viewed with Outlook XP. So the user has no + indication that the message contains an attachment. + If this feature is set then _Alpine_ will remove most Content-ID + headers before sending a message. If an attachment is of type + MESSAGE, then the existing Content-ID headers inside the message + will be left intact. This would only happen with _Alpine_ if a + message was forwarded as an attachment or if a message with a + message attached was forwarded. Similarly if an attachment of + type MULTIPART/ALTERNATIVE is forwarded, the Content-ID headers + of the alternative parts will not be removed. + Because the Content-ID header is a standard part of MIME it is + possible that setting this feature will break something. For + example, if an attachment has a Content-ID header which is + necessary for the correct functioning of that attachment, it is + possible that _Alpine_ may remove that header when the + attachment is forwarded. However, it seems fairly safe at this + time. + This feature is displayed as "Suppress Content-ID". + _quell-dead-letter-on-cancel_ + This feature affects _Alpine_'s behavior when you cancel a + message being composed. _Alpine_'s usual behavior is to write + the canceled message to a file named dead.letter in your home + directory (under UNIX; DEADLETR under WINDOWS/DOS) overwriting + any previous message. Under some conditions (some routine), this + can introduce a noticeable delay. + Setting this feature will cause _Alpine_ NOT to write canceled + compositions into the file called dead.letter. + This feature affects the newer option Dead-Letter-Files, which + specifies the number of dead letter files to keep around. If + this feature is set, then the Dead-Letter-Files option has no + effect. + This feature is displayed as "Do Not Save to Deadletter on + Cancel". + _quell-empty-directories_ + This feature causes _Alpine_ to remove from the display any + directories that do not contain at least one file or directory. + This can be useful to prevent overly cluttered folder lists when + a collection is stored on a server that treats all names as both + a folder and a directory. + Note, enabling this feature can cause surprising behavior! For + example, you can still use Add to create a directory, but unless + you immediately enter that directory and create a folder, that + newly created directory may not be displayed next time you enter + the folder list. + This feature is displayed as "Hide Empty Directories". + _quell-extra-post-prompt_ + This feature causes _Alpine_ to skip the extra question about + posting a message which may go to thousands of readers when you + are about to post to a newsgroup. + This feature is displayed as "Suppress Extra Posting Prompt". + _quell-filtering-done-message_ + This feature causes _Alpine_ to suppress the "filtering done" + message. + This feature is displayed as "Suppress Filtering Done Message". + _quell-filtering-messages_ + This feature causes _Alpine_ to suppress the messages about + moving filtered messages and setting flags in messages, due to + Filter Rules. + This feature is displayed as "Suppress Filtering Messages". + _quell-flowed-text_ + _Alpine_ generates flowed text where possible. The method for + generating flowed text is defined by RFC 3676, the benefit of + doing so is to send message text that can properly be viewed + both on normal width displays and on displays with smaller or + larger than normal screen widths. With flowed text, a space at + the end of a line tells the receiving mail client that the + following line belongs to the same paragraph. Quoted text will + also be affected, with only the innermost level of ">" quoting + being followed by a space. However, if you have changed the + "Reply-Indent-String" so that it is not equal to the default + value of "> ", then quoted text will not be flowed. For this + reason, we recommend that you leave your "Reply-Indent-String" + set to the default. + This feature turns off the generation of flowed text, as it + might be desired to more tightly control how a message is + displayed on the receiving end. + If this feature is _not_ set, you can control on a message by + message basis whether or not flowed text is generated. You do + this by typing ^V at the Send confirmation prompt that you get + after typing ^X to send a message. ^V is a toggle which turns + flowing off and back on if typed again. If for some reason + flowing cannot be done on a particular message, then the ^V + command will not be available. This would be the case, for + example, if this feature was set, or if your + "Reply-Indent-String" was set to a non-default value. If the + feature Send-Without-Confirm is set, then the opportunity to + control on a message by message basis whether or not flowed text + is generated is lost. + When this feature is not set and you have typed ^V to turn off + flowing, the Send confirmation prompt will change to look like + + Send message (not flowed)? + Strip-Whitespace-Before-Send will also turn off the sending of + flowed text messages, but it differs in that it also trims all + trailing white space from a message before sending it. + If alternate editors are used extensively, be aware that a + message will still be sent flowed if this feature is unset. In + most cases this will be fine, but if the editor has a "flowed + text" mode, it would be best to use that. + This feature is displayed as "Do Not Send Flowed Text". + _quell-folder-internal-msg_ + This feature determines whether or not _Alpine_ will create + "pseudo messages" in folders that are in standard Unix or MMDF + format. + _Alpine_ will normally create these pseudo messages when they + are not already present in a standard Unix or MMDF folder. Their + purpose is to record certain mailbox state data needed for + correct IMAP and POP server operation, and also for _Alpine_ to + be able to mark messages as Answered when the Reply has been + postponed. + Sites which do not use IMAP/POP for remote mail access, and + which need to support mail tools that are adversely affected by + the presence of the pseudo-messages (e.g. some mail notification + tools) may enable this feature to tell _Alpine_ not to create + them. Note that _Alpine_'s "Answered" flag capability will be + adversely affected if this is done. + Note too that, even if this feature is enabled, _Alpine_ will + not remove pseudo-messages when it encounters them (e.g. those + created by UW's imapd or ipopd servers.) This feature has no + effect on folders that are not in standard Unix or MMDF format, + as pseudo-messages are not needed in the other formats to record + mailbox state information. + This feature is displayed as "Prevent Folder Internal Message". + _quell-full-header-auto-reset_ + The HdrMode Command normally resets to the default state when + switching to a new message. For example, if you've used the "H" + command to turn on Full Headers for a message you are viewing, + and then you type the Next command to look at the next message, + the full headers will no longer be shown. Setting this feature + disables that reset. Instead, the Header Mode remains the same + from message to message. + The presence or absence of the HdrMode command is determined by + the "Enable-Full-Header-Cmd" Feature-List option. + This feature is displayed as "Suppress Full Header Auto Reset". + _quell-imap-envelope-update_ + In the MESSAGE INDEX screen, if the open folder is being + accessed using IMAP, _Alpine_ normally tries to paint the index + lines on the screen as soon as the information arrives from the + IMAP server. This means that the index information makes it onto + the screen more quickly than it otherwise would. This sometimes + results in behavior that bothers some users. For example, when + paging to a new page of the index, it may be possible for the + lines to be painted on the screen in a random order, rather than + from top to bottom. + Setting this feature causes _Alpine_ to wait for all of the + information to be gathered before it paints the index screen. + Once it collects all of the information, the screen will be + painted quickly from top to bottom. + This feature is displayed as "Suppress IMAP Envelope Update". + _quell-lock-failure-warnings_ + This feature affects _Alpine_'s behavior when it encounters a + problem acquiring a mail folder lock. Typically, a secondary + file associated with the mail folder being opened is created as + part of the locking process. On some systems, such file creation + has been administratively precluded by the system configuration. + _Alpine_ issues a warning when such failures occur, which can + become bothersome if the system is configured to disallow such + actions. Setting this feature causes _Alpine_ to remain silent + when this part of lock creation fails. + WARNING: systems that have been configured in a way that + precludes locking introduce some risk of mail folder corruption + when more than one program attempts to modify the mail folder. + This is most likely to occur to one's _INBOX_ or other "Incoming + Message Folder". + This feature is displayed as "Suppress Lock Failure Warnings". + _Quell-Mailchecks-Composing-Except-Inbox_ + This option is closely related to the Mail-Check-Interval + option, the Mail-Check-Interval-Noncurrent option, and + Quell-Mailchecks-Composing-Inbox. + If this option is set, then the normal new-mail checking which + happens while you are composing will not happen for folders + other than your INBOX (which depends on the setting of + "Quell-Mailchecks-Composing-Inbox"). + You might want to set this option if you are experiencing delays + while composing which you think might be related to the speed of + the new-mail checks. + Even with this option turned on, an occasional new-mail check + may be done in order to keep the server from killing the + connection to the folder. For example, IMAP servers may remove a + connection to a folder if there has been no activity on the + connection for 30 minutes or more. Instead of letting that + happen, _Alpine_ will check for new mail before the 30 minutes + is up even though you have turned on this feature to quell those + checks. + Besides new-mail checks, checkpoint operations on the folders + will also be quelled when you set this option. The purpose of + checkpointing is to write the changes to a folder out to disk + periodically in order to avoid losing those changes when system + or software problems occur. New-mail checking and checkpointing + while you are not composing are not affected by this option. + This feature is displayed as "Prevent Mailchecks While Composing + Except for INBOX". + _Quell-Mailchecks-Composing-Inbox_ + This option is closely related to the Mail-Check-Interval + option, the Mail-Check-Interval-Noncurrent option, and + Quell-Mailchecks-Composing-Except-Inbox. + If this option is set, then the normal new-mail checking which + happens while you are composing will not happen for your INBOX. + Checking of other folders is controlled in a similar way with + the "Quell-Mailchecks-Composing-Except-Inbox" option. + You might want to set this option if you are experiencing delays + while composing which you think might be related to the speed of + the new-mail checks. + Even with this option turned on, an occasional new-mail check + may be done in order to keep the server from killing the + connection to the folder. For example, IMAP servers may remove a + connection to a folder if there has been no activity on the + connection for 30 minutes or more. Instead of letting that + happen, _Alpine_ will check for new mail before the 30 minutes + is up even though you have turned on this feature to quell those + checks. + Besides new-mail checks, checkpoint operations on the INBOX will + also be quelled when you set this option. The purpose of + checkpointing is to write the changes to a folder out to disk + periodically in order to avoid losing those changes when system + or software problems occur. New-mail checking and checkpointing + while you are not composing are not affected by this option. + This feature is displayed as "Prevent Mailchecks While Composing + for INBOX". + _quell-maildomain-warning_ + When your configuration is set up so that your domain name + contains no dots, it is usually a configuration error. By + default, _Alpine_ will warn you about this when you start it up. + You will see a warning message that looks like + + Incomplete maildomain "<domain>". + If this feature is set, the warning is turned off. This feature + is displayed as "Suppress Maildomain Warning". + _quell-news-envelope-update_ + In the MESSAGE INDEX screen, if the open folder is being + accessed using NNTP (News), _Alpine_ normally tries to paint the + index lines on the screen as soon as the information arrives + from the NNTP server. This means that the index information + makes it onto the screen more quickly than it otherwise would. + This sometimes results in behavior that bothers some users. For + example, when paging to a new page of the index, it may be + possible for the lines to be painted on the screen in a random + order, rather than from top to bottom. + Setting this feature causes _Alpine_ to wait for all of the + information to be gathered before it paints the index screen. + Once it collects all of the information, the screen will be + painted quickly from top to bottom. + This feature is displayed as "Suppress News Envelope Update". + _quell-partial-fetching_ + Partial fetching is a feature of the IMAP protocol. By default, + _Alpine_ will use partial fetching when copying the contents of a + message or attachment from the IMAP server to _Alpine_. This + means that the fetch will be done in many small chunks instead + of one big chunk. The main benefit of this approach is that the + fetch becomes interruptible. That is, the user can type _^C_ to + stop the fetch early. In some cases partial fetching may cause a + performance problem so that the fetching of data takes + significantly longer when partial fetching is used. Turning on + this feature will turn off partial fetching. + This feature is displayed as "Prevent Partial Fetching". + _quell-personal-name-prompt_ + _PC-Alpine_ only. This feature quells the prompting for a + personal-name. This prompt normally happens before composing a + message, and only happens when there is no personal name already + set. + _quell-server-after-link-in-html_ + By default, links in HTML text are displayed with the host the + link references appended, within square brackets, to the link + text. _Alpine_ does this to help indicate where a link will take + you, particularly when the link text might suggest a different + destination. + Setting this feature will prevent the server name from being + appended to the displayed text. + This feature is displayed as "Suppress Server After Link in + HTML". + _quell-ssl-largeblocks_ + This feature (_PC-Alpine_ only) changes the behavior of fetching + messages and attachments so that the message data is fetched in + chunks no larger than 12K bytes. This works around a bug in + Microsoft's SSL/TLS support. Some versions of Microsoft SSL are + not able to read full-sized (16K) SSL/TLS packets. Some servers + will send such packets and this will cause _PC-Alpine_ to crash + with the error + + incomplete SecBuffer exceeds maximum buffer size + Microsoft is aware of the problem and has developed a hotfix for + it, but as of this writing the hotfix has not yet been added to + the Knowledge Base. + This feature is displayed as "Prevent SSL Largeblocks". + _quell-status-message-beeping_ + If set status messages will never emit a beep. + This feature is displayed as "Suppress Status Message Beeping". + _quell-timezone-comment-when-sending_ + Normally, when _Alpine_ generates a Date header for outgoing + mail, it will try to include the symbolic timezone at the end of + the header inside parentheses. The symbolic timezone is often + three characters long, but on some operating systems, it may be + longer. Apparently there are some SMTP servers in the world + which will reject an incoming message if it has a Date header + longer than about 80 characters. If this feature is set, the + symbolic timezone normally generated by _Alpine_ will not be + included. You probably don't need to worry about this feature + unless you run into the problem described above. + This feature is displayed as "Suppress Timezone Comment When + Sending". + _quell-user-id-prompt_ + _PC-Alpine_ only. This feature quells the prompting for a + user-id if the information can be obtained from the login name + used to open the INBOX. Normally, this prompt happens before + composing a message, and only happens when there is no user-id + already set in the configuration. + With this feature set, composing a message is only possible + after establishing a connection to the INBOX. + _quell-user-lookup-in-passwd-file_ + This feature controls an aspect of _Alpine_'s Composer, and if + needed, will usually be set by the system manager in _Alpine_'s + system-wide configuration file. Specifically, if this feature is + set, _Alpine_ will not attempt to look in the system password + file to find a Full Name for the entered address. + Normally, names you enter into address fields (e.g. To: or Cc:) + are checked against your address book(s) to see if they match an + address book nickname. Failing that, (in Unix _Alpine_) the name + is then checked against the Unix password file. If the entered + name matches a username in the system password file, _Alpine_ + extracts the corresponding Full Name information for that + individual, and adds that to the address being entered. + However, password file matching can have surprising (incorrect) + results if other users of the system do not receive mail at the + domain you are using. That is, if either the user-domain or + use-only-domain-name option is set such that the administrative + domain of other users on the system isn't accurately reflected, + _Alpine_ should be told that a password file match is + coincidental, and Full Name info will be incorrect. For example, + a personal name from the password file could get falsely paired + with the entered name as it is turned into an address in the + configured domain. + If you are seeing this behavior, enabling this feature will + prevent Unix _Alpine_ from looking up names in the password file + to find the Full Name for incomplete addresses you enter. + This feature is displayed as "Prevent User Lookup in Password + File". + _quit-without-confirm_ + This feature controls whether or not _Alpine_ will ask for + confirmation when a _Quit_ command is received. + This feature is displayed as "Quit Without Confirming". + _quote-replace-nonflowed_ + This feature, which is only active when Quote-Replace-String is + also set, enables quote-replacement on non-flowed messages. It + is off by default because a non-flowed message is more dependent + on its format, and thus quote-replacement may cause + less-than-pleasing results. Setting this feature will cause + quote-replacement similar to that of flowed messages, but with + the added possibility of long lines being wrapped into new lines + if the Quote-Replacement-String is longer than the string it is + replacing, which is "> ". + _reply-always-uses-reply-to_ + If set, _Alpine_ will not prompt when a message being replied to + contains a _Reply-To:_ header value, but will simply use its + value (as opposed to using the _From:_ field's value). + _return-to-inbox-without-confirm_ + Normally, when you use the TAB command and there are no more + folders or newsgroups to visit, you are asked if you want to + return to the INBOX. If this feature is set you will not be + asked. It will be assumed that you do want to return to the + INBOX. + This feature is displayed as "Return to INBOX Without + Confirming". + _save-aggregates-copy-sequence_ + This feature will optimize an aggregate copy operation, if + possible, by issuing a single IMAP _COPY_ command with a list of + the messages to be copied. This feature is set by default. This + may reduce network traffic and elapsed time for the Save. + _However, many IMAP servers (including the UW IMAP server) do not + preserve the order of messages when this optimization is + applied._ If this feature is not set, _Alpine_ will copy each + message individually and the order of the messages will be + preserved. + This feature is displayed as "Save Combines Copies (may be out + of order)". + _save-partial-msg-without-confirm_ + This feature controls an aspect of _Alpine_'s Save command. By + default, when you Save a message that has some deleted parts, + you will be asked to confirm that you want to Save with a prompt + that looks like: + + Saved copy will NOT include entire message! Continue? + If this feature is set, you will not be asked. + This feature is displayed as "Save Partial Message Without + Confirming". + _save-will-advance_ + If set, _Save_ will (in addition to copying the current message + to the designated folder) also advance to the next message. + _save-will-not-delete_ + If set, _Save_ will not mark the message Deleted (its default + behavior) after it has been copied to the designated folder. + _save-will-quote-leading-froms_ + This feature controls an aspect of the _Save_ command (and also + the way outgoing messages are saved to an FCC folder). If set, + _Alpine_ will add a leading > character in front of message lines + beginning with "From" when they are saved to another folder, + including lines syntactically distinguishable from the type of + message separator line commonly used on Unix systems. + The default behavior is that a > will be prepended only to lines + beginning with "From " that might otherwise be confused with a + message separator line on Unix systems. If _Alpine_ is the only + mail program you use, this default is reasonable. If another + program you use has trouble displaying a message with an + unquoted From saved by _Alpine_, you should enable this feature. + This feature only applies to the common Unix mailbox format that + uses message separator lines beginning with "From ". If _Alpine_ + has been configured to use a different mailbox format (possibly + incompatible with other mail programs), then this issue does not + arise, and the feature is irrelevant. + _scramble-message-id_ + Normally the Message-ID header that _Alpine_ generates when + sending a message contains the name of the computer from which + the message is being sent. Some believe that this hostname could + be used by spammers or could be used by others for nefarious + purposes. If this feature is set, that name will be transformed + with a simple Rot13 transformation. The result will still have + the correct syntax for a Message-ID but the part of the + MessageID that is often a domain name will not be an actual + domain name because the letters will be scrambled. + It is possible (but unlikely?) that some spam detection software + will use that as a reason to reject the mail as spam. It has + also been reported that some spam detection software uses the + fact that there are no dots after the "@" as a reason to reject + messages. If your _PC-Alpine_ Message-ID is using a name without + a dot that is because that is what Windows thinks is your "Full + computer name". The method used to set this varies from one type + of Windows to another but check under Settings -> Control Panel + -> System and look for Network Identification or Computer Name + or something similar. How to set it is beyond the scope of + _Alpine_. + This feature is displayed as "Scramble the Message-ID When + Sending". + _select-without-confirm_ + This feature controls an aspect of _Alpine_'s _Save_, _Export_, + and _Goto_ commands. These commands all take text input to + specify the name of the folder or file to be used, but allow you + to press _^T_ for a list of possible names. If set, the selected + name will be used immediately, without further opportunity to + confirm or edit the name. + This feature is displayed as "Select Ctrl-T Foldername Without + Confirming". + _send-without-confirm_ + By default, when you send or post a message you will be asked to + confirm with a question that looks something like: + + Send message? + If this feature is set, you will _not_ be prompted to confirm + your intent to send and your message will be sent. + If this feature is set it disables some possibilities and + renders some other features meaningless. You will not be able to + use Sending Filters, Verbose sending mode, Background Sending, + Delivery Status Notifications, or ^V to turn off the generation + of flowed text for this message. These options are normally + available as suboptions in the Send prompt, but with no Send + prompt the options are gone. + A somewhat related feature is quell-extra-post-prompt. which may + be used to eliminate the extra confirmation question when + posting to a newsgroup. + This feature is displayed as "Send Without Confirming". + _separate-folder-and-directory-display_ + This feature affects folder collections wherein a folder and + directory can have the same name. By default, _Alpine_ displays + them only once, denoting that it is both a folder and directory + by appending the folder name with the hierarchy character + enclosed in square brackets. + Enabling this feature will cause _Alpine_ to display such names + separately marking the name representing a directory with a + trailing hierarchy delimiter (typically the slash, "/", + character). + The feature also alters the command set slightly. By default, + the right-arrow descends into the directory, while hitting the + Return key will cause the folder by that name to be opened. + With this feature set, the Return key will open the highlighted + folder, or enter the highlighted directory. + _show-cursor_ + If set, the system cursor will move to convenient locations in + the displays. For example, to the beginning of the status field + of the highlighted index line, or to the highlighted word after + a successful _WhereIs_ command. It is intended to draw your + attention to the _interesting_ spot on the screen. + _show-plain-text-internally_ + This feature modifies the method _Alpine_ uses to display + Text/Plain MIME attachments from the Attachment Index screen. + Normally, the "View" command searches for any externally defined + (usually via the Mailcap file) viewer, and displays the selected + text within that viewer. + Enabling this feature causes _Alpine_ to ignore any external + viewer settings and always display text with _Alpine_'s internal + viewer. + _show-selected-in-boldface_ + This feature controls an aspect of _Alpine_'s aggregate + operation commands; in particular, the _Select_ and _WhereIs_ + commands. _Select_ and _WhereIs_ (with the _^X_ subcommand) will + search the current folder for messages meeting a specified + criteria, and _tag_ the resulting messages with an _X_ in the + first column of the applicable lines in the "Folder Index". If + this feature is set, instead of using the _X_ to denote a + selected message, _Alpine_ will attempt to display those index + lines in boldface. Whether this is preferable to the _X_ will + depend on personal taste and the type of terminal being used. + _show-sort_ + If this feature is set and there is sufficient space on the + screen, a short indication of the current sort order will be + added in the titlebar (the top line on the screen), before the + name of the folder. For example, with the default Arrival sort + in effect, the display would have the characters + + [A] + added between the title of the screen and the folder name. The + letters are the same as the letters you may type to manually + sort a folder with the SortIndex command ($). The letters in the + table below are the ones that may show up in the titlebar line. + + A _A_rrival + S _S_ubject + F _F_rom + T _T_o + C _C_c + D _D_ate + Z si_Z_e + O _O_rderedsubject + E scor_E_ + H t_H_read + If the sort order is Reversed, the letter above will be preceded + by the letter "R", for example + + [RS] + means that a Reverse Subject sort is in effect. For the case + where the sort is in Reverse Arrival order, the "A" is left out, + and just an "R" is shown. + + [R] + This feature is displayed as "Show Sort in Titlebar". + _signature-at-bottom_ + If this feature is set, and a message being _Repl_ied to is + being included in the reply, then the contents of the signature + file (if any) will be inserted after the included message. This + feature does not affect the results of a _Forward_ command. + _single-column-folder-list_ + If set, the "Folder List" screen will list one folder per line + instead of several per line. + _slash-collapses-entire-thread_ + Normally, the Collapse/Expand Thread command Collapses or + Expands the subthread which starts at the currently highlighted + message, if any. If this feature is set, then the slash command + Collapses or Expands the _entire_ current thread instead of just + the subthread. + _smime-dont-do-smime_ + UNIX _Alpine_ only. + Setting this feature turns off all of _Alpine_'s S/MIME support. + You might want to set this if you are having trouble due to the + S/MIME support. + + General S/MIME Overview + This feature is displayed as "S/MIME -- Turn off S/MIME". + _smime-encrypt-by-default_ + UNIX _Alpine_ only. + This feature only has an effect if your version of _Alpine_ + includes support for S/MIME. It affects _Alpine_'s behavior when + you send a message. If this option is set, the "Encrypt" option + will default to ON when sending messages. + Only the default value is affected. In any case, you may still + toggle the Encrypt option on or off before sending with the "E + Encrypt" command (provided you have a the public digital ID for + the recipient). + + General S/MIME Overview + This feature is displayed as "S/MIME -- Encrypt by Default". + _smime-remember-passphrase_ + UNIX _Alpine_ only. + This feature only has an effect if your version of _Alpine_ + includes support for S/MIME. If this option is set, you will + only have to enter your passphrase for your private key once + during an _Alpine_ session. + + General S/MIME Overview + This feature is displayed as "S/MIME -- Remember S/MIME + Passphrase". + _smime-sign-by-default_ + UNIX _Alpine_ only. + This feature only has an effect if your version of _Alpine_ + includes support for S/MIME. It affects _Alpine_'s behavior when + you send a message. If this option is set, the "Sign" option + will default to ON when sending messages. + Only the default value is affected. In any case, you may still + toggle the Signing option on or off before sending with the "G + Sign" command (provided you have a personal digital ID + certificate). + + General S/MIME Overview + This feature is displayed as "S/MIME -- Sign by Default". + _sort-default-fcc-alpha_ + This feature controls an aspect of _Alpine_'s FOLDER LIST + screen. If set, the default FCC folder will be sorted + alphabetically with the other folders instead of appearing right + after the INBOX. + This feature is displayed as "Sort Default Fcc Folder + Alphabetically". + _sort-default-save-alpha_ + This feature controls an aspect of _Alpine_'s FOLDER LIST + screen. If set, the default save folder will be sorted + alphabetically with the other folders instead of appearing right + after the INBOX (and default FCC folder). + This feature is displayed as "Sort Default Save Folder + Alphabetically". + _spell-check-before-sending_ + When this feature is set, every composed message will be + spell-checked before being sent. + _store-window-position-in-config_ + Normally, _PC-Alpine_ will store its window size and position in + the Windows Registry. This is convenient if you want to use the + same remote configuration from more than one PC. If you use + multiple configuration files to start _PC-Alpine_, you may want + to store the window size and position in the configuration file + instead of in the Registry. Setting this feature causes that to + happen. + _strip-from-sigdashes-on-reply_ + This feature doesn't do anything if the feature enable-sigdashes + is turned on. However, if the _enable-sigdashes_ feature is not + turned on, then turning on this feature enables support for the + convention of not including text beyond the sigdashes line when + Replying or Following up to a message and including the text of + that message. + In other words, this is a way to turn on the signature stripping + behavior without also turning on the dashes-adding behavior. + _strip-whitespace-before=send_ + Trailing whitespace is not stripped from a message before + sending. Trailing whitespace should have no effect on an email + message, and in flowed text can aid in delimiting paragraphs. + However, the old behavior of stripping trailing whitespace was + in place to better deal with older clients that couldn't handle + certain types of text encodings. This feature restores the old + behavior + Trailing whitespace is of aid to flowed-text-formatted messages, + which are generated by default but can be turned off via the + quell-flowed-text feature. strip-whitespace-before-send also has + the effect of turning off sending of flowed text. + This feature is displayed as "Strip Whitespace Before Sending". + _suppress-asterisks-in-password-prompt_ + When you are running _Alpine_ you will sometimes be asked for a + password in a prompt on the third line from the bottom of the + screen. Normally each password character you type will cause an + asterisk to echo on the screen. That gives you some feedback to + know that your typing is being recognized. There is a very + slight security risk in doing it this way because someone + watching over your shoulder might be able to see how many + characters there are in your password. If you'd like to suppress + the echoing of the asterisks set this feature. + _suppress-user-agent-when-sending_ + If this feature is set then _Alpine_ will not generate a + User-Agent header in outgoing messages. + _tab-checks-recent_ + In a FOLDER LIST screen, the TAB key usually just changes which + folder is highlighted. If this feature is set, then the TAB key + will cause the number of recent messages and the total number of + messages in the highlighted folder to be displayed instead. + This feature is displayed as "Tab Checks for Recent Messages". + _tab-uses-unseen-for-next-folder_ + This feature affects _Alpine_'s behavior when using the TAB + NextNew Command to move from one folder to the next. _Alpine_'s + usual behavior is to search for folders with _Recent_ messages + in them. Recent messages are messages which have arrived since + the last time the folder was opened. + Setting this feature causes _Alpine_ to search for _Unseen_ + messages instead of Recent messages. Unseen messages remain + Unseen until you view them (or flag then as Seen with the Flag + Command). Setting this feature allows you to locate messages you + have not read instead of only recently received messages. When + this feature is set, the feature Enable-Fast-Recent-Test will + have no effect, so the checking may be slower. + Another reason why you might want to use this feature is that + _Alpine_ sometimes opens folders implicitly behind the scenes, + and this clears the Recent status of all messages in the folder. + One example where this happens is when Saving or filtering a + message to another folder. If that message has some keywords + set, then because of some shortcomings in the IMAP + specification, the best way to ensure that those keywords are + still set in the saved copy of the message is to open the folder + and set the keywords explicitly. Because this clears the Recent + status of all messages in that folder the folder will not be + found by the NextNew command unless this feature is set. + _tab-visits-next-new-message-only_ + This feature affects _Alpine_'s behavior when using the _TAB_ + key to move from one message to the next. _Alpine_'s usual + behavior is to select the next _Unread_ message or message + flagged as _Important_. + Setting this feature causes _Alpine_ to skip the messages + flagged as _Important_, and select _Unread_ messages + exclusively. Tab behavior when there are no new messages left to + select remains unchanged. + _termdef-takes-precedence_ + This feature may affect _Alpine_'s low-level input routines. + Termcap (or terminfo, depending on how your copy of _Alpine_ was + compiled and linked) is the name of the database which describes + terminal capabilities. In particular, it describes the sequences + of characters that various keys will emit. + An example would be the Up Arrow key on the keyboard. Up Arrow + is not a distinct character on most Unix systems. When you press + the Up Arrow key a short sequence of characters are produced. + This sequence is supposed to be described in the termcap + database by the "ku" capability (or by the "kcuu1" capability if + you are using terminfo instead of termcap). + By default, _Alpine_ defines some terminal escape sequences that + are commonly used. For example, the sequence "ESC O A" is + recognized as an Up Arrow key. The sequence "ESC [ A" is also + recognized as an Up Arrow key. These are chosen because common + terminals like VT100's or ANSI standard terminals produce these + sequences when you press the Up Arrow key. + If your system's termcap (terminfo) database assigns some other + function to the sequence "ESC O A" it is usually ignored by + _Alpine_. Also, if your termcap (terminfo) database assigns a + sequence which doesn't begin with an escape character (ESC) it + is usually ignored by _Alpine_. This usually works fine because + most terminals emit the escape sequences that _Alpine_ has + defined by default. We have also found that it is usually better + to have these defaults take precedence over the definitions + contained in the database because the defaults are more likely + to be correct than the database. + There are some terminals where this breaks down. If you want + _Alpine_ to believe the definitions given in your termcap + (terminfo) database in preference to the defaults the _Alpine_ + itself sets up, then you may turn this feature on. Then, + sequences of characters which are defined in both termcap + (terminfo) and in _Alpine_'s set of defaults will be interpreted + the way that termcap (terminfo) says they should be interpreted. + Also, if your terminal capabilities database assigns a sequence + which doesn't begin with escape, it will not be ignored. + _thread-index-shows-important-color_ + This option affects only the THREAD INDEX screen. Whether or not + you ever see a THREAD INDEX screen depends on the setting of the + configuration option threading-index-style and on the sort order + of the index. If a message within a thread is flagged as + Important and this option is set, then the entire line in the + THREAD INDEX will be colored the color of the Index-important + Symbol, which can be set using the Setup Kolor screen. + _try-alternative-authentication-driver-first_ + This feature affects how _Alpine_ connects to IMAP servers. It's + utility has largely been overtaken by events, but it may still + be useful in some circumstances. If you only connect to modern + IMAP servers that support "TLS" you can ignore this feature. + Details: + By default, _Alpine_ will attempt to connect to an IMAP server + on the normal IMAP service port (143), and if the server offers + "Transport Layer Security" (TLS) and _Alpine_ has been compiled + with encryption capability, then a secure (encrypted) session + will be negotiated. + With this feature enabled, before connecting on the normal IMAP + port, _Alpine_ will first attempt to connect to an alternate + IMAP service port (993) used specifically for encrypted IMAP + sessions via the Secure Sockets Layer (SSL) method. If the SSL + attempt fails, _Alpine_ will then try the default behavior + described in the previous paragraph. + TLS negotiation on the normal port is preferred, and supersedes + the use of SSL on port 993, but older servers may not provide + TLS support. This feature may be convenient when accessing IMAP + servers that do not support TLS, but do support SSL connections + on port 993. However, it is important to understand that with + this feature enabled, _Alpine_ will _attempt_ to make a secure + connection if that is possible, but it will proceed to make an + insecure connection if that is the only option offered by the + server, or if the _Alpine_ in question has been built without + encryption capability. + Note that this feature specifies a per-user (or system-wide) + default behavior, but host/folder specification flags may be + used to control the behavior of any specific connection. This + feature interacts with some of the possible host/folder path + specification flags as follows: + The /tls host flag, for example, + + {foo.example.com/tls}INBOX + will over-ride this feature for the specified host by bypassing + the SSL connection attempt. Moreover, with /tls specified, the + connection attempt will fail if the service on port 143 does not + offer TLS support. + The /ssl host flag, for example, + + {foo.example.com/ssl}INBOX + will insist on an SSL connection for the specified host, and + will fail if the SSL service on port 993 is not available. + _Alpine_ will not subsequently retry a connection on port 143 if + /ssl is specified. + _unselect-will-not-advance_ + Normally, when the Unselect current message command (:) is typed + when the current message is selected, the message will be + unselected and the next message will become the current message. + If this feature is set, the cursor will not advance to the next + message. Instead, the current message will remain the current + message after unselecting. + _use-current-dir_ + This feature controls an aspect of several commands. If set, + your "current working directory" will be used instead of your + home directory for all of the following operations: + + _Export_ in the "Folder Index" and "Message Text" screens + + Attachment _Save_ in the "Message Text" and "Attachment Text" + screens + + _^R_ file inclusion in the Composer + + _^J_ file attachment in the Composer + This feature is displayed as "Use Current Directory". + _use-function-keys_ + This feature specifies that _Alpine_ will respond to function + keys instead of the normal single-letter commands. In this mode, + the key menus at the bottom of each screen will show function + key designations instead of the normal mnemonic key. + _use-regular-startup-rule-for-stayopen-folders_ + This feature affects which message is selected as the current + message when you enter a Stay Open folder. + Normally, the starting position for an incoming folder (which + most Stay Open folders will likely be) is controlled by the + Incoming-Startup-Rule. However, if a folder is a Stay Open + folder, when you re-enter the folder after the first time the + current message will be the same as it was when you left the + folder. An exception is made if you use the TAB command to get + to the folder. In that case, the message number will be + incremented by one from what it was when you left the folder. + The above special behavior is thought to be useful. However, it + is special and different from what you might at first expect. If + this feature is set, then Stay Open folders will not be treated + specially as far as the startup rule is concerned. + _use-resent-to-in-rules_ + This feature is turned off by default because turning it on + causes problems with some deficient IMAP servers. In _Alpine_ + Filters and other types of Rules, if the Pattern contains a To + header pattern and this feature is turned on, then a check is + made in the message to see if a Resent-To header is present, and + that is used instead of the To header. If this feature is not + turned on, then the regular To header will always be used. + _use-sender-not-x-sender_ + Normally _Alpine_ on Unix adds a header line labeled + _X-X-Sender_, if the sender is different from the _From:_ line. + The standard specifies that this header line should be labeled + _Sender_, not _X-X-Sender_. Setting this feature causes _Sender_ + to be used instead of _X-X-Sender_. The standard also states + that the data associated with this header field should not be + used as a Reply address. Unfortunately, certain implementations + of mail list management servers will use the Sender address for + such purposes. These implementations often even recognize the + _X-Sender_ fields as being equivalent to the _Sender_ field, and + use it if present. This is why _Alpine_ defaults to + _X-X-Sender_. + Note, _PC-Alpine_ always adds either an _X-X-Sender_ line if + there is an open, remote mailbox, or an _X-Warning: + UNAuthenticated User_ otherwise + This feature is displayed as "Use Sender Instead of X-X-Sender". + _use-subshell-for-suspend_ + This feature affects _Alpine_'s behavior when process suspension + is enabled and then activated via the _^Z_ key. _Alpine_ + suspension allows one to temporarily interact with the operating + system command "shell" without quitting _Alpine_, and then + subsequently resume the still-active _Alpine_ session. + When the _enable-suspend_ feature is set and subsequently the + _^Z_ key is pressed, _Alpine_ will normally suspend itself and + return temporary control to _Alpine_'s parent shell process. + However, if this feature is set, _Alpine_ will instead create an + inferior subshell process. This is useful when the parent + process is not intended to be used interactively. Examples + include invoking _Alpine_ via the -e argument of the Unix _xterm_ + program, or via a menu system. + Note that one typically resumes a suspended _Alpine_ by entering + the Unix _fg_ command, but if this feature is set, it will be + necessary to enter the _exit_ command instead. + _use-system-translation_ + UNIX _Alpine_ only. _Alpine_ normally uses its own internal + software to convert between the multi-byte representation of + characters and the Unicode representation of those same + characters ( see the section on International Character Sets). + It converts from the multi-byte characters your keyboard + produces to Unicode, and from Unicode to the multi-byte + characters your display expects. Alpine also uses its own + internal software to decide how much space on the screen a + particular Unicode character will occupy. + Setting this feature tells _Alpine_ to use the system-supplied + routines to perform these tasks instead. In particular there are + three tasks and three system routines that will be used for + these tasks. + To convert from multi-byte to Unicode the routine + + mbstowcs + is used. To convert from Unicode to multi-byte the routine + + wcrtomb + is used. And to find the screen width a particular Unicode + character will occupy the routine used is + + wcwidth + This feature has been only lightly tested. The internal routines + should normally be used unless you run into a problem that you + think may be solved by using the system routines. Note that your + environment needs to be set up for these routines to work + correctly. In particular, the LANG or LC_CTYPE variable in your + environment will need to be set. + _vertical-folder-list_ + This feature controls an aspect of _Alpine_'s FOLDER LIST + screen. If set, the folders will be listed alphabetically down + the columns rather than across the columns as is the default. + This feature is displayed as "Use Vertical Folder List". + _warn-if-blank-subject_ + This feature affects _Alpine_'s behavior when you send a message + being composed. If this option is set, _Alpine_ will check to + see if the message about to be sent has a subject or not. If + not, you will be asked if you want to send the message anyway. + _warn-if-blank-to-and-cc-and-newsgroups_ + This feature affects _Alpine_'s behavior when you send a message + being composed. If this option is set, _Alpine_ will check to + see if the message about to be sent has either a To address, a + Cc address, or a Newsgroup. If none of these is set, you will be + asked if you want to send the message anyway. + This feature is closely related to fcc-only-without-confirm. + _Alpine_ will normally ask if you want to copy a message only to + the Fcc. This feature also applies to cases where there is a Bcc + but still no To, Cc, or Newsgroup. If the + Fcc-Only-Without-Confirm feature is set and you are sending a + message with only an Fcc, then you won't be asked about sending + with a blank To and Cc and Newsgroups header even if this + feature is set. Similarly, if you have already been asked if you + want to send to the Fcc only and you have answered Yes, then you + won't be asked again about sending with blank To, Cc, and + Newsgroups headers even if this feature is set. + +Hidden Config Variables and Features + + There are several configuration variables and features which are + normally hidden from the user. That is, they don't appear on any of the + configuration screens. Some of these are suppressed because they are + intended to be used by system administrators, and in fact may only be + set in system-wide configuration files. Others are available to users + but are thought to be of such little value to most users that their + presence on the Config screens would cause more confusion than help. + Others are hidden in the Setup/Config screen because they are normally + configured in one of the other configuration screens. For example, all + of the colors are hidden because the normal way to configure colors is + through Setup/Colors not Setup/Config. You may set the feature + expose-hidden-config to cause most of these hidden variables and + features to show up at the bottom of the Setup/Config screen. + + Hidden Variables Not Settable by Users + + These variables are settable only in system-wide configuration files. + * bugs-additional-data + * bugs-address + * bugs-fullname + * forced-abook-entry + * kblock-passwd-count + * local-address + * local-fullname + * mail-directory + * standard-printer + * suggest-address + * suggest-fullname + + Hidden Variables Which are Settable by Users + + These variables are not shown to users but are settable by means of + hand editing the personal configuration file. This first group is + usually maintained by _Alpine_ and there will usually be no reason to + edit them by hand. + * last-version-used + * patterns-filters2 + * patterns-indexcolors + * patterns-roles + * patterns-scores2 + * remote-abook-metafile + + This group is usually correct but may be changed by system managers or + users in special cases. + * disable-these-authenticators + * disable-these-drivers + * last-time-prune-questioned + * new-version-threshold + * remote-abook-history + * remote-abook-validity + * rsh-command + * rsh-open-timeout + * rsh-path + * sendmail-path + * ssh-command + * ssh-open-timeout + * ssh-path + * tcp-open-timeout + * tcp-query-timeout + * tcp-read-warning-timeout + * tcp-write-warning-timeout + * use-function-keys + + System managers are usually interested in setting these in the + system-wide configuration files, though users may set them if they + wish. + * operating-dir + * user-input-timeout + + Hidden Features Which are Settable by Users + + These are _features_ (as opposed to variables) which users or system + administrators may set. Some of them only make sense for + administrators. To turn these on manually, the configuration file + should be edited and the feature added to the _feature-list_ variable. + You may set the feature expose-hidden-config to cause these hidden + features to show up in the Setup/Config screen. They will be at the + bottom of the screen. + * disable-config-cmd + * disable-keyboard-lock-cmd + * disable-password-cmd + * disable-pipes-in-sigs + * disable-pipes-in-templates + * disable-roles-setup-cmd + * disable-roles-sig-edit + * disable-roles-template-edit + * disable-setlocale-collate + * disable-shared-namespaces + * disable-signature-edit-cmd + +Retired Variables and Features + + Variables and features that are no longer used by the current _Alpine_ + version. When an obsolete variable is encountered, its value is applied + to any new corresponding setting. The replaced values include: + + _character-set_ + Replaced by three separate variables: _display-character-set_, + _keyboard-character-set_, and _posting-character-set_. + _compose-mime_ + _elm-style-save_ + Replaced by _saved-msg-name-rule_ + _feature-level_ + Replaced by _feature-list._ + _header-in-reply_ + Replaced by _include-header-in-reply_ in the _feature-list._ + _old-style-reply_ + Replaced by _signature-at-bottom_ in the _feature-list._ + _use-old-unix-format-write_ + No replacement. + _patterns_ + Replaced by four separate patterns variables: _patterns-roles_, + _patterns-filters_, _patterns-scores_, and + _patterns-indexcolors_. Since then, _patterns-filters_ has also + become obsolete and is replaced by _patterns-filters2_; + _patterns-scores_ is replaced by _patterns-scores2_. + _save-by-sender_ + Replaced by _saved-msg-name-rule._ + _show-all-characters_ + No replacement, it always works this way now. + +Tokens for Index and Replying + + This set of special tokens may be used in the index-format option, in + the reply-leadin option, in signature files, in template files used in + roles, and in the folder name that is the target of a Filter Rule. Some + of them aren't available in all situations. + + The tokens are used as they appear below for the _Index-Format_ option, + but they must be surrounded by underscores for the _Reply-Leadin_ + option, in signature and template files, and in the target of Filter + Rules. + + _Tokens Available for all Cases (except Filter Rules)_ + + SUBJECT + This token represents the Subject the sender gave the message. + Alternatives for use in the index screen are SUBJKEY, + SUBJKEYINIT, SUBJECTTEXT, SUBJKEYTEXT, and SUBJKEYINITTEXT. You + may color the subject text in the MESSAGE INDEX screen + differently by using the Index Subject Color and the Index + Opening Color. options available from the Setup Kolor screen. + + FROM + This token represents the personal name (or email address if the + name is unavailable) of the person specified in the message's + "From:" header field. You may color the from text in the MESSAGE + INDEX screen differently by using the Index From Color option + available from the Setup Kolor screen. + + ADDRESS + This is similar to the "FROM" token, only it is always the email + address, never the personal name. For example, "mailbox@domain". + + MAILBOX + This is the same as the "ADDRESS" except that the domain part of + the address is left off. For example, "mailbox". + + SENDER + This token represents the personal name (or email address) of + the person listed in the message's "Sender:" header field. + + TO + This token represents the personal names (or email addresses if + the names are unavailable) of the persons specified in the + message's "To:" header field. + + NEWSANDTO + This token represents the newsgroups from the message's + "Newsgroups:" header field _and_ the personal names (or email + addresses if the names are unavailable) of the persons specified + in the message's "To:" header field. + + TOANDNEWS + Same as "NEWSANDTO" except in the opposite order. + + NEWS + This token represents the newsgroups from the message's + "Newsgroups:" header field. + + CC + This token represents the personal names (or email addresses if + the names are unavailable) of the persons specified in the + message's "Cc:" header field. + + RECIPS + This token represents the personal names (or email addresses if + the names are unavailable) of the persons specified in both the + message's "To:" header field and the message's "Cc:" header + field. + + NEWSANDRECIPS + This token represents the newsgroups from the message's + "Newsgroups:" header field _and_ the personal names (or email + addresses if the names are unavailable) of the persons specified + in the message's "To:" and "Cc:" header fields. + + RECIPSANDNEWS + Same as "NEWSANDRECIPS" except in the opposite order. + + INIT + This token represents the initials from the personal name of the + person specified in the message's "From:" header field. If there + is no personal name, it is blank. + + DATE + This token represents the date on which the message was sent, + according to the "Date" header field. It has the format MMM DD. + For example, "Oct 23". The feature convert-dates-to-localtime, + which adjusts for the timezone the message was sent from, may + have an affect on the value of this token as well as the values + of all of the other DATE or TIME tokens. Some of the DATE and + TIME tokens are displayed in a locale-specific way unless the + option Disable-Index-Locale-Dates is set. + + SMARTDATE + This token represents the date on which the message was sent, + according to the "Date" header field. It is "Today" if the + message was sent today, "Yesterday" for yesterday, "Wednesday" + if it was last Wednesday, and so on. If the message is from last + year and is more than six months old it includes the year, as + well. There is no adjustment made for different time zones, so + you'll get the day the message was sent according to the time + zone the sender was in. See the SMARTDATE alternatives below, as + well. + + SMARTTIME + This token represents the most relevant elements of the date on + which the message was sent (according to the "Date" header + field), in a compact form. If the message was sent today, only + the time is used (e.g. "9:22am", "10:07pm"); if it was sent + during the past week, the day of the week and the hour are used + (e.g. "Wed09am", "Thu10pm"); other dates are given as date, + month, and year (e.g. "23Aug00", "9Apr98"). There is no + adjustment made for different time zones, so you'll get the + day/time the message was sent according to the time zone the + sender was in. + + SMARTDATETIME + This is a combination of SMARTDATE and SMARTTIME. It is + SMARTDATE unless the SMARTDATE value is "Today", in which case + it is SMARTTIME. See the SMARTDATETIME alternatives below, as + well. + + DATEISO + This token represents the date on which the message was sent, + according to the "Date" header field. It has the format + YYYY-MM-DD. For example, "1998-10-23". + + SHORTDATEISO + This token represents the date on which the message was sent, + according to the "Date" header field. It has the format + YY-MM-DD. For example, "98-10-23". + + SHORTDATE1 + This token represents the date on which the message was sent, + according to the "Date" header field. It has the format + MM/DD/YY. For example, "10/23/98". + + SHORTDATE2 + This token represents the date on which the message was sent, + according to the "Date" header field. It has the format + DD/MM/YY. For example, "23/10/98". + + SHORTDATE3 + This token represents the date on which the message was sent, + according to the "Date" header field. It has the format + DD.MM.YY. For example, "23.10.98". + + SHORTDATE4 + This token represents the date on which the message was sent, + according to the "Date" header field. It has the format + YY.MM.DD. For example, "98.10.23". + + LONGDATE + This token represents the date on which the message was sent, + according to the "Date" header field. It has the format MMM DD, + YYYY. For example, "Oct 23, 1998". + + SMARTDATE alternatives + There are several versions of SMARTDATE which are all the same + except for the way they format dates far in the past. SMARTDATE + formats the date using the information from your locale settings + to format the date string. It may end up formatting dates so + that they look like DATEISO tokens, or SHORTDATE2 tokens, or + something else entirely. The feature convert-dates-to-localtime + may have an affect on the values of these tokens. If you want + more control you may use one of the following. + + SMARTDATE + If the option Disable-Index-Locale-Dates is not set then + this will be locale specific. Control this with the + LC_TIME locale setting on a UNIX system. On Windows the + Regional Options control panel may be used to set the + Short date format. At the programming level, the strftime + routine is what _Alpine_ uses to print the date. If the + Disable-Index-Locale-Dates option is set then this is + equivalent to SMARTDATES1. + + SMARTDATEISO + DATEISO format. See text above. + + SMARTDATESHORTISO + SHORTDATEISO format. + + SMARTDATES1 + SHORTDATE1 format. + + SMARTDATES2 + SHORTDATE2 format. + + SMARTDATES3 + SHORTDATE3 format. + + SMARTDATES4 + SHORTDATE4 format. + + SMARTDATETIME alternatives + There are several versions of SMARTDATETIME which are all very + similar. The ones which end in 24 use a 24-hour clock for + Today's messages instead of a 12-hour clock. The other variation + is for the way they format dates far in the past. SMARTDATETIME + and SMARTDATETIME24 format the date using the information from + your locale settings to format the date string. It may end up + formatting dates so that they look like DATEISO tokens, or + SHORTDATE2 tokens, or something else entirely. The feature + convert-dates-to-localtime may have an affect on the values of + these tokens. The possible choices are: + + SMARTDATETIME + Locale specific. Control this with the LC_TIME locale + setting on a UNIX system. On Windows the Regional Options + control panel may be used to set the Short date format. At + the programming level, the strftime routine is what + _Alpine_ uses to print the date. + + SMARTDATETIME + If the option Disable-Index-Locale-Dates is not set then + this will be locale specific. Control this with the + LC_TIME locale setting on a UNIX system. On Windows the + Regional Options control panel may be used to set the + Short date format. At the programming level, the strftime + routine is what _Alpine_ uses to print the date. If the + Disable-Index-Locale-Dates option is set then this is + equivalent to SMARTDATETIMES1. + + SMARTDATETIME24 + Use TIME24 for Today + + SMARTDATETIMEISO + DATEISO format. See text above. + + SMARTDATETIMEISO24 + Use TIME24 for Today + + SMARTDATETIMESHORTISO + SHORTDATEISO format. + + SMARTDATETIMESHORTISO24 + Use TIME24 for Today + + SMARTDATETIMES1 + SHORTDATE1 format. + + SMARTDATETIMES124 + Use TIME24 for Today + + SMARTDATETIMES2 + SHORTDATE2 format. + + SMARTDATETIMES224 + Use TIME24 for Today + + SMARTDATETIMES3 + SHORTDATE3 format. + + SMARTDATETIMES324 + Use TIME24 for Today + + SMARTDATETIMES4 + SHORTDATE4 format. + + SMARTDATETIMES424 + Use TIME24 for Today + + DAYDATE + This token represents the date on which the message was sent, + according to the "Date" header field. It looks like "Sat, 23 Oct + 1998". This token is never converted in any locale-specific way. + + PREFDATE + This token represents the date on which the message was sent, + according to the "Date" header field. It is your operating + system's idea of the preferred date representation for the + current locale. Internally it uses the %x version of the date + from the strftime routine. + + PREFTIME + This token represents the time at which the message was sent, + according to the "Date" header field. It is the preferred time + representation for the current locale. Internally it uses the %X + version of the time from the strftime routine. + + PREFDATETIME + This token represents the date and time at which the message was + sent, according to the "Date" header field. It is the preferred + date and time representation for the current locale. Internally + it uses the %c version of the time from the strftime routine. + + DAY + This token represents the day of the month on which the message + was sent, according to the "Date" header field. For example, + "23" or "9". + + DAY2DIGIT + This token represents the day of the month on which the message + was sent, according to the "Date" header field. For example, + "23" or "09". It is always 2 digits. + + DAYORDINAL + This token represents the ordinal number which is the day of the + month on which the message was sent, according to the "Date" + header field. For example, "23rd" or "9th". + + DAYOFWEEK + This token represents the day of the week on which the message + was sent, according to the "Date" header field. For example, + "Sunday" or "Wednesday". + + DAYOFWEEKABBREV + This token represents the day of the week on which the message + was sent, according to the "Date" header field. For example, + "Sun" or "Wed". + + MONTHABBREV + This token represents the month the message was sent, according + to the "Date" header field. For example, "Oct". + + MONTHLONG + This token represents the month in which the message was sent, + according to the "Date" header field. For example, "October". + + MONTH + This token represents the month in which the message was sent, + according to the "Date" header field. For example, "10" or "9". + + MONTH2DIGIT + This token represents the month in which the message was sent, + according to the "Date" header field. For example, "10" or "09". + It is always 2 digits. + + YEAR + This token represents the year the message was sent, according + to the "Date" header field. For example, "1998" or "2001". + + YEAR2DIGIT + This token represents the year the message was sent, according + to the "Date" header field. For example, "98" or "01". It is + always 2 digits. + + TIME24 + This token represents the time at which the message was sent, + according to the "Date" header field. There is no adjustment + made for different time zones, so you'll get the time the + message was sent according to the time zone the sender was in. + It has the format HH:MM. For example, "17:28". + + TIME12 + This token represents the time at which the message was sent, + according to the "Date" header field. This time is for a 12 hour + clock. It has the format HH:MMpm. For example, "5:28pm" or + "11:13am". + + TIMEZONE + This token represents the numeric timezone from the "Date" + header field. It has the format [+-]HHMM. For example, "-0800". + + _Tokens Available Only for Index-Format_ + + MSGNO + This token represents the message's current position in the + folder which, of course, may change as the folder is sorted or + new mail arrives. + + STATUS + This token represents a three character wide field displaying + various aspects of the message's state. The first character is + either blank, a '*' for message marked Important, or a '+' + indicating a message addressed directly to you (as opposed to + your having received it via a mailing list, for example). When + the feature mark-for-cc is set, if the first character would + have been blank then it will instead be a '-' if the message is + cc'd to you. The second character is typically blank, though the + arrow cursor may occupy it if either the assume-slow-link or the + force-arrow-cursor feature is set (or you actually are on a slow + link). The third character is either D (Deleted), A (Answered), + N (New), or blank. + + If you are using a threaded view of the index and this message + is at the top of a collapsed portion of a thread, then this + token refers to all of the messages in the collapsed portion of + the thread instead of just the top message. The first character + will be a '*' if _any_ of the messages in the thread are marked + Important, else a '+' if any of the messages are addressed to + you, else a '-' if any of the messages are cc'd to you. The + third character will be a 'D' if _all_ of the messages in the + collapsed thread are marked deleted, an 'A' if _all_ of the + messages in the collapsed thread are marked answered, it will be + an 'N' if any of the messages are undeleted and unseen, and it + will be blank otherwise. + + FULLSTATUS + This token represents a less abbreviated alternative to the + "STATUS" token. It is six characters wide. The first character + is '+', '-', or blank, the second blank, the third either '*' or + blank, the fourth N or blank, the fifth A or blank, and the + sixth character is either D or blank. + + If you are using a threaded view of the index and this message + is at the top of a collapsed portion of a thread, then this + token refers to all of the messages in the collapsed portion of + the thread instead of just the top message. The first character + is '+', '-', or blank depending on whether _any_ of the messages + in the collapsed thread are addressed to you or cc'd to you. The + third character will be '*' if any of the messages are marked + Important. The fourth character will be 'N' if all of the + messages in the thread are New, else 'n' if some of the messages + in the thread are New, else blank. The fifth character will be + 'A' or 'a' or blank, and the sixth character will be 'D' or 'd' + or blank. + + IMAPSTATUS + This token represents an even less abbreviated alternative to + the "STATUS" token. It differs from "FULLSTATUS" in only the + fourth character which is an 'N' if the message is new to this + folder since the last time it was opened _and_ it has not been + viewed, an 'R' (Recent) if the message is new to the folder and + has been viewed, a 'U' (Unseen) if the message is not new to the + folder since it was last opened _but_ has not been viewed, or a + blank if the message has been in the folder since it was last + opened and has been viewed. + + If you are using a threaded view of the index and this message + is at the top of a collapsed portion of a thread, then the + fourth character will be 'N' if all of the messages in the + thread are unseen and recent; else 'n' if some of the messages + in the thread are unseen and recent; else 'U' if all of the + messages in the thread are unseen and not recent; else 'u' if + some of the messages in the thread are unseen and not recent; + else 'R' if all of the messages in the thread are seen and + recent; else 'r' if some of the messages in the thread are seen + and recent; else blank. + + SHORTIMAPSTATUS + This is the same as the last four of the six characters of + IMAPSTATUS, so the '+' To Me information will be missing. + + SIZE + This token represents the total size, in bytes, of the message. + If a "K" (Kilobyte) follows the number, the size is + approximately 1,000 times that many bytes (rounded to the + nearest 1,000). If an "M" (Megabyte) follows the number, the + size is approximately 1,000,000 times that many bytes. Commas + are not used in this field. This field is seven characters wide, + including the enclosing parentheses. Sizes are rounded when "K" + or "M" is present. The progression of sizes used looks like: + + 0 1 ... 9999 10K ... 999K 1.0M ... 99.9M 100M ... 2000M + + SIZECOMMA + This token represents the total size, in bytes, of the message. + If a "K" (Kilobyte) follows the number, the size is + approximately 1,000 times that many bytes (rounded to the + nearest 1,000). If an "M" (Megabyte) follows the number, the + size is approximately 1,000,000 times that many bytes. Commas + are used if the number shown is 1,000 or greater. The SIZECOMMA + field is one character wider than the SIZE field. Sizes are + rounded when "K" or "M" is present. The progression of sizes + used looks like: + + 0 1 ... 99,999 100K ... 9,999K 10.0M ... 999.9M 1,000M ... 2,000M + + KSIZE + This token represents the total size of the message, expressed + in kilobytes or megabytes, as most appropriate. These are 1,024 + byte kilobytes and 1,024 x 1,024 byte megabytes. The progression + of sizes used looks like: + + 0K 1K ... 1023K 1.0M ... 99.9M 100M ... 2047M + + SIZENARROW + This token represents the total size, in bytes, of the message. + If a "K" (Kilobyte) follows the number, the size is + approximately 1,000 times that many bytes. If an "M" (Megabyte) + follows the number, the size is approximately 1,000,000 times + that many bytes. If a "G" (Gigabyte) follows the number, the + size is approximately 1,000,000,000 times that many bytes. This + field uses only five characters of screen width, including the + enclosing parentheses. The progression of sizes used looks like: + + 0 1 ... 999 1K ... 99K .1M ... .9M 1M ... 99M .1G ... .9G 1G 2G + + DESCRIPSIZE + This token is intended to represent a more useful description of + the message than just its size, but it isn't very useful at this + point. The plus sign in this view means there are attachments. + Note that including this token in the "Index-Format" could slow + down the display a little while _Alpine_ collects the necessary + information. + + SUBJKEY + This token is the same as the SUBJECT token unless keywords are + set for the message. In that case, a list of keywords enclosed + in braces will be prepended to the subject of the message. Only + those keywords that you have defined in your Keywords option in + Setup/Config are considered in the list. In other words, + keywords that have been set by some other means, perhaps by + another email program, won't show up unless included in + Keywords. Having this set in the Index-Format will also cause + the keywords to be prepended to the subject in the MESSAGE TEXT + screen. If you have given a keyword a nickname (keywords), that + nickname is displayed instead of the actual keyword. The + keyword-surrounding-chars option may be used to modify this + token slightly. It is also possible to color keywords in the + index using the Setup/Kolor screen. + + SUBJKEYINIT + This token is the same as the SUBJKEY token except that instead + of prepending a list of keywords to the subject, a list of first + initials of keywords will be prepended instead. For example, if + a message has the keywords _Work_ and _Now_ set (or Work and Now + are the _Alpine_ nicknames of keywords which are set) then the + SUBJKEY token would cause a result like + + {Work Now} actual subject + + whereas the SUBJKEYINIT token would give + + {WN} actual subject + + Only those keywords that you have defined in your Keywords + option in Setup/Config are considered in the list. In other + words, keywords that have been set by some other means, perhaps + by another email program, won't show up unless included in + Keywords. The keyword-surrounding-chars option may be used to + modify this token slightly. It is also possible to color + keywords in the index using the Setup/Kolor screen. + + SUBJECTTEXT + Same as SUBJECT but if there is room in the Subject field for + more text, the opening part of the text of the message is + displayed after the subject. The time needed to fetch the text + may cause a performance problem which can, of course, be avoided + by using the SUBJECT version of the Subject instead. You may + color this opening text differently by using the Index Opening + Color option available from the Setup Kolor screen. You may + adjust the characters that are displayed between the Subject and + the opening text with the option Opening-Text-Separator-Chars. + + SUBJKEYTEXT + Same as SUBJKEY but with the opening message text. + + SUBJKEYINITTEXT + Same as SUBJKEYINIT but with the opening message text. + + OPENINGTEXT + This is similar to SUBJECTTEXT. Instead of combining the Subject + and the opening text in a single field in the index screen this + token allows you to allocate a separate column just for the + opening text of the message. The time needed to fetch this text + may cause a performance problem. You may color this opening text + differently by using the Index Opening Color option available + from the Setup Kolor screen. + + OPENINGTEXTNQ + This is very similar to OPENINGTEXT. The NQ stands for No + Quotes. The only difference is that quoted text (lines beginning + with >) is deleted. For some messages this may be confusing. For + example, a message might have a line preceding some quoted text + that reads something like "On May 8th person A said." That no + longer makes sense after the quoted text is deleted and it will + appear that person A said whatever the text after the quote is, + even though that is really person B talking. + + KEY + This is a space-delimited list of keywords that are set for the + message. Only those keywords that you have defined in your + Keywords option in Setup/Config are considered in the list. In + other words, keywords that have been set by some other means, + perhaps by another email program, won't show up unless included + in Keywords. If you have given a keyword a nickname that + nickname is displayed instead of the actual keyword. It is also + possible to color keywords in the index using the Setup/Kolor + screen. This token defaults to an arbitrary width of 5. You + should set it to whatever width suits you using something like + KEY(17) in the Index-Format. + + KEYINIT + This is a list of keyword initials that are set for the message. + If you have given a keyword a nickname the initial of that + nickname is displayed instead of the initial of the actual + keyword. It is also possible to color keyword initials in the + index using the Setup/Kolor screen. This token defaults to an + arbitrary width of 2. You should set it to whatever width suits + you using something like KEYINIT(3) in the Index-Format. + + PRIORITY + The X-Priority header is a non-standard header that is used in a + somewhat standard way by many mail programs. _Alpine_ expects + the value of this header to be a digit with a value from 1 to 5, + with 1 being the highest priority and 5 the lowest priority. + Since this priority is something that the sender sets it is only + an indication of the priority that the sender attaches to the + mail and it is therefore almost totally unreliable for use as a + filtering criterion. This token will display the numeric value + of the priority if it is between 1 and 5. It will be suppressed + (blank) if the value is 3, which is normal priority. It is also + possible to set the color of the PRIORITY field. By default the + token is colored the same as the index line it is part of. You + may set it to be another color with the Index Priority Colors + options available from the Setup Kolor screen. + + PRIORITYALPHA + This is a more verbose interpretation of the X-Priority field. + Once again nothing is displayed unless the value of the field is + 1, 2, 4, or 5. The values displayed for those values are: + + 1 Highest + 2 High + 4 Low + 5 Lowest + + You may color this token with the Index Priority Colors options. + + PRIORITY! + This is a one character, non-numeric version of the X-Priority + field. If the value of the X-Priority header is 1 or 2 an + exclamation point is displayed. If the value is 4 or 5 a "v" + (think down arrow) is displayed. You may color this token with + the Index Priority Colors options. + + ATT + This is a one column wide field which represents the number of + attachments a message has. It will be blank if there are no + attachments, a single digit for one to nine attachments, or an + asterisk for more than nine. Note that including this token in + the "Index-Format" could slow down the display a little while + _Alpine_ collects the necessary information. + + FROMORTO + This token represents _either_ the personal name (or email + address) of the person listed in the message's "From:" header + field, _or_, if that address is yours or one of your alternate + addresses, the first person specified in the message's "To:" + header field with the prefix "To: " prepended. If the from + address is yours and there is also no "To" address, _Alpine_ + will use the address on the "Cc" line. If there is no address + there, either, _Alpine_ will look for a newsgroup name from the + "Newsgroups" header field and put that after the "To: " prefix. + + FROMORTONOTNEWS + This is almost the same as _FROMORTO_. The difference is that + newsgroups aren't considered. When a message is from you, + doesn't have a To or Cc, and does have a Newsgroups header; this + token will be your name instead of the name of the newsgroup + (like it would be with FROMORTO). + + TEXT + This is a different sort of token. It allows you to display a + label within each index line. It will be the same fixed text for + each line. It is different from all the other tokens in that + there is no space column displayed after this token. Instead, it + is butted up against the following field. It also has a + different syntax. The text to display is given following a colon + after the word "TEXT". For example, + + TEXT:abc= + + would insert the literal text "abc=" (without the quotes) into + the index display line. You must quote the text if it includes + space characters, like + + TEXT:"abc = " + + HEADER + This allows you to display the text from a particular header + line in the message. The syntax for this token is substantially + different from all the others in order that you might be able to + display a portion of the text following a particular header. The + header name you are interested in is given following a colon + after the word "HEADER". For example, + + HEADER:X-Spam + + would display the text of the X-Spam header, if any. Like for + other index tokens a width field may (and probably should) + follow this. + + HEADER:X-Spam(10) + + displays the first ten characters of the X-Spam header. Unlike + other index tokens, the syntax for HEADER is more flexible. An + optional second argument comes after a comma inside the + parentheses. It specifies the "field" number. By default, the + field separator is a space character. No extra space characters + are allowed in the argument list. + + HEADER:X-Spam(10,2) + + would display the second field, left-justified, in a 10 + character wide field. The second field would consist of all the + text after the first space up to the next space or the end of + the header. The default field number is zero, which stands for + the entire line. There is also an optional third argument which + is a list of field separators. It defaults to a space character. + The example + + HEADER:X-Spam(10,2,:% ) + + would cause the field separators to be any of colon, percent, or + space (there is a space character between the percent and the + right parenthesis). The first field runs from the start of the + header value up to the first colon, percent, or space; the + second goes from there to the next; and so on. In order to use a + comma character as a field separator you must escape it by + preceding it with a backslash (\). The same is true of the + backslash character itself. There is one further optional + argument. It is an R or an L to specify right or left adjustment + of the text within the field. The default is to left justify, + however if you are displaying numbers you might prefer to right + justify. + + Here's an example of a SpamAssassin header. The exact look of + the header will vary, but if your incoming mail contains headers + that look like the following + + X-Spam-Status: Yes, hits=10.6 tagged_above=-999.0 required=7.0 + tests=BAYE... + + you might want to display the hits value. The first field starts + with the Y in Yes. To get what you're interested in you might + use "=" and space as the field separators and display the third + field, like + + HEADER:X-Spam-Status(4,3,= ) + + or maybe you would break at the dot instead + + HEADER:X-Spam-Status(2,2,=.,R) + + Another example we've seen has headers that look like + + X-Spam: Gauge=IIIIIII, Probability=7%, Report=... + + Because there are two equals and a comma before the 7% and a + comma after it, the token + + HEADER:X-Spam-Status(3,4,=\,,R) + + should display the probability (for example 7% or 83%) right + justified in a 3-wide field. + + ARROW + This gives an alternative way to display the current message in + the MESSAGE INDEX screen. Usually the current message is + indicated by the line being shown in reverse video. Instead, if + the ARROW token is included in your Index-Format, the current + line will include an "arrow" that looks like + + -> + + in the ARROW token's field. For all of the non-current messages, + the ARROW field will be filled with blanks. If you use the + fixed-field width feature the length of the "arrow" may be + adjusted. The arrow will be drawn as width-1 dashes followed by + a greater than sign. For example, if you use ARROW(3) you will + get + + --> + + and ARROW(1) will give you just + + > + + It is also possible to set the color of the ARROW field. By + default (and for non-current messages) the arrow is colored the + same as the index line it is part of. You may set it to be + another color with the Index Arrow Color option available from + the Setup Kolor screen. + + SCORE + This gives the score of each message. This will be six columns + wide to accomodate the widest possible score. You will probably + want to use the Index-Format fixed-field width feature to limit + the width of the field to the widest score that you use (e.g. + SCORE(3) if your scores are always between 0 and 999). If you + have not defined any score rules the scores will all be zero. If + any of your score rules contain AllText or BodyText patterns + then including SCORE in the Index-Format may slow down the + display of the MESSAGE INDEX screen. + + _Tokens Available for all but Index-Format_ + + CURNEWS + This token represents the current newsgroup if there is one. For + example, "comp.mail.pine". + + MSGID + This token represents the message ID of the message. This token + does not work with Filter Rule folder names. + + CURDATE + This token represents the current date. It has the format MMM + DD. For example, "Oct 23". + + CURDATEISO + This token represents the current date. It has the format + YYYY-MM-DD. For example, "1998-10-23". + + CURDATEISOS + This token represents the current date. It has the format + YY-MM-DD. For example, "98-10-23". + + CURPREFDATE + This token represents the current date. It is your operating + system's idea of the preferred date representation for the + current locale. Internally it uses the %x version of the date + from the strftime routine. + + CURPREFTIME + This token represents the current time. It is the preferred time + representation for the current locale. Internally it uses the %X + version of the time from the strftime routine. + + CURPREFDATETIME + This token represents the current date and time. It is the + preferred date and time representation for the current locale. + Internally it uses the %c version of the time from the strftime + routine. + + CURTIME24 + This token represents the current time. It has the format HH:MM. + For example, "17:28". + + CURTIME12 + This token represents the current time. This time is for a 12 + hour clock. It has the format HH:MMpm. For example, "5:28pm" or + "11:13am". + + CURDAY + This token represents the current day of the month. For example, + "23" or "9". + + CURDAY2DIGIT + This token represents the current day of the month. For example, + "23" or "09". It is always 2 digits. + + CURDAYOFWEEK + This token represents the current day of the week. For example, + "Sunday" or "Wednesday". + + CURDAYOFWEEKABBREV + This token represents the current day of the week. For example, + "Sun" or "Wed". + + CURMONTH + This token represents the current month. For example, "10" or + "9". + + CURMONTH2DIGIT + This token represents the current month. For example, "10" or + "09". It is always 2 digits. + + CURMONTHLONG + This token represents the current month. For example, "October". + + CURMONTHABBREV + This token represents the current month. For example, "Oct". + + CURYEAR + This token represents the current year. For example, "1998" or + "2001". + + CURYEAR2DIGIT + This token represents the current year. For example, "98" or + "01". It is always 2 digits. + + LASTMONTH + This token represents last month. For example, if this is + November (the 11th month), it is equal to "10" or if this is + October (the 10th month), it is "9". It is possible that this + and the other tokens beginning with LASTMONTH below could be + useful when used with a Filtering Rule that has the "Beginning + of Month" option set. + + LASTMONTH2DIGIT + This token represents last month. For example, if this is + November (the 11th month), it is equal to "10" or if this is + October (the 10th month), it is "09". It is always 2 digits. + + LASTMONTHLONG + This token represents last month. For example, if this is + November the value is "October". + + LASTMONTHABBREV + This token represents last month. For example, if this is + November the value is "Oct". + + LASTMONTHYEAR + This token represents what the year was a month ago. For + example, if this is October, 1998, it is "1998". If this is + January, 1998, it is "1997". + + LASTMONTHYEAR2DIGIT + This token represents what the year was a month ago. For + example, if this is October, 1998, it is "98". If this is + January, 1998, it is "97". + + LASTYEAR + This token represents last year. For example, if this is 1998, + it equals "1997". It is possible that this could be useful when + used with a Filtering Rule that has the "Beginning of Year" + option set. + + LASTYEAR2DIGIT + This token represents last year. For example, if this is 1998, + it equals "97". It is always 2 digits. + + ROLENICK + This token represents the nickname of the role currently being + used. If no role is being used, then no text will be printed for + this token. This token does not work with Filter Rule folder + names. + + _Token Available Only for Reply-Leadin_ + + See the help for the Reply-Leadin option, to see why you might want to + use this. Since the _Reply-Leadin_ contains free text this token must + be surrounded by underscores when used. + + NEWLINE + This is an end of line marker. + + _Token Available Only for Templates and Signatures_ + + CURSORPOS + This token is different from the others. When it is replaced it + is replaced with nothing, but it sets a _Alpine_ internal + variable which tells the composer to start with the cursor + positioned at the position where this token was. If both the + template file and the signature file contain a "CURSORPOS" + token, then the position in the template file is used. If there + is a template file and neither it nor the signature file + contains a "CURSORPOS" token, then the cursor is positioned + after the end of the contents of the template file when the + composer starts up. + +Conditional Inclusion of Text for Reply-Leadin, Signatures, and Templates + + Conditional text inclusion may be used with the Reply-Leadin option, in + signature files, and in template files used in roles. It may _not_ be + used with the _Index-Format_ option. + + There is a limited if-else capability for including text. The if-else + condition is based on whether or not a given token would result in + replacement text you specify. The syntax of this conditional inclusion + is + + _token_(match_this, if_matched [ , if_not_matched ] ) + + The left parenthesis must follow the underscore immediately, with no + intervening space. It means the token is expanded and the results of + that expansion are compared against the "match_this" argument. If there + is an exact match, then the "if_matched" text is used as the + replacement text. Otherwise, the "if_not_matched" text is used. One of + the most useful values for the "match_this" argument is the empty + string, "". In that case the expansion is compared against the empty + string. + + Here's an example to make it clearer. This text could be included in + one of your template files: + + _NEWS_("", "I'm replying to email","I'm replying to news") + + If that is included in a template file which you are using while + replying to a message (because you chose to use the role it was part + of), and that message has a newsgroup header and a newsgroup in that + header, then the text + + I'm replying to news + + will be included in the message you are about to compose. On the other + hand, if the message you are replying to does not have a newsgroup, + then the text + + I'm replying to email + + would be included instead. This would also work in signature files and + in the "Reply-Leadin" option. If the "match_this", "if_matched", or + "if_not_matched" arguments contain spaces, parentheses, or commas; they + have to be quoted with double quotation marks (like in the example + above). If you want to include a literal quote in the text you must + escape the quote by preceding it with a backslash character. If you + want to include a literal backslash character you must escape it by + preceding it with another backslash. + + The comma followed by "if_not_matched" is optional. If there is no + "if_not_matched" present then no text is included if the not_matched + case is true. Here's another example: + + _NEWS_("", "", "This msg was seen in group: _NEWS_.") + + Here you can see that tokens may appear in the arguments. The same is + true for tokens with the conditional parentheses. They may appear in + arguments, though you do have to be careful to get the quoting and + escaping of nested double quotes correct. If this was in the signature + file being used and you were replying to a message sent to + comp.mail.pine the resulting text would be: + + This msg was seen in group: comp.mail.pine. + + If you were replying to a message which wasn't sent to any newsgroup + the resulting text would be a single blank line. The reason you'd get a + blank line is because the end of the line is outside of the + conditional, so is always included. If you wanted to get rid of that + blank line you could do so by moving the end of line inside the + conditional. In other words, it's ok to have multi-line "if_matched" or + "if_not_matched" arguments. The text just continues until the next + double quotation, even if it's not on the same line. + + Here's one more (contrived) example illustrating a matching argument + which is not the empty string. + + _SMARTDATE_("Today", _SMARTDATE_, "On _DATE_") _FROM_ wrote: + + If this was the value of your "Reply-Leadin" option and you were + replying to a message which was sent today, then the value of the + "Reply-Leadin" would be + + Today Fred Flintstone wrote: + + But if you were replying to a message sent on Oct. 27 (and that wasn't + today) you would get + + On Oct 27 Fred Flintstone wrote: + +Per Server Directory Configuration + + This is only available if _Alpine_ was built with LDAP support. If + that's the case, there will be a Directory option underneath the Setup + command on the Main Menu. Each server that is defined there has several + configuration variables which control the behavior when using it. + _ldap-server_ + This is the name of the host where an LDAP server is running. + To find out whether your organization has its own LDAP server, + contact its computing support staff. + _search-base_ + This is the search base to be used on this server. It functions + as a filter by restricting your searches in the LDAP server + database to the specified contents of the specified fields. + Without it, searches submitted to this directory server may + fail. It might be something like: + O = <Your Organization Name>, C = US + + or it might be blank. (Some LDAP servers actually ignore + anything specified here.) + If in doubt what parameters you should specify here, contact the + maintainers of the LDAP server. + _port_ + This is the TCP port number to be used with this LDAP server. If + you leave this blank port 389 will be used. + _nickname_ + This is a nickname to be used in displays. If you don't supply a + nickname the server name from "ldap-server" will be used + instead. This option is strictly for your convenience. + _use-implicitly-from-composer_ + Set this feature to have lookups done to this server implicitly + from the composer. If an address doesn't look like a + fully-qualified address, it will be looked up in your address + books, and if it doesn't match a nickname there, then it will be + looked up on the LDAP servers which have this feature set. The + lookups will also be done when using the address completion + feature (TAB command) in the composer if any of the serves have + this feature set. Also see the LDAP feature + lookup-addrbook-contents and the Setup/Config feature + ldap-result-to-addrbook-add. + _lookup-addrbook-contents_ + Normally implicit LDAP lookups from the composer are done only + for the strings you type in from the composer screen. In other + words, you type in something in the To or CC field and press + return, then the string is looked up. First that string is + looked up in your address books. If a match is found there, then + the results of that match are looked up again. If you place a + string in your address book that you want to have looked up on + the LDAP directory server, you need to turn on this feature. If + you set this feature for a server, you almost always will also + want to set the use-implicitly-from-composer feature. An example + might serve to best illustrate this feature. + If an LDAP lookup of "William Clinton" normally returns an entry + with an address of pres@whitehouse.gov, then you might put an + entry in your address book that looks like: + Nickname Address + bill "William Clinton" + + Now, when you type "bill" into an address field in the composer + _Alpine_ will find the "bill" entry in your address book. It will + replace "bill" with "William Clinton". It will then search for + an entry with that nickname in your address book and not find + one. If this feature is set, _Alpine_ will then attempt to + lookup "William Clinton" on the LDAP server and find the entry + with address pres@whitehouse.gov. + A better way to accomplish the same thing is probably to use the + feature save-search-criteria-not-result. + _save-search-criteria-not-result_ + Normally when you save the results of an LDAP directory lookup + to your address book the _results_ of the lookup are saved. If + this feature is set and the entry being saved was found on this + directory server, then the search _criteria_ is saved instead of + the _results_ of the search. When this address book entry is + used in the future, instead of copying the results from the + address book the directory lookup will be done again. This could + be useful if the copied result might become stale because the + data on the directory server changes (for example, the entry's + email address changes). You probably don't want to set this + feature if the server is at all slow or unreliable. + The way this actually works is that instead of saving the email + address in your address book, _Alpine_ saves enough information + to look up the same directory entry again. In particular, it + saves the server name and the distinguished name of the entry. + It's possible that the server administrators might change the + format of distinguished names on the server, or that the entry + might be removed from the server. If _Alpine_ notices this, you + will be warned and a backup copy of the email address will be + used. You may want to create a new entry in this case, since you + will get the annoying warning every time you use the old entry. + You may do that by Saving the entry to a new nickname in the + same address book. You will be asked whether or not you want to + use the backup email address. + A related feature in the Setup/Config screen is + ldap-result-to-addrbook-add. + _disable-ad-hoc-space-substitution_ + Spaces in your input are normally handled specially. Each space + character is replaced by + * <SPACE> + + in the search query (but not by "* <SPACE> *"). The reason this + is done is so the input string + Greg Donald + + (which is converted to "Greg* Donald") will match the names + "Greg Donald", "Gregory Donald", "Greg F. Donald", and "Gregory + F Donald"; but it won't match "Greg McDonald". If the + "Search-Rule" you were using was "begins-with", then it would + also match the name "Greg Donaldson". + Turning on this feature will disable this substitution. + _search-type_ + This affects the way that LDAP searches are done. In particular, + this tells the server where to look for the string to be + matched. If set to "name" then the string that is being searched + for will be compared with the string in the "Name" field on the + server (technically, it is the "commonname" field on the + server). "Surname" means we're looking for a match in the + "Surname" field on the server (actually the "sn" field). + "Givenname" really is "givenname" and "email" is the electronic + mail address (this is actually the field called "mail" or + "electronicmail" on the server). The other three types are + combinations of the types listed so far. "Name-or-email" means + the string should appear in either the "name" field OR the + "email" field. Likewise, "surname-or-givenname" means "surname" + OR "givenname" and "sur-or-given-or-name-or-email" means the + obvious thing. + This search _type_ is combined with the search rule to form the + actual search query. + The usual default value for this option is + "sur-or-given-or-name-or-email". This type of search may be slow + on some servers. Try "name-or-email", which is often faster, or + just "name" if the performance seems to be a problem. + Some servers have been configured with different attribute names + for these four fields. In other words, instead of using the + attribute name "mail" for the email address field, the server + might be configured to use something else, for example, + "rfc822mail" or "internetemailaddress". _Alpine_ can be + configured to use these different attribute names by using the + four per-server configuration options: + + email-attribute + + name-attribute + + surname-attribute + + givenname-attribute + _search-rule_ + This affects the way that LDAP searches are done. If set to + "equals" then only exact matches count. "Contains" means that + the string you type in is a substring of what you are matching + against. "Begins-with" and "ends-with" mean that the string + starts or ends with the string you type in. + Spaces in your input are normally handled specially, but you can + turn that special handling off with the + disable-ad-hoc-space-substitution feature. + The usual default value for this option is _begins-with_. + _email-attribute_ + This is the name of the attribute which is searched for when + looking for an email address. The default value for this option + is "mail" or "electronicmail". If the server you are using uses + a different attribute name for the email address, put that + attribute name here. + This will affect the search filter used if your Search-Type is + one that contains a search for "email". It will also cause the + attribute value matching this attribute name to be used as the + email address when you look up an entry from the composer. + _name-attribute_ + This is the name of the attribute which is searched for when + looking for the name of the entry. The default value for this + option is "cn", which stands for common name. If the server you + are using uses a different attribute name for the name, put that + attribute name here. This will affect the search filter used if + your Search-Type is one that contains a search for "name". + _surname-attribute_ + This is the name of the attribute which is searched for when + looking for the surname of the entry. The default value for this + option is "sn". If the server you are using uses a different + attribute name for the surname, put that attribute name here. + This will affect the search filter used if your Search-Type is + one that contains a search for "surname". + _givenname-attribute_ + This is the name of the attribute which is searched for when + looking for the given name of the entry. The default value for + this option is "givenname". If the server you are using uses a + different attribute name for the given name, put that attribute + name here. This will affect the search filter used if your + Search-Type is one that contains a search for "givenname". + _timelimit_ + This places a limit on the number of seconds the LDAP search + will continue. The default is 30 seconds. A value of 0 means no + limit. Note that some servers may place limits of their own on + searches. + _sizelimit_ + This places a limit on the number of entries returned by the + LDAP server. A value of 0 means no limit. The default is 0. Note + that some servers may place limits of their own on searches. + _custom-search-filter_ + This one is for advanced users only! If you define this, then + the search-type and search-rule defined are both ignored. + However, the feature disable-ad-hoc-space-substitution is still + in effect. That is, the space substitution will take place even + in a custom filter unless you disable it. + If your LDAP service stops working and you suspect it might be + because of your custom filter, just delete this filter and try + using the _search-type_ and _search-rule_ instead. Another + option that sometimes causes trouble is the search-base option. + This variable may be set to the string representation of an LDAP + search filter (see RFC1960). In the places where you want the + address string to be substituted in, put a '%s' in this filter + string. Here are some examples: + A "Search-Type" of "name" with "Search-Rule" of "begins-with" is + equivalent to the "custom-search-filter" + (cn=%s*) + + When you try to match against the string "string" the program + replaces the "%s" with "string" (without the quotes). You may + have multiple "%s"'s and they will all be replaced with the + string. There is a limit of 10 "%s"'s. + A "Search-Type" of "name-or-email" with "Search-Rule" of + "contains" is equivalent to + (|(cn=*%s*)(mail=*%s*)) + + If your server uses a different attribute _name_ than _Alpine_ + uses by default, (for example, it uses "rfc822mail" instead of + "mail"), then you may be able to use one or more of the four + attribute configuration options instead of defining a custom + filter: + + email-attribute + + name-attribute + + surname-attribute + + givenname-attribute + +Color Configuration + + If the terminal or terminal emulator you are using is capable of using + color (see color-style option), or if you are using _PC-Alpine_, then + it is possible to set up _Alpine_ so that various parts of the display + will be shown in colors you configure. This is done using the Setup + Color screen. The Setup Color screen is divided into five broad + sections: Options, General Colors, Index Colors, Header Colors, and + Keyword Colors. In addition to these five categories you may also color + lines in the MESSAGE INDEX screen by configuring the Index Line Color. + + Each color is defined as a foreground color (the color of the actual + text) and a background color (the color of the area behind the text). + + Color Options + + _current-indexline-style_ + This option affects the colors used to display the current line + in the MESSAGE INDEX screen. If you do not have Index Line + Colors defined, then this option will have no effect in the + index. Those Rules may be defined by going to the + Setup/Rules/Indexcolor screen. + + If the option enable-incoming-folders-checking is turned on and + the Incoming Unseen Color is set to something other than the + default, then this option also affects the color used to display + the current folder in the Incoming FOLDER LIST screen. + + The available options include: + + flip-colors + This is the default. If an index line is colored because + it matches one of your Index Color Rules, then its colors + will be reversed when it is the currently highlighted + line. For example, if the line is normally red text on a + blue background, then when it is the current line it will + be drawn as blue text on a red background. + + The rest of the option values all revert to this + flip-colors behavior if there is no Reverse Color defined. + + reverse + With this option the Reverse color is always used to + highlight the current line. + + reverse-fg + The foreground part of the Reverse Color is used to + highlight the current line. If this would cause the text + to be unreadable (because the foreground and background + colors are the same) or if it would cause no change in the + color of the index line, then the colors are flipped + instead. + + Some people think this works particularly well if you use + different background colors to emphasize "interesting" + lines, but always with the same Normal foreground color, + and you use a different foreground color for the Reverse + Color. + + reverse-fg-no-ambiguity + With the "reverse-fg" rule above, it is possible that the + resulting color will be exactly the same as the regular + Reverse Color. That can lead to some possible confusion + because an "interesting" line which is the current line + will be displayed exactly the same as a non-interesting + line which is current. You can't tell whether the line is + just a regular current line or if it is an "interesting" + current line by looking at the color. Setting the option + to this value removes that ambiguity. It is the same as + the "reverse-fg" setting unless the resulting interesting + current line would look just like a non-interesting + current line. In that case, the interesting line's colors + are simply flipped (like in the default behavior). + + As an alternative way to preserve the line's + interestingness in this case, you may find that using both + a different foreground and a different background color + for the interesting line will help. + + reverse-bg + The background part of the Reverse Color is used to + highlight the current line. If this would cause the text + to be unreadable (because the foreground and background + colors are the same) or if it would cause no change in the + color of the index line, then the colors are flipped + instead. + + Some people think this works particularly well if you use + different foreground colors to emphasize "interesting" + lines, but always with the same Normal background color, + and you use a different background color for the Reverse + Color. + + reverse-bg-no-ambiguity + As with the "reverse-fg" case, the "reverse-bg" rule may + also result in a color which is exactly the same as the + regular Reverse Color. Setting the option to this value + removes that ambiguity. It is the same as the "reverse-bg" + setting unless the resulting current line has the same + color as the Reverse Color. In that case, the interesting + line's colors are simply flipped (like in the default + behavior). + + _titlebar-color-style_ + This option affects the colors used to display the titlebar (the + top line on the screen) when viewing a message. + + The available options include: + + default + The color of the titlebar will be the color you set for + the Title Color. The Title Color may be set by using the + + indexline + The color of the titlebar will be the same as the color of + the index line corresponding to the message being viewed. + The rules which determine what color the index line will + be may be set up by going to the Setup/Rules/Indexcolor + screen. If the index line for a message is not colored + explicitly by the Indexcolor rules, then the titlebar will + be colored the same as for the "default" option above + (which is not the same color that the index line itself + will have). + + reverse-indexline + This is similar to the "indexline" option except the + foreground and background colors from the corresponding + index line will be reversed. For example, if the index + line color is red letters on a white background, then the + titlebar will be white letters on a red background. If the + index line for a message is not colored explicitly by the + Indexcolor rules, then the titlebar will be colored the + same as for the "default" option above (which is not the + same color that the index line itself will have). + + General Colors + + _Normal Color_ + This is the color which most of the screen is painted in. By + default this color is black characters on a white background. + _Reverse Color_ + The color _Alpine_ uses for reverse video characters. Actually, + the name is misleading. This used to be reverse video and so the + name remains. It is still used to highlight certain parts of the + screen but the color may be set to whatever you'd like. + _Title Color_ + The color _Alpine_ uses for the titlebar (the top line on the + screen). By default, the Title Color is black characters on a + yellow background. The actual titlebar color may be different + from the Title Color if the option titlebar-color-style is set + to some value other than the default. It may also be different + if the current folder is closed and the Title Closed Color is + set to something different from the Title Color. + _Title-closed Color_ + The color _Alpine_ uses for the titlebar (the top line on the + screen) when the current folder is closed. By default, the Title + Color Closed Color is white characters on a red background. + _Status Color_ + The color _Alpine_ uses for messages written to the status + message line near the bottom of the screen. By default, the + Status Color is the same as the Reverse Color. + _KeyLabel Color_ + The color _Alpine_ uses for the labels of the commands in the + two-line menu at the bottom of the screen. The label is the long + name, for example, "PrevMsg". By default, the KeyLabel Color is + the same as the Normal Color. + WARNING: Some terminal emulators have the property that the + screen will scroll down one line whenever a character is written + to the character cell in the lower right corner of the screen. + _Alpine_ can usually avoid writing a character in that corner of + the screen. However, if you have defined a KeyLabel Color then + _Alpine_ does have to write a character in that cell in order to + color the cell correctly. If you find that your display + sometimes scrolls up a line this could be the problem. The most + obvious symptom is probably that the titlebar at the top of the + screen scrolls off the screen. Try setting KeyLabel Color to + Default to see if that fixes the problem. + _KeyName Color_ + The color _Alpine_ uses for the names of the commands in the + two-line menu at the bottom of the screen. The KeyName is the + shorter name in the menu. For example, the "W" before the + "WhereIs". By default, the KeyName Color is the same as the + Normal Color. + _Selectable-item Color_ + The color _Alpine_ uses for displaying selectable items, such as + URLs. By default, the Selectable-item Color is the same as the + Normal Color, except it is also Bold. + _Meta-message Color_ + The color _Alpine_ uses in the MESSAGE TEXT screen for messages + to you that aren't part of the message itself. By default, the + Meta-Message Color is black characters on a yellow background. + _Quote Colors_ + The colors _Alpine_ uses for coloring quoted text in the MESSAGE + TEXT screen. If a line begins with a > character (or space + followed by >) it is considered a quote. That line will be given + the Quote1 Color (first level quote). If there is a second level + of quoting then the Quote2 Color will be used. _Alpine_ + considers there to be a second level of quoting if that first > + is followed by another > (or space followed by >). If there are + characters other than whitespace and > signs, then it isn't + considered another level of quoting. Similarly, if there is a + third level of quoting the Quote3 Color will be used. If there + are more levels after that the Quote Colors are reused. If you + define all three colors then it would repeat like Color1, + Color2, Color3, Color1, Color2, Color3, ... If you only define + the first two it would be Color1, Color2, Color1, Color2, ... If + you define only the Quote1 Color, then the entire quote would be + that color regardless of the quoting levels. By default, the + Quote1 Color is black characters on a greenish-blue background; + the Quote2 Color is black characters on a dull yellow + background; and the Quote3 Color is black characters on a green + background. + _Incoming Unseen Color_ + If the option enable-incoming-folders-checking is turned on it + is possible to highlight the folders that contain unseen + messages by coloring them with this color. By default, this is + the same as the Normal Color and no highlighting is done. + Usually the "current" folder (the folder the cursor is on) is + highlighted using reverse video. If the current folder is + colored because it contains unseen messages then the color used + to show that it is also the current folder is controlled by the + current-indexline-style feature at the top of the SETUP COLOR + screen. + _Signature Color_ + The color _Alpine_ uses for coloring the signature in the + MESSAGE TEXT screen. According to USENET conventions, the + signature is defined as the paragraph following the "sigdashes", + that is, the special line consisting of the three characters + "-- " (i.e., dash, dash, and space). _Alpine_ allows for one + empty line right after the sigdashes to be considered as part of + the signature. By default, the Signature Color is blue + characters on a white background. + _Prompt Color_ + The color _Alpine_ uses for confirmation prompts and questions + which appear in the status message line near the bottom of the + screen. By default, the Prompt Color is the same as the Reverse + Color. + + Index Colors + + You may add color to the single character symbols which give the status + of each message in the MESSAGE INDEX. By default the characters "+", + "*", "D", "A", and "N" show up near the left hand side of the screen, + depending on whether the message is addressed to you, and whether the + message is marked Important, is Deleted, is Answered, or is New. You + may set the color of those symbols. By default, all of these symbols + are drawn with the same color as the rest of the index line they are a + part of. + + Besides coloring the message status symbols, you may also color the + entire index line. This is done by using the Index Line Color + configuration screen. It is also possible to color (keywords in the + index using the Setup/Kolor screen (Keyword Colors); the ARROW cursor; + the Subject using Index Subject Color; the From using Index From Color; + and the Index Opening text. + + _Index-to-me Symbol Color_ + The color used for drawing the "+" symbol which signifies a + message is addressed directly to you. + _Index-important Symbol Color_ + The color used for drawing the "*" symbol which signifies a + message has been flagged Important. + _Index-deleted Symbol Color_ + The color used for drawing the "D" symbol which signifies a + message has been marked Deleted. + _Index-answered Symbol Color_ + The color used for drawing the "A" symbol which signifies a + message has been answered. + _Index-new Symbol Color_ + The color used for drawing the "N" symbol which signifies a + message is New. + _Index-recent Symbol Color_ + The color used for drawing the "R" symbol which signifies a + message is Recent (only visible if the "IMAPSTATUS" or + "SHORTIMAPSTATUS" token is part of the index-format option). + _Index-unseen Symbol Color_ + The color used for drawing the "U" symbol which signifies a + message is Unseen (only visible if the "IMAPSTATUS" or + "SHORTIMAPSTATUS" token is part of the Index-Format option). + _Index-priority Symbol Colors_ + The colors used for drawing the tokens "PRIORITY", + "PRIORITYALPHA", and "PRIORITY!" when these are configured as + part of the Index-Format option. You may set the color used to + draw these tokens by use of the colors Index High Priority + Symbol Color and Index Low Priority Symbol Color. This coloring + takes place for all but the current index line, and the Priority + Color appears to be in front of any color from an Index Color + Rule. If the priority has a value of 1 or 2 the High Priority + color will be used, and if the value is 4 or 5 the Low Priority + color will be used. + If you don't set these colors the index line will be colored in + the same color as the bulk of the index line. + _Index-arrow Symbol Color_ + The color used for drawing the "ARROW" token when it is + configured as part of the Index-Format option. + _Index-subject Symbol Color_ + You may set the color used to draw the Subject part of the index + line. This coloring takes place for all but the current index + line, and the Subject Color appears to be in front of any color + from an Index Color Rule. + If you don't set this color it will be colored in the same color + as the bulk of the index line. + _Index-from Symbol Color_ + You may set the color used to draw the From part of the index + line. This coloring takes place for all but the current index + line, and the From Color appears to be in front of any color + from an Index Color Rule. + If you don't set this color it will be colored in the same color + as the bulk of the index line. + _Index-opening Symbol Color_ + It is possible to configure the Index-Format option so that it + includes the subject followed by the "opening" text of the + message if there is enough space. This is done by using one of + the tokens SUBJECTTEXT, SUBJKEYTEXT, or SUBJKEYINITTEXT. The + color used for drawing this opening text is given by this + option. The coloring happens for all but the current index line, + and this opening color appears to be in front of any color from + an Index Color Rule. + By default the Index Opening Color is gray characters on a white + background. + + The default colors for these symbols are: + + Index-to-me black on cyan + Index-important white on bright red + Index-deleted same as Normal Color + Index-answered bright red on yellow + Index-new white on magenta + Index-recent same as Normal Color + Index-unseen same as Normal Color + + Header Colors + + You may add color to the header fields in the MESSAGE TEXT screen. The + + _Header-general Color_ + may be used to color all of the headers of the message. + + It is also possible to set the colors for specific header fields, for + example for the Subject or From fields, using the viewer-hdr-colors + option. + + For Header Colors, there is an additional line on the configuration + screen labeled "Pattern to match". If you leave that blank, then the + whole field for that header will always be colored. However, if you + give a pattern to match, the coloring will only take place if there is + a match for that pattern in the value of the field. For example, if you + are working on a color for the Subject header and you fill in a pattern + of "important", then only Subjects which contain the word "important" + will be colored. For address fields like From or To, a pattern match + will cause only the addresses which match the pattern to be colored. + + If the pattern you enter is a comma-separated list of patterns, then + coloring happens if any of those patterns matches. + + Keyword Colors + + Sets the colors _Alpine_ uses for Keyword fields in the MESSAGE INDEX + screen. Keywords may be displayed as part of the Subject of a message + by using the "SUBJKEY" or "SUBJKEYINIT" tokens in the Index-Format + option. Keywords may also be displayed in a column of their own in the + MESSAGE INDEX screen by using the "KEY" or "KEYINIT" tokens. + + For example, you might have set up a Keyword "Work" using the Keywords + option in the Setup/Config screen. You could cause that Keyword to show + up as a special color by setting up the Keyword Color using this + option, and then including it in the MESSAGE INDEX screen using one of + the tokens listed above in the Index-Format. + + Index Line Colors + + You may color whole index lines by using roles. This isn't configured + in the Setup Colors screen, but is configured in the Setup Rules + IndexColor screen. + +Index Line Color Configuration + + Index Line Color causes lines in the MESSAGE INDEX screen to be + colored. This action is only available if your terminal is capable of + displaying color and color display has been enabled with the + Color-Style option. (In PC-Alpine, color is always enabled so there is + no option to turn on.) + + Each rule has a "Pattern", which is used to decide which of the rules + is used; and the color which is used if the Pattern matches a + particular message. + + Rule Patterns + + In order to determine whether or not a message matches a rule the + message is compared with the rule's Pattern. These Patterns are the + same for use with Roles, Filtering, Index Coloring, Scoring, Other + Rules, and Search Rules, so are described in only one place, "here". + + Index Line Color + + This is the color that index lines are colored when there is a matching + Pattern. This colors the whole index line, except possibly the status + letters which may be colored separately using the Setup Kolor screen. + +Role Configuration + + You may play different roles depending on who you are replying to. For + example, if you are replying to a message addressed to _help-desk_ you + may be acting as a Help Desk Worker. That role may require that you use + a different return address and/or a different signature. + + Roles are optional. If you set up roles they work like this: Each role + has a set of "Uses", which indicate whether or not a role is eligible + to be considered for a particular use; a "Pattern", which is used to + decide which of the eligible roles is used; and a set of "Actions", + which are taken when that role is used. When you reply to a message, + the message you are replying to is compared with the Patterns of the + roles marked as eligible for use when replying. The comparisons start + with the first eligible role and keep going until there is a match. If + a match is found, the matching role's Actions are taken. + + It is also possible to set a default role and to change that role + during your _Alpine_ session. When you start _Alpine_ no default role + will be set. You may set or change the current default role by using + the "D" command in the role selection screen. You'll see that screen + while composing a message and being asked to select a role. An easy way + to get to that screen is to use the Role Command to compose a message. + You may find a default role useful if you normally perform the duties + of one of your roles for a while, then you switch to another role and + stay in the new role for another period of time. It may be easier than + using the Role Command to select the role each time you compose a + message. + + Role Uses + + There are three types of use to be configured; one for Replying, one + for Forwarding, and one for Composing. These indicate whether or not + you want a role to be considered when you type the Reply, Forward, or + Compose commands. (The Role command is an alternate form of the Compose + command, and it is not affected by these settings.) Each of these Use + types has three possible values. The value "Never" means that the role + will never be considered as a candidate for use with the corresponding + command. For example, if you set a role's Reply Use to Never, then when + you Reply to a message, the role won't even be considered. (That isn't + quite true. If the message you are replying to matches some other role + which requires confirmation, then there will be a ^T command available + which allows you to select a role from all of your roles, not just the + reply-eligible roles.) + + The options "With confirmation" and "Without confirmation" both mean + that you do want to consider this role when using the corresponding + command. For either of these settings the role's Pattern will be + checked to see if it matches the message. For Reply Use, the message + used to compare the Patterns with is the message being replied to. For + Forward Use, the message used to compare the Pattern with is the + message being forwarded. For Compose Use, there is no message, so the + parts of the Pattern which depend on a message (everything other than + Current Folder Type) are ignored. In all cases, the Current Folder is + checked if defined. If there is a match then this role will either be + used without confirmation or will be the default when confirmation is + asked for, depending on which of the two options is selected. If + confirmation is requested, you will have a chance to choose No Role + instead of the offered role, or to change the role to any one of your + other roles (with the ^T command). + + Role Patterns + + In order to determine whether or not a message matches a role the + message is compared with the Role Pattern. These Patterns are the same + for use with Roles, Filtering, Index Coloring, Scoring, Other Rules, + and Search Rules, so are described in only one place, "here". + + Since header patterns, AllText patterns, and BodyText patterns which + are unset are ignored, a role which has all header patterns unset, the + AllText pattern unset, the BodyText pattern unset, the Score Interval + unset, and the Current Folder Type set to "Any" may be used as a + default role. It should be put last in the list of roles since the + matching starts at the beginning and proceeds until one of the roles is + a match. If no roles at all match, then _Alpine_ will use its regular + methods of defining the role. If you wanted to, you could define a + different "default" role for Replying, Forwarding, and Composing by + setting the "Use" fields appropriately. + + Role Actions + + Once a role match is found, the role's Actions are taken. For each role + there are several possible actions that may be defined. They are + actions to set the From address, the Reply-To address, the Fcc, the + Signature file, and the Template file. + + Initialize Settings Using Role + + This is a power user feature. You will usually want to leave this field + empty. The value of this field is the nickname of another one of your + roles. The Action values from that other role are used as the initial + values of the Action items for this role. If you put something in any + of the action fields for this role, that will override whatever was in + the corresponding field of the initializer role. + + You might use this field if the "Action" part of one of your roles is + something you want to use in more than one role. Instead of filling in + those action values again for each role, you may give the nickname of + the role where the values are filled in. It's just a shortcut way to + define Role Actions. + + Here's an example to help explain how this works. Suppose you have a + role with nickname "role1" and role1 has (among other things) + + Set Reply-To = The Pres <president@example.com> + + set. If in "role2" you set "Initialize settings using role" to "role1", + then role2 will inherit the Set Reply-To value from role1 by default + (and any of the other inheritable action values that are set). So if + role2 had + + Set Reply-To = <No Value Set> + + defined, the Reply-To used with role2 would be "The Pres + <president@example.com>" However, if role2 had + + Set Reply-To = VP <vicepresident@example.com> + + defined, then the Reply-To used with role2 would be "VP + <vicepresident@example.com>" instead. + + If you wish, you may choose a nickname from your list of roles by using + the "T" command. If the role you are using to initialize also has a + role it initializes from, then that initialization happens first. That + is, inheritance works as expected with the grandparent and + great-grandparent (and so on) roles having the expected effect. + + Set From + + This field consists of a single address which will be used as the From + address on the message you are sending. This should be a + fully-qualified address like + + Full Name <user@domain> + + or just + + user@domain + + If this is left blank, then the normal From address will be used. + + Set Reply-To + + The Reply-To address is the address used on the Reply-To line of the + message you are sending. You don't need a Reply-To address unless it is + different from the From address. This should be a fully-qualified + address like + + Full Name <user@domain> + + or just + + user@domain + + If this is left blank, then there won't be a Reply-To address unless + you have configured one specially with the customized-hdrs + configuration option. + + Set Other-Hdrs + + This field gives you a way to set values for headers besides "From" and + "Reply-To". If you want to set either of those, use the specific "Set + From" and "Set Reply-To" settings. + + This field is similar to the customized-hdrs option. Each header you + specify here must include the header tag ("To:", "Approved:", etc.) and + may optionally include a value for that header. In order to see these + headers when you compose using this role you must use the rich header + command. Here's an example which shows how you might set the To + address. + + Set Other Hdrs = To: Full Name <user@domain> + + Headers set in this way are different from headers set with the + customized-hdrs option in that the value you give for a header here + will replace any value that already exists. For example, if you are + Replying to a message there will already be at least one address in the + To header (the address you are Replying to). However, if you Reply + using a role which sets the To header, that role's To header value will + be used instead. The customized-hdrs headers are defaults. + + Limitation: Because commas are used to separate the list of Other + Headers, it is not possible to have the value of a header contain a + comma; nor is there currently an "escape" mechanism provided to make + this work. + + Set Fcc + + This field consists of a single folder name which will be used in the + Fcc field of the message you are sending. You may put anything here + that you would normally type into the Fcc field from the composer. + + In addition, an fcc of "" (two double quotation marks) means no Fcc. + + A blank field here means that _Alpine_ will use its normal rules for + deciding the default value of the Fcc field. For many roles, perhaps + most, it may make more sense for you to use the other _Alpine_ + facilities for setting the Fcc. In particular, if you want the Fcc to + depend on who you are sending the message to then the fcc-name-rule is + probably more useful. In that case, you would want to leave the Fcc + field here blank. However, if you have a role that depends on who the + message you are replying to was From, or what address that message was + sent to; then it might make sense to set the Fcc for that role here. + + Set LiteralSig + + This field contains the actual text for your signature, as opposed to + the name of a file containing your signature. If this is defined it + takes precedence over any value set in the _Set Signature_ field. + + This is simply a different way to store the signature. The signature is + stored inside your Alpine configuration file instead of in a separate + signature file. Tokens work the same way they do with _Set Signature_. + + The two character sequence \n (backslash followed by the character n) + will be used to signify a line-break in your signature. You don't have + to enter the \n, but it will be visible in the CHANGE THIS ROLE RULE + window after you are done editing the signature. + + Set Signature + + The Signature is the name of a file to be used as the signature file + when this role is being used. If the filename is followed by a vertical + bar (|) then instead of reading the contents of the file the file is + assumed to be a program which will produce the text to be used on its + standard output. The program can't have any arguments and doesn't + receive any input from _Alpine_, but the rest of the processing works + as if the contents came from a file. + + Signature files may be stored remotely on an IMAP server. In order to + do that you just give the file a remote name. This works just like the + regular signature-file option which is configured from the + Setup/Configuration screen. A remote signature file name might look + like: + + {myimaphost.myschool.k12.wa.us}mail/sig3 + + or, if you have an SSL-capable version of _Alpine_, you might try + + {myimaphost.myschool.k12.wa.us/user=loginname/ssl}mail/sig3 + + Once you have named the remote signature file you create its contents + by using the "F" "editFile" command when the cursor is on the "Set + Signature" line of the role editor. + + Besides containing regular text, a signature file may also contain (or + a signature program may produce) tokens which are replaced with text + which depends on the message you are replying to or forwarding. The + tokens all look like _word_ (a word surrounded by underscores). For + example, if the token + + _DATE_ + + is included in the text of the signature file, then when you reply to + or forward a message, the token will be replaced with the actual date + the message you are replying to or forwarding was sent. + + If you use a role which has a signature file for a plain composition + (that is, not a reply or forward) then there is no original message, so + any tokens which depend on the message will be replaced with nothing. + So if you want a signature file to be useful for new compositions it + shouldn't include any of the tokens which depend on the message being + replied to or forwarded. + + The list of available tokens is here. + + Actually, for the adventurous, there is a way to conditionally include + text based on whether or not a token would result in specific + replacement text. For example, you could include some text based on + whether or not the _NEWS_ token would result in any newsgroups if it + was used. It's explained in detail here. + + In the very unlikely event that you want to include a literal token in + a signature file, you must precede it with a backslash character. For + example, to include the literal text _DATE_ you must actually use + \_DATE_. It is not possible to have a literal backslash followed by an + expanded token. + + A blank field here means that _Alpine_ will use its normal rules for + deciding which file (if any) to use for the signature file. + + Set Template + + A Template is the name of a file to be included in the message when + this role is being used. The template file is a file which is included + at the top of the message you are composing. + + If the filename is followed by a vertical bar (|) then instead of + reading the contents of the file the file is assumed to be a program + which will produce the text to be used on its standard output. The + program can't have any arguments and doesn't receive any input from + _Alpine_, but the rest of the processing works as if the contents came + from a file. + + Template files may be stored remotely on an IMAP server. In order to do + that you just give the file a remote name. This works just like the + regular signature-file option which is configured from the + Setup/Configuration screen. A remote template file name might look + like: + + {myimaphost.myschool.k12.wa.us}mail/templ3 + + or, if you have an SSL-capable version of _Alpine_, you might try + + {myimaphost.myschool.k12.wa.us/user=loginname/ssl}mail/templ3 + + Once you have named the remote template file you create its contents by + using the "F" "editFile" command when the cursor is on the "Set + Template" line of the role editor. + + Besides containing regular text, a template file may also contain (or a + template file program may produce) tokens which are replaced with text + which depends on the message you are replying to or forwarding. The + tokens all look like _word_ (a word surrounded by underscores). For + example, if the token + + _DATE_ + + is included in the text of the template file, then when you reply to or + forward a message, the token will be replaced with the actual date the + message you are replying to or forwarding was sent. + + If you use a role which has a template file for a plain composition + (that is, not a reply or forward) then there is no original message, so + any tokens which depend on the message will be replaced with nothing. + So if you want a template file to be useful for new compositions it + shouldn't include any of the tokens which depend on the message being + replied to or forwarded. + + The list of available tokens is here. + + Actually, for the adventurous, there is a way to conditionally include + text based on whether or not a token would result in specific + replacement text. For example, you could include some text based on + whether or not the _NEWS_ token would result in any newsgroups if it + was used. It's explained in detail here. + + In the very unlikely event that you want to include a literal token in + a template file, you must precede it with a backslash character. For + example, to include the literal text _DATE_ you must actually use + \_DATE_. It is not possible to have a literal backslash followed by an + expanded token. + + A blank field here means that _Alpine_ will not use a template file + when this role is being used. + + Use SMTP Server + + If this field has a value, then it will be used as the SMTP server to + send mail when this role is being used (unless the SMTP server variable + is set in the system-wide fixed configuration file). It has the same + semantics as the smtp-server variable in the Setup/Config screen. When + you postpone the composition this SMTP server list will be saved with + the postponed composition and it cannot be changed later. Because of + that, you may want to make this a list of SMTP servers with the + preferred server at the front of the list and alternate servers later + in the list. + + If any of the actions are left unset, then the action depends on what + is present in the "Initialize settings using role" field. If you've + listed the nickname of another one of your roles there, then the + corresponding action from that role will be used here. If that action + is also blank, or if there is no nickname specified, then _Alpine_ will + do whatever it normally does to set these actions. This depends on + other configuration options and features you've set. + +Filtering Configuration + + The software which actually delivers mail (the stuff that happens + before _Alpine_ is involved) for you is in a better position to do mail + filtering than _Alpine_ itself. If possible, you may want to look into + using that sort of mail filtering to deliver mail to different folders, + delete it, or forward it. However, if you'd like _Alpine_ to help with + this, _Alpine_'s filtering is for you. + + Filtering is a way to automatically move certain messages from one + folder to another or to delete messages. It can also be used to set + message status bits (Important, Deleted, New, Answered). _Alpine_ + doesn't have the ability to forward mail to another address. + + Each filtering rule has a "Pattern" and a "Filter Action". When a + folder is opened, when new mail arrives in an open folder, or when mail + is Expunged from a folder; each message is compared with the Patterns + of your filtering rules. The comparisons start with the first rule and + keep going until there is a match. If a match is found, the message may + be deleted or moved, depending on the setting of the Filter Action. If + the message is not deleted, it may have its status altered. + + For efficiency, each message is usually only checked once. When new + mail arrives, the new messages are checked but not the old. There are + some exceptions to this rule. The expunge command will cause all + messages to be rechecked, as will editing of the filtering rules. + + _NOTE:_ When setting up a Pattern used to delete messages, it is + recommended that you test the Pattern first with a "Move" folder + specified in case unintended matches occur. Messages that are deleted + will be removed from the folder and _unrecoverable_ from within _Alpine_ + after the next Expunge command or once the folder being filtered has + been closed. + + Filter Patterns + + In order to determine whether or not a message matches a filter the + message is compared with the Filter's Pattern. These Patterns are the + same for use with Roles, Filtering, Index Coloring, Scoring, Other + Rules, and Search Rules, so are described in only one place, "here". + + Since filtering is a potentially destructive action, if you have a + filtering Pattern with nothing other than Current Folder Type set, that + filtering rule is ignored. + + Filter Actions + + Once a filter match is found for a particular message, there are some + actions which may be taken. First, the message may have its status + changed. This is the same message status that you can manipulate + manually using the Flag Command. There are four elements of message + status that you can control. You can set or clear the Important status, + the New status, the Deleted status, and the Answered status. Of course, + if the filter is going to delete the message, then there is no point in + setting message status. You may also set or clear user-defined keywords + for a message. + + Second, the filter may delete or move the message. Deleting the message + marks it Deleted and removes it from view. It is effectively gone + forever (though it technically is still there until the next expunge + command, which may happen implicitly). Moving the message moves it from + the open folder into the folder listed on the "Folder List" line of the + filter configuration. If you list more than one folder name (separated + by commas) then the message will be copied to each of those folders. In + any case, if "Delete" or "Move" is set then the message is removed from + the current folder. If you just want to set the messages status without + deleting it from the folder, then set the filter action to "Just Set + Message Status". + + (There is no way to do a Copy instead of a Move, due to the + difficulties involved in keeping track of whether or not a message has + already been copied by a previous _Alpine_ session.) + + Move-only-if-not-deleted option + + If you have specified a Move to Folder to filter messages into, then + this option has an effect. If this option is set then messages will + only be moved into the specified folder if they aren't already marked + deleted. This might be useful if you have more than one _Alpine_ + session running simultaneously and you don't want messages to be + filtered into a folder more than once. This method is not foolproof. + There may be cases where a message gets marked deleted and so it is + never filtered into the folder. For example, if you deleted it in + another _Alpine_ or another mail program that didn't know about the + filtering rule. + + This option has no effect if the Filter Action is not set to Move. + + Dont-quit-even-if-rule-matches option + + If this option is set then this is a non-terminating rule. Usually, for + each message, _Alpine_ searches through the filter rules until a match + is found and then it performs the action associated with that rule. + Rules following the match are not considered. If this option is set + then the search for matches will continue at the next rule. + + If a non-terminating rule matches then the actions associated with that + rule, except for any implied deletion of the message, are performed + before the match for the next rule is checked. For example, if the + non-terminating rule sets the Important status, then that status will + be set when the next rule is considered. However, if the + non-terminating rule Moves the message, the message will actually be + copied instead of copied and deleted so that it is still there for the + next rule. A moved message is deleted after all the relevant rules have + been checked. The name of the "Move" action is confusing in this case + because a single message can be moved to more than one folder. It turns + the Move into a Copy instead, but it is still followed by a deletion at + the end. + + This option may be useful if you want to have a single message filtered + to two different folders because it matches two different Patterns. For + example, suppose you normally filter messages to a particular mailing + list into one folder, and messages addressed directly to you into a + second folder. If a message is sent to both you and the list (and you + can tell that by looking at the headers of the message) this option may + give you a convenient way to capture a copy to each folder. (It may + also cause you to capture two copies to each folder, depending on + whether your mail system delivers one or two copies of the message to + you and on how the list works.) + +Scoring Configuration + + Most people will not use scores at all, but if you do use them, here's + how they work in Alpine. Using this screen, you may define Scoring + rules. The score for a message is calculated by looking at every Score + rule defined and adding up the Score Values for the ones which match + the message. If there are no matches for a message, it has a score of + zero. Message scores may be used a couple of ways in Alpine. + + Sorting by Score + + One of the methods you may use to sort message indexes is to sort by + score. The scores of all the messages in a folder will be calculated + and then the index will be ordered by placing the messages in order of + ascending or descending score. + + Scores for use in Patterns + + The Patterns used for Roles, Index Line Coloring, and Filtering have a + category labeled "Score Interval". When a message is being compared + with a Pattern to check for a match, if the Score Interval is set only + messages which have a score somewhere in the interval are a match. + + Scoring Rule Patterns + + In order to determine whether or not a message matches a scoring rule + the message is compared with the rule's Pattern. These Patterns are the + same for use with Roles, Filtering, Index Coloring, Scoring, Other + Rules, and Search Rules, so are described in only one place, "here". + + Actually, Scoring rule Patterns are slightly different from the other + types of Patterns because Scoring rule Patterns don't contain a Score + Interval. In other words, when calculating the score for a message, + which is done by looking at the Scoring rule Patterns, scores aren't + used. + + Score Value + + This is the value that will be added to the score for a message if the + rule's Pattern is a match. Each individual Score Value is an integer + between -100 and 100, and the values from matching rules are added + together to get a message's score. There is also a way to extract the + value from a particular header of each message. See the help text for + Score Value for further information. + +Other Rules Configuration + + Using this screen, you may define configuration Rules which don't fit + nicely into the other Rules categories. + + Other Rule Patterns + + Other Rules are a little different from the rest of the Rules because + they depend only on the current folder, and not on a particular + message. In order to determine whether or not a rule's actions should + be applied the current folder is compared with the rule's Pattern, + which consists of only the Current Folder Type. Current Folder Type + works the same for Other Rules as it does for Roles, Filtering, Index + Coloring, and Scoring. Keep in mind that the only part of the Pattern + which applies to Other Rules is the Current Folder Type when looking at + the description of Patterns given "here". + + Other Rule Actions + + Once a pattern match is found, the rule's Actions are taken. Neither of + the following two rule's depends on a message for its match. That means + that all the parts of the Pattern which depend on matching an attribute + of a message are ignored. So the only part of the Pattern that matters + for these Actions is the Current Folder Type. + + Set Sort Order + + When you enter a new folder, these rules will be checked to see if you + have set a sort order which is different from your default sort order. + The default is set in the Setup/Config screen with the Sort-Key option. + If the Sort Order action is set, then the folder will be displayed + sorted in that sort order instead of in the default order. + + A possible point of confusion arises when you change the configuration + of the Sort Order for the currently open folder. The folder will + normally be re-sorted when you go back to viewing the index. However, + if you have manually sorted the folder with the Sort command, it will + not be re-sorted. + + Set Index Format + + When you enter a new folder, these rules will be checked to see if you + have set an Index Format which is different from your default Index + Format, which is set with the Index-Format option. If so, the index + will be displayed with this format instead of the default. + + Set Startup Rule + + When you enter a new folder, these rules will be checked to see if you + have set a startup rule which is different from the default startup + rule. The default for incoming folders is set in the Setup/Config + screen with the "incoming-startup-rule" option. The default for folders + other than INBOX that are not part of your incoming collection (see + enable-incoming-folders feature) is to start with the last message in + the folder. If the Startup Rule is set to something other than + "default", then the rule will determine which message will be the + current message when the folder is first opened. + + The various startup rule possibilities work the same here as they do in + the incoming collection, except that the folder can be any specific + folder or any folder type. + +Search Rules Configuration + + One of the commands that becomes available when that feature is turned + on is the "; Select" command, which is used in the MESSAGE INDEX screen + to select a set of messages. One way of selecting messages is to use a + Rule. All of the messages which match (or don't match if you wish) a + Rule's Pattern will be selected. + + Any of your Rules may be used for this purpose. You might already have + Rules set up for filtering, index line color, scores, or roles; and you + may use any of those Rules with the Select command. However, you might + find it more convenient to set up a separate set of Rules just for this + purpose without having to worry about what other effects they may + cause. That is the purpose of these Select Rules. + + Rule Patterns + + In order to determine whether or not a message is selected by a rule + the message is compared with the rule's Pattern. These Patterns are the + same for use with Roles, Filtering, Index Coloring, Scoring, Other + Rules, and Search Rules, so are described in only one place, "here". + + There is no action associated with these Search Rules. Only their + Patterns are used. + +Patterns + + Patterns are used with Roles, Filtering, Index Coloring, Scoring, Other + Rules, and Search Rules. Patterns are compared with a message to see if + there is a match. For Filtering, the messages being checked are all the + messages in the folder, one at a time. For Index Line Coloring, each + message that is visible on the screen is checked for matches with the + Index Coloring Patterns. Roles are used with the Reply, Forward, and + Compose commands. For Reply, the message used to compare the Pattern + with is the message being replied to; for Forward, the message used to + compare the Pattern with is the message being forwarded; and for + Compose, there is no message, so the parts of the Pattern which depend + on a message (everything other than Current Folder Type and the + Beginning of Month and Year) are not used. Only the Current Folder Type + matters for Compose (plus the Beginning of Month or Year, which you + wouldn't usually use for a Role). For Scoring, the message being scored + is compared with all of the Score Patterns, and the Score Values from + the ones that match are added together to get the message's score. For + Other Rules, there is no message. Only the Current Folder Type is + checked for Other Rules. + + Each Pattern has several possible parts, all of which are optional. In + order for there to be a match, _ALL_ of the _defined_ parts of the + Pattern must match the message. If a part is not defined it is + considered a match. For example, if the To pattern is not defined it + will be displayed as + + To pattern = <No Value Set> + + That is considered a match because it is not defined. This means that + the Pattern with nothing defined is a match if the Current Folder Type + matches, but there is an exception. Because filtering is a potentially + destructive action, filtering Patterns with nothing other than Current + Folder Type defined are ignored. If you really want a filtering Pattern + to match all messages (subject to Current Folder Type) the best way to + do it is to define a Score interval which includes all possible scores. + This would be the score interval (-INF,INF). This can be used even if + you haven't defined any rules to Set Scores. + + There are six predefined header patterns called the To, From, Sender, + Cc, News, and Subject patterns. Besides those six predefined header + patterns, you may add additional header patterns with header fieldnames + of your choosing. You add an extra header pattern by placing the cursor + on one of the patterns while in the role editor and using the + "eXtraHdr" command. The Recip pattern is a header pattern which stands + for Recipient (To OR Cc) and the Partic pattern is a header pattern + which stands for Participant (From OR To OR Cc). (Defining the Recip + pattern does not have the same effect as defining both the To and Cc + patterns. Recip is To _OR_ Cc, not To _AND_ Cc.) Similar to the header + patterns are the AllText pattern and the BodyText pattern. Instead of + comparing this pattern's text against only the contents of a particular + header field, the text for the AllText pattern is compared with text + anywhere in the message's header or body, and the text for the BodyText + pattern is compared with text anywhere in the message's body. + + Any of the header patterns, the AllText pattern, or the BodyText + pattern may be negated with the "!" "toggle NOT" command. You can tell + that _NOT_ has been turned on by looking for the character "!" at the + beginning of the pattern line. When the "!" is present, it reverses the + meaning of the match. That is, if the pattern matches then it is + considered to NOT be a match, and if it does not match it is considered + to be a match. + + Don't make the mistake of putting the "!" in the data field for a + pattern. For example, if you type the characters "!urgent" into the + Subject pattern, the pattern will look like: + + Subject pattern = !urgent + + This means you want to match the 7 character sequence "!urgent". In + order to match messages which do not have "urgent" in their Subject + field, first type the characters "urgent" followed by carriage return + for the value of the Subject pattern, then negate it by typing the "!" + command. It should look like + + ! Subject pattern = urgent + + The contents of each of these header patterns (or the AllText or + BodyText patterns) may be a complete email address, part of an address, + or a random set of characters to match against. It may also be a list + of such patterns, which means you are looking for a match against the + first pattern in the list _OR_ the second pattern _OR_ the third and so + on. For example, a Subject pattern equal to + + Subject pattern = urgent + emergency + alert + + would match all messages with a subject which contained at least one of + those words. It would also match subjects containing the words "alerts" + or "Urgently". + + The same example with "NOT" turned on would be + + ! Subject pattern = urgent + emergency + alert + + which would match all messages with a subject which did NOT contain any + of those words. You can use the "Add Value" command to add new words to + the list, or you can enter them as a comma-separated list. + + (It is not possible to specify two patterns which must _BOTH_ be + present for a match. It is only possible to specify that _EITHER_ + pattern1 _OR_ pattern2 must be present, and that is exactly what using + a list does.) + + The "Current Folder Type" and the "Score Interval" are also part of the + Pattern, although the "Score Interval" is not used when checking for + matches for Scoring. There are five similar settings which relate to + the status of the message. These settings rely on the message being New + or not, Deleted or not, Answered or not, Important or not, and Recent + or not. There are also some other miscellaneous settings. The first is + the Age of the message in days. Another is the Size of the message in + bytes. The third is a setting which detects whether or not the Subject + of a message contains raw 8-bit characters (unencoded characters with + the most significant bit set). There is a setting which detects whether + or not this is the first time _Alpine_ has been run this month (doesn't + depend on individual messages), and another which detects whether or + not this is the first time _Alpine_ has been run this year. Other parts + of the Pattern detect whether or not the From address of a message + appears in your address book, whether or not certain keywords are set + for a message, and whether or not certain character sets are used in a + message. + + Parts of a Pattern + + Header patterns + + A header pattern is simply text which is searched for in the + corresponding header field. For example, if a Pattern has a From header + pattern with the value "@company.com", then only messages which have a + From header which contains the text "@company.com" will be possible + matches. Matches don't have to be exact. For example, if the relevant + field of a message contains the text "mailbox@domain" somewhere in it, + then header patterns of "box", or "x@d", or "mailbox@domain" are all + matches. + + All parts of the Pattern must match so, for example, if a message + matches a defined From pattern, it still must be checked against the + other parts of the Pattern which have been defined. The To header + pattern is a slightly special case. If the message being checked has a + Resent-To header and the feature Use-Resent-To-in-Rules is turned on, + the addresses there are used in place of the addresses in the To + header. This is only true for the To header. Resent-cc and Resent-From + headers are never used unless you add them with the eXtraHdrs command. + + The meaning of a header pattern may be negated with the "!" "toggle + NOT" command. You can tell that _NOT_ has been turned on by looking for + the character "!" at the beginning of the pattern line. It would look + something like + + ! From pattern = susan@example.com + + When the "!" is present, it reverses the meaning of the match. + + If you want to check for the presence of a header field but don't care + about its value, then the empty pattern which you get by entering a + pair of double quotes ("") should match any message which has the + corresponding header field. + + AllText patterns + + AllText patterns are just like header patterns except that the text is + searched for anywhere in the message's headers or body, not just in the + contents of a particular header field. + + BodyText patterns + + BodyText patterns are just like header patterns except that the text is + searched for anywhere in the message's body, not just in the contents + of a particular header field. + + If there is more than one header pattern or AllText pattern or BodyText + pattern for which you want to take the same action there is a shorthand + notation which may be used. Any of these patterns may be a list of + patterns instead of just a single pattern. If any one of the patterns + in the list matches the message then it is considered a match. For + example, if "company1" and "company2" both required you to use the same + role when replying to messages, you might have a To pattern which looks + like + + To pattern = company1.com + company2.com + + This means that if the mail you are replying to was addressed to either + "anything@company1.com" or "anything@company2.com", then this Pattern + is a match and the same actions will be taken. + + The meaning of an AllText or BodyText pattern may be negated with the + "!" "toggle NOT" command. You can tell that _NOT_ has been turned on by + looking for the character "!" at the beginning of the pattern line. + When the "!" is present, it reverses the meaning of the match. + + A technicality: Since comma is the character used to separate multiple + values in any of the fields which may have multiple values (such as + header patterns, AllText patterns, BodyText patterns, keywords, folder + lists, and so on), you must escape comma with a backslash (\) if you + want to include a literal comma in one of those fields. In other words, + if you type a backslash followed by a comma it will be interpreted as a + comma by _Alpine_, instead of as a separator between pattern values. + All other backslashes (those not followed by a comma) are literal + backslashes and should not be escaped. It's unlikely you'll ever need + to enter a literal comma or backslash in any of the patterns. + + Current Folder Type + + The "Current Folder Type" may be set to one of four different values: + "Any", "News", "Email", or "Specific". If the value is set to "News", + then the Pattern will only match if the currently open folder is a + newsgroup. The value "Email" only matches if the current folder is not + news and the value "Any" causes any folder to match. If the value of + "Current Folder Type" is set to "Specific", then you must fill in a + value for "Folder", which is on the line below the "Specific" line. In + this case you will only get a match if the currently open folder is the + specific folder you list. You may give a list of folders instead of + just a single folder name, in which case the Pattern will match if the + open folder is any one of the folders in the list. The name of each + folder in the list may be either "INBOX", the technical specification + of the folder (like what appears in your configuration file) or, if the + folder is one of your incoming folders, it may be the nickname you've + given the folder. Here are some samples of specific folder names: + + {monet.art.example.com}mail/art-class + + {news.example.com/nntp}#news.comp.mail.pine + + mail/local-folder + + The easiest way to fill in the "Folder" field is to use the "T" command + which is available when the "Folder" line is hilighted, or to use the + "Take" command with the configuration feature "enable-rules-under-take" + turned on. + + When reading a newsgroup, there may be a performance penalty incurred + when collecting the information necessary to check whether or not a + Pattern matches a message. For this reason, the default Current Folder + Type is set to "Email". If you have Patterns with a Current Folder Type + of either "Any" or "News" and those Patterns are used for Index Line + Coloring or Scoring, you may experience slower screen redrawing in the + MESSAGE INDEX screen when in a newsgroup. + + Age Interval + + The "Age Interval" may be set to an interval of message ages which + should be considered a match. Like the other parts of the Pattern, if + it is unset it will be ignored. The Age Interval looks like + + (min_age,max_age) + + where "min_age" and "max_age" are integers greater than or equal to + zero. The special value "INF" may be used for the max value. It + represents infinity. + + Actually, this option may be defined as a list of intervals instead of + just a single interval. The list is separated by commas. It can look + like + + (min_age1,max_age1),(min_age2,max_age2),... + + When there is an Age Interval defined, it is a match if the age, in + days, of the message is contained in any of the intervals. The + intervals include both endpoints. + + Even though this option is called Age, it isn't actually the _age_ of + the message. Instead, it is how many days ago the message arrived in + one of your folders. If the current time is a little past midnight, + then a message that arrived just before midnight arrived yesterday, + even though the message is only a few minutes old. By default, the date + being used is not the date in the Date header of the message. It is the + date that the message arrived in one of your folders. When you Save a + message from one folder to another that arrival date is preserved. If + you would like to use the date in the Date header that is possible. + Turn on the option _use-date-header-for-age_ near the bottom of the + rule definition. + + A value of 0 is today, 1 is yesterday, 2 is the day before yesterday, + and so on. + + Size Interval + + The "Size Interval" may be set to an interval of message sizes which + should be considered a match. Like the other parts of the Pattern, if + it is unset it will be ignored. The Size Interval looks like + + (min_size,max_size) + + where "min_size" and "max_size" are integers greater than or equal to + zero. The special value "INF" may be used for the max value. It + represents infinity. + + Actually, this option may be defined as a list of intervals instead of + just a single interval. The list is separated by commas. It can look + like + + (min_size1,max_size1),(min_size2,max_size2),... + + When there is a Size Interval defined, it is a match if the size, in + bytes, of the message is contained in any of the intervals. The + intervals include both endpoints. + + Score Interval + + The "Score Interval" may be set to an interval of message scores which + should be considered a match. Like the other parts of the Pattern, if + it is unset it will be ignored. The Score Interval looks like + + (min_score,max_score) + + where "min_score" and "max_score" are integers between -32000 and + 32000. The special values "-INF" and "INF" may be used for the min and + max values to represent negative and positive infinity. + + Actually, a list of intervals may be used if you wish. A list would + look like + + (min_score1,max_score1),(min_score2,max_score2),... + + When there is a Score Interval defined, it is a match if the score for + the message is contained in any of the intervals in the list. The + intervals include the endpoints. The score for a message is calculated + by looking at every Score rule defined and adding up the Score Values + for the ones which match the message. When deciding whether or not a + Pattern matches a message for purposes of calculating the score, the + Score Interval is ignored. + + Message Status + + There are five separate message status settings. By default, all five + are set to the value "Don't care", which will match any message. The + value "Yes" means that the particular status must be true for a match, + and the value "No" means that the particular status must not be true + for a match. For example, one of the five Message Status settings is + whether a message is marked Important or not. A "Yes" means that the + message must be Important to be considered a match and "No" means that + the message must not be Important to be considered a match. The same is + true of the other four message status settings which depend on whether + or not the message is New; whether the message has been Answered or + not; whether the message has been Deleted or not, and whether the + message is Recent or not. + + The nomenclature for New and Recent is a bit confusing: + + New means that the message is Unseen. It could have been in your + mailbox for a long time but if you haven't looked at it, it is still + considered New. That matches the default _Alpine_ index display that + shows an N for such a message. + + Recent means that the message was added to this folder since the last + time you opened the folder. _Alpine_ also shows an N by default for + these types of messages. If you were to run two copies of _Alpine_ that + opened a folder one right after the other, a message would only show up + as Recent in (at most) the first _Alpine_ session. + + Message Keywords + + Keywords are similar to Message Status, but they are chosen by the + user. Provided the mail server allows for it, you may add a set of + possible keywords to a folder and then you may set those keywords or + not for each message in the folder. The syntax of this part of the + Pattern is similar to the header patterns. It is a list of keywords. + The Keyword part of the Pattern is a match if the message has any of + the keywords in the list set. Like other parts of the Pattern, if this + is unset it will be ignored. + + Message Character Set + + A message may use one or more character sets. This part of the Pattern + matches messages which make use of one or more of the character sets + specified in the pattern. It will be considered a match if a message + uses any of the character sets in the list you give here. The syntax of + this part of the Pattern is similar to the header patterns and the + Message Keywords pattern. It is a list of character sets. + + Besides actual character set names (for example, ISO-8859-7, KOI8-R, or + GB2312) you may also use some shorthand names that _Alpine_ provides. + These names are more understandable shorthand names for sets of + character set names. Two examples are "Cyrillic" and "Greek". Selecting + one of these shorthand names is equivalent to selecting all of the + character sets that make up the set. You can see all of these shorthand + names and the lists of character sets they stand for by typing the "T" + command with the Character Set pattern highlighted. The Character Set + part of the Pattern is a match if the message uses any of the character + sets in the list. Like other parts of the Pattern, if this is unset it + will be ignored. + + Raw 8-bit in Subject + + It seems that lots of unwanted email contains unencoded 8-bit + characters in the Subject. Normally, characters with the 8th bit set + are not allowed in the Subject header unless they are MIME-encoded. + This option gives you a way to match messages which have Subjects which + contain unencoded 8-bit characters. Setting this option will affect + performance in large folders because the subject of each message in the + folder has to be checked. + + Beginning of Month + + This option gives you a way to take some action once per month. The + value "Yes" means that this must be the first time _Alpine_ has been + run this month in order to count as a match, + + Beginning of Year + + This option gives you a way to take some action once per year. The + value "Yes" means that this must be the first time _Alpine_ has been + run this year in order to count as a match, + + From or Reply-To address in Address Books + + This option gives you a way to match messages which have a From or a + Reply-To address which is in one of your address books. Only the simple + entries in your address books are searched. Address book distribution + lists are ignored! Setting this option will affect performance in large + folders because the From and Reply-To of each message in the folder + have to be checked. + + Categorizer Command + + This is a command that is run with its standard input set to the + message being checked and its standard output discarded. The full + directory path should be specified. The command will be run and then + its exit status will be checked against the Exit Status Interval, which + defaults to just the value zero. If the exit status of the command + falls in the interval, it is considered a match, otherwise it is not a + match. + + This option may actually be a list of commands. The first one that + exists and is executable is used. That makes it possible to use the + same configuration with Unix _Alpine_ and _PC-Alpine_. + + If none of the commands in the list exists and is executable then the + rule is _not_ a match. If it is possible that the command may not + exist, you should be careful to structure your rules so that nothing + destructive happens when the command does not exist. For example, you + might have a filter that filters away spam when there is a match but + does nothing when there is not a match. That would continue to work + correctly if the command didn't exist. However, if you have a filter + which filters away spam when there is not a match and keeps it when + there is a match, that would filter everything if the categorizer + command didn't exist. + + Help Configuring Pattern Fields + + _Nickname_ + This is a nickname to help you. You should have a different + nickname for each role you define. The nickname will be used in + the SETUP ROLE RULES screen to allow you to pick a role to edit. + It will also be used when you send a message to let you know you + are sending with a different role than you use by default, and + it will be useful for choosing a role when composing with the + Role command or when composing with one of the Role Uses set to + With Confirmation. This field is not used in the outgoing + message. + _Comment_ + This is a comment to help you. This comment does not play any + functional role, it is simply an optional comment to help you + remember what the rule is for. + _To pattern_ + If this pattern is non-blank, then for this role to be + considered a match, at least one of the recipients from the To + line of the message being replied to or forwarded must match + this pattern. In the case of the Compose command, this pattern + and the other header patterns are ignored. If this pattern is a + list of patterns, then at least one of the recipients must match + at least one of the patterns. (Any other non-blank parts of the + Pattern must match, too.) If the message being replied to or + forwarded has a Resent-To header line, then that is used in + place of the To line. (Note that this special Resent rule only + applies to the To header. The Resent-From, Resent-Subject, and + so on are not consulted.) + It is possible to add a _NOT_ to the To Pattern meaning with the + "!" "toggle NOT" command. This changes the meaning of the To + pattern so that it has the opposite meaning. It will be + considered a match if there are no matches between the addresses + in the To: line and the list of To patterns. + Don't make the mistake of putting the "!" in the data field for + the pattern. For example, if you type the characters "!frizzle" + into the To pattern, the pattern will look like: + To pattern = !frizzle + + This means you want to match the 8 character sequence + "!frizzle". In order to match messages which do not have + "frizzle" in their To field, first type the characters "frizzle" + followed by carriage return for the value of the To pattern, + then negate it by typing the "!" command. It should end up + looking like + ! To pattern = frizzle + + _From pattern_ + This is just like the To pattern except that it is compared with + the address from the From header of the message being replied to + or forwarded instead of the addresses from the To header. + _Sender pattern_ + This is just like the To pattern except that it is compared with + the address from the Sender header of the message being replied + to or forwarded instead of the addresses from the To header. If + there is no Sender header, then the From header is used instead. + _Cc pattern_ + This is just like the To pattern except that it is compared with + the address from the CC header of the message being replied to + or forwarded instead of the addresses from the To header. + _News pattern_ + If this pattern is non-blank, then for this role to be + considered a match, at least one of the newsgroups from the + Newsgroups line of the message must match this pattern. If this + pattern is a list of patterns, then at least one of the + newsgroups must match at least one of the patterns. (Any other + non-blank parts of the Pattern must match, too.) + _Subject pattern_ + This is similar to the other header patterns. It is compared + with the contents from the Subject of the message being replied + to or forwarded. + If you enter non-ascii characters in this field then the search + will be done using the character set you have defined with the + Character-Set configuration variable. (The truly sophisticated + may use an alternate character set for a search by entering the + MIME encoding of the header string here.) + _Extra header patterns_ + There isn't actually a field called Extra header patterns, but + you may add extra header patterns by moving the cursor to one of + the header patterns and using the "eXtraHdr" command to add a + new header pattern. You would do this if the six predefined + header patterns don't cover the header you want to use for + pattern matching. Once you've added an extra header pattern, you + use it just like the Subject pattern. Of course, it is compared + with the contents from the particular header field of the + message being replied to or forwarded rather than the contents + from the subject field. To remove an extra header pattern from a + role, use the "RemoveHdr" command on the highlighted extra + header. + If you enter non-ascii characters in this field then the search + will be done using the character set you have defined with the + Character-Set configuration variable. (The truly sophisticated + may use an alternate character set for a search by entering the + MIME encoding of the header string here.) + _Recipient pattern_ + This is just like the To pattern except that it is compared with + the addresses from both the To header and the Cc header instead + of just the addresses from the To header. It's equivalent to + having two different rules; one with a To pattern and the other + with the same Cc pattern. + _Participant pattern_ + This is just like the To pattern except that it is compared with + the addresses from the To header, the Cc header, and the From + header instead of just the addresses from the To header. It's + equivalent to having three different rules; one with a To + pattern, another with the same Cc pattern, and another with the + same From pattern. + _AllText pattern_ + This is similar to the header patterns. Instead of comparing + with text in a particular header field it is compared with all + of the text in the message header and body. + If you enter non-ascii characters in this field then the search + will be done using the character set you have defined with the + Character-Set configuration variable. (The truly sophisticated + may use an alternate character set for a search by entering the + MIME encoding of the header string here.) + _BodyText pattern_ + Just like AllText, except it is compared only with the body of + the message, not the body and header. + If you enter non-ascii characters in this field then the search + will be done using the character set you have defined with the + Character-Set configuration variable. (The truly sophisticated + may use an alternate character set for a search by entering the + MIME encoding of the header string here.) + _Age Interval_ + The Age Interval, if defined, is part of the Pattern. If you use + this, it should be set to something like: + + (min_age,max_age) + where "min_age" and "max_age" are non-negative integers. The + special value "INF" may be used for the max value. It represents + infinity. + In rare cases it may be useful to use the more general form of + the value, which is a comma-separated list of intervals. It + would look something like: + + (min_age1,max_age1),(min_age2,max_age2),... + When there is an Age Interval defined, it is a match if the age, + in days, of the message is contained in the interval. The + interval includes both endpoints. If the option is set to a list + of intervals then it is a match if the age of the message is + contained in any of the intervals. + Even though this option is called Age, it isn't actually the + _age_ of the message. Instead, it is how many days ago the + message arrived in one of your folders. If the current time is a + little past midnight, then a message that arrived just before + midnight arrived yesterday, even though the message is only a + few minutes old. By default, the date being used is not the date + in the Date header of the message. It is the date that the + message arrived in one of your folders. When you Save a message + from one folder to another that arrival date is preserved. If + you would like to use the date in the Date header that is + possible. Turn on the option _use-date-header-for-age_ near the + bottom of the rule definition. + A value of 0 is today, 1 is yesterday, 2 is the day before + yesterday, and so on. The age interval + + (2,2) + matches all messages that arrived on the day before yesterday. + The interval + + (180,INF) + matches all messages that arrived at least 180 days before + today. The interval + + (0,1) + matches all messages that arrived today or yesterday. + _Score Interval_ + The Score Interval, if defined, is part of the Pattern. If you + use this, it should be set to something like: + + (min_score,max_score) + where "min_score" and "max_score" are integers between -32000 + and 32000. The special values "-INF" and "INF" can be used for + the min and max values. These represent negative and positive + infinity. + Actually, the value may be a list of intervals rather than just + a single interval if that is useful. The elements of the list + are separated by commas like: + + (min_score1,max_score1),(min_score2,max_score2),... + When there is a Score Interval defined, it is a match if the + score for the message is contained in any of the intervals. The + intervals include both endpoints. The score for a message is + calculated by looking at every scoring rule defined and adding + up the Score Values for the rules which match the message. + _Keyword pattern_ + A folder may have user-defined keywords. These are similar to + the Important flag which the user may set using the Flag + command. The difference is that the Important flag is always + present for each folder. User-defined keywords are picked by the + user. You may add new keywords by defining them in the Keywords + option in the Setup/Config screen. After you have added a + potential keyword with the Keywords option, the Flag command may + be used to set or clear the keyword on individual messages. If + you have given a keyword a nickname when configuring it, that + nickname may be used instead of the actual keyword. + When filling in a value for this field, it may be easiest to use + the "T" command, which presents you with a list of the keywords + you have defined to choose from. + This part of the Pattern matches messages with certain keywords + set. It will be considered a match if a message has any of the + keywords in the list set. + It is possible to add a _NOT_ to the Keyword Pattern meaning + with the "!" "toggle NOT" command. This changes the meaning of + the Keyword pattern so that it has the opposite meaning. It will + be considered a match if none of the keywords in the list are + set for a message. + Don't make the mistake of putting the "!" in the data field for + the pattern. For example, if you type the characters "!frizzle" + into the Keyword pattern, the pattern will look like: + Keyword pattern = !frizzle + + This means you want to match the 8 character sequence + "!frizzle". In order to match messages which do not have the + keyword "frizzle" set, first type the characters "frizzle" + followed by carriage return for the value of the Keyword + pattern, then negate it by typing the "!" command. It should end + up looking like + ! Keyword pattern = frizzle + + _Character Set pattern_ + A message may use one or more character sets. This part of the + Pattern matches messages which make use of certain specified + character sets. It will be considered a match if a message uses + any of the character sets in the list you give here. + When filling in a value for this field, you may use the "T" + command, which presents you with a large list of possible + character sets to choose from. You may also just type in the + name of a character set, and it need not be one that Alpine + knows about. + Besides actual character set names (for example, ISO-8859-7, + KOI8-R, or GB2312) you may also use some shorthand names that + Alpine provides. These names are more understandable shorthand + names for sets of character set names. Two examples are + "Cyrillic" and "Greek". Selecting one of these shorthand names + is equivalent to selecting all of the character sets that make + up the set. You can see all of these shorthand names and the + lists of character sets they stand for by typing the "T" + command. + For the purposes of this Pattern, _Alpine_ will search through a + message for all of the text parts and collect the character sets + declared for each part. It will also look in the Subject line + for a character set used there. _Alpine_ does not actually look + at the text of the message or the text of the Subject to + determine if a declared character set is actually used, it looks + only at the declarations themselves in the MIME part headers and + in the Subject. + It is possible to add a _NOT_ to the Character Set Pattern + meaning with the "!" "toggle NOT" command. This changes the + meaning of the Character Set pattern so that it has the opposite + meaning. It will be considered a match if none of the character + sets in the list are used in a message. + Don't make the mistake of putting the "!" in the data field for + the pattern. For example, if you type the characters "!GB2312" + into the Character Set pattern, the pattern will look like: + Charset pattern = !GB2312 + + This means you want to match the 7 character sequence "!GB2312". + In order to match messages which do not have the character set + "GB2312" set, first type the characters "GB2312" followed by + carriage return for the value of the Character Set pattern, then + negate it by typing the "!" command. It should end up looking + like + ! Charset pattern = GB2312 + + A technicality: Since comma is the character used to separate + multiple values in a pattern field, you have to escape comma + with a backslash (\) if you want to include a literal comma in + the field. In other words, if you type a backslash followed by a + comma it will be interpreted as a comma by _Alpine_, instead of + as a separator between pattern values. All other backslashes are + literal backslashes and should not be escaped. + _Current Folder Type_ + The Current Folder Type is part of the Pattern. It refers to the + type of the currently open folder, which is the folder you were + last looking at from the MESSAGE INDEX or MESSAGE TEXT screen. + In order for a pattern to be considered a match, the current + folder must be of the type you set here. The three types "Any", + "News", and "Email" are all what you might think. + If the Current Folder Type for a Pattern is set to "News", for + example, then that will only be a match if the current folder is + a newsgroup and the rest of the Pattern matches. The value + "Specific" may be used when you want to limit the match to a + specific folder (not just a specific type of folder), or to a + list of specific folders. In order to match a specific folder + you must Select the "Specific" button _AND_ you must fill in the + name (or list of names) of the folder in the "Folder" field. If + the current folder is any of the folders in the list, that is + considered a match. The name of each folder in the list may be + either "INBOX", the technical specification of the folder (like + what appears in your configuration file) or, if the folder is + one of your incoming folders, it may be the nickname you've + given the folder. Here are a couple samples of specific folder + names: + + {monet.art.example.com}mail/art-class + + {news.example.com/nntp}#news.comp.mail.pine + The easiest way to fill in the "Folder" field is to use the T + command which is available when the "Folder" line is hilighted. + Note that you won't be able to edit the "Folder" line unless the + Current Folder Type is set to "Specific", and any value that + "Folder" has is ignored unless the type is set to "Specific". + When reading a newsgroup, there may be a performance penalty + incurred when collecting the information necessary to check a + Pattern. For this reason, the default Current Folder Type is set + to "Email". For example, a role with a non-Normal Index Line + Color and a Current Folder Type of "Any" or "News" may cause the + MESSAGE INDEX screen to draw more slowly when in a newsgroup. + _Message Status Important_ + This part of the Pattern may have one of three possible values. + The default value is "Don't care", which matches any message. + The other two values are "Yes", which means the message must be + flagged "Important" in order to be a match; or "No", which means + the message must _not_ be flagged "Important" in order to be + considered a match. + _Message Status New_ + This part of the Pattern may have one of three possible values. + The default value is "Don't care", which matches any message. + The other two values are "Yes", which means the message must be + "New" in order to be a match; or "No", which means the message + must _not_ be "New" in order to be a match. "New" is the same as + _Unseen_ and not "New" is the same as _Seen_. + The nomenclature for New and Recent is a bit confusing: + New means that the message is Unseen. It could have been in your + mailbox for a long time but if you haven't looked at it, it is + still considered New. That matches the default _Alpine_ index + display that shows an N for such a message. + Recent means that the message was added to this folder since the + last time you opened the folder. _Alpine_ also shows an N by + default for these types of messages. If you were to run two + copies of _Alpine_ that opened a folder one right after the + other, a message would only show up as Recent in (at most) the + first _Alpine_ session. + _Message Status Recent_ + This part of the Pattern may have one of three possible values. + The default value is "Don't care", which matches any message. + The other two values are "Yes", which means the message must be + "Recent" in order to be a match; or "No", which means the + message must _not_ be "Recent" in order to be a match. "Recent" + means that the message was added to the folder since the last + time the folder was opened. If more than one mail client has the + folder opened, the message will appear to be "Recent" to only + one of the clients. + The nomenclature for New and Recent is a bit confusing: + New means that the message is Unseen. It could have been in your + mailbox for a long time but if you haven't looked at it, it is + still considered New. That matches the default _Alpine_ index + display that shows an N for such a message. + Recent means that the message was added to this folder since the + last time you opened the folder. _Alpine_ also shows an N by + default for these types of messages. If you were to run two + copies of _Alpine_ that opened a folder one right after the + other, a message would only show up as Recent in (at most) the + first _Alpine_ session. + _Message Status Deleted_ + This part of the Pattern may have one of three possible values. + The default value is "Don't care", which matches any message. + The other two values are "Yes", which means the message must be + marked "Deleted" in order to be a match; or "No", which means + the message must _not_ be marked "Deleted" in order to be a + match. + If you are thinking of using this part of the Pattern as a way + to prevent messages from being filtered more than once in a + Filter Pattern, take a look at the Filter Option + "move-only-if-not-deleted" instead. It should work better than + using this field since it will hide the filtered messages even + if they are already Deleted. + _Message Status Answered_ + This part of the Pattern may have one of three possible values. + The default value is "Don't care", which matches any message. + The other two values are "Yes", which means the message must be + marked "Answered" in order to be a match; or "No", which means + the message must _not_ be marked "Answered" in order to be a + match. + _Subject Contains Raw 8-bit_ + This part of the Pattern may have one of three possible values. + The default value is "Don't care", which matches any message. + The other two values are "Yes", which means the Subject of the + message must contain unencoded 8-bit characters (characters with + the most significant bit set) in order to be a match; or "No", + which means the Subject must _not_ contain unencoded 8-bit + characters in order to be a match. + _Beginning of Month_ + This part of the Pattern may have one of three possible values. + The default value is "Don't care", which matches any message. + The other two values are "Yes", which means this is the first + time _Alpine_ has been run this month; or "No", which means this + is _not_ the first time _Alpine_ has been run this month. The + way that _Alpine_ decides if it is the beginning of the month or + not is to compare today's date with the date stored in the + Last-Time-Prune-Questioned variable in the config file. If the + month of today's date is later than the month stored in the + variable, then this is considered to be the first time you have + run Alpine this month, and that turns the Beginning of the Month + option on. + _Beginning of Year_ + This part of the Pattern may have one of three possible values. + The default value is "Don't care", which matches any message. + The other two values are "Yes", which means this is the first + time _Alpine_ has been run this year; or "No", which means this + is _not_ the first time _Alpine_ has been run this year. The way + that _Alpine_ decides if it is the beginning of the year or not + is to compare today's date with the date stored in the + Last-Time-Prune-Questioned variable in the config file. If the + year of today's date is later than the year stored in the + variable, then this is considered to be the first time you have + run Alpine this year, and that turns the Beginning of the Year + option on. + _From or Reply-To in Address Book_ + This part of the Pattern may have one of five possible values. + The default value is "Don't care", which matches any message. + The value "Yes, in any address book" means either the From + address or the Reply-To address of the message must be in at + least one of your address books in order to be a match. The + value "No, not in any address book" means neither the From nor + the Reply-To addresses may be in any of your address books in + order to be a match. + The values "Yes, in specific address books" and "No, not in any + of specific address books" are similar but instead of depending + on all address books you are allowed to give a list of address + books to look in. Usually this would be a single address book + but it may be a list of address books as well. For each of these + "specific" address book options you Select which of the Specific + options you want (Yes or No) _AND_ fill in the name (or list of + names) of the address book in the "Abook List" field. The names + to be used are those that appear in the ADDRESS BOOK LIST + screen. The easiest way to fill in the Abook List field it to + use the "T" command which is available when the "Abook List" + line is highlighted. Note that you won't be able to edit the + "Abook List" line unless the option is set to one of the two + "Specific", values. + _Categorizer Command_ + This is a command that is run with its standard input set to the + message being checked and its standard output discarded. The + full directory path should be specified. The command will be run + and then its exit status will be checked against the _Exit + Status Interval_, which defaults to just the value zero. If the + exit status of the command falls in the interval, it is + considered a match, otherwise it is not a match. + This option may actually be a list of commands. The first one + that exists and is executable is used. That makes it possible to + use the same configuration with Unix _Alpine_ and _PC-Alpine_. + If none of the commands in the list exists and is executable + then the rule is _not_ a match. If it is possible that the + command may not exist, you should be careful to structure your + rules so that nothing destructive happens when the command does + not exist. For example, you might have a filter that filters + away spam when there is a match but does nothing when there is + not a match. That would continue to work correctly if the + command didn't exist. However, if you have a filter which + filters away spam when there is not a match and keeps it when + there is a match, that would filter everything if the + categorizer command didn't exist. + The categorizer command is run and the result is the exit status + of that command. If that exit status falls in the _Exit Status + Interval_ then it is considered a match, otherwise it is not a + match. Of course for the entire rule to match, it must also be + checked against the other defined parts of the Pattern. + The _Exit Status Interval_ defaults to the single value 0 + (zero). If you define it, it should be set to something like: + + (min_exit_value,max_exit_value) + where "min_exit_value" and "max_exit_value" are integers. The + special values "INF" and "-INF" may be used for large positive + and negative integers. + Actually, a list of intervals may be used if you wish. A list + would look like + + (min_exit_value1,max_exit_value1),(min_exit_value2,max_exit_value2),... + When there is an _Exit Status Interval_ defined, it is a match + if the exit status of the categorizer command is contained in + any of the intervals. The intervals include both endpoints. + The default interval is + + (0,0) + and it matches only if the command exits with exit status equal + to zero. + It is also possible to set a _Character Limit_ for the + categorizer command. Setting this option makes it possible to + limit how much of the message is made available to the + categorizer command as input. The default value (-1) means that + the entire message is fed to the command. A value of 0 (zero) + means that only the headers of the message are made available. A + positive integer means that the headers plus that many + characters from the body of the message are passed to the + categorizer. + +Configuring News + + _Alpine_ can access news folders in any one of three different ways: + + REMOTE NNTP + Using the Network News Transport Protocol (NNTP) to access news + on a remote news server. In this case the newsrc file is stored + on the machine where _Alpine_ is running. + + To specify a remote news-collection accessed via NNTP use the + SETUP/collectionList screen's "Add" command. Set the Server: + value to the NNTP server's hostname appended with the + communication method "/service=NNTP", and set the Path: value to + the "#news." namespace (without the quotes). + + Instead of specifying a news-collection, you may simply set the + nntp-server option, which will cause _Alpine_ to create a + default news-collection for you. Another NNTP option which may + be of interest is nntp-range. + + REMOTE IMAP + Using the Internet Message Access Protocol (IMAP) to access news + on a remote news server. In this case, your newsrc file is + stored on the news server, in your home directory, so you must + have an account on the news server, but you would be running + _Alpine_ on a different machine. The news server must be running + an IMAPd server process. + + To specify a remote news-collection accessed via IMAP use the + SETUP/collectionList screen's "Add" command. Set the Server: + value to the IMAP server's hostname, and set the Path: value to + the "#news." namespace (without the quotes). + + LOCAL + Using local file access to the news database. In this case, your + newsrc file is stored on the news server, in your home + directory, so you must have an account on the news server, and + you would be running _Alpine_ on the same machine. + + To specify a local news-collection use the SETUP/collectionList + screen's "Add" command. Leave the Server: value blank, and set + the Path: value to the "#news." namespace (without the quotes). + + NOTE: Should no news-collection be defined as above, _Alpine_ will + automatically create one using the Setup/Config screen's "nntp-server" + variable's value if defined. The collection will be created as a + "Remote NNTP" as described above. + + If you are a _PC-Alpine_ user, either option 1 (NNTP) or option 2 + (IMAP) is possible. If you don't have an account on the news server, or + if the news server is not running an IMAP daemon, then you must use + NNTP. (If you are not sure, ask your service provider, university, or + company for help.) In this case, your Unix .newsrc file can be + transferred to your PC. A good place to put it would be in the same + directory as your PINERC file, under the name NEWSRC, but you can + specify a different location. + + Other configuration features related to news are + Enable-8bit-Nntp-Posting. Compose-Sets-Newsgroup-Without-Confirm, + News-Approximates-New-Status, News-Deletes-Across-Groups, + News-Offers-Catchup-On-Close, News-Post-Without-Validation, + News-Read-in-Newsrc-Order, and Quell-Extra-Post-Prompt. + __________________________________________________________________ + + Notes on Configuration and Preferences + +Alpine in Function Key Mode + + The standard _Alpine_ uses alphabetic keys for most commands, and + control keys in the composer. Despite possible appearances, the current + bindings are the result of much discussion and thought. All the + commands in the composer are single control characters. This keeps + things very neat and simple for users. Two character commands in the + composer are a possibility, but we're trying to avoid them because of + the added complexity for the user. + + _Alpine_ can also operate in a function-key mode. To go into this mode + invoke _alpine -k_ or (on some UNIX systems) _alpinef._ On a UNIX + system, you can link or copy the _Alpine_ executable to _alpinef_ to + install _alpinef._ Alternatively, users and systems administrators can + set the _use-function-keys_ feature in the personal or system-wide + _Alpine_ configuration file. The command menus at the bottom of the + screen will show _F1-F12 _instead of the alphabetic commands. In + addition, the help screens will be written in terms of function keys + and not alphabetic keys. + + One of the results of using _Alpine_ in function-key mode is that users + can only choose from twelve commands at any given time. In + alphabetic-key mode, a user can press a key for a command (say, q to + quit) and that command can be fulfilled. In function-key mode, the + command must be visible on the bottom key-menu in order to be used. + There are some screens where four screens of commands are operational; + function-key users can get to all of them, just not all at once. + __________________________________________________________________ + +Domain Settings + + _Alpine_ uses the default domain for a few different tasks. First, it + is tacked onto the user-id for outgoing email. Second, it is tacked + onto all "local" (unqualified) addresses in the "To:" or "Cc:" fields + of messages being composed (unless they are found in the address book + or on an LDAP server). The domain name is also used to generate + message-id lines for each outgoing message and to allow _Alpine_ to + check if an address is that of the current _Alpine_ user. + + _Alpine_ determines the domain name according to whichever of these it + finds. The list here is in decreasing order of precedence. + 1. Value of the variable user-domain in the system fixed configuration + file + 2. Value of the variable _user-domain_ in the personal configuration + file + 3. Value of the variable _user-domain_ in the system-wide + configuration file + 4. Value from an external database (DNS, /etc/hosts, NIS) as modified + by a system fixed configuration file if use-only-domain-name set to + _yes_ + 5. Value from an external database (DNS, /etc/hosts, NIS) as modified + by a personal configuration file if _use-only-domain-name_ set to + _yes_ + 6. Value from an external database (DNS, /etc/hosts, NIS) as modified + by a system configuration file if _use-only-domain-name_ set to + _yes_ + 7. Unmodified value (host name) from an external database + + The easiest way for this system to work is for _PC-Alpine_ users and + UNIX _Alpine_ system administrators to set the _user-domain_ variable. + The variable _use-only-domain-name_ is helpful if your site + supports/requires hostless addressing, but for some reason you don't + want to use the _user-domain_ variable. + __________________________________________________________________ + +Syntax for Collections + + In many environments, it is quite common to have collections of + archived mail on various hosts around the network. Using the folder + collections facility in _Alpine_, access to these archives is just as + simple as access to folders on _Alpine_'s local disk. + + "Collection" is the word we use in _Alpine_ to describe a set of + folders. A collection corresponds loosely to a "directory" containing + mail folders. Folders within a defined collection can be manipulated + (opened, saved-to, etc) using just their simple name. Any number of + folder collections can be defined, and _Alpine_ will adjust its menus + and prompts to help navigate them. + + The way collections are defined in _Alpine_ is with the + folder-collections variable in the _Alpine_ configuration file. + _Folder-collections_ takes a list of one or more collections, each + (optionally) preceded by a user-defined logical name (label). Once + collections are defined, _Alpine_ adjusts its menus and behavior to + allow choosing files by their simple name within the collection. + + Consider the following: + folder-collections= Local-Mail C:\MAIL\[], + Remote-Mail {imap.u.example.edu}mail/[] + + The example shows two collections defined (a comma separated list; + newlines in the list are OK if there's one or more spaces before the + next entry), one local and one remote. Each collection is a + space-delimited pair of elements-first an optional logical-name and + second the collection specifier. The logical-name can have spaces if it + has quotes around it (but keeping the logical name short and + descriptive works best). _Alpine_ will use the logical-name (if + provided) to reference all folders in the collection, so the user never + has to see the ugliness of the collection specifier. + + The collection specifier can be thought of as an extended IMAP format + (see the Remote Folders section for a description of IMAP format + names). Basically, a pair of square-brackets are placed in the fully + qualified IMAP path where the simple folder name (the part without the + host name and path) would appear. Like IMAP, the path can be either + fully qualified (i.e., with a leading '/') or relative to your home + directory. + + An advanced feature of this notation is that a pattern within the + square brackets allows the user to define a collection to be a subset + of a directory. For example, a collection defined with the specifier: + M-Mail C:MAIL/[m*] + + + will provide a view in the folder lister of all folders in the PC's + "C:MAIL" directory that start with the letter 'm' (case insensitive + under DOS, of course). Further, the wildcard matching will honor + characters trailing the '*' in the pattern. + + From within _Alpine_, the "Folder List" display will be adjusted to + allow browsing of the folders in any defined collection. Even more, + you'll notice in the _Goto_ and _Save_ commands a pair of sub-commands + to rotate through the list of logical collection names, so only a + simple name need be input in order to operate on a folder in any + collection. + + The first collection specified in the _folder-collections_ has special + significance. That folder is the "default collection for saves". By + default, in cases where the user does not specify which collection + should be used to _Save_ a message, the default collection for saves + will be used. Also, if the default-fcc is a relative file name, then it + is relative to the default collection for saves. (See also + saved-msg-name-rule. + + The notion of collections encompasses both email folders and news + reading. The variable news-collections uses nearly the same format as + _folder-collections_. Newsgroups can be defined for convenient access + via either IMAP or NNTP. There are advantages and disadvantages to both + access methods. In the IMAP case, your news environment state is + maintained on the server and, thus, will be seen by any client. The + downside is that, at the moment, you must have an account on the + server. In the NNTP case, server access is mostly anonymous and no + state/accounting need be maintained on it. The downside is that each + client, for now, must individually maintain news environment state. + + An example pinerc entry might be: + news-collections= Remote-State {news.u.example.edu}#news.[], + Local-State {news.u.example.edu/nntp}#news.[] + + Only newsgroups to which you are subscribed are included in the + collection. + + The pattern matching facility can be applied so as to define a news + collection which is a subset of all the newsgroups you subscribe to. + For example, this could be a valid collection: + Newsfeed-News {news.u.example.edu/nntp}#news.[clari.*] + + Collection handling is a tough problem to solve in a general way, and + the explanation of the syntax is a bit ugly. The upside is, hopefully, + that for a little complexity in the _Alpine_ configuration file you get + simple management of multiple folders in diverse locations. + + Collection setup is handled by the _Setup/collectionList_ screen. + __________________________________________________________________ + +Syntax for Folder Names + + Remote folders are distinguished from local folders by a leading host + name bracketed by '{' and '}'. The path and folder name immediately + following the closing bracket, '}', is interpreted by the remote server + and is in a form compatible with that server (i.e., path delimiters and + naming syntax relative to that server). + + The full syntax for a _Alpine_ folder name looks like + + [{<remote-specification>}][#<namespace>]<namespace-specific-part> + + The square brackets ([]) mean that the part is optional. + + If there is no remote-specification, then the folder name is + interpreted locally on the computer running _Alpine_. Local folder + names depend on the operating system used by the computer running + _Alpine_, as well as the configuration of that system. For example, + "C:\ALPINE\FOLDERS\OCT-94" might exist on a PC, and + "~/mail/september-1994" might be a reasonable folder name on a system + running Unix. + + _Alpine_ users have the option of using folders which are stored on + some other computer. _Alpine_ accesses remote folders via IMAP (the + Internet Message Access Protocol), or in the case of news, via NNTP + (the Network News Transport Protocol). To be able to access remote + folders in _Alpine_, the remote host must be running the appropriate + server software (imapd or nntpd) and you must correctly specify the + name of the folder to _Alpine_, including the domain name of the remote + machine. For example, + + {monet.art.example.com}INBOX + + could be a remote folder specification, and so could + + {unixhost.art.example.com}~/mail/september-1994 + + and + + {winhost.art.example.com}\mymail\SEP-94 + + Note that in the case of remote folders, the directory/file path in the + specification is determined by the operating system of the remote + computer, _not_ by the operating system of the computer on which you + are running _Alpine_. + + As you can tell, the name of the computer is in {} brackets followed + immediately by the name of the folder. (In each of these cases the + optional namespace is missing.) If, as in these examples, there is no + remote access protocol specified, then IMAP is assumed. Check Server + Name Syntax for a more detailed look at what options can be placed + between the brackets. If there are no brackets at all, then the folder + name is interpreted locally on the computer on which you are running + _Alpine_. + + To the right of the brackets when a server name is present, or at the + start of the foldername if no server is present, the sharp sign, "#", + holds special meaning. It indicates a folder name outside the area + reserved for your personal folders. In fact, it's used to indicate both + the name of the folder, and a special phrase telling _Alpine_ how to + interpret the name that follows. + + So, for example, _Alpine_ can be used to access a newsgroup that might + be available on your computer using: + + #news.comp.mail.pine + + The sharp sign indicates the folder name is outside your personal + folder area. The "news." phrase after it tells _Alpine_ to interpret + the remainder of the name as a newsgroup. + + Similarly, to access a newsgroup on your IMAP server, you might use + something like: + + {wharhol.art.example.com}#news.comp.mail.misc + + There are a number of such special phrases (or "namespaces") available. + For a more detailed explanation read about Namespaces. + + Note that "INBOX" has special meaning in both local and remote folder + names. The name INBOX refers to your "principal incoming message + folder" and will be mapped to the actual file name used for your INBOX + on any given host. Therefore, a name like "{xxx.art.example.com}INBOX" + refers to whatever file is used to store incoming mail for you on that + particular host. + __________________________________________________________________ + +Server Name Syntax + + This section describes the syntax which may be used for server names + which may be associated with remote folders or SMTP servers. + + A server name is the hostname of the server. It's a good idea to use + the host's fully-qualified network name. + + foo.example.com + + However, IP addresses are allowed if surrounded with square-brackets. + + [127.0.0.1] + + An optional network port number may be supplied by appending a colon + (:) followed by the port number to the server name. By default, the + IMAP port number, 143, is used. + + foo.example.com:port + + Besides server name and optional port number, various other optional + parameters may be supplied that alter _Alpine_'s interaction with the + server. A parameter is supplied by appending a slash (/) character + followed by the parameter's name and, depending on the particular + parameter, the value assigned to that name, to the server name (and + optional port number). Parameter names are _not_ case sensitive. + Currently supported parameters include: + + User + This parameter requires an associated value, and is intended to + provide the username identifier with which to establish the + server connection. If your SMTP server offers SMTP AUTH + authentication, adding this parameter to the SMTP-Server option + will cause _Alpine_ to attempt to authenticate to the server + using the supplied username. Similarly, if your NNTP server + offers NNTP "AUTHINFO SASL" or "AUTHINFO USER" authentication, + adding this parameter to the NNTP-Server option (or to the + server name for any folder collection using NNTP) will cause + _Alpine_ to attempt to authenticate to the server using the + supplied username. An example might be: + + /user=katie + + TLS + Normally, when a new connection is made an attempt is made to + negotiate a secure (encrypted) session using Transport Layer + Security (TLS). If that fails then a non-encrypted connection + will be attempted instead. This is a unary parameter indicating + communication with the server must take place over a TLS + connection. If the attempt to use TLS fails then this parameter + will cause the connection to fail instead of falling back to an + unsecure connection. + + /tls + + SSL + This is a unary parameter indicating communication with the + server should take place over a Secure Socket Layer connection. + The server must support this method, and be prepared to accept + connections on the appropriate port (993 by default). _Alpine_ + must be linked with an SSL library for this option to be + operational. + + /ssl + + NoValidate-Cert + Do not validate certificates (for TLS or SSL connections) from + the server. This is needed if the server uses self-signed + certificates or if _Alpine_ cannot validate the certificate for + some other known reason. + + Anonymous + This is a unary parameter (that means it does not have a value) + indicating that the connection be logged in as "anonymous" + rather than a specific user. Not all servers offer anonymous + access; those which do generally only offer read-only access to + certain "public" folders. + + /anonymous + + Secure + This is a unary parameter indicating that the connection use the + most secure authentication method mutually supported by _Alpine_ + and the server. _Alpine_ is capable of authenticating + connections to the server using several methods. By default, + _Alpine_ will attempt each method until either a connection is + established or the list of methods is exhausted. This parameter + causes _Alpine_ to instead fail the connection if the first + (generally most "secure") method fails. + + /secure + + Submit + This is a unary parameter for use with the "SMTP-Server" option. + It indicates that the connection should be made to the Submit + server (RFC 3676) (port 587) instead of the SMTP port (25). At + the time this help was written the submit option was equivalent + to specifying port 587. + + /submit + + or + + host:587 + + Debug + This is a unary parameter indicating that the connection be + established in a verbose mode. Basically, it causes _Alpine_ to + log the communication with the server in _Alpine_'s debug file. + Normally, the alpine -d command-line flag would be used instead. + + NoRsh + By default, _Alpine_ attempts to login using "rsh", the UNIX + remote shell program. Including "NoRsh" will cause connections + to this server to skip the "rsh" attempt. This might be useful + to avoid long timeouts caused by rsh firewalls, for example. + + Service + This parameter requires an associated value. The default value + is "IMAP" which indicates communication with the server based on + the IMAP4rev1 protocol (defined in RFC 3501 -- see + http://www.imap.org/docs/rfc3501.html). Other service values + include: + + NNTP + This value indicates communication with the server takes + place via the Network News Transfer Protocol. Use this to + define a collection of newsgroups on a remote news server. + So + + /service=NNTP + + or just + + /NNTP + + is the way to specify NNTP access. + + POP3 + This value indicates communication with the server takes + place via the Post Office Protocol 3 protocol. + + /service=POP3 + + or just + + /POP3 + + Note that there are several important issues to consider + when selecting this option: + + 1. POP3 provides access to only your INBOX. In other words, + secondary folders such as your "saved-messages" are + inaccessible. + 2. _Alpine_'s implementation of POP3 does not follow the + traditional POP model and will leave your mail on the + server. Refer to the Mail Drop functionality for a + possible way around this problem. + 3. See the discussion about new-mail checking in + Folder-Reopen-Rule. + + Note that it is possible to include more than one parameter in a server + specification by concatenating the parameters. For example: + + foo.example.com:port/user=katie/novalidate-cert/debug + __________________________________________________________________ + +Folder Namespaces + + A _Alpine_ folder name looks like + + [{<remote-specification>}][#<namespace>][<namespace-specific-part>] + + The local part of a folder name has an optional "Namespace" which tells + _Alpine_ how to interpret the rest of the name. + + By default the folder name is interpreted as defining a section of your + personal folder area. This area and how you specify it are defined by + the server, if one is specified, or, typically, the home directory, if + no server is defined. + + If a namespace is specified, it begins with the sharp, "#", character + followed by the name of the namespace and then the namespace's + path-element-delimiter. Aside from the path's format, namespaces can + also imply access rights, content policy, audience, location, and, + occasionally, access methods. + + Each server exports its own set (possibly of size one) of namespaces. + Hence, it's likely communication with your server's administrator will + be required for specific configurations. Some of the more common + namespaces, however, include: + + #news. + This specifies a set of folders in the newsgroup namespace. + Newsgroup names are hierarchically defined with each level + delimited by a period. + + #news.comp.mail.pine + + #public/ + This specifies a folder area that the server may export to the + general public. + + #shared/ + This specifies a folder area that the folder may export to + groups of users. + + #ftp/ + This specifies a folder area that is the same as that it may + have exported via the "File Transfer Protocol". + + #mh/ + This specifies the personal folder area associated with folders + and directories that were created using the MH message handling + system. + + #move/ + This namespace is interpreted locally by _Alpine_. It has an + unusual interpretation and format. + + #move<DELIM><MailDropFolder><DELIM><DestinationFolder> + + The #move namespace is followed by two folder names separated by + a delimiter character. The delimiter character may be any + character which does not appear in the MailDropFolder name. The + meaning of #move is that mail will be copied from the + MailDropFolder to the DestinationFolder and then deleted (if + possible) from the MailDropFolder. Periodic checks at frequency + Mail-Check-Interval, but with a minimum time between checks set + by MailDrop-Check-Minimum, are made for new mail arriving in the + MailDropFolder. An example which copies mail from a POP inbox to + a local folder follows + + #move+{popserver.example.com/pop3/ssl}inbox+local folder + + To you it appears that mail is being delivered to the local + folder when it is copied from the MailDropFolder, and you read + mail from the local folder. + + Note that if the DestinationFolder does not exist then the + messages are not copied from the MailDropFolder. A #move folder + may only be used as an Incoming folder or an Inbox. When you are + in the FOLDER LIST of Incoming Message Folders (after turning on + the enable-incoming-folders option) the Add command has a + subcommand "Use Mail Drop" which may be helpful for defining the + folder in your _Alpine_ configuration. The same is true when you + edit the Inbox-Path option in Setup/Config. Each of these + configuration methods will also create the DestinationFolder if + it doesn't already exist. If you are having problems, make sure + the DestinationFolder exists. + + In addition, the server may support access to other user's folders, + provided you have suitable permissions. Common methods use a prefix of + either "~user/", or "/user/" to indicate the root of the other user's + folder area. + __________________________________________________________________ + +What is a Mail Drop? + + In some situaions it may make sense to have your mail delivered to one + folder (the Mail Drop) and then when you want to read mail that has + been delivered to the Mail Drop folder _Alpine_ will move it to another + destination folder. Often the Mail Drop will be a remote folder and + messages will be moved from there to a local destination folder. + + One example where this might make sense is if the Mail Drop folder is + accessible only with the POP protocol. You could designate your POP + inbox as the Mail Drop folder and have _Alpine_ move mail from there to + a local (on the same machine _Alpine_ is running on) destination + folder, where you'll read it. + + A Mail Drop may only be used as your Inbox or as an Incoming folder. + + There is no attempt to synchronize the contents of the destination + folder with the contents of the Mail Drop folder. All that happens is + that all of the messages in the Mail Drop folder are copied to the + destination folder and then they are deleted and expunged (if possible) + from the Mail Drop folder. The next time a check for new mail is made, + any messages in the Mail Drop folder are once again copied to the + destination folder and deleted and expunged from the Mail Drop folder. + (If the Mail Drop folder is a news group, then the messages can't be + expunged from the newsgroup. Instead, only Recent messages are copied + from the newsgroup to the destination folder.) + + Configuration of a Mail Drop is a little different from configuration + of a folder which does not use a Mail Drop because you have to specify + two folder names instead of one. The two folders may be any types of + folders that _Alpine_ can normally use. They don't have to be a remote + folder and a local folder, that is simply the most common usage. When + you use a Mail Drop folder _Alpine_ will periodically re-open the Mail + Drop to check for new mail. The new-mail checks will happen at the + frequency set with the Mail-Check-Interval option, but with a minimum + time (MailDrop-Check-Minimum) between checks. Because of this minimum + you may notice that new mail does not appear promptly when you expect + it. The reason for this is to protect the server from over-zealous + opening and closing of the Mail Drop folder. If the user initiates the + check by typing ^L (Ctrl-L) or the Next command when at the end of the + folder index, then the check will happen, regardless of how long it has + been since the previous check. + + If there is new mail, that mail will be copied to the destination + folder and then will be deleted from the Mail Drop. Note that using a + Mail Drop with a local destination folder does not make sense if you + read mail from more than one machine, because the mail is downloaded to + the destination folder (which is accessible from only one machine) and + deleted from the Mail Drop. + + The feature Maildrops-Preserve-State modifies the operation of Mail + Drops. + + The actual syntax used by _Alpine_ for a folder that uses a Mail Drop + is: + + #move<DELIM><MailDropFolder><DELIM><DestinationFolder> + + The brackets are not literal. + + <DELIM> + + is a single character which does not appear in the MailDropFolder name. + If the name doesn't contain spaces then it can be a space character. + The two folder names are full technical folder names as used by + _Alpine_. Here are a couple examples to give you an idea what is being + talked about: + + #move {popserver.example.com/pop3}inbox localfolder + + #move+{nntpserver.example.com/nntp}#news.comp.mail.pine+local folder + + A #move folder may only be used as an Incoming folder or an Inbox. When + you are in the FOLDER LIST of Incoming Message Folders (after turning + on the Enable-Incoming-Folders option) the Add command has a subcommand + "Use Mail Drop" which may be helpful for defining the folder in your + _Alpine_ configuration. The same is true when you edit the Inbox-Path + option in Setup/Config. + if it doesn't already exist. If you are having problems, make sure the + DestinationFolder exists. + __________________________________________________________________ + +Sorting a Folder + + The mail index may be sorted by arrival, date, subject, from, size, + score, to, or cc order. Each sort order can also be reversed. The _$_ + command will prompt the user for the sort order. The sort order can + also be specified on the command line with the _-sort_ flag or + (equivalently) with the sort-key variable in the _pinerc_ file. When a + user changes folders, the sort order will go back to the original sort + order. The command line (_-sort_) or configuration file sort + specification (_sort-key_) changes the original sort order. + + When a folder is sorted and new mail arrives in the folder it will be + inserted in its properly sorted place. This can be a little odd when + the folder is sorted by something like the subject. It can also be a + little slow if you are viewing a large, sorted _INBOX_, since the + _INBOX_ will have to be re-sorted whenever new mail arrives. + + The sorts are all independent of case and ignore leading or trailing + white space. There are actually two forms of subject sort. One called + _Subject_ and the other called _OrderedSubj_. They both ignore "Re:" at + the beginning and "(fwd)" at the end of the subjects. _Subject_ sorts + all the subjects alphabetically. _OrderedSubj_ sorts by subjects + alphabetically, groups messages with the same subject (pseudo-threads), + then sorts the groups by the date of the first message of the group. + Sorting by _Thread_ was added after _OrderedSubj_ and is usually a + better method. Thread sorting uses information in the message headers + References, Message-ID, and Subject. It is possible the sort will be + slightly slower with a Thread sort than with an OrderedSubj sort. The + sort by sender sorts by the user-id (part before the "@"), not the full + name. The arrival sort is no sort at all and the date sort depends on + the format of the date. Some dates are in strange formats and are + unparsable. The time zone is also taken into account. + + Sorting large mail folders can be very slow since it requires fetching + all the headers of the mail messages. With UNIX _Alpine_, only the + first sort is slow since _Alpine_ keeps a copy of all the headers. One + exception is sorting in reverse arrival order. This is fast because no + headers have to be examined. _Alpine_ will show progress as it is + sorting. + __________________________________________________________________ + +Alternate Editor + + In the _Alpine_ composer you can use any text editor, such as _vi_ or + _emacs,_ for composing the message text. The addresses and subject still + must be edited using the standard _Alpine_ composer. If you include the + feature enable-alternate-editor-cmd in your _pinerc_ you can type _^__ + while in the body of the message in the composer and be prompted for + the editor. If you also set the editor variable in your _pinerc_ then + _^__ will invoke the configured editor when you type it. + + Turning on the feature enable-alternate-editor-implicitly will + automatically invoke the editor you have defined with the _editor_ + variable whenever you enter the body of a message you are composing. + For example, when you move out of the last header line and into the + body of the message, the alternate editor will be automatically + invoked. + + We know that many people would like to use the alternate editor to edit + the mail header as well. We considered several designs for this and + didn't come up with one that we liked and that was easy to implement. + One of the main problems is that you lose access to the address book. + __________________________________________________________________ + +Signatures and Signature Placement + + If the file _~/.signature_ (UNIX) or _<PINERC_directory>\PINE.SIG (PC) + exists, it will be included in all outgoing messages. It is included + before composition starts so that the user has a chance to edit it out + if he or she likes. The file name for the signature can be changed by + setting the signature-file variable in the _pinerc_. If the feature + enable-sigdashes is turned on then the line consisting of the three + characters "-- " is prepended to the signature file. When Replying or + Forwarding a message different signatures my be automatically included + by configuring them in the Roles setup screen. It's easy to include + different signatures by hand, by having multiple signature files + (_.sig1, .sig2, .sig3, etc_) and choosing to include (^R in the + composer) the correct one for the message being sent. + + _Alpine_'s default behavior encourages a user to put his or her + contribution before the inclusion of the original text of the message + being forwarded or replied to, This is contrary to some conventions, + but makes the conversation more readable when a long original message + is included in a reply for context. The reader doesn't have to scroll + through the original text that he or she has probably already seen to + find the new text. If the reader wishes to see the old message(s), the + reader can scroll further into the message. Users who prefer to add + their input at the end of a message should set the signature-at-bottom + feature. The signature will then be appended to the end of the message + after any included text. This feature applies when _Reply_ing, not when + _Forward_ing. + __________________________________________________________________ + +Feature List Variable + + _Alpine_ used to have _feature levels_ for users with different amounts + of experience. We found that this was too restrictive. _Alpine_ now has + a feature-list instead. Each user may pick and choose which features + they would like enabled (simple to do in the _Setup/Config_ screen). + There is a short description of each in Configuration Features. There + is also a short on-line help explaining the effect of each of the + features in the _Setup/Config_ screen. When the cursor is highlighting + a feature, the _?_ command will show the help text for that feature. + Features don't have values, they are just turned on or off. They are + all off by default. + + The _feature-list_ variable is different from all other configuration + variables in that its value is additive. That is, the system-wide + configuration file can have some features turned on by default. The + user can select other features in their personal configuration file and + those features will be _added_ to the set of features turned on in the + system-wide configuration file. (With all other configuration + variables, the user's values _replace_ the system-wide values.) + Likewise, additional features may be set on the command-line with the + argument "-feature-list=". These will be added to the others. + + The treatment of _feature-list_ in the system-wide _fixed_ + configuration file is also different from other variables. The system + management can fix the value of individual features by placing them in + the fixed configuration file. Users will not be able to alter those + features, but will still be able to set the other non-restricted + features the way they like. + + Because _feature-list_ is additive, there is a way to turn features off + as well as on. Prepending the prefix "no-" to any feature sets it to + off. This is useful for over-riding the system-wide default in the + personal configuration file or for over-riding the system-wide default + or the personal configuration value on the command line. For example, + if the system-wide default configuration has the _quit-without-confirm_ + feature set, the user can over-ride that (and turn it off) by including + _no-quit-without-confirm_ in the personal configuration file or by + giving the command line argument + _-feature-list=no-quit-without-confirm._ More features (options) will no + doubt continue to be added. + __________________________________________________________________ + +Configuration Inheritance + + We start with an explanation of how configuration works in hopes of + making it easier to describe how inheritance works. + + _Alpine_ uses a hierarchy of configuration values from different + locations. There are five ways in which each configuration option + (configuration variable) can be set. In increasing order of precedence + they are: + + 1. the system-wide configuration file. + 2. the personal configuration file + 3. the personal exceptions file + 4. a command line argument + 5. the system-wide _fixed_ configuration file (Unix _Alpine_ only) + + The fixed configuration file is normally + /usr/local/lib/pine.conf.fixed. + + The system-wide configuration file is normally /usr/local/lib/pine.conf + for Unix _Alpine_ and is normally not set for _PC-Alpine_. For + _PC-Alpine_, if the environment variable _$PINECONF_ is set, that is + used for the system-wide configuration. This location can be set or + changed on the command line with the -P flag. The system-wide + configuration file can be either a local file or a remote configuration + folder. + + For Unix _Alpine_, the personal configuration file is normally the file + .pinerc in the user's home directory. This can be changed with the -p + command line flag. For _PC-Alpine_, the personal configuration file is + in $PINERC or <PineRC registry value> or ${HOME}\ALPINE\PINERC or + <ALPINE.EXE dir>\PINERC. This can be changed with the -p command line + flag. If -p or $PINERC is used, the configuration data may be in a + local file or a remote config folder. + + For Unix _Alpine_, the personal exceptions configuration file is + specified with the "-x exceptions_config" command line argument. + "Exceptions_config" may be either a local file or a remote + configuration folder. If there is no "-x" command line option, _Alpine_ + will look for the file ".pinercex" in the same local directory that the + regular config file is located in. If the regular config file is remote + then Unix _Alpine_ looks in the home directory for ".pinercex". + + For _PC-Alpine_, the personal exceptions configuration file is + specified with the "-x exceptions_config" command line argument. If + there is no "-x" command line argument the environment variable + $PINERCEX may be set to the name of the "exceptions_config" instead. + "Exceptions_config" may be either a local file or a remote + configuration folder. If there is no "-x" command line option and + $PINERCEX is not set, _PC-Alpine_ will look for the file "PINERCEX" in + the same local directory that the regular config file is located in. If + the regular config file is remote then _PC-Alpine_ looks in the local + directory specified by the "-aux local_directory" command line + argument, or the directory ${HOME}\ALPINE, or in <ALPINE.EXE directory> + for a file named "PINERCEX". + + To reiterate, the value of a configuration option is taken from the + last location in the list above in which it is set. Or, thinking about + it slightly differently, a default value for an option is established + in the system-wide configuration file (or in the source code if there + is no value in the system-wide file). That default remains in effect + until and unless it is overridden by a value in a location further down + the list, in which case a new "default" value is established. As we + continue down the list of locations we either retain the value at each + step or establish a new value. The value that is still set after going + through the whole list of configuration locations is the one that is + used. + + So, for example, if an option is set in the system-wide configuration + file and in the personal configuration file, but is not set in the + exceptions, on the command line, or in the fixed file; then the value + from the personal configuration file is the one that is used. Or, if it + is set in the system-wide config, in the personal config, not in the + exceptions, but is set on the command line; then the value on the + command line is used. + + Finally we get to inheritance. For configuration options which are + lists, like "smtp-server" or "incoming-folders", the inheritance + mechanism makes it possible to _combine_ the values from different + locations instead of _replacing_ the value. This is true of all + configuration lists other than the "feature-list", for which you may + already set whatever you want at any configuration location (by using + the "no-" prefix if necessary). + + To use inheritance, set the first item in a configuration list to the + token "INHERIT". If the first item is "INHERIT", then instead of + replacing the default value established so far, the rest of the list is + appended to the default value established so far and that is the new + value. + + Here is an example which may make it clearer. Suppose we have: + + System-wide config : smtp-server = smtp1.corp.com, smtp2.corp.com + Personal config : smtp-server = INHERIT, mysmtp.home + Exceptions config : smtp-server = <No Value Set> + Command line : smtp-server = <No Value Set> + Fixed config : smtp-server = <No Value Set> + + This would result in an effective smtp-server option of + + smtp-server = smtp1.corp.com, smtp2.corp.com, mysmtp.home + + The "INHERIT" token can be used in any of the configuration files and + the effect cascades. For example, if we change the above example to: + + System-wide config : smtp-server = smtp1.corp.com, smtp2.corp.com + Personal config : smtp-server = INHERIT, mysmtp.home + Exceptions config : smtp-server = INHERIT, yoursmtp.org + Command line : smtp-server = <No Value Set> + Fixed config : smtp-server = <No Value Set> + + This would result in: + + smtp-server = smtp1.corp.com, smtp2.corp.com, mysmtp.home, yoursmtp.org + + Unset variables are skipped over (the default value is carried forward) + so that, for example: + + System-wide config : smtp-server = smtp1.corp.com, smtp2.corp.com + Personal config : smtp-server = <No Value Set> + Exceptions config : smtp-server = INHERIT, yoursmtp.org + Command line : smtp-server = <No Value Set> + Fixed config : smtp-server = <No Value Set> + + produces: + + smtp-server = smtp1.corp.com, smtp2.corp.com, yoursmtp.org + + If any later configuration location has a value set (for a particular + list option) which does _not_ begin with "INHERIT", then that value + replaces whatever value has been defined up to that point. In other + words, that cancels out any previous inheritance. + + System-wide config : smtp-server = smtp1.corp.com, smtp2.corp.com + Personal config : smtp-server = INHERIT, mysmtp.org + Exceptions config : smtp-server = yoursmtp.org + Command line : smtp-server = <No Value Set> + Fixed config : smtp-server = <No Value Set> + + results in: + + smtp-server = yoursmtp.org + + For some configuration options, like "viewer-hdr-colors" or + "patterns-roles", it is difficult to insert the value "INHERIT" into + the list of values for the option using the normal Setup tools. In + other words, the color setting screen (for example) does not provide a + way to input the text "INHERIT" as the first item in the + viewer-hdr-colors option. The way to do this is to either edit the + pinerc file directly and manually insert it, or turn on the + "expose-hidden-config" feature and insert it using the Setup/Config + screen. + __________________________________________________________________ + +Using Environment Variables + + The values of _Alpine_ configuration options may include environment + variables which are replaced by the value of the variable at the time + _Alpine_ is run (and also at the time the config option is changed). The + syntax to use environment variables is a subset of the common Unix + shell dollar-syntax. For example, if + + $VAR + + appears in the value of a _Alpine_ configuration option it is looked up + in the environent (using getenv("VAR")) and its looked-up value + replaces the $VAR part of the option value. To include a literal dollar + sign you may precede the dollar sign with another dollar sign. In other + words, if the text + + $$text + + is the value of a configuration option, it will be expanded to + + $text + + and no environment lookup will be done. For Unix _Alpine_ it will also + work to use a backslash character to escape the special meaning of the + dollar sign, but $$ is preferable since it works for both _PC-Alpine_ + and Unix _Alpine_, allowing the configuration option to be in a shared + configuration file. + + This all sounds more complicated than it actually is. An example may + make it clearer. Unfortunately, the way in which environment variables + are set is OS-dependent and command shell-dependent. In some Unix + command shells you may use + + PERSNAME="Fred Flintstone" + + export PERSNAME + + Now, if you use _Alpine_'s Setup/Config screen to set + + personal-name=$PERSNAME + + the $PERSNAME would be replaced by Fred Flintstone so that this would + be equivalent to + + personal-name=Fred Flintstone + + Note, environment variable substitution happens after configuration + options which are lists are split into the separate elements of the + list, so a single environment variable can't contain a list of values. + + The environment variable doesn't have to be the only thing after the + equal sign. However, if the name of the variable is not at the end of + the line or followed by a space (so that you can tell where the + variable name ends), it must be enclosed in curly braces like + + ${VAR} + + It is always ok to use the braces even if you don't need to. + + It is also possible to set a default value for an environment variable. + This default value will be used if the environment variable is not set + (that is, if getenv("VAR") returns NULL). The syntax used to set a + default value is + + ${VAR:-default value} + + If the config file contains + + personal-name=${VAR:-Fred Flintstone} + + then when _Alpine_ is run VAR will be looked up in the environment. If + VAR is found then personal-name will have the value that VAR was set + to, otherwise, personal-name will be set to Fred Flintstone, the + default value. + + An example where an environment variable might be useful is the + variable inbox-path in the global configuration file. Suppose most + users used the server + + imapserver.example.com + + but that there were some exceptions who used + + altimapserver.example.com + + In this case, the system manager might include the following line in + the systemwide default _Alpine_ configuration file + + inbox-path=${IMAPSERVER:-imapserver.example.com} + + For the exceptional users adding + + IMAPSERVER=altimapserver.example.com + + to their environment should work. + + Another example might be the case where a user has to use a different + SMTP server from work and from home. The setup might be something as + simple as + + smtp-server=$SMTP + + or perhaps a default value could be given. Note that, as mentioned + above, the variable SMTP cannot contain a list of SMTP servers. + __________________________________________________________________ + +SMTP Servers + + It is sometimes desirable to set smtp-server=localhost instead of + setting sendmail-path to overcome the inability to negotiate ESMTP + options when _sendmail_ is invoked with the _-t_ option. Sendmail can + also be subject to unacceptable delays due to slow DNS lookups and + other problems. + + It is sometimes desirable to configure an SMTP server on a port other + than the default port 25. This may be used to provide an alternate + service that is optimized for a particular environment or provides + different features from the port 25 server. An example would be a + program that negotiates ESMTP options and queues a message, but does + not attempt to deliver messages. This would avoid delays frequently + encountered when invoking _sendmail_ directly. + + A typical configuration would consist of + * A program that implements the SMTP or ESMTP protocol via stdio. + * An entry in /etc/services for the alternate service. + * An entry in /etc/inetd.conf for the alternate service. + * An entry in /usr/local/lib/pine.conf, + /usr/local/lib/pine.conf.fixed or ~/.pinerc. + __________________________________________________________________ + +MIME.Types file + + _Alpine_'s MIME-TYPE support is based on code contributed by Hans + Drexler <drexler@mpi.nl>. _Alpine_ assigns MIME Content-Types + according to file name extensions found in the system-wide files + /usr/local/lib/mime.types and /etc/mime.types, and a user specific + ~/.mime.types file. + + In Windows, _Alpine_ looks in the same directory as the PINERC file and + the same dir as ALPINE.EXE. This is similar to the UNIX situation with + personal config info coming before potentially shared config data. An + alternate search path can be specified by setting the + mimetype-search-path variable in the user or system-wide configuration + or by setting the MIMETYPES environment variable. + + These files specify file extensions that will be connected to a mime + type. Lines beginning with a '#' character are treated as comments and + ignored. All other lines are treated as a mime type definition. The + first word is a _type/subtype_ specification. All following words are + file _extensions_ belonging to that type/subtype. Words are separated + by whitespace characters. If a file extension occurs more than once, + then the first definition determines the file type and subtype. A + couple sample lines from a mime.types file follow: + +image/gif gif +text/html html htm +video/mpeg mpeg mpg mpe + + __________________________________________________________________ + +Color Details + + UNIX _Alpine_ may display color if the terminal or terminal emulator + you are using is capable of displaying colors. If the terminal supports + ANSI color escape sequences you will be able to turn color on using the + color-style option and setting it to the value _force-ansi-8color_ or + _force-ansi-16color_. If instead you'd like _Alpine_ to automatically + detect whether or not you are on a color terminal, set _color-style_ to + _use-termdef_ _and_ configure the termcap entry to describe your + terminal's color capabilities. + + If the _color-style_ option is set to _use-termdef_, _Alpine_ looks in + the terminal capabilities database, TERMINFO or TERMCAP, depending on + how _Alpine_ was compiled, to decide whether or not your terminal is + capable of color. For TERMINFO compiled _Alpine_s, the capabilities + that are used for color are "colors", "setaf", "setab", "op", and + "bce". If you have a terminal with color capabilities described by the + "scp" capability, _Alpine_ does not support it. The capabilities "setf" + and "setb" may be used instead of "setaf" and "setab". The capability + "bce" is optional and is used as an optimization, the other + capabilities are required. For TERMCAP compiled _Alpine_s, the + capabilities that are used for color are "Co", "AF", "AB", "op", and + "ut". The capabilities "Sf" and "Sb" may be used instead of "AF" and + "AB", though this isn't a useful feature. + + Here are some short descriptions of the capabilities listed above. The + TERMINFO name is listed, followed by the TERMCAP name in parentheses. + _colors_ (_Co_) + The number of different colors. + _setaf_ (_AF_) + Set ANSI foreground color. + _setab_ (_AB_) + Set ANSI background color. + _setf_ (_Sf_) + Set foreground color. Alternate form of _setaf_. + _setb_ (_Sb_) + Set background color. Alternate form of _setab_. + _op_ (_op_) + Set default pair to its original value. + _bce_ (_ut_) + Screen is erased with current background color instead of + default background. + + A standard ANSI terminal which supports color will have a TERMINFO + entry which contains: + colors#8 + setaf=\E[3%p1%dm + setab=\E[4%p1%dm + op=\E[39;49m + bce + + or the TERMCAP equivalent: + Co#8 + AF=\E[3%dm + AB=\E[4%dm + op=\E[39;49m + ut + + If there are eight colors, the program uses colors 0, 1, ..., 7. For an + ANSI terminal, the foreground color is set by sending the escape + sequence "Escape LeftBracket 3 color_number m" to the terminal. The + background color is set by sending the sequence "Escape LeftBracket 4 + color_number m". ANSI colors zero through seven are defined to be + "black", "red", "green", "yellow", "blue", "magenta", "cyan", and + "white". Some terminal emulators will swap blue and red and swap yellow + and cyan. The capabilities "setf" and "setb" are usually designed for + those terminals so that they will flip the color numbers 1 and 4 and + the numbers 3 and 6 to compensate for this. _Alpine_ will use the ANSI + versions of the capabilities if they exist, and will use the non-ANSI + versions (setf and setb) if the ANSI versions don't exist. Here's a + version which does the flipping. This can only be used with TERMINFO + _Alpine_s, because of the arithmetic, which is not supported by TERMCAP. + colors#8 + setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m + setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m + op=\E[39;49m + bce + + Some terminal emulators are capable of displaying eight more colors + when the foreground colors 30-37 are replaced with 90-97 and the + background colors 40-47 are replaced with 100-107. These terminals + require a fancy termcap entry which can take foreground colors 0, 1, + ..., 15 and map that into 30, 31, ..., 37, 90, 91, ..., 97, and + similarly for the background colors. Here is a terminfo entry which + will do just that: + colors#16 + setaf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%dm + setab=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%dm + op=\E[39;49m + bce + + and here is the termcap equivalent: + Co#16 + AF=\E[%i%i%>\001\034%>\045\064%dm + AB=\E[%i%i%>\001\046%>\057\064%dm + op=\E[39;49m + ut + + This is a terminfo entry for 16 colors that also does the color + flipping: + colors#16 + setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{ +4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m + setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{ +4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m + op=\E[39;49m + bce + + If you are always using the same display it probably won't matter to + you if the color pairs red/blue and cyan/yellow are flipped, since + you'll always be seeing them flipped. You will get different defaults + than on a display with them not flipped, but that's about all. If you + are trying to use the same pinerc file from displays with different + color characteristics, or from _Alpine_ and _PC-Alpine_, you will have + to be more careful. The colors numbered 0 through 7 may be used + portably between different systems if you are careful to make them + correspond to the ANSI order mentioned above. You can check this by + looking at a color configuration screen for one of the colors. The + first eight colors should be in the order above. If they aren't, you + could fix that by modifying your termcap entry on the UNIX system. This + is not possible if your system uses TERMCAP instead of TERMINFO. + __________________________________________________________________ + +S/MIME Overview + + UNIX _Alpine_ only. + + S/MIME is a standard for the public key encryption and signing of + email. UNIX _Alpine_ contains a basic implementation of S/MIME based on + the OpenSSL libraries. + + Some limitations: + * There is no _PC-Alpine_ implementation. + * There is no provision for checking for CRLs (Certificate Revocation + Lists) in _Alpine_. + * This built-in S/MIME implementation is not compatible with and does + not help with PGP. + * There is no mechanism available for feeding either an entire + incoming or an entire outgoing message to an external filter and + using that external filter to do S/MIME or PGP processing. + * Because the implementation currently uses OpenSSL, there is only a + very limited integration with the Mac OS Keychain (the storing and + access of public certificates). + * There is no way to view or manipulate the lists of certificates + from within _Alpine_. + + The S/MIME configuration screen is reached by going to the Main Menu + and typing the "S Setup" command followed by "M S/MIME". + + S/MIME BASICS + + In order to digitally sign messages you send you must have a + public/private key-pair. This may be obtained from a public Certificate + Authority (CA) such as Thawte, Verisign, Comodo, or GoDaddy; or from a + smaller CA such as a university which provides certificates for its + users or a company which provides certificates for its workers. These + certificates are bound to an email address, so the identity being + verified is the email address not a person's name. + + Mail is signed by using the sender's private key, which only the owner + of the private key has access to. The signature is verified using the + signer's public key, which anyone can have access to. With _Alpine_, + the first time you receive a signed message the public key of the + sender will be stored for future use. + + Mail is encrypted using the recipient's public key and decrypted by the + recipient with their private key. + + You need a key of your own in order to sign outgoing messages and to + have others encrypt messages sent to you. You do not need a key of your + own to verify signed messages sent by others or to encrypt messages + sent to others. + + ALPINE S/MIME CERTIFICATE STORAGE + + By default UNIX _Alpine_ stores the certificates it uses in a directory + in your home directory. The directory name is + + .alpine-smime + + Within that directory are three subdirectories. Each of the three + subdirectories contains files with PEM-encoded contents, the default + format for OpenSSL. The "public" directory contains public + certificates. The files within that directory have names that are email + addresses with the suffix ".crt" appended. An example filename is + + user@example.com.crt + + The "private" directory contains private keys, probably just one for + your private key. These are also email addresses but with the suffix + ".key" instead. The third directory is "ca" and it contains + certificates for any Certificate Authorities that you want to trust but + that aren't contained in the set of system CAs. Those files may have + arbitrary names as long as they end with the suffix ".crt". + + HOW TO SIGN AND ENCRYPT + + If you have a certificate you may sign outgoing messages. After typing + the Ctrl-X command to send a message you will see the prompt + + Send message? + + Available subcommands include "G Sign" and "E Encrypt". Typing the "G" + command will change the prompt to + + Send message (Signed)? + + Typing the "E" command will change the prompt to + + Send message (Encrypted)? + + You may even type both to get + + Send message (Encrypted, Signed)? + + HOW TO READ SIGNED OR ENCRYPTED MESSAGES + + The reading of a signed message should not require any special action + on your part. There should be an editorial addition at the start of the + message which says either + + This message was cryptographically signed. + + or + + This message was cryptographically signed but the signature could not + be verified. + + If an encrypted message is sent to you the encrypted text will not be + shown. You will have to type the "Ctrl-D Decrypt" command (from the + screen where you are viewing the message) and supply your passphrase + when asked. + + For a signed or encrypted message there is also a "Ctrl-E Security" + command which gives you some information about the certificate used to + sign or encrypt the message. + + MISCELLANEOUS + + You may have access to a private certificate in the PKCS12 format, + which would sometimes be in a file with a ".p12" suffix. The UNIX shell + command + + openssl pkcs12 -in file.p12 -out file.pem + + may work to convert that from the PKCS12 format to the PEM format. Then + that file could be placed in the "private" directory with a filename of + your email address followed by the suffix ".key". + __________________________________________________________________ + +Additional Notes on PC-Alpine + + Below are a few odds and ends worth mentioning about _PC-Alpine_. They + have to do with DOS-specific behavior that is either necessary or + useful (and sometimes both!). + + As _PC-Alpine_ runs in an environment with limited access control, + accounting or auditing, an additional line is automatically inserted + into the header of mail messages generated by _PC-Alpine_: + X-Sender: <userid>@<imap.host> + + + By popular demand of system administrators, _PC-Alpine_ has been + modified to prevent sending messages until the user has successfully + logged into a remote mail server. Even though _PC-Alpine_ cannot + prevent users from changing the apparent identity of the sender of a + message, the IMAP server login name and host name included in the + _X-Sender_ line provide some level of traceability by the recipient. + However, this should not be considered a rigorous form of + authentication. It is extremely lightweight, and is not a replacement + for true authentication. + + Hand in hand with authentication and accounting is user information. + Since _PC-Alpine_ has no user database to consult for _user-id_, + _personal-name_, etc., necessary information must be provided by the + user/installer before _PC-Alpine_ can properly construct the "From" + address required for outbound messages. _PC-Alpine_ will, by default, + prompt for the requisite pieces as they are needed. This information + corresponds to the _PINERC_ variables user-id, personal-name, + user-domain, and smtp-server. + + The user is then asked whether or not this information should + automatically be saved to the _PINERC_. This is useful behavior in + general, but can lead to problems in a lab or other shared environment. + Hence, these prompts and automatic saving of configuration can be + turned off on an entry by entry basis by setting any of the above + values in the _PINERC_ to the null string (i.e., a pair of double + quotes). This means that the user will be prompted for the information + once during each _Alpine_ session, and no opportunity to save them in + the _PINERC_ will be offered. + + Another feature of DOS is the lack of standard scratch area for + temporary files. During the course of a session, _PC-Alpine_ may + require numerous temporary files (large message texts, various caches, + etc.). Where to create them can be a problem, particularly when running + under certain network operating systems. _PC-Alpine_ observes the + _TMPDIR_, _TMP_, and _TEMP_ environment variables, and creates temporary + files in the directory specified by either. In their absence, + _PC-Alpine_ creates these files in the root of the current working + drive. Some temporary files have to be created in the same directory as + the file they are a temporary copy of. For example, a pinerc file or a + address book file. + + Behind the Scenes + + Many people ask how certain _Alpine_ features are implemented. This + section outlines some of the details. + +Address Books + + There are two types of address book storage. There are _local_ address + books, which are the address books that are stored in a local file; and + there are _remote_ address books, which are stored on an IMAP server. + + Information About Remote Address Books + + NOTE: The remote address book capability does not allow you to + access an existing local address book from a remote system! That is, + you can't set the remote address book to something like + {remote.host}.addressbook and expect to access the existing + .addressbook _file_ on remote.host. Instead, you need to create a + new remote address book in a new, previously unused remote mail + _folder_. Then you can use the _Select_ and _Apply Save_ commands in + the address book screen to _Save_ all of the entries from an + existing local address book to the new remote address book. + + A remote address book is stored in a mail folder on an IMAP server. An + _Alpine_ remote address book is just like an _Alpine_ local address book + in that it is not interoperable with other email clients. The folder is + a regular folder containing mail messages but those messages are + special. The first message must be an alpine remote address book header + message which contains the header _x-pine-addrbook_. The last message + in the folder contains the address book data. In between the first and + the last message are old versions of the address book data. The address + book data is simply stored in the message as it would be on disk, with + no MIME encoding. When it is used the data from the last message in the + folder is copied to a local file and then that file is used exactly + like a local address book file is used. When a change is made the + modified local file is appended to the remote folder in a new message. + In other words, the local file is just a cache copy of the data in the + remote folder. Each client which uses the remote address book will have + its own cache copy of the data. Whenever a copy is done the entire + address book is copied, not just the entries which have changed. + + _Alpine_ can tell that the remote data has changed by one of several + methods. If the date contained in the Date header of the last message + has changed then it knows it has changed. If the UID of the last + message has changed, or the number of messages in the folder has + changed, it knows that it has changed. When _Alpine_ discovers the + folder has changed it gets a new copy and puts it in the local cache + file. + + There is a configuration file variable for remote address books called + remote-abook-metafile. The variable is the name of a file in which + information about remote address books is stored. There is one line in + the metafile for each remote address book. The information stored there + is the name of the cache file and information to help figure out when + the remote folder was last changed. If the metafile or any of the cache + files is deleted then _Alpine_ will rebuild them the next time it runs. + + Remote address books have names that look just like regular remote mail + folder names. For example: + + {host.domain}foldername + + _Alpine_ decides whether or not an address book is remote simply by + looking at the first character of the address book name and comparing + it to '{'. + + Information About All Address Books + + The address book is named, by default, .addressbook in the user's Unix + home directory, or in the case of _PC-Alpine_, ADDRBOOK, in the same + directory as the PINERC file. There may be more than one address book, + and the default name can be overridden via an entry in any of the + _Alpine_ configuration files. The two configuration variables + address-book and global-address-book are used to specify the names of + the address books. Each of these variables is a list variable. The + total set of address books for a user is the combination of all the + address books specified in these two lists. Each entry in the list is + an optional nickname followed by an address book name. The nickname is + everything up to the last space before the file name. The + _global-address-book_ list will typically be configured in the + system-wide configuration file, though a user may override it like most + other variables. Address books which are listed in the + _global-address-book_ variable are forced read-only, and are typically + shared among multiple users. + + Local address books (or local cache files for remote address books) are + simple text files with lines in the format: + + <nickname>TAB<fullname>TAB<address>TAB<fcc>TAB<comments> + + The last two fields are optional. A "line" may be made up of multiple + actual lines in the file by using continuation lines, which are lines + beginning with SPACE characters. The line breaks may be after TABs or + in between addresses in a distribution list. Each _actual_ line in the + file must be less than 1000 characters in length. + + Nicknames (the first field) are short names that the user types instead + of typing in the full address. There are several characters which + aren't allowed in nicknames in order to avoid ambiguity when parsing + the address (SPACE, COMMA, @, ", ;, :, (, ), [, ], <, >, \). Nicknames + aren't required. In fact, none of the fields is required. + + The _fullname_ field is usually stored as Last_name, First_name, in + order that a sort on the fullname field comes out sorted by Last_name. + If there is an unquoted comma in the fullname, _Alpine_ will flip the + first and last name around and get rid of the comma when using the + entry in a composition. It isn't required that there be a comma, that's + only useful if the user wants the entries to sort on last names. + + The _address_ field takes one of two forms, depending on whether the + entry is a single (simple) address or a distribution list. For a simple + entry, the address field is an RFC 2822 address. This could be either + the email-address part of the address, i.e., the part that goes inside + the brackets (<>), or it could be a full RFC 2822 address. The phrase + part of the address (the fullname) is used unless there is a fullname + present in the fullname field of the address book entry. In that case, + the fullname of the address book entry replaces the fullname of the + address. For a distribution list, the <address> is in the format: + + "(" <address>, <address>, <address>, ... ")" + + The only purpose for the parentheses around the list of addresses is to + make it easier for the parsing routines to tell that it is a simple + entry instead of a list. The two are displayed differently and treated + slightly differently in some cases, though most of the distinction has + disappeared. Each of the addresses in a list can be a full RFC 2822 + address with fullname included, or it may be just the simple + email-address part of the address. This allows the user to have a list + which includes the fullnames of all the list members. In both the + simple and list cases, addresses may also be other nicknames which + appear in this address book or in one of the other address books. + (Those nicknames are searched for by looking through the address books + in the order they appear in the address book screen, with the first + match winning.) Lists may be nested. If addresses refer to each other + in a loop (for example, list A includes list B which includes list A + again) this is detected and flagged. In that case, the address will be + changed to "**** address loop ****". + + The optional _fcc_ field is a folder name, just like the fcc field in + the composer headers. If the first address in the To field of a + composition comes from an address book entry with an fcc field, then + that fcc is placed in the fcc header in the composer. + + The _comments_ field is just a free text field for storing comments + about an entry. By default, neither the fcc nor the comments field is + shown on the screen in the address book screen. You may make those + fields visible by configuring the variable addressbook-formats. They + are also searched when you use the _WhereIs_ command in the address + book screen and are visible when you _View_ or _Update_ an entry. + + The address book is displayed in the order that it is stored. When the + user chooses a different sorting criterion, the data is actually sorted + and stored, as opposed to showing a sorted view of the data. + + When the address book is written out, it is first written to a + temporary file and if that write is successful it is renamed. This + guards against errors writing the file that might destroy the whole + address book. The address book is re-written after each change. If the + address book is a remote address book, the file is then appended to the + remote mail folder using IMAP. + + The end-of-line character(s) in the address book file are those native + to the system writing it. So it is <LF> on Unix and <CR><LF> on PC's. + However, both Unix and PC versions of _Alpine_ can read either format, + so it should be possible to share a read-only address book among the + two populations (using NFS, for example). + __________________________________________________________________ + + Address Book Lookup File + + _Pine_ used an additional file for each address book, called the LookUp + file. It had the same name as the address book file with the suffix + ".lu" appended. _Alpine_ no longer uses a lookup file. + + Validity Checking of Address Books + + There is no file locking done on _Alpine_ address books, however, there + is considerable validity checking done to make sure that the address + book hasn't changed unexpectedly. Whenever the address book is about to + be changed, a check is made to see if the file is newer than when we + read it or the remote address book folder has changed since we last + copied it. If either of these is true, the change is aborted. + + There is an automatic, behind-the-scene check that happens every so + often, also. For example, if someone else changes one of the address + books that you have configured, your _Alpine_'s copy of the address + book will usually be updated automatically without you noticing. This + checking happens at the same time as new mail checking takes place, + unless you are actively using the address book, in which case it + happens more frequently. + __________________________________________________________________ + +Remote Configuration + + Configuration information may be stored remotely. Remote configuration + information is stored in a folder on an IMAP server. This should be a + folder which is used only for storing the configuration information. In + other words, it should be a folder which didn't exist before. + + Remote configuration folders are very similar to remote address book + folders. They both consist of a header message, which serves to + identify the type of folder; the last message, which contains the data; + and intermediate messages, which contain old versions of the data. The + first message must contain the header _x-pine-pinerc_. + + When a remote configuration is being used, the folder is checked to + make sure it is a remote configuration folder, then the data contained + in the last message is copied to a temporary file. That file is treated + just like any regular local configuration file from that point on. + Whenever a configuration change is made, the entire file is copied back + to the IMAP server and is appended to the folder as a new message. + + Because remote configuration folders are so similar to remote address + books, the configuration variable remote-abook-metafile is used by + both. + + Remote configuration folders have names that look just like regular + remote mail folder names. For example: + + {host.domain}mypinerc + + _Alpine_ decides whether or not a configuration file is remote simply + by looking at the first character of the name and comparing it to '{'. + __________________________________________________________________ + +Checkpointing + + Periodically _Alpine_ will save the whole mail folder to disk to + prevent loss of any mail or mail status in the case that it gets + interrupted, disconnected, or crashes. The period of time _Alpine_ + waits to do the checkpoint is calculated to be minimally intrusive. The + timing can be changed (but usually isn't) at compile time. Folder + checkpointing happens for both local folders and those being accessed + with IMAP. The delays are divided into three categories: + + The exact algorithm given below is no longer correct. It has gotten + more complicated over time. However, this gives the general idea + _Alpine_ uses when deciding whether or not to do a checkpoint. + + Good Time: + This occurs when _Alpine_ has been idle for more than 30 + seconds. In this case _Alpine_ will checkpoint if 12 changes to + the file have been made or at least one change has been made and + a checkpoint hasn't been done for five minutes. + Bad Time: + This occurs just after _Alpine_ has executed some command. + _Alpine_ will checkpoint if there are 36 outstanding changes to + the mail file or at least one change and no checkpoint for ten + minutes. + Very Bad Time: + Done when composing a message. In this case, _Alpine_ will only + checkpoint if at least 48 changes have been made or at least one + change has been made in the last twenty minutes with no + checkpoint. + __________________________________________________________________ + +Debug Files + + If UNIX _Alpine_ is compiled with the compiler _DEBUG_ option on (the + default), then _Alpine_ will produce debugging output to a file. This + can be disabled at compile-time with the --disable-debug configure + option, or at run-time with the command line flag -d0. The file is + normally .pine-debugX in the user's home directory where _X_ goes from + 1 to 4. Number 1 is always the most recent session and 4 the oldest. + Four are saved because often the user has gone in and out of _Alpine_ a + few times after a problem has occurred before the expert actually gets + to look at it. The amount of output in the debug files varies with the + debug level set when _Alpine_ is compiled and/or as a command line + flag. The default is level 2. This shows very general things and + records errors. Level 9 produces copious amounts of output for each + keystroke. + + Similarly, _PC-Alpine_ creates debug files named pinedebg.txtX in the + same directory as the PINERC file. + __________________________________________________________________ + +INBOX and Special Folders + + The _INBOX_ folder is treated specially. It is normally kept open + constantly so that the arrival of new mail can be detected. The name + _INBOX_ refers to wherever new mail is retrieved on the system. If the + inbox-path variable is set, then _INBOX_ refers to that. IMAP servers + understand the concept of _INBOX_, so specifying the folder + _{imap.u.example.edu}INBOX_ is meaningful. The case of the word _INBOX_ + is not important, but _Alpine_ tends to display it in all capital + letters. + + The folders for sent mail and saved messages folders are also somewhat + special. They are automatically created if they are absent and + recreated if they are deleted. + __________________________________________________________________ + +Internal Help Files + + The file pine.hlp in the alpine subdirectory of the distribution + contains all the help text for _Alpine_. It is compiled right into the + _Alpine_ binary as strings. This is done to simplify installation and + configuration. The pine.hlp file is in a special format that is + documented at the beginning of the file. It is divided into sections, + each with a name that winds up being referenced as a global variable. + This file is processed during the build process and turned into a C + file that is compiled into _Alpine_. + __________________________________________________________________ + +International Character Sets + + _Alpine_ uses Unicode characters internally and it is a goal for + _Alpine_ to handle email in many different languages. _Alpine_ will + properly display only left-to-right character sets in a fixed-width + font. Specifically, _Alpine_ assumes that a fixed-width font is in use, + in the sense that characters are assumed to take up zero, one, or two + character cell widths from left to right on the screen. This is true + even in _PC-Alpine_. + + _Alpine_ recognizes some local character sets which are right-to-left + (Arabic, Hebrew, and Thai) or not representable in a fixed-width font + (Arabic) and properly converts texts in these character sets to/from + Unicode; however, there are known display bugs with these character + sets. + + There are three possible configuration character settings and some + environment variable settings which can affect how _Alpine_ handles + international characters. The first two of these are only available in + UNIX _Alpine_. The three configuration options are + _display-character-set_, _keyboard-character-set_, and + _posting-character-set_. The _keyboard-character-set_ defaults to being + the same value as the _display-character-set_, and that is usually + correct, because the keyboard almost always produces characters in the + same character set as the display displays. The _display-character-set_ + is the character set that _Alpine_ will attempt to use when sending + characters to the display. + + Besides those variables there is also use-system-translation which can + be used instead of these. That usage is only lightly tested and is not + recommended. + + By default, the _display-character-set_ variable is not set and UNIX + _Alpine_ will attempt to get this information from the environment. In + particular, the nl_langinfo(CODESET) call is used. This usually depends + on the setting of the environment variables LANG or LC_CTYPE. An + explicit configuration setting for _display-character-set_ will, of + course, override any default setting. + + For _PC-Alpine_ the _display-character-set_ and the + _keyboard-character-set_ are always equivalent to UTF-8 and this is not + settable. + + It is probably best to use UNIX _Alpine_ in a terminal emulator capable + of displaying UTF-8 characters, since that will allow you to view just + about any received text that is correctly formatted (note, however, the + above comments about known index display bugs with certain character + sets). You'll need to have an emulator which uses a UTF-8 font and + you'll need to set up your environment to use a UTF-8 charmap. For + example, on a Linux system you might include + + setenv LANG en_US.UTF-8 + + or something similar in your UNIX startup files. You'd also have to + select a UTF-8 font in your terminal emulator. + + The types of values that the character set variables may be set to are + UTF-8, ISO-8859-1, or EUC-JP. The ISO-2022 character sets are not + supported for input or for display, but as a special case, ISO-2022-JP + is supported for use only as a _posting-character-set_. In the + Setup/Config screen you may choose from a list of all the character + sets _Alpine_ knows about by using the "T" ToCharsets command. Here is + a list of many of the possible character sets: + + UTF-8 Unicode + US-ASCII 7 bit American English characters + ISO-8859-1 8 bit European "Latin 1" character set + ISO-8859-2 8 bit European "Latin 2" character set + ISO-8859-3 8 bit European "Latin 3" character set + ISO-8859-4 8 bit European "Latin 4" character set + ISO-8859-5 8 bit Latin and Cyrillic + ISO-8859-6 8 bit Latin and Arabic + ISO-8859-7 8 bit Latin and Greek + ISO-8859-8 8 bit Latin and Hebrew + ISO-8859-9 8 bit European "Latin 5" character set + ISO-8859-10 8 bit European "Latin 6" character set + ISO-8859-11 Latin and Thai + ISO-8859-12 Reserved + ISO-8859-13 8 bit European "Latin 7" character set + ISO-8859-14 8 bit European "Latin 8" character set + ISO-8859-15 8 bit European "Latin 9" character set + ISO-8859-16 8 bit European "Latin 10" character set + KOI8-R 8 bit Latin and Russian + KOI8-U 8 bit Latin and Ukranian + WINDOWS-1251 8 bit Latin and Russian + TIS-620 8 bit Latin and Thai + VISCII 8 bit Latin and Vietnamese + GBK Latin and Chinese Simplified + GB2312 Latin and Chinese Simplified + CN-GB Latin and Chinese Simplified + BIG5 Latin and Chinese Traditional + BIG-5 Latin and Chinese Traditional + EUC-JP Latin and Japanese + SHIFT-JIS Latin and Japanese + EUC-KR Latin and Korean + KSC5601 Latin and Korean + + When reading incoming email, _Alpine_ understands many different + character sets and is able to convert the incoming mail into Unicode. + The Unicode will be converted to the _display-character-set_ for + display on your terminal. Characters typed at the keyboard will be + converted from the _keyboard-character-set_ to Unicode for _Alpine_'s + internal use. You may find that you can read some malformed messages + that do not contain a character set label by setting the option + unknown-character-set. + + The _posting-character-set_ is used when sending messages. The default + behavior obtained by leaving this variable unset is usually what is + wanted. In that default case, _Alpine_ will attempt to label the + message with the most specific character set from the rather arbitrary + set + + US-ASCII, ISO-8859-15, ISO-8859-1, ISO-8859-2, VISCII, KOI8-R, KOI8-U, + ISO-8859-7, ISO-8859-6, ISO-8859-8, TIS-620, ISO-2022-JP, GB2312, BIG5, + EUC-KR, and UTF-8. + + For example, if the message is made up of only US-ASCII characters, it + will be labeled US-ASCII. Otherwise, if it is all ISO-8859-15 + characters, that will be the label. If that doesn't work the same is + tried for the remaining members of the list. + + It might make sense to set _posting-character-set_ to an explicit value + instead. For example, if you usually send messages in Greek, setting + this option to ISO-8859-7 will result in messages being labeled as + US-ASCII if there are no non-ascii characters, ISO-8859-7 if there are + only Greek characters, or UTF-8 if there are some characters which + aren't representable in ISO-8859-7. Another possibility is to set this + option explicitly to UTF-8. In that case _Alpine_ labels only ascii + messages as US-ASCII and all other messages as UTF-8. + __________________________________________________________________ + +Interrupted and Postponed Messages + + If the user is composing mail and is interrupted by being disconnected + (SIGHUP, SIGTERM or end of file on the standard input), _Alpine_ will + save the interrupted composition and allow the user to continue it when + he or she resumes _Alpine_. As the next _Alpine_ session starts, a + message will be given that an interrupted message can be continued. To + continue the interrupted message, simply go into the composer. To get + rid of the interrupted message, go into the composer and then cancel + the message with _^C._ + + Composition of half-done messages may be postponed to a later time by + giving the _^O_ command. Other messages can be composed while postponed + messages wait. All of the postponed messages are kept in a single + folder. Postponing is a good way to quickly reference other messages + while composing. + __________________________________________________________________ + +Message Status + + The c-client library allows for several flags or status marks to be set + for each message. _Alpine_ uses four of these flags: UNSEEN, DELETED, + ANSWERED, and FLAGGED. The N in _Alpine_'s FOLDER INDEX means that a + message is unseen-it has not been read from this folder yet. The D + means that a message is marked for deletion. Messages marked with D are + removed when the user _Expunges_ the folder (which usually happens when + the folder is closed or the user quits _Alpine_). The A in _Alpine_'s + FOLDER INDEX means that the message has been replied-to. The * in + _Alpine_'s FOLDER INDEX means that the message has been ``flagged'' as + important. That is, the user used the _Flag_ command to turn the + FLAGGED flag on. This flag can mean whatever the user wants it to mean. + It is just a way to mark some messages as being different from others. + It will usually probably be used to mark a message as somehow being + ``important''. For Berkeley format folders, the message status is + written into the email folder itself on the header lines marked Status: + and X-Status. + + It is also possible for a user to define their own flags in addition to + the standard system flags above. In _Alpine_ these user defined flags + are called Keywords. + __________________________________________________________________ + +MIME: Reading a Message + + _Alpine_ should be able to handle just about any MIME message. When a + MIME message is received, _Alpine_ will display a list of all the + parts, their types and sizes. It will display the attachments when + possible and appropriate and allow users to _Save_ all other + attachments. + + _Alpine_ honors the "mailcap" configuration system for specifying + external programs for handling attachments. The mailcap file maps MIME + attachment types to the external programs loaded on your system which + can display and/or print the file. A sample mailcap file comes bundled + with the _Alpine_ distribution. It includes comments which explain the + syntax you need to use for mailcap. With the mailcap file, any program + (mail readers, newsreaders, WWW clients) can use the same configuration + for handling MIME-encoded data. + + If a MAILCAPS environment variable is defined, _Alpine_ will use that + to look for one or more mailcap files, which are combined. In the + absence of MAILCAPS, Unix _Alpine_ will look for a personal mailcap + file in ~/.mailcap and combine that with a system-wide file in + /etc/mailcap. _PC-Alpine_ will look for a file named MAILCAP in the + same directory as the PINERC file, and/or the directory containing the + ALPINE.EXE executable. + + Messages which include _rich text_ or _enriched text_ in the main body + will be displayed in a very limited way (it will show bold and + underlining). + + If _Alpine_ sees a MIME message part tagged as type IMAGE, and + _Alpine_'s image-viewer configuration variable is set, _Alpine_ will + attempt to send that attachment to the named image viewing program. In + the case of UNIX _Alpine_, the DISPLAY environment variable is checked + to see if an X-terminal is being used (which can handle the images). If + the _image-viewer_ variable is not set, _Alpine_ uses the _mailcap_ + system to determine what to do with IMAGE types, just as it does for + any other non-TEXT type, e.g. type APPLICATION. For MIME's generic + "catch all" type, APPLICATION/OCTET-STREAM, the _mailcap_ file will + probably not specify any action, but _Alpine_ users may always _Save_ + any MIME attachment to a file. + + MIME type "text/plain" is handled a little bit differently than the + other types. If you are viewing the main body part in the MESSAGE TEXT + viewing screen, then _Alpine_ will use its internal viewer to display + it. This happens even if there is a mailcap description which matches + this particular type. However, if you view a part of type "text/plain" + from the ATTACHMENT INDEX screen, then _Alpine_ will check the mailcap + database for a matching entry and use it in preference to its internal + viewer. + + Some text attachments, specifically those which are just other email + messages forwarded as MIME messages, are displayed as part of the main + body of the message. This distinction allows easy display when possible + (the forward as MIME case) and use of an attachment viewer when that is + desirable (the plain text file attachment case). + + If the parts of a multipart message are alternate versions of the same + thing _Alpine_ will select and display the one best suited. For parts + of type "message/external-body", the parameters showing the retrieval + method will be displayed, and the retrieval process is automated. + Messages of type "message/partial" are not supported. + __________________________________________________________________ + +MIME: Sending a Message + + There are two important factors when trying to include an attachment in + a message: encoding and labeling. _Alpine_ has rules for both of these + which try to assure that the message goes out in a form that is robust + and can be handled by other MIME mail readers. + + MIME has two ways of encoding data-Quoted-Printable and Base64. + Quoted-Printable leaves the ASCII text alone and only changes 8-bit + characters to "=" followed by the hex digits. For example, "=09" is a + tab. It has the advantage that it is mostly readable and that it allows + for end of line conversions between unlike systems. Base64 encoding is + similar to _uuencode_ or _btoa_ and just encodes a raw bit stream. This + encoding is designed to get text and binary files through even the most + improperly implemented and configured gateways intact, even those that + distort uuencoded data. + + _All_ attachments are encoded using Base64 encoding. This is so that + the attachment will arrive at the other end looking exactly like it did + when it was sent. Since Base64 is completely unreadable except by + MIME-capable mailers or programs, there is an obvious tradeoff being + made here. We chose to ensure absolutely reliable transport of + attachments at the cost of requiring a MIME-capable mailer to read + them. If the user doesn't want absolute integrity he or she may always + _include_ text (with the _^R_ command) in the body of a message instead + of attaching it. With this policy, the only time quoted-printable + encoding is used is when the main body of a message includes special + foreign language characters. + + When an attachment is to be sent, _Alpine_ sniffs through it to try to + set the right label (content-type and subtype). An attachment with any + lines longer than 500 characters in it or more than 10% of the + characters are 8-bit it will be considered binary data. _Alpine_ will + recognize (and correctly label) a few special types including GIF, + JPEG, PostScript, and some audio formats. Another method which can be + more robust and flexible for determining the content-type and subtype + is to base it on the file extension. This method uses a MIME.Types + File. + + If it is not binary data (has only a small proportion of 8-bit + characters in it,) the attachment is considered 8-bit text. 8-bit text + attachments are labeled "text/plain" with charset set to the value of + the user's _keyboard-character-set_ variable. If an attachment is ASCII + (no 8-bit characters) and contains no control characters then it is + considered plain ASCII text. Such attachments are given the MIME label + "text/plain; charset=US-ASCII", regardless of the setting of the user's + _keyboard-character-set_ variable. + + All other attachments are unrecognized and therefore given the generic + MIME label "application/octet-stream". + __________________________________________________________________ + +New Mail Notification + + _Alpine_ checks for new mail in the _INBOX_ and in the currently open + folder every two and a half minutes by default. This default can be + changed in the system-wide configuration file or at compile-time with + the --with-mailcheck-interval=VALUE configuration option. A user can + change it by changing the option mail-check-interval. A new mail check + can be manually forced by redrawing the screen with a _^L_. + + When there is new mail, the message(s) will appear in the index, the + screen will beep, and a notice showing the sender and subject will be + displayed. If there has been more than one new message since you last + issued a command to _Alpine_, the notice will show the count of new + messages and the sender of the most recent one. + __________________________________________________________________ + +NFS + + It is possible to access mail folders on _NFS_ mounted volumes with + _Alpine_, but there are some drawbacks to doing this, especially in the + case of incoming-message folders that may be concurrently updated by + _Alpine_ and the system's mail delivery agent. One concern is that + _Alpine_'s user-contention locks don't work because _/tmp_ is usually + not shared, and even if it was, _flock()_ doesn't work across _NFS._ + + The implementation of the standard UNIX ".lock" file locking has been + modified to work with _NFS_ as follows. Standard hitching post locking + is used so first a uniquely named file is created, usually something + like _xxxx.host.time.pid._ Then a link to it is created named + _xxxx.lock_ where the folder being locked is _xxxx._ This file + constitutes the lock. This is a standard UNIX locking scheme. After the + link returns, a _stat(2)_ is done on the file. If the file has two + links, it is concluded that the lock succeeded and it is safe to + proceed. + + In order to minimize the risks of locking failures via _NFS_, we + strongly recommend using IMAP rather than _NFS_ to access remote + incoming message folders, e.g. your _INBOX_. However, it is generally + safe to access personal saved-message folders via _NFS_ since it is + unlikely that more than one process will be updating those folders at + any given time. Still, some problems may occur when two _Alpine_ + sessions try to access the same mail folder from different hosts + without using IMAP. Imagine the scenario: _Alpine_-A performs a write + that changes the folder. _Alpine_-B then attempts to perform a write on + the same folder. _Alpine_-B will get upset that the file has been + changed from underneath it and abort operations on the folder. + _Alpine_-B will continue to display mail from the folder that it has in + its internal cache, but it will not read or write any further data. The + only thing that will be lost out of the _Alpine_-B session when this + happens is the last few status changes. + + If other mail readers besides _Alpine_ are involved, all bets are off. + Typically, mailers don't take any precautions against a user opening a + mailbox more than once and no special precautions are taken to prevent + _NFS_ problems. + __________________________________________________________________ + +Printers and Printing + + UNIX _Alpine_ can print to the standard UNIX line printers or to + generic printers attached to ANSI terminals using the escape sequences + to turn the printer on and off. The user has a choice of three printers + in the configuration. + + The first setting, _attached-to-ansi_, makes use of escape sequences on + ANSI/VT100 terminals. It uses "<ESC>[5i" to begin directing all output + sent to the terminal to the printer and then "<ESC>[4i" to return to + normal. _Alpine_ will send these escape sequences if the printer is set + to _attached-to-ansi._ This works with most ANSI/VT100 emulators on + Macs and PCs such as kermit, NCSA telnet, VersaTerm Pro, and WinQVT. + Various terminal emulators implement the print feature differently. + There is also a closely related method called + _attached-to-ansi-no-formfeed_ which is the same except for the lack of + formfeed character at the end of the print job. + + _Attached-to-wyse_ and _attached-to-wyse-no-formfeed_ are very similar + to "attached-to-ansi". The only difference is in the control characters + sent to turn the printer on and off. The Wyse version uses Ctrl-R for + on, and Ctrl-T for off. + + The second selection is the standard UNIX print command. The default is + _lpr_, but it can be changed on a system basis to anything so desired + in /usr/local/lib/pine.conf. + + The third selection is the user's personal choice for a UNIX print + command. The text to be printed is piped into the command. _Enscript_ + or _lpr_ with options are popular choices. The actual command is + retained even if one of the other print selections is used for a while. + + Both the second and third sections are actually lists of possible + commands rather than single commands. + + If you have a PostScript printer attached to a PC or Macintosh, then + you will need to use a utility called _ansiprt_ to get printouts on + your printer. _Ansiprt_ source code and details can be found in the + ./contrib directory of the _Alpine_ distribution. + __________________________________________________________________ + +Save and Export + + _Alpine_ users get two options for moving messages in _Alpine_: _Save_ + and _Export_. _Save_ is used when the message should remain ``in the + _Alpine_ realm.'' Saved messages include the complete header (including + header lines normally hidden by _Alpine_), are placed in a _Alpine_ + folder collection and accumulate in a standard folder format which + _Alpine_ can read. In contrast, the _Export_ command is used to write + the contents of a message to a file for use outside of _Alpine_. + Messages which have been exported are placed in the user's home + directory (unless the feature use-current-dir is turned on), not in a + _Alpine_ folder collection. Unless FullHeaderMode is toggled on, all + delivery-oriented headers are stripped from the message. Even with + _Export_, _Alpine_ retains message separators so that multiple messages + can accumulate in a single file and subsequently be accessed as a + folder. On UNIX systems, the _Export_ command pays attention to the + standard _umask_ for the setting of the file permissions. + __________________________________________________________________ + +Sent Mail + + _Alpine_'s default behavior is to keep a copy of each outgoing message + in a special "sent mail" folder. This folder is also called the fcc for + "file carbon copy". The existence, location and name of the sent mail + folder are all configurable. Sent mail archiving can be turned off by + setting the configuration variable default-fcc="". The sent mail folder + is assumed to be in the default collection for _Save_s, which is the + first collection named in folder-collections. The name of the folder + can be chosen by entering a name in _default-fcc_. With _PC-Alpine_, + this can be a bit complicated. If the default collection for _Save_s is + local (DOS), then the _default-fcc_ needs to be SENTMAIL, which is + syntax for a DOS file. However, if the default collection for _Save_s + is remote, then the _default-fcc_ needs to be sent-mail to match the + UNIX syntax. + + The configuration variable fcc-name-rule also plays a role in selecting + the folder to save sent mail in. + + A danger here is that the sent mail could grow without bound. For this + reason, we thought it useful to encourage the users to periodically + prune their sent mail folder. The first time _Alpine_ is used each + month it will offer to archive all messages sent from the month before. + _Alpine_ also offers to delete all the sent mail archive folders which + are more than 1 month old. If the user or system has disabled sent mail + archiving (by setting the configuration variable _default-fcc=""_) + there will be no pruning question. + __________________________________________________________________ + +Spell Checker + + Both UNIX _Alpine_ and _PC-Alpine_ depend on the system for their spell + checking and dictionary. _Pico_, the text editor, uses the same spell + checking scheme as _Alpine_. + + Lines beginning with ">" (usually messages included in replies) are not + checked. The message text to be checked is on the standard input and + the incorrect words are expected on the standard output. + + The default spell checker is UNIX _spell_. You can replace this by + setting the speller configuration variable. A common choice for a + superior replacement is _ispell_. + + _PC-Alpine_ relies on the aspell library being installed. Aspell is + independent of Alpine. The Windows version has traditionally been + available at http://aspell.net/win32/. You'll need to download and + install both Aspell and a precompiled dictionary. Aspell is provided in + an installer package. Dictionaries, to be installed after Aspell, are + in '.exe' files to download and run. + __________________________________________________________________ + +Terminal Emulation and Key Mapping + + UNIX _Alpine_ has been designed to require as little as possible from + the terminal. At the minimum, _Alpine_ requires cursor positioning, + clear to end of line, and inverse video. Unfortunately, there are + terminals that are missing some of these such as a vt52. _Alpine_ makes + no assumptions as to whether the terminal wraps or doesn't wrap. If the + terminal has other capabilities it may use some of them. _Alpine_ won't + run well on older terminals that require a space on the screen to + change video attributes, such as the Televideo 925. One can get around + this on some terminals by using "protected field" mode. The terminal + can be made to go into protected mode for reverse video, and then + reverse video is assigned to protected mode. + + _Alpine_ handles screens of most any size and resizing on the fly. It + catches SIGWINCH and does the appropriate thing. + + On the input side of things, _Alpine_ uses all the standard keys, most + of the control keys and (in function-key mode) the function keys. + _Alpine_ avoids certain control keys, specifically ^S, ^Q, ^H, and _^\_ + because they have other meanings outside of _Alpine_ (they control data + flow, etc.) _^H_ is treated the same as the _delete_ key, so the + _backspace_ or _delete_ keys always work regardless of any + configuration. There is a feature _compose-maps-delete-key-to-ctrl-d_ + which makes the delete key behave like ^D rather than ^H (deletes + current character instead of previous character). + + Sometimes a communications program or communications server in between + you and the other end will eat certain control characters. There is a + work-around when you need it. If you type two escape characters + followed by a character that will be interpreted as the character with + the control key depressed. For example, _ESC ESC T_ is equivalent to + _^T_. + + When a function key is pressed and _Alpine_ is in regular (non-function + key) mode, _Alpine_ traps escape sequences for a number of common + function keys so users don't get an error message or have an unexpected + command executed for each character in the function key's escape + sequence. _Alpine_ expects the following escape sequences from + terminals defined as VT100: + + ANSI/VT100 + F1: <ESC>OP + F2: <ESC>OQ + F3: <ESC>OR + F4: <ESC>OS + F5: <ESC>Op + F6: <ESC>Oq + F7: <ESC>Or + F8: <ESC>Os + F9: <ESC>Ot + F10: <ESC>Ou + F11: <ESC>Ov + + Arrow keys are a special case. _Alpine_ has the escape sequences for a + number of conventions for arrow keys hard coded and does not use + _termcap_ to discover them. This is because _termcap_ is sometimes + incorrect, and because many users have PC's running terminal emulators + that don't conform exactly to what they claim to emulate. There is a + feature called termdef-takes-precedence which can be set to cause the + _termcap_ or _terminfo_ definitions to be used instead of the built in + definitions. Some arrow keys on old terminals send single control + characters like _^K_ (one even sends _^\_). These arrow keys will not + work with _Alpine_. The most popular escape sequences for arrow keys + are: + + Up: <ESC>[A <ESC>?x <ESC>A <ESC>OA + Down: <ESC>[B <ESC>?r <ESC>B <ESC>OB + Right: <ESC>[C <ESC>?v <ESC>C <ESC>OC + Left: <ESC>[D <ESC>?t <ESC>D <ESC>OD diff --git a/pico/browse.c b/pico/browse.c index a34f6d4b..1c171db9 100644 --- a/pico/browse.c +++ b/pico/browse.c @@ -71,6 +71,7 @@ struct fcell { */ static struct bmaster { struct fcell *head; /* first cell in list */ + struct fcell *bottom; /* last cell in list */ struct fcell *top; /* cell in top left */ struct fcell *current; /* currently selected */ int longest; /* longest file name (in screen width) */ @@ -98,7 +99,7 @@ void percdircells(struct bmaster *); int PlaceCell(struct bmaster *, struct fcell *, int *, int *); void zotfcells(struct fcell *); void zotmaster(struct bmaster **); -struct fcell *FindCell(struct bmaster *, char *); +struct fcell *FindCell(struct bmaster *, char *, int); int sisin(char *, char *); void p_chdir(struct bmaster *); void BrowserAnchor(char *); @@ -316,6 +317,7 @@ FileBrowse(char *dir, size_t dirlen, char *fn, size_t fnlen, UCS c, new_c; int status, i, j; int row, col, crow, ccol; + int bsearch; /* search forward by default */ char *p, *envp, child[NLINE], tmp[NLINE]; struct bmaster *mp; struct fcell *tp; @@ -344,7 +346,7 @@ FileBrowse(char *dir, size_t dirlen, char *fn, size_t fnlen, tp = NULL; if(fn && *fn){ - if((tp = FindCell(gmp, fn)) != NULL){ + if((tp = FindCell(gmp, fn, 0)) != NULL){ gmp->current = tp; PlaceCell(gmp, gmp->current, &row, &col); } @@ -904,12 +906,15 @@ FileBrowse(char *dir, size_t dirlen, char *fn, size_t fnlen, if(tp == gmp->head) gmp->head = tp->next; + if(tp == gmp->bottom) + gmp->bottom = tp->prev; + tp->fname = NULL; tp->next = tp->prev = NULL; if(tp != gmp->current) free((char *) tp); - if((tp = FindCell(gmp, gmp->current->fname)) != NULL){ + if((tp = FindCell(gmp, gmp->current->fname, 0)) != NULL){ gmp->current = tp; PlaceCell(gmp, gmp->current, &row, &col); } @@ -1140,7 +1145,7 @@ FileBrowse(char *dir, size_t dirlen, char *fn, size_t fnlen, zotmaster(&gmp); gmp = mp; - if((tp = FindCell(gmp, child)) != NULL){ + if((tp = FindCell(gmp, child, 0)) != NULL){ gmp->current = tp; PlaceCell(gmp, gmp->current, &row, &col); } @@ -1267,7 +1272,7 @@ FileBrowse(char *dir, size_t dirlen, char *fn, size_t fnlen, zotmaster(&gmp); gmp = mp; - if((tp = FindCell(gmp, child)) != NULL){ + if((tp = FindCell(gmp, child, 0)) != NULL){ gmp->current = tp; PlaceCell(gmp, gmp->current, &row, &col); } @@ -1376,7 +1381,7 @@ FileBrowse(char *dir, size_t dirlen, char *fn, size_t fnlen, zotmaster(&gmp); gmp = mp; - if((tp = FindCell(gmp, ++p)) != NULL){ + if((tp = FindCell(gmp, ++p, 0)) != NULL){ gmp->current = tp; PlaceCell(gmp, gmp->current, &row, &col); } @@ -1488,7 +1493,7 @@ FileBrowse(char *dir, size_t dirlen, char *fn, size_t fnlen, tp = NULL; if(*child){ - if((tp = FindCell(gmp, child)) != NULL){ + if((tp = FindCell(gmp, child, 0)) != NULL){ gmp->current = tp; PlaceCell(gmp, gmp->current, &row, &col); } @@ -1592,11 +1597,11 @@ FileBrowse(char *dir, size_t dirlen, char *fn, size_t fnlen, case 'w': /* Where is */ case 'W': case (CTRL|'W'): - i = 0; + bsearch = i = 0; while(!i){ - switch(readpattern(_("File name to find"), FALSE)){ + switch(readpattern(_("File name to find"), FALSE, bsearch)){ case HELPCH: emlwrite(_("\007No help yet!"), NULL); /* remove break and sleep after help text is installed */ @@ -1605,6 +1610,9 @@ FileBrowse(char *dir, size_t dirlen, char *fn, size_t fnlen, case (CTRL|'L'): PaintBrowser(gmp, 0, &crow, &ccol); break; + case (CTRL|'P'): + bsearch = ++bsearch % 2; + break; case (CTRL|'Y'): /* first first cell */ for(tp = gmp->top; tp->prev; tp = tp->prev) ; @@ -1665,7 +1673,7 @@ FileBrowse(char *dir, size_t dirlen, char *fn, size_t fnlen, if(pat && pat[0]) utf8 = ucs4_to_utf8_cpystr(pat); - if(utf8 && (tp = FindCell(gmp, utf8)) != NULL){ + if(utf8 && (tp = FindCell(gmp, utf8, bsearch)) != NULL){ PlaceCell(gmp, gmp->current, &row, &col); PaintCell(row, col, gmp->cpf, gmp->current, 0); gmp->current = tp; @@ -1772,7 +1780,7 @@ getfcells(char *dname, int fb_flags) mp->dname[sizeof(mp->dname)-1] = '\0'; } - mp->head = mp->top = NULL; + mp->bottom = mp->head = mp->top = NULL; mp->cpf = mp->fpl = 0; mp->longest = 5; /* .. must be labeled! */ mp->flags = fb_flags; @@ -1865,6 +1873,7 @@ getfcells(char *dname, int fb_flags) mp->head = mp->top = mp->current = ncp; } else{ + mp->bottom = ncp; tcp->next = ncp; ncp->prev = tcp; } @@ -2403,7 +2412,7 @@ zotmaster(struct bmaster **mp) * the given string wrapping around if necessary */ struct fcell * -FindCell(struct bmaster *mp, char *utf8string) +FindCell(struct bmaster *mp, char *utf8string, int bsearch) { struct fcell *tp, *fp; @@ -2411,21 +2420,21 @@ FindCell(struct bmaster *mp, char *utf8string) return(NULL); fp = NULL; - tp = mp->current->next; + tp = bsearch ? mp->current->prev : mp->current->next; while(tp && !fp){ if(sisin(tp->fname, utf8string)) fp = tp; else - tp = tp->next; + tp = bsearch ? tp->prev : tp->next; } - tp = mp->head; + tp = bsearch ? mp->bottom : mp->head; while(tp != mp->current && !fp){ if(sisin(tp->fname, utf8string)) fp = tp; else - tp = tp->next; + tp = bsearch ? tp->prev : tp->next; } return(fp); diff --git a/pico/efunc.h b/pico/efunc.h index 624d1616..d657aaa2 100644 --- a/pico/efunc.h +++ b/pico/efunc.h @@ -229,9 +229,9 @@ extern void unmarkbuffer(void); /* search.c */ extern int forwsearch(int, int); -extern int readpattern(char *, int); -extern int forscan(int *, UCS *, LINE *, int, int); -extern void chword(UCS *, UCS *); +extern int readpattern(char *, int, int); +extern int forscan(int *, UCS *, int, LINE *, int, int); +extern void chword(UCS *, UCS *, int); /* spell.c */ #ifdef SPELLER diff --git a/pico/osdep/spell.c b/pico/osdep/spell.c index ca063ba2..1606ce68 100644 --- a/pico/osdep/spell.c +++ b/pico/osdep/spell.c @@ -207,7 +207,7 @@ spell(int f, int n) switch(status){ case TRUE: - chword(wb, cb); /* correct word */ + chword(wb, cb, 0); /* correct word */ case FALSE: update(); /* place cursor */ break; @@ -285,7 +285,7 @@ movetoword(UCS *w) olddotp = curwp->w_dotp; curwp->w_bufp->b_mode |= MDEXACT; /* case sensitive */ - while(forscan(&i, w, NULL, 0, 1) == TRUE){ + while(forscan(&i, w, 0, NULL, 0, 1) == TRUE){ if(i) break; /* wrap NOT allowed! */ diff --git a/pico/search.c b/pico/search.c index 0d07d904..49aaec2d 100644 --- a/pico/search.c +++ b/pico/search.c @@ -32,11 +32,16 @@ int eq(UCS, UCS); int expandp(UCS *, UCS *, int); int readnumpat(char *); void get_pat_cases(UCS *, UCS *); -int srpat(char *, UCS *, size_t, int); -int readpattern(char *, int); -int replace_pat(UCS *, int *); -int replace_all(UCS *, UCS *); - +int srpat(char *, UCS *, size_t, int, int); +int readpattern(char *, int, int); +int replace_pat(UCS *, int *, int); +int replace_all(UCS *, UCS *, int); +void reverse_line(LINE *); +void reverse_buffer(void); +void reverse_ucs4(UCS *); +void reverse_all(UCS *, int); +void supdate(UCS *, int); +char *sucs4_to_utf8_cpystr(UCS *, int); #define FWS_RETURN(RV) { \ thisflag |= CFSRCH; \ @@ -109,13 +114,14 @@ eq(UCS bc, UCS pc) int forwsearch(int f, int n) { - int status; + int status, bsearch; int wrapt = FALSE, wrapt2 = FALSE; int repl_mode = FALSE; UCS defpat[NPAT]; int search = FALSE; EML eml; + /* resolve the repeat count */ if (n == 0) n = 1; @@ -124,14 +130,15 @@ forwsearch(int f, int n) FWS_RETURN(0); defpat[0] = '\0'; + bsearch = 0; /* search forward by default */ /* ask the user for the text of a pattern */ while(1){ if (gmode & MDREPLACE) - status = srpat("Search", defpat, NPAT, repl_mode); + status = srpat("Search", defpat, NPAT, repl_mode, bsearch); else - status = readpattern("Search", TRUE); + status = readpattern("Search", TRUE, bsearch); switch(status){ case TRUE: /* user typed something */ @@ -158,6 +165,10 @@ forwsearch(int f, int n) update(); break; + case (CTRL|'P'): + bsearch = bsearch == 0 ? 1 : 0; + break; + case (CTRL|'V'): gotoeob(0, 1); mlerase(); @@ -258,6 +269,8 @@ forwsearch(int f, int n) } } + reverse_all(defpat, bsearch); + /* * This code is kind of dumb. What I want is successive C-W 's to * move dot to successive occurences of the pattern. So, if dot is @@ -270,19 +283,19 @@ forwsearch(int f, int n) while(1){ if(defpat[status] == '\0'){ forwchar(0, 1); - break; /* find next occurence! */ + break; } if(status + curwp->w_doto >= llength(curwp->w_dotp) || !eq(defpat[status],lgetc(curwp->w_dotp, curwp->w_doto + status).c)) - break; /* do nothing! */ + break; status++; } /* search for the pattern */ while (n-- > 0) { - if((status = forscan(&wrapt,defpat,NULL,0,PTBEG)) == FALSE) + if((status = forscan(&wrapt,defpat, bsearch, NULL,0,PTBEG)) == FALSE) break; } @@ -301,7 +314,7 @@ forwsearch(int f, int n) fs_give((void **) &utf8); } else if((gmode & MDREPLACE) && repl_mode == TRUE){ - status = replace_pat(defpat, &wrapt2); /* replace pattern */ + status = replace_pat(defpat, &wrapt2, bsearch); /* replace pattern */ if (wrapt == TRUE || wrapt2 == TRUE){ eml.s = (status == ABORT) ? "cancelled but wrapped" : "Wrapped"; emlwrite("Replacement %s", &eml); @@ -314,13 +327,18 @@ forwsearch(int f, int n) emlwrite("", NULL); } + reverse_all(defpat, bsearch); + if(curwp->w_doto == -1){ + curwp->w_doto = 0; + curwp->w_flag |= WFMOVE; + } FWS_RETURN(status); } /* Replace a pattern with the pattern the user types in one or more times. */ int -replace_pat(UCS *defpat, int *wrapt) +replace_pat(UCS *defpat, int *wrapt, int bsearch) { register int status; UCS lpat[NPAT], origpat[NPAT]; /* case sensitive pattern */ @@ -331,7 +349,9 @@ replace_pat(UCS *defpat, int *wrapt) UCS prompt[NPMT]; UCS *promptp; - forscan(wrapt, defpat, NULL, 0, PTBEG); /* go to word to be replaced */ + if(bsearch) + curwp->w_doto -= ucs4_strlen(defpat) - 1; + forscan(wrapt, defpat, bsearch, NULL, 0, PTBEG); /* go to word to be replaced */ lpat[0] = '\0'; @@ -344,6 +364,13 @@ replace_pat(UCS *defpat, int *wrapt) while(1) { + /* we need to reverse the buffer back to its original state, so that + * the user will not see that we reversed it under them. The cursor + * is at the beginning of the reverse string, that is at the end + * of the string. Move it back to the beginning. + */ + + reverse_all(defpat, bsearch); /* reverse for normal view */ update(); (*term.t_rev)(1); get_pat_cases(origpat, defpat); @@ -402,6 +429,8 @@ replace_pat(UCS *defpat, int *wrapt) curwp->w_flag |= WFMOVE; + reverse_all(defpat, bsearch); /* reverse for internal use */ + switch(status){ case TRUE : @@ -416,10 +445,10 @@ replace_pat(UCS *defpat, int *wrapt) } if (repl_all){ - status = replace_all(defpat, lpat); + status = replace_all(defpat, lpat, bsearch); } else{ - chword(defpat, lpat); /* replace word */ + chword(defpat, lpat, bsearch); /* replace word */ update(); status = TRUE; } @@ -470,7 +499,7 @@ replace_pat(UCS *defpat, int *wrapt) } else{ mlerase(); - chword(defpat, origpat); + chword(defpat, origpat, bsearch); } update(); @@ -501,7 +530,7 @@ get_pat_cases(UCS *realpat, UCS *searchpat) /* Ask the user about every occurence of orig pattern and replace it with a repl pattern if the response is affirmative. */ int -replace_all(UCS *orig, UCS *repl) +replace_all(UCS *orig, UCS *repl, int bsearch) { register int status = 0; UCS *b; @@ -514,10 +543,20 @@ replace_all(UCS *orig, UCS *repl) int stop_offset = curwp->w_doto; EML eml; + /* similar to replace_pat. When we come here, if bsearch is set, + * the cursor is at the end of the match, so we must bring it back + * to the beginning. + */ + if(bsearch){ + curwp->w_doto -= ucs4_strlen(orig) - 1; + curwp->w_flag |= WFMOVE; + } + stop_offset = curwp->w_doto; while (1) - if (forscan(&wrapt, orig, stop_line, stop_offset, PTBEG)){ + if (forscan(&wrapt, orig, bsearch, stop_line, stop_offset, PTBEG)){ curwp->w_flag |= WFMOVE; /* put cursor back */ + reverse_all(orig, bsearch); /* undo reverse buffer and pattern */ update(); (*term.t_rev)(1); get_pat_cases(realpat, orig); @@ -562,10 +601,10 @@ replace_all(UCS *orig, UCS *repl) if (status == TRUE){ n++; - chword(realpat, repl); /* replace word */ + chword(realpat, repl, bsearch); /* replace word */ update(); }else{ - chword(realpat, realpat); /* replace word by itself */ + chword(realpat, realpat, bsearch); /* replace word by itself */ update(); if(status == ABORT){ /* if cancelled return */ eml.s = comatose(n); @@ -593,14 +632,14 @@ replace_all(UCS *orig, UCS *repl) /* Read a replacement pattern. Modeled after readpattern(). */ int -srpat(char *utf8prompt, UCS *defpat, size_t defpatlen, int repl_mode) +srpat(char *utf8prompt, UCS *defpat, size_t defpatlen, int repl_mode, int bsearch) { register int s; int i = 0; UCS *b; UCS prompt[NPMT]; UCS *promptp; - EXTRAKEYS menu_pat[8]; + EXTRAKEYS menu_pat[9]; menu_pat[i = 0].name = "^Y"; menu_pat[i].label = N_("FirstLine"); @@ -643,13 +682,24 @@ srpat(char *utf8prompt, UCS *defpat, size_t defpatlen, int repl_mode) KS_OSDATASET(&menu_pat[i], KS_NONE); } + menu_pat[++i].name = "^P"; + menu_pat[i].label = bsearch ? N_("Forward") : N_("Backward") ; + menu_pat[i].key = (CTRL|'P'); + KS_OSDATASET(&menu_pat[i], KS_NONE); + menu_pat[++i].name = NULL; b = utf8_to_ucs4_cpystr(utf8prompt); if(b){ ucs4_strncpy(prompt, b, NPMT); prompt[NPMT-1] = '\0'; - fs_give((void **) &b); + if(bsearch){ + fs_give((void **) &b); + b = utf8_to_ucs4_cpystr(N_(" backward")); + if(b) ucs4_strncat(prompt, b, ucs4_strlen(b)); + prompt[NPMT-1] = '\0'; + } + if(b) fs_give((void **) &b); } promptp = &prompt[ucs4_strlen(prompt)]; @@ -762,14 +812,14 @@ readnumpat(char *utf8prompt) int -readpattern(char *utf8prompt, int text_mode) +readpattern(char *utf8prompt, int text_mode, int bsearch) { register int s; int i; UCS *b; UCS tpat[NPAT+20]; UCS *tpatp; - EXTRAKEYS menu_pat[7]; + EXTRAKEYS menu_pat[8]; menu_pat[i = 0].name = "^Y"; menu_pat[i].label = N_("FirstLine"); @@ -803,13 +853,24 @@ readpattern(char *utf8prompt, int text_mode) KS_OSDATASET(&menu_pat[i], KS_NONE); } + menu_pat[++i].name = "^P"; + menu_pat[i].label = bsearch ? N_("Forward") : N_("Backward") ; + menu_pat[i].key = (CTRL|'P'); + KS_OSDATASET(&menu_pat[i], KS_NONE); + menu_pat[++i].name = NULL; b = utf8_to_ucs4_cpystr(utf8prompt); if(b){ ucs4_strncpy(tpat, b, NPAT+20); tpat[NPAT+20-1] = '\0'; - fs_give((void **) &b); + if(bsearch){ + fs_give((void **) &b); + b = utf8_to_ucs4_cpystr(N_(" backward")); + if(b) ucs4_strncat(tpat, b, ucs4_strlen(b)); + tpat[NPAT+20-1] = '\0'; + } + if(b) fs_give((void **) &b); } tpatp = &tpat[ucs4_strlen(tpat)]; @@ -853,11 +914,82 @@ readpattern(char *utf8prompt, int text_mode) return(s); } +/* given a line, reverse its content */ +void reverse_line(LINE *l) +{ + int i, j, a; + UCS u; + + if(l == NULL) return; + j = llength(l) - 1; + for(i = 0; i < j; i++, j--){ + u = lgetc(l, j).c; /* reverse the text */ + lgetc(l, j).c = lgetc(l, i).c; + lgetc(l, i).c = u; + a = lgetc(l, j).a; /* and the attribute */ + lgetc(l, j).a = lgetc(l, i).a; + lgetc(l, i).a = a; + } +} + +void +reverse_all(UCS *pat, int bsearch) +{ + if(bsearch != 0){ + reverse_buffer(); + reverse_ucs4(pat); + } +} + +void +reverse_buffer(void) +{ + LINE *l; + + for(l = lforw(curbp->b_linep); l != curbp->b_linep; l = lforw(l)) + reverse_line(l); + + /* reverse links in buffer */ + l = curbp->b_linep; + do { + lforw(l) = lback(l); + l = lforw(l); + } while(l != curbp->b_linep); + + l = curbp->b_linep; + do { + lback(lforw(l)) = l; + l = lforw(l); + } while (l != curbp->b_linep); + + curwp->w_doto = llength(curwp->w_dotp) - 1 - curwp->w_doto; +} + + + +/* given a UCS4 string reverse its content */ +void reverse_ucs4(UCS *s) +{ + int i, j; + UCS u; + + j = ucs4_strlen(s) - 1; + for(i = 0; i < j; i++, j--){ + u = s[j]; + s[j] = s[i]; + s[i] = u; + } +} + -/* search forward for a <patrn> */ +/* search forward for a <patrn>. + * A backward search is a forward search in backward lines with backward + * patterns + */ int forscan(int *wrapt, /* boolean indicating search wrapped */ UCS *patrn, /* string to scan for */ + int bsearch, /* search backwards */ LINE *limitp, /* stop searching if reached */ int limito, /* stop searching if reached */ int leavep) /* place to leave point @@ -878,6 +1010,13 @@ forscan(int *wrapt, /* boolean indicating search wrapped */ *wrapt = FALSE; + /* if bsearch is set we return the match at the beginning of the + * matching string, so we make this algorithm return the end of + * the string, so that when we reverse we be at the beginning. + */ + if(bsearch) + leavep = leavep == PTBEG ? PTEND : PTBEG; + /* * the idea is to set the character to end the search at the * next character in the buffer. thus, let the search wrap @@ -919,12 +1058,17 @@ forscan(int *wrapt, /* boolean indicating search wrapped */ /* get the current character resolving EOLs */ if (curoff == llength(curline)) { /* if at EOL */ - curline = lforw(curline); /* skip to next line */ - curoff = 0; + curline = lforw(curline); /* skip to next line */ + curoff = 0; c = '\n'; /* and return a <NL> */ } + else if(curoff == -1){ + stopoff = curoff = 0; + continue; + c = '\n'; + } else - c = lgetc(curline, curoff++).c; /* get the char */ + c = lgetc(curline, curoff++).c; /* get the char */ /* test it against first char in pattern */ if (eq(c, patrn[0]) != FALSE) { /* if we find it..*/ @@ -1025,13 +1169,37 @@ expandp(UCS *srcstr, /* string to expand */ /* * chword() - change the given word, wp, pointed to by the curwp->w_dot * pointers to the word in cb + * if bsearch is set, then cb is supposed to come unreversed, while + * the buffer is supposed to be reversed, so we must reverse cb before + * inserting it. */ void -chword(UCS *wb, UCS *cb) +chword(UCS *wb, UCS *cb, int bsearch) { - ldelete((long) ucs4_strlen(wb), NULL); /* not saved in kill buffer */ - while(*cb != '\0') - linsert(1, *cb++); + UCS *u; + ldelete(ucs4_strlen(wb), NULL); /* not saved in kill buffer */ + if(bsearch) reverse_ucs4(cb); + for(u = cb; *u != '\0'; u++) + linsert(1, *u); + if(bsearch) reverse_ucs4(cb); curwp->w_flag |= WFEDIT; } + +void + supdate(UCS *pat, int bsearch) +{ + reverse_all(pat, bsearch); /* undo reverse buffer and pattern */ + update(); + reverse_all(pat, bsearch); /* reverse buffer and pattern */ +} + +char * +sucs4_to_utf8_cpystr(UCS *orig, int bsearch) +{ + char *utf8; + if(bsearch) reverse_ucs4(orig); + utf8 = ucs4_to_utf8_cpystr(orig); + if(bsearch) reverse_ucs4(orig); + return utf8; +} diff --git a/pith/filter.c b/pith/filter.c index 36ef3ed9..2800a3ba 100644 --- a/pith/filter.c +++ b/pith/filter.c @@ -7230,10 +7230,6 @@ html_element_collector(FILTER_S *fd, int ch) else if(ED(fd)->proc_inst){ return(1); /* return without display... */ } - else if(!strucmp(ED(fd)->element,"STYLE") && ED(fd)->badform){ - dprint((2, "-- html error: empty tag with STYLE parameter!")); - return(1); - } else if(!ED(fd)->quoted || ED(fd)->badform){ ELPROP_S *ep; diff --git a/pith/pine.hlp b/pith/pine.hlp index 626aa3af..9d362379 100644 --- a/pith/pine.hlp +++ b/pith/pine.hlp @@ -140,7 +140,7 @@ with help text for the config screen and the composer that didn't have any reasonable place to be called from. Dummy change to get revision in pine.hlp ============= h_revision ================= -Alpine Commit 42 2014-02-02 00:15:19 +Alpine Commit 43 2014-02-09 15:14:42 ============= h_news ================= <HTML> <HEAD> @@ -179,6 +179,10 @@ Additions include: <P> <UL> + <LI> Style tag in body of html message causes Alpine to not write its content + until a new </style> + <LI> Pico: New subcommand of the search command, allows to reverse the + direction of search. <LI> Upgrade UW-IMAP to Panda IMAP from <A HREF="https://github.com/jonabbey/panda-imap">https://github.com/jonabbey/panda-imap</A>. <LI> Replace tabs by spaces in From and Subject fields to control for @@ -213,6 +217,8 @@ Additions include: <LI> Pico: Justification works without need of a predefined quote string. This allows justification of blocks of text that are indented with spaces. + <LI> Check bounds and tie strings off to improve security. Contributed + by James Jerkins. </UL> <P> |