Mailing List · 5 min read · Sep 09, 2025

Como Instalar E Configurar Mailman (Com Postfix) No Debian Squeeze

Como Instalar E Configurar Mailman (Com Postfix) No Debian Squeeze

Versão 1.0
Autor: Falko Timme
Siga-me no Twitter

Mailman é um gerenciador de listas de discussão de código aberto, ou seja, pode ser usado para gerenciar discussões por e-mail e listas de newsletters. É provavelmente o gerenciador de listas de discussão mais popular e amplamente utilizado na Internet. Este tutorial explica como instalar e configurar o Mailman em um servidor Debian Squeeze com um servidor de e-mail Postfix.

Não dou nenhuma garantia de que isso funcionará para você!

1 Nota Preliminar

Neste tutorial, configurarei um host virtual com o nome de host lists.example.com onde instalarei o Mailman. lists.example.com também é a parte correta dos endereços de e-mail da lista de discussão que serão configurados no Mailman, ou seja, os e-mails para uma lista de discussão terão que ser enviados para o endereço @lists.example.com.

Como seu nome de host será diferente, ajuste este tutorial de acordo. Também certifique-se de que seu nome de host exista no DNS.

O Mailman pode ser usado com muitos servidores de e-mail (por exemplo, Postfix, Exim, Sendmail, Qmail). Usarei o Postfix neste tutorial. Certifique-se de ter uma instalação funcional do Postfix, por exemplo, conforme mostrado neste tutorial: Usuários E Domínios Virtuais Com Postfix, Courier, MySQL E SquirrelMail (Debian Squeeze)

2 Instalando Mailman E Apache

Como o Mailman vem com uma interface web, precisamos de um servidor web além do Mailman. Eu escolho o Apache. Mailman e Apache podem ser instalados da seguinte forma:

apt-get install mailman apache2

Você verá as seguintes perguntas/mensagens:

Idiomas a suportar: <– pt (Português)
Lista de site ausente
O Mailman precisa de uma chamada “lista de site”, que é a lista da qual lembretes de senha e afins são enviados. Esta lista precisa ser criada antes que o Mailman comece. Para criar a lista, execute “newlist mailman” e siga as instruções na tela. Observe que você também precisa iniciar o Mailman depois disso, usando /etc/init.d/mailman start. <– Ok

O Mailman vem com um arquivo de configuração do Apache, /etc/mailman/apache.conf, que copiamos para /etc/apache2/sites-available/mailman.conf:

cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman.conf

Abra /etc/apache2/sites-available/mailman.conf…

vi /etc/apache2/sites-available/mailman.conf

… e acrescente a seguinte configuração de vhost ao arquivo (já existe um vhost para lists.example.net no arquivo que está comentado - por favor, não use esse vhost, pois minha configuração de vhost difere um pouco, embora pareça bastante semelhante):

| [...] ServerName lists.example.com DocumentRoot /var/www/lists ErrorLog /var/log/apache2/lists-error.log CustomLog /var/log/apache2/lists-access.log combined Options FollowSymLinks AllowOverride None Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /images/mailman/ /usr/share/images/mailman/ ScriptAlias /admin /usr/lib/cgi-bin/mailman/admin ScriptAlias /admindb /usr/lib/cgi-bin/mailman/admindb ScriptAlias /confirm /usr/lib/cgi-bin/mailman/confirm ScriptAlias /create /usr/lib/cgi-bin/mailman/create ScriptAlias /edithtml /usr/lib/cgi-bin/mailman/edithtml ScriptAlias /listinfo /usr/lib/cgi-bin/mailman/listinfo ScriptAlias /options /usr/lib/cgi-bin/mailman/options ScriptAlias /private /usr/lib/cgi-bin/mailman/private ScriptAlias /rmlist /usr/lib/cgi-bin/mailman/rmlist ScriptAlias /roster /usr/lib/cgi-bin/mailman/roster ScriptAlias /subscribe /usr/lib/cgi-bin/mailman/subscribe ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/ ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo |

A penúltima linha ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo é opcional; ela faz com que, quando você acessar http://lists.example.com/, você seja redirecionado para http://lists.example.com/listinfo. Isso faz sentido se você não tiver arquivos para servir no diretório raiz do documento /var/www/lists.

Em seguida, crie o diretório raiz do documento /var/www/lists, habilite a configuração de vhost lists.example.com e reinicie o Apache:

mkdir /var/www/lists
a2ensite mailman.conf
/etc/init.d/apache2 restart

Como estamos usando um vhost aqui (lists.example.com), precisamos ajustar as seguintes variáveis em /etc/mailman/mm_cfg.py:

vi /etc/mailman/mm_cfg.py

| [...] DEFAULT_URL_PATTERN = 'http://%s/' [...] DEFAULT_EMAIL_HOST = 'lists.example.com' [...] DEFAULT_URL_HOST = 'lists.example.com' [...] |

3 Configurando Postfix

Agora precisamos configurar o Postfix. Primeiro execute:

postconf -e ‘relay_domains = lists.example.com’
postconf -e ‘mailman_destination_recipient_limit = 1’

Em seguida, abra /etc/postfix/master.cf…

vi /etc/postfix/master.cf

… e certifique-se de que você tenha as seguintes linhas nele (elas devem estar lá por padrão):

| [...] mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} [...] |

Em seguida, devemos associar o domínio lists.example.com ao transporte do mailman. Como você faz isso depende da sua configuração do Postfix. Por exemplo, se você configurou seu servidor de acordo com o tutorial Usuários E Domínios Virtuais Com Postfix, Courier, MySQL E SquirrelMail (Debian Squeeze), os transportes são armazenados em um banco de dados MySQL; na maioria das outras configurações, o arquivo /etc/postfix/transport é usado para criar transportes. Vou descrever ambos os casos nos capítulos 3.1 e 3.2.

3.1 Transportes Em Um Banco De Dados MySQL

Se você configurou seu servidor de acordo com o tutorial Usuários E Domínios Virtuais Com Postfix, Courier, MySQL E SquirrelMail (Debian Squeeze), os transportes são armazenados na tabela de transporte no banco de dados mail MySQL. Para criar o transporte necessário, faça login no MySQL…

mysql -u root -p

… e execute os seguintes comandos MySQL:

USE mail;
INSERT INTO transport (domain, transport) VALUES (‘lists.example.com’, ‘mailman:’);
quit;

Reinicie o Postfix depois:

/etc/init.d/postfix restart

3.2 Transportes Em /etc/postfix/transport

Se você não tiver seu transporte em um banco de dados MySQL, provavelmente usará o arquivo /etc/postfix/transport. Nesse caso, você pode configurar o transporte necessário da seguinte forma:

postconf -e 'transport_maps = hash:/etc/postfix/transport'

Abra /etc/postfix/transport…

vi /etc/postfix/transport

… e adicione a seguinte linha:

| lists.example.com mailman: |

Execute

postmap -v /etc/postfix/transport

e reinicie o Postfix:

/etc/init.d/postfix restart   

4 Criando A Lista De Discussão mailman

Antes que possamos começar a usar o Mailman, devemos criar uma lista de discussão chamada mailman; isso é obrigatório - sem ela, o Mailman não iniciará:

newlist --urlhost=lists.example.com --emailhost=lists.example.com mailman

Na maioria dos casos, os switches –urlhost e –emailhost não são necessários porque nosso vhost já está nomeado como lists.example.com, e também o temos em /etc/mailman/mm_cfg.py (DEFAULT_EMAIL_HOST e DEFAULT_URL_HOST), mas se você quiser ter certeza de que o Mailman usa o nome de host correto, use esses switches.

root@server1:~# newlist –urlhost=lists.example.com –emailhost=lists.example.com mailman
Digite o e-mail da pessoa que está administrando a lista: <– especifique o endereço de e-mail do administrador da lista, por exemplo, [email protected]
Senha inicial do mailman: <– mailman_password
Para terminar de criar sua lista de discussão, você deve editar seu arquivo /etc/aliases (ou equivalente) adicionando as seguintes linhas e possivelmente executando o programa newaliases:

lista de discussão mailman

mailman: “|/var/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/var/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/var/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/var/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/var/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/var/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/var/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/var/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/var/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/var/lib/mailman/mail/mailman unsubscribe mailman”

Pressione enter para notificar o proprietário do mailman… <– ENTER

root@server1:~#

Agora abra /etc/aliases e adicione os aliases que você vê na saída do comando newlist (isso deve ser feito manualmente para cada nova lista que você criar):

vi /etc/aliases

| [...] ## lista de discussão mailman mailman: "|/var/lib/mailman/mail/mailman post mailman" mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/var/lib/mailman/mail/mailman join mailman" mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman" mailman-request: "|/var/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" |

Sempre que você modificar /etc/aliases, precisa executar

newaliases
/etc/init.d/postfix restart

depois.

Agora podemos finalmente iniciar o Mailman:

/etc/init.d/mailman start

root@server1:~# /etc/init.d/mailman start
Iniciando o qrunner mestre do Mailman: mailmanctl.
root@server1:~#

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.