Mailing lists are handled through ezmlm. They are a bit of a mess. Reading this will hopefully allow you to not add to this mess.
Lists
announceSYY: Each activities fair we make an announcement list with this format. We send it a few messages over the course of the following few weeks. After that it should be abandoned, with a final message telling people to subscribe to members, event-announce, and downtime-announce. It may also be wise to automatically subscribe people to downtime-announce.
members: For informal discussion between members. People should be told to subscribe to this if they are interested in joining the club. People should probably also be subscribed when they are given a club account.
downtime-announce: What the name suggests. Try to avoid creating a situation where members has more people on it than this list, meaning that notifications need to be sent to both.
event-announce: For major event announcements. Again, subscribers to this list should more or less be a superset of members.
operations: This list is private. For discussions of organizational details and machine room operations.
officers: What it sounds like. Only with far more people on it…
Administration
See Services/Club Mail for general information, or below for very specific instructions for administering an announce*** list. (they are probably useful for other lists as well if you do a bit of man page reading or w/e)
Announce Lists
It is Club tradition to make a list with a name of the format announces15 after an activities fair (where 's15' means 'spring 2015). We typically send half a dozen or so emails to this list followed by an email telling them to subscribe to other lists to continue receiving info.
All of the commands in this section require a Kerberos admin token (we could change the permissions on the directories to change this....). So, to get started, acquire that.
kinit USERNAME/admin
You will need to run them from a mailserver. So do:
ssh mx1.club.cc.cmu.edu
Ezmlm stores mailing lists as directories in ~ezmlm/Maildir/LIST_NAME with a bunch of crap in it. Do not be tempted to edit this crap by hand; it may look human-editable, but it is not. Instead, use the following ezmlm commands. Note that you need to provide absolute paths to the mailing list directory.
Initialize the list
I am using announces15 as an example, but be sure to replace it the the appropriate list name.
Create the list (note - this is ONE LINE):
ezmlm-make -5 social@club.cc.cmu.edu -m /afs/club.cc.cmu.edu/usr/ezmlm/Maildir/announces15 /afs/club.cc.cmu.edu/usr/ezmlm/.qmail-announces15 announces15 club.cc.cmu.edu
The -5 option containing, e.g., social@club.cc.cmu.edu, is the address to which mail directed to the list owner will be delivered. In this case, that is also a mailing list, so you should probably be subscribed to it if you are doing this (so subscribe yourself now).
-m is a flag that indicates the list shall be moderated. That's a good idea for an announcement list.
If you need to modify any of this configuration at a later time, you'll need to run ezmlm-make with the -e flag; see man ezmlm-make.
Message trailer
You probably want to set up a message trailer, explaining to users how they can unsubscribe from the mailing list. We've already got a generic trailer set up for some of our existing lists, so you can simply copy it to the new list, then touch a special file to enable the trailer. E.g.,
cp ~ezmlm/Maildir/members/text/trailer ~ezmlm/Maildir/announces15/text/trailer touch ~ezmlm/Maildir/announces15/addtrailer
Unfortunately, this trailer only seems to be appended to emails when their content type is plaintext. That doesn't really happen these days. :/
Allowing destination aliases
For certain lists (not typically the announce ones, but rather e.g., demosplash-volunteers@club.cc.cmu.edu), it may make sense to allow posts which do not include the underlying list address in the To: or Cc: fields. This has the effect of allowing the use of a "vanity" alias for the list, e.g., volunteers@demosplash.org.
To accomplish this, open the file ~ezmlm/Maildir/<listname>/editor, find the text then /usr/bin/ezmlm-reject, and add -T (e.g., then /usr/bin/ezmlm-reject -T). See man ezmlm-reject for details on this flag.
Add to subusers
IMPORTANT STEP: You will then need to add the list to /afs/club/service/mail/subusers. Do not forget this step, or mail will not send. This will be used by an hourly cronjob to actually create the necessary configs, so you'll have to wait a while. If you're impatient, ssh into each mailserver, become root with ksu -l, and run:
/afs/club.cc.cmu.edu/system/scripts/perl/mailassign.pl /afs/club/user > /var/qmail/users/assign && /usr/sbin/qmail-newu
or whatever new and equivalent incantation is listed in root's crontab -l.
If list is at a virtualdomain
For things like foo@demosplash.org for instance, an additional step is required to plumb this to the right place in ~ezmlm.
Look at /var/qmail/virtualdomains on all MXes (just one entry required per domain, not per address), as well as ~fwdmail/, where we typically put the .qmail-* files for each domain run by cclub as an org. Virtual domains for users might instead point to their own home directory.
Basic list management
You will also want to subscribe yourself to the moderation list, or it will be impossible to post:
ezmlm-sub ~ezmlm/Maildir/announces15 mod [your email]
To subscribe someone to the list, do:
ezmlm-sub ~ezmlm/Maildir/announces15 [email address]
If you omit the email address, it will read from stdin, allowing niceness like:
cat signup_list | ezmlm-sub ~ezmlm/Maildir/announces15
To list the membership of a list, do:
ezmlm-list ~ezmlm/Maildir/announces15
Just before the mailing list is retired (ie. when you send the email telling people to subscribe to other lists), you should subscribe everyone on the announce list to event-announce. Do this efficiently like so:
ezmlm-list ~ezmlm/Maildir/announces15 | ezmlm-sub ~ezmlm/Maildir/event-announce