Servidor de E-mail · 8 min read · Sep 26, 2025

Instalando iRedMail E Mailman No Debian Squeeze

Instalando iRedMail E Mailman No Debian Squeeze

Versão: 1
Autor: Jason Norwood-Young
Última edição: 22 de dezembro de 2011

Sou um grande fã do iRedMail, que é basicamente uma versão empacotada do Postfix e outras partes que tornam o Postfix legal, como Spamassassin, greylisting e um back-end LDAP ou MySql. Uma coisa que eu queria com o iRedMail é o Mailman, meu servidor de lista de discussão favorito. Integrar os dois pode ser uma missão, então aqui estão algumas instruções para te salvar de bastante dor.

Os caras do iRedMail oferecem um console de administração gratuito para gerenciar contas de usuário. Eu assino a versão Pro do console de administração do iRedMail, que é muito útil para clientes se auto-gerenciarem. Não tenho nada a ver com o iRedMail, além de ser um cliente.

1. Configurando o servidor

Estou instalando em uma instalação limpa do Debian Squeeze. A primeira coisa que eu sempre faço em um novo servidor é:

apt-get update   
apt-get upgrade   
dpkg-reconfigure tzdata

A última linha permite que você defina seu fuso horário. Não é estritamente necessário para nossos propósitos, mas considero uma boa prática configurá-lo.

Agora precisamos configurar um nome de domínio totalmente qualificado (FQDN). Isso significa que precisamos de um domínio como mailserver.exemplo.com em vez de apenas mailserver. Para verificar qual é o seu hostname, digite:

hostname -f

NOTA: O nome de domínio que você escolher deve ser diferente do domínio de e-mail que deseja usar. Se você quiser que seu e-mail venha de [email protected], não faça o nome do seu servidor exemplo.com - dê um subdomínio como obiwan ou captainkirk ou (se você for chato como eu) mailserver.

Se você já tiver um FQDN, pode passar para a etapa 2.

O nome do domínio é definido em dois lugares: /etc/hostname e /etc/hosts.

Edite seu /etc/hostname para conter seu FQDN (para os propósitos deste tutorial, usarei mailserver.exemplo.com).

Para o seu arquivo /etc/hosts, sua primeira linha deve parecer com isto:

127.0.0.1     mailserver.exemplo.com mailserver localhost localhost.localdomain

Agora só precisamos dizer ao sistema para registrar a mudança:

/etc/init.d/hostname.sh   
hostname -f

Agora você deve ver um FQDN. Se você não obtiver um, entre em pânico! Er, quero dizer, reinicie e verifique novamente.

2. Instalando iRedMail

No momento da escrita, a versão do iRedMail é 0.7.3. Verifique em www.iredmail.org para a versão mais recente e ajuste conforme necessário.

cd ~   
wget http://iredmail.googlecode.com/files/iRedMail-0.7.3.tar.bz2   
apt-get install bzip2   
tar xjf iRedMail-0.7.3.tar.bz2   
cd iRedMail-0.7.3   
bash iRedMail.sh

O iRedMail instalará tudo o que você precisa. Aceite todas as opções padrão, exceto pelo back-end - escolha MySql em vez de LDAP. Quando solicitado pelo seu primeiro domínio de e-mail virtual, coloque exemplo.com, NÃO mailserver.exemplo.com. Responda Sim sempre que solicitado.

Agora você tem um servidor de e-mail incrível! Isso foi fácil, né?

3. Instalando Mailman

Primeiro instalamos o Mailman:

apt-get install mailman

Você notará que o Mailman ainda não é iniciado. Primeiro precisamos dizer ao Postfix para enviar e-mails para o Mailman quando receber e-mails de certos endereços.

4. Configurando contas de Transporte e Alias

Vamos criar um domínio virtual chamado lists.exemplo.com, que usaremos para todas as nossas coisas do Mailman. Sempre que algo for enviado para o domínio lists.exemplo.com, vamos encaminhar isso para o programa Mailman em vez de tratá-lo como um e-mail normal.

Como não queremos que nossa lista de discussão esteja no domínio lists.exemplo.com, mas sim apenas exemplo.com, também estaremos configurando um monte de aliases para aceitar os e-mails enviados para endereços do Mailman em exemplo.com e, em vez disso, redirecioná-los para lists.exemplo.com.

Vamos fazer tudo isso através do banco de dados MySql. Aponte um navegador para https://example.com/phpmyadmin. Observe que é https e não apenas http. Também note que se você não tiver um servidor de nomes apontando para o seu endereço IP já, pode ser necessário adicionar exemplo.com ao seu arquivo /etc/hosts em seu computador local.

Faça login com o usuário root e a senha que você escolheu durante a instalação do iRedMail. Se você não conseguir lembrar de nenhum detalhe, confira ~/iRedMail-0.7.3/iRedMail.tips - o iRedMail convenientemente salva os locais, nomes de usuários e senhas para todos os serviços do iRedMail lá.

Clique no banco de dados “vmail” no painel esquerdo e, em seguida, na aba “SQL”. Cole o seguinte comando na aba (depois de mudar o domínio para o seu, é claro) e clique em Executar:

INSERT INTO `vmail`.`domain` (`domain`, `description`, `disclaimer`, `aliases`, `mailboxes`, `maxquota`, `quota`, `transport`, `backupmx`, `defaultuserquota`, `defaultuseraliases`, `defaultpasswordscheme`, `minpasswordlength`, `maxpasswordlength`, `created`, `modified`, `expired`, `active`) VALUES ('lists.exemplo.com', '', '', '0', '0', '0', '0', 'mailman:', '0', '1024', '', '', '0', '0', NOW(), '0000-00-00 00:00:00', '9999-12-31 00:00:00', '1');

Isso configurou nosso Transporte para obter tudo de lists.exemplo.com para o aplicativo Mailman.

Agora precisamos adicionar os aliases do Mailman. Você precisará fazer isso toda vez que adicionar uma nova lista ao Mailman, basta procurar e substituir “mailman” pelo nome da sua nova lista e executar o SQL novamente.

INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);

5. Configurando o Postfix

De volta à linha de comando. Precisamos executar:

postconf -e 'relay_domains = lists.exemplo.com'   
postconf -e 'mailman_destination_recipient_limit = 1'   
/etc/init.d/postfix reload

6. Desativar Greylisting

Agora você provavelmente vai querer desativar o Greylisting. O Greylisting simplesmente retorna todos os e-mails que recebe de um novo remetente. Se o remetente tentar enviar novamente em um tempo, provavelmente não é um bot de spam. É muito eficaz para parar spam, mas muitas vezes significa atrasos entre alguém te enviando um e-mail e você recebendo. No caso do Mailman, se a mensagem para o Mailman for atrasada por uma hora, faz o sistema parecer não responsivo - especialmente para novos assinantes. Também torna o teste um incômodo. Você não precisa desativá-lo - a próxima parte é opcional.

Edite /etc/postfix-policyd.conf:

[...]
GREYLISTING=0
[...]

Agora reinicie o serviço de política do Postfix:

/etc/init.d/postfix-policyd restart

7. Configurando o Mailman

Vamos dizer ao Mailman para enviar e-mails de @exemplo.com em vez de @lists.exemplo.com. No entanto, todos os links que ele envia precisam vir do domínio lists.exemplo.com. Isso porque vamos configurar um domínio virtual apenas para o Mailman.

pico /etc/mailman/mm_cfg.py
[...]
DEFAULT_URL_PATTERN = 'http://%s/'
[...]
DEFAULT_EMAIL_HOST = 'exemplo.com'
[...]
DEFAULT_URL_HOST = 'lists.exemplo.com'

8. Configurando o Apache

Estamos quase lá. Precisamos apenas configurar o servidor Apache para servir o site do Mailman sempre que formos a lists.exemplo.com. Não se esqueça de configurar este domínio em /etc/hosts ou seu servidor de nomes.

pico /etc/apache2/sites-available/mailman
ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/
Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /images/mailman/ /usr/share/images/mailman/

    AllowOverride None
    Options ExecCGI
    AddHandler cgi-script .cgi
    Order allow,deny
    Allow from all
    Satisfy Any


    Options FollowSymlinks
    AllowOverride None
    Order allow,deny
    Allow from all


    AllowOverride None
    Order allow,deny
    Allow from all


    ServerName lists.exemplo.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

Agora só precisamos habilitar este host virtual.

a2ensite mailman   
mkdir /var/www/lists   
apache2ctl restart

9. Criando sua primeira lista

A primeira lista do Mailman é sempre “mailman”. Para criar esta lista, execute:

newlist mailman

Preencha o endereço de e-mail e a senha do seu administrador. Ele pedirá que você pressione Enter para notificar o administrador. Quando você fizer isso, você não receberá um e-mail imediatamente. Temos mais uma etapa a fazer:

/etc/init.d/mailman start

Uma vez que fizermos isso, o administrador da lista deve receber um e-mail com um link para a interface de administração da nova lista.

Se isso funcionar, você também vai querer testar assinaturas (basta enviar um e-mail em branco para [email protected]). Se você receber uma confirmação de assinatura de volta e conseguir clicar no link, então provavelmente tudo está funcionando 100%. Se não, entre em pânico! Quero dizer, dê uma olhada em /var/log/mail.log para ter uma ideia do que está dando errado.

Dica: para ficar de olho no log de e-mails, use:

tail -f /var/log/mail.log

Se você precisar tentar recriar a lista do Mailman, primeiro execute:

rmlist mailman

10. Criando mais listas

Para criar uma lista chamada “listname”, primeiro adicione os aliases da nova lista à tabela de aliases no banco de dados MySql vmail:

INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'exemplo.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);

Uma vez que isso esteja feito, execute este comando para criar uma nova lista:

newlist listname

Divirta-se com seu novo servidor Mailman! Espero que você crie algumas grandes comunidades de e-mail.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.