ezmlm-split(1)                                     ezmlm-split(1)
NAME
       ezmlm-split  -  distribute  (un)subscribe requests to sub-
       lists
SYNOPSIS
       ezmlm-split dir [ -dD ][ splitfile ]
DESCRIPTION
       If the action is -subscribe or  -unsubscribe,  ezmlm-split
       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 succes-
       sive lines of splitfile  (default  is  dir/split).   If  a
       match  is  found,  the  request is forwarded to the corre-
       sponding sublist, and ezmlm-split exits 99. If a match  is
       not  found  or  action  is not -subscribe or -unsubscribe,
       ezmlm-split exits 0.
       In splitfile, blank lines and lines with ``#'' in position
       1  are ignored. Other lines are expected to be of the for-
       mat ``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.
       ezmlm-split  can be used also for list with SQL-based sub-
       listing. In this case, addresses  matching  the  splitfile
       are  forwarded to the respective non-SQL sublist, and non-
       matching addresses are handed by the SQL sublist.
OPTIONS
       -d     (Default.)  Do. Forward requests to the appropriate
              list.
       -D     Do  not  process  messages. Rather, read addresses,
              one per line from stdin, and print  ``sublist@host:
              address''  where ``sublist@host'' is the address to
              which the request  would  have  been  forwarded  in
                                                                1
ezmlm-split(1)                                     ezmlm-split(1)
              normal  operation. This is used to process a set of
              existing addresses into a set  of  address  collec-
              tions,  one  per  sublist. The output can be sorted
              and easily processed into a set of files,  one  per
              sublist  containing the addresses that sublist han-
              dles.
SPLIT LIST SETUP
       To use a hierarchy of sublists, set up the master list and
       add  a ezmlm-split line before the ezmlm-manage(1) line in
       dir/manager.  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 ezmlm-send(1).  You
       can use ezmlm-make -Cezmlmsubrc for this.  If  you  don't,
       use  the text files from the main list, except bounce-bot-
       tom.  Next, create split in the  main  list  directory  to
       achieve  an appropriate split. Load splitting between sev-
       eral local hosts is best achieved by hash,  with  a  blank
       domain.   Geographical  splitting  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 forwarded to the appropriate sublist, which will handle
       the confirmation. All  information,  except  bounce-bottom
       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.
ADDING/REMOVING SUBLISTS
       In general, the main list should be disabled, while chang-
       ing  the  sublist  split. This can be done by changing the
       mode of dir/lock 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 exist-
       ing subscribers of the removed sublist to the sublist tak-
       ing the load.  When splitting a sublist into several  sub-
       lists, create the new sublists, and edit the split file to
       distribute the load between them (usually by  hash).  Pro-
       cess 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:
                                                                2
ezmlm-split(1)                                     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  sub-
       scriber  lists, and update the subscribers of the affected
       lists.
       Reorganizations are easier done when lists  use  SQL  sup-
       port.  By  temporarily  using SQL support, reorganizations
       can be done on running  lists  even  when  normally  using
       ezmlm-split and local subscriber databases.
SEE ALSO
       ezmlm-list(1),   ezmlm-make(1),   ezmlm-manage(1),  ezmlmsub(1)
        ezmlm-unsub(1), ezmlm(5), ezmlmrc(5), ezmlmsubrc(5)
                                                                3
  
  
  © 1994 Man-cgi 1.15, Panagiotis Christias <christia@theseas.ntua.gr>