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
       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 re-
       verse  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
       splitfile  (default is dir/split).  If a	match is found,	the request is
       forwarded to the	corresponding sublist, and ezmlm-split	exits  99.  If
       splitfile  does not exist, a match is not found,	or action is not -sub-
       scribe or -unsubscribe, ezmlm-split exits 0.

       In splitfile, blank lines and lines with	``#'' in position  1  are  ig-
       nored.	 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  re-
       spective	 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
       messages.

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	``sub-
	      list@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 sub-
	      list 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
       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-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.  Ge-
       ographical 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	appro-
       priate  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  ad-
       ministrator of the main list.

ADDING/REMOVING	SUBLISTS
       In  general,  the main list should be disabled, while changing the sub-
       list 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 control-
       ling 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 re-
       moved sublist 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 sub-
       scribers	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
       affected	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  tem-
       porarily	 using	SQL  support,  reorganizations	can be done on running
       lists even when normally	using ezmlm-split and local  subscriber	 data-
       bases.

SEE ALSO
       ezmlm-list(1),  ezmlm-make(1),  ezmlm-manage(1),	ezmlm-sub(1) ezmlm-un-
       sub(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.0>

home | help