Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ezmlm-split(1)		     General Commands Manual		  ezmlm-split(1)

NAME
     ezmlm-split - distribute (un)subscribe requests to sublists

SYNOPSIS
     ezmlm-split dir [ -dD ][ splitfile ]

DESCRIPTION
     If  the action is -subscribe or -unsubscribe, ezmlm-split analyzes the tar-
     get 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 or-
     der.   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
     splitfile (default is dir/split).	If a match is found, the request is for-
     warded to the corresponding sublist, and ezmlm-split exits 99. If splitfile
     does  not	exist, a match is not found, or action is not -subscribe or -un-
     subscribe, ezmlm-split exits 0.

     In splitfile, 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.

     ezmlm-split  can  be  used also for list with SQL-based sublisting. 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.

     If dir/qmqpservers exists, ezmlm-split will use qmail-qmqp(1) to send  mes-
     sages.

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 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.

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 num-
     ber 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	-Cezmlm-
     subrc for this. If you don't, use the text files from the main list, except
     bounce-bottom.  Next, create split 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 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 sub-
     scribe 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 distribu-
     tion 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 changing 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 existing subscribers of the removed sub-
     list to the sublist taking the load.  When splitting a sublist into several
     sublists,	create	the  new sublists, and edit the split file to distribute
     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, ``program'' could be:

     #!/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  sub-
     scribers to each list.

     For any more drastic reorganizations, collect all the subscribes of the af-
     fected  sublists,	create	the  new  subscriber  lists, and update the sub-
     scribers 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 ezmlm-split and local subscriber databases.

SEE ALSO
     ezmlm-list(1), ezmlm-make(1), ezmlm-manage(1), ezmlm-sub(1) ezmlm-unsub(1),
     ezmlm(5), ezmlmrc(5), ezmlmsubrc(5)

								  ezmlm-split(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ezmlm-split&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help