---
name: "withlist"
section: "8"
platform: "linux"
package: "mailman"
version: "1:2.1.29-1+deb10u5"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/withlist"
---

# withlist(8)

General framework for interacting with a Mailman mailing list object.

## NAME

withlist - General framework for interacting with a Mailman mailing list object.

## SYNOPSIS

withlist \[options\] listname \[args ...\]

There are two ways to use this script: interactively or programmatically. Using it interactively allows you to play with, examine and modify a MailList object from Python's interactive interpreter.  When running interactively, a MailList object called \`m' will be available in the global namespace.  It also loads the class MailList into the global namespace.

Programmatically, you can write a function to operate on a MailList object, and this script will take care of the housekeeping (see below for examples). In that case, the general usage syntax is:

## OPTIONS

- **-l, --lock**

  **Lock the list when opening.  Normally the list is opened unlocked** **(e.g. for read-only operations).  You can always lock the file after** **the fact by typing \`m.Lock()'**

  **Note that if you use this option, you should explicitly call m.Save()** **before exiting, since the interpreter's clean up procedure will not** **automatically save changes to the MailList object (but it will unlock** **the list).**

- **-i, --interactive**

  **Leaves you at an interactive prompt after all other processing is** **complete.  This is the default unless the -r option is given.**

- **-r** *\[module.\]callable,* **--run** *\[module.\]callable*

  *This can be used to run a script with the opened MailList object.* *This works by attempting to import module (which must already be* *accessible on your sys.path), and then calling callable from the* *module.  callable can be a class or function; it is called with the* *MailList object as the first argument.  If additional args are given* *on the command line, they are passed as subsequent positional args to* *the callable.*

  *Note that module. is optional; if it is omitted then a module with* *the name callable will be imported.*

  *The global variable \`r' will be set to the results of this call.*

- **-a, --all**

  **This option only works with the -r option.  Use this if you want to** **execute the script on all mailing lists.  When you use -a you should** **not include a listname argument on the command line.  The variable \`r'** **will be a list of all the results.**

- **-q, --quiet**

  **Suppress all status messages.**

- **-h, --help**

  **Print a small help text and exit.**

## EXAMPLES

**Here's an example of how to use the -r option.  Say you have a file in the** **Mailman installation directory called \`listaddr.py', with the following** **two functions:**

  **def listaddr(mlist):**\
       **print mlist.GetListEmail()**

  **def requestaddr(mlist):**\
       **print mlist.GetRequestEmail()**

**Now, from the command line you can print the list's posting address by running** **the following from the command line:**

  **% bin/withlist -r listaddr mylist**\
   **Loading list: mylist (unlocked)**\
   **Importing listaddr ...**\
   **Running listaddr.listaddr() ...**\
   **mylist@example.com**

**And you can print the list's request address by running:**

  **% bin/withlist -r listaddr.requestaddr mylist**\
   **Loading list: mylist (unlocked)**\
   **Importing listaddr ...**\
   **Running listaddr.requestaddr() ...**\
   **mylist-request@example.com**

**As another example, say you wanted to change the password for a particular** **user on a particular list.  You could put the following function in a file** **called \`changepw.py':**

  **from Mailman.Errors import NotAMemberError**

  **def changepw(mlist, addr, newpasswd):**\
       **try:**\
           **mlist.setMemberPassword(addr, newpasswd)**\
           **mlist.Save()**\
       **except NotAMemberError:**\
           **print 'No address matched:', addr**

 **and run this from the command line:**\
  **% bin/withlist -l -r changepw mylist somebody@example.org foobar**

## AUTHOR

**Author of Mailman is the Mailman Cabal, see http://www.list.org/ for** **information. This manpage is written for Debian by Bernd S. Brentrup** **\<bsb@debian.org\>, but may be used by others.**

## SEE ALSO

**Mailman documentation on http://www.list.org/ and in** **/usr/share/doc/mailman.**
