An addressbook serves an analogous purpose than a bookmark file serves for a web browser, it is a place where you store the addresses of people that you usually correspond with, or important information about other people that is relevant to you and needs to be stored.

As we will see Alpine contains an excellent support for its addressbook.

The Basics that You Did Not Want to Know

When you start Alpine for the first time, Alpine creates a file called .addressbook in your home directory. This is the file where Alpine will store all of its data.

You should never edit the .addressbook file, although by curiosity you may want to do it sometimes. If you do so, you should read this before you make any changes by hand.

Every entry in the addressbook file starts with a non space character, which is located in the first character of a line. Alpine does not like long lines in the addressbook and tends to cut lines even for just one entry. When this is done, subsequent lines of the same entry begin with three blank spaces (US-ASCII character 32.)

A typical entry in the addressbook file looks like this:


Here Nick is a word used to distinguish the person, examples of nicks are "Boss", "John", "verylongnick." Notice that "bad nick" is not a good nick, because of the blank space. Nicks are case insensitive, so "VeryLongNick" and "verylongnick" represent the same nick.

Name can be any string, in principle of any length, this is useful if you need to use names that use non English characters like á or ñ etc. The proper form to do it would be using a mime encoding of the character (something like =?ISO-8859-1?Q?=EA), which is a very long string for just one character.

Address is just the e-mail address of the person entered in the nick, it has the form

Fcc is the folder that you will use in order save messages that you send to this person, if you do not wish to save messages sent to this person, there should be an empty string in this field. An empty string is specified by the writing two consecutive double quotes, like this "". You can only specify at most one Fcc.

Comment, useful to save what kind of relation has this person with you (e.g. Lawyer, Bicycle repair, etc) or any other information, like phone number, home address, etc.

The last two fields are completely optional, if they are empty or not defined they are not written, in particular you should not write the <TAB> character, unless the next field is present,

The following are examples of valid entries in the addressbook

Sometimes a person, or the list that you are trying to create, has more than one address, in this case the addresses are separated by commas ",". In order to identify this fact, Alpine encloses the list of addresses between parenthesis, so the Address field looks like


In the case of a list, like above, you can make each entry to have associated a name, so can be replaced by "My friend's name" <>. The list not only can contain addresses, it can also contain other nicks in your addressbook.

Storing your Information in a Remote Place

A remote addressbook is one which is located in an IMAP server. The idea of having a remote addressbook is that it does not matter which client you use to read that addressbook, you will access the same information. In other words, you should be able to access the same addressbook, using Outlook, Eudora, Mutt or Alpine. Notice that all of these clients use different formats for their local addressbook, the idea of IMAP is to set a standard so that not matter which client you use, only the interface, but not the results are different.

The way a remote addressbook looks is like any other folder, the difference is that its messages are the states of the addressbook; each message is a whole addressbook. Different messages contain different versions of the addressbook. You add another version of your addressbook by deleting or adding entries to it.

Another advantage of having an addressbook in an IMAP server is that you can access the same addressbook from anywhere in the world, but most importantly with any client, as long as that client supports remote addressbooks.

When your addressbook is saved remotely, a local copy is saved in your computer too. The copy is saved in a file whose name is ".abXXXXX" The last five Xs correspond to five digits. This copy is used when the copy in the remote folder is not accessible, or a remote copy is not found in the server.

Saving the addressbook in a remote folder is just one of the configuration files that can be saved remotely. In order to find the name of the local backup, Alpine uses the variable "remote-abook-metafile" in your .pinerc file to store the name of a file that contains the information of where local copies of your .addressbook, .pinerc, s/mime certificates, etc. are located. This metafile also has a name of the form .abXXXXX.

Some Handy Tips

  1. You can usually access your addressbook by pressing ^T in any prompt that is asking you to enter an address. This allows you to navigate through your addressbook before you enter any addresses to the prompt. Notice that once you enter to the addressbook, you will have a "L"ist command, which allows you to select the addresses that you want to input in the prompt. These two commands make entering large input in the addressbook, very easy.
  2. When typing a nick or an email address, the TAB key can be pressed to complete the entry. In this case, completion will be done if completing is unambiguous.

Oops, I Deleted an Entry!

Sure, we all do this. The delete button, no matter where is placed, can be used to delete entries that you did not intend to delete. Don't worry, Alpine saves deleted entries days, which gives you enough time to recover it. You can change this limit time by editing the file adrbklib.h and changing the value of the #define constant ONE_HUNDRED_DAYS.

If you delete an entry in your addressbook, through Alpine, then Alpine will move this entry to the top of the addressbook, and add the prefix the string "#DELETED-yy/mm/dd#", where yy/mm/dd is the date that the entry was deleted. If you want to recover this entry delete this prefix.