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.