De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Tiago Cruz
Data de Publicação: 29 de Setembro de 2005
O Mailman é um sistema utilizado para administrar listas de discussão ou listas de informativos (as famosas newsletter) similar aos conhecidos Majordomo ou Smartmail. A vantagem é que, além de muito mais fácil de configurar, o Mailman possui administração via Web, onde o administrador pode gerenciar o sistema de sua mesa de trabalho, usando um browser comum. Ele possui também filtros de conteúdo, arquivamento das mensagens enviadas para a lista, moderação de membros, filtros anti-spam dentre [várias outras funcionalidades http://www.gnu.org/software/mailman/].
O Mailman é utilizado para gerenciar as listas de projetos como o KDE, Gnome, SaMBa e usado em empresas com a Red Hat, Apple, Sun, Conectiva dentre outras. O mesmo está disponível para vários sabores de Unix (incluindo Linux e FreeBSD) e irei listar abaixo um guia rápido de instalação para a integração com um ambiente já funcionando com Postfix e MySQL.
Este documento é feito sob um FreeBSD 5.4, mas pode ser facilmente adaptado para as demais variações do Unix.
Irei compilar o Mailman 2.1.6_1 usando o ports do FreeBSD, mas é necessário tomar cuidado para compilar o mesmo usando o Group ID (GID) próprio para o uso com o Postfix, visto que o padrão é o Sendmail. Esta configuração é necessária para evitar a menssagem "Group mismatch error" durante a utilização do mesmo. Caso use um MTA diferente do Postfix, consulte a documentação para ver outros GID's de grupos que podem (devem) ser utilizados em tempo de compilação.
Você pode usar pacotes binários se preferir. Tenho notícias que o pacote da Conectiva e da Mandrake vem compilado já com esse suporte ao Postfix.
# cd /us/ports/mail/mailman # make deinstall # vi Makefile # Set: MAIL_GID?= mailman # make install clean
É possível configurar o portupgrade para sempre compilar o Mailman com esse GID. Para isso, adicione na seção MAKE_ARGS do arquivo /usr/local/etc/pkgtools.conf a seguinte linha: 'mail/mailman' => 'MAIL_GID=mailman',
É necessário incluir algumas linhas no httpd.conf do Apache para a administração via browser. Na documentação oficial diz que as linhas ScriptAlias e a linha Alias é suficiente, mas para mim não funcionou.
ScriptAlias /mailman "/usr/local/mailman/cgi-bin" <Directory "/usr/local/mailman/cgi-bin"> AllowOverride None Options none Order allow,deny Allow from all </Directory> Alias /pipermail "/usr/local/mailman/archives/public" <Directory "/usr/local/mailman/archives/"> AllowOverride None Options +FollowSymlinks Order allow,deny Allow from all </Directory>
O primeiro bloco evita o errro "client denied by server configuration" e o segundo evita o primeiro e mais o erro "Symbolic link not allowed" :)
Após dar um restart em seu Apache, a interface gráfica deve estar disponível pelo endereço http://localhost/mailman/listinfo
Estas são as alterações necessárias no main.cf <http://main.cf> Postfix. Para maiores detalhes, consulte a documentação do mesmo.
Recomendo que não faça o reload no postfix por enquanto, pois ainda não temos os arquivos $mailman/data/*
owner_request_special = no recipient_delimiter = + virtual_alias_maps = hash:/usr/local/mailman/data/virtual-mailman, mysql:/usr/local/etc/postfix/mysql/mysql_virtual_alias_maps.cf alias_maps = hash:/usr/local/mailman/data/aliases, hash:/usr/local/etc/postfix/aliases
No arquivo $mailman/Mailman/Defaults.py:
DEFAULT_EMAIL_HOST = 'dominioprincipal.com <http://dominioprincipal.com>' DEFAULT_URL_HOST = 'host.dominio.com <http://host.dominio.com>' DEFAULT_URL_PATTERN = 'http://%s/mailman/' DEFAULT_SERVER_LANGUAGE = 'pt_BR'
Em DEFAULT_EMAIL_HOST é interessante deixar o domínio principal de sua máquina, o que terá mais listas sob seu domínio.
Em DEFAULT_URL_HOST será o endereço a ser acessado via browser. Eu estou usando o hostname da máquina.
No arquivo $mailman/Mailman/mm.py:
MTA = "Postfix" POSTFIX_STYLE_VIRTUAL_DOMAINS = ['virtual1.net <http://virtual1.net>', ' virtual2.com.br <http://virtual2.com.br>', 'virtual3.com<http://virtual3.com>', 'virtual4.org <http://virtual4.org>'] add_virtualhost('www.virtual1.net <http://www.virtual1.net>', 'virtual1.net<http://virtual1.net> ') add_virtualhost('www.virtual2.com.br <http://www.virtual2.com.br>', ' virtual2.com.br <http://virtual2.com.br>') add_virtualhost('www.virtual3.com <http://www.virtual3.com>', 'virtual3.com<http://virtual3.com> ') add_virtualhost('www.virtual4.org <http://www.virtual4.org>', 'virtual4.org<http://virtual4.org> ')
Neste arquivo fica a lista de todos os domínios virtuais que o mailman poderá responder.
No arquivo $mailman/data/virtual-mailman:
Crie este arquivo com uma linha pertencendo ao usuário "mailman":
virtual-alias.sagatiba.com <http://virtual-alias.sagatiba.com> anything
O Mailman deverá atualiza-lo a cada lista que você criar ou remover, junto com um arquivo chamado virtual-mailman.db. Este é o arquivo que o postfix irá ler para achar seu usuário chamado <lista-subscribe (a) dominio com br>, por exemplo.
Se esse arquivo não estiver sendo atualizado, você verá mensagens de //"user unknow"// nos logs do seu postfix.
Utilize os comandos abaixo para criar uma lista chamada 'mailman', que servirá para tarefas administrativas.
# cd /usr/local/mailman # bin/newlist mailman # bin/config_list -i data/sitelist.cfg mailman
Este último comando fará com que seja atribuída a esta lista uma configuração inicial padrão.
Aproveite para colocar os agendamentos do Mailman no cron:
# cd cron # crontab crontab.in <http://crontab.in>
Atenção: Faça um backup do seu cron atual, caso já possua algum agendamento!
Você pode usar o comando "bin/check_perms -f" para verificar se as permissões estão corretas.
O comando "bin/genaliases" deve ser capaz de criar os arquivos "data/aliases*" para você, mas mesmo assim verifique as permissões do mesmo!
Olhe também os logs de acesso em "logs/error" em caso de problemas.
Olhe, em especial, a permissão dos arquivos em "data/aliases*" e "data/virtual-mailman*" pois os arquivos devem pertencer ao usuário "mailman" e isso é responsável por uma grande parcela dos problemas. Verifique no momento da criação da lista se os arquvios aliases.db e virtual-mailman.db são criados (ou atualizados), isso é fundamental para o funcionamento correto do sistema!
Essa senha mestra pode ser utilizada no lugar das senhas individuais das listas. Para cria-la, use o comando:
# /usr/local/mailman/bin/mmsitepass
No diretório $mailman (/usr/local/mailman) use:
# bin/mailmanctl stop
# bin/mailmanctl start
Use sempre que alterar os arquivos "Mailman/mm.py" e/ou "Mailman/Defaults.py"
A mesma já deve estar acessível via http://ip_do_server/mailman/create
Após criar, verifique (novamente!) os arquivos em $mailman/data/*
Note que a lista será criada com seu domínio padrão e que não será possível altera-lo durante a criação da lista!
Após fazer todos os testes e entender o funcionamento do Mailman, você pode querer usar seus domínios virtuais, para isso:
# STANZA START: lista-teste # CREATED: Wed Aug 17 11:22:08 2005 lista-info@dominioprincipal.com lista-linfo lista-info-admin@dominioprincipal.com lista-linfo-admin lista-info-bounces@dominioprincipal.com lista-linfo-bounces lista-info-confirm@dominioprincipal.com lista-linfo-confirm lista-info-join@dominioprincipal.com lista-linfo-join lista-info-leave@dominioprincipal.com lista-linfo-leave lista-info-owner@dominioprincipal.com lista-linfo-owner lista-info-request@dominioprincipal.com lista-linfo-request lista-info-subscribe@dominioprincipal.com lista-linfo-subscribe lista-info-unsubscribe@dominioprincipal.com lista-linfo-unsubscribe # STANZA END: lista-testePara:
# STANZA START: lista-teste # CREATED: Wed Aug 17 11:22:08 2005 lista-info@virtual2.com.br lista-linfo lista-info-admin@virtual2.com.br lista-linfo-admin lista-info-bounces@virtual2.com.br lista-linfo-bounces lista-info-confirm@virtual2.com.br lista-linfo-confirm lista-info-join@virtual2.com.br lista-linfo-join lista-info-leave@virtual2.com.br lista-linfo-leave lista-info-owner@virtual2.com.br lista-linfo-owner lista-info-request@virtual2.com.br lista-linfo-request lista-info-subscribe@virtual2.com.br lista-linfo-subscribe lista-info-unsubscribe@virtual2.com.br lista-linfo-unsubscribe # STANZA END: lista-teste
Agredeço aos meus colegas de profissão que ajudaram a documentar todo esse processo, desde a correção ortográfica até a escolha da licensa do documento, passando por toda a parte técnica da implementação em si.
Caso você tenha problemas, segue os links que usei de consulta:
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários