Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile
Visite também: Ipok ·  Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Lan University

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Mailman com Postfix e Domínio Virtual

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.

Instalação pelo Ports

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',

Configuração do Apache

É 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

Configuração do Postfix

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

Configuração do Mailman

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.

Criando lista administrativa

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!

Problemas ao criar uma lista

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!

Definindo uma senha mestre para o Mailman

Essa senha mestra pode ser utilizada no lugar das senhas individuais das listas. Para cria-la, use o comando:

  # /usr/local/mailman/bin/mmsitepass

Iniciando e parando o Mailman

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"

Criando uma lista com a interface web

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!

Alterando o domínio da lista

Após fazer todos os testes e entender o funcionamento do Mailman, você pode querer usar seus domínios virtuais, para isso:

  • Crie a lista normalmente. O domínio criado será o padrão definido do arquivo Defaults.py;

  • Via interface administrativa, em "Opções Gerais" -> "Nome de Máquina" altere para o domínio desejado;

  • Altere o arquivo $mailman/data/virtual-mailman conforme abaixo:

      # 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-teste
    
    Para:

      # 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
    

  • Rode o comando "# postmap virtual-mailman" e veja se o arquivo .db foi criado, se suas permissões estão corretas e etc.

Agradecimentos

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.

Referências

Caso você tenha problemas, segue os links que usei de consulta:

 

 

Veja a relação completa dos artigos de Tiago Cruz

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.98/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (2033 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
3ª geração do Under Servidor Cloud




 

Scrum Guia Prático para Projetos Ágeis