File: //usr/lib/check_mk_agent/plugins/mailman2_lists
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
# Copyright (C) 2019 Checkmk GmbH - License: GNU General Public License v2
# This file is part of Checkmk (https://checkmk.com). It is subject to the terms and
# conditions defined in the file COPYING, which is part of this source code package.
"""
Monitor Mailman 2 mailing lists.
"""
__version__ = "2.3.0p38"
# This Checkmk-Agent plugin gathers information about mailinglists hosted
# by the local mailman instance.
# Needed if you have located your mailman python modules not in default
# python module paths
import sys
sys.path.append("/usr/local/mailman")
sys.path.append("/usr/lib/mailman")
# Set to True to filter out all "hidden" mailinglists
only_advertised = True
from Mailman import MailList, Utils # type: ignore[import] # pylint: disable=import-error
# 1. list memberships
sys.stdout.write("<<<mailman_lists>>>\n")
total_members = set([])
for name in sorted(Utils.list_names()):
mlist = MailList.MailList(name, lock=0)
if only_advertised and not mlist.advertised:
continue
rmembers = mlist.getRegularMemberKeys()
dmembers = mlist.getDigestMemberKeys()
members = rmembers + dmembers
total_members.update(members)
sys.stdout.write("%s %d\n" % (name, len(members)))
sys.stdout.write("TOTAL %d\n" % len(total_members))