Pine Technical Notes
Version 4.10, February 1999
Pine and Pico are trademarks of the University of Washington.
No commercial use of these trademarks may be made without prior
written permission of the University of Washington.
Pine, Pico and Pilot Copyright 1989-1999 University of Washington.
Additional legal notices are at the web URL
http://www.washington.edu/pine/legal.
Table of Contents
Introduction
* Design Goals
* Pine Components
Background Details
* Domain Names
* RFC 822 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
* Pine Compile-time Options
* Pico Compile-time Options
* OS Dependent Compile-time Settings
* IMAPd Compile-time Options
* Building the Pine Programs
* Installing Pine and Pico on UNIX Platforms
* Installing PC-Pine
* Installing IMAPd
* Support Files and Environment Variables: UNIX Pine
* Support Files and Environment Variables: PC-Pine
Command Line Arguments
* Pine
* Pico
* Pilot
Configuration and Preferences
* Pine Configuration
* General Configuration Variables
* Configuration Features
* Hidden Config Variables and Features
* Retired Variables
* Tokens for Index and Replying
* Conditional Inclusion of Text for Reply-Intro, Signatures, and
Templates
* Per Server Directory Configuration
* Role Configuration
Configuration Notes
+ Pine in Function Key Mode
+ Domain Settings
+ Syntax for Collections
+ Syntax for Remote Folders
+ Sorting a Folder
+ Alternate Editor
+ Signatures and Signature Placement
+ Feature List Variable
+ SMTP Servers
+ MIME.Types file
+ Additional Notes on PC-Pine
Behind the Scenes
* Address Books
* Checkpointing
* Debug Files
* Filters
* Folder Formats and Name Extensions
* Folder Locking
* 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
Notes for Porting and Modification
* Porting Pine to Other Platforms
* Test Checklist
Introduction
Design Goals
Throughout Pine 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 underlying 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.
- Pine must provide immediate feedback for the user with each
operation.
- Pine 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), Pine 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 Pine 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 Pine, there
were equally important goals having to do with Pine's structure-the
things that users never see but still rely on every time they use
Pine. While Pine 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
was one of the first programs to support the Multipurpose Internet
Mail Extensions (MIME) specification. With MIME, Pine 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 Pine. As you work
with Pine more, you will see other features which reflect the same
values. For example, Pine enforces strict compliance with RFC 822,
implements a strong mail folder locking mechanism and verifies a
process before overwriting any files (e.g. addressbook, expunging
messages).
Pine Components
If you have picked up the Pine distribution, then you already know
that Pine comes in a few different pieces. They are:
Pine
The main code from which the Pine program is compiled.
Pico
Pico is the name for the Pine 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 Pine to support
composition of messages within Pine. Pico is Pine'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 Pine, and the IMAP server IMAPd. C-Client
implements the IMAP protocol and also negotiates all access
between Pine 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 Pine accesses a remote
mailbox, the Pine program is the IMAP client and the IMAPd
program is the IMAP server.
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.
Pine 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 Pine configuration file, or rely on the file /etc/hosts which
usually sets the name of the local host. While Pine 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.
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
Pine configuration file (PINERC).
Details on configuring Pine with correct domain names can be found in
the Domain Settings section of this document.
_________________________________________________________________
RFC 822 Compliance
Pine tries to adhere to RFC 822 a little more strongly than some other
mailers and uses the "full name
" format rather than the
older "address (full name)" format. The intent of the standard is that
parentheses should only be for comments. Pine displays and generates
the newer format, but will parse the old format and attempt to turn it
into the new one.
As far as outgoing email is concerned, Pine 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. Pine 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 newer 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 822 appear in the full name, quotes are required around the
address. Pine will insert the quotes automatically. The common cases
where this happens are with periods after initials and parentheses.
Because Pine fully complies with RFC 822, it is sometimes difficult to
use non-Internet address formats such as UUCP's host!user or DECNet's
USER::HOST with Pine. People who run Pine on these systems have made
local modifications to Pine or to the mail transport agent (e.g.
sendmail) to make things work for them.
Pine 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 displayed as xxx xx when shown in
the FOLDER INDEX screen.
_________________________________________________________________
SMTP and Sendmail
Pine is a user agent not a message transfer agent. In plain English,
that means Pine does not know how to interact with other computers on
the Internet to deliver or receive email. What Pine 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 a mail transfer program or to an
SMTP server. The most common mail transfer program is sendmail.
Pine 3.91 and earlier:
When Pine on a UNIX computer uses the local sendmail, it first
writes the message to a temporary file in /tmp. Then Pine runs
a shell in the background that runs sendmail on the temporary
file and then removes it. This is done with a shell in the
background so the user doesn't have to wait for sendmail to
finish. By default, sendmail is invoked with the -t flag to
cause it to read and parse the header to determine the
recipients; the -oem flag to cause errors to be mailed back;
and the -oi flag to ignore dots in incoming messages. Systems
administrators can choose to configure Pine to use a different
mail transfer program or even sendmail with different flags.
See the section on UNIX Pine Compile-time Options for more
details on this.
Pine can also operate 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, Pine 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 Pine 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 SMTP servers. PC-Pine only runs as an SMTP client.
Pine 3.92 and later:
The selection of which MTA to use depends on the settings of
sendmail-path, smtp-server, 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.
If an smtp-server is specified, a connection to the server is
opened. If the message contains 8-bit text, ESMTP 8BITMIME
negotiation is attempted. The message is then sent using SMTP
commands.
If none of the above are set, the default sendmail program is
invoked with the "-bs -odb -oem" flags, ESMTP negotiation is
attempted, and the message is sent.
_________________________________________________________________
Internet Message Access Protocol (IMAP)
IMAP is a remote access protocol for message stores. Pine uses IMAP to
get at messages and folders which reside on remote machines. With
IMAP, all messages are kept on the server. An IMAP client (such as
Pine) can request specific messages, headers, message structures, 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." These papers
may be found in the /mail directory of the anonymous FTP server at
ftp.cac.washington.edu.
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
2MB 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 Pine 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. Pine does not yet
support this capability, however.
IMAP2 is defined in RFC 1176. IMAP4rev1, the revision to IMAP2, is
described in RFC 2060. Further information about IMAP may be obtained
from the University of Washington's IMAP Information Center on the
World Wide Web.
Pine 4.00 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 Pine 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. It
also provides a simple rich text format for marking text as bold,
underlined, and so on. There is a mechanism for splitting messages
into multiple parts and reassembling them at the receiving end.
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. Support for RFC 2047 was added in Pine 3.92.
An actual MIME message looks something like this:
Date: Tue, 12 Mar 1996 15:39:35 -0800 (PST)
From: David L Miller
To: David L Miller
Subject: =?iso-8859-1?Q?Test_MIME_message_with_RFC-1522_headers_=28=E1?= =?i
so-8859-1?Q?=E2=E3=29?=
Message-Id:
Mime-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="0-1737669234-826673975=:21583"
Content-Id:
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:
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:
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 Pine'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 Pine's way of dealing with more than a single
group of folders. With advent of PC-Pine and the development of tools
within IMAP to better manage remote folders, the time was ripe to
provide a mechanism for defining a group of remote folders. PC-Pine
forced the issue in that many potential PC-Pine users would be
migrating from UNIX Pine in a time-sharing environment and, thus,
would have some investment in their archived messages on that host.
For a more complete description of Folder Collections, see the section
on "Syntax for Collections."
The Pine distribution is designed to require as little configuration
and effort at compile time as possible. Still, there are some Pine
behaviors which are set at the time you compile Pine. 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
The files you may need to modify are ./{pico,pine}/makefile.xxx,
./{pico,pine}/osdep/os-xxx.h, and possibly
./{pico,pine}/osdep/os-xxx.ic, where xxx is the 3-letter code for your
platform. You can give the command build help to see the list of ports
incorporated into Pine and their associated 3-letter codes. The files
./{pico,pine}/makefile.xxx are where you would set compiler options.
By default, Pine will be compiled with debugging on, optimization and
profiling off. Note that if you compile with DEBUG off, then Pine will
not create its normal debug files, no matter how the debug-level and
debug command line flag are set.
Some of these can only be set when you compile. Others, however, can
be overridden by command-line flags to Pine or settings in Pine's user
or system configuration files. Some of the options which can be set
when compiling:
Including LDAP Functionality
In order to build Pine with LDAP functionality included you need to
supply the LDAP library and include files. Pine has been successfully
built with the University of Michigan LDAP library (ldap-3.3) and with
the Netscape Directory SDK 1.0 LDAP library.
To use the University of Michigan library, place a symlink called ldap
to the University of Michigan LDAP source (ldap-3.3) in the top-level
pine directory (where the Pine build script is located). See the
comments in the script contrib/ldap-setup for the most up-to-date
information. It may also help to try running the build script in the
top-level directory of the distribution once you have placed the ldap
symlink. The script will attempt to give you a hint on how to make the
ldap library based on the target you are building for Pine.
To use the Netscape Directory SDK library, make a directory called
ldap in the top-level pine directory (where the Pine build script is
located). That directory should contain two subdirectories, include
and libraries. The include directory is where you should put the
include files from the Netscape SDK. The libraries directory is where
you should put the library, libldap.a.
The build script will run the script contrib/ldap-setup if you have
created an ldap symlink or directory. It tries to figure out if the
setup is the Univ. of Michigan code or not. If it is Univ. of Michigan
ldap-3.3 or the library from mozilla.org, then it will link against
both libldap.a and liblber.a. If it isn't, it will link against only
libldap.a. You may find you have to do some tweaking to get this to
work with the libraries you are using. If you find that a change to
contrib/ldap-setup works for you, you might think about sending that
to us for inclusion in the next Pine release.
Pine 4.10 and earlier uses LDAPv2 protocol. When using LDAPv3
protocol, the results are returned in the uft8 character set. Pine is
not yet ready to deal with that, so it tells the server to use LDAPv2
protocol.
Including Kerberos 5 Functionality
In order to build Pine with Kerberos functionality included you should
place a symlink called krb5 to the directory where your Kerberos5
include files and libraries are located. That is, krb5/include and
krb5/lib should exist. Place the symlink in the top-level pine
directory (where the Pine build script is located). See the comments
in the script contrib/krb5-setup if you have trouble.
Pine Compile-time Options
USE_QUOTAS
Determines whether quotas are checked on startup. Default is to
not check the quota.
ALLOW_CHANGING_FROM
This is now a hidden runtime feature called allow-changing-from
. Even with this feature turned on, users still have to include From
in their default-composer-hdrs or customized-hdrs in order to be able
to edit the From line.
Beginning with version 4.10, a user may also change their From address
by using Roles.
A system administrator may disallow editing of the From line by
putting the feature no-allow-changing-from in the system-wide fixed
configuration file. The paranoid system administrator can compile in
this behavior by defining NEVER_ALLOW_CHANGING_FROM in
./pine/osdep/os-xxx.h.
DEFAULT_DEBUG
Sets the level of debugging output created in Pine's debug files.
Default is level 2. The command-line flag -d may also be used to
change the debug level. For example, -dverbose=7.
NUMDEBUGFILES
Sets the number of debug files kept per user. Default is 4. The
command-line flag -d may also be used to change this. For example,
-dverbose=3,numfiles=2.
BACKGROUND_POST
Define this if you want to allow users to turn on the feature that
enables sending to take place in a fork()'d child. This may reduce the
time on the user's wall clock it takes to post mail. NOTE: You'll also
have to make sure the appropriate ./pine/osdep/postreap.* file is
included in the ./pine/osdep/os-xxx.ic file for your system.
NEW_MAIL_TIME
Interval between new-mail checks. Default is 150 seconds. This is
obsolete. This should be set in a configuration file by setting the
variable mail-check-interval.
OVERLAP
Number of lines overlap when user views the next page of a message.
Default is 2 lines. This is obsolete. This should be set in a
configuration file by setting the variable viewer-overlap.
PASSFILE
WARNING! Turning this on is very dangerous and should probably not be
done, except on single user systems! For PC-Pine, this is turned on by
default and set to the filename PINE.PWD. You may enable it for Unix
systems by defining PASSFILE to be a filename which will be located in
the same directory as the pinerc file, usually the home directory. See
./pine/osdep/os-wnt.h for an example showing how to define it.
The file is used to save passwords from one session to the next. Even
if you define PASSFILE when you compile Pine, password saving will not
be enabled by default, but requires the existence of the file (the
name of which is the value of PASSFILE). Even with the existence of
this file, the user must still acknowledge a prompt before the
password is saved to the file. If Pine is configured to access several
different IMAP servers, each password entered will be kept (associated
with the corresponding host name) in memory during the current
session, and optionally, in the PASSFILE file for use in subsequent
sessions.
WARNING! Use this feature with caution! It effectively makes the
user's mail no more secure than the physical security of the machine
running Pine. What's more, while the password is cloaked by a mild
(some might say, feeble) encryption scheme, it is nonetheless sitting
in a file on the disk and subject to cracking by anyone with access to
it. BEWARE!
SENDMAIL
SENDMAILFLAGS
Sets the name and flags for the local program that will be called to
handle outgoing email. Default is /usr/lib/sendmail -oi -oem -t. See
the SMTP and Sendmail section for more details.
SYSTEM_PINERC
The name of the file which holds Pine configuration information for
all users on the system. Default on UNIX systems is
/usr/local/lib/pine.conf.
SYSTEM_PINERC_FIXED
The name of the file which holds the same type of information as for
SYSTEM_PINERC, but only for variables that the administrator wants to
keep fixed. That is, users are not allowed to change variables that
are specified in the FIXED file. Default on UNIX systems is
/usr/local/lib/pine.conf.fixed.
There are a couple of more obscure options which are in the source
code because a few people have asked for them or because we changed
our minds about them being a good idea in general.
ENCODE_FROMS
Use Quoted-printable encoding so that From's at the beginning
of lines don't end up being escaped by >'s. Most people seem to
dislike the Q-P encoding more than the > escapes so this is off
by default. Once everyone has MIME mail readers, we'll turn
this on by default.
NO_KEYBOARD_LOCK
Disable the keyboard locking function in the main menu.
Keyboard locking is enabled by default. An easier way to turn
off Keyboard locking is to add the feature
disable-keyboard-lock-cmd to the feature list variable in the
global pine.conf or pine.conf.fixed file.
Pico Compile-time Options
There is really only one option settable specifically for Pico. It is
for the UNIX Pico versions only. The file that may need some changing
is ./pico/osdep/os_xxx.h.. Whatever is set will effect the behavior of
the Pico stand-alone program as well as the composer within Pine.
SPELLER
Names the program called to do "normal" spell-checking. This
can be set in a configuration file instead by setting the
speller configuration variable.
OS Dependent Compile-time Settings
Most of Pine's (and Pico's) operating system dependent behaviors are
set in the files ./pico/osdep/os-xxx.h and ./pico/osdep/os-xxx.ic. The
flags in the makefiles are also system dependent. See the comments in
./pico/osdep/os-xxx.h for more details. One that may come up is:
USE_TERMINFO
USE_TERMCAP
Instructs Pine to use the terminfo (or termcap) database.
Default varies by system. This has been moved from
./pine/osdep/os-xxx.h to ./pico/osdep/os-xxx.h. If you change
this you will also have to change the file
./pico/osdep/os-xxx.ic so that it includes the file term.inf
instead of term.cap (or vice versa) and you will probably have
to change the libraries included by the makefiles
./{pico,pine}/makefile-xxx. Hopefully, it is already set
correctly for each system.
IMAPd Compile-time Options
There are no options or settings required for the version of IMAPd
distributed with Pine. 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.
_________________________________________________________________
Building the Pine Programs
You may have already compiled Pine 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. Figure out what platform you're building for. You can give the
command build help or look at the list in ./doc/pine-ports to see
the list of ports incorporated into Pine. What you need is the
three letter code for the platform. Some examples are a41 for the
AIX 4.1 operating system, os4 for Digital Unix 4.0, and lnx for
Linux. There are sometimes several variants for a single operating
system (different compilers, shadow passwords or not, etc.) so
look through the whole list in ./doc/pine-ports for the one you
want. If your platform is not in the list of ports, then you might
have some work ahead of you. First, check the file doc/pine-ports
to see if there are others working on a port for your platform or
to see if the port is included in the contrib section of the
source code. Ports in the contrib directory were contributed by
Pine administrators from around the world, but the Pine
development team has not been able to test the code. Some of these
ports are very old and are based on old versions of Pine. If Pine
has not yet been ported to your platform at all, read the section
on Porting Pine in this document.
2. Make sure you're in the root of the Pine source. When you type ls
you should see the following files and directories (or something
close to it):
README build doc makefile pine
bin contrib imap pico
3. Make sure you're getting a clean start by giving the command
./build clean. This should take only a few seconds to run.
4. Give the command ./build xxx where xxx is the three letter code
you picked in step 1. The compiler should grind away for a few
minutes.
5. When the compilation is complete the sizes of the four binaries
built (pine, mtest, imapd, pico) will be displayed. The actual
binaries are in the various source directories. In addition, the
bin directory contains a link to each program compiled. You can
just copy them out of bin or try them from there.
The build command can be given some options which it passes on to the
subordinate makes. Some that may be useful are EXTRACFLAGS, OPTIMIZE,
DEBUG, EXTRALIBES, and EXTRALDFLAGS. Build is more closely integrated
with the Pico and Pine makefiles than it is with the c-client
makefile, so you may find that some things don't work correctly there.
Here are some examples of options you may want to pass to build. This
will turn off the debugging files that Pine produces, while leaving
the symbol table information. We believe a better way to do this is to
have an alias for pine which executes pine -d0 instead. This turns off
debugging at runtime while preserving the possibility of using the
debugging if a problem turns up.
DEBUG=-g
To also leave out the symbol table information you could pass:
DEBUG=
It should be ok to move string constants into a read-only area. We
don't think there are any instances where Pine modifies a string
constant. So you could pass a flag to your compiler that tells it to
do this. This could cause several hundred K of strings to be moved
from the data area of the program into the text area of the program,
and that should allow that text to be shared among all instances of
Pine. To do this, for example, with the AIX a41 port, you could pass
this to build:
EXTRACFLAGS=-qro
_________________________________________________________________
Installing Pine and Pico on UNIX Platforms
Installing Pine and Pico is remarkably 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 Pine so there are no required auxiliary
files.
There are, however, 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 Pine. The file pine.conf.fixed is also used to set
system-wide default configurations for Pine. 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 Pine Configuration later in this document for details
about the pine.conf and pine.conf.fixed files.
_________________________________________________________________
Installing PC-Pine
Beginning with the Pine 3.90 release, there is a PC-Pine version that
runs under windows using the Winsock network interface. For those who
still need to run the DOS version of PC-Pine, there are versions for
four different TCP/IP network stacks: FTP Inc's PC/TCP, Novell's LAN
Workplace for DOS, Sun's PC/NFS, and WATTCP for packet drivers.
PC-Pine needs to be able to interact closely with the stack loaded on
your PC. Most of the time, this occurs automatically. However, there
are certain modifications that need be made.
LAN Workplace for DOS Version 4.1
Set the environment variable EXCELAN in the PC's AUTOEXEC.BAT
file. This provides the necessary links so that LAN Workplace
for DOS 4.1 can translate domain names to IP numbers correctly.
It is needed because Pine was developed for LAN Workplace 4.0
and this particular variable is treated differently in 4.1 than
in 4.0. The EXCELAN variable must point to the directory in
which LAN Workplace is installed.
PC/TCP versions before 2.2
You need a file called PCTCP.INI which contains a bare-minimum
2-line description of the PC's configuration. It looks like
this:
[pctcp ifcust 0]
ip-address=xx.xx.xx.xx
Where xx.xx.xx.xx is the IP address of the PC. Pine also
requires an environment variable, PCTCP, which points to this
file. For example:
set PCTCP=C:\PINE\PCTCP.INI
Packet Drivers
Pine needs to be made aware of the PC's network configuration
file. Simply edit the file WATTCP.CFG included in the Pine
distribution. The file includes 5 configuration
settings--IP-address, gateway, netmask, nameserver(s) and
domainslist. If you have a network configuration file for NCSA
Telnet then WATTCP.CFG is just a pared down version of the
CONFIG.TEL file you already made. Take a look at CONFIG.TEL to
find the correct settings for WATTCP.CFG. Once the
configuration file is made, the DOS environment variable
WATTCP.CFG needs to point at it. For example:
set WATTCP.CFG=C:\PINE
In addition to networking software issues, you might need to worry
about setting the time zone. PC-Pine includes the time zone as part of
outgoing email. There is a generic way for PC applications to get the
time zone, but, because PC-Pine is one of a very few applications
which requires this information, time zone might not be previously
configured.
The trick is to add an environment variable, TZ, to your PC's
AUTOEXEC.BAT file. The format for the TZ environment variable is as
follows:
ZZZ[+H]H[:MM:SSTTT]
First is the 3-letter code for your standard time, then a "+" or a "-"
for direction of offset from GMT, then the amount of offset (hours,
minutes, seconds) and finally the 3-letter code for your summer- or
daylight savings time. Everything in [] brackets is optional.
The default time zone is "PST-8PDT" (U.S. Pacific Time).
Coincidentally, Microsoft is headquartered in that time zone.
As an example, people in the Eastern part of the US should add this
line to their AUTOEXEC.BAT files:
TZ=EST-5EDT
_________________________________________________________________
Installing IMAPd
When the Pine distribution is built on a UNIX station, 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.
The following line is appropriate for /etc/services:
imap 143/tcp # Mail transfer
and the next line is appropriate for /etc/inetd.conf:
imap stream tcp nowait root /usr/etc/imapd imapd
The /etc/inetd.conf file entry may vary on different versions of UNIX.
Some have a slightly different set of fields. Also the pathname in
/etc/inetd.conf must match the path where imapd is installed.
With this configuration, the IMAP server runs without
pre-authentication. Each new IMAP connection requires a correct
username and password. IMAP can also be run with pre-authentication
based on the standard rsh mechanism. To enable this, the user account
on the IMAP server must contain a valid file which grants access to
the client machine. Enabling rimap authentication is done by creating
a link called /etc/rimapd to imapd. Basically, what is happening is
that Pine is taking advantage of the ability that rsh has to use
privileged TCP ports so it doesn't have to run in privileged mode. If
the rimap authentication fails it will drop back to plain password
authentication.
PC-Pine cannot take advantage of rimap authentication. Also, if your
system uses a distributed configuration database, like NIS, Yellow
Pages or Netinfo, be sure that appropriate steps are taken to ensure
the above mentioned information is updated.
_________________________________________________________________
Support Files and Environment Variables: UNIX Pine
This section lists the various files which Pine uses which are not
email folders. All of these are the default names of files, they may
vary based on Pine'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.
~/.addressbook
Personal addressbook
~/.addressbook.lu
Personal address book lookup file (index file to speed up
lookups).
~/.newsrc
Personal USENET subscription list. This is shared with other
newsreading programs.
~/.pine-debugX
The files created for debugging Pine 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 Pine 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 Pine configuration file:
signature, addressbook and its index file, postponed messages, and
newsrc.
Unix Pine uses the following environment variables:
TERM
Tells Pine what kind of terminal is being used.
DISPLAY
Determines if Pine will try to display IMAGE attachments.
SHELL
If not set, default is /bin/sh
MAILCAPS
A semicolon delimited list of path names to mailcap files.
_________________________________________________________________
Support Files and Environment Variables: PC-Pine
This section lists the various files which PC-Pine uses which are not
normal mail folders. All of these are the default names of files, they
may vary based on Pine's configuration.
\PINE.HLP
File containing Pine's internal help text.
\PINE.NDX
Index of Pine's help text used by PC-Pine to locate entries.
$PINERC or $HOME\PINE\PINERC or \PINERC
Path to (required) personal configuration file.
$PINECONF
Path of optional global configuration file.
\ADDRBOOK
Personal addressbook
\ADDRBOOK.LU
Personal address book lookup file (index file to speed up
lookups).
\PINE.SIG
A signature file which will be included in all outgoing email
messages.
\PINE.PWD
A file containing encrypted password for remote mail server.
\PINEDEBG.TXT
Location of Pine debug file.
\MAILCAP and/or \MAILCAP
These paths are only used if $MAILCAPS not set.
$HOME\NEWSRC or \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 Pine detected.
$HOME\MAIL\POSTPOND
A folder of messages which the user chose to postpone.
PC-Pine's help text and help text index file are expected to reside in
the same directory as the PINE.EXE executable, as they are essentially
extensions of the executable. The 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\PINE\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 Pine configuration file:
signature, addressbook (and its index file), postponed messages, and
newsrc.
PC-Pine uses the following environment variables:
PINERC
Overrides default path to pinerc file.
PINECONF
Optional path to global Pine config file.
HOME
If not set, Pine uses the root of the current drive, e.g. C:
TMP or TEMP
Specifies location of temporary storage area
COMSPEC
Specifies shell for external commands.
MAILCAPS
A semicolon delimited list of path names to mailcap files.
Command Line Arguments
Pine
Pine and PC-Pine can accept quite a few command-line arguments. Many
of these arguments overlap with variables in the Pine configuration
file. If there is a difference, then a flag set in the command line
takes precedence. Both Pine and PC-Pine expect command line arguments
to be preceded by the "-" (dash) as normally used by UNIX programs.
[address]
Send-to: If you put an unqualified string (or strings) in the
command line, Pine reads them as email addresses. Pine will
startup in the composer with a message started to the
person/people specified. Once the message is sent, the Pine
session closes.
< file
Pine will startup in the composer with file read into the body
of the message. Once the message is sent, the Pine session
closes.
-a
Special anonymous mode for UWIN*.
-c n
When used with the -f option, apply the nth context. This is
used when there are multiple folder collections 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
pine -conf > /usr/local/lib/pine.conf
To generate a system configuration file using settings from an
old system configuration file, execute
pine -P old-pine.conf -conf > /usr/local/lib/pine.conf
-create_lu addrbook sort-order
Create auxiliary index (LookUp) file for addrbook and sort
addrbook in sort-order, which may be dont-sort, nickname,
fullname, nickname-with-lists-last, or
fullname-with-lists-last. Only useful when creating global or
shared address books. See Address Book Lookup File for more
information, especially the warning about copying the address
book after creating the lookup file.
-d debug-level
Debug Level: Sets the level of debugging information written by
Pine. 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, now, but you probably don't want to
see them.)
-f folder
Startup folder: Pine will open this folder in place of the
standard INBOX.
-F file
Open named text file and view with Pine's browser.
-h
Help: Prints the list of available command-line arguments to
the screen.
-i
Pine 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: Pine will execute this comma-separated
sequence of commands upon startup. This allows users to get
Pine to start in any of its menus/screens. You cannot include
any input to the composer in the initial keystrokes. The key
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 Pine. 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.
Configuration equivalent: initial-keystroke-list
-k
Function-Key Mode: When invoked in this way, Pine expects the
input of commands to be function-keys. Otherwise, commands are
linked to the regular character keys. This option supported
only in conjunction with UW Enhanced NCSA telnet.
Configuration equivalent: use-function-keys included in
feature-list.
-n n
Message-Number: When specified, Pine starts up in the FOLDER
INDEX screen with the current message being the designated
message number.
-nr
Special mode for UWIN*.
-o folder
Opens the INBOX (or a folder specified via the -f argument)
ReadOnly.
-p file
Uses the named file as the personal configuration file instead
of ~/.pinerc or the default PINERC search sequence PC-Pine
uses.
-P file
Uses the named file as the system wide configuration file
instead of /usr/local/lib/pine.conf. UNIX Pine only.
-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 Pine only. Pine in restricted mode
can only send email to itself. Save and export are limited.
-sort key
Sort-Key: Specifies the order messages will be displayed in for
the FOLDER INDEX screen. Key can have the following values:
subject, arrival, date, from, size, orderedsubj,
subject/reverse, arrival/reverse, date/reverse, from/reverse,
size/reverse, orderedsubj/reverse. The default value is
"arrival". The key value reverse is equivalent to
arrival/reverse.
Configuration equivalent: sort-key.
-z
Enable Suspend: When run with this flag, the key sequence
ctrl-z will suspend the Pine 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).
* UWIN = University of Washington Information Navigator
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)
-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.
-nn
The -nn 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.
-rn
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.
-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.
-nn
The -nn 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
Pine Configuration
There is very little in Pine which requires compile-time
configuration. In most cases, the compiled-in preferences will suit
users and administrators just fine. When running Pine 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 are whatever
the definitions for SYSTEM_PINERC and SYSTEM_PINERC_FIXED in
pine/osdep/os-xxx.h are set to.) Both Pine and PC-Pine also use
personal (user-based) configuration files. On UNIX machines, the
personal configuration file is the file ~/.pinerc. For PC-Pine
systems, the personal configuration file is in $PINERC or
$HOME\PINE\PINERC or \PINERC.
The syntax of a non-list configuration variable is this:
=
If the value is absent then the variable is unset. To set a variable
to the empty value the syntax is "". This is equivalent to an absent
value except that it overrides any system-wide 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 Pine
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:
= [, , ... ]
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 Pine, there are five ways in which a 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 configuration file (which is usually set from the
Config screen)
4. the system-wide configuration file
5. default in the source code.
So, system-wide fixed settings always take precedence over command
line flags, which take precedence over per-user settings, which take
precedence over system-wide configuration settings, which take
precedence over source code defaults. PC-Pine has the same list,
except that it does not use a system-wide fixed configuration file.
You may get a sample/fresh copy of the system configuration file by
running Pine -conf. The result will be printed on the standard output
with short comments describing each variable. (The online help in the
Setup screens provides 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
Pine. It is by no means a bullet-proof method.) Pine will
automatically create the personal configuration file the first time it
is run, so there is no need to generate a sample. Pine 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 Pine 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 Pine
configuration files. The format is $variable or ${variable}. The
character ~ will be expanded to the $HOME environment variable.
When environment variables are used for Pine settings which take
lists, you must have an environment variable set for each member of
the list. That is, Pine 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 Pine configuration file,
which will expand to nothing.
_________________________________________________________________
General Configuration Variables
The following is a list of all Pine configuration variables, in
alphabetical order. Note that not all variables apply to all versions
of Pine 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, Pine 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.
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. 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 added to 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. If set, the option affects the behavior
of the Reply command and the + symbol in the "Folder Index",
which denotes that a message has been addressed specifically to
you.
With respect to Reply, the Reply to All option will exclude
addresses listed here.
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.
character-set
This sets the character set used by the terminal. Currently
appropriate values are US-ASCII, ISO-8859-1 through ISO-8859-9
and ISO-2022-JP. See the section on International Character
Sets
for more details. The default is US-ASCII.
composer-wrap-column
This option specifies an aspect of Pine'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.
customized-hdrs
Add these custom headers when composing. Also possible to add default
values to these custom headers or to any of the standard headers. This
is a list variable. Each entry in the list is a header name (the
actual header name that will appear in the message) followed by an
optional colon and value. For example, if a Reply-to header was needed
because it was different from the From address, that could be
accomplished with:
customized-hdrs=Reply-to: fred_flintstone@bedrock.net
Leaving the optional value out allows the user to fill it in when
composing a message. If it isn't filled in, it won't be included in
the message.
default-composer-hdrs
Show only these headers (by default) when composing a message. This
list may include headers defined in the customized-hdrs list.
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).
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 Pine default is normally saved-messages in the default folder
collection. PC-Pine default is SAVEMAIL (normally stored as
SAVEMAIL.MTX).
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 Pine with a newer version of the c-client
library.
* mbox
* mbx
* mh
* 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-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.
The command is executed and the message is piped into its standard
input. The standard output of the command is read back by Pine. 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:
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 Pine 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 Pine 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 Pine 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 Pine
will recognize and replace with special values when the command is
actually invoked.
Command Modifying Tokens:
_RECIPIENTS_
When the command is executed, this token is replaced with the
space delimited list of recipients of the message being
displayed.
_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. Pine 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. Pine 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. Pine 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 Pine 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
Pine session and is only generated once per session.
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.
download-command
This option affects the behavior of the Export command. It specifies a
Unix program name, and any necessary command line arguments, that Pine
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 Pine 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 all of the To, Cc, and Newsgroups fields are empty,
Pine 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, Pine
will accept the values default-fcc, by-recipient, or last-fcc-used. If
set to default-fcc, then Pine 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 Pine 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 Pine
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-Pine 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, Pine 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 Pine 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 Saves, including default-fcc's.
folder-extension
PC-Pine only. File extension used for local folder names. This is .MTX
by default.
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-Pine only.
font-size
Winsock version of PC-Pine only.
font-style
Winsock version of PC-Pine only.
forced-abook-entry
System-wide Pine 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 Pine's usual behavior when you
execute the Compose command. Normally, Pine 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, Pine
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 Pine will not automatically
delete the selected message from the Form Letter Folder.
Setting this variable will also affect Pine's behavior when you
Postpone a message from the composer. Normally, Pine simply stashes
the message away in your Postponed-Folder. Regardless of the specified
folder's existence, Pine 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 Pine
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. Pine, 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 introduced in Pine 4.10 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. 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 Pine's behavior when using the Goto command. There
are three possible values for this option:
inbox-or-folder-in-recent-collection
If the current folder is INBOX, Pine will offer the last open
folder as the default. If the current folder is other than
INBOX, INBOX is offered as the default.
inbox-or-folder-in-first-collection
The second accepted value is a variation on the default which
again offers INBOX if it isn't currently open, but otherwise
offers the most recently visited folder in the first collection
found in the "Folder List" screen.
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.
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-messages 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 Saves. Any valid folder specification, local or remote (via IMAP),
is allowed. There is no default.
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 Pine would monitor the
folders in this list for new mail.
incoming-startup-rule
This rule affects Pine's behavior when opening the INBOX or another
folder from the "INCOMING MESSAGE FOLDERS". This rule tells Pine which
message to make the current message when an incoming folder is opened.
There are three 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
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.
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.
Pine 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, 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 DATE FROMORTO(33%) SIZE SUBJECT(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.
initial-keystroke-list
This is a comma-separated list of keystrokes which Pine 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 ^. 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
Pine. 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 Pine 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.
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 Pine when the
the pruning is done or declined. If a user wanted to make Pine 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 Pine.
It is used to keep track of the last version of Pine 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 Pine was linked with an LDAP library when it
was compiled. This variable is normally managed by Pine 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 Pine 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.
mail-check-interval
This option specifies, in seconds, how often Pine will check for new
mail. If set to zero, new-mail checking is disabled. There is a
minimum value, normally 15 seconds. 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-directory
This variable was more important in previous versions of Pine. 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 Pine'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.
mimetype-search-path
This variable is used to replace Pine'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 Pine's usage of the MIME.Types
File.
new-version-threshold
When a new version of Pine 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 Pine. It takes as its value a Pine version number. Pine
versions less than the specified value will supress this special
screen while versions equal to or greater than that specified will
behave normally.
news-active-file-path
This option tells Pine 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 Pine 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 Pine uses for your "newsrc"
news status and subscription file. If set, Pine will take this value
as the full pathname for the desired newsrc file.
nntp-server
One or more NNTP servers (host name or IP address) which Pine will use
for reading and sending 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.
normal-background-color
PC-Pine only. Currently, Pine will accept the colors black, blue,
green, cyan, red, magenta, yellow, or white.
normal-foreground-color
PC-Pine only. See normal-background-color for possible colors.
operating-dir
System-wide Pine 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
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/Roles configuration screen. This
variable is a list. 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/Roles screen with a filename which
doesn't yet exist. Then use the Shuffle command to move existing roles
from your pinerc 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.
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).
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 Pine
figure out where to put the cursor when the user runs the
Setup/Printer command. This is not used by PC-Pine.
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-Pine.
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-Pine only.
print-font-size
Winsock version of PC-Pine only.
print-font-style
Winsock version of PC-Pine only.
printer
Personal configuration file only. This is the current setting for a
user's printer. This variable is set from Pine's Setup/Printer screen.
pruned-folders
This variable allows you to define a list of one or more folders that
Pine will offer to prune for you in the same way it automatically
offers to prune your sent-mail folder each month. That is, once a
month for each folder listed, Pine 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. Pine 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. Folders listed are assumed to exist, and the
archive folders will be created, in the first collection defined by
the folder-collections variable.
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 Pine.
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 Pine 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 Pine and is
the name of a file that contains data about remote address books.
reply-indent-string
This variable specifies an aspect of Pine's Reply command. When a
message is replied to and the text of the message is included, that
text usually has the string "> " prepended to each line to indicate
quoting.
This variable 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.
You can also include the sender's name in the prepended string. The
first occurrence of "_FROM_" in the reply-indent-string will be
replaced with the "username" portion (part before the @) of the
address being replied to.
The normal default is "> ".
reply-leadin
This variable specifies an aspect of Pine's Reply command. When a
message is replied to and the text of the message is included, that
text has an introductory line preceding it. The normal default if you
don't set 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 may replace this default with text of your own.
The text may contain tokens which are replaced with text which depends
on the message you are replying to. For example, the default is
equivalent to:
On _DAYDATE_, _FROM_ wrote:
The list of available tokens is here.
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.
If your Reply-Leadin turns out to be longer than 80 characters when
replying to a particular message, it is shortened.
reverse-background-color
PC-Pine only. See normal-background-color for possible colors.
reverse-foreground-color
PC-Pine only. See normal-background-color for possible colors.
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 Pine 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 Saving. If set to default-folder
(which is the default setting), then Pine will offer the folder
"saved-messages" (UNIX) or "SAVEMAIL" (PC) for Saving 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, Pine 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, Pine offers to Save the message to the
default folder.
Choosing any of the by- options causes Pine to attempt to get the
chosen option's value for the message being Saved. For example, if
by-from is chosen, Pine attempts to get the value of who the message
came from (i.e. the from address). Pine then attempts to Save the
message to a folder matching that value. If by-from is chosen and no
value is obtained, Pine uses by-sender. The opposite is also true. If
by-recipient was chosen and the message was posted to a newsgroup,
Pine will use the newsgroup name.
If any of the by-nick- options are chosen, the resulting address is
looked up in the user's address books and if found, the nickname for
that entry is used. Similarly, if any of the by-fcc- options are
chosen, the fcc from the corresponding address book entry is used. If
no value is found in the address book, then if the chosen option ends
with the "-then-from", "-then-sender", or "-then-recip" suffix, Pine
reverts to the same behavior as by-from, by-sender or by-recipient
depending on which option was specified. If the chosen option doesn't
end with one of the "then-" suffixes, then Pine reverts to the default
folder when no match is found in the address book.
scroll-margin
This option controls when Pine'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 Pine 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 Pine 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.
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.
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. Pine 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. Pine 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. Pine 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
Pine 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
Pine 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 Pine.
_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, Pine 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
Names the file to be included as the signature. This defaults to
~/.signature on UNIX and \PINE.SIG on a PC.
smtp-server
One or more SMTP servers (host name or IP address) which Pine will use
for outgoing mail. If not set, Pine passes outgoing email to the
sendmail program on the local machine. PC-Pine users must have this
variable set in order to send mail as they have no sendmail program.
An alternate port may be specified by appending :port to the host name
or IP address. See the SMTP Servers section for details.
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
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, Pine uses the system's "spell" command. Pine will use the
command defined by this option (if any) instead. When invoking the
spell-checking program, Pine appends a tempfile name (where the
message is passed) to the command line. Pine expects the speller to
correct the spelling in that file. When you exit from the speller
program Pine will read the tmpfile back into the composer.
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.
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-Pine.
status-message-delay
If this 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. Most users should leave this
set to the default value of zero since its only effect is to slow
things down.
tcp-open-timeout
Sets the time in seconds that Pine 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 Pine will give up and consider it a failed
connection.
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 Pine 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
Pine's handling of URLs that are found in the text of messages you
read. Normally, only URLs Pine 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, Pine 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 Pine will
run and which must exit with a status of zero for Pine 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 Pine 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.
user-id
PC-Pine 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 "@".
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 Pine times out. If Pine
is in the midst of composing a message or is waiting for user response
to a question, then it will not timeout. However, if Pine 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, Pine 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 Pine sessions which have been forgotten
by their owners. The Pine 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-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.
viewer-overlap
This option specifies an aspect of Pine'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-Pine 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
Pine 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.
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.
allow-talk
Unix Pine only. By default, permission for others to talk to
your terminal is turned off when you are running Pine. When
this feature is set, permission is instead turned on.
Note: The talk program has nothing to do with Pine 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 Pine, you
should enable this feature.
If you do enable this feature and see a talk message, you must
suspend or quit Pine before you can respond.
assume-slow-link
This feature affects Pine'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. This might be useful if you
know you have a slow speed link but for some reason Pine
doesn't know.
auto-move-read-messages
This feature controls an aspect of Pine's behavior upon
quitting. If set, and the read-message-folder variable is also
set, then Pine 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.
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, Pine 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. By default, when such a
folder is found, Pine will ask whether you wish to open the
folder. If this feature is set, Pine will automatically open
the folder without prompting.
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.
auto-zoom-after-select
If set, the ; select command will automatically perform a Zoom
after the select is complete.
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.
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-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.
compose-maps-delete-key-to-ctrl-d
If set, Delete will be equivalent to ^D, and delete the current
character. Normally Pine defines the Delete key to be
equivalent to ^H, which deletes the previous character.
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. Pine will not attempt
to turn them into complete addresses by adding your local
domain (which Pine 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@nowhere.edu). An unqualified name is one
without the @ symbol and host or domain name (e.g. jsmith).
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.
confirm-role-even-for-default
If you have roles, when you reply or forward a message Pine
will search through your roles for one which matches the
message. Normally, if no matches are found you will be placed
into the composer with no opportunity to select a non-default
role. If this feature is set, then you will be asked to confirm
the role selection even in this case. That is, the default role
selected will be the default role (no role at all) and you will
have the opportunity to change that.
compose-sets-newsgroup-without-confirm
If you enter the composer while reading a news group, 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, Pine will not prompt you in this situation, and
will assume that you do indeed wish to post to the newsgroup
you are reading.
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.
disable-busy-alarm
If set, the spinning bar that sometimes appears in the status
line will not appear when Pine is busy. This might be useful if
it is suspected that the alarm(2) system calls that Pine uses
to implement the busy spinner are suspected of causing a
problem.
disable-config-cmd
If set, the configuration screen Setup/Config will not be
available at all.
disable-keyboard-lock-cmd
In the Main Pine 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-cmd
If set the Newpassword command usually available under the
Setup command will not be available.
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 ^T subcommand.
disable-roles-template-edit
If set the roles editor in the Setup/Roles command will not
allow editing of template files with the ^T subcommand.
disable-signature-edit-cmd
If set the Signature editing command usually available under
the Setup command will not be available.
disable-take-last-comma-first
Normally, when TakeAddr is used to copy an address from a
message into an address book, Pine 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.
enable-8bit-esmtp-negotiation
This feature affects Pine's behavior when sending mail.
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. Setting this feature tells Pine to try to negotiate
unencoded 8bit transmission during the sending process. Should
the negotiation fail, Pine 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, Pine provides the option of posting unencoded 8bit
news messages, though not as the default. Setting this feature
will turn OFF Pine'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 Pine'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
Setting this feature enables 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, 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-Pine.
enable-alternate-editor-implicitly
If this feature and the editor variable are both set, Pine 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 Pine 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-Pine.
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 >.
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 enabled.
Normally, when the "enable-arrow-navigation" feature is 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 hilite bar to the previous and
next folder or directory name.
When enabled, this feature returns the left, right, up and down
arrow key's functionality in the FOLDER LIST screen to what it
was before enabling "enable-arrow-navigation". In other words,
left and right arrows move the hilite bar to the left or right,
and the up and down arrows move it up or down.
enable-background-sending
If set, this feature enables a subcommand in the composer's
Send? confirmation prompt. The subcommand allows you to tell
Pine 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.
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, Pine will notice this folder and offer to
extract any messages contained. Upon continuing a failed
message, Pine 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.
enable-cruise-mode
This feature affects Pine's behavior when you hit the "Space
Bar" at the end of a displayed message. Typically, Pine
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 Pine's enable-cruise-mode
feature. Setting this feature causes Pine 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.
enable-delivery-status-notification
If set, this feature enables a subcommand in the composer's
"Send?" confirmation prompt. The subcommand allows you to tell
Pine 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.
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.
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.
enable-fast-recent-test
If set, the TAB key behavior in Incoming folders or News
collections is modified. By default, the TAB will cause each
folder in the Incoming folders collection (or in the news
collection) to be examined to see how many new messages have
been delivered since the last time it was viewed. If this
feature is set, the check is for any recent messages instead of
the count of recent messages. This is much faster in many
cases.
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.
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, Pine 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 Pine to immediately enter the detailed flag screen
rather than first offer the simple prompt.
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.)
enable-goto-in-file-browser
Setting this causes Pine to offer the G Goto command in the
file browser. This command allows you to explicitly set the
displayed directory. Pine's default behavior requires you to
visit each related directory when moving between two distant
directories.
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.
enable-jump-shortcut
Setting this feature will allow you to enter a number (followed
by RETURN) and jump to that message number, when in the "Folder
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 Pine 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 Pine's query with nonsensical results.
If you find that Pine 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.
enable-mail-check-cue
If set, this will cause an asterisk to appear in the upper
left-hand corner of the screen whenever Pine checks for new
mail, and two asterisks whenever Pine saves (checkpoints) the
state of the current mailbox to disk.
enable-mouse-in-xterm
This feature controls whether or not an X terminal mouse can be
used with Pine. 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.
Note: if this feature is set, the behavior of X terminal
cut-and-paste is also modified. It is necessary to hold the
shift key down while clicking left or middle mouse buttons for
the normal xterm cut/paste operations.
enable-msg-view-addresses
This feature modifies the behavior of Pine's "Message Text"
screen. Setting this feature causes Pine 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 Pine 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.
enable-msg-view-attachments
This feature modifies the behavior of Pine's "Message Text"
screen. Setting this feature causes Pine to present attachments
in boldface. The first available attachment is displayed in
inverse. This is the "selected" attachment. Pressing RETURN
will cause Pine 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.
enable-msg-view-forced-arrows
This feature modifies Up and Down arrow key behavior in Pine's
"Message Text" screen when selectable Attachments, URL's, or
web-hostnames are presented. Pine'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.
enable-msg-view-urls
This feature modifies the behavior of Pine's "Message Text"
screen. Setting this feature causes Pine to select possible
URL's 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 Pine 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.
enable-msg-view-web-hostnames
This feature modifies the behavior of Pine's "Message Text"
screen. Setting this feature causes Pine to 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 Pine 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.
enable-newmail-in-xterm-icon
This feature controls whether or not Pine 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, Pine will
send appropriate escape sequences to the X terminal to modify
the label on Pine's icon to indicate that new mail has arrived.
enable-partial-match-lists
This feature affects the subcommands available when Saving 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.
enable-print-via-y-command
By default, Pine's print command is available by pressing the %
key. In recent versions prior to 4.00, the print command was
accessed by pressing the Y key.
Enabling this feature will cause Pine 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 Pine would otherwise use to denote included text
from the message being replied to.
NOTE: Edited reply-indent-strings only apply to the message
currently being replied to.
enable-search-and-replace
If set Pine'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, Pine
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 Pine. Not available on PC-Pine.
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.
enable-unix-pipe-cmd
This feature enables the | Pipe command that sends the current
message to the specified Unix command for external processing.
Not available on PC-Pine.
enable-verbose-smtp-posting
This feature controls an aspect of Pine's message sending. When
enabled, Pine 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.
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.
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.
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.
fcc-only-without-confirm
This features controls an aspect of Pine'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, Pine
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.
fcc-without-attachments
This features controls the way FCC's (File Carbon Copies) are
made of the messages you send.
Normally, Pine 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 Pine'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.
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, Pine will ask whether you wish to include the
original message in your Reply. If this feature is set, the
original message will be included in the reply automatically,
without prompting.
ldap-result-to-addrbook-add
This is only available if Pine 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.
news-approximates-new-status
This feature causes certain messages to be marked as New in the
"Folder Index" of news groups.
When opening a news group, Pine 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 news groups) is only capable of storing a
single flag, and Pine 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 Pine 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
news group. This feature enables a starting approximation of
seen/unseen status that may be useful.
news-deletes-across-groups
This feature controls what Pine 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.
Pine'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 Pine 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-post-without-validation
This feature controls whether the NNTP server is queried as
news groups 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 news groups 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.
pass-control-characters-as-is
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.
preserve-start-stop-characters
This feature controls how special control key characters,
typically ^S and ^Q, are interpreted when input to Pine. 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, Pine turns the system's handling of these special
characters off except during printing. However, if you see Pine
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 Pine
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.
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.
quell-dead-letter-on-cancel
This feature affects Pine's behavior when you cancel a message
being composed. Pine'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 Pine NOT to write canceled
compositions into the file called dead.letter.
quell-empty-directories
This feature causes Pine 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.
quell-folder-internal-msg
This feature determines whether or not Pine will create "pseudo
messages" in folders that are in standard Unix or MMDF format.
Pine 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 Pine 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 Pine not to
create them. Note that Pine's "Answered" flag capability will
be adversely affected if this is done.
Note too that, even if this feature is enabled, Pine 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.
quell-imap-envelope-update
In the MESSAGE INDEX screen, if the open folder is being
accessed using IMAP, Pine 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 Pine 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.
quell-lock-failure-warnings
This feature affects Pine'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.
Pine issues a warning when such failures occur, which can
become bothersome if the system is configured to disallow such
actions. Setting this feature causes Pine 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".
quell-status-message-beeping
If set status messages will never emit a beep.
quell-user-lookup-in-passwd-file
This feature controls an aspect of Pine's Composer, and if
needed, will usually be set by the system manager in Pine's
system-wide configuration file. Specifically, if this feature
is set, Pine 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 Pine) the name
is then checked against the Unix password file. If the entered
name matches a username in the system password file, Pine
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,
Pine 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 Pine from looking up names in the password file to
find the Full Name for incomplete addresses you enter.
quell-partial-fetching
Partial fetching is a feature of the IMAP protocol. By default,
Pine will use partial fetching when copying the contents of a
message or attachment from the IMAP server to Pine. 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.
quit-without-confirm
This feature controls whether or not Pine will ask for
confirmation when a Quit command is received.
reply-always-uses-reply-to
If set, Pine 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).
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 may save network traffic when
the source and destination folders are on the same IMAP server.
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 enabled, or if the folders are
on different IMAP servers, or the folders are local and in
different formats, Pine will copy each message individually.
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,
Pine 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 Pine 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 Pine, you should enable this feature.
This feature only applies to the common Unix mailbox format
that uses message separator lines beginning with "From ". If
Pine 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.
select-without-confirm
This feature controls an aspect of Pine'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.
separate-folder-and-directory-display
This feature affects folder collections wherein a folder and
directory can have the same name. By default, Pine 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 Pine 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 hilited
folder, or enter the hilited 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 Pine 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 Pine to ignore any external viewer
settings and always display text with Pine's internal viewer.
show-selected-in-boldface
This feature controls an aspect of Pine'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, Pine 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.
signature-at-bottom
If this feature is set, and a message being Replied 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.
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.
tab-visits-next-new-message-only
This feature affects Pine's behavior when using the TAB key to
move from one message to the next. Pine's usual behavior is to
select the next Unread message or message flagged as Important.
Setting this feature causes Pine 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
In some versions of Pine before 4.00 there was a compile-time
macro called TERMCAP_WINS which could be set to cause the
termcap or terminfo definitions to be used instead of the built
in definitions. Beginning with 4.00 this hidden runtime feature
can be turned on to accomplish the same thing.
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
use-function-keys
This feature specifies that Pine 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-sender-not-x-sender
Normally Pine adds a header line labeled X-Sender, if the
sender is different from the From: line. The standard specifies
that this header line should be labeled Sender, not X-Sender.
Setting this feature causes Sender to be used instead of
X-Sender.
use-subshell-for-suspend
This feature affects Pine's behavior when process suspension is
enabled and then activated via the ^Z key. Pine suspension
allows one to temporarily interact with the operating system
command "shell" without quitting Pine, and then subsequently
resume the still-active Pine session.
When the enable-suspend feature is set and subsequently the ^Z
key is pressed, Pine will normally suspend itself and return
temporary control to Pine's parent shell process. However, if
this feature is set, Pine will instead create an inferior
subshell process. This is useful when the parent process is not
intended to be used interactively. Examples include invoking
Pine via the -e argument of the Unix xterm program, or via a
menu system.
Note that one typically resumes a suspended Pine by entering
the Unix fg command, but if this feature is set, it will be
necessary to enter the exit command instead.
vertical-folder-list
This feature controls an aspect of Pine's FOLDER LIST screen.
If set, the folders will be listed alphabetically down the
columns rather than across the columns as is the default.
Hidden Config Variables and Features
There are several configuration variables and features which are
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.
Those features may only be set by hand editing the configuration file.
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 Pine and there should be no reason to edit them.
* last-version-used
* patterns
* remote-abook-metafile
This group is usually correct but may be changed by system managers or
users in special cases.
* disable-these-drivers
* last-time-prune-questioned
* new-version-threshold
* remote-abook-history
* rsh-command
* rsh-open-timeout
* rsh-path
* save-aggregates-copy-sequence
* sendmail-path
* tcp-open-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.
* allow-changing-from
* disable-busy-alarm
* disable-config-cmd
* disable-keyboard-lock-cmd
* disable-password-cmd
* disable-roles-setup-cmd
* disable-roles-sig-edit
* disable-roles-template-edit
* disable-signature-edit-cmd
* quell-imap-envelope-update
* quell-partial-fetching
* save-aggregates-copy-sequence
* termdef-takes-precedence
Retired Variables
Variables that are no longer used by the current Pine version. When an
obsolete variable is encountered, its value is applied to any new
corresponding setting and a comment is placed before it noting that it
is no longer in used. The replaced values include:
compose-mime
elm-style-save
Replaced by saved-msg-name-rule
expanded-view-of-addressbooks
This one was retired in 4.00 but made a comeback in 4.10. This
is now an active feature.
expanded-view-of-folders
This one was retired in 4.00 but made a comeback in 4.10. This
is now an active feature.
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.
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, and in template files
used in roles.
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, and in signature and template files.
Tokens Available for all Cases
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".
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
more than six months ago 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.
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".
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".
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".
SUBJECT
This token represents the Subject the sender gave the message.
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.
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.
CURDATE
This token represents the current date. It has the format MMM
DD. For example, "Oct 23".
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".
MONTHABBREV
This token represents the month the message was sent, according
to the "Date" header field. For example, "Oct".
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). The
second character is typically blank, though the arrow cursor
may occupy it if the assume-slow-link feature is set, or you
actually are on a slow link. The third character is either the
letter 'D' if the message is deleted, 'A' if it is answered
(but not deleted), or 'N' if it is new (but not deleted or
answered), or blank if it is neither deleted, answered nor new.
FULLSTATUS
This token represents a less abbreviated alternative to the
"STATUS" field. 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.
IMAPSTATUS
This token represents an even less abbreviated alternative to
the "FULLSTATUS" field. It differs in only the fourth character
which is either 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' if the message is new to the folder and has been viewed
(Recent), a 'U' if the message is not new to the folder since
it was last opened but has not been viewed (Unseen), or a blank
if the message has been in the folder since it was last opened
and has been viewed.
SIZE
This token represents the total size, in bytes, of the message.
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 Pine
collects the necessary information.
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
Pine collects the necessary information.
FROMORTO
This token represents the personal name (or email address) of
either 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.
Tokens Available for all but Index-Format
NEWSANDTO
This token represents the news groups 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 news groups 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 news groups 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.
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".
DAYDATE
This token represents the date on which the message was sent,
according to the "Date" header field. It looks like "Sat, 24
Oct 1998" unless the day of the week is not available, in which
case it looks like "24 Oct 1998".
DAY
This token represents the day of the month on which the message
was sent, according to the "Date" header field. For example,
"24".
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".
YEAR
This token represents the year the message was sent, according
to the "Date" header field. For example, "1998".
MSGID
This token represents the message ID of the message.
Tokens 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 Pine 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 news group 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 news group,
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 inside the "if_matched" or
"if_not_matched" arguments. The same is true for tokens with the
conditional parentheses. They may appear inside the "if_matched" or
"if_not_matched", 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 news group
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 Pine was linked with an LDAP library when it
was compiled. 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 = , 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.
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 Pine
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, Pine 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, Pine 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 Pine 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
*
in the search query (but not by "* *"). 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". Pine 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 Pine 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
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 patterns which are used to decide which role is used and
a set of actions which are taken when that role is used. When you
reply to a message, the recipients to which the message you are
replying was sent are compared with your role patterns. The
comparisons start with the first role rule and keep going until there
is a match, so the order is significant. If a match is found, the
matching role's actions are taken.
Role Patterns
Each rule has six possible patterns called the To, From, Sender, Cc,
News, and Subject patterns. In order for there to be a match, all six
patterns must match the corresponding fields in the replied to
message. A blank pattern automatically counts as a match. A pattern
which isn't blank has to match at least one of the addresses in its
category (in the case of the five address patterns) to be considered a
match. For example, if a role has a To pattern of "address1" then it
is considered a match if the message being replied to was sent to
"address1" and "address2". (If the message has a Resent-To header, 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.)
Patterns are simply strings which are searched for in the
corresponding header field. Matching is always a substring match,
matches don't have to be exact. In other words, if a field has the
text "mailbox@domain" in it, then the patterns "box@", or "x@d", or
"mailbox@domain" are all matches.
The empty pattern which you get by entering a pair of double quotes
("") should match any message which has the corresponding field. You
could use this, for example, to define a default news role when
responding to a message sent to any news group. You would put the
empty pattern in the news-pattern field. Some IMAP servers may not
consider an empty string a match. If you find that this is happening
to you, try putting in some other character which is sure to be in the
field you're searching. For example, a news-pattern equal to
.
should match any newsgroup, since all news groups have dots in their
names. And a To pattern consisting of
@
should match any message which you received by email.
Since patterns which are blank are considered matches, a role which
has all six patterns blank can be used as a default role. It should be
put last in the list of role rules since the matching starts at the
beginning and proceeds until one of the rules is a match. If no rules
at all match, then Pine will use its regular methods of defining the
role.
If there is more than one pattern for which you want to take the same
action there is a shorthand notation which may be used. Any of the
patterns may be a comma-separated list of patterns instead of just a
single pattern. If any of the patterns in the list match any of the
addresses in 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
company1.com,company2.com
That means that if the mail you are replying to was addressed to
either "anything@company1.com" or "anything@company2.com", then the
same actions would be taken. Note that this is NOT a way to specify
that you want to match an address in either the To field or the Cc
field. To do that you'll need to define two separate roles, one for
the To field match and another for the Cc field match. You may find
that the field called "Initialize settings using role" is useful in
this case. (You'll see that field when editing a role. It's right
above the "Set From" line.) That allows you to put the role's actions
in one role and then refer to them from another with just the nickname
of the first role. It's just a way to avoid entering the same actions
twice.
Role Actions
Once a role match is found, the role's actions are taken. For each
role there are four possible actions that may be defined. They are
actions to set the From address, the Fcc, the Signature file, and the
Template file.
The From address is the address used on the From line of the message
you are sending.
The Fcc is used as the Fcc for the message you are sending.
The Sig is the name of a file to be used as the signature file when
this role is being used. If the name of the file has a vertical bar
following it (|) then it is assumed that the file is a program that
should be run to produce the signature.
A Template is the name of a file to be included in the message when
this role is being used. If the name of the file has a vertical bar
following it (|) then it is assumed that the file is a program that
should be run to produce the template. Both signature files and
template files (or the output of signature programs and template file
programs) may contain special tokens which are replaced with contents
which depend on the message being replied to or forwarded. See the
help for the individual fields for more information on template
tokens.
If any of the actions are left blank, 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 Pine will do
whatever it normally does to set these actions. This depends on other
configuration options and features you've set.
The Shuffle command allows you to change the order of the roles. You
may move the currently highlighted role up or down in the list. The
order of the roles is important since the roles are tested for a match
starting with the first role and continuing until a match is found.
You should place the roles with more specific patterns near the
beginning of the list, and those with more general patterns near the
end so that the more specific matches will happen when appropriate.
The InsertFile command allows you to add a roles file to your
configuration. Usually, your roles will be contained in your Pine
configuration file. If you wish, some or all of your roles may be
stored in a separate file. If a roles file already exists (maybe it
was made by somebody else using Pine), you may insert it before the
currently highlighted role rule. You may also insert an empty file or
a file which does not yet exist. Once you have an empty roles file in
your configuration, you may use the Shuffle command to move roles into
it. The RemoveFile command removes the roles file from your roles
configuration.
Help Configuring Role 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 ROLES 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. It
is also used when confirming a role. This field is not used in
the outgoing message.
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 must match this pattern.
If this pattern is a comma-separated list of patterns, then at
least one of the recipients must match at least one of the
patterns. (Any other non-blank patterns must match, too.) If
the message being replied to has a Resent-To header line, then
that is used in place of the To line.
If you leave all of the patterns blank, that matches any
message.
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 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 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 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 news groups from the
Newsgroups line of the message being replied to must match this
pattern. If this pattern is a comma-separated list of patterns,
then at least one of the news groups must match at least one of
the patterns. (Any other non-blank patterns must match, too.)
Since all news groups contain a dot, the News pattern which
consists of a single dot will match whenever the message
contains a Newsgroups header and at least one news group. This
can be used to define a default news role when responding to a
message sent to any news group.
If you leave all of the patterns blank, that matches any
message.
Subject pattern
This is just like the other patterns except that it is compared
with the contents from the Subject of the message being replied
to.
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.)
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 (the four items that begin with "set-") 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. The fields affected by this field are the
fields labeled "Set From", "Set Fcc", "Set Signature", and "Set
Template".
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 Signature = sig_file1
set. If in "role2" you set "Initialize settings using role" to
"role1", then role2 will inherit the Set Signature value from
role1 by default (and any of the three other action values that
are set). So if role2 had
Set Signature =
defined, the signature file used with role2 would be
"sig-file1". However, if role2 had
Set Signature = sig_file2
defined, then the signature file used with role2 would be
"sig-file2".
If you wish, you may choose a nickname from your list of roles
by using the "T" command.
Set From
This describes part of the action to be taken if the patterns
for this role are a match. 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
or just
user@domain
If this is left blank, then the normal From address will be
used.
Set Fcc
This describes part of the action to be taken if the patterns
for this role are a match. 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 Pine 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 Pine 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 Signature
This describes part of the action to be taken if the patterns
for this role are a match. This field consists of a filename
which will be used as the signature file when using this role.
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 Pine, but the rest of the processing
works as if the contents came from a file.
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.
A blank field here means that Pine will use its normal rules
for deciding which file (if any) to use for the signature file.
Set Template
This describes part of the action to be taken if the patterns
for this role are a match. This field consists of a filename
which will be used as the template file when using this role.
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 Pine, but the rest of the processing
works as if the contents came from a file.
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.
A blank field here means that Pine will not use a template file
when this role is being used.
Reply Use
This option determines how this particular role will be used
when Replying to a message. There are three possible values for
this option. The default setting is that this role will never
be a candidate for use when Replying. Even if the pattern
matches the message being replied to, this role will not be
used.
The second and third options will cause this role's pattern to
be compared with the message being replied to. If there is a
match (and it's the first match), then this role will either be
used without confirmation or will be the default when
confirmation is asked for, depending on which option is
selected.
If confirmation is requested, you will have a chance to
manually change the role to one of your other Reply roles.
You won't be prompted for confirmation if none of your roles
patterns match the message. In other words, if the default role
selected is just your default Pine role (as opposed to a role
you've defined in the Setup/Roles screen) then you will not be
prompted. This is independent of the value of the current
option. The confirm-role-even-for-default feature may be used
to change this behavior.
Forward Use
This option determines how this particular role will be used
when Forwarding a message. There are three possible values for
this option. The default setting is that this role will never
be a candidate for use when Forwarding. Even if the pattern
matches the message being forwarded, this role will not be
used.
The second and third options will cause this role's pattern to
be compared with the message being forwarded to see if there is
a match. If there is a match (and it's the first match), then
this role will either be used without confirmation or will be
the default when confirmation is asked for, depending on which
option is selected.
If confirmation is requested, you will have a chance to
manually change the role to one of your other Forward roles.
You won't be prompted for confirmation if none of your roles
patterns match the message. In other words, if the default role
selected is just your default Pine role (as opposed to a role
you've defined in the Setup/Roles screen) then you will not be
prompted. This is independent of the value of the current
option. The confirm-role-even-for-default feature may be used
to change this behavior.
_________________________________________________________________
Notes on Configuration and Preferences
Pine in Function Key Mode
The standard Pine 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.
Pine can also operate in a function-key mode. To go into this mode
invoke pine -k or (on some UNIX systems) pinef. On a UNIX system, you
can link or copy the Pine executable to pinef to install pinef.
Alternatively, users and systems administrators can set the
use-function-keys feature in the personal or system-wide Pine
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 Pine 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
Pine 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 Pine to check
if an address is that of the current Pine user.
Pine 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-Pine users and UNIX
Pine 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 Pine, access to these archives is just as
simple as access to folders on Pine's local disk.
"Collection" is the word we use in Pine 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 Pine will adjust its menus and
prompts to help navigate them.
The way collections are defined in Pine is with the folder-collections
variable in the Pine 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, Pine
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). Pine 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 Pine, 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 Pine configuration file you get
simple management of multiple folders in diverse locations.
As of Pine 4.00, collection setup is handled by the
Setup/collectionList screen instead of requiring hand editing of the
configuration file.
_________________________________________________________________
Syntax for Remote Folders
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 IMAP server
and is in a form compatible with that server (i.e., path delimiters
and naming syntax relative to that server).
Typically, a folder name without any path description is understood to
reside in the user's "home directory" (i.e., in some way the user's
personal, writable file area), as are incomplete path designations.
However, the IMAP specification does not require that unqualified
folder names live in one's home directory, so some IMAP servers may
require fully qualified names. An example of a remote folder
specification would be,
{host.dept.washington.edu}mail/saved-messages
This example simply specifies a folder named ``saved-messages'' on the
imap server ``host.dept.washington.edu'', in the ``mail'' subdirectory
of the user's home directory. Easy isn't it?
To confuse things a bit, qualifiers are permitted within the brackets
following the host name. These qualifiers consist of a slash ('/')
character followed by a keyword or keyword and value, and have the
effect of modifying how the connection is made to the host specified.
An example of such a specification might be,
{news.u.washington.edu/nntp}#news.comp.mail.mime
This specifies an altogether different access method: access via the
Network News Transport Protocol (NNTP).
Some other possible qualifiers are /user=username, which says to login
as user username; /secure, which says to require Kerberos 5 to login;
imap; pop3; and anonymous.
There is also an optional :portnum following the hostname. This would
specify a non-standard port number to connect to.
_________________________________________________________________
Sorting a Folder
The mail index may be sorted by subject, size, from, to, cc, date, or
arrival 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. The sort by sender sorts by the user-id (part
before the "@"), not the full name. The arrival sort is basically 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 Pine, only the first
sort is slow since Pine 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. Pine will show progress as it is sorting.
_________________________________________________________________
Alternate Editor
In the Pine 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 Pine 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 \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.
Pine'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 Replying, not when
Forwarding.
_________________________________________________________________
Feature List Variable
Pine used to have feature levels for users with different amounts of
experience. We found that this was too restrictive. Pine 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.
_________________________________________________________________
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 desireable 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
Pine's MIME-TYPE support is based on code contributed by Hans Drexler
<drexler@mpi.nl>. Pine 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 DOS and OS/2, Pine looks in the same directory as the PINERC file
and the same dir as PINE.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
_________________________________________________________________
Additional Notes on PC-Pine
Below are a few odds and ends worth mentioning about PC-Pine. They
have to do with DOS-specific behavior that is either necessary or
useful (and sometimes both!).
As PC-Pine 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-Pine:
X-Sender: @
By popular demand of system administrators, PC-Pine has been modified
to prevent sending messages until the user has successfully logged
into a remote mail server. Even though PC-Pine 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-Pine has no user database to consult for user-id,
personal-name, etc., necessary information must be provided by the
user/installer before PC-Pine can properly construct the "From"
address required for outbound messages. PC-Pine 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 Pine session, and no opportunity to save
them in the PINERC will be offered.
Along similar lines, a feature allowing automatic login to the
imap-server containing the user's INBOX has also been requested. This
feature is not enabled by default, but requires the existence of the
file named PINE.PWD in the same directory as the PINERC. Even with the
existence of this file, the user must still acknowledge a prompt
before the password is saved to the file. If PC-Pine is configured to
access several different IMAP servers, each password entered will be
kept (associated with the corresponding host name) in memory during
the current session, and optionally, in the PINE.PWD file for use in
subsequent sessions.
WARNING! Use this feature with caution! It effectively makes the
user's mail no more secure than the physical security of the machine
running PC-Pine. What's more, while the password is cloaked by a mild
(some might say, feeble) encryption scheme, it is nonetheless sitting
in a file on the PC's disk and subject to cracking by anyone with
access to it. BEWARE!
Another feature of DOS is the lack of standard scratch area for
temporary files. During the course of a session, PC-Pine 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-Pine observes the TMP and TEMP
environment variables, and creates temporary files in the directory
specified by either. In their absence, PC-Pine creates these files in
the root of the current working drive.
Behind the Scenes
Many people ask how certain Pine features are implemented. This
section outlines some of the details.
Address Books
Beginning with Pine 4.00 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 (the address books Pine has had all along); 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.
Beginning with Pine 4.00 there is a new type of address book called a
remote address book. A remote address book is stored in a mail folder
on an IMAP server. A Pine remote address book is just like a Pine
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 a pine 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.
Pine 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 Pine discovers the folder
has changed it gets a new copy and puts it in the local cache file.
There is a new 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 has changed. If the metafile or any
of the cache files is deleted then Pine 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
Pine 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-Pine, 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 Pine
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:
TABTABTABTAB
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.
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, Pine 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 822 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 822 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 is in
the format:
"(" , , , ... ")"
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 822
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 on Unix and on PC's.
However, both Unix and PC versions of Pine can read either format, so
it should be possible to share a read-only address book among the two
populations (using NFS, for example). The end-of-line character for
the LookUp file is always just , even on a PC.
_________________________________________________________________
Address Book Lookup File
Starting in 3.90 there is an additional file for each address book,
called the LookUp file. It usually has the same name as the address
book file with the suffix ".lu" appended. (It might have a different
name if a file name length restriction prohibited that name.) This
file is created and maintained by Pine. If it is deleted, Pine will
recreate it next time it runs. Its purpose is to speed up lookups for
large address books and to reduce memory requirements for large
address books. A fairly detailed description of how it is used is
given in src/pine/adrbklib.h.
The lookup file changes whenever the address book itself is changed.
If it doesn't exist, Pine attempts to create it. If Pine doesn't have
permission to create the lookup file with the standard name, it will
create a temporary version in a temp directory. You want to avoid this
since it would have to be rebuilt every time Pine was run, and
rebuilding takes a significant time for a large address book. So, if
you're going to have a shared address book in a read-only directory,
it is highly desirable to create the lookup file so that the users
sharing it won't have to each create a copy in a temp directory. You
can do that by running Pine and accessing the address book under a
user id which does have permission to write the file or by using the
-create_lu command line argument to Pine. If users may be using a
shared address book that needs updating, it is best to move the old
address book to another name rather than copying over it since the
file may be opened by running Pines. It is also best to make the
lookup file for the new addrbook before moving it and the address book
file into place, otherwise users may get stuck attempting to
initialize the new lookup file. The lookup file contains a timestamp
which records the mtime of the address book file when the lookup file
was last updated. Whenever a user runs Pine the current mtime of the
address book is checked against this timestamp and if they differ,
Pine will want to rebuild the lookup file. Because of this, it isn't a
good idea to build the lookup file and then copy the address book and
lookup file into place. You should move it or copy it in some way
which preserves the address book file's mtime (e.g., use mv or tar).
Validity Checking of Address Books
There is no file locking done on Pine 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 Pine'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.
Another sort of validity check is that the lookup file contains a
timestamp internally that is supposed to match the time that the
address book file itself was last modified. If the lookup file
timestamp doesn't match the date of the address book file, a new
lookup file is built. If you are having trouble, it is always ok to
remove the lookup file and restart. Pine will automatically rebuild
the lookup file.
One other validity check happens when looking up an entry in the
address book file. An entry is looked up by first getting an offset
into the address book file from the lookup file. A seek to that
location is done and then the entry is read. An entry should be at the
start of a line. If it isn't, something is wrong. In that case, the
lookup file is rebuilt and the operation is repeated if possible.
_________________________________________________________________
Checkpointing
Periodically Pine 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 Pine 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:
Good Time:
This occurs when Pine has been idle for more than 30 seconds.
In this case Pine 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 Pine has executed some command. Pine
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, Pine 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 Pine is compiled with the compiler DEBUG option on (the
default), then Pine will produce debugging output to a file. 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
Pine 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 Pine 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.
PC-Pine creates a single debug file named PINEDEBG.TXT in the same
directory as the PINERC file.
_________________________________________________________________
Filters
Pine is not designed to process email messages as they are delivered;
rather Pine depends on the fact that some other program (sendmail,
etc) will deliver messages and Pine simply reads the email folders
which that other program creates. For this reason, Pine cannot filter
incoming email into different folders. It can, however, work alongside
most of the programs available over the Internet which perform this
task. Pine is known to operate successfully with the Elm filter
program and with procmail.
Pine allows users to specify a set of incoming-folders. Pine will
separate out all the folders listed as incoming-folders and offer
convenient access to these. We hope that in the future Pine will be
able to offer new message counts for all of the incoming folders, but
we haven't done this so far because of the performance penalty.
_________________________________________________________________
Folder Formats and Name Extensions
A folder is a group of messages. The default format used by Unix Pine
is the Berkeley mail format. It is also used by the standard mail
command and by elm. Unix Pine also understands message folders in
other formats, such as Tenex, MH, MMDF, and Netnews.
PC-Pine reads and writes local (PC) folders in a special format
similar to the Tenex format. Near as we can tell, PC-Pine is the only
program to use this format. Beginning with version 3.90, PC-Pine
includes a ReadOnly driver for the Berkeley mailbox format in
addition. That means that you can import Unix mail folders, or mount
them via NFS or SMB, and PC-Pine can read them --but not modify them.
Extensions. In the past, file name extensions have been significant in
both Unix Pine and PC-Pine, but this has caused more problems than it
solved. Therefore, on Unix Pine extensions no longer have any special
meaning, and this is the trend for PC-Pine as well.
By default, PC-Pine adds ".MTX" to the name of any local (PC) folders
that are referenced, and suppresses the extension from the "Folder
List" display. Now that PC-Pine can read more than one folder format,
the MTX extension no longer implies a particular format, and is
largely irrelevant. By using the folder_extension option, you can
change this behavior. In particular, you may set folder-extension to
the "null string" (a pair of double quotes) which tells PC-Pine to
neither add nor hide-from-view any folder name extension.
The reason you might wish to over-ride the MTX default is that recent
versions of PC-Pine have the ability to open (albeit ReadOnly) normal
Unix mail folders. Since it might be inconvenient to rename all of
them to have an MTX extension, it is possible with this option to
switch PC-Pine's behavior so that such folders can be seen and
accessed without changing their names. However, doing this means that
your existing PC-Pine local folders will have apparently changed their
names. For example, if you had a local folder named "FOO" it will now
appear in the "Folder List" as "FOO.MTX". If you wish to save
additional messages to that folder, you will need to enter the full
name, "FOO.MTX" at the Save prompt. Likewise for GoTo.
If you wish to permanently avoid having to deal with folder name
extensions, you will need to set this option to the null string by
entering two double- quote marks, and you will need to rename your
existing local folders to not have an MTX extension. In DOS this can
be done in one command, once you have changed to your mail directory:
RENAME *.MTX *.
We don't know why you might wish to, but you could also use this
option to tell PC-Pine to use an extension other than MTX. In this
case, enter the three characters you desire to use in lieu of "MTX".
Note that your existing folders will need to be renamed to correspond
to this new extension.
Berkeley Mail Format
This format comes to us from the ancient UNIX mail program,
/bin/mail. (Note that this doesn't have anything to do with
Berkeley, but we call it the Berkeley mail file format anyway.)
This program was actually used to interactively read mail at
one time, and is still used on many systems as the local
delivery agent. In the Berkeley mail format, a folder is a
simple text file. Each message (including the first) must start
with a separator line which takes approximately the form:
From juser@u.example.edu Wed Aug 11 14:32:33 1993
Each message ends with two blank lines. There are actually
several different variations in the date part of the string,
twenty at last count. Because of the format of the separators,
lines in the mail message beginning with "From ", space
included, risk being confused as message separator lines. Some
mail programs will interpret any line beginning with "From " as
a message separator, while others --including Pine-- will not
be confused unless the line really looks like a message
separator, complete with address and date. Such lines will be
modified to begin with ">From ". In deference to other mail
programs, you may also set the save-will-quote-leading-froms
feature, in which case any line beginning with "From " will be
modified as above. If you see this occasionally in incoming
mail messages, the culprit is not Pine but the message delivery
program being used at your site.
You can fool Pine into thinking a file is a mail folder by
copying a suitable message separator from a real folder to the
beginning of the file and wherever you want message boundaries.
The vast majority of INBOXes Pine reads and folders it writes
are of this format.
Tenex and MTX Formats
Like the Berkeley format, the Tenex folder format uses a single
file per folder. Historically, the name of Tenex-format folders
ended with .txt, but this rule is no longer enforced. The file
format consists of a header line followed by the message text
for each message. The header is in one of two forms:
dd-mmm-yy hh:mm:ss-zzz,n;ffffffffffff
dd-mmm-yyyy hh:mm:ss sssss,n;ffffffffffff
and is immediately followed by a newline (and the message
text). The fields in the formats are:
dd two-digit day of month (leading space if a single-digit day)
mmm three-letter English month name (Jan, Feb, etc.)
yy two-digit year in 20th century (obsolete)
yyyy four-digit year
hh two-digit hour in 24-hour clock (leading zero if single-digit)
mm two-digit minute (leading zero)
ss two-digit second (leading zero)
zzz three-letter North American time zone (obsolete)
sssss signed four-digit international time zone as in RFC 822
n one or more digits of the size of the following message in
bytes
ffffffffffff
twelve-digit octal flags value
Punctuation is as given above.
The time in the header is the time that message was written to
the folder. The flags are interpreted as follows: the high
order 30 bits are used to indicate user flags, the next two
bits are reserved for future usage, the low four bits are used
for system flags (010 = answered, 04 = flagged urgent, 02 =
deleted, 01 = seen).
If a Tenex-format (or empty) file named mail.txt exists in a
Pine user's home directory, this triggers special processing in
Pine. When INBOX is opened, mail is automatically moved from
/usr/spool/mail into mail.txt in the user's home directory.
The format used by PC-Pine is identical to the Tenex format,
with two exceptions: the folder name ends with .MTX instead of
.txt (this is a requirement in the MTX format), and DOS-style
CR/LF newlines are used instead of UNIX-style LF newlines.
Netnews Format
The netnews format is a ReadOnly format which uses directories
under /usr/spool/news as folders. The /usr/spool/news/ prefix
is removed and all subsequent ``/'' (slash) characters are
changed to ``.'' (period). For example, the netnews folder name
comp.mail.misc refers to the directory name
/usr/spool/news/comp/mail/misc. In addition, the news folder
name must appear in the file /usr/lib/news/active for it to be
recognized. Individual messages are stored as files in that
directory, with file names being the ASCII form of a number
assigned to that message. The default locations above can be
changed with the config variables news-spool-directory
and news-active-file-path.
_________________________________________________________________
Folder Locking
There are two kinds of locking which Pine has to worry about. The
first might be called program-contention locking. This affects the
times when a program is performing actual updates on a folder. An
update might be a message delivery program appending a message
(sendmail delivering a message to an INBOX), status changes
(checkpoints by Pine every few minutes) or deletion of messages (an
expunge in Pine). For moderate sized mail messages, these operations
should not last for more than a few seconds. The second kind of
locking has to do with user-contention situations. This would be the
case when one folder is shared by a group of people or even when one
person starts multiple email sessions all of which access the same
folders and INBOX.
There are two standard locking mechanisms which handle
program-contention locking. To be on the safe side, Pine implements
both of them. The older mechanism places a file xxxx.lock (where xxxx
is the name of the file being locked) in the same directory as the
file being locked. This makes use of the fact that directory
operations are atomic in UNIX and mostly works across NFS. There are
involved algorithms used to determine if a lock has been held for an
excessive amount of time and should be broken. The second
program-contention locking mechanism uses the flock() system call on
the mailbox. This is much more efficient and the locks can't get stuck
because they go away when the process that created them dies. This is
usually found on 4BSD and related machines.
In addition to these, Pine--through the c-client library--provides
robust locking which prevents several users (or several instances of
the same user) having a mail file open (for update) at once. This
user-contention lock is held the entire time that the folder is in
use.
With IMAPd 7.3(63) and Pine 3.84 and higher, the second Pine session
which attempts to open a particular folder (usually INBOX) with Pine
will ``win''. That is to say, the second session will have read/write
access to the folder. The first user's folder will become read-only.
(Note that this is exactly the opposite of the behavior prior to Pine
3.84 where the second open was read-only. Having the latest open be
read-write seems to match more closely with what users would like to
have happen in this situation.) Pine's additional locking is only
effective against multiple uses of Pine or other programs using the
c-client library, such as MailManager, ms, IMAPd and a few others.
Beginning with Pine 3.85, there is a -o command line flag to
intentionally open a mailbox read-only.
Pine locking on UNIX systems works by creating lock files in /tmp of
the form \usr\spool\mail\joe. The system call flock() is then used on
these files; the existence of the file alone does not constitute a
lock. This lock is created when the folder is opened and destroyed
when it is closed. When the folder is actually being written, the
standard UNIX locks are also created.
If a folder is modified by some other program while Pine has it open,
Pine will give up on that mail file, concluding it's best not to do
any further reads or writes. This can happen if another mailer that
doesn't observe Pine's user-contention locks (e.g. elm or mail) is run
while Pine has the mail folder open. Pine checkpoints files every few
minutes, so little data can be lost in these situations.
PC-Pine does not do any folder locking. It depends on IMAP servers to
handle locking of remote folders. It is assumed that only one Pine
session can be running on the PC at a time, so there is no contention
issue around folders on the PC itself.
_________________________________________________________________
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 Pine 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 pine subdirectory of the distribution
contains all the help text for Pine. On UNIX, it is compiled right
into the Pine 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 by two awk scripts and turned into C files that
are compiled into Pine.
PC-Pine, which tries to run on machines with as little as 640k of
memory, leaves the Pine help text out of the executable. PINE.EXE,
PINE.HLP, and PINE.NDX are all needed for PC-Pine's help system.
_________________________________________________________________
International Character Sets
While Pine was designed in the U.S. and used mostly for
English-language correspondence, it is a goal for Pine to handle email
in almost any language. Many sites outside of the U.S. run Pine in
their native language. The default character set for Pine is US-ASCII.
That can be changed in the personal or system-wide configuration file
with the variable character-set.
When reading incoming email, Pine allows all character sets to pass
through. Pine doesn't actually display the characters but simply
passes them through; it is up to the actual display device to show the
characters correctly. When composing email, Pine will accept input in
any language and tag the message according to the character-set
variable. Again, it is up to the input device to generate the correct
sequences for the character set being used.
With the exception of UNICODE-1-1-UTF-7, the outgoing message is
checked to see if it is all US-ASCII text (and contains no escape
characters). In that case, the text will be labeled as US-ASCII even
if the character-set variable is set to something else. The theory is
that every reasonable character set will have US-ASCII as a subset,
and that it makes sense to label the text with the
lowest-common-denominator label so that more mailers will be able to
display it. Text in the UNICODE-1-1-UTF-7 character set is never
re-labeled as US-ASCII. If the outgoing message is not all US-ASCII
text, then it will be labeled with the character-set variable set by
the user. If the user has not set the character-set variable then it
will be labeled as X-UNKNOWN-CHARSET.
BUG: If you prepare a UNICODE-1-1 document and read it into the
composer with ^R, Pine may mistreat it. If your document, when
misviewed as 8-bit bytes, does not contain any individual bytes
greater than 0x7f base 16, then Pine will re-label your outgoing
message as US-ASCII, even if your message is really in Unicode
Cyrillic, Arabic, or Thai. On the other hand, if your UNICODE-1-1,
when misviewed as 8-bit bytes, does contain at least one individual
byte greater than 0x7f base 16, as is likely for Unicode
French/German/Spanish, Greek, Japanese, and Chinese, then Pine will
retain the UNICODE-1-1 label.
The character sets are:
US-ASCII Standard 7 bit 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
KOI8-R 8 bit Latin and Russian
VISCII 8 bit Latin and Vietnamese
ISO-2022-JP Latin and Japanese
ISO-2022-KR Latin and Korean
UNICODE-1-1 Unicode
UNICODE-1-1-UTF-7 Mail-safe Unicode
ISO-2022-JP-2 Multilingual
Earlier versions of Pine made use of the character set tags associated
with text in MIME to decide if the text should be displayed or not.
Depending on the character set tag and the character-set variable in
Pine, the text was either displayed as is, displayed with some
characters filtered out, or not displayed at all. The current version
uses a much simpler algorithm in order to maximize the chance that
useful contents are readable by the user. It simply displays all
messages of type text and makes no attempt to filter out characters
that may be in the wrong character set. If the text is tagged as
something other than US-ASCII and the tag does not match the character
set that the character-set variable is set to, then a warning is
printed at the start of the message. In that case, it is possible that
the text will be displayed incorrectly. For example, if the text is
one variant of ISO-8859 and the display device is another variant,
some of the characters may show up on the screen as the wrong
character. Or if the text is Japanese and the display device is not,
some parts of the message may be total gibberish (which will look like
ASCII gibberish). On the other hand, the parts of the Japanese message
that really are US-ASCII will be readable in the midst of the
gibberish.
In the case of PC-Pine, the character values cannot be passed through
to the display device unaltered since MS-DOS uses various non-standard
character sets called "Code Pages".
The mapping between DOS Code Page and standard character set is
controlled by the character-set variable in the PINERC file and the
PC's installed Code Page. PC-Pine will automatically map common
characters in IBM Code Pages 437, 850, 860, 863, and 865 to ISO-8859-1
and back when the PINERC has character-set=ISO-8859-1. Pine will also
map common characters for IBM Code Page 866 to ISO-8859-5 and back
when character-set=ISO-8859-5. The mappings are bi-directional, and
applied to all saved text attachments in the defined character set,
messages exported, etc.
Alternatively, the translation tables can be configured externally and
applied at run time whenever the character-set variable is set to
something other then "US-ASCII" (the default). PC-Pine looks in the
text file pointed to by the environment variable ISO_TO_CP for the
table to use for mapping text matching the type defined by the
character-set variable into the local Code Page value. PC-Pine looks
in the text file pointed to by the environment variable CP_TO_ISO for
the table to use for mapping text in the local Code Page into outbound
text tagged with the character-set variable's value.
A text file containing a character set mapping table is expected to
contain 256 elements where each element is a decimal number separated
from the next element by white-space (space, tab or newline, but no
commas!). The index of the element is the character's value in the
source character set, and the element's value is the corresponding
character's value in the destination character set.
_________________________________________________________________
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), Pine will save
the interrupted composition and allow the user to continue it when he
or she resumes Pine. As the next Pine 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. Pine uses four of these flags: UNSEEN, DELETED,
ANSWERED, and FLAGGED. The N in Pine'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 Pine). The A in Pine's
FOLDER INDEX means that the message has been replied-to. The * in
Pine'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. In Tenex and PC-Pine's MTX folder formats, the
status goes into the 36-bit octal flags.
_________________________________________________________________
MIME: Reading a Message
Pine should be able to handle just about any MIME message. When a MIME
message is received, Pine 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.
Starting with version 3.90, Pine 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 Pine 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 MAILCAPSenvironment variable is defined, Pine will use that to
look for one or more mailcap files, which are combined. In the absence
of MAILCAPS, Unix Pine will look for a personal mailcap file in
~/.mailcap and combine that with a system-wide file in /etc/mailcap.
PC-Pine will look for a file named MAILCAP in the same directory as
the PINERC file, and/or the directory containing the PINE.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 Pine sees a MIME message part tagged as type IMAGE, and Pine's
image-viewer configuration variable is set, Pine will attempt to send
that attachment to the named image viewing program. In the case of
UNIX Pine, 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, Pine 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 Pine 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 Pine will use its internal viewer to display it.
This happens even if there is a mailcap description which matches this
particular type. If it is labeled as having a character set other than
the one you are using, it will still be displayed by the internal
viewer (perhaps incorrectly), though you will get a warning message
prepended to the message in the viewing screen. However, if you view a
part of type "text/plain" from the ATTACHMENT INDEX screen, then Pine
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 Pine 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 currently supported.
_________________________________________________________________
MIME: Sending a Message
There are two important factors when trying to include an attachment
in a message: encoding and labeling. Pine 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, Pine 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. Pine 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 character-set variable. If an attachment is ASCII (no 8-bit
characters) and contains no ESCAPE, ^N, or ^O characters (the
characters used by some international character sets), 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 character-set variable.
All other attachments are unrecognized and therefore given the generic
MIME label "application/octet-stream".
_________________________________________________________________
New Mail Notification
Pine checks for new mail in the INBOX and in the currently open folder
every two and a half minutes by default. It used to be 30 seconds
instead of 150 seconds, but we increased it in order to reduce the
load on large systems with lots of Pine users. The value can be
changed at compile-time in the pine/os.h file. This value can be
changed with the variable mail-check-interval. A new mail check can be
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 Pine, the notice will show the count of new
messages and the sender of the most recent one.
Questions have arisen about the interaction between Pine and external
mail notification routines (biff, csh, login). Firstly and
unfortunately, we have found no PC based program that will check for
email on an IMAP server when PC-Pine is not running. If you find one,
please tell us.
The UNIX case is more complicated. Pine sets the modification and
access time on a file every time it performs a write operation (status
change or expunge). You need to see which of these your email
notification program is looking at to know how it will behave with
Pine.
_________________________________________________________________
NFS
It is possible to access mail folders on NFS mounted volumes with
Pine, but there are some drawbacks to doing this, especially in the
case of incoming-message folders that may be concurrently updated by
Pine and the system's mail delivery agent. One concern is that Pine'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 Pine sessions
try to access the same mail folder from different hosts without using
IMAP. Imagine the scenario: Pine-A performs a write that changes the
folder. Pine-B then attempts to perform a write on the same folder.
Pine-B will get upset that the file has been changed from underneath
it and abort operations on the folder. Pine-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 Pine-B session when this happens is the last few status
changes.
If other mail readers besides Pine 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 Pine 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 "[5i" to begin directing all output
sent to the terminal to the printer and then "[4i" to return to
normal. Pine 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.
For example, NCSA telnet requires "capfile = PRN" in the config.tel
file. Attached-to-ansi printing doesn't work at all with the telnet
provided with PC-NFS. 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.
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 Pine distribution.
The three printer choices are for UNIX Pine only. PC-Pine can only
print to the locally attached printer. All printing on PC-Pine is done
via ROM BIOS Print Services (Int 17h). After verifying the existence
of a local printer via the BIOS Equipment-List Service (Int 11h), it
simply sends the message text, character by character, to the first
printer found using ASCII CR and LF at the end of lines and followed
by an ASCII FF. Note, some system adjustments using the PC's "MODE"
command may be required if the printer is not on the first parallel
port. PC-Pine cannot generate PostScript, so printing to exclusively
PostScript printers does not work.
PC-Pine for Winsock uses the MS-Windows printer interface. A Pine
print command will bring up a standard MS-Windows printer dialog box.
_________________________________________________________________
Save and Export
Pine users get two options for moving messages in Pine: Save and
Export. Save is used when the message should remain ``in the Pine
realm.'' Saved messages include the complete header (including header
lines normally hidden by Pine), are placed in a Pine folder collection
and accumulate in a standard folder format which Pine can read. In
contrast, the Export command is used to write the contents of a
message to a file for use outside of Pine. 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 Pine folder collection. Unless
FullHeaderMode is toggled on, all delivery-oriented headers are
stripped from the message. Even with Export, Pine 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
Pine'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 Saves, 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-Pine,
this can be a bit complicated. If the default collection for Saves is
local (DOS), then the default-fcc needs to be SENTMAIL, which is
syntax for a DOS file. However, if the default collection for Saves 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 Pine is used each month
it will offer to archive all messages sent from the month before. Pine
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
Spell checking is available for UNIX Pine only. We could not find an
appropriate PC based spell checker to hook into PC-Pine. Even UNIX
Pine depends on the system for its spell checking and dictionary.
Pico, the text editor, uses the same spell checking scheme as Pine.
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. Pine also respects the
environment variable SPELL. The spelling checker reads its words from
a standard dictionary on the system. Below is a description,
contributed by Bob Hurt, of how you can create your own personal
dictionary with additional ``correct'' words.
Step 1:
Make a file with all the words you want to include in your new
dictionary. I did mine with one word per line in alphabetical
order. Caps don't matter at all, as far as I know.
Step 2:
At the UNIX prompt, type "cat [word file] | spellin
/usr/dict/hlista > [new dict name]" where [word file] is the
file you just created and [new dict name] is the name of the
new dictionary that Pine will look at instead of the standard
/usr/dict/hlista. I named my word file .bobwords and my
dictionary .bobspell so I don't have to see them when I do a ls
command (ls doesn't list "dot" files). I also put the above
command into my .alias file as the command makedict so I can
add a word to my word file and easily recreate my dictionary.
NOTE: the new dictionary is in something called a "hashed"
format, and can't be read normally.
Step 3:
Check your new dictionary. At the UNIX prompt, type "cat [word
file] | spellout [new dict name]" If you did everything
correctly, it should just give you another prompt. If it lists
any of the words in your file, something is wrong. I can try to
help if all else fails.
Step 4:
Now you have to tell UNIX to use your dictionary instead of the
standard one by setting the environment variable SPELL to
access your dictionary. Go into your .login or .cshrc file in
your home directory (it doesn't seem to make a difference which
one you use) and add the line
setenv SPELL "spell -d [new dict name]"
I also created an alias for SPELL in my .alias file so I can
use the UNIX spell command to spell-check a file outside of
Pine. (The .alias line is: alias spell 'spell -d [new dict
name]')
Step 5:
Now you need to logoff and log back on to let UNIX look at your
.login (or .cshrc) file.
Here is an alternative method suggested by Zachary Leber:
Create a list (e.g. .zachwords) with the upper case followed by
lower case words, sorted alphabetically.
Add this line to .cshrc:
setenv SPELL 'spell +/home/ie/rsa/.zachwords'
The limitation here is that the path must be absolute (e.g.
+~/.zachwords doesn't work).
My man pages for spell show this + flag to be an easy way to do
the exception list. This way you don't have to bother with hash
lists or rehashing, and it seems to work across several
platforms.
_________________________________________________________________
Terminal Emulation and Key Mapping
Pine has been designed to require as little as possible from the
terminal. At the minimum, Pine 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. Pine 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. Pine 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.
Pine handles screens of most any size and resizing on the fly. It
catches SIGWINCH and does the appropriate thing. A screen one line
high will display only the new mail notification. Screens that are
less than ten columns wide don't format very nicely or work well, but
will function fine again once resized to something large. Pine sets an
internal maximum screen size (currently 170x200) and decides to use
either termcap or terminfo when it is compiled.
On the input side of things, Pine uses all the standard keys, most of
the control keys and (in function-key mode) the function keys. Pine
avoids certain control keys, specifically ^S, ^Q, ^H, and ^\ because
they have other meanings outside of Pine (they control data flow,
etc.) ^H is treated the same as the delete key, so the backspace or
delete keys always works 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 Pine is in regular (non-function
key) mode, Pine 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.
Pine expects the following escape sequences from terminals defined as
VT100:
ANSI/VT100
F1: OP
F2: OQ
F3: OR
F4: OS
F5: Op
F6: Oq
F7: Or
F8: Os
F9: Ot
F10: Ou
F11: Ov
Arrow keys are a special case. Pine 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. In some
versions of Pine before 4.00 there was a compile-time macro called
TERMCAP_WINS which could be set to cause the termcap or terminfo
definitions to be used instead of the built in definitions. Beginning
with 4.00 there is a hidden runtime feature which can be turned on to
accomplish the same thing. The feature is called
termdef-takes-precedence and it can be set in any of the Pine
configuration files. Some arrow keys on old terminals send single
control characters like ^K (one even sends ^\). These arrow keys will
not work with Pine. The most popular escape sequences for arrow keys
are:
Up: [A ?x A OA
Down: [B ?r B OB
Right: [C ?v C OC
Left: [D ?t D OD
It is possible to configure an NCD X-terminal so that some of the
special keys operate. Brad Greer contributes these instructions:
1.
In your .Xdefaults file, include the following "translations",
using lower hex values:
Pine*VT100.Translations: #override \n\
Delete: string(0x04) \n\
End: string(0x05) \n\
Escape: string(0x03) \n\
Home: string(0x01) \n\
Next: string(0x16) \n\
Prior: string(0x19) \n\
KP_Enter: string(0x18) \n\
2.
Start up Pine from an xterm, and specify a "resource name".
This resource name will allow the user to specify resources for
Pine (that deviate from the defaults). For example, xterm -name
Pine -e pine & (the resource name Pine corresponds to the
translations just added in the .Xdefaults file).
Notes for Porting and Modification
Porting Pine to Other Platforms
Substantial effort has gone into making Pine/Pico portable. There are
still, of course, a number of machine dependencies. Some of the ports
are well-tested and some are untested. In particular, the most heavily
used ports are the Ultrix, AIX, NeXT, Windows, and Dec Unix ports.
Each platform is given a three letter name (see the file
doc/pine-ports). Make up a new one for your new port. We've attempted
to bring all potential platform dependencies into the files:
{pico,pine}/osdep/os-xxx.h, {pico,pine}/osdep/os-xxx.ic, and
{pico,pine}/makefile.xxx, where xxx is the three letter name of the
port. Thus any new port will hopefully just result in new versions of
these files and some notes for the pine-ports file. There are separate
dependencies in the c-client source, but that is handled in separate
documentation there. Regrettably, the source code is also full of
instances of ifdef DOS. Most of these are due to memory limit problems
on DOS as opposed to actual system dependencies.
The makefiles are kept as simple and straight-forward as possible,
because many previous attempts at automatically figuring out what to
do seem to have become complex and ineffective in what they set out to
do: which is to make compiling and installing the program easy. Each
port is for a specific hardware/software platform, also because past
attempts to generalize on versions of Unix or some CPU architecture
don't seem to have gained much. Thus, there is a separate makefile for
each platform that calls the appropriate compiler and linker with the
appropriate flags. Most of these makefiles are pretty similar. The
makefile also specifies which of the os-xxx.c and os-xxx.h files to
use. It is the root from which most platform dependencies are
selected. In most cases the makefile also defines a symbol named after
the platform on which there can be dependencies in the source code,
though we've tried to minimize relying on this where reasonable. When
different "ports" are very similar, it is sometimes possible to use
the same pine code (for example) with only a small change in the
c-client or pico code. In those cases, that kind of dependency is
reflected in the top-level build script. The build script can usually
be used to invoke the various makes correctly. It may set some
variables before running make so look to see what build does before
trying a make in one of the subdirectories. This is especially true if
LDAP is being included.
It is almost always easier to start with an existing port when trying
to port to a new system. There is a port called gen (generic) which
may be a good starting point. On the other hand, if another port is
close to what you want, start with it instead.
The file pico/osdep/os-xxx.h contains most of the general platform
dependent #include's and #defines. There are a number of Pine
configuration settings that are defined in pine/osdep/os-xxx.h, as
well, such as the place it looks for certain files, defaults for the
printer and folder names, the maximum screen size, and so on. Start by
looking at the generic pico/osdep/os-gen.h file and comparing it to
some of the specific os-xxx.h files there.
The osdep/os-xxx.c files contain functions that are potentially
platform dependent. Again, the idea is to gather all the dependencies
in one place. We use a complicated looking method to produce the
os-xxx.c files from a set of included files. Each included file
usually contains a single implementation method and we've found that
there are usually only two or three different methods in the ports
we've done so far. Hopefully, coming up with an os-xxx.c for a new
port will usually be a matter of including the right set of these
already written functions. This is done by writing a new os-xxx.ic
file in the osdep subdirectories. Starting with the generic os-gen.ic,
as you did with the os-gen.h file above, may be a useful strategy.
We strongly encourage that no changes be made to the general source
when porting and that all changes be contained in the system dependent
files if possible. The object is to maintain source code integrity and
assimilate ports to new platforms rapidly. The more conventional way
to do this is with a large collection of #ifdefs. The problem with
this is that adding a port for a new platform implies changing the
source code for all the other platforms and thereby risks breaking
them. (We readily admit that there are still too many ifdefs in the
code.)
If you do port Pine to a new platform we hope that you will send us
the changes required so that we may attempt to include it in a later
release. Thanks!
_________________________________________________________________
Test Checklist
The following is a checklist of some things to check when testing a
new port:
___
Sending mail, check that headers are correct
___
Sending mail with attachments
___
Sending mail with SMTP server
___
Sending mail without SMTP server
___
Sending mail with list of two SMTP servers, first one doesn't
answer
___
Replying to and forwarding a message
___
Postponing messages under composition
___
Composer operations
___
Alternate editor, enable-alternate-editor-implicitly
___
Make sure local user names are expanded
___
Test spelling checker
___
Catching of SIGHUP while message is being composed
___
Setting of variables in .pinerc
___
New mail notification. Should happen with Pine idle to check
timeouts
___
Reading mail (attachments, MIME, MIME with mailcap viewers)
___
Deleting, undeleting, expunging, sorting
___
Expunge to empty folder
___
Make sure that ~ expansion works in config files
___
Make sure that $VAR expansion works in config files
___
Save message to folder, check error conditions such as
permission denied
___
Export message with FullHeaderMode on and off
___
Checkpointing (see the section on checkpointing)
___
Open IMAP and RIMAP folders
___
Default-fcc on remote IMAP server
___
Fcc-name-rule, fcc in addrbook (while composing)
___
Test opening bogus folders: invalid format, no permission
___
Open a USENET news group, list in folder-lister, read news,
post news
___
Command line arguments
___
Change password
___
Lock keyboard
___
Address book operations (edit, delete, add, lists, whereis,
composeto)
___
ReadOnly address book
___
Look at addrbook, change addrbook-sort-rule in Config, go back
to addrbook screen
___
No permission to write in same directory as addrbook, should
create addrbook.lu in a temp directory
___
Multiple address books
___
Address book loops from one addrbook to another and back
___
TakeAddr command with one address, with multiple addresses
___
TakeAddr command with ReadOnly address books
___
TakeAddr command with one of two address books ReadOnly
___
Send mail with empty address book
___
Config Screen operation, does pinerc get written?
___
Make sure SIGTSTP, ^Z works
___
Sent-mail pruning (set back last-time-prune-questioned
variable)
___
Printing using all three printer configurations, various
screens
___
View help text and news
___
Folder list operations (rename, create, delete...)
___
Saved-msg-name-rule
___
Screen redrawing in various screens (^L)
___
Window resizing in various screens
___
Error messages for incorrect terminal types (try "foo" and
"vt52")
___
Reading of /usr/local/lib/pine.conf
___
Fixing variables and features in /usr/local/lib/pine.conf.fixed
___
Flag command (check message status changed in mail folder)
___
Initial-keystroke-list
___
Aggregate operations (save, delete, export, takeaddr, ...)
___
Build xxx from scratch, build clean