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 mailman
programa.
1. Dê acesso ao vpopmail para executar o mailman como o usuário mailman.
Modifique o /etc/sudoers
arquivo (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 valias
e o mailman
programa. 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/vaddmailman
e 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.log
log.