Um overview do software de e-mail para Linux

Temos aqui vários pacotes que podem fornecer serviços básicos de mail sobre Linux. Basicamente o modelo de e-mail UNIX/Linux envolve MTA (mail transport agents – agentes de transporte de mails), MSA (mail storage/access agents – agentes de armazenamento/acesso de mails) e MUAs (mail user agents – agentes de uso de mails). Aqui também é apresentada uma variedade de utilitários que não necessariamente estão dentro destas categorias.

O Linux conta com vários MTAs incluíndo o sendmail, o mais comum em todas as formas de UNIX; o D.J. Bernstein’s qmail e o Wietse Venema’s Postfix. Eles recebem e enviam mail. Isto pode ser absolutamente simples, mas na prática isto pode ser muito complexo. Existe um grande número de opções de roteamento e mascaramento que podem ser configuradas por políticas de administração — e existe uma grande quantidade de linguagens de programação que filtram e modificam os cabeçalhos de cada mensagem que é enviada. Adicionalmente ao processo de roteamento de mail e busca de caixas de mail (mail stores), podem ser envolvidas arbitrariamente, complexas interações com vários serviços de diretórios (DNS, arquivos passwd, NIS, arquivos LDAP alias/dbm) e todo o tipo de banco de dados customizado.

Ultimamente os MTAs também estão implementando funcionalidades de anti-spam que significa acesso a listas de controle e regras sobre formatos de endereços (cabeçalhos de e para) que são permitidos de domínios e conjuntos de endereços específicos. Geralmente, também envolvem buscas em tabelas dos serviços de diretório, incluindo aqueles como o Paul Vixie’s RBL (lista de “buracos negros”ou MAPS, mail abuse prevention system – sistema de prevenção de abuso de mail) e seus similares, como o Dorkslayer/ORBS. Recentemente, MTAs estão começando a ampliar as requisições para forçar a implementação de outras políticas de anti-virus/anti-worm.

Nos casos mais comuns é fácil instalar e configurar os sistemas. Entretanto, todo o poder e flexibilidade tem um preço. A medida que sua organização escolhe costurar seus MTAs para adequar seus roteamentos especiais, nomenclaturas, segurança e necessidades anti-spam, você precisa de configurações mais sofisticadas e muitas destas podem envolver complexas coreografias de relacionamento entre seu MTA e vários outros subsistemas (como qualquer servidor LDAP e de DNS que você utilize).

Desde que você escolheu, instalou e configurou um MTA, você geralmente pode também passar pelo mesmo processo para um MSA. Muitas organizações atualmente não entregam mail diretamente dos sistemas desktops de seus clientes. Eles armazenam o mail em servidores e os usuários buscam seus mails via POP ou IMAP. Lá também estão vários protocolos para gerenciamento de caixas de mail mas, somente estes dois, realmente contam atualmente: POP3 e IMAP4 (lá estão também as versões antigas destes protocolos, com certeza). Cada um dos MTAs possuem um número de programas (daemons) que podem prover cada um destes serviços. Muitos MSAs podem trabalhar com qualquer MTA comum. Adicionalmente, estes sistemas usualmente fazem um “locking” e/ou usam outros mecanismos para que múltiplos MSAs possam estar em uso concorrente sem conflito.

Desta forma você pode ter alguns usuários que acessam seu mail via POP, enquanto outros usam IMAP e outros até mesmo podem usar um MUA local (como pine, mutt ou elm). Usuários podem alterar individualmente de uma forma de acesso para outra, sem necessitar de uma intervenção do administrador. Usuários mais espertos podem transpor o uso normal de MSA/MUA e utilizar comandos comuns do UNIX (como cp e mv) e FTP ou rsync para movimentar seus mails (geralmente isto é muito complicado para os usuários comuns, mas pode ser muito bom quando se necessita arrumar uma caixa de coreio com problemas, etc).

Inicialmente eu era sempre requisitado para configurar um servidor POP em um servidor Linux de uso genérico. Estava interessado em encontrar o por quê este não estava funcionando. Um serviço de POP foi instalado e habilitado quando eu instalei o sistema operacional inicialmente, disabilitei-o (comentando uma linha no arquivo /ect/inetd.conf) durante minha rotina de verificação do sistema. Então “configurar” novamente o serviço requer simplesmente retirar o comentário de uma linha em um arquivo, e reiniciar o serviço.

IMAP é similar. Enquanto o POP geralmente tranfere mails para o sistema do cliente e os remove do servidor, IMAP permite que os mails sejam armazenados em pastas no servidor, e as cópias no sistema do cliente são essencialmente “cache” ou “cópias de trabalho”. Isto normalmente necessita de mais espaço de armazenamento para os servidores, mas permite que as equipes de TI se foquem em políticas de backup/recuperação de dados do servidor e permita que os sistemas dos clientes sejam considerados mais ou menos dispensáveis. IMAP pode ser usado como POP (onde o mail é expurgado do servidor depois que os clientes recebem-os). Operacionalmente não existe muita diferença. Os dois serviços são iniciados normalmente pelo inetd (o serviço “despachante” de rede, ou “recepcionista” do Linux, se você preferir).

Um servidor POP ou IMAP pode funcionar por anos, servindo centenas, até milhares de caixas de correio e usuários sem necessitar de atenção especial. Geralmente usuários e seus correspondentes de mail podem fazer alguma coisa estúpida, ou algum software que eles executam pode apresentar algum bug que necessite que o administrador vá lá resolver o problema.

Por exemplo, uma vez eu tinha uma reclamação de uma usuário que sua caixa de mail POP estava corrompida. Eu descobri que um de seus clientes tinha enviado um mail com um arquivo de 100Mb anexado! (isto causava um dump de imagem na rede). Isto estava conflitando com o espaço em disco e com os limites de velocidade/capacidade do velho 486 com 32Mb que nós usávamos como servidor de mail para mim e mais 50 pessoas no departamento. Resolvi o problema em poucos minutos com alguns comandos de shell e algumas ferramentas para decodificar o anexo em um arquivo que coloquei dentro do diretório do usuário. Rodei junto um script para extrair o resto de seus mails para criar uma nova caixa de correio para ele. Caixas de correio dentro do UNIX são arquivos de texto simples. O Qmail armazena os mails em diretórios que pequenos arquivos individuais, um para cada mensagem. Qualquer administrador de sistemas competente pode fazer a mesma coisa.

Então muitos dos problemas que você pode encontrar com MSAs e MTAs podem ser resolvidos com editores de texto e utilitários e filtros comuns ao UNIX.

Então são muitos os MUAs que podem trabalhar com servidores POP e IMAP, incluindo Microsoft Outlook. Dentro do Linux muitas pessoas utilizam o ‘fetchmail’ para trazer seus mails para uma área de armazenamento local (caixa de correio). Então pode-se usar qualquer MUA (elm, pine, mutt, MH/exmh, EMACS’ rmail, vmail, mh-e, gnus, e o plethora de GUIs como Balsa, Mahogany, etc). Outros tantos usuários de Linux utilizam o Netscape Communicator como seu cliente de e-mail.

Dentro do Linux e do UNIX existem outras ferramentas como procmail, vacation, biff, e fetchmail as quais, como dito anteriormente, não caem dentro das três categorias clássicas (MTA, MSA, MUA) que descrevi anteriormente.

Procmail é utilizado normalmente como um “agente de envio local” e como um agente de processamento de mail. É geralmente utilizado para filtrar a parte do envio final de uma mensagem para seus destinatários. Isto permite a um usuário escrever scripts para automaticamente arquivar, rejeitar, responder para, redirecionar ou qualquer outra forma de trabalho com os mails que recebe (isto também pode ser usado para processar caixas de correio mais que uma liguagem/biblioteca geral de programação).

Vacation é um antigo programa que pode ser usado para simplesmente prover uma resposta automática para e-mail do destinatário. Isto era originalmente utilizado para avisar correspondentes que o destinatário estava “de férias”. Isto também pode ser feito com duas linhas de receita no procmail.

Biff é um utilitário usado para notificar um usuário que um mail foi recebido. Existem vários utilitários similares para fazer isto nas GUIs, apresentado ícones, animações, emitindo música ou avisos verbais, transmitindo notificações pela rede e usando vários protocolos de MSA em segundo plano.

Traduzido em 29/11/2000 para a Gazeta do Linux