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.