Important details: The lists are implemented as files in $MAILSHARE/lists/ -directory (or symlinks in there to files residing elsewere, though for system reliability standpoint it is better to have them in that directory, and let user have a symlink to those files -- consider NFS system with user home directories at other machines...) Alternate mechanism is to implement lists in traditional sendmail manner, however it means feeding the message to the scheduler, and external program ( /usr/lib/sendmail ) before it comes back to router. List FILE must have protection 0664 or stricter, 0700 has invalid bits! (ok, so "x"-bit is not used, but illegal it is, all the same.) Preferrable protection is: 0600 The $MAILSHARE/lists directory must be owned by root. Directory containing "aliases" -file ($MAILSHARE/db/) must be owned by root, and aliases file must comply with above mentioned protections. Owner of FILE gets FILE-owner, and FILE-request mails, UNLESS ANY OF THE LIMITATIONS ARE BREACHED. If FILE has protection 666 (for example), the Zmailer internal function "$(filepriv $filepath)" returns "$nobody" (userid of nobody), and function "$(uid2login $nobody)" fails, thus loosing -owner, and -request features. Also lists with filepriv "nobody" can not be archived! A mailing list is set up by creating a file in $MAILVAR/lists. The file name is the lists' name (LIST) in all-lowercase (case- insensitive matching is done by converting to lowercase before comparison). The file contains a list of mail addresses (typically one per line) which are parsed to pull out the destination addresses. This means the users' full names can be given just as in any valid RFC822 address. The local account which owns the file will by default receive messages sent to LIST-owner and LIST-request. This can be explicitly overridden in the aliases file. Mail to the list will go out with LIST-owner as the sender, so list bounce messages will return to the LIST-owner address. Archives of the list can be created by adding a file name address (a local pathname starting with "/") to the LIST file. The archive file is written with the ownership of the owner of the LIST file (NB!! see below). Forwarding the mailing list into a newsgroup can be done using a mail to news script (two generations are provided in utils/distribute and utils/mail2news). See the guides/aliases file for further information on aliasing. Security considerations: A LIST file must not be world writable, while most likely it can be group-writable. The MAILVAR/lists/ -directory must also not be group or world writable and must be owned by root or by the owner of the LIST file. Otherwise the file is declared insecure and all addresses in the file get the least possible privilege associated (the "nobody" uid). This can cause various things to break, for example mailing list archival, or the -owner and -request features if "nobody" is not a valid account. There is a mechanism to override using the modes on a file/directory as an indicator of its safeness. Turning on the sticky bit on a file or directory tells the mailer to treat it as if it was only owner- writable independent of its actual modes. This allows MAILVAR/lists/ to be group or world-writable and sticky-bitted if you want your general user population to be able to create mailing lists. About large lists, and memory consumption: With old configuration scripts there used to be problems with list expansion causing serious memory bloat. Zmailer-2.98-mea did introduce a working solution via builtin $(listexpand ..) -function. Rest of these notes apply to older config files using old style pipe of $(listaddresses < file | maprrouter ...) where the maprrouter did the actual memory bloat... Internal list expansion (thru the $MAILVAR/lists/LISTNAME -mechanism) is a sure way to expand router process memory usage. You can decrease the memory requirement dramatically, if you can feed all the addresses in the envelope, or via utils/listexpand.c utility (alpha-test tool on 1-Sep-94).. You don't need to worry about it, unless your list is 100+ recipients, only then the memory usage starts to bloat seriously with the old-style in-core $(listaddress ...) -expander.