Help for Alpine - Headers
You are in Home > Miscellaneous > Headers


  1. Setting Headers when Composing a Message
  2. Setting Headers when Reading a Message
  3. C-Client Headers


Headers in an e-mail message serve the same purpose that the words written on the outside of an envelope in a letter that you receive in the mail. They tell you about the sender, they tell you about the route that the message took to get to you, and they may even contain advertisement!.

In this section we will see the two sides of header configurations in Alpine, how to configure those that you want to see when reading a message, and configuring those that you want to be read by the addressee of your message.

Setting Headers when Composing a Message

Alpine lets you set most of your headers in any way you want, there are a few which are the exception, which we will talk about here. First let us see the default headers in Alpine, what they mean, and how to use them.

Default Composer Headers

The default composer headers are To, Cc, Attchmnt and Subject. Let us see what they mean.

Hidden Default Composer Headers

There are a number of headers that do not need to be configured in any way, which you can edit, but do not appear in the screen, when you first start composing a message. In order to edit the value of these headers, you must put the cursor in the headers section of the editor and press ^R. Notice that pressing ^R once again will revert you to the state of the headers before you pressed ^R. The following gives you a list of the hidden default composer headers: Bcc:, Lcc:, Newsgrps: and Fcc:.
Below you can read the meaning and use of these headers.

Configuring other Headers

If you want to configure the value of a header that does not appear in the above list, you will need to edit your configuration file. The way to do this is by going to the configuration screen and adding the following text to the Customized Headers option:
Customized Headers = Header_name: Value

The Value part above is not required, nor is the colon after the Header_name. Here are some examples of possible additions you may want to consider

Customized Headers = From: "Your Name" <>,
                  Reply-To: "Your Name" <>,
Note that changing the From field can be disabled during compilation, and it is done by uncommenting the following line to the file include/config.h:
or by adding the option --disable-from-changing to the configure command.

Also note that any header that you add in the customized Headers variable is not visible when you start to compose a message. The are two ways to make it visible. You can either go into the headers section of the message that you are composing and press ^R to make it visible (which will make all headers visible), or you can add the same header to the Default Composer Headers variable. Note that if you leave this variable empty then only a few headers (To:, Cc:, Attchmnt: and Subject:) will be visible by default and adding a value here overrides the default, making the added values here the default. In particular if you are thinking of adding any field here at all, you will probably want to add more than one field at least!.

Note that there are some headers that you can not edit, nor you should add to the list of Customized Headers. The list of headers that can not be edited within Alpine is the following: Message-Id, In-Reply-To, References, Date, Sender, X-Sender, X-X-Sender, Received, Path, Resent-Message-Id, Resent-Date, Resent-From, Resent-Sender, Resent-To, Resent-Cc, Resent-Reply-To, Mime-Version, Content-Type X-Post-Error, X-Reply-Uid, X-Our-Reply-To and X-Cursor-Pos. Below is a table showing a quick explanation of what information contain these headers.
Header Name Description
Message-Id Contains a string which uniquely identifies the message in the internet. In Alpine this field is formed as follows: PINE.SYSTEM.YEAR MONTH DAY TIME_BEGIN 0.PROCESS_NUMBER-100000@localdomain, where SYSTEM is a code for the system that you are using (WNT, CYG, LNX, etc), and YEAR, MONTH, DATE, TIME_BEGIN represent the date when you started composing this message (so that big brother can know how long you spent in e-mail), then comes the process number in your system, and finally the name of the machine that you were using to write this message.
In-Reply-To Contains the Message-Id of the message that is being replied to. If the message is not a reply to another message, this header is not present.
References This header is formed by appending the value of the In-Reply-To header of the message being replied to.
Date This header contains the date that the message was sent. You can not change the value of this header. Its value is obtained from the local machine that you are using to run Alpine (if you are in Seattle, and your server was in London, the time would be Seattle's time). It includes the Time zone.
The Sender header contains the mailbox of the person that sent the message. It differs from the From field in that the From field may contain an invalid mailbox. The Sender field always contains the correct information about who sent the message. It is normally generated when the From field differs from the information that the Sender field would contain if it had to be generated. By default Alpine calls this header X-X-Sender, but if you enable the option [X] Use Sender Instead of X-X-Sender, then Alpine will use the Sender header instead. You can have Alpine not generate this header if you enable the option [X] Do Not Generate Sender Header.
Received The Received: header contains a log of the route that the message took to get to you. It is read, in cronological order, from bottom to top. This means that the last server that it passed through, to get to you, is at the top, while the first one is at the bottom. This header is important when you want to know who sent the spam that you received, as it allows you to trace it back, to its origin.
Path This is the equivalent of the Received header, but it is used for tracing all the servers that a message had to pass in order for you to be able to read it as a USENET post. Again, the last server it passed through is at the beginning of the line, and normally its last field is the name of the person sending the message.
Resent-Message-Id A Resent type header is generated when you bounce a message. In this case, Alpine generates a new Message-Id, which does not replace the Message-Id of the original message, but identifies Alpine as the agent "bouncing" the message.
Resent-Date This is the date when the message was bounced.
Resent-From This is the address and personal name of the person that bounced the message to you. You can not edit the contents of this header, as you can with the From field.
Resent-To This is the personal name and e-mail address of the person you are bouncing a message to.
Resent-Cc The Cc field of the original message that was bounced.
Resent-Reply-To The Reply-To field of the person bouncing the message.
Mime-Version This is a string of the form "X.Y", indicating the version, which indicates the RFC number which Alpine is following. In this case it refers to RFC 1521.
Content-Type This is normally used to indicate how the message is structured. For example if the message contains attachemts, then this is set to "multipart", but if it's only text, it could be "text/plain" or "text/html", etc.
X-Post-Error This header is generated if there was an error to post the message, and is saved in a message in the postponed-msgs folder. The contents of this field are displayed when you continue the message.
X-Reply-Uid Internal header designated to contain information about a message. It is only found in messages in your postponed-msgs folder and its presence indicates that the message being postponed is a reply to another message. It's value is composed of three fields that are structured as follows:
. The value of Field1 indicates the indent-string used to reply, and its length. Field3 contains the mailbox that the message being replied to was found and Field2 contains information on the location of the message being replied to in that mailbox.
X-Our-Reply-To It indicates if there is a Reply-To header or not, by having values Full or Empty. Full indicates that Reply-To exists and is filled, and empty that this header does not exist.
X-Cursor-Pos This header indicates where the cursor was located when the message was postponed. The number represented here indicates how many characters must Alpine advance from the beginning of the message to reach its last known position.

Setting Headers when Reading a Message

You can choose which headers are displayed by default when you view a message. The default is that only the Date:, From:, To:, Cc:, Newsgroups: and Subject:. You can add headers to this list by adding them in the Viewer Headers. Again notice that if adding a value here clears the default and you need to specify all the headers that you want visible in this case.

Finally notice that if you want to see all headers at once, all you need to do is to press H while reading the message that you want to see its headers. Notice that you need to have

[X] enable-full-headers-cmd

enabled in order to be able to do this. You may want to add at least the Followup-To header to this list.

C-Client Headers

The library used to build Alpine also uses and maintains some special headers, one of them is not an "X-" type header. These are Status, X-Status, X-IMAP, X-Keywords and X-UID. Note that even though many of these headers may be present in a message, they are not passed by the library to Alpine, so you can never see them through Alpine. The only way to see them is by editing the file containing the message.

Below is a table describing these headers
Header Name Description
Status This header is used to indicated if a message is old. If the header is absent, then the message is considered new. If the header is present but it does not have any value at all, again the message is considered new. If the value of this header contains the letter R, this indicates that the message has been Read (it really means that Alpine requested to open that message, not that you actually read it. Alpine can not know if you read and understood the message. I'm glad that there is no header for that!), if it contains the letter O, it means that the message is Old, which means that it was present in that mailbox in a previous session. Note that when searching for new messages, Alpine looks for messages without the value of RO in this field (or for messages without this field). In its default configuration, Alpine displays in its index as new (which means that a letter N is used to indicate the status of a message), for messages that do not have a R as the value of this header. This is very misleading, as it confuses some people as to why TAB can not find new messages in the incoming-folders collection, when there are messages marked new in that folder.
X-Status The value of this field contains information of IMAP flags set on the message. The possible values are ADFT. If the value of this header contains the letter A, it means that this message was Answered. The value D indicates that the message was marked Deleted. The value F is used to indicate that the message was Flagged. In Alpine this value is interpreted as if the message is Important, and finally the value T is used to indicate that the message is a drafT. This last flag is not used by Alpine. Notice that you can add Status and X-Status to your Default Composer Headers and send messages to your friends with values in these headers. If they are using the UW-IMAP server, they will see their messages flagged in strange ways. There was a vulnerability found in previous versions of the UW-IMAP server if you sent messages containing one of these headers, with special information in it. This vulnerability is not present in the current version of UW-IMAP.
X-UID This is an internal number of the message in the folder. In the UW imap server (and local folders in Alpine) the first message gets the value 1, the second message 2, and so on. Although, it is only required that the UID be increasing (so it could be indexed by prime numbers only!) The insteresting thing about this header is that even if you delete the message with uid 2, the next message will receive uid equal to 3. Therefore, when reading the list of X-UID you may find evidence that there are missing messages in the folder. If you want to regenerate the UIDs simply give the last message a X-UID equal to 1 and reopen the folder. UIDs will be generated automatically. By the way, UID stands for "Unique IDentifier".
X-Keywords These header contains strings used by the client, in general, to store extra information about the message. For example, a client may use a keyword Later to indicate that it must flag that particular message with a special flag that indicates that the user would read the message later.
X-IMAP This header contains the time that the folder was last accessed by the user (using the server or Alpine) and the last X-UID assigned. This header may also contain keywords used in this folder. This header is only present in the pseudo message that Alpine generates. In fact, if you add this header (and a valid value to it), to the first message of the folder, Alpine will hide that message from you.
X-IMAPbase This header contains the time that the folder was last accessed by the user (using the server or Alpine) and the last X-UID assigned. This header may also contain keywords used in this folder. This header is only present in the first message of the folder and its presence indicates that there is no pseudo message in the folder.
You are in Home > Miscellaneous > Headers