Blackhold

Mailman: Scripts para moderar usuarios en las listas

Posted on setembre 7th, 2015 by admin

Tengo algunas listas en las que no me interesa activar la moderación de emergencia y simplemente quiero sólo moderar los mails que mandan los usuarios en la lista y permitir así que algunos si puedan mandar y otros no.

He tratado de realizar esto a través de Opciones de privacidad > Filtro de Remitente > default_member_moderation a Si y los usuarios siguen pudiendo mandar mails… así que he tenido que buscar otra solución y buscando un poco he encontrado una pequeña sorpresilla, y es que puedes crear tus scripts para mailman y ejecutarlos con el comando withlist!
Nota: Ahora entiendo esto!!! se refiere a las nuevas subscripciones a la lista! gññññ estas traducciones!!!

Como no soy muy experta en python he usado un script que he encontrado en un foro y lo he adaptado un poquitín con bash! :)

El script lo guardamos en /var/lib/mailman/bin/ con el nombre mod.py y con éste contenido:

#! /usr/bin/python
# mod.py

from Mailman import mm_cfg
import sys

def mod(list):
    for member in list.getMembers():
        if list.getMemberOption(member, mm_cfg.Moderate):
            print member, "is moderated"

def set(list, member, value):
    value = not not (int(value))
    if list.isMember(member):
        list.Lock()
        list.setMemberOption(member, mm_cfg.Moderate, value)
        print "%s's moderated flag set to %d" % (member, value)
        list.Save()
        list.Unlock()
    else:
        print member, "not a member"

Y luego en nuestro directorio favorito de scripts creamos otro script, por ejemplo moderar_usuarios_lista.sh con éste contenido:

#!/bin/bash

echo "Choose list name to apply moderation changes: "
read LIST_NAME
echo "Choose an option (1. moderate, 0. quit moderation): "
read MOD_STATUS

echo ${LIST_NAME} ${MOD_STATUS}

list_members ${LIST_NAME} > temp.txt

while read -r line
do
    LIST_USER=$line
    #echo ${LIST_USER}
    /var/lib/mailman/bin/withlist -r mod.set ${LIST_NAME} ${LIST_USER} ${MOD_STATUS}
done < temp.txt

rm temp.txt

Luego lo ejecutamos y rellenamos los parametros deseados.

Recuerdo que para ver las listas una forma de hacerlo es listar el directorio /var/lib/mailman/lists, lo he omitido en el script porque el servidor de listas que administro tiene un porrón de listas, así que previamente tienes que saber qué lista quieres modificar...

Ahora algunos parámetros interesantes a tener en cuenta:

/etc/init.d/postfix stop: vale, no hace falta explicación xD
mailq: ver los mails en la cola de postfix
postqueue -p: similar al mailq
postsuper -d ALL: eliminar todos los mails en la cola (puede estar postfix parado)
postsuper -d ALL deferred: eliminar todos los mails pospuestos

« »

guy fawkes