Skip to content

Instantly share code, notes, and snippets.

@jovimon
Last active April 17, 2018 16:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jovimon/779ca30345ab8b75b3103867ff9b90d2 to your computer and use it in GitHub Desktop.
Save jovimon/779ca30345ab8b75b3103867ff9b90d2 to your computer and use it in GitHub Desktop.
Mailman Get User List
# Query a mailman list for all of its registered users
# Scraping part based on http://docs.python-guide.org/en/latest/scenarios/scrape/
# If you get errors, install packages:
# sudo pip install lxml
# sudo pip install requests
from lxml import html
import requests
import urllib
import string
domain = 'list.example.com'
path = '/cgi-bin/mailman'
listname = 'example-list'
login_params = {'adminpw': 'adminpw', 'admlogin': 'Let+me+in...'}
s = requests.Session()
login = s.post('http://'+domain+path+'/admin/'+listname, data = login_params)
listusers = {}
for i in string.digits + string.ascii_lowercase:
usuarios = []
page = s.get('http://'+domain+path+'/admin/'+listname+'/members?letter='+i)
tree = html.fromstring(page.content)
usuarios = tree.xpath("//input[@name='user']")
#print "%s-%s" % (i, len(usuarios))
for j in usuarios:
correo = urllib.unquote(j.value)
nombre = tree.xpath("//input[@name='"+j.value+"_realname']")[0].value
listusers[correo] = nombre
print "%s|%s" % (correo, nombre)
#print listusers
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment