Review: Pine: Program for Internet News and Email 4.33

Date: 2001.03.23

Latest version: 4.33, released Feb 1 2001.

Pine is a well-known *nix email program which also does Usenet. It is a command-line full-screen application, and runs well in an xterm, too. It's been around since before 1992.

Available as both source and binary (for various platforms, including Microsoft Windows), Pine is a well-supported application with a large user base, FAQs, and mailing lists.

Users can have files and folders, of course, including 'incoming folders'. Automatic saving of seen ('read') messages. It has a primitive filtering capability which can sort incoming mail into the incoming folders. One can, and is advised to, use procmail for this purpose.

Folders support message sorting and selection based on various criteria. This is useful for searching through archived messages. Sub-folders and folders on other servers are supported.

Pine includes good support for IMAP and local mail spool. It can access a couple of different mailbox formats. Lightweight Directory Access Protocol is supported through OpenLDAP.

In these days of HTML email, Pine renders HTML, but never posts HTML. In general, it appears to be very compliant with various RFCs. It even supports the new List-* headers by providing a list management interface.

An ability to define 'Roles' is useful for users who need to write email in different capacities. A role is a set of From: address, realname, and signature, which can be changed depending on a particular message. Thus a user can have different roles depending on the context of the message.

There is an excellent address book feature. This allows one to email address book entries to someone else so that they can be imported straight into Pine. The adressbook file itself is almost plain text and quite readable by humans.

An addressbook entry consists of a person's full name, short name (that can be typed into the from, cc, and bcc fields, and is expanded into the full email address), one or more email addresses, and a File carbon copy entry. This is where all email sent to that address ends up. The default is the default sent-mail folder. A useful comment field is included.

Setup options are overwhelming, but help is available and considerable customization is possible. Pine's help is provided within the program, and can be accessed by pressing ^G or ? at almost any point. It is context-sensitive and hyperlinked.

Custom header definition is a useful feature for those that would have their own additional headers on their messages. You can specify any extra headers, including X-headers. Even the From: address can be changed, but that is configuration-dependant.

Mailing list support in Pine is excellent. Answering mails from mailing list software is easy; Pine makes no assumptions about the reply address and so there are no surprises. The address book has crude mailing list addressing support. One can have small (5-20 is a good range) mailing lists using the Pine address book; any larger or more complex lists should be run by a dedicated list management software.

Pine is primarily an email client; NNTP is possible but one would use a real usenet client for NNTP. According to the feature list, Pine can also do News via IMAP.

Security-wise, Pine appears to be strong. However, some posts on the pine-info list indicated that one or more of the BSDs had claimed buffer overflow vulnerability and rejected Pine for their BSD. Later, it was indicated that one BSD had rejected Pine while another strongly advised against it. The problem appears to be the use of strcpy().

New versions of Pine do not have any major Y2K problems. Pine never auto-executes attachments.

According to its homepage, Pine has won recognition from slashdot for being a well-designed interface, and most used email client (poll). It has won Linux Journal's Reader's Choice for 1997 and 1999, for Best Mailer.

One may wonder why anyone would go for a text-based non-GUI mail client. Pine happens to be a very good and surprisingly user-friendly package. Quick keystroke reference is available on-screen, and detailed help can be found within a few keystrokes. This is one of those programs that focusses on one task, and does it well.

Pine is an excellent email client and this writer recommends it to anyone who spends more than 5 minutes a day on email.

Here's how to get started with Pine. First, get a source tarball from <>

Remember, the following steps are NOT done as root unless otherwise specified.

Untar it with the usual
$ tar -xzvf tarball.tar.gz

I got this directory:

drwxr-xr-x   7 satyap   satyap       1024 Mar  1 23:25 pine4.33/

You'll find a script called `build'. Run this:
$ build help | less

According to this, we look in doc/pine-ports for the right label for our system. I'll assume we're buiding for Linux, but YMMV.

`lnx' looks promising. Look in doc/pine-ports for other ways of building in the crypt() function. Building lnx gives a message that most modern Linux systems require `slx', `lnx' being used for traditional Linux (whatever that means).

So, let's use `slx'
$ build slx

Sit back, watch the screen, get some coffee.

Eventually, you get something like this:

Links to executables are in bin directory:
   text    data     bss     dec     hex filename
3083659  210676   39612 3333947  32df3b bin/pine
 603980    7604    2176  613760   95d80 bin/mtest
 639024    7728    9460  656212   a0354 bin/imapd
 197089    5140    2588  204817   32011 bin/pico
 195109    5012    2588  202709   317d5 bin/pilot

And that's it. Now for the setup and configuration. Go ahead and read the tech-notes in the docs directory.

Okay, now run bin/pine. Hit Return if you're especially enthu about Pine or haven't hit return for this screen before. To skip being counted, hit `e'.

Press `i' to look at your inbox. On a standard Linux and Pine setup, this should show up straightaway. Don't worry if it doesn't. Make sure that you have mail, and hit `msc'. That's m, followed by s, followed by c. Peer at the lower 2 lines of the screen after each key, and you'll see what we mean by "Quick keystroke reference is available on-screen".

Now you should be in the config screen. This is how Pine allows you to edit the ~/.pinerc file, which is the user's pinerc. The system pinerc can be in several places, and there may be a conf file involved, so check the tech-notes.

Okay. Make sure to set personal-name (`Satya' for me), user-domain (`' in my case), and smtp-server (I use `localhost' as I run sendmail on the same box).

If your mail isn't showing up in the inbox, try setting inbox-path here. These settings should be enough to get started, but read the help for all the others as well. Note, on the second last line of the screen, the help key is `?'. That's context-sensitive help. Use it often. Watch the bottom two lines at all times, there's a lot going on there.

The bin directory also holds an IMAP daemon (to which Pine can connect, to read mail on the server directly), a small text editor caled `pico', a simple file browser called `pilot', and an impenetrable program `mtest' which we don't need to use.

Note: If you are already running an older version of Pine, do not install the new version! First make sure it is running satisfactorily. The usual way to do this is to rename the older executable to, for example, `pine-old' and the latest (here we have 4.33) to `pine4.33', and add a symlink:
$ ln -s pine4.33 pine

Again, do this only if you are using an older pine version and want to upgrade.

Alternatively, you can simply run the new pine from bin/pine, where the build program put it. Final installation requires it to go in one of the directories on system path, perhaps /usr/local/bin or ~/bin. Ask your sysadmin or local LUG for details.

Copyright © Satya 2001. All Rights Reserved.

Back to Satya's articles list