User Commands ezmlm-split(1) NNNNAAAAMMMMEEEE ezmlm-split - distribute (un)subscribe requests to sublists SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS eeeezzzzmmmmllllmmmm----sssspppplllliiiitttt _d_i_r [ -ddddDDDD ][ _s_p_l_i_t_f_i_l_e ] DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN If the action is -_s_u_b_s_c_r_i_b_e or -_u_n_s_u_b_s_c_r_i_b_e, eeeezzzzmmmmllllmmmm----sssspppplllliiiitttt analyzes the target of the request, computing a hash in the range 0-52 from the address, and determines the ``domain key'', i.e. the two top levels of the host address in reverse order. Thus, the domain entry for ``d@a.b.c'' becomes ``c.b'' and the one for ``d@a'' becomes ``a''. The hash and domain parts are then tested against successive lines of _s_p_l_i_t_f_i_l_e (default is _d_i_r////sssspppplllliiiitttt). If a match is found, the request is forwarded to the corresponding sub- list, and eeeezzzzmmmmllllmmmm----sssspppplllliiiitttt exits 99. If a match is not found or action is not -_s_u_b_s_c_r_i_b_e or -_u_n_s_u_b_s_c_r_i_b_e, eeeezzzzmmmmllllmmmm----sssspppplllliiiitttt exits 0. In _s_p_l_i_t_f_i_l_e, blank lines and lines with ``#'' in position 1 are ignored. Other lines are expected to be of the format ``dom:low:hi:list@host'', where ``dom'' is the top level domain, ``low''-``hi'' the range of the hash (defaults 0 and 52), and ``list@host'' the name of the corresponding list (default is the local list). A line is considered to match if the address hash is between ``low'' and ``hi'' inclusive and ``dom'' is empty, or if the ``domain key'' matches ``dom'' for the full length of ``dom''. Thus, the address ``user@aol.com'' would match ``com'' and ``aol.com'', but not ``host.com''. If the domain specified is the top level domain up to 3 characters, the split is identical as that used by the SQL subscriber interface. This is recommended. There can be several entries for a given sublist. eeeezzzzmmmmllllmmmm----sssspppplllliiiitttt can be used also for list with SQL-based sub- listing. In this case, addresses matching the _s_p_l_i_t_f_i_l_e are forwarded to the respective non-SQL sublist, and non- matching addresses are handed by the SQL sublist. OOOOPPPPTTTTIIIIOOOONNNNSSSS -dddd (Default.) Do. Forward requests to the appropriate list. -DDDD Do not process messages. Rather, read addresses, one per line from stdin, and print ``sublist@host: address'' where ``sublist@host'' is the address to SunOS 5.11 Last change: 1 User Commands ezmlm-split(1) which the request would have been forwarded in normal operation. This is used to process a set of existing addresses into a set of address collections, one per sublist. The output can be sorted and easily processed into a set of files, one per sublist containing the addresses that sublist handles. SSSSPPPPLLLLIIIITTTT LLLLIIIISSSSTTTT SSSSEEEETTTTUUUUPPPP To use a hierarchy of sublists, set up the master list and add a eeeezzzzmmmmllllmmmm----sssspppplllliiiitttt line before the eeeezzzzmmmmllllmmmm----mmmmaaaannnnaaaaggggeeee((((1111)))) line in _d_i_r////mmmmaaaannnnaaaaggggeeeerrrr. Create any number of sublists of the main list on other local or distant hosts. Ideally, these should be non-archived, to point to the correct message numbers of the main list archive (see eeeezzzzmmmmllllmmmm----sssseeeennnndddd((((1111)))). You can use eeeezzzzmmmmllllmmmm---- mmmmaaaakkkkeeee ----CCCC_e_z_m_l_m_s_u_b_r_c for this. If you don't, use the text files from the main list, except _b_o_u_n_c_e-_b_o_t_t_o_m. Next, create _s_p_l_i_t in the main list directory to achieve an appropriate split. Load splitting between several local hosts is best achieved by hash, with a blank domain. Geographical split- ting with hosts in different countries is best done via ``domain'' and naturally, a large domain can be subdivided by hash. Subscribers will receive all messages 'From:' the main list. When they subscribe or unsubscribe, the request will be for- warded to the appropriate sublist, which will handle the confirmation. All information, except _b_o_u_n_c_e-_b_o_t_t_o_m refers the user to the main list. Thus, to the user the list appears as a single list with the address of the main list, and distribution among sublists is at the discretion of the administrator of the main list. AAAADDDDDDDDIIIINNNNGGGG////RRRREEEEMMMMOOOOVVVVIIIINNNNGGGG SSSSUUUUBBBBLLLLIIIISSSSTTTTSSSS In general, the main list should be disabled, while changing the sublist split. This can be done by changing the mode of _d_i_r////lllloooocccckkkk to 0 or by setting the sticky bit for the home directory of the user controlling the list. To remove a sublist, edit the lines for that sublist in the splitfile to point to another list, and add the existing subscribers of the removed sublist to the sublist taking the load. When splitting a sublist into several sublists, create the new sublists, and edit the split file to distri- bute the load between them (usually by hash). Process the subscribers of the old list with: | ezmlm-split -D dir | sort | program where to get one file of addresses per new sublist, ``pro- gram'' could be: SunOS 5.11 Last change: 2 User Commands ezmlm-split(1) #!/usr/bin/perl while (<>) { ($f,$t) = split (':'); $t =~ s/^ //; if ($f ne $of) { $of = $f; close(OUT) if ($of); open(OUT,">$f") or die("Unable to open $f"); } print OUT $t; } close(OUT) if ($of); Remove all subscribers from the old list, and add the respective subscribers to each list. For any more drastic reorganizations, collect all the sub- scribes of the affected sublists, create the new subscriber lists, and update the subscribers of the affected lists. Reorganizations are easier done when lists use SQL support. By temporarily using SQL support, reorganizations can be done on running lists even when normally using eeeezzzzmmmmllllmmmm----sssspppplllliiiitttt and local subscriber databases. SSSSEEEEEEEE AAAALLLLSSSSOOOO ezmlm-list(1), ezmlm-make(1), ezmlm-manage(1), ezmlm-sub(1) ezmlm-unsub(1), ezmlm(5), ezmlmrc(5), ezmlmsubrc(5) SunOS 5.11 Last change: 3