Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: nbsp begone

...

  • Read all of this file. Twice.
  • Read all of `man ezmlm-make`, `man ezmlm-sub`, `man ezmlm-unsub`. Twice. You can read these on hermes.
  • Read the output of ~apmail/bin/makelist-apache.sh -h. At least twice.
  • Take a look at the issue history for the Mailing lists component of the INFRA project in Jira.
  • Assign a Jira issue to yourself and handle it through to completion.
  • Bug other apmail people on #asfinfra when you inevitably screw something up. Remember its not you, its ezmlm.
  • ANY time you use -++  in an ezmlm-make command. Back up the list configuration files. -++  will overwrite list configuration files using the flags set in the config file.
    • trailer files will be lost etc.

...

The same files under /home/apmail are checked out (read only), so make changes ON YOUR OWN CHECKED-OUT COPY first, commit them, and then log in to Apmail and do a

cd /home/apmail
svn svn --config-dir=/home/apmail/.subversion2 --no-auth-cache cache update

Note that the list files are not in svn because running ezmlm-make changes the files directly, introducing far too many conflicts.

Commonly used commands are often scripted, using the scripts in apmail/bin.

All apache.org email email addresses

...

top

All email aliases for anything @*apache.org are handled by

...

    1. Subscribes a specific email address to your mailing list. Type the following at your command prompt, replacing LISTNAME with the domain/listname, e.g. "apache.org/announce"  or or "httpd.apache.org/dev" and user@domain.tld with the email address you want to add to the list:   ezmlm-sub /home/apmail/lists/LISTNAME user@domain.tld
    2. You can subscribe multiple addresses at the same time by putting them all on the same line, separated by spaces. For example: ezmlm-sub /home/apmail/lists/LISTNAME user@domain.tld user2@domain.tld user3@domain.tld
    3. You can also add multiple addresses to the subscriber list by creating a file with the addresses (one to a line, being sure to press [Enter] after the last address) and issuing the following command: ezmlm-sub /home/apmail/lists/LISTNAME < FILENAME >

...

    1. Unsubscribes a specific email address from your mailing list. Type the following at your command prompt, replacing replacing LISTNAME with the domain/listname and listname and user@domain.tld with the email address you want to remove from the list: ezmlm-unsub /home/apmail/lists/LISTNAME user@domain.tld
    2. You can unsubscribe multiple addresses at a time by simply putting them all on the same line, separated by spaces. For example: ezmlm-unsub /home/apmail/lists/LISTNAME user@domain.tld user2@domain.tld user3@domain.tld
    3. You can also remove multiple addresses from the subscriber list by creating a file with the addresses (one to a line, being sure to press [Enter] after the last address) and issuing the following command: ezmlm-unsub /home/apmail/lists/LISTNAME < FILENAME >

...

Shows a list of all users subscribed to a specific mailing list with each address on its own line. Type the following at your command prompt, replacing replacing LISTNAME with the domain/listname:   ezmlm-list /home/apmail/lists/LISTNAME

...

CAUTION! This command is used to create new lists and modify the letter flags of existing lists. DO NOT USE this if you have not read read this documentation.


NOTE: the use of `-+` directs ezmlm to use the letter switches that are currently active for the list, as modified by the current command line. Thus,   -+  makes makes switches sticky  sticky (most useful for changing one switch). By default, only switches specified on the current command line are used as the new switch configuration (if you want to change an option with this mode, specify the entire switch string, found in $domaindir/$listdir/config as the line matching `^F:`).   This switch implies implies -e  as as it is meaningless except in edit mode (also specifies to use the entire config string).

...

Note that the config file choice (see see -c and  and -C ) is also sticky.   ezmlmrc(5)  is is set up so that most text files (and and DIR /headeradd ,   DIR /headerkeep , and and DIR /headerremove ) are not overwritten if they already exist, to preserve manual customizations. If If local  is is specified,   ezmlm-make  overrides overrides this behavior and rewrites all files.


You can also force force ezmlm-make  to to rewrite all files by using using -++  (which does happen during certain maintenance operations, such as when adding a message footer).

for a practical example of -++, see see customized list info files  .

Configuration flags:

Important options

...

FlagConfigures
m/MModeration Enabled / Moderation disabled
t/TEnable / Disable message trailer (requires -++ see see customized list info files)
u/USubscribers only / Anyone can post
x/XStrip MIME content, drop mail with 'precedence: bulk' header, limit message size / Allow MIME content, 'precedence:bulk', and large messages
y/YSend a copy of the message to to security@apache.org  / do nothing.
z/Z

depends on -m .

-mz: Moderate anyone anyone not  sending from an @apache.org address.

-Mz: Unmoderated, but but only @apache @apache.org senders can post.

Common defaults

...

announce : -mUXYz (moderated only after From: anyone@apache.org)
commits : -MUXYz (limit sender to anyone@apache.org)
security : -MUXyZ (anyone can post, send copy to security@apache.org)
users : -MuXYZ (limit to subscriber or apache.org sender)
dev,private : -muXYZ (limit to subscriber|moderated|apache.org sender)

 -muxYZ (limit to subscriber|moderated|apache.org sender after sender after size/mime check)



Managing moderators

...

  • An "ls -al ~ | grep incubator-jackrabbit" is very instructive. Except for simple forwards, aliases and archives, do *not* modify any of these files directly.
  • ezmlm-list /home/apmail/lists/incubator.apache.org/jackrabbit-dev .  Note: change 'list' to 'sub' or 'unsub' and add an id or three at the end of the command, and you are doing something useful.
  • Changing a moderator list is done in a similar way: ezmlm-list /home/apmail/lists/incubator.apache.org/jackrabbit-dev mod
  • To check if there are any pending items in the moderation queue: ls /home/apmail/lists/incubator.apache.org/jackrabbit-dev/mod/pending  (each file in the directory is a separate email)
  • To release one of the pending emails in the moderation queue (say, licensing):

...

  • To change the settings of a mailing list so that it automatically rejects messages from non-subscribers, without soliciting action from the list moderator. Non-subscribers should get a message saying that the list is subscriber-only:  look look at a "config" file in the ezmlm list dir. It shows the current settings; and in this case, it was -mu, where posts from non-subscribers are bounced to the moderators. Instead, what is desired is the behavior you'd get with -Mu, which means moderation is turned off but only posts from subscribers are allowed. So, the command line that needed to be run is

ezmlm-make -+ -M /home/apmail/lists/{host}/{listname}

 -M turns off moderation entirely.
 -u requires poster to be subscribed or on allow list.
-MU anyone can post
-Mu posts from non-subscribers/non-allow are rejected
-mU sends all posts to moderator (e.g., announce lists)
-mu sends posts from non-subscribers/non-allow to moderator

...

Before lists can be created for a new TLP, complete all steps in in https://svn.apache.org/repos/infra/infrastructure/trunk/docs/misc/tlp-creation.txt

...

Roy's super-easy makelist script script svn:/infrastructure/apmail/trunk/bin/makelist-apache.sh is is

/home/apmail/bin/makelist-apache.sh

...

Customized list info files (message footers)

...

top

ezmlm allows  allows you to customize all of the list response messages by editing the files under {listdir}/text. Unfortunately, ezmlm-make has a bad habit of replacing any customized files with the system defaults (/home/apmail/.ezmlmrc) if it thinks the list needs to be reconfigured (or when the moon is blue). Note that the ezmlm-make -++ option tells it to replace all of these files, including headeradd, with the defaults.

...

Make changes to files under lists-info in your local copy, commit it to Subversion, and then update the checked-out copy on mail.apache.org prior prior to running the diff_lists.pl command.

...

  1. ssh to hermes (you need apmail or root karma to perform the following steps)
  2. Edit /home/apmail/.qmail-$project-$listname, e.g .qmail-ponymail-dev. For top level lists @level lists @apache.org, the pattern is .qmail-$listname.
  3. Add the following code to the second line (directly below the sender-demunger 'deny' line), being very careful to not insert extra line breaks. The strings in this file are bourne shell/bash based, and must be valid shell syntax. For most lists, the $projectname will be the TLP name, e.g. ponymail.apache.org. For top level apache.org lists, the $projectname will be 'apache.org'. When in doubt, refer to the format of the 'deny' line.

    |/x1/apmail/bin/sender-demunger /usr/bin/ezmlm-issubn -n  '/x1/apmail/lists/$projectname.apache.org/$listname'  'sendsubscribertomod'  || { /usr/bin/ezmlm-store  '/x1/apmail/lists/$projectname.apache.org/$listname'  ; exit  99  ;}


  4. Save the file and close.
  5. Create a new directory:

    mkdir /home/apmail/lists/$projectname/$listname/sendsubscribertomod
     

    # Note ezmlm-sub may not work unless a subscribers subdirectory is created
    mkdir /home/apmail/lists/$projectname/$listname/sendsubscribertomod/subscribers


  6. Add someone to the list of forced moderation:

    cd ~apmail/lists/$projectname
    ezmlm-sub $listname sendsubscribertomod foo @bar .baz
     

    # Note you can verify the addition with ezmlm-list
    ezmlm-list $listname sendsubscribermod

    The email addresses in the forced moderation list are used to compare against incoming From: lines. They have nothing to do with the subscribers, or the allow list for the list.

...

Remove the now-empty directory on mail.apache.org (hermes)   and on people.apache.org (minotaur).

...

  1. To start, take as a reference https://issues.apache.org/jira/browse/INFRA-13375 , We are going to move user@reef.apache.org from Private to Public.
  2. Access Required:
    1. root and apmail on minotaur.apache.org
    2. apmail on hermes.apache.org
    3. commit access to .archives
  3. First http://mail-archives.apache.org/mod_mbox/#reef and lists.apache.org confirm that the list is private as it is not publicly available
  4. Check the subscription of the archive
    1. On hermes as apmail user, list the subscribers of the user@reef list to check what archives are subscribed:
  5. - * hermes% pwd, /home/apmail/lists *
    1. hermes% ezmlm-list reef.apache.org/user |grep -i archive-asf-public@cust-asf.ponee.io  user-archive@reef.apache.org
  6. List the cust-asf archiver on the dev list as comparision, as 'apmail' user and in the /home/apmail/lists/ directory
    1. ^ that tells us the list we want
    1. ^ that will subscribe it
    1. ^that will unsubscribe the one we don't want
    1. users list = people who use the software .
    2. dev list = people who write the software, as a general rule.
    3. commits list = usually  usually things like git commits and svn commits go there
    4. So, for example: dev@reef.apache.org on hermes is reef.apache.org/dev
    5. commits@reefa.o then is mostly commit mails
    6. private@reef.a.o is for private communications between PMC members
    7. Use private lists sparingly
    1. [apmail@hermes lists]$ ezmlm-list reef.apache.org/dev | grep archive-asf-public@cust-asf.ponee.io
    2. ezmlm-sub reef.apache.org/user archive-asf-public@cust-asf.ponee.io
    3. ezmlm-unsub reef.apache.org/user archive-asf-private@cust-asf.ponee.io
    4. For general knowledge: dev is always a public list
  7. On minotaur.apache.org take a quick look around first. ls -al /home/apmail/public-arch/ --> this directory is where all our public lists are meant to reside
  8. ls -al /home/apmail/private-arch is where the private lists are
  9. ls -al /home/apmail/public-arch/reef.apache.org/ show all reef projects public lists. So in this case the "user list" is not here, because it is private.
  10. ls -al /home/apmail/private-arch/reef-user/ is where the user list resides.
  11. Next step is to move those to the right place, so sudo to root user and carefully move the reef-users list to where it should be and rename it accordingly; ie. reef-user becomes user.
  12. Change the permissions to match.
  13. On your local machine, make sure you have an up-to-date copy of .archives file. Edit it to change the reef-user entry from private to public and commit it.
  14. Then on both minotaur and hermes as the apmail user do an svn up in /home/apmail/bin "(supply your own credentials when prompted)"
  15. On minotaur (as apmail user) in /home/apmail/bin directory run ./archivealias
  16. Open a ticket with ponee.io who host list.apache.org for us: we need to email them and ask that all reef-user mails be made public
    1. root@ponee.io is our contact address
    2. cc: root@apache.org
  17. Our *current official* archives are http://mail-archives.apache.org/mod_mbox
  18. Our secondary is lists.apache.org, so we must ensure both work
  19. Testing:
    1. [apmail@hermes lists]$ cat subversion.apache.org/users/config | grep ^F
      1. F:-aBcdeFgHiJklmnOpqrSTuVWXYZ
    2. [apmail@hermes lists]$ cat reef.apache.org/user/config | grep ^F
      1. F:-aBcdeFgHiJklMnOpqrSTuVWXYZ
    1. On hermes as the apmail user
  20. That lists the config switches for two user(s) lists, the only difference here is the m vs M, which is important.
    1. m = send non -subscriber posts to a moderator
    2. M = reject non subscriber posts
  21. We want m, and we currently have M
  22. on hermes as the apmail user: ezmlm-make -+ -m /home/apmail/lists/reef.apache.org/user
  23. [apmail@hermes lists]$ cat reef.apache.org/user/config | grep ^F
    1. F:-aBcdeFgHiJklmnOpqrSTuVWXYZ
    2. lower case m
  24. Now we are good to go
  25. For more details, read: the ~apmail/README file about these switches
  26. Also :- http://untroubled.org/ezmlm/man/man1/ezmlm-make.1.html

...

  1. On hermes su to apmail and cd ~/bin/
  2. Run the following, replacing <lists> and <project> as required:   ./remove-list.sh -m 'The project is retired. See  https://attic.apache.org' <listname>@<project>.apache.org
  3. Follow the instructions for .archives and archivealias provided by the remove-list script
    1. The script output says changes "should be picked up by  minotaur.apache.org  within an hour or so."  – the cron that does this doesn't exist anymore.
    2. Manually deploy changes: commit `.archive` changes from a local copy and run `svn up` in the /home/apmail/bin/ directory as the `apmail` user on both hermes and minotaur
  4. Remove private@ address from ~apmail/.qmail-pmcs on hermes
  5. Delete ~apmail/lists/<project> directory once empty

More details/background can be found in  /home/apmail/README

Re-indexing a list or sub-list

...

There is a 'sender-demunger' script which can potentially be used to convert the dynamic address into a static one - see INFRA-18843 and INFRA-19360 for an example. This requires editing the sender-demunger script with a known pattern for the dynamic sender at at https://svn.apache.org/repos/infra/infrastructure/apmail/trunk/bin/sender-demunger which which lives at hermes:/home/apmail/bin/sender-demunger.

...

https://selfserve.apache.org allows allows for self-service PMC creation of project mailing lists.  The The code which queues the list creation json object is here:   https://github.com/apache/infrastructure-p6/blob/production/modules/selfserve_portal/files/www/site/cgi-bin/queue.cgi

The queue files are created in in tools-vm-he-de:/usr/local/etc/selfserve/queue and and can be edited until the list is created.

The actual list creation occurs on hermes via the ~apmail cron job job /home/apmail/bin/selfserve-make-lists.sh which calls selfserve-make-lists.py located in SVN:   https://svn.apache.org/repos/infra/infrastructure/apmail/trunk/bin/selfserve-make-lists.py. List creation runs every 4 hours.

...