15.9. Como baixar contas de mail da internet para uma pequena rede utilizando acesso discado e utilizar um servidor de mails internos?

Como funciona o processo

Nesse documento consideramos que a rede interna, o DNS e o acesso por demanda do servidor estão funcionando corretamente, não cabe nesse documento discutir estas configurações, e que elas precisam estar funcionando.

Imaginemos uma rede com um servidor Linux, e estações (que podem ser com Linux, windows, etc...) que fazem acesso a internet por meio do servidor Linux.

Cada usuário pode mandar e receber mails para a internet usando sua própria conta interna. No papel de servidor de email da intranet temos o Sendmail configurado, que gerenciará estas mensagens. Quanto a conexão com internet estiver ativa, ele descarregará a fila de mails para internet.

Agora, queremos pegar os mails da internet e distribuir para cada usuário de nossa rede interna, quem fará este trabalho será o fetchmail.

Até agora tudo tranqüilo, mas temos um e_mail na empresa chamado vendas@empresa.com.br e que temos três vendedores que atendem esse mail. Após um contato preliminar com o cliente, o mesmo começara a enviar os e-mails com o subject algo como: a/c vendedor1

Como filtrar estes mails?

Uma saída simples, podemos conjugar o fetchmail com o Procmail que é um filtro, e desta forma ele procurará os subjects que tratam para o vendedor1 para enviar para ele, separando das demais.

No final, teremos uma conta que receberá todos os mail de vendas@empresa.com.br que não foram filtrados, e desta forma alguém terá que recebê-los para verificar qual destino devem seguir.

Certo, agora vamos configurar estes serviços para que realizem o que falamos acima:

Instalando os pacotes necessários

Programas necessários:

- Sendmail (Servidor de mails) - Fetchmail (para pegar e-mails da internet) - Procmail (Para fazer filtros de mensagens)

Estes programas encontram-se na distribuição da Conectiva Linux, e desta forma basta instalar os pacotes:

[root@localhost]# mount /mnt/cdrom

[root@localhost]# cd /mnt/cdrom/conectiva/RPMS

[root@localhost]# rpm -ivh sendmail* procmail* fetchmail*

Configurando o Sendmail

Primeiro, vamos configurar o Sendmail, o mesmo pode ser configurado de várias formas, como m4, linuxconf, etc. Neste documento, iremos configurar utilizando o linuxconf:

Abra o linuxconf

[root@localhost]# linuxconf

Entre na parte:

    ---->Ambiente de Rede
    ------> Sendmail - sistema de envio de e-mails

Nas opções de básico, entre na opção:

    --------> Informações básicas

E deixe configurado da seguinte forma:

    #--------------------------------------------------------------------------
    #Apresentar seu sistema como  : [seu servidor]
    #                       [X]Aceitar email para [domínio]
    #Servidor de email            :[nome_do_servidor_local]
    #Roteador de email            :
    #Protocolo roteador de email  : smtp
    #-------------------funcionalidades-----------------------------------------
    #                             [ ] confirmar nomes completos
    #                                  de usuários
    #                             [X] Ativar controle de envio
    #                                 (spammers)
    #Tamanho máximo das mensagens:( )no limite ____________
    #                             [*] Não tentar enviar
    #                                 imediatamente
    #Processar consulta a cada(min):( ) manual 1
    #                             ( ) Usar a shell especial smrsh
    #Maximum recipients per msg   (o) Defaults _____________
    -----------------------------------------------------------------------------

Confirme, e entre agora no menu:

    Opção --->Regras de mascaramento
          -------> Adicionar
    #---------------------------------------------------------------------------
    #                     [*] esta regra está ativa
    #De: Original              :[email_interno]
    #De: Novo                  :[email_externo]
    #Comentário                :
    #---------------------------------------------------------------------------

Desta forma, será garantido que seus email sairão com um endereço para reply válido, que será sua conta no provedor.

Crie uma regra para cada usuário que envie mails para a internet.

Confirme e peça para gerar o arquivo de sendmail.cf

Saia do linuxconf, agora vamos configurar quais máquinas poderão enviar e_mail pelo seu servidor, e evitar que outros utilizem seu servidor durante a conexão:

Edite o arquivo /etc/sendmail.cw para que o sendmail funcione com a sua rede interna:

[root@localhost]# mcedit /etc/sendmail.cw

    # sendmail.cw - include all aliases for your machine here.
    suaempresa.com.br       RELAY ---> Seu Domain Name aqui.
    200.200.221             RELAY ---> O IP da sua rede interna aqui
    localhost.localhost     RELAY

- Se o sendmail.cw não for configurado, você vai receber uma mensagem de RELAY DENIED. Configurado o sendmail.cw o segundo passo seria criar o arquivo relay-domains.

Coloque o domain name da sua empresa, e o IP da sua rede interna:

[root@localhost]# mcedit /etc/relay-domains

    192.168.0       RELAY -->seu ip interno de rede
    domain.com.br   RELAY -- nome de seu servidor

OBS: Os espaços entre o ip e a palavra Relay são TABs, caso contrário, seu arquivo não funcionará.

Salve, e edite o inetd.conf para habilitar as funções de correio:

[root@localhost]# cd /etc [root@localhost]# mcedit inetd.conf

Descomente a linha:

    pop-3   stream  tcp     nowait  root    /usr/sbin/tcpd ipop3d

Salve o arquivo e saia, reinicie o inetd:

[root@localhost]# cds [root@localhost]# ./inet restart

E inicie o sendmail

[root@localhost]# ./sendmail start

Pronto, nosso servidor de email já está operacional, agora crie os usuários internos que terão conta de email, uma maneira simples é com o comando adduser, proceda da seguinte forma:

[root@localhost]# adduser [usuario]

grave uma senha para o usuário:

[root@localhost]# passwd [usuario]

Verifique se seu servidor está operacional, configurando o leitor de email da estação, colocando as informações do usuário, e a parte de servidores pop3 e smtp da seguinte forma:

    servidor pop3 = [nome_do_servidor_interno]
    servidor smtp = [nome_do_servidor_interno]
    usuario: [nome_do_usuário_vc_criou]

Mande uma mensagem para seu próprio usuário local , e verifique que o sr. está recebendo.

Configurando o Fetchmail

Agora, vamos pegar os e-mails da internet, para isso utilizamos o fetchmail:

O primeiro passo é criar um arquivo .fetchmailrc no home do usuário que fará este serviço.

A estrutura do arquivo é algo parecido com o exemplo abaixo:

    #----início do arquivo .fetchmailrc --------------------------
    set logfile "/var/log/fetchmaillog"
    set postmaster ""
    set daemon 123
    set bouncemail
    poll [provedor_internet] proto POP3 
       user [usuário] password "[senha]" is [usuário_local] here
    
    #--- fim do arquivo -------------------------------------------

A opção set daemon é a que será utilizada para os intervalos de checagem dos emails, o valor é em segundos.

A opção set logfile é para criar um arquivo de log que será muito útil.

A linha que inicia com o pool é para baixar os emails de seu provedor no lugar da expressão [provedor_internet] coloque o endereço do servidor pop de seu provedor em [usuário] e [senha] coloque a conta com a senha da conta a internete na expressão [usuário_local] coloque quem é o usuário de seu servidor.

Crie quantas forem necessárias.

Agora, é necessário rodar o fetchmail para que ele baixe as mensagens de seu provedor e envie para seu servidor local para que seus usuários possam pegar as mensagens.

Uma maneira simples é agendar no crontab do usuário que executa o fetchmail, e informa de quanto em quanto tempo o fetchmail será rodado. (para isso tire a opção set daemon de sua configuração.

Outra forma, é colocar o fetchmail direto para acesso, colocando-o como daemon, para isso execute no prompt:

[root@localhost]# fetchmail

A segunda parte chama o procmail, que é filtro, para o caso de duas pessoas internas utilizarem o mesmo mail externo, como no caso de três vendedores utilizarem o mail externo vendas@empresa.com.br, assim é pedido para quem quiser enviar um mail para um dos vendedores coloque no subject por exemplo:

Para o vendedor1.

Assim precisamos criar um arquivo procmailrc no home do usuário que chama o fetchmail.

Configurando o Procmail

O arquivo de configuração é algo parecido com:

    -----------Ínicio do arquivo .procmail -------------
    PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin
    INBOX=/home/[usuário]/mail/INBOX
    MAILDIR=/home/[usuário]/mail
    DEFAULT=$MAILDIR/INBOX
    LOGFILE=var/log/procmaillog
    
    
    :0
            * ^Subject:.*vendedor1*
            ! vendedor1@servidor.intranet
    
    :0      * ^Subject:.*vendedor2*
            ! vendedor2@servidor.intranet
    
    # Este exemplo copia que contenham no Subject a palavra 
    # vendedor1 ou 2 , e fará um bounce (repassará) para o 
    # mail interno de cada vendedor.
    
    :0
    
            * ^To:.vendas@empresa.com.br
            ! geral@servidor.intranet
    
    # Esta última regra é no caso de alguma mensagem não ser
    # pega pelos filtros acima seja mandada para uma conta denominada geral@.
    # É necessário que alguém verifique esta conta, para dar destina a estas
    # mensagens.
    
    #no final do arquivo coloque estas linhas:
    
    :0
    $INBOX

Pronto, agora temos uma solução de servidor de email interno funcionando, bastará configurar no seu script por discagem por demanda chamar o comando:

sendmail -q

Para que a cada conexão, sua fila de emails a serem enviados seja despachada.

Agora basta que seus usuários baixem as contas recebidas que estão no spool do seu servidor local. E para mandarem, bastará digitar a mensagem, e mandá-las para o servidor local, que este ao receber o comando sendmail -q irá despachar os mesmo para a internet.

Tudo o que está sendo executado e transmitido pelo sendmail pode ser verificado no arquivo de log maillog, que geralmente fica em :

/var/log/mailog

Do fetchmail o log é gravado em:

/var/log/fetchmailog

e do Procmail em:

/var/log/procmaillog

Verifique estes arquivos para ter certeza que tudo funciona de acordo, ou no caso de problemas, para verificar o que está errado.