Neste artigo, eu mostrarei para você como o Java Apache Mail Enterprise Server (James) pode ser utilizado para sua solução de Enterprise Mail Server.
Obtendo o James and Meeting Prereqs
Este artigo foi escrito utilizando a versão 2.1.3 do James. Para executar esta versão, você precisa ter JRE 1.4 instalado (download James). Assumo que você está usando o James dentro de um ambiente Windows. Porém, como o James é desenvolvido em Java, sendo possível executa-lo em qualquer plataforma.
Abrindo portas
Para usar o James como seu servidor de correio, você precisa abrir algumas portas TCP. Por padrão, o SMTP utilizad a porta 25. Uma outra porta deve ser aberta para o protocolo de POP3 (por padrão, a porta 110). Como você verá depois neste artigo, você também pode administrar remotamente o James usando o Serviço de Gerência Remoto (a porta padrão para este serviço, é a porta 4555).
Executando o James
Para executar o James, tenha certeza que a variável de ambiente JAVA_HOME aponta para o JRE 1.4. Então execute o script run.bat do diretório onde você extraiu o James. Quando você fizer isto, você verá a seguinte tela (Figura 1).
Quando você executar o James pela primeira vez, são criados arquivos de configuração para você. Neste momento, você tem que parar o servidor para modificar os arquivos de configuração para conseguir algumas funcionalidades de James.
Você precisa ensinar para o James a respeitar o domínio para o qual você está tentando configurar o e-mail. Para fazer isto, você precisa modificar a seção do arquivo de config.xml (localizado em < james-installdir>\apps\james\SAR-INF diretório) como segue:
localhost
Você precisa adicionar o DNS namespace para o correio o qual James controlará. Por exemplo, suponha que você quer controlar correio bogusdomain.com. A sintaxe seria a seguinte:
localhost
bogusdomain.com
Mostrando a James quem manda
Você pode administrar o James através de seu Serviço de Gerência Remota (por definição, este serviço escuta na porta 4555). A sintaxe seguinte pode ser usada para administrar o James:
telnet localhost 4555
Se você estiver acessando o James remotamente, simplesmente substitua localhost com o endereço/hostname de IP apropriado.
O login padrão e a senha para o Serviço de Gerência Remoto são root e root, respectivamente. (Você pode alterar esses dados no arquivo config.xml.) Procure a seção < administrator_accounts > e modifique a seção com um nome de usuário seguro e uma senha.
O James possui um help e para acessa-lo, basta digitar o comando HELP.
ser acrescentados os usuários ao James através da seguinte sintaxe:
adduser [username] [password]
Por exemplo, adicionando o usuário devmedia:
adduser devmedia minh453nha
Trabalhando com o James
Depois de adicionar um usuário, você pode testar coisas criando uma conta com seu software agente de correio favorito (por exemplo, Lotus Notes, Microsoft Outlook, e assim por diante). Para saber como criar uma conta de correio, você deve consultar a documentação de seu produto. Depois de criar a conta, envie um e-mail de teste à conta que você criou; se tudo ocorrer corretamente, você deverá ver um e-mail em sua caixa.
Mailets and Matchers
Embora o James seja um servidor de correio, também é um recipiente de mailet. Parecido com o modo J2EE dão poder a Empreendimento Feijões de Java, o James dá poder a mailets. (São usados Mailets para processar correio, e são usados matchers para emparelhar mensagens de correio contra certas condições.) James transporta com vários matchers de predefined e mailets.
Os conceitos podem ser exibidos de uma forma melhor através de exemplos. Digamos que você quer acrescentar o footer de mensagem seguinte a cada e-mail que recebeu por James:
------------------------------------------------
Brought to you courtesy of Apache James
Você pode usar o mailet de AddFooter e o "All" matcher para adicionar o footer. Acrescente o seguinte código a seu arquivo de config.xml:
------------------------------------------------
Brought to you courtesy of Apache James
Depois de reiniciar o James, todo o correio enviado a qualquer endereço de e-mail que o James está sendo anfitrião terá o footer adicionado ao fim do e-mail, como mostrado na Figura 2:
Listas de clientes
James tem apoio à manipulação de listas de clientes, e os usuários podem subscrever e podem cancelar a assinatura destas listas.
Para criar uma lista, você tem que acrescentar o seguinte código ao arquivo de config.xml no bloco de processador root e sobre o bloco de mailet final:
CommandForListserv=james@bogusdomain.com"
class="AvalonListservManager">
list-james
Com o mailet abaixo, se um remetente envia uma mensagem para james-on@bogusdomain.com, o remetente entrou da lista. Da mesma forma, se ele ou ela enviam uma mensagem para james-off@bogusdomain.com, ele ou ela cancela a assinatura.
Os integrantes da lista são armazenados em um repositório que pode ser seu sistema de arquivo ou um banco de dados. O código seguinte é um exemplo da sintaxe que é necessária para definir o repositório como sendo seu sistema de arquivo:
class="org.apache.james.userrepository.UsersFileRepository">
file://repo/"/>
Para controlar o correio, você tem que ter também o seguinte mailet no arquivo config.xml:
RecipientIs=james@bogusdomain.com" class="AvalonListserv">
false
true
true
list-james
JamesList
Com este mailet, se você enviar uma mensagem a james@bogusdomain.com, todos os integrantes da lista receberão a mensagen.
É possível rodar o James como um serviço do Windows?
Infelizmente, James não executa como um serviço do Windows NT/XP. Porém, você pode usar uma alternativa como o JavaService para poder rodar o James como um serviço.
Poder e possibilidade de crescimento
O Apache Software Foundation lhe permite criar seus próprios mailets e matchers. Você pode aprender como criar seus próprios mailets e matchers através da documentação do James.
Conclusão
James é um projeto open source da Apache Software Foundation. Versões futuras prometem capacidade de trabalhar com IMAP que é tipicamente uma escolha de um maior empreendimento. O James tem muito mais para oferecer que o que eu realcei neste artigo introdutório.