Standards, Environments, and Macros qmail-header(5) NNNNAAAAMMMMEEEE qmail-header - format of a mail message OOOOVVVVEEEERRRRVVVVIIIIEEEEWWWW At the top of every mail message is a highly structured hhhheeeeaaaaddddeeeerrrr. Many programs expect the header to carry certain information, as described below. The main function of qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt is to make sure that each outgoing message has an appropriate header. For more detailed information, see hhhhttttttttpppp::::////////ppppoooobbbbooooxxxx....ccccoooommmm////~~~~ddddjjjjbbbb////pppprrrroooottttoooo////iiiimmmmmmmmhhhhffff....hhhhttttmmmmllll. MMMMEEEESSSSSSSSAAAAGGGGEEEE SSSSTTTTRRRRUUUUCCCCTTTTUUUURRRREEEE A message contains a series of _h_e_a_d_e_r _f_i_e_l_d_s, a blank line, and a _b_o_d_y: Received: (qmail-queue invoked by uid 666); 30 Jul 1996 11:54:54 -0000 From: djb@silverton.berkeley.edu (D. J. Bernstein) To: fred@silverton.berkeley.edu Date: 30 Jul 1996 11:54:54 -0000 Subject: Go, Bears! I've got money on this one. How about you? ---Dan (this is the third line of the body) Each header field has a _n_a_m_e, a colon, some _c_o_n_t_e_n_t_s, and a newline: Subject: Go, Bears! The field contents may be folded across several lines. Each line past the first must begin with a space or tab: Received: (qmail-queue invoked by uid 666); 30 Jul 1996 11:54:54 -0000 The field name must not contain spaces, tabs, or colons. Also, an empty field name is illegal. qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt does not allow field names with unprintable characters. Case is irrelevant in field names: ssssuuuubbbbjjjjeeeecccctttt and SSSSUUUUBBBBJJJJEEEECCCCTTTT and SSSSuuuuBBBBjjjjEEEEccccTTTT have the same meaning. AAAADDDDDDDDRRRREEEESSSSSSSS LLLLIIIISSSSTTTTSSSS Certain fields, such as TTTToooo, contain _a_d_d_r_e_s_s _l_i_s_t_s. An address list contains some number of _a_d_d_r_e_s_s_e_s or _a_d_d_r_e_s_s _g_r_o_u_p_s, separated by commas: SunOS 5.11 Last change: 1 Standards, Environments, and Macros qmail-header(5) a@b, c@d (Somebody), A Person , random group: g@h, i@j;, k@l An _a_d_d_r_e_s_s _g_r_o_u_p has some text, a colon, a list of addresses, and a semicolon: random group: g@h, i@j; An address can appear in several forms. The most common form is _b_o_x@_h_o_s_t. Every address must include a host name. If qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt sees a lone box name it adds the _d_e_f_a_u_l_t _h_o_s_t _n_a_m_e. All host names should be fully qualified. qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt appends the _d_e_f_a_u_l_t _d_o_m_a_i_n _n_a_m_e to any name without dots: djb@silverton -> djb@silverton.berkeley.edu It appends the _p_l_u_s _d_o_m_a_i_n _n_a_m_e to any name that ends with a plus sign: eric@mammoth.cs+ -> eric@mammoth.cs.berkeley.edu A host name may be a dotted-decimal address: djb@[128.32.183.163] RFC 822 allows mailbox names inside angle brackets to include _s_o_u_r_c_e _r_o_u_t_e_s, but qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt strips all source routes out of addresses. SSSSEEEENNNNDDDDEEEERRRR AAAADDDDDDDDRRRREEEESSSSSSSSEEEESSSS qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt looks for sender address lists in the following fields: SSSSeeeennnnddddeeeerrrr, FFFFrrrroooommmm, RRRReeeeppppllllyyyy----TTTToooo, RRRReeeettttuuuurrrrnnnn----PPPPaaaatttthhhh, RRRReeeettttuuuurrrrnnnn---- RRRReeeecccceeeeiiiipppptttt----TTTToooo, EEEErrrrrrrroooorrrrssss----TTTToooo, RRRReeeesssseeeennnntttt----SSSSeeeennnnddddeeeerrrr, RRRReeeesssseeeennnntttt----FFFFrrrroooommmm, RRRReeeesssseeeennnntttt---- RRRReeeeppppllllyyyy----TTTToooo. If there is no FFFFrrrroooommmm field, qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt adds a new FFFFrrrroooommmm field with the name of the user invoking qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt.... RFC 822 requires that certain sender fields contain only a single address, but qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt does not enforce this res- triction. RRRREEEECCCCIIIIPPPPIIIIEEEENNNNTTTT AAAADDDDDDDDRRRREEEESSSSSSSSEEEESSSS qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt looks for recipient address lists in the fol- lowing fields: TTTToooo, CCCCcccc, BBBBcccccccc, AAAAppppppppaaaarrrreeeennnnttttllllyyyy----TTTToooo, RRRReeeesssseeeennnntttt----TTTToooo, RRRReeeesssseeeennnntttt----CCCCcccc, RRRReeeesssseeeennnntttt----BBBBcccccccc. Every message must contain at least one TTTToooo or CCCCcccc or BBBBcccccccc. qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt deletes any BBBBcccccccc field. If there is no TTTToooo or CCCCcccc SunOS 5.11 Last change: 2 Standards, Environments, and Macros qmail-header(5) field, qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt adds a line Cc: recipient list not shown: ; This complies with RFC 822; it also works around some strange sssseeeennnnddddmmmmaaaaiiiillll behavior, in case the message is passed through sssseeeennnnddddmmmmaaaaiiiillll on another machine. SSSSTTTTAAAAMMMMPPPPSSSS Every message must contain a DDDDaaaatttteeee field, with the date in a strict format defined by RFC 822. If necessary qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt creates a new DDDDaaaatttteeee field with the current date (in GMT). Every message should contain a MMMMeeeessssssssaaaaggggeeee----IIIIdddd field. The field contents are a unique worldwide identifier for this message. If necessary qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt creates a new MMMMeeeessssssssaaaaggggeeee----IIIIdddd field. Another important field is RRRReeeecccceeeeiiiivvvveeeedddd. Every time the message is sent from one system to another, a new RRRReeeecccceeeeiiiivvvveeeedddd field is added to the top of the message. qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt does not create any RRRReeeecccceeeeiiiivvvveeeedddd fields. RRRREEEESSSSEEEENNNNTTTT MMMMEEEESSSSSSSSAAAAGGGGEEEESSSS A message is _r_e_s_e_n_t if it contains any of the following fields: RRRReeeesssseeeennnntttt----SSSSeeeennnnddddeeeerrrr, RRRReeeesssseeeennnntttt----FFFFrrrroooommmm, RRRReeeesssseeeennnntttt----RRRReeeeppppllllyyyy----TTTToooo, RRRReeeesssseeeennnntttt----TTTToooo, RRRReeeesssseeeennnntttt----CCCCcccc, RRRReeeesssseeeennnntttt----BBBBcccccccc, RRRReeeesssseeeennnntttt----DDDDaaaatttteeee, RRRReeeesssseeeennnntttt---- MMMMeeeessssssssaaaaggggeeee----IIIIDDDD. If a message is resent, qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt changes its behavior as follows. It deletes any RRRReeeesssseeeennnntttt----BBBBcccccccc field (as well as any BBBBcccccccc field); if there are no RRRReeeesssseeeennnntttt----TTTToooo or RRRReeeesssseeeennnntttt----CCCCcccc fields, qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt adds an appropriate RRRReeeesssseeeennnntttt----CCCCcccc line. It does _n_o_t add a CCCCcccc line, even if neither TTTToooo nor CCCCcccc is present. If there is no RRRReeeesssseeeennnntttt----FFFFrrrroooommmm field, qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt adds a new RRRReeeesssseeeennnntttt----FFFFrrrroooommmm field. It does _n_o_t add a new FFFFrrrroooommmm field. qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt adds RRRReeeesssseeeennnntttt----DDDDaaaatttteeee if one is not already present; same for RRRReeeesssseeeennnntttt----MMMMeeeessssssssaaaaggggeeee----IIIIdddd. It does _n_o_t add new DDDDaaaatttteeee or MMMMeeeessssssssaaaaggggeeee----IIIIdddd fields. OOOOTTTTHHHHEEEERRRR FFFFEEEEAAAATTTTUUUURRRREEEESSSS Addresses are separated by commas, not spaces. When qqqqmmmmaaaaiiiillll---- iiiinnnnjjjjeeeecccctttt sees an illegal space, it inserts a comma: djb fred -> djb, fred qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt removes all RRRReeeettttuuuurrrrnnnn----PPPPaaaatttthhhh header fields. qqqqmmmmaaaaiiiillll----iiiinnnnjjjjeeeecccctttt also removes any CCCCoooonnnntttteeeennnntttt----LLLLeeeennnnggggtttthhhh fields. SunOS 5.11 Last change: 3 Standards, Environments, and Macros qmail-header(5) SSSSEEEEEEEE AAAALLLLSSSSOOOO addresses(5), envelopes(5), qmail-inject(8) SunOS 5.11 Last change: 4