On 01 October 2001, Jon Carnes said: > > I was particulalry interested in: > > 1. How your software stores and accesses the mailing list information > > (List Members, Administrators, Moderators, Members). > > The information for each list is stored in a large database file called > "config.db" which is stored in a directory ~mailman/lists/email-list-name. > The database stores the configuration of the list as well as the members and > the configuration of each member in that file in text format. > Mailman also maintains a backup copy of config.db in the file > "config.db.last". This is a copy of "config.db" before the last time it was > changed.
Jon forgot one little detail, which is the format of config.db. It's a Python "marshall" file, ie. written by the "marshall" module from Python's standard library. Mailman comes with a bunch of command-line utilities for viewing/manipulating lists, but if you need to step "outside the box", you'll have to write a bit of Python code. Eg. if you run this from ~mailman: $ python Python 2.1 (#2, May 8 2001, 10:50:59) [GCC 2.95.2 20000220 (Debian GNU/Linux)] on linux2 Type "copyright", "credits" or "license" for more information. >>> from marshal import load >>> config = load(open("lists/foo/config.db")) the config.db for the "foo" list is loaded into a Python dictionary 'config', which you can then grub about in as much as you please. This is probably not necessary very often, but it's nice to know that it can be done. BTW, this holds for Mailman 2.0 and earlier. I believe Mailman 2.1 uses "pickle" (another, more powerful persistence mechanism for Python) for list config information. > > 6. I'd also like to know what way the lists are stored... > > Are they in a flat file/DB/Hash? How's this achieved for your product? > > The lists are stored in a db format as part of the config.db file. The data > is stored as text, and can be accessed and manipulated by any standard .db > access program. Were you talking about the list meta-data (name of list, subscribers, subscriber options, etc.) or the message archive itself? The archive is stored as one big traditional Unix "mbox" file, ie. with messages separated by "\n\nFrom ". I believe the web interface to the archive is generated by reading that mbox file and spewing a bunch of HTML files. Greg -- Greg Ward - software developer [EMAIL PROTECTED] MEMS Exchange http://www.mems-exchange.org ------------------------------------------------------ Mailman-Users maillist - [EMAIL PROTECTED] http://mail.python.org/mailman/listinfo/mailman-users