Capítulo 6 - Servidor de Email (Sendmail)
Introdução
Sendmail surgiu como um pacote padrão para transferência de mensagens. Ele foi escrito por Eric Allman na Universidade da Califórnia em Berkeley. O Sendmail é o responsável por mais de 75% dos servidores de mensagens da Internet.
Sendmail é a mais popular implementação baseada em UNIX da SMTP (Simple Mail Transfer Protocol) para transmissão de e-mails. Este protocolo é o meio padrão estabelecido para transferência de mensagens através da Internet.
Ao receber uma mensagem o Sendmail tenta entregar imediatamente a mensagem para o destinatário indicado e, caso o destinatário não esteja presente na rede naquele momento, ele enfileira as mensagens para posterior entrega. No entanto, como Sendmail não fornece facilidades de caixas de correios, um servidor POP ou IMAP é necessário para a tarefa de armazenar e-mails. A maioria dos provedores de acesso fornecem ambas as opções: um servidor SMTP (utilizando o Sendmail) e um servidor POP ou IMAP.
Usando as configurações demonstradas neste livro, pode-se criar um servidor de email para escritórios e empresas independentes no número de caixa postais (mailbox), fazendo com que os usuários da rede possam trocar mensagens entre si utilizando qualquer software de e-mail (Outlook 98/2000/Express, Eudora, Netscape Messanger ou qualquer outro software de correio eletrônico que utilize o protocolo POP e IMAP).
Instalação e Configuração
Instalação
Os seguintes pacotes relacionados devem estar instalados. - imap-4.4-5cl.i386.rpm ou posterior;
- sendmail-cf-8.9.3-11cl.i386.rpm ou posterior; - m4-1.4-13cl.i386.rpm ou posterior;
- sendmail-8.9.3-11cl.i386.rpm ou posterior.
Devemos estar logados como root e através dos comandos abaixo verificarmos se estes pacotes já se encontram instalados. rpm –qa|grep sendmail sendmail-cf-8.9.3-11cl rpm –qa|grep sendmail-cf sendmail-cf-8.9.3-11cl rpm –qa|grep imap imap-4.4-5cl
rpm –qa|grep m4
m4-1.4-13cl
Caso não sejam encontrados verifique o procedimento de instalação da sua distribuição Linux. Outra possibilidade de consulta poderá ser utilizando o próprio site do Sendmail, através do seguinte endereço eletrônico.
http://www.sendmail.org
Na instalação do servidor Linux descrito neste livro foi mencionada a instalação de todos os pacotes, devendo não necessitar do procedimento de instalação dos pacotes acima
mencionados. Mas se forem necessários estes pacotes, poderão ser encontrados no CD de instalação (CD1) no diretório /conectiva/RPMS.
Configuração
Agora edite o arquivo /etc/inetd.conf e encontre estas linhas:
# Pop and imap mail services email #
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d #pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d #imap stream tcp nowait root /usr/sbin/tcpd imapd
Retire a marca ‘#’ da linha iniciada com pop-3 e imap, devendo ficar da seguinte forma:
# Pop and imap mail services email #
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d imap stream tcp nowait root /usr/sbin/tcpd imapd
Salve o arquivo e iremos reiniciar o servidor INED através do seguinte comando:
killall -HUP inetd
Necessitamos criar o arquivo sendmail.cf com as configurações necessárias para o Sendmail funcionar e protegidas contra SPAM.
Para isso vá ao diretório /usr/lib/sendmail-cf/cf/ e procure pelo arquivo connectiva.mc, encontrado o arquivo execute os seguintes comandos:
m4 ../m4/cf.m4 connectiva.mc>mail.cf cp /etc/sendmail.cf /etc/sendmail.cf.bak rm /etc/sendmail.cf
cp mail.cf /etc/sendmail.cf /etc/rc.d/init.d/sendmail restart
Agora iremos habilitar o sendmail para que inicie automaticamente nos nível 3 (inicialização em modo texto) e 5 (inicialização em modo gráfico) de execução.
Utilizaremos a aplicativo ntsysc para isso. Rode o seguinte comando.
ntsysv –level 35
Selecione o serviço sendmail como mostrado abaixo, vá até o botão OK (através da tecla TAB) e tecle ENTER.
Caso o sendmail ninca fora configurado em seu servidor, estes comandos não são necessários.
O arquivo do sendmail.cf já foi criado, todo usuário cadastrado no Linux tem e-mail automaticamente, há a possibilidade de criação de contas especiais somente para conta de e-mail. No conectiva Linux poderá ser criado esta conta através do Linuxconf, para outras distribuições verifique no manual específico da distribuição.
Iremos configurar alguns arquivos utilizados pelo Sendmail para que o usuário possa usar o servidor de e-mail para enviar as mensagens. Desta forma iremos permitir que somente pessoas, domains ou IPs de nossa rede interna possam enviar e-mail, evitando que algum hacker ou usuário não autorizados utilizem este servidor de e-mail, para SPAM.
SPAM significa enviar uma mensagem qualquer para uma grande quantidade de usuários, sem primeiro verificar a utilidade do conteúdo da mensagem para aqueles destinatários.
Necessitamos agora editar o arquivo sendmail.cw. localizado no diretório /etc.
Os espaços mostrados no arquivo abaixo são TABs.
Inclua as seguintes linhas, conforme mostrado abaixo :
# arquivo sendmail.cw – inclua todos os apelidos ou dominios da sua empresa neste arquivo # suaempresa.com.br RELAY ---> Coloque o NomeDoSeuDominio
advlinux.com.br RELAY
#111.222.333 RELAY ---> Coloque o IP da sua rede interna 192.168.1 RELAY
localhost.localhost RELAY #fim da alteração
Necessitamos agora editar/criar o arquivo relay-domains, localizado no diretório /etc/mail (caso o arquivo
/etc/mail/relay-domains não exista deverá ser criado).
Os espaços mostrados no arquivo abaixo são TABs. Inclua as seguintes linhas, conforme mostrado abaixo :
# arquivo relay-domains
# IPdasuaRedeInterna RELAY
Os campos estão configurados para a instalação demonstrada neste livro.
O campo esta configurados para a instalação demonstrada neste livro.
192.168.1 RELAY #fim da alteração
Depois de criado o arquivo verifique se o arquivo relay-domanis tem a permissão 664, caso esta permissão esteja diferente, altere com o comando abaixo a permissão.
chmod 644 relay-domanis
Com a configuração acima somente endereço IP que comece com 192.168.1.0 até 192.168.1.255 utilizará o servidor de e-mail para RELAY, evitando assim que intrusos utilizem seu servidor para SPAM.
Pode-se também usar endereço de e-mail [alguem@empresas.com.br],o qual se deseja bloquear. Para fazer isso, basta incluir o endereço de e-mail com o parâmetro DENY na frente dentro do arquivo relay-domains conforme exemplo abaixo :
192.168.1 RELAY
fulano@empresas.com.br DENY
Após ter configurado reinicie o Sendmail, através do seguinte comando:
/etc/rc.d/init.d/sendmail restart
Apelido e redirecionamento de caixas de correio
É cada vez mais comum a utilização de apelidos (alias) em caixas postais, o apelido poderá ser utilizado de forma a encurta o nome do destinatário da caixa de correio, esconder o real nome do destinatário, utilizar o apelido de forma que a mensagem recebida possa ser reenviada para múltiplos destinatários.
O arquivo /etc/mail/aliases é responsável pela configuração dos apelidos para o sistema de mensagem eletrônica (e-mail).
As estruturas dos comandos dentro dos arquivos são:
apelido ser direcionado para um único destinatário.
apelido: destinatário
Exemplo:
A usuária Lucybel do departamento administrativo tem o nome de login l.linux, portanto o seu endereço de mail é l.linux, de forma a tornar mais amigável iremos colocar um apelido de Lucybel para o mail l.linux simplesmente incluindo a linha abaixo no arquivo aliases.
# insira o seguinte lina lucybel: l.linux # fim da inclusão
Muitas vezes queremos que um departamento ou grupo de usuários receba determinada mensagem, sem ter necessidade de colocarmos todos os nomes dos destinatários. A estrutura deste comando no arquivo aliases será:
nomedogrupo: usuário1,usuário2,usuário3
Exemplo:
# criaremos um apelido chamado de admempresa de forma que todos os usuários da administração # recebam as mensagens.
# Utilizarems os usuários cadastrados no nosso servidor advlinux # (vide capitulo 2 para ver a estrutura da empresa).
admempresa: l.linux,a.linux,m.linux # fim da inclusão
Para que mensagens enviadas para um determindo apelido sejam gravadas em arquivo, utilize a seguinte sintaxe.
apelido: /diretório/nomedoarquivo
Exemplo:
pedidos: /opt/comercial/vendas/pedidos
Caso necessite que através de uma mensagem enviada para um determinado apelido, este execute um programa, utilize a sintaxe.
apelido: | /diretório/arquivoexecutável
Exemplo:
executa: /usr/bin/dir
Após qualquer modificação do arquivo aliases execute o comando abaixo, para que o Sendmail atualize sua base de dados, a fim de assumir a nova configuração.
newaliases
Após execusão, serão mostrados algumas informações referente ao conteúdo do arquivo aliases.
Teste do Anti-SPAM
Devemos lembrar que para realização deste teste, o servidor deverá estar permanentemente conectado a Internet e com o domínio registrado. Caso contrário não há necessidade deste teste.
Agora iremos verificar se a proteção Anti-SPAM configurada está funcionando corretamente. Se tudo estiver configurado conforme foi mostrado anteriormente, nosso servidor de correio eletrônico deverá recusar o SPAM, para testá-lo vá até o endereço eletrônico abaixo :
http://maps.vix.com/tsi/ar-test.html
Coloque o endereço do seu servidor de correio eletrônico conforme mostrado abaixo, para fazer um teste anti-spam, este é o resultado que deverá ser visto em.
mail.advlinux.com.br
E deverá voltar a seguinte resposta:
Mail Relay Testing
Mail Relay Testing
Connecting to mail.brasillife.co.jp for anonymous test ...
<<< 220 .advlinux.com.br ESMTP Sendmail 8.9.3/8.9.3; Sat, 16 Nov 2000 13:41:22 -0300 >>> HELO mail-abuse.org
<<< 250 .advlinux.com.br Hello maps1.pa.vix.com [204.152.184.35], pleased to meet you
Relay test 1 >>> RSET <<< 250 Reset state >>> MAIL FROM: <<< 250 ... Sender ok >>> RCPT TO: <<< 550 ... Relaying denied Relay test 2 >>> RSET
<<< 250 Reset state >>> MAIL FROM:
<<< 553 ... Domain name required Relay test 3 >>> RSET <<< 250 Reset state >>> MAIL FROM:<> <<< 250 <>... Sender ok >>> RCPT TO: <<< 550 ... Relaying denied Relay test 4 >>> RSET <<< 250 Reset state >>> MAIL FROM: <<< 250 ... Sender ok >>> RCPT TO: <<< 550 ... Relaying denied Relay test 5 >>> RSET <<< 250 Reset state >>> MAIL FROM:
<<< 553 ... Invalid host name Relay test 6 >>> RSET <<< 250 Reset state >>> MAIL FROM: <<< 250 ... Sender ok >>> RCPT TO: <<< 550 ... Relaying denied Relay test 7 >>> RSET <<< 250 Reset state >>> MAIL FROM: <<< 250 ... Sender ok >>> RCPT TO:
<<< 553 ... Invalid host name Relay test 8
>>> RSET
<<< 250 Reset state >>> MAIL FROM: <<< 250 ... Sender ok
>>> RCPT TO:<"relaytest@mail-abuse.org">
<<< 550 <"relaytest@mail-abuse.org">... Relaying denied Relay test 9 >>> RSET <<< 250 Reset state >>> MAIL FROM: <<< 250 ... Sender ok >>> RCPT TO:<"relaytest%mail-abuse.org">
<<< 550 <"relaytest%mail-abuse.org">... Relaying denied Relay test 10 >>> RSET <<< 250 Reset state >>> MAIL FROM: <<< 250 ... Sender ok >>> RCPT TO: <<< 550 ... Relaying denied Relay test 11 >>> RSET <<< 250 Reset state >>> MAIL FROM: <<< 250 ... Sender ok >>> RCPT TO:<"relaytest@mail-abuse.org"@mail.advlinux.com.br>
<<< 550 <"relaytest@mail-abuse.org"@mail.advlinux.com.br>... Relaying denied Relay test 12 >>> RSET <<< 250 Reset state >>> MAIL FROM: <<< 250 ... Sender ok >>> RCPT TO:
<<< 553 ... Invalid host name Relay test 13
>>> RSET
<<< 250 Reset state >>> MAIL FROM:
<<< 250 ... Sender ok >>> RCPT TO: <<< 550 ... Relaying denied Relay test 14 >>> RSET <<< 250 Reset state >>> MAIL FROM: <<< 250 ... Sender ok >>> RCPT TO:
<<< 553 ... Invalid host name Relay test 15 >>> RSET <<< 250 Reset state >>> MAIL FROM: <<< 250 ... Sender ok >>> RCPT TO: <<< 550 ... Relaying denied Relay test 16 >>> RSET <<< 250 Reset state >>> MAIL FROM: <<< 250 ... Sender ok >>> RCPT TO: <<< 550 ... Relaying denied Relay test 17 >>> RSET <<< 250 Reset state >>> MAIL FROM: <<< 250 ... Sender ok >>> RCPT TO:
<<< 553 ... Invalid host name Relay test result
All tests performed, no relays accepted.
Configuração do e-mail nas Estações de Trabalho (Pegasus – e-mail
client)
Iremos abordar a instalação de um software de e-mail para a comunicação da nossa solução de correio eletrônico (Sendmail). Para esta solução utilizaremos o software Pegasus Mail, este foi desenvolvo por David Harris e apresenta excelentes qualidades, das quais destacamos :
- cliente para servidores POP3, SMTP, IMAP,LPAD e PH;
- suporta plataformas DOS, Windows9x, Windows NT, Windows 2000 e Windows 16bits (3.1 ou posterior);
- suporta múltiplos usuários no mesmo computador; - suporta protocolo MIME;
- cria múltiplos livros de endereços (addressbooks); - aceita adição de plugins;
- extremamente ágil e configurável; - gratuito;
- trabalha em rede.
Para mais detalhes acesse o endereço eletrônico:
http://www.pmail.com
Devido às características mencionas iremos utilizá-lo em nossa instalação, o software poderá ser encontrado no endereço acima para download. Outros softwares como OutLook 98/2000, Eudora, Netscape Messager poderão ser utilizados para esta finalidade, as configurações a serem utilizadas poderão ser extraídas do procedimento mostrado na instalação do software Pegasus.
Após ter baixado o arquivo de instalação (para a versão Windows 32 bits o atual arquivo é win32-312c.exe), utilize um usuário do SAMBA com acesso de administrador no diretório /opt (direito 775 no diretório), rode o programa de instalação e será iniciada a instalação como mostra a figura abaixo.
Selecione o botão Next> para continuar a instalação.
Após ter lido as informações importantes sobre as condições legais de uso deste software, selecione o botão Next> .
Este item é muito importante, deve ser instalo este software no diretório /opt/appl/PMAIL (na figura acima o driver K: represente o diretório /opt, para mais informações consulte capítulo sobre SAMBA) onde todos os aplicativos utilizados em nosso servidor estão instalados, serão então criado um diretório para uso de todos os usuários com direito ao acesso ao correio eletrônico (serão abordados mais detalhes no transcorrer deste capítulo). Depois de selecionado o diretório de instalação através do botão Browse, clique sobre o botão Next>.
Será criado um grupo no windows do computador o qual se iniciou a instalação, posteriormente nos outros computadores da rede será mostrado como criar um atalho na área de trabalho destes computadores, selecione o botão Next>.
Após a conclusão, clique sobre o botão Finish e reinialise o computador.
Após o reinicio do computador, selecione o programa Pegasus através do menu Iniciar-> Programas -> Pegasus for Win32.
Iremos agora configurar uma conta de administrador do Pegasus, o administrador terá direitos de inclusão, alteração e configuração do software no acesso ao servidor de correio eletrônico (Sendmail). Não há limites no número de admistradores do software, mas deverá sempre ter cautela na escolha e no número de administradores. As contas dos administradores são configuradas da mesma forma que as contas de outros usuários, a única diferença será selecionar a opção de administrador no momento da criação da configuração no Pegasus. Copie o arquivo /etc/hosts do servidor Linux para o diretório /windows, este arquivo contem a relação entre nome do servidor e computadores conectados a rede com os respectivos números IP.
# exemplo de um arquivo hosts 192.168.1.100 advlinux.com.Br 192.168.1.101 pc1101
# fim do arquivo
Administrador no Pegasus não tem direitos de administrador no Sendmail, desta forma poderá haver uma distribuição na administração da solução de correio eletrônico. Não ha restrição caso o usuário seja administrador de ambos os sistemas (Pegasus e Sendmail). Na primeira execução do programa será mostrada a tela abaixo, iniciando o processo de configuração do acesso aos arquivos e diretórios contendo os programas e diretórios do Pegasus.
Selecione o último Ícone, conforme mostrado na figura acima.
De forma a facilitar a administração do sistema, selecione o mesmo diretório no qual foi instalado o programa Pegasus adicionando o diretório MAIL. No nosso caso deverá ser selecionado o diretório
/opt/appl/PMAIL/MAIL (não esqueça que o driver K: representa o diretório /opt no servidor Linux). Depois de configurado o path selecione o botão OK.
O diretório configurado acima, conterá todas as mensagens das caixas postais dos usuários configurados no Pegasus. Certifique-se que o filesystem que contem este diretório, tem espaço suficiente para o armazenamento das mensagens.
Este menu é utilizado para a criação de todos os usuário do Pegasus com diretos de acesso ao servidor de mensagens (Sendmail), iremos somente cadastrar o usuário administrador, para posteriormente cadastrarmos os outros usuários. Clique sobre o botão NEW e a janela abaixo será mostrada.
Preencha o campo Username com o login do administrador do Pegasus (não deve ser usado o usuário root), no campo Personal name coloque o nome do usuário, assinale os itens Administrator privileges e Copy default mail messages como mostra a figura e clique sobre o botão OK.
Automaticamente a janela fechará e será mostrada a janela anterior com o username do usuário administrador, clique no botão Close e a seguinte tela será mostrada.
Insira o username do usuário administrador e selecione o botão OK.
Complete este campo o endereço de e-mail completo (por exemplo d.linux@advlinux.com.br).
Insira o nome do usuário, senha e clique no botão Next>. Estes campos deverão ser completados com as mesmas informações que o usuário utiliza para acessar o servidor Linux.
Complete o campo com o nome do servidor SMTP, em nossa instalação deverá ser utilizado
advlinux.com.br (este é o nome do servidor Linux onde esta rodando o Sendmail) e clique sobre o botão
Selecione o item Network (pois os computadores em conectados a uma rede local e não remotamente) e selecione Next>.
Selecione Finish para finalizar a configuração.
Administrando os usuários do Pegasus.
A administração de usuários será realizada acessando o item User management, possibilitando a inclusão e remoção dos usuários.
Atualiza o envio erecebimento de e-mail manualmente
Será mostrada ao administrador a tela abaixo.
Este é um exemplo de uma mensagem recebido pelo usuário.
Para uma atualização automática do recebimento e envio de mensagens selecione no menu principal o item Tools->Internet options.
O item Check for new POP3 mail every deverá ser preenchido com valores ente 60 e 300 segundos, este valor depende do tráfego no rede, número de usuários do servido de e-mail e carga de trabalho no servidor Linux.
Segurança de acesso as caixas postais
De forma a delimitar acesso aos e-mails iremos alterar os direitos dos arquivos do Pegasus. Para entender s as permissões dentro do Pegasus, deveremos entender como é a estrutura de diretórios usada, abaixo é mostrada e comentada essa estrutura.
Logado como root, altere as permissões do diretório e arquivos onde está instalado o Pegaus, para rwx para o usuário e grupo responsável pela administração do Pegausus e r_x para os demais grupos ou usuários. Desta forma iremos impedir que qualquer usuário possa alterar ou apagar qualquer arquivo importante para a execução e configuração do software.
Exemplo:
Em nosso sistema determinamos que o usuário adm01 é pertencente ao grupo root e será responsável pela administração.
Para determinar as permissões proceda da seguinte maneira.
Vá ao diretório /opt/appl e altere os direitos do diretório PMAIL e os arquivos contidos neste diretório.
cd /opt/appl chmod 775 PMAIL chown adm01:root PMAIL cd PMAIL
chmod 775 * chown adm01:root *
Como cada subdiretório abaixo do diretório MAIL representa uma caixa postal, iremos dar direito de rwx para o usuário a qual pertence este diretório e grupo root, mas nenhum direito para os demais usuários ou grupos. /opt/appl /PMAIL /MAIL Lucybel Debora usuário e-mail Diretório de instalação de aplicativos
Contem os arquivos executáveis e bibliotecas para uso no Pegasus
Estão localizadas todas as caixas postais.
Cada diretório representa uma caixa postal e o nome deste diretório é o nome utilizado na
cd /opt/appl/PMAIL chmod 770 MAIL chown adm01:root MAIL cd MAIL
chmod 770 l.linux
chown l.linux:root Lucybel cd l.linux
chmod 770 * chown l.linux:root *
Finalizado esta etapa, somente o usuário da caixa postal ou administradores do sistema terão acesso, impedindo assim que intrusos vasculhem e-mails.
Conclusões
Escalabilidade:Em termos de envio do mail, pode haver um aumento de escalabilidade horizontal. Basta para isso aumentarmos o número de máquinas que podem enviar mail, teremos apenas que aplicar o load balancing de forma a haver sempre uma máquina diferente a responder a um pedido de envio de mail. Em termos de recepção as coisas já se complicam mais, a escalabilidade só pode ser aumentada a nível vertical, isto é, com o incremento de memória, CPU, discos rígidos, etc.
Versatilidade:
O Sendmail é utilizado em plataformas Linux e UNIX, assim as configurações aqui mostradas poderão ser migradas para outras plataformas com um índice de aproveitamento desta instalação elevada. Hoje o Sendmail esta presente num grande número de empresas e provedores internet, devido a sua portabilidade, confiabilidade e velocidade de excusão.
Lucybel representa o nome do usuário no Pegasus. l.linux representa o nome dousuário no Linux.