Suse 10.1 - servidor de e-mail interno.

Atualizado em: 23/07/2006



Sobre este documento

documento em elaboração, contém erros, nos proximos dias faço a correção e removo este aviso

Tutorial (howto) como montar um servidor de e-mail para uso interno, configuração passo a paso, com teste de funcionamento de cada serviço, para uso domestico ou em empresas com hospedagem externa, neste tutorial tem a configuração para baixar as mensagens para um servidor interno e aplicar mais regras no recebimento e envio de mensagens.

Ambiente; utilizado uma maquina da rede sem restrição no firewall, neste ambiente tem outra maquina fazendo NAT e rodando o proxy, segue um resumo do firewal que libera a maquina (servidor de e-mail) com IP 192.168.1.53;

      modprobe iptable_nat
  /usr/sbin/iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.53/32 -p tcp -m multiport  --dport 80,443 -j ACCEPT
  /usr/sbin/iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128
      iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
      echo 1 > /proc/sys/net/ipv4/ip_forward

Estação com SUSE 10.1 instalado com perfil estação de trabalho KDE, navegando sem restrição de firewall, utilizando smart como gerenciador de pacotes, com outro gerenciador precisa ajustar a linha de comando, veja no menu quais os serviços já estão configurados e se tem alguma observação sobre o serviço.

Nesta configuração inclue a configuração e testes de funcionamento do Postfix, fetchmail, SASL e outros serviços que fazem parte de um servidor de e-mail

Na maquina local o root (adminstrador da maquina), tem acesso às mensagens de todos, ótimo pra backup, também é um grande problema, ler estas mensagens é crime conforme definido na lei brasileira, crime por violação de correspondencia.

Dependendo do ambiente e da empresa isto poderá ter varias consequencias que não cabe discutir neste tópico, pense em elaborar uma comunicação pra informar que o e-mail é correspondencia da empresa e que é proibido o uso de e-mail pessoal na empresa, que será auditado periodicamente e outros avisos que achar necessário, mantenha uma copia assinada como protocolo de entrega da comunicação, consulte este FAQ.

http://www.zago.eti.br/email/normas-internas.txt

Postfix - instalar, configurar e testar

Instalar, configurar e testar o servidor de e-mail (postfix-2.2.9-10@i586).

Instalar pacote Postfix e mailx para testar o recebimento de mensagens.

  smart install postfix mailx -y
  chkconfig postfix on
  df | mail zago -s  'uso do disco - via mailx!'
  cat /var/spool/mail/zago 

Prontinho, explicando o teste.

As duas ultimas linhas servem para testar o envio de mensagens, altere o usuário para um usuário valido no seu sistema, pode ser qualquer usuário comum cadastrado nesta maquina, exemplo para o usuário root enviar e-mail para zago informando o espaço em disco:

df | mail zago -s 'uso do disco - via mailx!'

Não ocorrendo erro no envio da mensagem, então confera se está tudo OK, se o e-mail chegou, execute no shell do próprio servidor;

cat /var/spool/mail/zago

Retorna o e-mail no console, no corpo da mensagem consegue ler o resultado do comando df que foi enviado por e-mail, veja o que retornou na minha instalação;

  os741sx:~ # df | mail zago -s  'uso do disco - via mailx!'
  os741sx:~ # cat /var/spool/mail/zago
  From root@os741sx.www.zago.eti.br  Sun May  7 01:01:05 2006
  Return-Path: <root@os741sx.www.zago.eti.br>
  X-Original-To: zago
  Delivered-To: zago@os741sx.www.zago.eti.br
  Received: by os741sx.www.zago.eti.br (Postfix, from userid 0)
          id D297E1BEBD; Sun,  7 May 2006 01:01:05 -0300 (BRT)
  Date: Sun, 07 May 2006 01:01:05 -0300
  To: zago@os741sx.www.zago.eti.br
  Subject: uso do disco - via mailx!
  User-Agent: nail 11.25 7/29/05
  MIME-Version: 1.0
  Content-Type: text/plain; charset=us-ascii
  Content-Transfer-Encoding: 7bit
  Message-Id: <20060507040105.D297E1BEBD@os741sx.www.zago.eti.br>
  From: root@os741sx.www.zago.eti.br (root)
  
  Filesystem           1K-blocks      Used Available Use% Mounted on
  /dev/hda3             32916172   9003320  23912852  28% /
  udev                    502036       132    501904   1% /dev

registro no log.

  tail -f /var/log/messages
  
  May  7 01:01:05 os741sx postfix/pickup[15216]: D297E1BEBD: uid=0 from=<root>
  May  7 01:01:05 os741sx postfix/cleanup[15260]: D297E1BEBD: message-id=<20060507040105.D297E1BEBD@os741sx.www.zago.eti.br>
  May  7 01:01:05 os741sx postfix/qmgr[15217]: D297E1BEBD: from=<root@os741sx.www.zago.eti.br>, size=654, nrcpt=1 (queue active)
  May  7 01:01:06 os741sx postfix/local[15262]: D297E1BEBD: to=<zago@os741sx.www.zago.eti.br>, orig_to=<zago>, relay=local, delay=1, status=sent (delivered to mailbox)
  May  7 01:01:06 os741sx postfix/qmgr[15217]: D297E1BEBD: removed

Na instalação já pega o nome da maquina (dominio), cat /etc/hosts

  os741sx:~ # cat /etc/hosts
  
  127.0.0.1       localhost
  
  127.0.0.2       os741sx.www.zago.eti.br os741sx
  

Diminua os problemas, na instalação informe em dominio, o mesmo dominio do servidor de e-mail externo, o mesmo que vai usar para autenticar (fazer relay), ou altere agora via yast.

Yast -> Dispositivos de Rede -> Placa de Rede -> procure pela opção de alterar o dominio.

As configurações do postfix ficam no arquivo /etc/postfix/main.cf, outros serviços chamado pelo postfix tem seus próprios arquivos de configuração, como exemplo o SASL para fazer relay, existem diversas maneiras de fazer alterações nestes arquivos de configuração, tem ferramentas em ambiente gráfico, pode editar diretamente com seu editor preferido, ou se preferir pode fazer a copia de outra instalação, ou desta configuração que está disponivel em http://www.zago.eti.br/modelos/suse101-postfix.txt, mesmo fazendo a copia deste, precisa fazer algumas alterações para adequar a sua rede, precisa alterar no mínimo as seguintes diretivas:

  myhostname = servmail.zago.eti.br
  mydomain = zago.eti.br
  relayhost = smtp.zago.eti.br
  mynetworks = 192.168.1.0/24, 127.0.0.0/8

Use seu editor preferido para alterar no main.cf as diretivas acima, ou use o "sed" para aplicar as alterações, exemplo de formato da linha de comando com sed:

sed -i "s/stringoriginal/stringtroca/g" arquivo

Com "sed" não precisa editar o main.cf, mesmo assim precisa usar um editor de texto para ajustar a linha de comando para depois colar no console, depois de alterar os dados acima, execute estas linhas de comando;

  rcpostfix restart
  df | mail zago -s  'uso do disco - via mailx!'
  cat /var/spool/mail/zago 

Onde; no seu arquivo de configuração as diretivas;

myhostname = servmail.zago.eti.br, deve ser igual a /etc/hosts, neste exemplo ficaria com aula.intranet.net

mydomain = zago.eti.br, deve ser igual a /etc/hosts, neste exemplo ficaria com intranet.net

relayhost = smtp.zago.eti.br, deve ser o dominio onde vai autenticar as mensagens, seu servidor de e-mail externo, provedor que hospeda seu dominio.

mynetworks = 192.168.1.0/24, 127.0.0.0/8, deve colocar sua rede, caso a classe seja diferente, altere 192.168.1. para a sua rede.

nas linhas que inciam com df e cat, zago é um usuário válido na maquina, use em lugar de zago um usuário da sua maquina .

Quando OK, o envio do primeiro e-mail cria automaticamente o arquivo com o nome do usuário e salva a mensagem dentro dele, o comando cat exibe o fonte do e-mail no terminal.

Quando falhar, deve revisar toda a configuração, fazer novos testes, procurar e interpretar a mensagem de erro, consultar os logs e outras verificações do sistema.

Passe para o próximo tópico somente depois que o comando cat /var/spool/mail/<usuario> exibir no terminal a mensagem enviada pelo root informando o espaço em disco.

Explicando com mais detalhes e log

Alterando manualmente, mesmo que tenha utilizado o recurso acima sempre é bom seguir os proximos passos pra conferir.....

Arquivo de configuração do Postfix, fica em: /etc/postfix/main.cf

Precisa ajustar algums parametros, entre eles estão o dominio e outros detalhes descritos abaixo, utilize ferramentas, edite a seu modo ou substitua o arquivo de configuração por outro previamente configurado ou de outra instalação.

Dica para comparar seu main.cf com o de outra instalação, como exemplo o deste tutorial.

  cp /etc/postfix/main.cf /tmp/main.cf
  wget http://www.zago.eti.br/modelos/suse101-postfix.txt
  egrep -v "^#|^$" main.cf > /tmp/maincf-limpo
  egrep -v "^#|^$" suse101-postfix.txt > /tmp/maincfmodelo
  diff -y --suppress-common-lines /tmp/maincf-limpo /tmp/maincfmodelo | tr -d '\011' > /tmp/maindif
  less -Nis /tmp/maindif
  tecle q para sair

Faça (backup) copia do main.cf da instalação antes de qualquer alteração ou troca do original por outro, execute:

cp /etc/postfix/main.cf /etc/postfix/main.cf-original

Use seu editor preferido, caso queira usar o "vi" para importar este modelo de main.cf, execute dentro do do "vi" em modo comando:

:r !lynx -dump http://www.zago.eti.br/modelos/suse101-postfix.txt

Utilizo o processo acima mas pode baixar via wget, navegador, copiar e colar, editar via "mc", webmin ou seu editor preferido.

De qualquer forma, usando o original ou fazendo a copia do FAQ, precisa fazer alterações no /etc/postfix/main.cf, entre as alterações minimas necessárias estão o nome do dominio, host e provedor que fará relay (autenticar) além de outros itens que são peculiares a tua rede.

A seguir as alterações que deve aplicar no /etc/postfix/main.cf:

Com esta configuração basica pode testar o funcionamento do Postfix:

Iniciar o serviço somente para esta sessão:

  rcpostfix start
  
  [root@localhost postfix]# service postfix start
  Iniciando postfix:                                         [  OK  ]

Iniciar o Postfix sempre junto com o boot execute:

chkconfig postfix on

Outros comandos e dicas:

Lista um resumo da configuração; postconf -n

Lista toda a configuração; postconf

Após qualquer alteração nas configurações do postfix, precisa recarregar a configuração com; rcpostfix reload

Caso precise parar, então use:

  rcpostfix stop
  
  #inicial manualmente
  rcpostfix start

Retornando done é sinal que o postfix está rodando normalmente, para outros resultados deverá rever as configurações.

Ver se está rodando, execute:

rcpostfix status

LEMBRANDO que o dominio zago.eti.br e e-mail zago@zago.eti.br existem somente nesta maquina, eles não existem para o mundo, isto só funciona na rede interna, mesmo desconectado da internet as estações enviam e-mail para este servidor Postfix, serve unica e exclusivamente como e-mail interno.

Nesta rede tenho uma maquina de cara pra internet trabalhando como firewall e compartilhando a conexão pra rede interna, o servidor de e-mail está em outra maquina rodando também outros serviços, nesta rede existem diversas configurações de estações, tem estação com GNU/Linux e Windows, tem estações usando Evolution, Kmail, Outlouco e outras usando somente webmail ou FreeNX, tem estações que passam pelo firewall para acessar diretamente contas de e-mail externa e outras que tem acesso somente ao servidor interno, como pode ver, voce pode fazer o que quiser, a diferenças estão nas configurações do firewall que libera ou bloqueia o acesso externo, nos clientes depende da configuração da conta de e-mail, pode configurar duas contas, uma apontando para o IP do Postfix (e-mail interno), outra para o dominio em servidor externo, neste caso pode configurar contas no servidor interno ou não.

Acompanhar os logs em: /var/log/maillog tail -f /var/log/maillog

Neste exemplo retornou;

  Apr  4 01:32:14 localhost sendmail[4457]: k344WELk004457: from=root, size=329, class=0, nrcpts=1, msgid=<200604040432.k344WELk004457@localhost.localdomain>, relay=root@localhost
  Apr  4 01:32:14 localhost sendmail[4458]: k344WERU004458: from=<root@localhost.localdomain>, size=633, class=0, nrcpts=1, msgid=<200604040432.k344WELk004457@localhost.localdomain>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
  Apr  4 01:32:14 localhost sendmail[4457]: k344WELk004457: to=zago, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30329, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (k344WERU004458 Message accepted for delivery)
  Apr  4 01:32:14 localhost sendmail[4459]: k344WERU004458: to=<zago@localhost.localdomain>, ctladdr=<root@localhost.localdomain> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30869, dsn=2.0.0, stat=Sent

Postfix ouve na porta 25, depois de iniciado no resultado de:

netstat -na

Procure pela porta 25, veja este resultado parcial:

  tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
  tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN
  tcp        0      0 :::22                   :::*                    LISTEN
  tcp        0      0 ::1:25                  :::*                    LISTEN

Quando a porta 25 não aparece no resultado pode ser problemas com firewall, processo do postfix não foi iniciado ou outro problema qualquer com a rede ou configuração.

Ainda não completa a conexão por telnet na porta 25, por exemplo, ao tentar conexão via telnet a partir de outra maquina da rede com o comando telnet 192.168.1.53 25, retorna este erro;

  zago@suse64:~> telnet 192.168.1.53 25
  Trying 192.168.1.53...
  telnet: connect to address 192.168.1.53: Connection refused

A configuração ainda não terminou, vamos para a configuração do IMAP que fará a entrega das mensagens ao clientes de e-mail da rede interna.

resumo de todos os comandos - copiar e colar

Minha colinha, resumo dos comandos que utilizo para copiar e colar.

  
  smart install postfix mailx -y
  smart install dovecot -y
  mv /etc/postfix/main.cf /etc/postfix/main.cf-original
  cat /etc/hosts > /etc/postfix/main.cf
  vi /etc/postfix/main.cf
  #dentro do "vi":
  :r !lynx -dump http://www.zago.eti.br/modelos/suse101-postfix.txt
  rcpostfix reload
  chkconfig postfix on
  df | mail zago -s  'uso do disco - via mailx!'
  cat /var/spool/mail/zago

Servidor POP3 - servidor IMAP (POP) para as maquinas internas.

Este tópico está com falha na autenticação, cliente de e-mail não consegue conexão com o servidor, quando pronto removo este aviso.

Tem diversas opções no SUSE 10.1, pesquise (pop3) no gerenciador de pacotes

  courier-imap - An IMAP and POP3 Server for Maildir MTAs
  dovecot - IMAP and POP3 Server Written Primarily with Security in Mind
  imap - IMAP4, POP2, and POP3 Mail Server

Acrescentando mais um serviço ao servidor de e-mail, instalar e testar o funcionanmento do IMAP com Postfix.

O Postfix é um servidor SMTP. Ele não tem nada de POP, portanto precisa de um servidor POP, existem diversos, precisa instalar um deles para fazer a interface do servidor com as estações da rede, os clientes de e-mail instalados nas estações de trabalho vão se comunicar com servidor POP para baixar as mensagens para a estação local.

Optei pelo (imap), já tem pacote da distro, veja o que retorna na pesquisa;

  Description:
   This package contains IMAP4, POP2, and POP3 mail servers.
   .
   After installation, activate the servers in the file /etc/inetd.conf.

Observe no resultado acima, está errada a indicação de /etc/inetd.conf, o correto é /etc/xinetd.conf, que chama as configurações de /etc/xinetd.d/imap

"IMAP é um servidor para os protocolos de mail POP (Post Office Protocol) e IMAP. O protocolo POP permite uma máquina de correio coletar mail para usuários e permite o download do mail para a máquina local do usuário para leitura. O protocolo IMAP oferece a funcionalidade de POP, e permite um usuário ler seu mail em uma máquina remota sem movê-lo para a sua caixa postal local."

Instalar: smart install imap -y

Precisa habilitar o servidor pop3 em /etc/xinetd.d/imap

Edite o arquivo (/etc/xinetd.d/imap), procure pela parte igual no exemplo abaixo, altere a linha (disable = yes) para altere de yes para no como no exemplo abaixo, não altere mais nada, salvar e sair...

  # imap - pop3 mail daemon
  #
  service pop3
  {
          disable         = no

Iniciar o serviço nesta seção: rcxinetd start, quando Ok retorna;

  os741sx:/etc/postfix # rcxinetd start
  Starting INET services. (xinetd)                                      done
  

Iniciar o serviço junto com o boot da maquina: chkconfig imap on

Depois de iniciar o xinetd (imap ou servidor de pop3), quando Ok abre a porta 110, procure por ela nos resultados de netstat -na, compare com resultado deste serviço parado e rodando, a difereça deve ser esta porta 110 a mais.

  tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN
  

Testar o funcionamento do servidor pop.

Neste exemplo foi utilizado o kmail no SUSE 10, pode usar qualquer cliente de e-mail.

Executar kmail em outra maquina da rede interna, configurações do kmail para receber as mensagens:

      Menu Configurações
         Configurar kmail
            identidades  
               adicionar  ## preencha os dados ....
                  Onde conta de e-mail zago@intranet.net, claro que deve trocar para o seu 
                  usuário e nome da tua maquina.
               contas
                 adicionar
                    (selecione pop3)
                    preencha neste formato:
                    Nome: qualquer nome
                    Login: o mesmo nome de login no servidor
                    Senha: a mesma senha do usuário no servidor
                   Máquina: 192.168.1.53  #IP do servidor de e-mail ou nome quando rodar  DNS 
                   para as maquinas internas.
                   porta: 110
  
  Prontinho,  Ok, aplicar e OK, pra receber as mensagens de teste que estão no servidor basta um clique em "Verificar Correio em", quando Ok e configurado com login e senha do mesmo usuário utilizado no teste com mailx, receberá no kmail aquela mensagem do teste de disco, quando falhar, confira os dados e tente interpretar a mensagem de erro.
  
  
  Confira o que consta no log "tail -f /var/log/maillog". Quando receber as mensagens deve registrar algo neste formato;
  
  Apr  4 02:43:17 localhost dovecot: pop3-login: Login: user=<zago>, method=PLAIN, rip=::ffff:192.168.1.43, lip=::ffff:192.168.1.53
  Apr  4 02:43:17 localhost dovecot: pop3(zago): Logout. top=0/0, retr=1/ del=1/1, size=903
  
  
  
  configurações do Kmail para enviar mensagens:
      Menu Configurações
         Configurar kmail
             contas
                Enviando
                    Adicionar
                    (selecione SMTP)
                     preencha neste formato:
                   Nome: qualquer nome
                   Máquina: 192.168.1.53  #IP do servidor de e-mail ou nome quando rodar DNS 
                   para as maquinas internas.
                   porta: 25
  
  OK, aplicar e OK, em uma segunda instalação falhou, acho que errei ou esqueci algum detalhe. 

Este servidor ainda não recebe nem envia e-mail para o mundo, mas o cliente de e-mail tem que enviar e receber internamente, isto funciona até com maquinas fora da internet.

Para testar, envie uma mensagem para outro usuário cadastrado no servidor, não tente enviar para o mundo porque ainda não está configurado o SASL para fazer relay no provedor externo, por enquanto está funcionamento somente entre contras de usuários cadastrados na maquina local.

Passe para o proximo tópico somente depois que funcionar o envio e recebimento de e-mail internamente, os proximos tópicos são configurações pra troca de e-mail com o mundo (servidor de e-mail externo - provedor)

Fetchmail - Baixar mensagens do provedor externo

Transferir mensagens do provedor externo para o servidor local, baixar mensagens.

Instale e cofigure o Fetchmail somente em servidores que não respondem pelo dominio, ele é indicado para quem utiliza hospedagem externa, quem não tem o MX redirecionado para o servidor interno, fetchmail faz um papel semelhante ao de um cliente de e-mail como Kmail ou Evolution, pega as mensagens no servidor externo e entrega ao Postfix local, faz somente isto, não envia e-mail nem é possível acessar e-mail por ele.

Portanto não utilize fetchmail quando tem o MX redirecionado para seu IP, neste caso o Postfix responde pelo dominio e recebe as mensagens diretamente, neste caso precisa configurar o DNS e outros serviços relacionados a comunicação com outros servidores na internet.

Utilize como ferramenta para transferir e-mail do provedor externo para seu servidor local.

Mais dicas e modelos de configuração
http://www.zago.eti.br/email/fetchmail.html

Instalar o fetchmail;

smart install fetchmail -y

Configurando o Fetchmail

Apoveitando para lembrar do manual; man fetchmail

fetchmail - fetch mail from a POP, IMAP, ETRN, or ODMR-capable server

Webmin tem modulo de configuração do fetchmail.

Depois de instalado precisa configurar com dados das contas que deseja baixar mensagens para esta maquina.

Na instalação não cria um arquivo modelo de configuração, tem que criar e configurar manualmente, este arquivo tem que ficar no home do usuário que vai rodar o fetchmail, como vou utilizar varios usuários com contas em provedores diferentes, optei por colocar este arquivo no home do root e protejer o acesso deste arquivo, afinal.... tem senhas de e-mail, optei por esta condição para evitar que um usuário pegue a senha do outro.

Meu .fetchmailrc abaixo, baixar e-mail da conta zagolinux@uol.com.br e salvar em /var/spool/mail/zago:

      set logfile "/var/log/fetchmaillog"
      set postmaster "nome do postmaster"
      set daemon 300
      set bouncemail
      poll pop3.uol.com.br proto POP3 user zagolinux password minhasenha is zago here
  
  
  Outro exemplo para testes com e-mail do IG.
  
      set logfile "/var/log/fetchmaillog"
      set postmaster "nome do postmaster"
      set daemon 300
      set bouncemail
      poll pop3.ig.com.br proto POP3 user zago_hard password minhasenha is zago here

Utilize seu editor preferido na criação do arquivo .fetchmailrc dentro do home do root, exemplo pelo "vi":

vi /root/.fetchmailrc

ou vá pro diretório do root:

    cd ~
    vi .fetchmailrc
    pressione insert pra entrar no modo inserção
    digite as linhas acima, ou copie as linhas acima e altere os
    dados necessários, depois pra salvar e sair, pressione ESC SHIFT+: wq

Depois de criar o arquivo, acerte a permissão e inicie o serviço, execute estas duas linhas abaixo e prontinho....

    chmod 710 /root/.fetchmailrc
    fetchmail
  
  Veja a mensagem (aviso) é desencorajado rodar como root
  [root@localhost ~]#   fetchmail
  fetchmail: WARNING: Running as root is discouraged.

Como iniciar fetchmail automaticamente no boot, pode fazer manualmetne em cada boot, automatizar de duas formas, acrescentar uma chamada no final de /etc/rc.d/rc.local ou no cron para executar periodicamente.

A opção "set daemon 300" indica para ser executado a cada 300 segundos, utilize somente em casos de iniciar manualmente, scripts ou pelo /etc/rc.d/rc.local, remova esta linha quando usar a opção do crontab.

Prefiro agendar no crontab, neste caso precisa retirar da configuração do fetchmail a linha: set daemon 300 Acrescentar no cron (agendador de tarefas pra executar o fetchmail a cada 5 minutos, como root execute esta linha de comando:

    crontab -e
    */5 * * * * /usr/bin/fetchmail -a

A primeira linha entra em modo de configuraçao do agendador de tarefas, a segunta linha agenda a executação do fetchmail a cada 5 minutos, para encerrar, pressione ESC :wq

Sobre o agendador de tarefas, veja o FAQ
http://www.zago.eti.br/agenda.txt

Prontinho, agora Fetchamail pega os e-mail no provedor externo e salva no arquivo de: /var/spool/mail/user

este processo se repete a cada 5 minutos, altere no cron para os minutos que deseja a repetição.

O arquivo de log /var/log/fetchmaillog, será criado automaticamente na primeira execução do fetchmail, acompanhe os logs, execute:

tail -f /var/log/fetchmaillog

Não entendi como funciona a quebra de linha, a configuração para alguns provedores provoca quebra da linha de configuração e por consequencia a mensagem de erro do tipo:

  [root@faqcl10 root]# fetchmail -a
  fetchmail:/root/.fetchmailrc:5: syntax error em is

Solução - edite o arquivo de configuração .fetchmailrc e verifique se não tem algum erro de digitação, se falta espaço na separação dos paramentros, evite a quebra de palavra, quando o final da linha quebrar a palavra, acrescente espaços antes da palavra que acusa no erro de modo que ela passe para a linha seguinte e depois executar novamente: fetchmail -a

Com esta configuração, mesmo estações sem acesso à internet podem acessar este servidor com qualquer cliente de e-mail ou webmail.

Somente os usuários cadastrados na maquina terão acesso, o administrador do servidor precisa incluir as contas no .fetchmail para baixar as mensagens do provedor externo para a maquina local, inclusive pode definir senhas diferente entre o provedor e maquina local.

Outros exemplos do arquivo de configuração do arquivo de configuração /root/.fetchmailrc

    cat /root/.fetchmailrc
  
      set logfile "/var/log/fetchmaillog"
      set postmaster "nome do postmaster"
      set bouncemail
      poll pop3.ig.com.br proto POP3 user zago_hard password senhadoxxxx is zago here
      poll pop3.uol.com.br proto POP3 user antoniofzago password senhadoxxxx is zago here
      poll pop3.bra.terra.com.br with proto POP3
         user zagoteste there with password senhadoxxxx is zago here
         user zagorede there with password senhadoxxxx is zago here
  
  #comando pra importar pro "vi" (veja cp.txt)
  #  :r !lynx -dump http://www.zago.eti.br/modelos/fetchmailrc

Faça seus testes, quando receber mensagens do provedor as configurações estão OK, mas ainda não envia mensagens para o mundo, este é um serviço que requer configuração do SASL, assunto do proximo tópico.

Resumo de comandos para fetchmail.

  smart install fetchmail -y
  vi /root/.fetchmailrc
  :r !lynx -dump http://www.zago.eti.br/modelos/fetchmailrc
  chmod 710 /root/.fetchmailrc
  fetchmail -a
  cat /var/spool/mail/zago
  tail -f /var/log/fetchmaillog

SASL, fazer relay no provedor

Fazer relay no provedor externo (autenticar mensagens eviadas) validar no seu provedor para não ser rejeitadas no destino como sendo um SPAM enviando diretametne de uma conexão ADSL, veja mensagens que circulou na Linux-br sobre ete tema;

http://www.zago.eti.br/email/servidor-adsl-bloqueado.txt

Considerando que voce já tem o Postfix, Fetchmail e IMAP configurados e trocando e-mail internamente, vamos pra configuração do SASL, que validará as mensagens no teu servidor, fazer relay no provedor externo.

Precisa instalar os pacotes do cyrus-sasl, caso ainda não instalou, execute;

smart install cyrus-sasl -y

Depois de instalar SASL e seus plugins, precisa criar e configurar o arquivo de senhas:

echo "smtp.seudominio.com.br usuario:suasenha" > /etc/postfix/sasl_passwd

Exemplo para o usuario zago com senha minhasenha autenticar no servidor http://www.zago.eti.br:

    echo "smtp.zago.eti.br zago:minhasenha" > /etc/postfix/sasl_passwd
    chown root.root /etc/postfix/sasl_passwd
    chmod 600 /etc/postfix/sasl_passwd
    postmap hash:/etc/postfix/sasl_passwd

Estas 4 linhas servem para criar o arquivo de senhas, ajustar as permissões e criar o banco de dados de senhas do SASL.

deverá ficar assim:

  [root@localhost ~]# cat /etc/postfix/sasl_passwd
  smtp.zago.eti.br zago:minhasenha

OBS - Na configuração do SASL o dominio deve ser o mesmo utilizado no item (relayhost = smtp.zago.eti.br) do /etc/postfix/main.cf, portanto utilize o mesmo dominio nas duas configurações, nos dois arquivos, tanto no:

/etc/postfix/sasl_passwd e /etc/postfix/main.cf

Caso ocorra algum erro ou quando fizer qualquer alteração de usuário ou senha, edite o /etc/postfix/sasl_passwd, retire todos os espaços e use um TAB como separador entre dominio e usuário:senha, (posicione o cursor depois da ultimo caracter do dominio e pressione a tecla TAB), use seu editor ou pelo "vi":

vi /etc/postfix/sasl_passwd

Sempre que alterar /etc/postfix/sasl_passwd precisa recriar o banco de dados, execute esta linha de comando:

postmap hash:/etc/postfix/sasl_passwd

Este comando não retorna mensagem, utiliza os usuarios e senhas do arquivo: /etc/postfix/sasl_passwd pra criar o bando de dados do SASL em: /etc/postfix/sasl_passwd.db, sempre que utilizar o comando acima, ou alterar qualquer parametro do /etc/postfix/main.cf

Precisa também recarregar o postfix pra valer as alterações, para recarregar (reiniciar) o postfix execute;

service postfix reload

O arquivo de configuração do postfix /etc/postfix/main.cf pode ser copiado de outra istalação, ou faça a seu modo editando o arquivo /etc/postfix/main.cf

Fazer relay no provedor, precisa configurar o main.cf pra utilizar os SASL, precisa, após a instalação e configuração do SASL, edite o /etc/postfix/main.cf e acrescente no final deste arquivo as seguintes linhas:

  # Autenticação smtp
  smtp_sasl_auth_enable = yes
  smtp_sasl_security_options = noanonymous
  smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

Salve, feche o arquivo e recarregue o arquivo de configuração do postfix:

service postfix reload

Agora pode fazer testes com envio de mensagens para o mundo, em uma estação da rede configurada para acessar este servidor interno, faça testes de envio de e-mail para o mundo, isto é, fazendo relay no teu provedor,

Alterações, inclusão de novos usuários e senhas, após qualquer alteração neste arquivo precisa recriar o banco de dados do SASL, o melhor é remover tudo e começar do zero, então faça isto:

use seu editor de texto preferido ou pelo "vi" para alterar, incluir ou fazer as correções da configuração:

vi /etc/postfix/sasl_passwd

Execute as linhas de comando abaixo, na ordem em quje estão, elas servem para remover o banco de dados, ajustar as permissões, recriar o banco de dados do SASL e por ultimo recarregar o postifix pra valer as alterações.

    rm -rf /etc/postfix/sasl_passwd.db
    chown root.root /etc/postfix/sasl_passwd
    chmod 600 /etc/postfix/sasl_passwd
    postmap hash:/etc/postfix/sasl_passwd
    service postfix reload

Em testes para usar o transport, ainda não funciona.

    rm -rf /etc/postfix/transport.db
    rm -rf /etc/postfix/transport.domains.db
    chown root.root /etc/postfix/transport
    chmod 600 /etc/postfix/transport
    postmap hash:/etc/postfix/transport
    chown root.root /etc/postfix/transport.domains
    chmod 600 /etc/postfix/transport.domains
    postmap hash:/etc/postfix/transport.domains

Agora teste a configuração enviando e-mail para o mundo, acompanhe o que está acontecendo, veja no log, execute:

tail -f /var/log/maillog

OBS. - O formato de dados no arquvo /etc/postfix/sasl_passwd pode ser diferente de um provedor pra outro, alguns exemplos;

UOL, IG, e muitos outros provedores funciona neste formato:

  smtp.dominio.com.br usuário:senha
  
  smtp.uol.com.br zagolinux:minhasenha

YAHOO! - tem que usar neste formato:

smtp.mail.yahoo.com.br zagolinux:minhasenha

Com um pequeno detalha a mais, antes de fazer relay, precisa entrar na sua conta de e-mail do Yahoo via web, em "Oções do Yahho Mail" procure por "Acesso POP e REdirecionamento" confirme a opção por acesso via POP, esta opção é a mesma que voce precisa configurar pra enviar e-mail atraves de clientes de e-mail.

LOCALWEB, FASTWEB, SCHEMER etc...

Quem tem sites hospedados na Localweb, Schemer, fastweb e etc..

o formato da linha de configuração no /etc/postfix/sasl_passwd tem que ser neste formato;

  smtp.dominio.com.br usuário@dominio.com.br:senha
  
  smtp.seudominio.com.br zago@seudominio.com.br:minhasenha

Veja que o detalhe está no usuário, pra alguns provedores se usa o nome de login, pra outros o nome de login é a conta de e-mail completa no formato usuario@dominio.com.br

Quando não funcionar de uma maneira tente da outra.

testes foram feitos com sites hospedados em:

  http://www.fastweb.com.br
  http://www.schemer.com.br
  http://www.localweb.com.br
  OBS. nestes servidores, a configuração do /etc/postfix/sasl_passwd
  tem este  formato:
  smtp.seudominio.com.br zago@seudominio.com.br:minhasenha

Nos provedores abaixo, funciona neste formato:

  smtp.uol.com.br zagolinux:minhasenha
  http://www.uol.com.br
  http://www.ig.com.br
  http://www.bol.com.br
  http://www.yahoo.com.br
  http://www.click21.com.br

Testar o SASL e testar relay

Anotações de rascunho, este tópico contém erros e não funciona.

root@aula# testsaslauthd testsaslauthd: usage: testsaslauthd -u username -p password

testsaslauthd -u zago -p minhasenha testsaslauthd -u zago -p minhasenha -s smtp

Tentei com diversas opções e sempre retorna esta mensagem;

connect() : No such file or directory :0

Deveria retornar algum OK, qualquer dia verifico melhor.

OBS IMPORTANTE. - Ainda não entendi, nem tenho a solução, está funcionando com esta "gambi"

Baixar e-mail do provedor para o servidor local, o fetchmail baixa e-mail de diversos provedores sem problema algum.

Enviar e-mail, precisa fazer relay no provedor, coloquei todas as contas com suas respecitivas senhas no arquivo de configuraçao do SASL e nenhuma funcionou, quando coloquei somente uma conta de e-mail e sua senha no SASL todas as contas passaram a fazer relay, ficou com uma única conta de email cadastrada arquivo:

/etc/postfix/sasl_passwd

Tenho diversas estações cada uma com contas de e-mail diferentes, a única coisa incomum entre elas é o dominio, mesmo as contas não cadastradas no SASL enviam e-mail pro mundo normalmente, estão fazendo relay no provedor com a conta cadastrada, por exemplo, tenho somente a conta de e-mail do zago@zago.eti.br cadastrada no SASL, mas o antonio, francisco, rui, diceu e todos os usuários que tem conta no servidor interno mandam e-mail pro mundo, até contas de e-mail inexistentes no provedor que faz relay.

Enfim, a dupla postfix+sasl faz relay de qualquer conta na única conta cadastrada, ficou confuso, qualquer momento explico isto melhor......

Caso alguém tenha a solução, por favor, envie pro FAQ.

Pelo que pesquisei, a solução está no /etc/postfix/transport com a diretiva no main.cf, acrescentei esta linha;

transport_maps = hash:/etc/postfix/transport

Comentei esta linha;

relayhost = smtp.uol.com.br

Arquivo de senhas - cat /etc/posttix/sasl_passwd smtp.zago.com.br zago:minhasenha smtp.uol.com.br antoniofzago:minhasenha smtp.ig.com.br zago_hard:minhasenha

indicações

Página principal sobre E-mail
http://www.zago.eti.br/email/A-menu-email.html

Página principal deste site (FAQ)
http://www.zago.eti.br/menu.html