Preparação do Exame do LPI: Correio e Notícias

Tópico 206 Administração de Nível Intermediário (LPIC-2)

Este é o segundo de sete tutoriais que abrangem a administração de rede intermediária no Linux . Neste tutorial, David Mertz discute como usar o Linux como um servidor de correio e de notícias. De modo geral, o email é provavelmente o principal uso da Internet e o Linux é talvez a melhor plataforma para serviços de email. Este tutorial abrange transporte de correio, filtragem de correio local e software de manutenção de lista de emails. Ele também discute brevemente o software do servidor para o protocolo NNTP.

29 de março de 2012 - Em resposta ao feedback do leitor, os URLs foram atualizados para os links "página inicial INN", "Programa LPIC" e "lista de livros Sendmail" em Recursos.

David Mertz, Developer, Gnosis Software

David MertzDavid Mertz escreve as colunas do developerWorks Charming Python e XML Matters desde 2000. Confira o seu livro Text Processing in Python. Para saber mais sobre David, consulte sua página da web pessoal.



19/Abr/2012

Antes de Iniciar

Saiba o que estes tutoriais podem ensiná-lo e como é possível obter o melhor deles.

Sobre esta Série

O Linux Professional Institute (LPI) certifica administradores de sistema Linux em dois níveis: nível júnior (também chamado "nível de certificação 1") e nível intermediário (também chamado "nível de certificação 2"). Para alcançar certificação de nível 1, é preciso passar nos exames 101 e 102; para alcançar certificação de nível 2, é preciso passar nos exames 201 e 202.

O developerWorks oferece tutoriais para ajudá-lo a se preparar para cada um dos quatro exames. Cada exame abrange diversos tópicos e cada tópico tem um tutorial de autoestudo correspondente no developerWorks. Para o exame 202 do LPI, os sete tópicos e os tutoriais correspondentes do developerWorks são:

Tabela 1. Exame 202 do LPI: Tutoriais e tópicos
Tópico do exame 202 do LPItutorial do developerWorksResumo do tutorial
Tópico 205Preparação do exame 202 do LPI (tópico 205):
Configuração de rede
Aprenda como configurar uma rede TCP/IP de configuração básica, desde a camada de hardware (geralmente Ethernet, modem, ISDN ou 802.11) até o roteamento de endereços de rede.
Tópico 206 Preparação do exame 202 do LPI (tópico 206):
Correio e notícias
(Este tutorial) Aprenda como usar o Linux como um servidor de correio e de notícias. Aprenda sobre transporte de correio, filtragem de correio local, software de manutenção de lista de emails e software de servidor para o protocolo NNTP. Veja objetivos detalhados abaixo.
Tópico 207 Preparação do exame 202 do LPI (tópico 207):
DNS
Em breve
Tópico 208 Preparação do exame 202 do LPI (tópico 208):
Serviços da web
Em breve
Tópico 210 Preparação do exame 202 do LPI (tópico 210):
Gerenciamento de cliente de rede
Em breve
Tópico 212 Preparação do exame 202 do LPI (tópico 212):
Segurança do sistema
Em breve
Tópico 214 Preparação do exame 202 do LPI (tópico 214):
Resolução de problemas de rede
Em breve

Para começar a se preparar para a certificação de nível 1, consulte os tutoriais do developerWorks para o exame 101 do LPI. Para se preparar para o outro exame em certificação de nível 2, consulte os tutoriais do developerWorks para o exame 201 do LPI. Leia mais sobre o conjunto inteiro de tutoriais do LPI do developerWorks.

O Linux Professional Institute não endossa nenhum material de preparação do exame de terceiro ou técnicas em particular. Para detalhes, entre em contato com info@lpi.org.

Sobre este Tutorial

Bem-vindo ao "Correio e notícias", o segundo de sete tutoriais que abrangem a administração de rede intermediária no Linux. Este tutorial ensina como usar o Linux como um servidor de correio e de notícias. Ele abrange transporte de correio, filtragem de correio local e software de manutenção de lista de email. Também discute brevemente o software do servidor para o protocolo NNTP.

Ele é organizado de acordo com os objetivos do LPI para este tópico. De um modo bastante geral, espera-se mais questões para objetivos com peso mais alto no exame.

Tabela 2. Correio e notícias: Objetivos do exame abrangidos neste tutorial
Objetivo do exame do LPIPeso do objetivoResumo do objetivo
2.206.1
Configurando listas de emails
Peso 1Instale e mantenha listas de emails usando o Majordomo. Monitore problemas do Majordomo visualizando seus logs.
2.206.2
Usando o Sendmail
Peso 4Gerencie uma configuração de Sendmail incluindo aliases de email, cotas de correio e domínios virtuais de correio. Este objetivo inclui configuração de retransmissões internas de correio e monitoramento de servidores SMTP.
2.206.3
Gerenciando o tráfego de correio
Peso 3Implemente o software de gerenciamento de correio de cliente para filtrar, classificar e monitorar o recebimento de correio do usuário. Este objetivo inclui o uso de software, como o Procmail, no lado do servidor e do cliente.
2.206.4
Entregando notícias
Peso 1Instale e configure servidores de notícias usando o INN. Este objetivo inclui a customização e o monitoramento de grupos de notícias entregues.

Pré-requisitos

Para obter o máximo deste tutorial, é preciso já ter um conhecimento básico de Linux e um sistema Linux funcional no qual seja possível praticar os comandos abrangidos neste tutorial.


Sobre Correio e Notícias

O amplo uso do Linux para servidores de correio e de notícias levou ao desenvolvimento de ferramentas melhoradas no decorrer do tempo. Quando os exames de certificação do LPI foram desenvolvidos, as ferramentas mais populares eram o Sendmail para transporte de correio, o Procmail para manipulação de correio local, o Majordomo para listas de distribuição e o innd (daemon InterNetNews) para NNTP. O último deles provavelmente ainda é a escolha padrão para notícias; porém, apesar de sua força tecnológica, o protocolo NNTP foi, de alguma forma, ofuscado pelas listas de de emails e fóruns de discussão baseados na web.

Das outras ferramentas, o Sendmail e o Procmail ainda são amplamente utilizados, embora não de forma tão onipresente como já foram. A atualização ou substituição mais popular para o Sendmail é o postfix, que contém recursos para compatibilidade reversa com o Sendmail. O campo de manipulação de correio local está preenchido com muitas opções, mas o Procmail ainda é popular. Por outro lado, o Majordomo é um anacronismo frágil atualmente. Assim como o Majordomo substituiu amplamente o software de listserv anterior, o mailman ofuscou o Majordomo recentemente. Porém, para corresponder às áreas do tópico do LPI atuais, este tutorial discute o Majordomo.

Outros recursos

Assim como com a maioria das ferramentas Linux, é sempre útil examinar as man pages para quaisquer utilitários discutidos. Versões e comutadores podem mudar entre versão de utilitário ou de kernel, ou com diferentes distribuições do Linux. Para informações mais detalhadas, o Projeto de Documentação do Linux tem uma variedade de documentos úteis, especialmente seus HOWTOs. Consulte a seção Recursos para um link. Uma variedade de livros sobre rede Linux foi publicada; o TCP/IP Network Administration, de Craig Hunt, da O'Reilly, é bastante útil (encontre aqui edição mais recente; consulte Recursos para obter um link).


Configurando Listas de Emails

O que o Majordomo faz?

Um programa gerenciador de lista de emails é basicamente uma extensão local para um programa de transporte de correio (MTA), como o Sendmail. Basicamente, o MTA que é executado em um sistema passa um conjunto de endereços para o controle do gerenciador de lista de emails e este modifica, processa e talvez reenvia as mensagens de email que recebe. Algumas mensagens recebidas por um gerenciador de lista de emails são mensagens destinadas para distribuição para a própria lista de emails (talvez precisando ser verificadas quanto à permissão para distribuir para a(s) lista(s)). Outras mensagens são mensagens de controle que mudam o status da lista de distribuição, como as opções de assinatura de um assinante particular. Um gerenciador de lista de distribuição não executa a própria entrega de mensagem, mas passa essa função para seu MTA de suporte.

Conforme definido na introdução deste tutorial, o Majordomo não é atualmente a opção de ponta para listas de emails. Em vez dele, a melhor escolha para uma nova instalação de uma lista de emails é provavelmente o Mailman. O Majordomo, porém, ainda é perfeitamente funcional e está instalado em muitos sistemas mais antigos que continuam a operar sem problema (às vezes, listas de suporte que estão operacionais por muitos anos).

Porém, há uma falha nas versões do Majordomo. Há alguns anos, uma reescrita do Majordomo série 1.x foi iniciada, chamada Majordomo2. Infelizmente, essa reescrita fracassou sem mesmo alcançar o status da liberação. Embora o Majordomo2 (em uma versão beta) possa ser usado em um número bem pequeno de sistemas, o Majordomo 1.9.5 é a versão estável mais recente e é a discutida neste tutorial.

Instalando o Majordomo

É possível obter um archive do software Majordomo em seu site (consulte Recursos para obter um link).

Após a descompactação de um arquivo que será nomeado como majordomo-1.94.5.tgz ou algo parecido, certifique-se de ler o arquivo INSTALL cuidadosamente. É preciso seguir todas as etapas descritas nele para obter um sistema Majordomo funcional. O desenvolvimento do sistema usa as etapas make; make install da maioria das instalações de origem, assim como make install-wrapper. A instalação pode e deve verificar a si própria com um comando, como o cd /usr/local/majordomo-1.94.5; ./wrapper config-test (make install fornece detalhes em uma mensagem).

Antes de desenvolver, modifique o Makefile e crie e/ou modifique o majordomo.cf. Como um ponto de início, é possível copiar o último arquivo do sample.cf na distribuição de origem. No Makefile, diversas variáveis de ambiente são configuradas, mas a mais fundamental e sutil delas provavelmente seja W_GROUP. Esse é o gid numérico do grupo sob o qual o Majordomo executará, quase sempre o grupo "daemon". O gid para daemon é 1 na maioria dos sistemas, mas certifique-se de verificar utilizando o seguinte:

$ id daemon
uid=1(daemon) gid=1(daemon) groups=1(daemon)

Outras variáveis em Makefile incluem PERL para o caminho ao interpretador e W_HOME para o local no qual o Majordomo será instalado.

Seu novo arquivo majordomo.cf também precisa ser editado antes do make install. As variáveis Perl que precisam ser modificadas aparecem perto da parte superior do arquivo. Ajuste definitivamente $whereami e $homedir e examine as demais para certificar-se de que são adequadas.

Informando o Sendmail para usar o Majordomo

A etapa final na instalação é convencer o Sendmail a conversar com o Majordomo. Dentro do arquivo /etc/sendmail.cf, isso envolve uma linha como esta:

OA/path/to/majordomo/majordomo.aliases

Caso o processador M4 seja utilizado para gerar arquivos de configuração do Sendmail, é possível usar uma linha como esta:

define(`ALIAS_FILE',`/etc/aliases,/path/to/majordomo/majordomo.aliases')

A amostra majordomo.aliases contém alguns valores de amostra:

Listagem 1. majordomo.aliases de amostra
majordomo:  "|/usr/test/majordomo-1.94.5/wrapper majordomo"
majordomo-owner: you
owner-majordomo: you
test:           "|/usr/test/majordomo-1.94.5/wrapper resend -l test test-list"
test-list:      :include:/usr/test/majordomo-1.94.5/lists/test
owner-test:     you
test-owner:     you
test-request:   you

Estes, é claro, precisam ser customizados para sua configuração particular. Em particular, "you" significa o nome do administrador da lista (que não é necessariamente o administrador do sistema geral).

Criando uma nova lista do Majordomo

A configuração de amostra fornecida acima criou uma lista chamada "test", com endereços para "test-owner", "test-request", etc. para administrar a lista. No uso real, é possível ter listas com outros nomes. Para isso, faça o seguinte:

  1. Alterne para o diretório $listdir, conforme definido no majordomo.cf.
  2. Crie arquivos chamados my-list-name e my-list-name.info (ajuste apropriadamente); o chmod deles para 664. O último arquivo contém uma introdução à lista.
  3. Crie diversos aliases em seu arquivo majordomo.aliases, seguindo o padrão dos exemplos de "test" - por exemplo, "foo-owner", "foo", "foo-request" e assim por diante.
  4. Envie solicitações para subscribe, unsubscribe, signoff e assim por diante, para membros da lista.
  5. Crie um diretório de archive no local especificado pelo $filedir e $filedir_suffix .
  6. Crie um subdiretório de compilação sob $digest_work_dir. Use o mesmo nome da lista de compilação (por exemplo: test-digest).
  7. Certifique-se de que tudo pertença ao usuário majordomo, grupo majordomo e que possa ser gravável pelo proprietário e pelo grupo (em outras palavras, modo 664 para arquivos e modo 775 para diretórios).
  8. Emita um comando config <listname> <listname>admin para o Majordomo. Isso fará com que ele crie um arquivo de configuração padrão para a lista e o envie de volta para você.

Usando o Sendmail

O que o Sendmail faz?

O Sendmail é um Mail Transport Agent (MTA). Ele roteia, modifica e entrega mensagem de correio em sistemas de correio heterogêneos. Com um histórico de alguma forma paralelo àquele do software da lista de emails, o Sendmail tem uma versão "beta permanente" chamada Sendmail X que se destina a ser uma atualização/substituição da série 8.x estável do Sendmail. No entanto, o Mailman suplantou tanto o Majordomo que vários MTAs ofuscaram parcialmente o Sendmail. O líder deste novo MTA é o Postfix, mas o Qmail e o Exim também são amplamente usados. Todavia, o Sendmail ainda continua sendo, pelo menos por uma margem estreita, o MTA mais amplamente usado em sistemas Linux. A partir de 16 de setembro de 2005, o release estável mais recente do Sendmail foi o 8.13.5.

Não foi escrito somente um livro sobre o Sendmail, mas diversos deles. Consulte Recursos para uma lista de livros disponíveis. O mais abrangente deles é o Sendmail, Third Edition (O'Reilly, 2002), de Bryan Costales com Eric Allman. Em 1.232 páginas, este livro abrange muito mais coisas do que pode ser tratado neste tutorial.

Embora o Sendmail, em princípio, suporte diversos protocolos de transporte de correio, como o UUCP, até agora, o mais amplamente usado é o Simple Mail Transport Protocol (SMTP), que aqui inclui o Extended SMTP (ESMTP) para corpos da mensagem codificados MIME aprimorados. No fundo, o correio que não é encaminhado para outros hosts SMTP é entregue ao sistema local colocando mensagens em arquivos locais. Os Mail User Agents (MUAs) locais leem mensagens que o Sendmail (ou outro MTA) coloca em arquivos locais (e frequentemente também busca correio usando POP3 ou IMAP), mas geralmente chamam o Sendmail para entregar mensagens de saída. Alguns MUAs se comunicam, porém, diretamente com serviços SMTP (como instâncias do Sendmail, locais ou remotas) em vez de colocar mensagens na fila do Sendmail para processamento posterior. Geralmente, a fila do Sendmail está em /var/spool/mqueue/.

Instalando o Sendmail

A primeira coisa a fazer é obter uma cópia do software Sendmail atual em sendmail.org (consulte Recursos para um link), por exemplo, sendmail.8.13.5.tar.gz. Descompacte-o da maneira usual. Diferentemente de muitos aplicativos que usam o padrão make; make install , o desenvolvimento do Sendmail é executado com sh Build. Após o desenvolvimento inicial, cd para o subdiretório cf/cf/; copie um arquivo *.mc adequado como sendmail.mc; customize sendmail.mc; e execute o que segue para gerar um arquivo sendmail.cf:

$ m4 ../m4/cf.m4 sendmail.mc > sendmail.cf

Também é possível usar o atalho sh Build sendmail.cf. Isso pode parecer misterioso, mas esses dois comandos geram uma configuração do Sendmail real a partir de um formato mais legível usando o macroprocessador M4. Arquivos sendmail.cf reais, ainda que sejam ASCII editável, são bastante obscuros e somente devem ser modificados minimamente por meio manual.

Finalmente, copie o binário sendmail de um local que será algo como obj.Linux.2.6.10-5-386.i686/sendmail/sendmail para seu local final (faça backup de algum antigo, se existir), normalmente /usr/sbin/ e copie o seu arquivo sendmail.cf para /etc/mail/sendmail.cf. Também é possível fazer o último no subdiretório cf/cf/ com sh Build install-cf. Provavelmente, será preciso su ou sudo para obter permissões de arquivo para os diretórios relevantes.

Diversos utilitários vêm com o Sendmail: makemap, mailstats etc. Cada diretório correspondente tem um LEIA-ME e pode ser instalado executando sh Build install a partir do subdiretório.

O arquivo sendmail.cf

A principal complexidade e função do Sendmail está em seu arquivo sendmail.cf. Esse arquivo de configuração contém algumas definições para o ambiente do Sendmail, mas principalmente ele contém padrões de endereços para regravar e/ou fornecer por meio de certos mecanismos.

Dois mecanismos de regravação que podem ser configurados são o genericstable e o virtusertable, que permitem mapear usuários locais para/de endereços externos. Para qualquer um desses mapeamentos, primeiro é criado um arquivo de aliases como texto simples. Por exemplo:

Listagem 2. Mapeamentos de saída
david                     david.mertz@gmail.com
root                      root@gnosis.cx
dqm@gnosis.lan            david.mertz@gmail.com

Ou para mensagem recebida mapeada para contas locais:

Listagem 3. Mapeamentos de entrada
david@mail.gnosis.cx      david
david@smtp.gnosis.cx      david
david@otherdomain.net     david
@mail.gnosis.cx           %1@external-host.com
owner@list.gnosis.cx      owner%3
jax@bar.com               error:5.7.0:550 Address invalid

Para compilar esses aliases, use o utilitário makemap:

$ makemap dbm /etc/mail/virtusertable < inbound
$ makemap hash /etc/mail/genericstable < outbound

A ativação do uso desses mapas pode ser configurada usando macros M4 em ssendmail.cf (ou em qualquer arquivo de configuração utilizado).

Listagem 4. Ativando mapeamentos em sendmail.cf
DOMAIN(gnosis.cx)dnl
FEATURE(`virtusertable', `dbm /etc/mail/virtusertable')dnl
FEATURE(`genericstable', `hash /etc/mail/genericstable')dnl
GENERICS_DOMAIN_FILE(`/etc/mail/generics-domains')dnl

Diversas coisas estão acontecendo aqui. A macro DOMAIN indica que um arquivo como o cf/domain/gnosis.cx.m4 é usado para macros adicionais. As macros FEATURE ativam o uso de virtusertable e genericstable. A macro GENERICS_DOMAIN_FILE define os domínios que qualificam para o remapeamento de nomes no genericstable.

A regravação seguirá todas as regras indicadas. Em modo de teste (sendmail -bt), é possível examinar a regravação que é executada para endereços específicos. Por exemplo, o uso de genericstable, correio para o usuário local "david" será entregue para david.mertz@gmail.com externamente. Supondo que localhost esteja definido em /etc/mail/generics-domains, o correio para david@localhost irá para o mesmo lugar.

Na outra direção, o correio que chegar para david@mail.gnosis.cx será regravado e entregue para o usuário local "david". Diversos domínios podem ser manipulados pelo Sendmail ao mesmo tempo, assim david@otherdomain.net também será entregue localmente.

O poder integral vem em alguns dos símbolos curinga. Qualquer correio enviado a mail.gnosis.cx que não seja especificamente direcionado para um usuário local será encaminhado para o mesmo nome de usuário em external-host.com. Mas este é um padrão simples. Mais interessante que isso, o %3 pode ser usado para expandir diversas informações de nome extra, assim, owner-foo@list.gnosis.cx e owner-bar@list.gnosis.cx serão entregues para os usuários locais "owner-foo" e "owner-bar", respectivamente (a menos que eles passem por mais regravação). Esses usuários locais podem ser sistemas de processamento de lista de emails ou outros manipuladores de mensagens automatizadas. Como um caso especial, é possível levantar um erro para um determinado endereço, em vez de regravá-lo adicionalmente.

De fato, o que vimos até agora apenas arranhou a superfície das regras de regravação que podem ser incluídas no Sendmail, mas ofereceu uma sensação inicial. Compre um dos grandes livros sobre o tópico para saber mais detalhes.

Executando o Sendmail

O Sendmail pode ser executado em diversos modos. O mais comum é como um daemon que permanece no segundo plano e periodicamente processa sua fila. Por exemplo, a execução de:

$ /usr/sbin/sendmail -bd -q10m

diz ao Sendmail para executar como um daemon e verificar sua fila a cada dez minutos. Também é possível executar o Sendmail uma única vez para processar a fila imediatamente, mas não se tornar um daemon:

$ /usr/sbin/sendmail -q

Conforme mencionado anteriormente, o Sendmail possui um modo de teste para examinar regras de regravação de endereço. Por exemplo (tirado do Guia do Administrador da Rede Linux; consulte Recursos para um link):

Listagem 5. Modo de teste do Sendmail
$ /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 isaac@vstout.vbrew.com
rewrite: ruleset   3   input: isaac @ vstout . vbrew . com
rewrite: ruleset  96   input: isaac < @ vstout . vbrew . com >
rewrite: ruleset  96 returns: isaac < @ vstout . vbrew . com . >
rewrite: ruleset   3 returns: isaac < @ vstout . vbrew . com . >
rewrite: ruleset   0   input: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 199   input: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 199 returns: isaac < @ vstout . vbrew . com . >
rewrite: ruleset  98   input: isaac < @ vstout . vbrew . com . >
rewrite: ruleset  98 returns: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 198   input: isaac < @ vstout . vbrew . com . >
rewrite: ruleset 198 returns: $# local $: isaac
rewrite: ruleset   0 returns: $# local $: isaac

Gerenciando Tráfego de Email

O que o Procmail faz?

O Procmail é um processador de correio. Basicamente, depois que o Sendmail ou outro MTA entregou correio a uma caixa de correio local, é possível usar um MUA para processar o correio em sua caixa de entrada. Algumas mensagens são salvas em várias pastas; outras são excluídas; outras são encaminhadas para várias partes interessadas; algumas são respondidas; e assim por diante. A execução dessas tarefas em um MUA é um processo interativo e manual e possivelmente demorado.

O Procmail é um programa que pode executar essas tarefas automaticamente sempre que o processamento necessário puder ser declarado de maneira orientada a regras. Obviamente, quando você responde o email pessoal de sua mãe, alguma atenção pessoal é necessária; mas, para uma ampla classe de outras mensagens, é útil especificar com antecedência exatamente o que gostaria que acontecesse quando uma determinada mensagem fosse recebida. As regras que podem direcionar a manipulação de mensagens automatizadas podem envolver campos de cabeçalho com base em padrões específicos, determinados conteúdos em um corpo de mensagem ou mesmo chamar programas externos especializados e mais específicos, como filtros estatísticos de spam.

Ativando o Procmail

O Procmail provavelmente vem instalado com a sua distribuição Linux. Se não vier, é possível obter o archive de origem em procmail.org (consulte Recursos). A partir desta composição, a versão mais recente é a 3.22. Também é possível instalar o Procmail como um binário usando o sistema de instalação da sua distribuição Linux (por exemplo, no Debian: apt-get install procmail). O desenvolvimento da origem é um make install direto. Tudo que o Procmail precisa para operar é o binário procmail e um arquivo de configuração ~/.procmailrc (ou possivelmente um arquivo /etc/procmailrc global).

Além de instalar o Procmail em primeiro lugar, é preciso obter o seu sistema de correio local para utilizá-lo. Um mecanismo antigo para o processamento de correio por meio do Procmail é o uso de um arquivo .forward; isso ainda funcionará frequentemente em uma base por usuário. Geralmente, um usuário criará um arquivo, ~/.forward, que contém algo como:

|/usr/local/bin/procmail

Isso canalizará cada mensagem recebida no Procmail. Porém, uma maneira mais comum e melhor de utilizar o Procmail é pedir que o seu MTA converse diretamente com o Procmail em primeiro lugar. No Sendmail, isso envolve ativar o recurso local_procmail colocando o que segue em seu arquivo sendmail.mc:

FEATURE(`local_procmail', `/usr/bin/procmail', `procmail -Y -a $h -d $u')

Assim que o Procmail é ativado, ele precisa de um arquivo ~/.procmailrc, que contém o conjunto de regras que ele processa na manipulação de uma determinada mensagem. O Procmail não é um daemon, mas uma ferramenta de processamento de texto que aceita exatamente uma mensagem de email por vez por meio do STDIN.

Regras em ~/.procmailrc

No fundo, o Procmail é apenas um conjunto de fórmulas de expressão regular. Também é possível definir variáveis de ambiente da mesma forma que em um shell script. As fórmulas são executadas em ordem, mas os sinalizadores podem ser usados para executar uma condição particular somente se a condição anterior for satisfeita (A) ou não for satisfeita (E). Algumas fórmulas do Procmail são fórmulas de entrega e outras são fórmulas de não entrega; a primeira finaliza o processamento de uma determinada mensagem, a menos que o sinalizador c seja fornecido para explicitamente continuar o processamento. Provavelmente, a ação mais comum de uma fórmula é armazenar uma mensagem em uma caixa de correio nomeada, mas também é possível canalizar uma mensagem para outro programa ou encaminhar a mensagem para uma lista de endereços.

Uma fórmula geralmente começa com um bloqueio (opcionalmente com um arquivo de bloqueio específico; caso contrário, ele é feito automaticamente) e alguns sinalizadores, seguidos por algumas regras e depois por exatamente uma ação. Por exemplo:

:0 [flags] [ : [locallockfile] ]
<zero or more conditions (one per line)>
<exactly one action line>

Deve-se notar particularmente os sinalizadores implícitos H para corresponder o cabeçalho e B o corpo. Os padrões normalmente diferenciam maiúsculas e minúsculas, mas o sinalizador D pode forçar a correspondência de maiúsculas e minúsculas.

Se uma condição começar com *, tudo que vier depois deste caractere será uma expressão egrep . Caso contrário, se uma linha começar com < ou >, ela verifica o tamanho de uma mensagem como sendo menor ou maior que um determinado número de bytes. O prefixo $ permite substabelecimentos de shell.

Uma ação que é simplesmente um nome de arquivo salva uma mensagem nessa caixa de correio. Use o pseudoarquivo especial /dev/null para excluir uma mensagem. Um caractere de barra vertical(|) passa a mensagem para outro programa, como o utilitário de divisão de compilação para correio, que é distribuído com o Procmail. O prefixo de exclamação (!) encaminha uma mensagem como uma ação (mas nega uma condição em uma regra). Alguns exemplos:

Listagem 6. Arquivo ~/.procmailrc de amostra
:0:
* ^Subject:.*Digest                 # split digests and save parts
* ^From:.*foo-digest
|formail +1 -ds cat >>mailing_lists_mailbox

:0:
* !(To|Cc).*mertz@gnosis.cx         # my main account here
* !(To|Cc).*david.mertz@gmail.com   # I get mail from here
* !From.*gnosis\.cx                 # I trust gnosis not to spam
* !From.*list.*@                    # don't trash mailing lists
* !From.*good-buddy                 # sometimes Bcc's me mail
spam

:0:
* ^Subject.*[MY-LIST]               # redistribute MY-LIST messages
! member@example.com, member2@example.net, member3@example.edu

:0:
* ^Cc.*joe@somewhere.org            # save to both inbox and JOE mbox
{
   :0 c
   $DEFAULT

   :0
   JOE
}

Entregando Notícias NNTP

O que o InterNetNews faz?

O NNTP é um bom protocolo para "realizar o pull" da distribuição de mensagens para quaisquer usuários que estejam interessados em um determinado tópico. O Usenet é uma grande coleção de "grupos de notícias" em milhares de diferentes tópicos que distribuem mensagens por meio do NNTP. Sendo um protocolo de pull, um servidor NNTP reúne as mensagens atuais disponíveis de uma rede de servidores descentralizada, selecionando somente aqueles grupos de notícias que o administrador do site escolhe incluir. Quando uma nova mensagem é postada em um determinado grupo de notícias, ela se propaga de maneira não hierárquica do servidor para todos os outros servidores na Internet interessados em se registrar nesse grupo de notícias particular.

Da perspectiva de um usuário final, uma lista de emails pode parecer muito similar a um grupo de notícias. Em qualquer um dos casos, o usuário compõe e posta mensagens, além de ler mensagens escritas por outras pessoas. No início da Usenet e da Internet, as listas de distribuição não eram tão capazes de apresentar tópicos de discussão de uma maneira "encadeada", como os grupos de notícias atuais fazem automaticamente. Mas, durante alguns anos, os clientes de correio fizeram um bom trabalho inferindo as linhas de discussão dentro das listas de emails.

A principal diferença entre grupos de notícias e listas de emails está em seu protocolo de rede subjacente. Uma lista de emails ainda conta com um servidor de correio centralizado que aceita todas as mensagens destinadas a uma lista particular e distribui essas mensagens por email a todos os usuários que indicaram interesse (e aprovaram, tanto por meio de mecanismos automáticos quanto por meio de registro moderado por pessoas). Em contraste, o NNTP conecta cada nó aos demais sem contar com um servidor central; cada servidor NNTP simplesmente conversa com os demais servidores "próximos" e as mensagens, em vez disso, atingem rapidamente o mundo todo.

O InterNetNews (INN) é um servidor NNTP que foi composto pela primeira vez em 1992 e tem sido mantido ativo desde então. Desde essa composição, o INN está na versão 2.4.1. A página inicial do INN inclui releases e documentação (consulte Recursos para obter um link).

Configurando o INN

Após obter e descompactar o release de origem atual, a construção do INN é uma sequência ./configure; make; make install direta. Para desenvolver o INN, é necessário ter o Perl e o yacc (ou bison) instalado. Isso cria diversos arquivos, principalmente no diretório /usr/local/news/ (que você provavelmente não possui se o INN não tiver sido instalado previamente).

Antes de executar o daemon innd (como usuário "news"), é preciso modificar diversos arquivos de configuração. Detalhes completos estão fora do nosso escopo, mas um tutorial mais longo intitulado Installing and Running a Usenet News Server with INN and FreeBSD sobre o conjunto completo de arquivos que demandam atenção está disponível online (consulte Recursos para obter um link). Muitas das permissões e problemas de cota são manipulados pelo sistema make, mas é possível verificar novamente essas configurações.

Um arquivo que merece atenção especial é a configuração de cota em /usr/local/news/etc/storage.conf. Ele controla para quais grupos de notícias são registrados e quanto histórico de cada grupo de notícias é mantido. Depois que a cota é atingida, mensagens antigas são limpas de um determinado grupo de notícias (no servidor local, não do Usenet como um todo). Por exemplo, storage.conf pode conter algo como:

Listagem 7. Configuração de storage.conf de amostra
   method cnfs {
      newsgroups: alt.binaries.*
      class: 1
      size: 0,1000000
      options: BINARIES
   }

   method cnfs {
      newsgroups: *
      class: 2
      size: 0,100000
      options: NOTBINRY
   }

O valor de classe especifica a ordem na qual diferentes valores são avaliados.

Quando todos os diversos arquivos de configuração estiverem ajustados, somente a execução de innd como um daemon (provavelmente ativado para um script de inicialização) monitora os servidores de envio de dados configurados por /usr/local/news/etc/innfeed.conf, /usr/local/news/etc/incoming.conf e /usr/local/news/etc/newsfeeds.

Recursos

Aprender

Obter produtos e tecnologias

  • No site do Majordomo, encontre downloads e informações sobre o ele.
  • Em procmail.org, faça o download da versão mais recente do Procmail.
  • Em sendmail.org, faça o download da versão mais recente do Sendmail.
  • Acesse a página inicial do INN para informações de InterNetNews e downloads.
  • Desenvolva seu próximo projeto de desenvolvimento no Linux com versão de teste do software IBM, disponível para download diretamente no developerWorks.

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux
ArticleID=810648
ArticleTitle=Preparação do Exame do LPI: Correio e Notícias
publish-date=04192012