ezmlm-get(1) ezmlm-get(1) NNAAMMEE ezmlm-get - handles mailing list archive retrieval and digests SSYYNNOOPPSSIISS eezzmmllmm--ggeett [ --bbBBccCCppPPssSSvvVV ][ --ff _f_o_r_m_a_t ] _d_i_r [ _d_i_g_e_s_t_c_o_d_e_[_f_] ] OOPPTTIIOONNSS --bb (Default.) Copy administrative information and the request to the bottom of replies. This informs the recipient of other com- mands, and allows some error tracking in case the recipient did not originate the request. --BB Suppress the normal administrative information and request copy. This may make it harder for the recipient to diagnose problems and learn commands. --cc (Default.) Process and reply to commands (does not affect digests). --CC Ignore all commands except digest. --ff _f_o_r_m_a_t eezzmmllmm--ggeett will use _f_o_r_m_a_t as the default format for all returned message collections. The default is ’m’ for MIME with a header subset (see below). Format specifiers send with individual requests override the default set with the --ff switch. --pp -get, -index, and -thread commands are available to all users, provided other flags are permissive. This overrides normal behavior, which is to allow archive retrieval only to modera- tors, when _d_i_r//ppuubblliicc does not exist. This is useful to set up non-public lists that still give users archive access. --PP -get, -index, and -thread commands are available only to modera- tors, even if _d_i_r//ppuubblliicc exists. The --CC and --ss flags can restrict this further. This is useful for public lists with archive retrieval restricted to a subset of users (moderators). --ss -get, -index, and -thread requests are processed only if SSEENNDDEERR is a subscriber. --SS (Default.) Anyone can issue -get, -index, and -thread requests. --vv Print version info. --VV Print version info. DDEESSCCRRIIPPTTIIOONN eezzmmllmm--ggeett handles archive retrieval and optionally makes and sends out digests for the mailing list stored in _d_i_r. Subscribers of the digest list are stored in _d_i_r//ddiiggeesstt//ssuubbssccrriibbeerrss//. The contents of _d_i_r//hheeaaddeerraadddd are added to the header of outgoing mes- sages. eezzmmllmm--ggeett is normally invoked from a ..qqmmaaiill((77)) file. It reads a mail message from its standard input, and a mail envelope from the SSEENNDDEERR, LLOOCCAALL, and HHOOSSTT environment variables. eezzmmllmm--ggeett uses LLOOCCAALL to determine where it is invoked. If LLOOCCAALL is the list local name only, eezzmmllmm--ggeett assumes it is run from _d_i_r//eeddiittoorr to produce a digest. The digest is sent directly to the digest list sub- scribers. If LLOOCCAALL is empty or undefined, eezzmmllmm--ggeett assumes it is run from the command line or a script. In this case it behaves as if run from _d_i_r//eeddiittoorr and sends out a digest to the digest subscribers. Otherwise, eezzmmllmm--ggeett expects LLOOCCAALL to be of the form _l_i_s_t--_a_c_t_i_o_n. Here _l_i_s_t is the first line of _d_i_r//iinnllooccaall and _a_c_t_i_o_n is a request. The output is sent to the envelope sender. eezzmmllmm--ggeett checks _a_c_t_i_o_n for ddiigg.._d_i_g_e_s_t_c_o_d_e, iinnddeexx, tthhrreeaadd, and ggeett. If _a_c_t_i_o_n is one of these, eezzmmllmm--ggeett handles the request and sends a reply. If successful, it exits 99 (ignore remaining ..qqmmaaiill((77)) file entries). If _a_c_t_i_o_n is not one of these, eezzmmllmm--ggeett exits 0 (success) to pass the message on to later handlers, such as eezzmmllmm--mmaannaaggee((11)). eezzmmllmm--ggeett expects HHOOSSTT to match the first line of _d_i_r//iinnhhoosstt. eezzmmllmm--ddiigg.._d_i_g_e_s_t_c_o_d_e returns a digest of messages received since the last digest, unless numerical arguments are given. _d_i_g_e_s_t_c_o_d_e must be alphanumeric, and match (case-insensitive) _d_i_g_e_s_t_c_o_d_e on the eezzmmllmm--ggeett command line. Otherwise, the request will be ignored. This is to restrict digest creation. The body of the requesting message up to the first line starting with ’-’ is copied into the _a_d_m_i_n_i_s_t_r_i_v_i_a section of the digest. This is followed by the contents of _d_i_r//tteexxtt//ddiiggeesstt, if this file exists. NNoottee:: Anyone who can read your _d_i_r//mmaannaaggeerr file, digest-requesting scripts, or mail log knows the _d_i_g_e_s_t_c_o_d_e and can trigger digests. eezzmmllmm--ggeett copies _d_i_r//mmaaiilliinngglliisstt into a MMaaiilliinngg--LLiisstt field in its response. If the incoming message has a MMaaiilliinngg--LLiisstt field, eezzmmllmm--ggeett refuses to respond. eezzmmllmm--ggeett also refuses to respond to bounce mes- sages. If _d_i_r//lliissttiidd exists, eezzmmllmm--ggeett will assume that the format is correct and create a ‘‘List-ID:’’ header by placing the contents after the text ‘‘List-ID: ’’. If _d_i_r//qqmmqqppsseerrvveerrss exists, eezzmmllmm--ggeett wwiillll uussee qqmmaaiill--qqmmqqpp((11)) to send digests. Other messages are sent by the normal qmail mechanism. If _d_i_r//ppuubblliicc does not exist, eezzmmllmm--ggeett rejects all archive retrieval attempts, unless the --pp command line switch is used. Archive retrieval actions can be of the form aaccttiioonn[[ff]], aaccttiioonn[[ff]].._n_u_m or aaccttiioonn[[ff]].._n_u_m___n_u_m_2, where _n_u_m is the message number for the action or _n_u_m___n_u_m_2 the range of message numbers for the action. ff is an optional format specifier for _-_g_e_t, _-_t_h_r_e_a_d, and _-_d_i_g requests. It is allowed, but ignored for _-_i_n_d_e_x requests. Currently, the follow- ing are allowed: rr rfc1153. This is a ‘‘plain’’ non-MIME format for dumb clients. mm (Default.) MIME _m_u_l_t_i_p_a_r_t_/_d_i_g_e_s_t with a subset of ordered head- ers sorted. Currently, the following headers are included in the order listed: Date:, To:, From:, Reply-To:, Cc:, MIME-Ver- sion:, Content-Type:, Message-ID:, and Keywords:. This can be customized with the optional file _d_i_r//ddiigghheeaaddeerrss, which should contain the desired headers up to but not including the colon. The format is no longer compliant with rfc1153, as the rfc1153 format is incompatible with rfc2046, which which the format is (should be) compatible. xx MIXED: This is the same as the default MIME format, except that the Content-Type is _m_u_l_t_i_p_a_r_t_/_m_i_x_e_d. This helps circumnavigate a Pine bug: when the digest is content-transfer-encoded, Pine will refuse to display the initial text/plain part of a _m_u_l_t_i_- _p_a_r_t_/_d_i_g_e_s_t message, but display the same part of a _m_u_l_t_i_- _p_a_r_t_/_m_i_x_e_d message. Some MUAs for some strange reason treat the two multipart formats differently. In some cases, ‘‘x’’ works better than ‘‘m’’. vv VIRGIN: This is MIME _m_u_l_t_i_p_a_r_t_/_d_i_g_e_s_t with messages returned without any header filtering. nn NATIVE: This is VIRGIN format without threading, i.e. messages are presented in numerical order and the message index is sup- pressed. For flexibility and backwards compatibility, the ’.’ separating the action from the first argument can be replaced by ’-’, or omitted. Any non-alphanumeric character can separate _n_u_m_2 from _n_u_m. If _a_c_t_i_o_n is _d_i_g_._d_i_g_e_s_t_c_o_d_e, eezzmmllmm--ggeett returns a digest of the messages received since the last digest, and updates the digest issue counter. If _a_c_t_i_o_n is _g_e_t, eezzmmllmm--ggeett sends back message(s) _n_u_m or _n_u_m through _n_u_m_2. from _d_i_r//aarrcchhiivvee//. If _n_u_m is omitted and _d_i_r//ddiiggnnuumm does not exist or is 0, the latest HISTGET message (default 30) are returned. Otherwise, the messages since the latest digest are returned including the last message in that digest, so that always at least 1 message is send. If the number of messages exceeds MAXGET (default 100), only the MAXGET last messages are returned. if _n_u_m is greater than the latest message in the archive _and_ _n_u_m_2 is specified, the latest messages back to HISTGET before the end of the latest digest up to MAXGET mes- sages are returned. This is a good way of always getting at least the latest 30 messages without knowing the latest message number. A link with such a command could be put into e.g. _d_i_r//tteexxtt//ssuubb--ookk. _n_u_m and _n_u_m_2 are adjusted to make both > 0, and _n_u_m_2 >= _n_u_m. If either is greater than the largest message number processed, it is silently set to the largest message number. At most 100 messages are returned. If _a_c_t_i_o_n is iinnddeexx_, eezzmmllmm--ggeett sends back the subjects and authors of the message(s) _n_u_m or _n_u_m through _n_u_m_2 in sets of 100 from _d_i_r//aarrcchhiivvee//. _n_u_m and _n_u_m_2 are reasonable adjusted as for ’get’. No warnings are sent. At most 20 sets of 100 message entries are returned per request. If _n_u_m is omitted, eezzmmllmm--ggeett returns the last 100-200 mes- sage entries, which automatically gives information about the last mes- sage number. If _a_c_t_i_o_n is tthhrreeaadd_, eezzmmllmm--ggeett sends back the message(s) that have an index subject entry identical to that of message _n_u_m from _d_i_r//aarrcchhiivvee//. If _n_u_m_2 is given it is ignored. If _n_u_m is out of range, and error mes- sage is returned. The message range scanned for the subject is limited to 2000 messages before and after the master message, i.e. the tthhrreeaadd argument. This limit protects very large archives. Most threads are expected to be considerably more short-lived. In the unlikely event that there are further messages, these can be retrieved by a second request for the highest/lowest message returned in the first request. CCHHAARRAACCTTEERR SSEETTSS If _d_i_r//cchhaarrsseett exists, eezzmmllmm--ggeett will use the character set listed for all messages. Otherwise, the default ‘‘us-ascii’’ will be used. The character set can be suffixed by ‘‘:’’ followed by a code. If the code is ‘‘Q’’, outgoing messages are sent as ‘‘Quoted-Printable’’, if it is ‘‘B’’ they are sent ‘‘base64’’ encoded. Otherwise, text is sent as is. FFIILLEESS _d_i_r//ddiiggnnuumm The last message included in the latest normal mode digest. _d_i_r//ddiiggiissssuuee The issue number of the latest normal mode digest. _d_i_r//tteexxtt//ggeett--bbaadd Returned if a/the message cannot be found. _d_i_r//tteexxtt//ddiiggeesstt Copied into the _A_d_m_i_n_i_s_t_r_i_v_i_a section of digests after the body of the requesting message. _d_i_r//cchhaarrsseett The character set used for all eezzmmllmm--ggeett messages (see above). If not present, the default, ‘‘us-ascii’’, is used without encoding. BBUUGGSS The digest format per rfc2046 should (but is not required to) be multi- part/mixed with the table-of-contents a text/plain part, and the entire remainder of the digest a multipart/digest part. The multipart/digest in turn should contain all the messages. Many MUA’s fail to split out the individual messages from such a hierarchy, so the format used by eezzmmllmm--ggeett is a simple multipart/digest, explicitly typing the table-of- contents to text/plain, with the ‘‘x’’ format changing the mail con- tent-type to multipart/mixed. SSEEEE AALLSSOO ezmlm-make(1), ezmlm-manage(1), ezmlm-send(1), ezmlm(5), qmail-com- mand(8), qmail-qmqp(1) ezmlm-get(1)