Executando o mailman no qmail + vpopmail

Normalmente os MTAs do qmail incluem os fortemente acoplados ezmlm. Se você deseja executar o Mailman, você precisará usar a seguinte cola para canalizar valiases para o mailmanprograma.

1. Dê acesso ao vpopmail para executar o mailman como o usuário mailman.

Modifique o /etc/sudoersarquivo (via sudo visudo) e adicione esta linha:

vpopmail ALL = (mailman) NOPASSWD: /usr/lib/mailman/mail/mailman

2. Crie o script mailman-inject

Esta é a cola entre a valiase o mailmanprograma. Copie o seguinte em um arquivo no diretório bin para a instalação do mailman (em um sistema baseado em Redora /usr/lib/mailman/bin/mailman-inject) e torne-o executável:

#!/bin/sh
# Pipe message to mailman as mailman user.
echo
"[$(date '+%F %T')] Mailman request: $@" >> /var/log/mailman-inject.log;
sudo
-u mailman /usr/lib/mailman/mail/mailman $@ >> /var/log/mailman-inject.log 2>&1;

Este script de cola grava em um arquivo de log que deve ser acessível ao usuário mailman:

sudo touch /var/log/mailman-inject.log
sudo chown mailman
/var/log/mailman-inject.log
sudo chmod
644 /var/log/mailman-inject.log

3. Crie um script auxiliar valias

Este é responsável por adicionar as valiases. Copie o seguinte em um arquivo em /usr/local/bin/vaddmailmane torne-o executável:

#!/bin/sh
if ! echo $1 | grep -q '@'; then
echo
"Usage: $(basename $0) LISTNAME@DOMAIN";
exit
1;
fi
LISTNAME
=$(echo $1 | cut -d @ -f 1);
DOMAIN
=$(echo $1 | cut -d @ -f 2);
echo
"Adding mailman valiases for list $LISTNAME@$DOMAIN...";
valias
-i "|preline ~mailman/bin/mailman-inject.sh post $LISTNAME" $LISTNAME@$DOMAIN
valias
-i "|preline ~mailman/bin/mailman-inject.sh admin $LISTNAME" $LISTNAME-admin@$DOMAIN
valias
-i "|preline ~mailman/bin/mailman-inject.sh bounces $LISTNAME" $LISTNAME-bounces@$DOMAIN
valias
-i "|preline ~mailman/bin/mailman-inject.sh confirm $LISTNAME" $LISTNAME-confirm@$DOMAIN
valias
-i "|preline ~mailman/bin/mailman-inject.sh join $LISTNAME" $LISTNAME-join@$DOMAIN
valias
-i "|preline ~mailman/bin/mailman-inject.sh leave $LISTNAME" $LISTNAME-leave@$DOMAIN
valias
-i "|preline ~mailman/bin/mailman-inject.sh owner $LISTNAME" $LISTNAME-owner@$DOMAIN
valias
-i "|preline ~mailman/bin/mailman-inject.sh request $LISTNAME" $LISTNAME-request@$DOMAIN
valias
-i "|preline ~mailman/bin/mailman-inject.sh subscribe $LISTNAME" $LISTNAME-subscribe@$DOMAIN
valias
-i "|preline ~mailman/bin/mailman-inject.sh unsubscribe $LISTNAME" $LISTNAME-unsubscribe@$DOMAIN
# The following line is for VERP; uncomment if you use it.
# echo "|preline /usr/local/mailman/mail/mailman bounces $LISTNAME" $LISTNAME-bounces-default@$DOMAIN

4. Agora crie uma lista de mailman:

sudo /usr/lib/mailman/bin/newlist LISTNAME@DOMAIN

5. E, finalmente, crie as valiases.

sudo /usr/local/bin/vaddmailman add LISTNAME@DOMAIN

Você pode testar enviando um e-mail para a lista e observando o /var/log/mailman-inject.loglog.