In November, 2012, the problem was that the old crufty version of mailman requires an old crufty version of Python. Running
[mailman@moog bak]$ which python
/usr/local/pythonmailman/bin/python
[mailman@moog bak]$ cd /export/home/mailman_4
[mailman@moog mailman_4]$ bin/list_lists
Traceback (most recent call last):
  File "bin/list_lists", line 108, in ?
    main()
  File "bin/list_lists", line 86, in main
    mlist = MailList.MailList(n, lock=0)
  File "/home/mailman_4/Mailman/MailList.py", line 79, in __init__
    self.Load()
  File "/home/mailman_4/Mailman/MailList.py", line 903, in Load
    raise Errors.MMCorruptListDatabaseError, e
Mailman.Errors.MMCorruptListDatabaseError: bad marshal data
[mailman@moog mailman_4]$ 
Apparently, the .db files got updated with a newer version of Python? One solution is to recreate remove the lists, recreate them and then go to the website and repopulate them.
  1. Remove the lists. Become root and do
    bin/rmlist -a trust
    bin/rmlist -a trust_archive
    bin/rmlist -a trustlocal
    bin/rmlist -a trustlocal_archive
    bin/rmlist -a trustseminar
    bin/rmlist -a trustseminar_archive
    bin/rmlist -a execboard
    bin/rmlist -a execboard_archive
    bin/rmlist -a webmaster
    bin/rmlist -a webmaster_archive
    bin/rmlist -a reu
    bin/rmlist -a reu_archive
    bin/rmlist -a reu-devel
    bin/rmlist -a reu-devel_archive
    
  2. Make sure that there are no locks in the locks/ directory.
  3. Then recreate the lists.
    /home/www/php/bin/newgrouplist  -t -h /home/mailman_4 trust trust cxh@eecs.berkeley.edu 771dab3f1d41d3af63e1c1366f0b20f4 trust "www.truststc.org www.truststc.org"
    /home/www/php/bin/newgrouplist  -t -h /home/mailman_4 trustlocal trustlocal cxh@eecs.berkeley.edu ab6830ad0d0d8d5b4af4197a28fabafa trust "www.truststc.org www.truststc.org"
    /home/www/php/bin/newgrouplist  -t -h /home/mailman_4 trustseminar trustseminar cxh@eecs.berkeley.edu f8de2c6d3e1c4434ce332c74b41d1097 trust "www.truststc.org www.truststc.org"
    /home/www/php/bin/newgrouplist  -t -h /home/mailman_4 execboard execboard cxh@eecs.berkeley.edu 7216f298316b6052b9a8bac4256fa4a7 trust "www.truststc.org www.truststc.org"
    /home/www/php/bin/newgrouplist  -t -h /home/mailman_4 webmaster webmaster cxh@eecs.berkeley.edu 46755f8bfb93ce397d48e6b7bc0e6ece trust "www.truststc.org www.truststc.org"
    /home/www/php/bin/newgrouplist  -t -h /home/mailman_4 trustadmin trustadmin cxh@eecs.berkeley.edu eaa6e3517969e57f43bac1cde74e367c trust "www.truststc.org www.truststc.org"
    /home/www/php/bin/newgrouplist  -t -h /home/mailman_4 securit securit cxh@eecs.berkeley.edu d7e714acec2247443037429c0c54277b trust "www.truststc.org www.truststc.org"
    /home/www/php/bin/newgrouplist  -t -h /home/mailman_4 securit securit-devel cxh@eecs.berkeley.edu 3b7cfb495b3122671f2f809eb8613d3b trust "www.truststc.org www.truststc.org"
    /home/www/php/bin/newgrouplist  -t -h /home/mailman_4 star star-devel cxh@eecs.berkeley.edu 734c95d83d66db94779db7501ae6d057 trust "www.truststc.org www.truststc.org"
    /home/www/php/bin/newgrouplist  -t -h /home/mailman_4 wise wise cxh@eecs.berkeley.edu b4764364bf6ab530451fb7ec7ba71932 trust "www.truststc.org www.truststc.org"
    /home/www/php/bin/newgrouplist  -t -h /home/mailman_4 wise wise-devel cxh@eecs.berkeley.edu 77fdd95bfd2dff8988a898b583884425 trust "www.truststc.org www.truststc.org"
    /home/www/php/bin/newgrouplist  -t -h /home/mailman_4 reu reu cxh@eecs.berkeley.edu 4004a1cb51103463f41079d736ddadb9 trust "www.truststc.org www.truststc.org"
    /home/www/php/bin/newgrouplist  -t -h /home/mailman_4 reu reu-devel cxh@eecs.berkeley.edu af5f42b6f6d92f81a935e55a964a8e0e trust "www.truststc.org www.truststc.org"
    
  4. Then go to https://www.truststc.org/options/power/list and populate each list
Mailing lists for icyphy:
 /home/www/php/bin/newgrouplist  -t -h /home/mailman_6 webmaster webmaster cxh@eecs.berkeley.edu 46755f8bfb93ce397d48e6b7bc0e6ece icyphy "icyphy.org icyphy.org"
/home/www/php/bin/newgrouplist  -t -h /home/mailman_6 icyphy icyphy cxh@eecs.berkeley.edu 71397a467b0a3b076baa137f1e72f0fc icyphy "icyphy.org icyphy.org"

Solution

It turns out that RHEL supports setting the PATH environment variable in the crontab
PATH=/usr/local/pythonmailman/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/lib/mailman/bin

Recovery

We are now backing up the mailman config files.

Mailman runs a cron job ~www/php/mailman/mailmansaveconfigs that saves the *.db files to a tar file on an hourly basis.

If the bad marshal data error appears, use lastcomm to track down which script is running the wrong python, fix it and then restore the configuration files by first checking for when the tar files changed:

cd /home/mailman_4
ls -ltr bak
md5sum bak/*
Then, as root, extract the tar file:
tar -xf bak/configs.tar.1

A fix?

In August, 2013, I noticed that when a user tried to log in and their account had expired, the mailing list database would get corrupted. I could see that this code in user.inc.php was getting run:
$cmd = "${mailmanHome}/bin/remove_members $listName $lcEmail";
$returnMessage .= "Unsubscribing $lcEmail from $listName...
"; $returnMessage .= shell_exec($cmd);
I checked the path with: https://embedded.eecs.berkeley.edu/options/power/phpinfo and indeed /usr/local/pythonmail/bin was not in the path.

The /etc/init.d/gsrc script runs /etc/init.d/httpd, which reads /etc/sysconfig/httpd.

I updated /etc/sysconfig/httpd to include:

export PATH=/usr/local/pythonmailman/bin:$PATH:$HOME/bin
and then, as root, stopped and started with:
/etc/init.d/gsrc stop
/etc/init.d/gsrc start
Then, go to https://embedded.eecs.berkeley.edu/options/power/phpinfo and search for path.
 PATH 	/usr/local/pythonmailman/bin:/sbin:/usr/sbin:/bin:/usr/bin:/root/bin