This document is out of date. I'm keeping it here because it is linked to from various places. The most recent packages I've built will be linked to from my home page.

IMPORTANT NOTE: This is not an official release of Pine, and will not be supported by the Pine development team or help@cac. It is a modified version of version 4.40 which includes a small amount of code from a 4.41 prerelease, and as such it may be unstable or dangerous. I personally think it should be ok to use, but you use it at your own risk.

If you would like to test my build of Pine 4.40 with ssl, ldap and kerberos supportfor OS X 10.1 (this will almost certainly not work on 10.0 - 10.0.4), here are some quick steps:

1) download pine4.40-jdl.tar.gz
2) download ssl-certs.tar.gz
3) In a terminal window, go to the directory where you downloaded the files. This will probably be /Users/YOURUSERNAME/Desktop/
4) Type the following command:

sudo tar zxvPf ssl-certs.tar.gz
5) If you are asked for a password, type your own MacOS X password; not your UW password, not your OS X's root password.
6) Type the following commands:
tar zxvf pine4.40-jdl.tar.gz
sudo mv pine pico pilot /usr/bin
7) You should now have the pine, pico, and pilot commands available from a terminal window. Give pine a try. Let me know ( if it works or not, and if not, what the error message was. Thanks.
8) If you'd like to test kerberos or ldap support, skip to the end and read my notes on configuring those.
9) If you're curious what I had to do to make this work (if, in fact, it works for you), keep reading.

How I built Pine 4.40 for MacOS X version 10.1
--Josh Larios <> 2001/11/07

These are notes I took while I was trying to get Pine to build. I cleaned them up a bit after I got it working, but not an awful lot. They may or may not be useful for you if you want to build Pine yourself.

Note: I'm using the tcsh shell which came with 10.1, so if (like any sane person would) you've installed and switched to bash, look for any tcsh-isms in the instructions below and translate them to bash. "setenv" becomes "export", for example.

A number of these steps seem to expect perl to be in /usr/local/bin/. Let's make a symlink so they don't fail:

sudo mkdir -p /usr/local/bin
sudo ln -s /usr/bin/perl /usr/local/bin/perl
Ok, now we can get started.

+ First thing, fix the openssl installation.

get and unpack openssl-0.9.6b.tar.gz from

Go into the openssl source directory:

cd openssl-0.9.6b
Copy the header files to the system OpenSSL directory:
sudo cp -r include /System/Library/OpenSSL/
Make a symlink to the headers where most things will expect them:
sudo ln -s /System/Library/OpenSSL/include/openssl /usr/include/openssl
Trick the makefile into thinking you've already built openssl:
ln -s /usr/bin/openssl apps/
Rebuild the certificate files:
make rehash
Copy the certificate files into the system OpenSSL directory:
tar -cf - certs/ | ( cd /System/Library/OpenSSL/ ; sudo tar -xvf - )
You're done with the openssl source now; you can remove it if you want.

+ Let's try building some ldap libraries, so we can enable ldap support

Ok, we're going to need some outside help for this step. Let's grab ltconfig and (we'll be using them shortly) from

get and unpack openldap from (I'm using openldap-stable-20010926.tgz, which corresponds to version 2.0.15, because that's what was current when I started).

cd openldap-2.0.15
The libtool which comes with openldap-2.0.15 doesn't work quite right on 10.1, so now we'll replace it with the one we grabbed from sourceforge:
cp /PATH/TO/ltconfig /PATH/TO/ build/
Configure openldap to build the libraries, but not slapd or slurpd. (This is just my preference, since I don't really do ldap, and don't know what slapd and slurpd are for. If you know and want them, go ahead and build them too.)
./configure --disable-slapd --disable-slurpd
make depend
Build the libraries. This will take a while. A long while.
Since we didn't build slapd, we're going to assume the make succeeded, and skip the "make test" step. Let's go straight to installation:
sudo make install
(I'm not 100% sure that step was necessary, but it probably can't hurt.) That's it for ldap. DON'T remove the ldap source directory just yet, though.

+ Whee, on to Pine!

Download and unpack the pine source. I'm using 4.40. 4.41 should be out soon; if there are tricks required to get it working, I'll write up a new document once it's released.

cd pine4.40
Edit the file "imap/src/osdep/unix/Makefile":
chmod +w imap/src/osdep/unix/Makefile.ssl
emacs imap/src/osdep/unix/Makefile.ssl
Near the top, these are the two lines you need to change:
Save the file.

Now, make a symlink to the openldap source in your pine directory:

ln -s /PATH/TO/openldap-2.0.15 ldap
Oh, and let's fix the crashing-on-subshell problem. edit pico/osdep/os-osx.h and around line 131, uncomment the
#define vfork fork

Let's see if I can get kerberos support working. (This is fixed in 4.41; I got it working in 4.40 by stealing all the gss files from a prerelease 4.41 and using them in the 4.40 tree. This won't work for those of you playing along at home.)

First thing, download the latest package from MIT at We want the "MIT Kerberos for Macintosh 4.0a19 Release", or whatever's current.

Ok, filled out the form, downloaded 4.0.a19 from MIT, installed it.

Make a symlink from /usr to pine4.40/krb5, as per contrib/krb5-setup Woop, except the include files aren't in /usr/include, they're in /usr/include/Kerberos (the libraries are in /usr/lib, though). Bah.

Ok, edit imap/src/osdep/unix/Makefile.gss and add that path to the CFLAGS:

GSSCFLAGS= -I$(GSSDIR)/include -I/usr/include/Kerberos
Also, edit contrib/krb5-setup and change all the instances of ".so" to ".dylib" Also edit imap/src/osdep/unix/Makefile and down in the osx section (around line 528) add the line:
setenv LDFLAGS "-flat_namespace"
(just in case) and build:
./build osx SSLTYPE=unix
Some notes about kerberos and ldap at the UW:

I know very little about kerberos. I'm amazed that I got it working here. Heh. I borrowed this configuration file from another machine, one where kerberos worked. I don't know what any of this means, but it seems to make things work on my machine. This is the file "/Library/Preferences/" from my OS X machine:

 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

 ticket_lifetime = 24000
 default_realm =
 dns_lookup_realm = false
 dns_lookup_kdc = false
 default_tkt_enctypes = des-cbc-crc
 default_tgs_enctypes = des-cbc-crc

[realms] = {
		kdc =
		kdc =
		admin_server =
		kpasswd_server =
		default_domain =
		v4_instance_convert = {
			u =

[domain_realm] = = = =

	krb5_get_tickets = false

 profile = /var/kerberos/krb5kdc/kdc.conf
How it works is that when I log into my mac, I fire up a terminal window and type:
You would want to substitute your own UW NetID for "jdlarios". It asks me for my password, which is my UW NetID password, which I type in. It gives me an error about my KDC not supporting v4, which I ignore. I run the command:
to make sure that I have a ticket. Then I can run pine.

In my pine configuration, I have a mailbox set up as:

(Again, substitute your own NetID.) When I open that mailbox, my kerberos ticket grants me permissions, and I'm automagically connected to my UW deskmail. Pretty cool. If I run kinit again, I'll see another ticket, too.

That's pretty much all I know about kerberos. Here's what I know about ldap:

From the Pine main menu, hit "S" to go to Setup and "D" to go to Directory. Hit "A" to add a new directory. For "ldap-server" enter "". For "search-base" enter "o=University of Washington, c=US". Give it a nickname (mine is uw-ldap), and check the "use-implicitly-from-composer" feature.

Now when you compose mail, you can type a partial address, or a name, and pine will search the ldap directory and give you a list of possible matches. Pretty neat.

And that's about all I know about ldap.