qmail

qmail

r

O qmail é um MTA (Mail Transfer Agent - Agente de Transferência de Mensagens) - ou servidor de e-mails, seguro, confiável, eficiente e simples, desenvolvido totalmente em linguagem C para sistemas UNIX.Escrito por Dan J. Bernstein para ser mais seguro que o popular programa Sendmail. Apenas dois pequenos bugs foram encontrados no qmail desde a versão 1.0, e ainda existe um prémio de US$500 para a primeira pessoa que descobrir uma falha de segurança na última versão.

a

Introdução

r

qmail foi desenvolvido por Dan Bernstein (DJB), http://en.wikipedia.org/wiki/Daniel_J._Bernstein, um professor de matemática da Universidade de Illinois em Chicago.<br>O primeiro lançamento público do qmail, versão beta 0.70, foi em 24 de Janeiro de 1996. A versão gamma 0.90, foi lançado em 1º de Agosto de 1996.<br>A versão 1.0, primeiro lançamento geral, foi anunciado no dia 20 de Fevereiro de 1997. A versão atual, 1.03 foi lançada em 15 de Junho de 1998.<br>O próximo lançamento é esperado é a versão 2.0. Algumas coisas que podem aparecer nesta versão são mencionadas em http://cr.yp.to/qmail/future.html.

a

Recursos

a

Setup

r

* Adaptação automática para qualquer variante UNIX.<br>* AIX, BSD/OS, FreeBSD, HP/UX, Irix, Linux, OSF/1, SunOS, Solaris, e outros.<br>* Configuração automática dos hosts (config, config-fast).<br>* Instação rápida. Não existe uma lista grande de decisões a tomar.

Segurança

r

* Separação clara entre endereços, arquivos e programas.<br>* Minimização de código setuid (qmail-queue).<br>* Minimização de código root (config, config-fast).<br>* Particionamento confiável five-way (segurança em camadas).<br>* Registro opcional de eventos (QUEUE_EXTRA).

Serviço SMTP (qmail-smtpd)

r

* RFC 821, RFC 1123, RFC 1651, RFC 1652, RFC 1854.<br>* 8-bit clean.<br>* 931/1413/ident/TAP callback (tcp-env).<br>* Controle de relay - Para serviços não autorizados (control/rcpthosts).<br>* Sem interferências entre controle de relay e aliases.<br>* Reconhecimento automático de endereço IP local.<br>* Per-buffer timeouts.<br>* Contagem de hop.<br>* Limite de paralelismo (ucspi-tcp / tcpserver).<br>* Recusa de conexões originadas de maliciosos conhecidos (tcpserver).<br>* Relay e reescrita de mensagem para clienes autorizados.<br>* Suporte opcional a RBL/ORBS (ucspi-tcp / rblsmtpd)

Construção da mensagem (qmail-inject)

r

* RFC 822, RFC 1123.<br>* Suporte completo para grupos de endereços.<br>* Conversão automática de endereços do formato antigo para o formato RFC 822.<br>* Compatibilidade com Agentes de usuários atuais.<br>* Comprimento de cabeçalho limitado apenas pela quantidade de memória.<br>* Mascaramento de máquinas (control / defaulthost).<br>* Marcaramento de usuários ($MAILUSER, $MAILHOST).<br>* Criação automática de Mail-Followup-To ($QMAILMFTFILE)

Bounces (qmail-send)

r

* Formato de mensagens QSBMF--- ambas legíveis pela máquina e por humanos.<br> * Suporte a HCMSSC ---- códigos de erros RFC 1893 independentes da linguagem.<br> * Bounces duplos enviados ao postmaster

Gerenciamento de filas (qmail-send)

r

* Controle instantâneo de mensagenns adicionadas na lista.<br> * Limite de paralelismo (control / concurrencyremote, control / concurrencylocal).<br> * Particionamento do diretório da fila-- Sem queda de performance com filas grandes.<br> * Agendamento de tentativas de retransmissão quadrático --- tentativas de retransmissão de mensagens antigas são realizadas menos freqüentemente.<br> * Agendamento de tentativas de retransmissão independente.<br> * Enfileramento automático e seguro --- sem perda de email em travamento do sistema.<br> * Ponto de checagem automática por caixa postal.<br> * Limpeza automatica de filas (qmail-clean).<br> * Visualização de fila (qmail-qread).<br> * Estatística detalhadas de entrega (qmailanalog).

Roteamento por domínio (qmail-send)

r

* Qualquer quantidade de nomes para localhost (control / locals).<br> * Qualquer quantidade de domínos virtuais (control / virtualdomains).<br> * Domínios com curingas (control / virtualdomains).<br> * Suporte a percenthack configurável (control / percenthack).<br> * UUCP hook

Entrega SMTP (qmail-remote)

r

* RFC 821, RFC 974, RFC 1123.<br> * 8-bit clean.<br> * Desativação automatica de host travado.<br> * Roteamento artificial --- smarthost, localnet, mailertable (control / smtproutes).<br> * Timeouts individuais para cada buffer.<br> * Fila SMTP passiva --- perfeito para SLIP/PPP (serialmail).<br> * Suporte a AutoTURN (serialmail).

Encaminhamento e listas de email (qmail-local)

r

* Compatibilidade com o sendmail .forward (dot-forward).<br> * Banco de dados de encaminhamentos com hash (fastforward).<br> * Compatibilidade com o sendmail /etc/aliases (fastforward / newaliases).<br> * Coringa de endereços (.qmail-default, .qmail-foo-default, etc).<br> * Proprietários de lista de correio --- retorno automatico de mensagens e aviso de férias.<br> * VERPs --- identificação automática de destinatários para lista de correio.<br> * Delivered-To--- prevenção automatica de loop, inclusive através de hosts.<br> * Gerenciamento automático de inscrições (ezmlm).

Entrega local (qmail-local)

r

* Hierarquia de endereços controlado pelo usuário.<br> * Entrega mbox.<br> * Entrega NFS confiável. (maildir) * Programa de entrega controlado pelo o usuário: procmail etc (qmail-command).<br> * Notificaçao de novos e-mail opcional (qbiff).<br> * Confirmação de recebimento NRUDT opcional (qreceipt).<br> * Filtragem condicional (condredirect, bouncesaying).

Serviço POP3 (qmail-popup, qmail-pop3d)

r

* RFC 1939.<br> * Suporte a UIDL.<br> * Suporte a TOP.<br> * APOP hook.<br> * Checagem modular de senhas (checkpassword).

Instalação

r

A instalação é muito simples e varia de acordo com a distribuição escolhida.<br>Para usuários do Debian ou derivados (pacotes .DEB):<br>#apt-get install qmail-run<br>Para usuários do Redhat ou derivados (pacotes .RPM):<br>rpm -ivh pacote.rpm<br>Se quizer instalar direto dos fontes o comando é o seguinte:<br>make setup check<br>

Requisitos

r

Para a instalação do Qmail é necessário, antes de mais nada, estar rodando um Sistema Operacional UNIX ou UNIX-like. A maioria dos sistemas operacionais UNIX são compatíveis. Geralmente, uma lista dos SOs suportados vem no arquivo README, encontrados junto à distribuição.<br>• Aproximadamente 10 Megabytes do espaço livre na área da configuração;<br>• Um sistema de desenvolvimento completo, funcionando com C, inclusive um compilador;<br>• Alguns Megabytes para os binários e arquivos de configuração e instalação;<br>• Um sistema de arquivos seguro. A garantia da confiabilidade do Qmail requer que a fila resida em um sistema de arquivos com a semântica tradicional do BSD FFS. A maioria dos sistemas de arquivos modernos satisfaz essas exigências;<br>• Espaço em disco suficiente para armazenamento da fila;<br>• Acesso a um DNS;<br>• Uma conexão de rede com boa largura de banda.

Características

a

Seguro

r

A segurança para esse sistema não é um objetivo, mas uma exigência absoluta. A segurança nesse sistema de envio de e-mails é levada tão a sério, que um prêmio de $1000,00 foi oferecido, por um ano, para quem encontrasse uma falha de segurança no Qmail. Como o prêmio não foi reivindicado, foi destinado à Free Software Foundation. <br>Atualmente, Dan Bernstein, autor do Qmail, está oferecendo um prêmio de $500,00 para quem encontrar um furo de segurança no software.

a

Confiável

r

A filosofia do qmail é garantir que uma mensagem, uma vez aceita no sitema, jamais será perdida.<br>qmail também suporta o maildir, um novo e super confiável formato de caixa de correio.<br>Maildir, diferente de arquivos mbox e pastas mh, não corrompem se o sistema trava durante a entrega. Ainda melhor, um usuário pode ler com segurança o seu email através de NFS e outros clientes NFS podem entregar a mensagem para ele ao mesmo tempo.

Eficiente

r

Em um Pentium com BSD, qmail com facilmente manter 200000 mensagens locais por dia.<br>Apesar das entregas remotas serem limitadas pela baixa velocidade do DNS e SMTP. qmail ultrapassa 20 entregas simultâneas, então ele aumenta suas listas de emails rapidamente.

Simples

r

qmail é muito menor que os outros MTAs. Alguns dos motivos para isso são:<br>1) Outros MTAs possuem mecanismos separados para encaminhamento, aliasing e lista de emails. qmail possui um simples mecanismo de encaminhamento que permite os usuários controlar suas próprias listas de email.<br>2) Outros MTAs oferecem uma grande variedade de modos, que fica entre "rápido e inseguro" e "lento e enfileirado". qmail-send é instantâneamente ativado por novos itens na fila, então o sistema do qmail tem apenas um modo de entrega: "rápido e enfileirado".<br>3) Outros MTAs incluem, de fato, uma versão especializada do inetd que vigia a média de carregamento. O design do qmail inerentemente limita a carga da máquina, então o qmail-smtpd pode executar com segurança do inetd do seu sistema.

Substituto para o sendmail

r

qmail suporta mascaramento de máquinas e usuários, ocultação completa de máquina, domínios virtuais, clientes nulos, reescrita do list-owner, controle de relay, gravação de double-bounce, listas de endereço RFC 822 arbitrárias, detecção de loop cross-host em lista de email, ponto de checagem por caixa postal, remoção de hosts problemáticos, agendamento de tentativas de reentrega independente, etc.<br>qmail também inclui um drop-in "sendmail" wrapper para que ele possa ser usado de forma transparente por seu UAs atuais.

Componentes do grupo

r

Carlos Henrique<br>Diego Renan<br>Fabio Santiago Menino<br>Frederico Fernandes Passos<br>Lauro de Souza Dias<br>Marcos Vinício Curvelo<br>Paulo Henrique<br>Walcimar Paiva de Castro

Conclusão

r

Segundo a documentação que utilizamos para este trabalho, o qmail é, além de confiável, o MTA mais rápido e seguro que existe. Mesmo assim ele é "apenas" o segundo mais utilizado. Perdendo para o Sendmail.<br>Acreditamos que isto ocorre pela dificuldade que é configurar esse MTA. Existem muitos patches e configuração, todos sem ferramentas gráficas ou com scripts de automatização.<br>Apesar da dificuldade, uma vez configurado, o qmail funciona muito bem e justifica o esforço inicial.<br>Concluímos que o qmail é um exelente MTA para substituir o sendmail na categoria de servidores de correios livre.

Configuração

r

A configuração do qmail e seus patch é bem complicado, mas existem muitos sites que explicam este processo.<br>Recomendamos os seguintes artigos:<br>http://www.devin.com.br/eitch/qmail/<br>http://qmail.telles.org/qmail-guiadeconsulta/index.html<br>http://www.linuxman.pro.br/node/5<br>http://br-linux.org/artigos/mailers1.htm<br>http://www.gta.ufrj.br/grad/01_2/qmail/page4.html

a