FreeBSD Manual Pages
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)
NAME | SYNOPSIS | DESCRIPTION | OPTIONS | SPLIT LIST SETUP | ADDING/REMOVING SUBLISTS | SEE ALSO
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>
