Often you create a local sublist of a list that you do not control. Local users know to subscribe to your local list. However, occasionally, you want to run your own list as a main list and a series of sublists per geographic site, or split onto several hosts if the list is too large to be handled by a single computer. You may also want to split the load of a “well known” list host that is getting overwhelmed with traffic. ezmlm supports sublists, but here the fact that the user has to interact with the correct sublist is a problem. What if the user doesn't remember which sublist s/he is subscribed to? What if you change the name of a sublist host or move a sublist to a different host?
ezmlm-idx version 0.32 added ezmlm-split(1), which allows sublisting transparent to the user. This program is invoked before ezmlm-manage(1) in DIR/manager. If it detects a ‘subscribe’ or ‘unsubscribe’ command, it will forward the command to the appropriate sublist based on a “split file” DIR/split. This file contains entries, one per line, of the format:
domain:lo:hi:sublistname@sublisthost edu:::othersub@otherhost :1:26:third@thirdhost
For each address, a hash in the range 0-52 is calculated. The “domain” is the last two parts of the host name, reversed. Thus, for ‘id.wustl.edu’ it would be ‘edu.wustl’. The domain is considered to match if the characters in the split file match. It is advisable to use only the last part of the domain for compatibility with the SQL version version (see ezmlm support for SQL databases).
Thus, any address ‘*@*.domain’ with a hash between ‘lo’ and ‘hi’ inclusive would match the first line and be forwarded to ‘sublistname@sublisthost’. ‘*@*.edu’ (independent of hash) would match the second line and be forwarded to ‘othersub@otherhost’. Of remaining requests, a request for any target address with a hash between 1 and 26 would be forwarded to the sublist ‘third@thirdhost’. Remaining requests would be passed on to the local list.
The domain is useful for “geographic” splitting, and the hash for load splitting (within a domain). The user interacts only with the main list, and does not need to know from which sublist s/he is serviced.
ezmlm-idx sublists use the message number of the main list message if they are not indexed. This allows sublists to in bounce messages refer the subscriber to the main list archive. Use ezmlm-make(1) in conjunction with ezmlmsubrc(5) to set up the sublists. See man pages for further details.
Since the addresses are stored locally, the system is very fast and robust, but it is difficult to add new sublists. ezmlm-split(1) -D supports parsing addresses on stdin and splitting them to stdout (see man page). Thus, if you divide the domain of some sublist(s) onto a net set of sublists, you can use ezmlm-list(1) to collect the addresses, ezmlm-split -D with the new split file to split them, then after clearing the local subscriber databases use ezmlm-sub(1) to add the correct addresses to each new sublist. The section on SQL support describes an alternative way of managing sublists (see ezmlm support for SQL databases).