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 tzdataA ú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 -fNOTA: 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.localdomainAgora só precisamos dizer ao sistema para registrar a mudança:
/etc/init.d/hostname.sh
hostname -fAgora 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.shO 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 mailmanVocê 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 reload6. 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 restart7. 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/mailmanScriptAlias /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 restart9. Criando sua primeira lista
A primeira lista do Mailman é sempre “mailman”. Para criar esta lista, execute:
newlist mailmanPreencha 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 startUma 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.logSe você precisar tentar recriar a lista do Mailman, primeiro execute:
rmlist mailman10. 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 listnameDivirta-se com seu novo servidor Mailman! Espero que você crie algumas grandes comunidades de e-mail.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.