Neste capítulo é explicado como preparar o sistema para o o uso do correio eletrônico e das news. Trata-se de um tópico que, por causa da sua complexidade, se for tratado de forma geral, corre o risco de se tornar incompreensível para quem se aproxima pela primeira vez. Isto deve-se ao fato de que existe uma grande multiplicidade de situações possíveis (seja no que diz respeito às tipologias das conexões, seja no que se refere ao modo de trabalho) e que não se trata apenas de configurar um programa, mas de compor um sofisticado grupo de programas que cooperam para o funcionamento do sistema. Por esse motivo o tratamento da questão é ilustrado por um exemplo que descreve uma possível configuração para um PC de uso doméstico conectado à Internet através de um provedor, uma situação muito comum que, ainda que não apresente dificuldades específicas, pode-se revelar bastante espinhosa de se manejar quando não se sabe onde se deve por as mãos.
Além da preparação do sistema, descreve-se a configuração necessária para dois dentre os mais difundidos e apreciados programas de correio eletrônico e news: o mutt e o tin. Os programas em si mesmos não são descritos, até porque são simples de usar e bem documentados. Naturalmente, tanto o mutt quanto o tin não são escolhas obrigatórias e o usuário é livre para instalar os aplicativos que preferir. Em particular, quem não gosta de programas em modo texto, pode encontrar alternativas válidas no X.
Em resumo, os programas exigidos pela configuração descrita neste capítulo são:
sendmail
fetchmail
m4
mutt
tin
Destes, apenas o sendmail e o m4 já estão presentes no sistema básico. Os outros podem ser instalados a partir da coleção de pacotes.
Antes de prosseguir, gostaria de lembrar ainda uma vez que nenhum dos programas apresentados neste capítulo é uma escolha obrigatória. Existem numerosas outras alternativas para cada um deles mas, mesmo assim, constituem um bom ponto de partida. Também a estratégia utilizada para o envio e recebimento de correspondência não é único. Cada um pode modificá-la segundo a própria configuração e as próprias exigências.
No extremo oposto dos programas e da estratégia ilustrados neste capítulo há o uso de um programa faz-tudo como o Netscape Communicator. Com esse tipo de programa pode-se navegar na Internet, receber e enviar mensagens e ler artigos nos newsgroups. Além disso, a sua configuração é muito simples. A desvantagem desse tipo de abordagem é que o Netscape é um sistema fechado, que não coopera com os outros programas do NetBSD.
Uma outra abordagem muito seguida é a de ler a correspondência e as news utilizando-se dos recursos específicos do emacs. O emacs certamente não tem necessidade de apresentação para os apaixonados pelo Unix mas, para quem não saiba, trata-se de um editor avançado (na verdade, chamá-lo de editor é um pouco reducionista) que se transforma em um verdadeiro ambiente de trabalho dentro do qual é possível ler a correspondência e as news, além de efetuar muitas outras operações. A configuração do emacs para correio e news está descrita no manual do programa.
Na seqüência deste capítulo será feita referência a um host ligado à Internet através de uma conexão serial PPP via modem com um provedor. Os dados para a configuração são:
o host local chama-se "ape" e a rede é "insetti.net", para a qual o FQDN (Fully Qualified Domain Name) é "ape.insetti.net".
O nome do usuário do ape no exemplo é "carlo".
O provedor utilizado chama-se "BigNet".
O servidor de correio do provedor é "mail.bignet.it".
O nome de login do usuário "carlo" junto ao provedor é "alan" e a sua senha é "pZY9o".
Antes de começar, um pouco de terminologia:
(mail user agent): programa que permite escrever e ler a correspondência. Por exemplo: mutt, elm e pine, mas também o simples mail pré-instalado.
(mail transfer agent): programa que responde pelo encaminhamento da correspondência, transferindo-a de um computador a outro e localmente. O MTA é o programa que decide o percurso que a correspondência deve seguir para chegar ao seu destino. Nos sistemas BSD (mas não só) o padrão é o sendmail.
(mail delivery agent): programa, geralmente usado pelo MTA, que serve para entrega da correspondência. Por exemplo, para inserir fisicamente as mensagens nas caixa postal do usuário destinatário. O sendmail, por exemplo, utiliza um ou mais MDAs para fazer a entrega da correspondência.
A Figura 12-1 ilustra o sistema de correspondência que se quer organizar. Entre a rede doméstica (ou mesmo um host isolado) e o provedor há uma conexão PPP via modem. Os "balões" de borda larga referem-se a comandos executados explicitamente pelo usuário. Os "balões" restantes são os programas executados automaticamente. Os números nos círculos referem-se às várias fases lógicas do processo de gerenciamento do ciclo da correspondência:
Na fase (1) a correspondência é tirada (por download) do servidor POP do provedor mediante o fetchmail, que usa o sendmail para pô-la na caixa postal do usuário.
Na fase (2) o usuário executa o mutt (ou um outro cliente de sua escolha) para ler a correspondência, responder às mensagens recebidas e escrever outras novas.
Na fase (3) o usuário envia a correspondência pelo mutt. As mensagens são acumuladas na área da spool (lançadeira).
Na fase (4) o usuário chama o sendmail para transferir as mensagens para o servidor SMTP do provedor de onde serão expedidas aos destinatários.
A conexão com o provedor dever estar ativa somente durante as fases (1) e (4). Para as restantes operações pode ser desativada tranqüilamente.
Quando um MTA, o sendmail no caso, recebe uma mensagem de correio para expedir, em se tratando de uma mensagem local, expede-a diretamente. Do contrário, se a mensagem está destinada a um outro domínio, deve procurar o endereço do servidor de correio eletrônico do domínio em questão. Para fazer isso o MTA apoia-se no serviço de DNS (descrito no Capítulo 11). O servidor DNS do domínio de destinação conhece o endereço do servidor de correio (record MX) e o fornece ao MTA que, nesse ponto, pode expedir a mensagem ao servidor destinatário.
O MTA mais difundido, pelo menos no ambiente BSD, é o sendmail. O comportamento do sendmail é controlado pelo arquivo de configuração /etc/mail/sendmail.cf e por uma série de arquivos acessórios. Em geral, a menos que se saiba o que se está fazendo, não é aconselhável escrever ou modificar este arquivo diretamente. O arquivo de configuração pode ser automaticamente gerado com o uso de um conjunto de macros M4 que facilita muito a tarefa.
Nota: nas versões do NetBSD precedentes à 1.5, os arquivos de configuração do sendmail encontravam-se no /etc ao invés do /etc/mail.
Mesmo utilizando as macros, a configuração do sendmail é um tópico bastante hostil (para dizer pouco) e na seqüência limito-me a mostrar um exemplo básico, que pode ser usado como ponto de partida e modificado para gerir a própria correspondência frente a configurações diferentes. Para uma conexão à Internet via modem, o arquivo apresentado pode ser usado tal qual, sem necessidade de qualquer modificação (salvo naturalmente inserir os próprios dados no lugar dos que estão no exemplo).
O primeiro problema a resolver é que a rede doméstica é totalmente fictícia. Ou seja, não existe realmente na Internet e, portanto, os nomes e os endereços internos não têm sentido para o mundo externo. Em suma, o host "ape.insetti.net" não é alcançável por nenhum outro host da Internet e, se enviamos um e-mail com o nome local do host no remetente, ninguém poderá responder (não somente. Alguns destinatários rejeitarão a mensagem porque o remetente não existe). O verdadeiro endereço, aquele que é visível para todos, é o designado pelo provedor "alan@bignet.it". Disso se vai ocupar o sendmail, devidamente configurado, no momento de transferir a correspondência.
O segundo aspecto a considerar é que convém instruir o sendmail para fazê-lo enviar a correspondência ao servidor de mail do provedor. Na configuração descrita nesta seção, de fato, o sendmail não se põe diretamente em contato com os servidores de correio dos destinatários das nossas mensagens (como decrito no início desta seção), mas se apoia somente no servidor do provedor, utilizando-o como relay. Isso torna muito mais veloz o envio da correspondência, transferindo todo o trabalho de busca e de conexão ao servidor de mail do provedor.
Nota: é dito que um servidor de correio age como relay quando se encarrega de encaminhar a correspondência que não é de sua competência direta. Neste caso o servidor de correio relay age como intermediário, providenciando o encaminhamento da correspondência ao servidor destinatário (ou a um outro servidor relay).
Uma vez que a conexão com o provedor não está sempre ativa, pode-se desabilitar a inicialização do sendmail como dæmon no /etc/rc.conf com a linha 'sendmail=NO'. A correspondência local será mesmo assim expedida corretamente, enquanto que para transferir correspondência ao provedor será necessário executar o sendmail manualmente (quando a conexão com o provedor estiver ativa, naturalmente).
Comecemos pois o trabalho de configuração do sendmail.
Este tipo de configuração utiliza o arquivo /etc/mail/genericstable que contém as regras explícitas para se reescrever os endereços internos à rede local.
A primeira coisa, portanto, será criar o arquivo genericstable. Por exemplo:
carlo: alan@bignet.it root: alan@bignet.it news: alan@bignet.it
Por motivos de eficiência o genericstable deve ser transformado com o comando:
# /usr/sbin/sendmail -bi -oA/etc/mail/genericstable
Agora é o momento de criar o protótipo que será utilizado para gerar o novo arquivo de configuração do sendmail. A primeira coisa a fazer é deslocar-se para o diretório em que será criado o novo arquivo de configuração:
# cd /usr/share/sendmail/m4
Suponhamos um protótipo chamado mycf.mc. O conteúdo do arquivo é o seguinte:
divert(-1)dnl include(`../m4/cf.m4')dnl VERSIONID(`mycf.mc criado por carlo@ape.insetti.net May 18 2001')dnl OSTYPE(bsd4.4)dnl dnl # Definições para masquerading. São reescritos os dnl # endereços do tipo dnl # carlo@ape.insetti.net dnl # carlo@ape GENERICS_DOMAIN(ape.insetti.net ape)dnl FEATURE(genericstable)dnl FEATURE(masquerade_envelope)dnl define(`SMART_HOST',`mail.bignet.it')dnl FEATURE(redirect)dnl FEATURE(nocanonify)dnl dnl # A característica (feature) seguinte serve sobretudo se o sendmail for usado dnl # junto com o fetchmail. Fetchmail chama o sendmail para expedir a dnl # correspondência. Se o sendmail não consegue resolver o nome do emitente dnl # a correspondência são é enviada. Por exemplo: dnl # MAIL FROM:<www-owner@netbsd.org>... Sender domain must exist FEATURE(`accept_unresolvable_domains')dnl dnl # accept_unqualified_senders satisfaz alguns MUA, que enviam dnl # a correspondência como dnl # MAIL FROM:<carlo> FEATURE(`accept_unqualified_senders')dnl dnl # A correspondência para o mailer 'smtp' é posta na fila: o sendmail não dnl # tenta enviá-la diretamente (a flag 'e' indica 'expensive'). dnl # O sendmail começa a lamentar-se depois de 16 horas de expedição frustrada. define(`SMTP_MAILER_FLAGS',`e')dnl define(`confCON_EXPENSIVE',`True')dnl define(`confTO_QUEUEWARN', `16h')dnl dnl # Para os usuários europeus define(`confDEF_CHAR_SET',`ISO-8859-1')dnl dnl # Habilitar as três linhas seguintes para utilizar o procmail para dnl # o envio da correspondência local (a terceira linha é opcional, dnl # somente as duas primeiras são necessárias) dnl # define(`PROCMAIL_MAILER_PATH', /usr/pkg/bin/procmail)dnl dnl # FEATURE(local_procmail)dnl dnl # MAILER(procmail)dnl dnl # Os dois mailers seguintes devem ser sempre definidos MAILER(local)dnl MAILER(smtp)dnl
Nota: no exemplo precedente as linhas que se iniciam com "dnl" são comentários e, portanto, não são necessárias para a geração do arquivo de configuração (a sigla "dnl" indica ao m4 para ignorar o resto da linha e aparece também após as várias diretrizes com o fim de se evitar efeitos indesejados).
As linhas relativas ao uso do procmail são deixadas comentadas (ou seja, o uso do procmail fica desabilitado).
Esta configuração aponta para a transformação dos endereços do tipo "ape.insetti.net" nos nomes reais, através de busca no arquivo /etc/mail/genericstable. Além disso fica especificado que a correspondência deva ser enviada ao host "mail.bignet.it". O significado das opções está descrito em detalhe no arquivo /usr/share/sendmail/README.
Para criar o próprio arquivo personalizado é suficiente inserir os próprios dados modificando apenas duas linhas do exemplo precedente, isto é:
GENERICS_DOMAIN(ape.insetti.net ape)dnl define('SMART_HOST','mail.bignet.it')dnl
Geremos o novo arquivo de configuração, salvando antes o arquivo anterior.
# cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.bak # m4 mycf.mc > /etc/mail/sendmail.cf
Nota: em /usr/share/sendmail/cf fica o arquivo netbsd-proto.mc, que é utilizado para criar a versão /etc/mail/sendmail.cf que é distribuída por default com o NetBSD. Jamais deveria ser necessário, mas com o comando make podemos construí-lo.
Um outro arquivo importante é o /etc/mail/aliases que, todavia,pode ser mantido com a configuração original. Mesmo assim é necessário executar o comando:
# newaliases
Agora está tudo pronto para expedir a correspondência.
Agora que a configuração do sendmail está completa, pode-se proceder a algumas verificações simples para confirmarmos se tudo funciona corretamente. O primeiro teste poderá ser expedir uma mensagem local:
$ sendmail -v carlo Subject: teste Prova . carlo... Connecting to local... carlo... Sent
Seguir o esquema do exemplo, deixando uma linha vazia depois de Subject: e concluindo a mensagem com uma linha que contém só um ponto. A mensagem enviada deveria ser legível utilizando-se o cliente de correio eletrônico. Em particular, verifique-se o conteúdo do campo
From: alan@bignet.it
no qual deve constar a reescrita do endereço.
Uma segunda verificação importante é o teste das regras de reescrita definidas no arquivo de configuração do sendmail. Para fazer isso executa-se o sendmail em modo de teste: o sendmail lê um endereço e mostra todas as passagens realizadas para transformá-lo. Nesse modo podem-se também efetuar outros tipos de teste, assim como visualizar várias informações.
Inicializar o sendmail em modo de teste usando a opção -bt
$ /usr/sbin/sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> >
Para ver a ajuda, utilizar o comando '?'.
Em primeiro lugar verifiquemos o funcionamento correto do arquivo genericstable dando o seguinte comando:
/map generics carlo map_lookup: generics (carlo) returns alan@bignet.it
Até aqui tudo bem. O sendmail encontrou o nome local e o seu correspondente real no mapa generics.
Agora verifiquemos a reescrita do remetente no envelope executando os comandos:
/tryflags ES /try smtp carlo@ape.insetti.net
O resultado deveria ser similar ao seguinte:
Trying envelope sender address carlo@ape.insetti.net for mailer smtp rewrite: ruleset 3 input: carlo @ ape . insetti . net rewrite: ruleset 96 input: carlo < @ ape . insetti . net > rewrite: ruleset 96 returns: carlo < @ ape . insetti . net . > rewrite: ruleset 3 returns: carlo < @ ape . insetti . net . > rewrite: ruleset 1 input: carlo < @ ape . insetti . net . > rewrite: ruleset 1 returns: carlo < @ ape . insetti . net . > rewrite: ruleset 11 input: carlo < @ ape . insetti . net . > rewrite: ruleset 51 input: carlo < @ ape . insetti . net . > rewrite: ruleset 51 returns: carlo < @ ape . insetti . net . > rewrite: ruleset 61 input: carlo < @ ape . insetti . net . > rewrite: ruleset 61 returns: carlo < @ ape . insetti . net . > rewrite: ruleset 94 input: carlo < @ ape . insetti . net . > rewrite: ruleset 93 input: carlo < @ ape . insetti . net . > rewrite: ruleset 3 input: alan @ bignet . it rewrite: ruleset 96 input: alan < @ bignet . it > rewrite: ruleset 96 returns: alan < @ bignet . it > rewrite: ruleset 3 returns: alan < @ bignet . it > rewrite: ruleset 93 returns: alan < @ bignet . it > rewrite: ruleset 94 returns: alan < @ bignet . it > rewrite: ruleset 11 returns: alan < @ bignet . it > rewrite: ruleset 4 input: alan < @ bignet . it > rewrite: ruleset 4 returns: alan @ bignet . it Rcode = 0, addr = alan@bignet.it >
Como se pode ver o endereço local foi reescrito como endereço real, que aparecerá nas mensagens quando deixarem o sistema.
Um resultado equivalente pode-se obter com o comando:
/try smtp carlo
Para verificar a reescrita do remetente no cabeçalho, repitamos os comandos precedentes mudando as flags. O resultado é equivalente.
/tryflags HS /try smtp carlo@ape.insetti.net
A partir da versão 1.4 do NetBSD o sendmail não é chamado de modo direto:
$ ls -l /usr/sbin/sendmail lrwxr-xr-x 1 root wheel 21 Nov 1 01:14 /usr/sbin/sendmail@ -> /usr/sbin/mailwrapper
O objetivo do mailwrapper é simplificar o uso dos MTAs alternativos ao sendmail (por exemplo, o postfix) mas, para se ter uma idéia precisa do que se trata, aconselho a leitura das páginas de manual mailwrapper(8) e mailer.conf(5), que são muito claras.
A correspondência chega ao endereço, depositando-se no provedor. Nesse momento é necessário transferí-la (fisicamente) para o computador local. O fetchmail é um programa que captura a correspondência de um servidor de correio remoto e a encaminha ao sistema local para entrega (geralmente através do sendmail). O fetchmail é simples de usar e de configurar. Depois de instalá-lo basta criar o arquivo .fetchmailrc no próprio diretório home (dentro vai a senha; atenção às permissões...). Eis um exemplo:
poll mail.bignet.it protocol POP3 username alan there with password pZY9o is carlo here flush mda "/usr/sbin/sendmail -oem %T"
Nota: a linha "mda ..." serve apenas se o sendmail não estiver ativo como um dæmon do sistema. Ademais, note-se que o servidor de correio especificado neste arquivo poderia ser diferente do relay usado pelo sendmail.
Para transferir a correspondência basta executar o comando:
$ fetchmail
e depois podemos lê-la com o mutt.
O mutt é um programa de correio que recebe muitas adesões tanto porque é rápido quanto porque é simples de usar e poderoso ao mesmo tempo. O mutt tem uma página de manual muito enxuta. A verdadeira documentação encontra-se em /usr/pkg/share/doc/mutt/, em particular no manual.txt.
A configuração do mutt se faz através do arquivo .muttrc, que deve ser criado no próprio diretório home (usualmente copiando o arquivo de exemplo fornecido com o mutt e depois modificando-o). O exemplo à frente mostra como modificar algumas linhas do arquivo para obter os seguintes efeitos:
Salvar as mensagens enviadas.
Definir um diretório para a correspondência recebida e enviada salva pelo mutt (será posta no subdiretório ~/Mail nos arquivos incoming e outgoing).
Definir algumas cores.
Definir um codinome (alias).
set copy=yes set edit_headers set folder="~/Mail" unset force_name set mbox="~/Mail/incoming" set record="~/Mail/outgoing" unset save_name bind pager <up> previous-page bind pager <down> next-page color normal white black color hdrdefault blue black color indicator white blue color markers red black color quoted cyan black color status white blue color error red white color underline yellow black mono quoted standout mono hdrdefault underline mono indicator underline mono status bold alias pippo Pippo Verdi <pippo.verdi@pluto.net>
Para executar o mutt é suficiente executar o comando
$ mutt
Nota: de acordo com o terminal o mutt suporta o uso de cores diversas para os diversos elementos de sua tela. Sob X pode-se usar o xterm-color. Por exemplo:
TERM=xterm-color mutt
Esta seção descreve uma estratégia simples para receber e ler a correspondência. A conexão com o provedor é ativada apenas durante o tempo necessário à transferência da correspondência, que depois pode ser lida offline.
Ativar a conexão com o provedor.
Executar o comando fetchmail.
Fechar a conexão com o provedor.
Ler a correspondência com o mutt.
Uma vez escrita e enviada a correspondência com o mutt, deve-se remetê-la ao servidor do provedor com o sendmail. O envio da correspondência com o mutt, que se efetua com o comando y, limita-se a enfileirar as missivas na spool (lançadeira). Neste ponto, se o sendmail não está ativo como dæmon, é preciso tomar a iniciativa de invocá-lo explicitamente. Os passos a seguir são:
Escrever a correspondência com o mutt, executar o comando de envio e sair do mutt.
Ativar a conexão com o provedor.
Executar o comando /usr/sbin/sendmail -a -v para transferir a correspondência ao provedor.
Fechar a conexão com o provedor.
Quando se começa a usar o correio eletrônico, geralmente não se tem exigências muito sofisticadas e, portanto, a configuração padrão descrita acima é mais que suficiente. Com o passar do tempo, entretanto, para muitos usuários o volume diário de correspondência cresce e se diferencia. Nessa fase torna-se necessário organizar racionalmente as mensagens, separando-as em "caixinhas" diferentes, e nos damos conta de precisar realizar um grande número de operações manuais repetitivas todo dia para classificar a correspondência. Por exemplo, quem se inscreve em uma mailing list pode encontrar-se na situação de ter que selecionar cotidianamente um notável número de mensagens para transferí-las da mailbox geral para aquela mailbox que criamos para dedicar-se apenas à mailing list.
Porque efetuar à mão operações que podem ser agilmente desenvolvidas por um programa? Existem vários instrumentos complementares que se inserem no fluxo normal da correspondência e permitem realizar várias operações sobre a mesma, com base em configurações pré-fixadas pelo usuário. Entre as ferramentas mais conhecidas e usadas encontramos:
procmail, um mail delivery agent e filtro avançado para a correspondência local, que permite elaborar automaticamente a correspondência com base em regras pré-estabelecidas pelo usuário redefinindo-lhe, por exemplo, a destinação. O melhor, contudo, é que ele se integra completamente com o sendmail.
metamail, um instrumento para elaborar os anexos (attachments) contidos nas mensagens de correio eletrônico.
formail, um programa para reformatar as mensagens de correio.
Na seqüência desta seção será descrito um exemplo de uso do procmail, sem todavia descer aos detalhes da configuração e das características do programa, já que se trata de um instrumento que comporta imensa variedade de usos. Limitar-nos-emos, assim, a descrever a configuração do sendmail e do procmail para um caso muito comum: a separação da correspondência proveniente de uma mailing list. Para esse tipo de configuração far-se-á de modo que o sendmail utilize o procmail como um mailer local. O procmail, por sua vez, lerá um arquivo de configuração especificado para conter as regras de separação da correspondência.
Em primeiro lugar é preciso instalar o procmail, recorrendo ao sistema de pacotes (mail/procmail).
Depois é necessário configurar o sendmail para que use o procmail. Para fazer isso é suficiente tirar o comentário das linhas relativas ao procmail no arquivo de configuração do sendmail já descrito:
define(`PROCMAIL_MAILER_PATH', /usr/pkg/bin/procmail)dnl FEATURE(local_procmail)dnl MAILER(procmail)dnl
A primeira linha especifica o percurso do programa procmail e deve ser alterada segundo o local em que ele estiver instalado (o que pode ser determinado com o comando which procmail). A segunda linha indica ao sendmail para usar o procmail como mailer local. A terceira adiciona o procmail à relação dos mailers do sendmail (esta linha é opcional).
Enfim cria-se o arquivo de configuração do procmail, .procmailrc, nos próprios diretórios home. Este arquivo contém as regras para a expedição da correspondência em caráter local e é utilizado pelo programa para decidir a destinação das mensagens.
A título de exemplo, imagine-se estar inscrito em uma mailing list sobre rosas, cujo endereço é <roses@flowers.org>. Suponhamos, além disso, que todas as mensagens que chegam desta mailing list contenham, no cabeçalho, a espressão
Delivered-To: roses@flowers.orgO arquivo de configuração do procmail tem um aspecto do seguinte tipo:
PATH=/bin:/usr/bin:/usr/pkg/bin MAILDIR=$HOME/Mail LOGFILE=$MAILDIR/from :0 * ^Delivered-To: roses@flowers.org roses_list
O arquivo precedente contém uma só regra de redistribuição, que começa com a linha ":0" que o usuário terá oportunamente criado no diretório $MAILDIR. Note-se que o $MAILDIR é o mesmo diretório indicado na diretriz do arquivo de configuração do Mutt.
set folder="~/Mail"
As mensagens provenientes da mailing list são identificadas pela linha:
* ^Delivered-To: roses@flowers.org
contida no cabeçalho. As mensagens remanescentes irão para a mailbox geral.
A mailing list é naturalmente apenas um exemplo, e o procmail pode ser usado para redistribuir qualquer tipo de mensagem com base, por exemplo, na proveniência, no conteúdo, etc.
Para assegurar que o procmail seja usado como um mailer local pelo sendmail, pode-se executar este último em modo de teste, da seguinte maneira:
$ /usr/sbin/sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> >
Agora se invoca a lista dos mailers reconhecidos pelo sendmail com o comando
> =M
No output deveria aparecer uma linha desse tipo:
mailer 3 (local): P=/usr/pkg/bin/procmail S=EnvFromL/HdrFromL ...
Como sempre, para ulteriores detalhes e para se ter uma idéia mais precisa das potencialidades do procmail, consultar as páginas de manual procmail(1), procmailrc(5) e procmailex(5), contendo, a última, arquivos de configuração.
Antes de passar aos newsgroups decidí inserir este pequeno "truque" que pode ser útil com o correio: trata-se de verificar interativamente a veracidade de um endereço de e-mail.
Nota: nem todos os servidores aceitam o comando VRFY, que pode ser desabilitado.
Suponhamos querer verificar o usuário carlo@dominio.com. O método é o seguinte:
$ telnet dominio.com smtp Trying aa.bb.cc.dd... Connected to dominio.com. Escape character is '^]'. 220 dominio.com ESMTP Sendmail 8.9.3/8.9.3; Fri, 30 Apr 1999 VRFY carlo 250 Carlo Rossi VRFY abcde 550 abcde... User unknown ^] telnet> quit Connection closed.
Com o termo news indica-se o conjunto dos artigos dos newsgroups de USENET, um serviço disponível na Internet. Cada newsgroup recolhe artigos relacionados com um tópico específico. O mecanismo de leitura dos artigos é diferente em relação às mailing lists. Quando nos inscrevemos em uma mailing list, os artigos são-nos enviados pelo correio e para lê-los (e respondê-los) usa-se um programa de correio (como, por exemplo, o mutt. A consulta das news, por outro lado, ocorre de modo direto, utilizando um programa chamado newsreader como, por exemplo, o tin, que permite que se faça a inscrição nos grupos que nos interessam e seguir-lhes os threads (enredos, encadeamentos).
thread: um thread é uma seqüência de mensagens (réplicas e tréplicas) derivadas de uma mensagem que poderemos definir como "inicial". Na prática, qualquer um envia uma mensagem ao grupo, outros enviam sua resposta à mensagem original, outros ainda (talvez os mesmos) respondem àqueles que responderam e assim por diante, até criar uma estrutura ramificada de mensagens e respostas. Sem um newsreader é impossível desembaraçar-se do emaranhado (leia-se "seqüências lógicas") dos threads.
Uma vez instalado o programa, a única coisa a fazer é estabelecer o nome do servidor de NNTP, escrevendo-o no arquivo /usr/pkg/etc/nntp/server. Por exemplo;
news.bignet.it
Feito isso, pode-se executar o programa com o comando rtin. Na tela vai aparecer uma série de escritos desse tipo:
$ rtin Connecting to news.bignet.it... news.bignet.it InterNetNews NNRP server INN 1.7.2 08-Dec-1997 ready (posting ok). Reading groups from active file... Checking for new groups... Reading attributes file... Reading newsgroups file... Creating newsrc file... Autosubscribing groups... Reading newsrc file...
É necessário ter paciência quando se conecta pela primeira vez, porque é descarregada uma lista interminável de newsgroups nos quais podemos nos inscrever: a operação dura vários minutos. Terminado o descarregamento aparece a tela do programa, geralmente vazia. Para ver a lista dos grupos pressione-se a tecla y. Para subscrever-se em um grupo, colocar-se sobre o nome do grupo e pressionar s.
Para acelerar as inicializações posteriores pode-se usar o comando rtin -Q. Desse modo evita-se a busca de novos newsgroups, carregam-se apenas os grupos ativos (-n) e não se carregam as descrições dos grupos (-d). Naturalmente não será possível usar o comando y (yank) durante a sessão do tin. Quando se inicia o tin desse modo, o programa não é capaz de saber quais newgroups são regulares.
Nota: se nos conectamos à Internet através de um provedor com um computador que não pertence pois a um "verdadeiro" domínio, quando se envia a mensagem o endereço no cabeçalho será errado (porque inexistente). Para resolver o problema pode-se usar a opção "mail_address" no arquivo de configuração do tin (~/.tin/tinrc) ou se pode definir a variável de ambiente REPLYTO.