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

FreeBSD Manual Pages


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

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

       ezmlm-split dir [ -dD ][	splitfile ]

       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
       ``''	  would	  match	  ``com''  and	``'',  but  not

       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

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

       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.

       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

       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	tempo-
       rarily using SQL	support, reorganizations can be	done on	running	 lists
       even when normally using	ezmlm-split and	local subscriber databases.

       ezmlm-list(1),  ezmlm-make(1),  ezmlm-manage(1),	ezmlm-sub(1) ezmlm-un-
       sub(1), ezmlm(5), ezmlmrc(5), ezmlmsubrc(5)



Want to link to this manual page? Use this URL:

home | help