Subject: v25i039: listserv5.31 - mailing list management system, Part05/06 Newsgroups: comp.sources.unix Approved: vixie@pa.dec.com Submitted-By: tasos@cs.bu.edu Posting-Number: Volume 25, Issue 39 Archive-Name: listserv5.31/part05 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'doc/server.nr' <<'END_OF_FILE' X X X server(1) USER COMMANDS server(1) X X X NNNNAAAAMMMMEEEE X start - start/stop the server system X SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS X ssssttttaaaarrrrtttt [----cccc] [----rrrr] [----kkkk] X NNNNAAAAMMMMEEEE X serverd - background daemon X SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS X sssseeeerrrrvvvveeeerrrrdddd [----1111] [----eeee] [----llll llllooooaaaadddd] X NNNNAAAAMMMMEEEE X list - process a specified discussion list X SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS X lllliiiisssstttt ----LLLL [----1111] [----eeee] [----ssss] [----pppp] [----mmmm ####] [----ffff] [----vvvv] X [----DDDD] X NNNNAAAAMMMMEEEE X listserv - process requests sent to the server X SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS X lllliiiissssttttsssseeeerrrrvvvv [----1111] [----eeee] [----nnnn] {[----rrrr ]}* {[----dddd ]}* [----DDDD] X OOOOVVVVEEEERRRRVVVVIIIIEEEEWWWW X This is a system that implements various discussion lists X with one list server. It is automated, and obliterates the X need for user intervention and maintenance of multiple X aliases of the form "list, list-owner, list-request", etc. X There is support provided for archives, moderated lists, X peer lists, news connections and gateways, and mail queuing. X DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN:::: ssssttttaaaarrrrtttt X _s_t_a_r_t is used to start or stop the discussion list server X system. When starting the system, any previous server X processes still running are killed, all necessary lock files X are created, any previous reports are archived into files X with extension ._a_c_c, new files and directories are created X for any new discussion lists, and _s_e_r_v_e_r_d is spawned. _s_t_a_r_t X reads the _c_o_n_f_i_g file (see below), and should always be run X from the server account (see below). X X The following command line options are recognized: X X -c Suppress confirmation when killing processes. X X -k Just kill any old server system processes and exit. X X -r Restrict reporting to stdout. X X X X X Anastasios Kotsikonas 1 X X X X X X server(1) USER COMMANDS server(1) X X X DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN:::: sssseeeerrrrvvvveeeerrrrdddd X _s_e_r_v_e_r_d silently looks for any new messages for the list X server and for any of the supported discussion lists. It X then spawns _l_i_s_t_s_e_r_v and/or _l_i_s_t as necessary, and sleeps X until the message(s) is (are) processed. _s_e_r_v_e_r_d reads the X _c_o_n_f_i_g file (see below). X X The following command line options are recognized: X X -1 Execute only once -- to be used with cron. X X -e Echo reports to the screen. X X -l load X Enforce load restrictions; _s_e_r_v_e_r_d will postpone spawn- X ing if the system load is above the limit specified. X DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN:::: lllliiiisssstttt X _l_i_s_t distributes the message(s) sent to _l_i_s_t__a_l_i_a_s@_s_i_t_e; the X file ".ignored" in the list's subdirectory is used to filter X out any unwanted messages (see below). Messages from mailer X daemons are forwarded to _m_a_n_a_g_e_r (see description of the X _c_o_n_f_i_g file), whereas messages from non-subscribers are X returned to the original senders (the -f flag overrides X this). Messages from news groups are distributed only to X local subscribers and peer lists. Messages from peers are X distributed to local subscribers and possibly posted to news X groups. Finally, messages from local subscribers are distri- X buted locally, copies are sent to all peers, and are possi- X bly posted to news groups. X X Email from one or more subscribers may be selectively dis- X tributed to an alternate list of recipients, by way of res- X tricted mail (see below), in which case mail will not be X distributed to the regular subscribers. X X The following command line options are recognized: X X -L LIST_ALIAS X Process any messages sent to this _L_I_S_T__A_L_I_A_S -- X list_alias should all be in capital letters. X X -1 Execute only once; process the discussion list and X return control to _s_e_r_v_e_r_d; any new messages that may X have arrived in the meantime will be processed at a X later time. Without this option, _l_i_s_t will be listening X for messages for the specified list for ever. X X -e Echo reports to the screen. X X -s By default, only subscribers can send messages to a X list. This option turns off checking for subscriptions. X X X Anastasios Kotsikonas 2 X X X X X X server(1) USER COMMANDS server(1) X X X X -p By default, replies to messages posted to news groups X go to the list; this option forces replies to be for- X warded to the original author. X X -m number X Normally, each outgoing message has one recipient. This X flag switches to multi-recipient outgoing messages and X specifies the _n_u_m_b_e_r of recipients to be included in X these messages. X X -f Forward any messages from non-subscribers to _m_a_n_a_g_e_r. X By default, they are returned to the sender. X X -v Print version information. X X -r Restricted mail: _l_i_s_t will look at the ".restricted" X file (see below) to get the name of the alternate reci- X pients file. If the sender is listed in that ".res- X tricted" file, his messages will be distributed to X users listed in the alternate recipients file. X X -D Turns debugging on. When the _s_y_s_t_e_m mailmethod is used, X a copy of the last SMPT transaction can be found in the X files /usr/server/sent and /usr/server/received. X DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN:::: lllliiiissssttttsssseeeerrrrvvvv X _l_i_s_t_s_e_r_v processes user requests sent to _l_i_s_t_s_e_r_v@_s_i_t_e. X Each request should appear in a separate line with any pos- X sible arguments. The file ".ignored" is used in the X system's home directory to filter out unwanted messages. The X sender is notified of the first invalid request; all subse- X quent requests are ignored. For each successfully completed X request, a confirmation is sent back to the sender. _l_i_s_t_s_e_r_v X stops reading requests when it encounters the string "--" in X a line by itself, which on most systems signifies the start X of the .signature message. _l_i_s_t_s_e_r_v reads the _c_o_n_f_i_g file. X The following requests are recognized (requests may be X abbreviated): X X _h_e_l_p [request] X Send a help message on all valid requests or the X selected one only. X X _s_e_t list [option value] X Without the optional arguments, return the current X values for all options set for _l_i_s_t; otherwise, set X subscriber preferences for _l_i_s_t; X X option can be: X X _m_a_i_l: set mail preferences. X X X X Anastasios Kotsikonas 3 X X X X X X server(1) USER COMMANDS server(1) X X X X value can be: X X _a_c_k: send a copy of the current message to the origi- X nal sender. X X _n_o_a_c_k: do not send a copy of the current message to X the original sender. This is the default for newly X subscribed users. X X _p_o_s_t_p_o_n_e: do not send any messages to the particular X subscriber until he changes status again. X X _s_u_b_s_c_r_i_b_e list full_name X Subscribe the sender to _l_i_s_t (note, his email address X is used for subscription, not his _f_u_l_l__n_a_m_e). X X _u_n_s_u_b_s_c_r_i_b_e list X Remove the sender from the specified _l_i_s_t. X X _s_i_g_n_o_f_f list X Alias of the unsubscribe request. X X _r_e_c_i_p_i_e_n_t_s list X Get a list of all subscribers to _l_i_s_t. The request is X also forwarded to all peer lists, and the servers han- X dling them will respond accordingly. The user is noti- X fied when this request is being forwarded. X X _r_e_v_i_e_w list X Alias of the recipients request. X X _i_n_f_o_r_m_a_t_i_o_n list X Get an informative message about a particular _l_i_s_t. X X _s_t_a_t_i_s_t_i_c_s list [subscriber email address(es)] X Obtain a count of messages sent per subscriber to the X specified _l_i_s_t, or by those subscribers given as argu- X ment only (wild characters are supported). The request X is also forwarded to all peer lists and the servers X handling them will respond accordingly. The user is X notified when this request is being forwarded. X X _l_i_s_t_s X Obtain a list of discussion list addresses that are X serviced by this system, with a small description of X their purpose. X X _i_n_d_e_x [archive] X Obtain an index of files in the specified _a_r_c_h_i_v_e (or X the master archive if none specified) and all of its X subarchives. X X X X Anastasios Kotsikonas 4 X X X X X X server(1) USER COMMANDS server(1) X X X X _g_e_t archive file [parts] X Get the specified _f_i_l_e from the _a_r_c_h_i_v_e given. The file X may have been split into smaller parts due to its size, X in which case each part will be sent in a different X email message. If only certain _p_a_r_t_s are desired, they X may be given as arguments (numbers, separated by spaces X -- ranges are not recognized). X X _r_e_l_e_a_s_e X Get information about the current release of this list- X serv system. X X The following command line options are recognized: X X -1 Execute only once; process any requests and return con- X trol to _s_e_r_v_e_r_d; any new messages that may have arrived X in the meantime will be processed at a later time. X X -e Echo reports to the screen. X X -n By default, peer servers are notified upon _s_t_a_t_i_s_t_i_c_s X and _r_e_c_i_p_i_e_n_t_s requests. The system defines a protocol X for avoiding loops only if connected to servers running X this or a later version. If you detect loops with X other servers, you should use this option to turn off X notification of peer servers. X X -r request X Place a restriction on the specified server _r_e_q_u_e_s_t as X outlined above. If the number of users on the system X at the time the request is about to be processed is X above the limit given in the _c_o_n_f_i_g file (using the X _r_e_s_t_r_i_c_t_i_o_n directive), the request is rejected -- X meant for requests that may take a considerable amount X of resources such as the _s_t_a_t_i_s_t_i_c_s request -- this X option may be repeated any number of times. X X -d request X Disable _r_e_q_u_e_s_t, i.e. make it totally unknown to the X server -- this supersedes any _d_i_s_a_b_l_e directives for X this request in the _c_o_n_f_i_g file, i.e. this request will X not be recognized for any list (see below). This option X may be repeated any number of times. However, help is X still available for that request. X X -D Turns debugging on. When the _s_y_s_t_e_m mailmethod is used, X a copy of the last SMPT transaction can be found in the X files /usr/server/sent and /usr/server/received. X CCCCOOOONNNNFFFFIIIIGGGG X The server system is defined in the _c_o_n_f_i_g file; an example X file is provided with the system. This file is used by X X X Anastasios Kotsikonas 5 X X X X X X server(1) USER COMMANDS server(1) X X X X _s_t_a_r_t, _s_e_r_v_e_r_d, _l_i_s_t and _l_i_s_t_s_e_r_v, and is not a shell X script. The following keywords are recognized: X X _o_r_g_a_n_i_z_a_t_i_o_n name X This defines your organization when posting to news. X X _s_e_r_v_e_r _l_i_s_t_s_e_r_v@site command-line-options X This defines the list server; the first argument is the X full email address of the server (e.g. X listserv@foo.edu) followed by any command line options X to be used (see _l_i_s_t_s_e_r_v above). X X _l_i_s_t list_alias list_alias@site command-line-options X This defines a discussion list; the first argument is X the list's alias in /etc/aliases, /usr/lib/aliases or X /usr/ucblib/aliases (see below), followed by its full X email address, followed by any command line options to X be used (see _l_i_s_t above). X X _s_e_r_v_e_r_d command-line-options X This defines the command line options that _s_t_a_r_t is X supposed to use when spawning _s_e_r_v_e_r_d. X X _r_e_s_t_r_i_c_t_i_o_n nusers X If a restriction is placed on a listserv request (via a X -r command line option), this request defines the X threshold number of users, above which the restriction X will take effect. X X _d_i_s_a_b_l_e list_alias request X The specified server _r_e_q_u_e_s_t is disabled for the speci- X fied list, and all such requests for this list are X rejected. The _l_i_s_t__a_l_i_a_s has to be defined (via a _l_i_s_t X directive) before any requests can be disabled. X X _m_a_n_a_g_e_r email-address@site X This defines the recipient of all error messages; X _e_m_a_i_l-_a_d_d_r_e_s_s can be any valid user name that can be X reached via email by your system. X X _c_o_m_m_e_n_t _s_e_r_v_e_r # Actual comment X X _c_o_m_m_e_n_t list_alias # Actual comment X A 'Comment:' line is included in every outgoing X list/server message, and the text following the pound X sign will be copied every time; note that the pound X sign is mandatory for the definition but will not be X part of the actual string. A list's comment is also X used for the _l_i_s_t_s request to specify the purpose of X the particular discussion list. X X _f_r_e_q_u_e_n_c_y seconds X X X Anastasios Kotsikonas 6 X X X X X X server(1) USER COMMANDS server(1) X X X X How often should _s_e_r_v_e_r_d check for new mail. X X _l_i_m_i_t keyword arguments X Used to set certain limits in the system; valid key- X words are: X X _m_e_s_s_a_g_e: limit the size of distributed messages to a X certain number of bytes, which is the argument fol- X lowing this keyword. A notification is sent back to X the sender, including the first few lines of his/her X original message for reference. X X _o_p_t_i_o_n keyword X This defines a series of system-dependent options; X valid keywords are: X X _s_y_s_v__p_s: the system will use the System V version of X ps. X X _b_s_d__p_s: the system will use the BSD version of ps. X X _b_s_d__m_a_i_l: define it if BSD (UCB) mail is available on X your system; if this is the case, make sure that X /usr/ucb/mail is the path (or a link) to it. X X _b_a_d__t_e_l_n_e_t: if the mail method used (see below) is X 'telnet' and the system seems to send out only one X message and then go to sleep, use this option. X X _p_o_s_t__m_a_i_l: this will force the system to post mes- X sages to news groups (using _i_n_e_w_s), using the groups' X names (e.g. misc.test) X X _g_a_t_e__m_a_i_l: this will force the system to gate mes- X sages to news, using the groups' email addresses. X X _m_a_i_l_m_e_t_h_o_d method [arguments] X Every outgoing message should begin with a line of the X form: X X From listserv@site ... X X or X X From list_alias@site ... X X which depends on the mail _m_e_t_h_o_d used: X X _s_y_s_t_e_m: the recommended method; it provides a unified X approach to sending mail and it has been ported and X tested on lots of systems (see the section X PORT SPECIFIC below). All other mail methods will X X X Anastasios Kotsikonas 7 X X X X X X server(1) USER COMMANDS server(1) X X X X soon become obsolete. In addition, since a full set X of the SMTP protocol is implemented, you will be X notified of invalid addresses and various system X problems. In addition, mail is queued when it cannot X be delivered, in the directory /usr/server/mqueue; X see _q_u_e_u_e(_1) for more information on how to process X the mail queue. X X _t_e_l_n_e_t: to be used only when _s_y_s_t_e_m is inappropriate. X X _e_n_v__v_a_r: usually followed by _L_O_G_N_A_M_E /_b_i_n/_r_m_a_i_l, or X _L_O_G_N_A_M_E /_u_s_r/_l_i_b/_s_e_n_d_m_a_i_l -_b_s (-bs is mandatory) -- X to be used only when the previous methods are inap- X propriate. X SSSSYYYYSSSSTTTTEEEEMMMM SSSSEEEETTTTUUUUPPPP X The server system is installed under the /usr/server direc- X tory, or any other place with /usr/server as a link to it; a X _s_e_r_v_e_r user account has to be setup. The system should be X installed and set up using this account, and always be X started from this account as well. Then, the following X alias has to be defined in /etc/aliases, /usr/lib/aliases X or /usr/ucblib/aliases (depending on your system) for list- X serv: X X listserv: "|/bin/cat >> /usr/server/requests" X X It is important to keep in mind that mailers should convert X any sentences of in-coming messages starting with "From " as X their first word, to ">From ". If this is not the case, then X you should use the script _r_e_f_o_r_m_a_t in /usr/server as fol- X lows: X X listserv: "|/bin/cat | /usr/server/reformat >> /usr/server/requests" X X Special attention has to be paid to directory and file pro- X tections; on some systems sendmail will set uid to server X when delivering mail, and in others it may not (it stays X daemon). The system comes configured with -wx access for X all; if your sendmail sets uid then you may remove these X access permissions. Be advised though that, with these per- X missions granted any user may remove the mail files from the X lists' directories, as well as the requests file. It may X also help to add server to the same group that sendmail X belongs to and force sendmail to set uid and gid. X X The server has to be defined in the _c_o_n_f_i_g file by adding a X _s_e_r_v_e_r directive, as well as any other preferences (serverd, X restriction, manager, comment server, frequency, option, X mailmethod). Once the system is loaded, you will have to X run the script _s_e_t_u_p; this will ensure that all necessary X files and directories are present, and have the right X X X Anastasios Kotsikonas 8 X X X X X X server(1) USER COMMANDS server(1) X X X X permissions. Before starting the system, you may wish to X edit the ".ignored" file in /usr/server. At this point, you X may also wish to alter the help files in /usr/server/help; X each file in that directory corresponds to one of the recog- X nized requests. X X Finally, experiment with the various mail methods described X above, until you get the proper "From " line in the begin- X ning of the outgoing message; for instance, when listserv is X replying to a request, you should see something like "From X listserv@..." as the first line of the header; or when the X list abc is distributing messages, this line should look X like "From abc@...". If you cannot get it to work, i.e. you X get something like "From server@..." then the server system X has to run with superuser privileges. In this case, the X server userid should be the same as root's. Please, also X read the section PORT SPECIFIC below, for suggested mail- X methods. You will not have any of these problems if you use X the _s_y_s_t_e_m mailmethod. X X If this part of the setup is not done properly, peer lists X will not work at all and users may not be able to reply to X the list. As a final note, if _t_e_l_n_e_t does not seem to be X sending any mail, it is a bug with the telnet implementation X on your system: telnet cannot have its input redirected or X piped, and should be reported to your vendor. X AAAADDDDDDDDIIIINNNNGGGG AAAA NNNNEEEEWWWW LLLLIIIISSSSTTTT X To add a new list, first shut the system down by executing X X % _s_t_a_r_t -_k X X Then edit the _c_o_n_f_i_g file and add a line defining the new X list -- you may wish to add a comment and/or disable a few X requests also. A new alias has to be set up in X /etc/aliases, /usr/lib/aliases or /usr/ucblib/aliases of the X following form: X X list_alias: "|/bin/cat >> /usr/server/lists/LIST_ALIAS/mail" X X Note that _l_i_s_t__a_l_i_a_s is all lower case and _L_I_S_T__A_L_I_A_S is all X upper case. Also keep in mind the case of reformating mes- X sages as described above. Finally, restart the system. At X this point, the file ".ignored" in the X /usr/server/lists/LIST_ALIAS directory may be edited to add X more unwanted senders. You should also edit the files ".wel- X come" and ".info" in the list's subdirectory; The former is X included in the return message for a new subscription X request for that list, and the latter is included in the X return message for an _i_n_f_o_r_m_a_t_i_o_n request for that list. X X X X X Anastasios Kotsikonas 9 X X X X X X server(1) USER COMMANDS server(1) X X X AAAADDDDDDDDIIIINNNNGGGG AAAA PPPPEEEEEEEERRRR LLLLIIIISSSSTTTT X Peer lists are discussion lists that happen to be sub- X scribers to one or more of your own discussion lists; they X handle local distribution of messages just like you do at X your own site. Peer lists can be mutual subscribers, so that X a message originating in a peer list gets distributed over X there locally, and a copy is sent to the other for local X distribution, and vice versa. An automatic mechanism is pro- X vided for avoiding loops. A peer list can be added to a X local discussion list by using the script _p_e_e_r: X X peer X X where _L_I_S_T__A_L_I_A_S is a local list alias in capital letters, X _r_e_m_o_t_e _a_l_i_a_s is the peer's alias on the remote machine, X _p_e_e_r _a_d_d_r_e_s_s is taken from the first line of a test message X sent to the server by the peer (the first line may be some- X thing like: "From peer@foo ..." -- see also the discussion X about aliases below), and _r_e_m_o_t_e _l_i_s_t_s_e_r_v _a_d_d_r_e_s_s is the X full email address of the remote server that handles the X remote peer. Peer lists should make sure that only one of X them posts to the same news group(s), and that only one of X them receives articles from the same news X group(s)/gateway(s). Lists handled by the same server can- X not be mutual peers. Finally, peer lists should not be regu- X lar subscribers (the _p_e_e_r script places them in a file X called ".peers"). X PPPPEEEEEEEERRRR SSSSEEEERRRRVVVVEEEERRRRSSSS X The only feature currently available is the forwarding of X any _r_e_c_i_p_i_e_n_t_s and _s_t_a_t_i_s_t_i_c_s requests to the servers han- X dling peer lists. X NNNNEEEEWWWWSSSS GGGGRRRROOOOUUUUPPPPSSSS AAAANNNNDDDD GGGGAAAATTTTEEEEWWWWAAAAYYYYSSSS X A discussion list may be linked with one or more news groups X (or gateways) from which it may receive messages for local X distribution, and/or send messages to the newsgroup(s) for X posting -- in this case only messages from regular sub- X scribers are sent for posting, i.e. no news messages will be X posted to any news groups (or gateways). A news group or X gateway is linked using the script _n_e_w_s: X X news X X where _L_I_S_T__A_L_I_A_S is a local list alias (in capital letters) X that is being linked to the news group, _n_e_w_s _g_r_o_u_p is the X name of the news group (used only when posting) e.g. X misc.test, _e_m_a_i_l _a_d_d_r_e_s_s is the address of the backbone or X moderator of the news group, or the gateway, and it is taken X from the first line of a test message sent to the server by X the group (the first line may be something like: "From X xxx@foo ..." -- see also the discussion about aliases X X X Anastasios Kotsikonas 10 X X X X X X server(1) USER COMMANDS server(1) X X X X below); _m_o_d_e is one of the following: X X receive X The list will only be receiving messages from this news X group and never post to it. This allows access to the X group (or gateway) to send articles to the list. X X send_receive X The list may be receiving messages from this news X group, and it will post to it any messages from regular X subscribers and peer lists (messages from news groups X are never posted to other news groups). This also X allows access to the group (or gateway) to send arti- X cles to the list. X X Of course, the news group's caretaker has to be notified of X the list's address so that articles will indeed be sent to X it. Finally, news groups should not be regular subscribers X (the _n_e_w_s script places them in a file called ".news"). X X If the config option _p_o_s_t__m_a_i_l is used, the system will use X _i_n_e_w_s for posting, and it assumes that the path to it is X /usr/lib/news/inews, so make sure that _i_n_e_w_s resides there, X or a link exists to it. In this case, the group's name is X used for posting (e.g. misc.test). If instead _g_a_t_e__m_a_i_l is X defined, messages will be sent via email to news gateways -- X the _n_e_w_s _g_r_o_u_p name has no significance in this case. X MMMMOOOODDDDEEEERRRRAAAATTTTEEEEDDDD LLLLIIIISSSSTTTTSSSS X The above mechanism can be slightly modified for moderated X lists by simply changing a list's alias slightly: X X list_alias: "|/bin/cat >> /usr/server/lists/LIST_ALIAS/moderated" X X _l_i_s_t distributes messages from a file called _m_a_i_l; by having X incoming messages redirected to the file _m_o_d_e_r_a_t_e_d, you may X edit them (login as server) and save the interesting ones X under _m_a_i_l. X MMMMAAAAIIIILLLL LLLLOOOOOOOOPPPPSSSS X The system uses the following protocol for avoiding mail X loops between a list and news connections: In the header of X the outgoing message an "Originator: " field is added. For X each list plus listserv, a log of the most recent (500) X Message-Id's is kept. Whenever a message is received, the X Originator, Reply-To and Message-Id fields are extracted and X looked up in the ".ignored" and ".message.ids" files in the X list's subdirectory. Gateways that feed back to the list X should preserve at least the Reply-To and Message-Id fields. X The Originator and Message-Id fields are preserved by this X system. A new Reply-To is tacked on when redistributing mail X locally from a peer or a news feed. X X X Anastasios Kotsikonas 11 X X X X X X server(1) USER COMMANDS server(1) X X X X To avoid mail loops when forwarding listserv requests to X peers, the system is looking up the Message-Id field in the X ".message.ids" file in /usr/server. If this field is not X preserved by the peer listserv, I suggest you turn off X request forwarding when connecting with peers served by such X systems, until a unified approach is taken. The Message-Id X field is preserved by this listserv. This system is also X using a special Subject field, totally proprietary and non- X standard, in order to avoid unnecessary forwarding of X requests, thus cutting down on email traffic. X X....IIIIGGGGNNNNOOOORRRREEEEDDDD X As described before, the system's home directory as well as X every list's subdirectory contains a ".ignored" file which X is used to filter out messages sent by certain users. The X default file contains entries for root, server, bin, sys and X uucp; you may wish to add an entry for every list alias that X is defined on your system. A list's ".ignored" file also X contains an entry of its alias and full email address, as X well the server account's full email address. X RRRREEEESSSSTTTTRRRRIIIICCCCTTTTEEEEDDDD MMMMAAAAIIIILLLL X When the -r flag is used with _l_i_s_t, for every message X received its sender is checked against a list of "res- X tricted" email addresses, in the file ".restricted" in the X list's directory -- a subset of the ".subscribers" file. If X a match is found, mail is forwarded to the people listed in X the file following this email address. If no match is found, X the message is distributed to the regular subscribers. Note X that the alternate recipients file should be in the same X format as the ".subscribers". X X....SSSSUUUUBBBBSSSSCCCCRRRRIIIIBBBBEEEERRRRSSSS X The format is as follows: X X One entry per line; each entry is the full email address of X the subscriber as it appears in the "From " field, followed X by the word "ACK" (in which case his/her message will be X sent back to him/her as an acknowledgement) "NOACK" (the X opposite), or POSTPONE (no mail will be sent until the user X changes mode again), followed by the subscriber's name. X X....RRRREEEESSSSTTTTRRRRIIIICCCCTTTTEEEEDDDD X The format is as follows: X X One entry per line; each entry is the full email address of X the subscriber, followed by a file name where email X addresses of recipients are listed (just like in the ".sub- X scribers" file). Example: X X tasos@bucsf.bu.edu /usr/server/lists/LIST_ALIAS/.recipients X X X X Anastasios Kotsikonas 12 X X X X X X server(1) USER COMMANDS server(1) X X X X If the recipient file given is the word "NONE", then no one X will receive any messages. X X....AAAALLLLIIIIAAAASSSSEEEESSSS X It is possible that a subscriber's/peer's/news X group's/gateway's email may arrive using a different path X than registered, which may raise subscription issues. To X work around this, each list provides a ".aliases" file in X its subdirectory, which may contain alternate email X addresses to be used when checking for subscription. The X format is one line per alias with the following information: X X alias_address address_as_subscribed X X Please note that only the subscribed address is used for X sending out email. If someone is experiencing subscription X problems, you may wish to add their alternate email X address(es) in this file. This includes regular subscribers, X news groups, peers and gateways. If the sender is also a X restricted subscriber, do not forget to put another entry in X ".restricted" with the new alternate address. X CCCCOOOOMMMMMMMMUUUUNNNNIIIICCCCAAAATTTTIIIINNNNGGGG X Users send requests to _l_i_s_t_s_e_r_v@_s_i_t_e and public messages to X the various _l_i_s_t__a_l_i_a_s@_s_i_t_e. X AAAARRRRCCCCHHHHIIIIVVVVEEEESSSS X The server has an archiving capability of files; there is a X master archive in /usr/server/archives/listserv where all X subarchives are defined. The archives keep lists of files X that are available to users via a _g_e_t request, and index of X subarchives that are available to users via an _i_n_d_e_x X request. The archived files may not necessarily reside in X the archive directories, as long as the archives know where X they are located. See the man page for _f_a_r_c_h(_1) for more X information. X RRRREEEEPPPPOOOORRRRTTTTSSSS X All programs report to their own files; these are: X X /usr/server/.report.start: generated by _s_t_a_r_t every time the X system is started. X X /usr/server/.report.daemon: messages from _s_e_r_v_e_r_d every time X new mail has arrived. X X /usr/server/.report.server: messages from _l_i_s_t_s_e_r_v every X time new requests are processed. X X /usr/server/.report.list: error messages from _l_i_s_t when X attempting to process public messages. X X X X Anastasios Kotsikonas 13 X X X X X X server(1) USER COMMANDS server(1) X X X X /usr/server/lists/LIST_ALIAS/.report.list: messages from X _l_i_s_t when processing public messages. X X /usr/server/.*.acc: accumulated reports since the system was X first installed. X X /usr/server/lists/*/.*.acc: accumulated reports for each X discussion list. X X Every report includes a time stamp; every list and server X report also includes the actual sender of the message, and X every server report includes all requests made by the X sender. X X Whenever a program dies abnormally (and BSD mail is present) X a message is sent to _m_a_n_a_g_e_r (as defined in _c_o_n_f_i_g). The X message is usually sent by _s_e_r_v_e_r_d which then exits. The X daemon dies with a different message according to the exit X status of the child; the various error conditions that may X occur are: X X Could not open file X /usr/server is not a valid path; file was accidentally X deleted; insufficient access privileges. Run setup and X _s_t_a_r_t. X X Could not lock file X /usr/server is not a valid path; file was accidentally X deleted; insufficient access privileges; another pro- X gram is using the lock file. Run tlock, and if neces- X sary, ulock; then _s_t_a_r_t. X X Command line option error X Check the _c_o_n_f_i_g file and restart. X X Syntax error in file X Check _c_o_n_f_i_g, all reports, .subscriber, .peers and X .news files. X X Could not spawn X No more processes. X X Received system signal X SIGHUP, SIGQUIT, SIGTERM, SIGBUS, SIGSEGV. X XFFFFIIIILLLLEEEESSSS X /usr/server/.awk X awk program for formating the _s_t_a_t_i_s_t_i_c_s request. X X /usr/server/.grep X script used for counting the number of messages sent by X a subscriber. X X X Anastasios Kotsikonas 14 X X X X X X server(1) USER COMMANDS server(1) X X X X /usr/server/.ignored X List of unwanted senders. X X /usr/server/.lock.list X Lock file for _l_i_s_t. X X /usr/server/.lock.server X Lock file for _l_i_s_t_s_e_r_v. X X /usr/server/.lock.serverd X Lock file for _s_e_r_v_e_r_d. X X /usr/server/.message.ids X A database of recent message id's used to detect mail X loops. X X /usr/server/.rep.server.acc X Archived _l_i_s_t_s_e_r_v messages. X X /usr/server/.rep.serverd.acc X Archived _s_e_r_v_e_r_d messages. X X /usr/server/.rep.start.acc X Archived _s_t_a_r_t messages. X X /usr/server/.report.daemon X Current _s_e_r_v_e_r_d messages. X X /usr/server/.report.list X Error messages from _l_i_s_t. X X /usr/server/.report.server X Current _l_i_s_t_s_e_r_v messages. X X /usr/server/.report.start X Last _s_t_a_r_t action (system started or shut down). X X /usr/server/.stats X Script used for the _s_t_a_t_i_s_t_i_c_s request. X X /usr/server/config X The configuration file. X X /usr/server/farch X File archiving utility. X X /usr/server/list X The discussion list program. X X /usr/server/listserv X The system's server. X X X X Anastasios Kotsikonas 15 X X X X X X server(1) USER COMMANDS server(1) X X X X /usr/server/mbox X An archive of all requests sent to date to listserv. X X /usr/server/news X Script used to add a news group to a list. X X /usr/server/peer X Script used to add a peer list. X X /usr/server/queue X The mail queue processing program. X X /usr/server/queued X The mail queue processing daemon. X X /usr/server/reformat X Script used to reformat in-coming messages. X X /usr/server/received X File containing a debug log of the last message distri- X buted when using the 'system' mail method. X X /usr/server/requests X Newly arrived user requests. X X /usr/server/sent X File containing a debug log of the last message distri- X buted when using the 'system' mail method. X X /usr/server/serverd X The system's daemon. X X /usr/server/setup X Setup script. X X /usr/server/start X The system's housekeeping program. X X /usr/server/tlock X Checks for any locked files. X X /usr/server/archives/listserv/INDEX X The master archive index. X X /usr/server/archives/listserv/DIR X Directory of all files available from the master X archive (listserv). X X /usr/server/doc/server.nr X This man page. X X /usr/server/doc/farch.nr X X X Anastasios Kotsikonas 16 X X X X X X server(1) USER COMMANDS server(1) X X X X Man page for the _f_a_r_c_h utility. X X /usr/server/help/* X General and topic-specific help files available upon a X _h_e_l_p request. X X /usr/server/lists/LIST_ALIAS/.aliases X Aliases of email addresses of subscribers. X X /usr/server/lists/LIST_ALIAS/.headers X An archive of who sent each message. X X /usr/server/lists/LIST_ALIAS/.ignored X A list of unwanted senders. X X /usr/server/lists/LIST_ALIAS/.info X Text sent upon an _i_n_f_o_r_m_a_t_i_o_n request. X X /usr/server/lists/LIST_ALIAS/.message.ids X A database of recent message id's used to detect mail X loops. X X /usr/server/lists/LIST_ALIAS/.news X A list of all news groups connected to this alias. X X /usr/server/lists/LIST_ALIAS/.peers X A list of all peer lists for this discussion list, X along with the email addresses of their servers. X X /usr/server/lists/LIST_ALIAS/.rep.list.acc X Archived messages from _l_i_s_t. X X /usr/server/lists/LIST_ALIAS/.report.list X Current messages from _l_i_s_t. X X /usr/server/lists/LIST_ALIAS/.restricted X List of subscribers with alternate recipient files. X X /usr/server/lists/LIST_ALIAS/.subscribers X A list of all subscribers along with preferences. X X /usr/server/lists/LIST_ALIAS/.welcome X Text sent on a _s_u_b_s_c_r_i_b_e request. X X /usr/server/lists/LIST_ALIAS/mail X Newly arrived public messages to be distributed. X X /usr/server/lists/LIST_ALIAS/mbox X An archive of all messages sent to date. X X /usr/server/lists/LIST_ALIAS/moderated X Newly arrived public messages that need to be edited X X X Anastasios Kotsikonas 17 X X X X X X server(1) USER COMMANDS server(1) X X X X before distributed. X X /usr/server/mqueue/* X Queued messages for later delivery. X UUUUPPPPGGGGRRRRAAAADDDDIIIINNNNGGGG X When upgrading, it is not necessary to remove your current X system. In addition, if you are upgrading from: X X 5.2 Use the _s_y_s_t_e_m mailmethod. X X For every list you need to edit X /usr/server/lists/LIST_ALIAS/.ignored and add one more X entry: the full email address of the server account. X X 5.0, 5.1 X For every list you need to edit X /usr/server/lists/LIST_ALIAS/.ignored and add two X entries: the actual list alias, and the full email X address of this list. X X _n_e_v_e_r_a_c_k is not a valid mail mode anymore. Change every X occurrence in ".subscribers" to NOACK, for every list. X X Any peer lists and/or news groups appearing in ".sub- X scribers" should be removed; use the _p_e_e_r and _n_e_w_s X scripts to put them back. X X _s_e_r_v_e_r_d, _l_i_s_t and _l_i_s_t_s_e_r_v no longer report to the X stdout by default -- use the -e command line option. X PPPPOOOORRRRTTTT SSSSPPPPEEEECCCCIIIIFFFFIIIICCCC X Starting with this version, a universal mailmethod is intro- X duced: _s_y_s_t_e_m; It should be used in every system, as it has X been verified to work on all systems below. Soon, all other X mailmethods will be rendered obsolete. X X IBM Risc X You should use _s_y_s_v__p_s as an option in the _c_o_n_f_i_g file, X and use the cc compiler (neither xlc nor c89). You have X to use _s_y_s_t_e_m as the mailmethod. Messages distributed X to local subscribers on the system may see their mes- X sages arrive "From root...", but all other subscribers X in the outside world will see "From listserv@..." X and/or "From list@..." which is the correct header. If X you use _e_n_v__v_a_r _L_O_G_N_A_M_E /_b_i_n/_r_m_a_i_l instead, the X behavior will be reversed. _t_e_l_n_e_t may not be used as a X mailmethod. X X SGI You have to use the _s_y_s_t_e_m mailmethod. All Irix ver- X sions to date seem to have a serious problem with tel- X net (it corrupts file descriptors). Use the _s_y_s_v__p_s X X X Anastasios Kotsikonas 18 X X X X X X server(1) USER COMMANDS server(1) X X X X option. You have to use the _s_t_d_s utility before com- X piling. X X SUN _s_y_s_t_e_m and _t_e_l_n_e_t work fine as mailmethods. Use the X _b_s_d__p_s option. The server user id should not be the X same as root's. You have to use the _s_t_d_s utility before X compiling. If you use the native cc compiler you will X need to convert to old-C (by using the unproto system); X otherwise gcc can be used. X X DECstations X You have to use _s_y_s_t_e_m as the mailmethod; if you use X _t_e_l_n_e_t instead, you may have to use the _b_a_d__t_e_l_n_e_t X option; _b_s_d__p_s should be used. Ultrix 3.0 has lots of X system bugs and you may experience strange behavior; X upgrade to 4.*. Depending on which DECstation you X have, you may have to use the _s_t_d_s utility before com- X piler and/or convert to old-C. X X Convex X You have to use _s_y_s_t_e_m as the mailmethod; all others X misbehave. You have to use the _s_t_d_s utility before X compiling. X X Stardent GS series X _s_y_s_t_e_m and _t_e_l_n_e_t work fine as mailmethods. Use the X _s_y_s_v__p_s option. X X Stardent Titan series X _s_y_s_t_e_m and _e_n_v__v_a_r _L_O_G_N_A_M_E /_b_i_n/_r_m_a_i_l work fine as X mailmethods. Use the _s_y_s_v__p_s option. X LLLLIIIIMMMMIIIITTTTAAAATTTTIIIIOOOONNNNSSSS X - Up to 10 discussion lists can be supported (configurable X in /usr/server/src/defs.h). X RRRREEEEQQQQUUUUIIIIRRRREEEEMMMMEEEENNNNTTTTSSSS X The $path for the server account should include all neces- X sary paths to cut(1), paste(1), awk(1), grep(1), uptime(1) X and telnet(1). In addition, uptime(1) should report the X number of users and the system load; otherwise _s_e_r_v_e_r_d can- X not be run with the -l option, and _l_i_s_t_s_e_r_v cannot be run X with the -r option. The output from uptime should look like: X X 12:45pm up 5 days, 16 mins, 4 users, load average: 0.00, ... X Also, make sure that when posting, /usr/lib/news/_i_n_e_w_s X exists either as itself or as a link to wherever _i_n_e_w_s X resides. X BBBBUUUUGGGGSSSS X uptime X When user and load restrictions are enforced, the X X X Anastasios Kotsikonas 19 X X X X X X server(1) USER COMMANDS server(1) X X X X system assumes that uptime outputs a line similar to X the one shown above, in which the number of users is X the third column (columns are separated by commas) and X the load average is the fourth column. The problem is X that on a system that has been up for less than one X day, uptime will report the number of users in the X second column, and the load average in the third X column. In this case, such restrictions should not be X enforced. X X blanks X Although the system handles email addresses with blanks X in them fairly well, _s_t_a_t_i_s_t_i_c_s, _r_e_c_i_p_i_e_n_t_s and _s_e_t X _l_i_s_t requests will show erroneous results for these X users. X SSSSEEEEEEEE AAAALLLLSSSSOOOO X farch(1), queue(1) X AAAAUUUUTTTTHHHHOOOORRRR X Anastasios C. Kotsikonas, Boston University. X Copyright (c) 1991, Anastasios Kotsikonas X Comments to tasos@cs.bu.edu X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Anastasios Kotsikonas 20 X X X END_OF_FILE echo shar: 2932 control characters may be missing from \"'doc/server.nr'\" if test 50151 -ne `wc -c <'doc/server.nr'`; then echo shar: \"'doc/server.nr'\" unpacked with wrong size! fi # end of 'doc/server.nr' fi echo shar: End of archive 5 \(of 6\). cp /dev/null ark5isdone MISSING="" for I in 1 2 3 4 5 6 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 6 archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0