MAC 433 - Administração de Sistemas Unix

EZMLM & EZMLM-IDX

Versão 0.61

Autores:

David Correa Martins Júnior
Ulisses Kendi Hayashida
Wagner César Bruna

URL:

http://www.ime.usp.br/~wbruna/ezmlm.html

Conteúdo

O que é o ezmlm?

EZMLM (como o próprio nome diz) é um pacote gerenciador de listas de distribuição de emêios. Ele provê distribuição e armazenamento de mensagens e gerencia inscrição automática de usuários. Também inclui suporte para tratamento de falhas no envio de mensagens (bounce) e para recuperação posterior de mensagens arquivadas.

O ezmlm é de autoria de (adivinhe) Dan J. Bernstein, e é baseado no gerenciador de emêio qmail.

EZMLM-IDX é um envenenamento do ezmlm, escrito e mantido por Fred Lindberg e Fred B. Ringel. Ele adiciona diversas funcionalidades ao ezmlm, como recuperação de conjuntos de mensagens, moderação e armazenamento em banco de dados, além de algumas funções de administração remota.

Requerimentos

O funcionamento do ezmlm depende do agente de transporte qmail; nosso roteiro de instalação assume que o qmail está instalado e rodando alegremente.

Instalação

O ezmlm é distribuído na forma de código-fonte (em C). O ezmlm-idx é na verdade um patch (ugh) do ezmlm; sua compilação depende da alteração dos arquivos fonte do ezmlm. Na nossa rede Linux apenas o ezmlm está instalado (assim como na rede do Ime), mas o ezmlm-idx funciona normalmente mesmo como uma instalação local.

Infelizmente, não tivemos qualquer problema sério para instalar e configurar o ezmlm e o ezmlm-idx. A seguir há uma descrição do que tivemos que fazer para instalar os dois pacotes (os passos marcados com "(idx)" são necessários apenas para o ezmlm-idx):

- Descompactamos o ezmlm em um diretório temporário, "$EZ_INST";

- (idx) Descompactamos o ezmlm-idx em outro diretório, e movemos os arquivos para o diretório do ezmlm (esquisito, né? Isso inclusive sobrescreveu alguns arquivos. Mas é isso mesmo que os readme da vida mandam fazer);

- (idx) Aplicamos o patch, com o seguinte comando:

[$EZ_INST]$ patch < idx.patch

- Depois compilamos os binários e man pages:

[$EZ_INST]$ make; make man

- Editamos os arquivos conf-bin (local de instalação dos binários) e conf-man (idem das man pages) para apontar para um subdiretório debaixo do home (infelizmente nós não temos acesso de root na rede linux...). Ah, o diretório do ezmlm não precisa estar no path.

- (finalmente!) instalamos os pacotes:

[$EZ_INST]$ make setup

- Deu tudo certo, e saímos para comemorar.

Configuração

Não há nenhum arquivo de configuração a ser editado após a instalação, pois a configuração para cada lista criada é completamente independente. O ezmlm-idx inclui arquivos de configuração globais ou por usuário, que modificam o comportamento de alguns programas, mas não é realmente necessário alterar os arquivos default (tudo funciona perfeitamente bem mesmo sem esses arquivos).

Uso

As listas de discussão geradas pelo ezmlm reconhecem alguns comandos remotos, através de mensagens enviadas para endereços especiais. Se, por exemplo, a lista de discussão se chamar homer-piadas@linux.ime.usp.br, os comandos serão da forma homer-piadas-comando@linux.ime.usp.br:

homer-piadas-help@linux.ime.usp.br

Fornece uma mensagem genérica de ajuda, informando ao usuário (ou ao futuro usuário) as opções mais importantes.

homer-piadas-subscribe-maggie=simpsons.org@linux.ime.usp.br,
homer-piadas-unsubscribe-bart=simpsons.org@linux.ime.usp.br

Causam a inscrição e a remoção, respectivamente, dos usuários maggie@simpsons.org e bart@simpsons.org. É lógico que eles vão ter que confirmar o pedido.

homer-piadas-get.123=simpsons.org@linux.ime.usp.br

Retorna a 123a. piada armazenada na lista.

O ezmlm-idx adiciona grande funcionalidade aos comandos de recuperação de mensagens arquivadas, como listagens e reenvio de conjuntos de mensagens. Também adiciona comandos de informação (além da mensagem genérica de ajuda) e suporte para conjuntos ordenados de mensagens (digests):

homer-piadas-query@linux.ime.usp.br

Responde se seu endereço pertence à lista.

homer-piadas-get@linux.ime.usp.br

Obtem as últimas 30 mensagens da lista. Se a lista digest existir, retorna a última mensagem da lista digest. Esse comando também pode ser utilizado para recuperar conjuntos específicos de mensagens (ordem de chegada). O comando get nunca retorna mais do que 100 mensagens de uma só vez.

homer-piadas-index@linux.ime.usp.br

Retorna o assunto e o remetente das mensagens arquivadas na lista. Também aceita o pedido de um conjunto específico de mensagens.

homer-piadas-thread.45@linux.ime.usp.br

Retorna um conjunto de mensagens que têm o mesmo assunto da mensagem 45. Coisas como "Re:" são ignoradas.

homer-piadas-faq@linux.ime.usp.br, homer-piadas-info@linux.ime.usp.br

Podem retornar mensagens de ajuda alternativas.

homer-piadas-digest-subscribe@linux.ime.usp.br, homer-piadas-digest-unsubscribe@linux.ime.usp.br

Respectivamente, inscrevem ou removem o usuário da lista de distribuição de digests.

Administração

Agora vem a parte mais divertida: a criação e a manutenção de uma lista de discussão! E você pode ter uma no seu home! Mas tenha sempre um adulto por perto.

O comando para a criação de uma nova lista é:

[~]$ ezmlm-make ~/piadas ~/.qmail-piadas homer-piadas linux.ime.usp.br
                |        |               |            |
                |        |               |            +-> hostname
                |        |               +-> usuário-nome_da_lista
                |        +-> arquivo de distribuição do qmail
                +-> diretório onde as tranqueiras da lista serão colocadas

ezmlm-make irá criar um diretório chamado piadas (e entupi-lo de arquivinhos de configuração; o diretório de armazenamento de mensagens também vai ficar nele), e criar links simbólicos para o qmail no diretório home. Sim, é SÓ isso; a lista está pronta pra ser usada, com inscrição automática e tudo (e tem professores que ainda usam a users-bcc como lista de discussão de disciplina...). O endereço dessa lista será homer-piadas@linux.ime.usp.br.

A entrega de mensagens depende de uma característica do qmail, que trata os endereços homer-qualquercoisa como endereços de distribuição diferentes (tipo listas de discussão) do usuário homer. Assim, os usuários não conseguirão criar uma lista chamada minhalista@linux.ime.usp.br contando apenas com ezmlm + qmail.

Já podem ser acrescentados alguns usuários à lista, com o comando

[~]$ ezmlm-sub ~/piadas homer@linux.ime.usp.br maluf@mas.faz ...
               |        |
               |        +-> endereços a inscrever
               +-> diretório da lista

Pode ser especificado qualquer número de endereços na linha de comando.

Para listar os usuários:

[~]$ ezmlm-list ~/piadas
                |
                +-> diretório da lista

E para remover:

[~]$ ezmlm-unsub ~/piadas lisa@linux.ime.usp.br barbeiro@richello.br ...
                 |        |
                 |        +-> endereços a remover
                 +-> diretório da lista

Muuuito fácil. O programa ezmlm-make (utilizando o patch idx) também é capaz de alterar as propriedades de uma lista, por exemplo:

[~]$ ezmlm-make -e -P ~/piadas

irá configurar a lista para não aceitar pedidos remotos.

Funcionamento

O pacote ezmlm utiliza a filosofia Unix de pequenos programas limitados, de funcionalidade bem definida, que podem ser facilmente combinados. Isso permite alto grau de flexibilidade e personalização dos serviços.

O ezmlm, assim como o qmail, foi escrito visando alto desempenho e confiabilidade - mesmo enfrentando problemas como tilts do NFS ou apagões. Ele utiliza-se de algumas técnicas raramente utilizadas em gerenciadores de lista, como o armazenamento de endereços de emêio em uma tabela de hash. Arquivos importantes são escritos de forma segura, evitando possibilidades de inconsistência causada por quebras do sistema.

Além disso, o ezmlm utiliza algumas inovações. Ele possui um sistema de detecção e tratamento de falhas na entrega de mensagens (bounce). Se as mensagens não puderem ser enviadas para um endereço por muito tempo, ele é automaticamente removido da lista.

Outra inovação é a utilização de cookies criptográficos, para garantir autenticidade nas requisições dos usuários e prevenir aceitação de mensagens forjadas.

O ezmlm oferece suporte a bancos de dados SQL. Isso permite utilizar um banco de dados de endereços facilmente acessíveis para outros sistemas, como ODBC, perl, java, PHP; a confiabilidade do sistema também aumenta. A desvantagem é que os binários gerados pelo SQL Server são muito grandes, além de ter de confiar os endereços a um enorme banco de dados (violando a filosofia adotada pelo ezmlm de pequenos componentes independentes).

Mecanismo de entrega

As mensagens são entregues pelo qmail de acordo com o arquivo .qmail de configuração da lista (por exemplo, ~/.qmail-piadas).

Em seguida são enviadas para o programa ezmlm-reject, que verifica se a mensagem deve ser descartada (podendo avaliar o campo Subject:, o conteúdo MIME e o tamanho da mensagem). O ezmlm-reject rejeita também todas as mensagens nas quais o endereço da lista não esteja presente nos campos To: ou Cc:; isso bloqueia boa parte do spam e coisas do gênero.

Utilizando o ezmlm-idx, a lista pode ser configurada para aceitar apenas mensagens de remetentes que pertençam ao envelope SENDERS. Se esta opção estiver ativada, o programa ezmlm-issubn verificará se o remetente é um usuário. Se não for um usuário, o programa a rejeitará se a lista for comum (sem moderação); em uma lista moderada, o ezmlm-issubn enviará a mensagem ao programa ezmlm-gate. O ezmlm-gate mandará a mensagem para o ezmlm-store, caso o remetente não pertença ao conjunto do envelope SENDERs; caso contrário, a mensagem será enviada ao programa ezmlm-send. Este é encarregado de distribuir as mensagens para os usuários da lista.

Se a lista for moderada, antes de a mensagem ser distribuída, o ezmlm-store irá enfileirar a mensagem na caixa postal do moderador. Cabe ao moderador decidir se a mensagem deve ser rejeitada ou distribuída.

Depois que a mensagem é distribuída, pode haver erros na entrega em uma ou mais caixas postais. O ezmlm-warn é encarregado de detectar e tratar esses erros (bounces).
 

Últimas versões

  • ezmlm: 0.53 alpha (29/06/1997)
  • ezmlm-idx: 0.40 (20/12/1999)
  • ezmlm Manual: 0.32 (10/03/1999)
  • ezmlm Faq: 0.40 (22/11/1999)
  • Licença de uso

    As informações contidas nesse documento podem ser copiadas e utilizadas livremente, desde que seja mantida uma referência para o texto original e seus autores.

    Os pacotes ezmlm e ezmlm-idx são livres, distribuídos pela licença GNU.

    Bibliografia

    A documentação oficial é de excelente qualidade, apesar de ser um pouco desatualizada; as outras referências que encontramos não acrescentaram nada de novo.
  • Documentação oficial: EZMLM/IDX Manual e EZMLM/IDX Faq
  • Man pages, incluídas na própria distribuição
  • Outras Referências

  • o comando 'apropos ezmlm' lista as man pages disponíveis do ezmlm
  • página oficial do EZMLM/IDX
  • qmail: a replacement for sendmail
  • Críticas e Sugestões

    Podem ser enviadas para qualquer um de nós. Mas pega leve.

    ^Z