NewsGeneration: um serviço oferecido pela RNP desde 1997


ISSN 1518-5974
Boletim bimestral sobre tecnologia de redes
produzido e publicado pela  RNP – Rede Nacional de Ensino e Pesquisa
24 de outubro de 2001 | volume 5, número 5

volta à página inicial de NewsGeneration

Nesta edição:

NewsGeneration:



Migrando Correio Eletrônico baseado em MS Exchange Server para Linux

Euricélia Viana Wanderley <>

Rede Nacional de Ensino e Pesquisa (RNP)

Resumo
1. Introdução
2. Fase de preparação do ambiente Linux
2.1 Ambiente
2.1.1 Sendmail
2.1.2 PAM_SMB
2.1.3 IMAP
2.1.4 Anti-vírus
2.1.5 Apache
2.1.6 Neomail
2.2 Configuração de diretórios e criação de usuários
3. Fase de Migração
4. Conclusão
Referências bibliográficas

Resumo

Este documento contém uma guia de instalação e configuração de um ambiente de correio eletrônico, servidor SMTP sendmail e suporte a cliente IMAP e web, ferramentas gratuitas e de código aberto. Além disso, apresenta a seqüência de passos necessária para a migração de um servidor baseado em Microsoft Exchange Server para o novo ambiente instalado.

^

1. Introdução

Com a expansão dos serviços de internet, o correio eletrônico tornou-se uma ferramenta indispensável não só para agilizar a comunicação dentro das organizações, como também para agilizar processos, democratizar o acesso a informações e ajudar a desburocratizar rotinas e procedimentos.

Implementar e manter atualizada uma solução de correio baseada em tecnologia proprietária, utilizando produtos comerciais, pode tornar-se bastante caro, principalmente à medida que cresce o número de usuários. Em particular, em organizações que não fazem uso de recursos de groupware, mas simplesmente do serviço de envio e recebimento de mensagens (e-mails) é perfeitamente possível migrar para uma solução gratuita, sem perda de funcionalidade, qualidade de produto ou segurança.

O servidor sendmail que foi desenvolvido originalmente por Eric Allman na Universidade de Berkeley e incluído nas distribuições Unix como software livre é um servidor de correio eletrônico largamente utilizado na Internet. Entre os clientes de correio - ferramentas que permitem estabelecer a conexão via protocolo SMTP [1] para enviar mensagens, os clientes web têm se tornado cada vez mais populares devido à facilidade de acesso, já que não é preciso instalar nenhum software específico (além do navegador) ou configurar perfis de acesso para cada usuário.

Neste artigo, mostraremos como instalar e configurar uma solução de correio eletrônico gratuita, baseada em linux, sendmail e cliente web e, ainda, como migrar os dados das caixas postais de um servidor Microsoft Exchange para esta solução.

^

2. Fase de preparação do ambiente Linux

Nesta seção, detalharemos a composição do ambiente, mostrando os passos para instalação e configuração dos softwares para prover o serviço de correio eletrônico no servidor Linux, bem como alguns serviços acessórios como o de anti-vírus para impedir a entrega de mensagens infectadas.

É importante observar que alguns softwares escolhidos podem ser facilmente substituídos por outros, também de código aberto e domínio público, conforme sejam identificadas características mais adequadas ao ambiente da organização. Por exemplo, o UW-IMAP poderia ser substituído pelo "Cyrus IMAP" e o webmail Neomail pelo "Squirrel Mail".

^

2.1 Ambiente

A relação de softwares a ser instalada é a seguinte:

A seguir, apresentamos as seqüências de passos necessárias para instalação e configuração. Note que não nos concentraremos em apresentar exaustiva e detalhadamente as mais diversas opções de configuração de cada software em particular, já que isto poderia desviar o foco da atividade genérica que é a migração do ambiente Microsoft Windows NT/Exchange para Linux/Sendmail.

^

2.1.1 Sendmail

Deve ser feita a instalação do Sendmail:

./Build

e em seguida devem ser configuradas as permissões para dono e grupo dos diretórios que são utilizados para arquivos de configuração, caixa de entrada e fila de mensagens enviadas e recebidas.

chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue 
chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

Para indicar as características que devem estar presentes no servidor, criamos o arquivo "linux.mc" abaixo, que será processado pelo utilitário m4 para gerar o arquivo principal de configuração do sendmail , o "sendmail.cf".

1  divert(0)dnl
2  VERSIONID(`$Id: generic-linux.mc,v 8.1 1999/09/24 22:48:05 gshapiro Exp $')
3  OSTYPE(linux)dnl
4  DOMAIN(generic)dnl
5  dnl change Mlocal to use AMaViS
6  define(`LOCAL_MAILER_PATH', `/usr/sbin/scanmails')dnl
7  define(`LOCAL_MAILER_ARGS', `scanmails -Y -a $h -d $u')dnl
8  FEATURE(always_add_domain)
9  FEATURE(use_cw_file)
10 MAILER(local)dnl
11 MAILER(smtp)dnl
12 FEATURE(`access_db',`hash /etc/mail/access')
13 FEATURE(`blacklist_recipients')
14 define(`confTRUSTED_USERS', `nobody')dnl

Nas linhas de 1 a 4, ficam algumas entradas de configuração genéricas que indicam o sistema operacional que está sendo utilizado. As linhas de 5 a 7 contêm as instruções para proteção contra vírus (Veja Seção 2.1.4). A diretiva da linha 8 indica que o domínio deve ser adicionado mesmo para entrega de mensagens locais. A linha 9 permite que os nomes dos domínios para os quais o sendmail aceita mensagens sejam especificados em um arquivo, por default, /etc/mail/local-host-names. As linhas 10 e 11 indicam os mailers default. A diretiva da linha 12 é o que permite discriminar domínios para os quais se deseja, por razões administrativas, receber ou recusar mensagens. Na linha 14, informa-se que é permitido bloquear mensagens recebidas para determinados usuários, hosts ou endereços. A linha 14 refere-se à configuração do webmail Neomail e será oportunamente explicada na Seção 2.1.6.

Preparado o arquivo de configuração no diretório /etc/mail, ele deve ser processado da seguinte forma:

m4 /usr/local/src/sendmail/sendmail-X.X/cf/m4/cf.m4 linux.mc> sendmail.cf

Em seguida, devem ser atualizados alguns arquivos do diretório /etc/mail:

^

2.1.2 PAM_SMB

Pam Smb[2] permite a autenticação de usuários Linux/Unix usando um servidor SMB (WinNT/2k, Samba). A instalação é feita através de:

./configure; make; make install

Após a instalação, o arquivo pam_smb_auth.so é disponibilizado em /lib/security e o daemon pamsmbd é colocado, por default, em /usr/local/sbin/pamsmbd , devendo ser iniciado no momento do boot.

A configuração do módulo pam_smb consiste de um arquivo pam_smb.conf, que contém a indicação do nome do domínio e dos servidores que podem efetuar a autenticação dos usuários e de um diretório /etc/pam.d, abaixo do qual são colocados arquivos contendo as diretrizes para cada um dos serviços cuja autenticação deva ser feita através de pam_smb. Por exemplo, para que o login seja feito através de PAM, deve haver um arquivo com o nome login no diretório /etc/pam.d.

^

2.1.3 IMAP

A opção por instalar um servidor IMAP deve-se a dois motivos. Primeiro, porque este será o meio utilizado para conseguir copiar o conteúdo das caixas postais de um servidor para outro; segundo para permitir que usuários que optem pela não utilização do webmail, mas prefiram instalar um software cliente qualquer, possam fazê-lo e ainda assim acessar normalmente o conteúdo das pastas armazenadas no servidor.

Antes da instalação do UW-IMAP [3], devem ser feitas algumas alterações com o objetivo de que os clientes IMAP possam conviver bem com o cliente webmail. Para mudar o local de armazenamento das pastas para o diretório ~user/mail, deve-se alterar no arquivo Makefile o seguinte parâmetro:

EXTRACFLAGS=-DMAILSUBDIR=\\\"mail\\\"

Além disso, para permitir que pastas criadas através do cliente IMAP, onde o dono é o usuário, e pastas criadas através do webmail Neomail, onde o dono é o usuário "nobody", sejam acessadas sem problema em ambos os clientes, foi necessário colocar permissões 660, ao invés de 600 para as pastas. Esta alteração foi feita no arquivo "env_unix.c", ressaltando que cada usuário faz parte do grupo mail, mas não tem acesso a um shell no servidor, isto é, pode logar-se apenas para efetuar transações de correio eletrônico.

Antes de efetuar a migração, o UW-IMAP deve ser compilado com "make slx", o que indica que a autenticação utilizará /etc/shadow. Depois, para o ambiente de produção, pode ser recompilado para o método de autenticação desejado, inclusive para utilizar PAM_SMB (Veja Seção 2.1.2), permitindo que os usuários sejam autenticados no mesmo domínio Microsoft que os autenticava no servidor Exchange. Para isto, basta compilá-lo com "make lnp".

Em seguida, executa-se os passos abaixo para permitir que o daemon seja iniciado como serviço ouvindo na porta 143:

· cd /usr/sbin;
ln -s /usr/local/imap/imapd
· descomenta-se a entrada em /etc/services: imapd 143
· descomenta-se a entrada para imapd no inetd.conf

^

2.1.4 Anti-vírus

Devido à crescente onda de disseminação de vírus através de correio eletrônico, é extremamente importante fazer uso de uma ferramenta que, ao detectar a chegada de uma mensagem, antes de encaminhá-la para o mecanismo responsável pela entrega possa extrair os anexos, descompactá-los e invocar os serviços de um software anti-vírus para que ele verifique a existência de vírus. Uma ferramenta bastante utilizada em Linux e outras plataformas UNIX para esta finalidade é a "AMaViS - A Mail Virus Scanner" [4].

Note que é preciso instalar também um software de antivírus, como o "Virus Scan" da Network Associates, por exemplo:

./install-uvscan

Em seguida, faz-se a instalação do AMaViS. Para verificar apenas mensagens que chegam ao servidor (sentido income), a instalação é bastante simples:

./configure --with-notifyreceiver=yes
make;
make install

Concluída a instalação, deve-se informar ao sendmail que o agente para entrega de mensagens locais (LOCAL_MAILER) é o script /usr/sbin/scanmails. Isto é feito acrescentando-se as seguintes linhas ao arquivo de configuração do sendmail (Veja Seção 2.1.1):

6 define(`LOCAL_MAILER_PATH', `/usr/sbin/scanmails')dnl
7 define(`LOCAL_MAILER_ARGS', `scanmails -Y -a $h -d $u')dnl

Em instalações padrão, este agente costuma ser o procmail [5].

^

2.1.5 Apache

Segundo pesquisa da Netcraft [6], mais de 60% dos servidores Web do mundo usam o sistema Linux/Unix contra 30% para a Microsoft, sendo o Apache o servidor mais instalado. Como a idéia é permitir a utilização de um cliente de correio web, optamos pela instalação de um servidor Apache. A instalação padrão é feita seguindo-se os passos abaixo.

./configure --prefix=/usr/local/apache
make;
make install

Caso seja feita a opção pela utilização de um outro webmail diferente do Neomail, pode ser necessário instalar outros módulos do Apache. Por exemplo, para o Squirrel Mail é preciso instalar o Apache com suporte a PHP. Além disso, é aconselhável instalar o suporte a SSL, permitindo que o correio fique acessível através de https e, portanto, que as informações trafeguem criptografadas.

^

2.1.6 Neomail

O software de webmail denominado Neomail [7] foi desenvolvido e continua sendo mantido, agora na versão 1.25, por Ernie Miller. Escrito em Perl, seu núcleo está concentrado em 3 arquivos: neomail.pl, neomail-prefs.pl e checklogin.pl. Os dois primeiros ficam no diretório cgi-bin do servidor web e o terceiro no diretório escolhido para guardar os arquivos de configuração. Além destes arquivos há o arquivo de confiruração neomail.conf, gerado de acordo com as respostas fornecidas durante a instalação, podendo ser modificado posteriormente, e diretórios que contêm templates para as diversas linguagens para as quais o Neomail foi traduzido, dentre elas o português.

Há alguns pré-requisitos importantes. O primeiro é a atualização da versão do interpretador Perl, que deve estar rodando a versão 5.6.X acima. Para isto, deve-se remover o pacote originalmente instalado:

rpm -qa | grep perl
rpm -e --nodeps perlX
rm -f config.sh Policy.sh

e compilar os fontes da nova versão:

sh Configure (aqui é preciso responder sim à pergunta "setuid emulation")
make; make test; make install

Ainda com relação ao Perl, os módulos MD5.pm e CGI.pm devem estar instalados e com versões, respectivamente, 1.75 acima e 2.72 acima. Como temos a intenção de permitir que a autenticação possa ser feita através de PAM, deve ser instalado também o módulo Authen-PAM do Perl. A instalação destes módulos é feita da seguinte forma:

perl Makefile.PL
make; make test; make install

Considerando que estejamos no diretório com os fontes expandidos do Neomail, a instalação propriamente dita é feita através da chamada:

./setup.pl

Neste momento, várias perguntas são feitas e devem ser respondidas de acordo com as preferências do administrador e com as necessidades do sistema. Por exemplo, deve ser informado o diretório onde ficam os arquivos de configuração (/var/neomail, por default), valor de quota para pastas de usuário, diretório em que devem ficar as pastas de usuário (recomendamos ~user/mail para manter compatibilidade com o servidor IMAP), local onde ficam as caixas de entrada, isto é, as "inbox" do sendmail (recomendamos /var/spool/mail). Note que estas configurações podem ser alteradas a qualquer tempo diretamente no arquivo neomail.conf sem necessidade de recompilação.

Para que não haja problema de permissão é preciso informar ao sendmail que o usuário sob o qual roda o servidor web e, portanto, o webmail - nobody - é um usuário confiável. Isto é feito através da inclusão da seguinte diretiva no arquivo linux.mc, mostrado na Seção 2.1.1 :

14 define(`confTRUSTED_USERS', `nobody')dnl

Em seguida, deve-se assegurar que as permissões dos arquivos instalados pelo Neomail estejam de fato corretas, isto é, o grupo mail, usado pelo sendmail deve ter acesso a estes arquivos. No diretório /var/web/cgi-bin as permissões devem ser ajustadas da seguinte maneira:

chown root.mail neomail.pl
chmod 755 neomail.pl
chmod g+s neomail.pl
chown root.mail neomail-prefs.pl
chmod 755 neomail-prefs.pl
chmod g+s neomail-prefs.pl

Caso não tenha sido criado o diretório onde ficam as configurações, deve-se criá-lo, assim como os subdiretórios necessários ao funcionamento do Neomail, e ajustar as permissões desses diretórios.

mkdir /var/neomail
chown root.mail /var/neomail
chmod 770 /var/neomail
mkdir /var/neomail/users mkdir /var/neomail/styles mkdir /var/neomail/template chown root.mail /var/neomail/users chown root.mail /var/neomail/styles chown root.mail /var/neomail/template chmod 770 /var/neomail/users chmod 750 /var/neomail/styles chmod 750 /var/neomail/template chown root.root /var/neomail/checklogin.pl chmod 4755 /var/neomail/checklogin.pl

Para permitir que a autenticação seja feita via PAM, permitindo assim utilizar a base de senhas do domínio Windows NT, é preciso restaurar o arquivo de autenticação modificado, desenvolvido por Péter Sinóros Szabó [8]. O checklogin.pl modificado deve ser restaurado com as permissões corretas (bit s setado). Além disso, deve ser colocado no diretório /etc/pam.d/ um arquivo chamado " neomail ", indicando a forma como será feita a autenticação via PAM.

Para testar se toda a instalação funcionou corretamente basta acessar a URL http://seudominio.com.br/cgi-bin/neomail.pl.

^

2.2 Configuração de diretórios e criação de usuários

Uma vez concluídas as atividades de instalação e configuração do servidor Linux, deve-se preparar os ambientes de usuário antes de iniciar a migração das caixas postais e suas respectivas pastas. Para isto, foram criados vários scripts, disponíveis para download, cujas finalidades são descritas abaixo. Todos os scripts recebem como entrada um arquivo login.txt contendo linhas formadas por login:nome completo do usuário, listagem esta que pode ser extraída do domínio Microsoft.

^

3. Fase de Migração

Preparado o ambiente de produção e realizados os devidos testes de envio e recebimento de mensagens, podemos passar à fase de migração dos dados das caixas de correio dos usuários do Exchange para o Linux. Esta transferência é baseada na cópia de dados de um servidor através de IMAP para outro, por isso foi utilizado o Exchange 5.5. Embora tenham sido feitos experimentos com diversas ferramentas disponíveis na Internet para esta finalidade, dentre elas o imapcopy do kit imaputils [9], foi escolhido o script migrate.pl, escrito em Perl por Rick Sanders e cedido através de contato via e-mail. Durante os testes, alguns ajustes no código fonte foram necessários para adaptá-lo ao servidor de IMAP UW-IMAP e também para customizar o processo de migração, evitando copiar pastas desnecessárias como por exemplo a pasta "diário (journal)" criada automaticamente na instalação padrão do cliente Microsoft Outlook.

Caso ainda esteja sendo utilizado o Microsoft Exchange 5.0, é aconselhável instalar um novo servidor em paralelo, baixar o backup do Information Store, corrigir todas as inconsistências do Directory e do Information Store e, em seguida, fazer o upgrade para Exchange 5.5.

Para tornar possível a migração automática , deve-se colocar o mesmo usuário DOMAIN\testeimap como dono de todas as caixas. Para isto, clica-se no Site do Exchange, na opção "File/Properties/Permissions" e adiciona-se o usuário DOMAIN\testeimap com o role USER.

Em seguida, basta rodar o script runMigr.bat , que contém a chamada migrate.pl e observar nos logs e reports gerados o andamento da migração

^

4. Conclusão

Em particular, a migração para um ambiente totalmente baseado em tecnologia gratuita e de código aberto possibilita primeiramente uma vultosa economia para a organização, se considerarmos o gasto anual com upgrade de software servidor, de clientes e o eventual aumento do número de clientes instalados. Mas não se resume a isto, a facilidade para incorporar a esta solução novos softwares para controle de spam, filtragem de mensagens, ferramentas estas também de domínio púbico é maior. Além disto, o código-fonte do cliente webmail pode ser alterado para atender a necessidades particulares, customizando características já implementadas ou adicionando outras.

Este guia de configuração e migração foi escrito com a preocupação de orientar em detalhes o administrador de sistemas que tenha o interesse ou a necessidade de fazer a migração, ainda que em caráter experimental. Esperamos que possa atender bem a esta finalidade.

^

Referências bibliográficas

[1] Bryan Costales, Eric Allman. Sendmail, 2nd Edition. O'Reilly & Associates. 1997.

[2] http://www.csn.ul.ie/~airlied/pam_smb/

[3] http://www.washington.edu/imap/

[4] http://www.amavis.org

[5] http://www.procmail.org

[6] http://www.netcraft.com/Survey/index.html

[7] http://neomail.sourceforge.net

[8] http://www.fazekas.hu/~sini/neomail_pam/neomail_pam.tar.gz

[9] http://www.imap.org

^

NewsGeneration, um serviço oferecido pela RNP – Rede Nacional de Ensino e Pesquisa
Copyright © RNP, 1997 – 2004