./{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:
Set up a symlink called ldap
in the top-level
pine
directory (the directory where the Pine
build
script is located).
The build
script will call contrib/ldap-setup
to
help figure out how to use the LDAP libraries.
It expects to find directories
ldap
, ldap/include
, ldap/libraries
,
and file ldap/include/ldap.h
.
There are at least two slightly different styles of LDAP libraries. One style uses two libraries, libldap and liblber, the other uses just libldap. The script is not very smart, but it attempts to figure out which of these two cases is being used. Modify the script to fit your situation if you need to.
When using OpenLDAP as the library (or the older University of
Michigan libary), set up the symlink so that it points to the base of
the ldap source tree.
The ldap-setup script looks for the directory
ldap/libraries/liblber
and the libraries
ldap/libraries/libldap.a
and ldap/libraries/liblber.a
.
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.
If there is no ldap
symlink, there is still an attempt to
automatically include LDAP support if certain conditions exist.
At this point, the check includes a check for Solaris 8, otherwise the
automatic inclusion is not done.
You may override the automatic inclusion of LDAP with the build
argument NOLDAP
.
Pine uses LDAPv2 protocol. When using LDAPv3 protocol, the results are returned in the utf8 character set. Pine is not yet ready to deal with that, so it tells the server to use the LDAPv2 protocol.
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.
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
.
-dverbose=7
.
-dverbose=3,numfiles=2
.
./pine/osdep/postreap.*
file is included in the ./pine/osdep/os-xxx.ic
file for
your system.
PINE.PWD
. It may be overridden by the
-passfile command-line argument.
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.
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!
/usr/lib/sendmail -oi -oem -t
.
See the SMTP and Sendmail
section for more details.
/usr/lib/pine/pine.conf
.
/usr/lib/pine/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.
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.
pine.conf
or
pine.conf.fixed
file.
./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.
./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:
./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.
ftp.cac.washington.edu
in the directory mail
. The file is called imap.tar.Z
.
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.
ls
you should see the following files and directories (or
something close to it):
README build doc makefile pine bin contrib imap pico
./build clean
. This should take only a few seconds to run.
./build
xxx where xxx
is the three letter code you picked in step 1. The compiler should grind
away for a few minutes.
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
,
DEBUG
, and
EXTRALDFLAGS
.
There are also some SSL-related arguments: SSLDIR
,
SSLCERTS
, SSLINCLUDE
, and SSLLIB
.
You should also read the comments in the build
script itself,
which are possibly more up-to-date than this text.
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.
But if you wanted to turn it off unconditionally you could use the
build argument
In other words, the command to build a Pine with no debugging would be
where target is one of the 3-letter port names found in doc/pine-ports. To also leave out the symbol table information you could pass:
To turn on the optimizer
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
:
If you are using OpenSSL but have decided to use a non-standard directory
(standard one is /usr/local/ssl
) for the location
then you can cause Pine
to use that directory with
The assumption is that the certs directory is in SSLDIR/certs, the include directory is SSLDIR/include, and the library directory is SSLDIR/lib. You can change those assumptions with
If you are having trouble with the SSL compilation you may explicitly exclude
SSL code with NOSSL
.
Similarly,
The argument
can be used to pass arguments to the c-client make which aren't provided
for in the Pine build script.
For example, if you want to change the FRIZZLE
parameter (a made up argument which the c-client make uses) you might be
tempted to type something like
This does work with make on some platforms, but not on others. Some makes seem to pass the arguments on to sub-makes, others don't. If that doesn't work, then EXTRASPECIALS is for you.
An additional warning. There are some arguments which are overridden unconditionally in the sub-makes. Hopefully none of the arguments mentioned above falls in this category, but it is something to look out for if you are having trouble.
/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/lib/pine/pine.info
,
/usr/lib/pine/pine.conf
, and
/usr/lib/pine/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.
[pctcp ifcust 0] ip-address=xx.xx.xx.xx
set PCTCP=C:\PINE\PCTCP.INI
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
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 transferand the next line is appropriate for
/etc/inetd.conf
:
imap stream tcp nowait root /usr/etc/imapd imapdThe
/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.
$MAILCAPS
not set.
$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:
Registry Values:
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: