http://www.zago.eti.br/email/serv-intra-cl10upd1.txt Tutorial pra instalar um servidor de e-mail interno, separado por tópicos pra facilitar o entendimento e solução de problemas, principais tópicos neste tutorial: MTA - Postfix Fetchmail pra baixar e-mail do servidor web MAILM pra testar e-mail na linha de comando. IMAP como servidor de pop3 pra entregar e-mail para as estações. SASL pra fazer relay (autenticação) no provedor. Uebmiau pra fazer um webmail no servidor interno Use CTRL+F para refinar a pesquisa. Linha de: **************** separa mensagens ou tópicos. ******************************************************** Zago http://www.zago.eti.br/menu.html FAQ e artigos sobre Linux Tutorial em elaboração, quando pronto retiro este aviso. Comentarios, dicas, indicação de documentação e outros FAQ, relacionados a e-mail0: http://www.zago.eti.br/email/A-menu-email.html http://www.zago.eti.br/email/ ******************************************************** Ambiente desta instalação e finalidade. Maquina: MOBO ECS 741 com Semprom 2200, 512MB de RAM, HD IDE 40GB Destinação: Servidor de e-mail interno para 40 contas de e-mail. Pouco trafego, cliente quer anti-virus, spamassassim, copia de e-mail de todas as contas, backup, bloqueio de alguns tipos de anexos como .exe. pif, scr e outros. Manter as contas em provedor externo com algumas contas replicadas no servidor interno com senha diferente de maneira que alguns usuários não tenham acesso ao provedor vie web na internet, permitindo acesso via webmail somente dentro da empresa. Instalação: CL10 com CD updates1, perfil desktop corporativo para servir eventualmente como estação de trabalho ou acessar kmail remotamente via ssh. OBS. no CL10 tem perfil proprio para servidores, em casos de instalação dedicada exclusivamente para servidor de e-mail deve ser utilizado o perfil apropriado, melhora a segurança da instalação. Esta maquina não está de cara pra internet, está atrás um firewall, neste exemplo estou usando um estação da rede pra servir também como servidor de e-mail para a intranet... Pra testes, use uma estação qualquer com dual-boot, veja dicas pra instalar e usar dual-boot pra testes.... http://www.zago.eti.br/boot-dual-win-e-linux.txt http://www.zago.eti.br/boot_div.txt ******************************************************** Outros serviços úteis que deve instalar no servidor de e-mail Blockmail Filtro de anexos perigosos, veja tutorial e FAQ em: http://www.zago.eti.br/email/blockmail.txt Webmail Horde, uebmiau e outros, veja tutorial e FAQ em: http://www.zago.eti.br/emal/webmail/ Anti-virus clamav e outros, veja tutorial e FAQ em: http://www.zago.eti.br/antivirus-tutoriais.txt ******************************************************** RESUMO GERAL, Quem não domina configuração de servidor de e-mail, a melhor opção é pular este tópico e seguir os proximos tópicos com explicação bem detalhada, instalação e teste de cada serviço que facilita na localização e solução de problemas. Salve este arquivo em sua maquina, com seu editor preferido, altere os dados antes de copiar e colar. Os comandos deste tópico tem indicações para copiar modelos previamente configurados e disponibilizados no FAQ, mesmo assim ainda precisa de alguns ajustes. Pegar o nome da maquina (dominio). [root@servmail apt]# cat /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.1.3 servmail.zago.eti.br servmail # instalar os pacotes: apt-get install postfix sasl2* fetchmail imap lynx wget mailx # pra baixar os modelos, escolha somente uma das opções, wget ou "vi" # via wget. # baixar os modelos com wget, precisa editar para ajustar o dominio mv /etc/postfix/main.cf /etc/postfix/main.cf-original cd /etc/postfix/ wget http://www.zago.eti.br/modelos/main.cf-cl10upd1 cp main.cf-cl10upd1 main.cf cd /root wget http://www.zago.eti.br/modelos/fetchmailrc mv fetchmailrc .fetchmailrc # via editor "vi" + lynx, baixar os modelos diretamente pro editor "vi" #comando pra importar pro "vi" mv /etc/postfix/main.cf /etc/postfix/mainoriginal vi /etc/postfix/main.cf :r !lynx -dump http://www.zago.eti.br/modelos/main.cf-cl10upd1 vi /root/.fetchmailrc :r !lynx -dump http://www.zago.eti.br/modelos/fetchmailrc # criar e ajustar arquivos, login, senhas, dominio.... echo "smtp.seudominio.com.br seuusuario:suasenha" > /etc/postfix/sasl_passwd # Altere a linha acima pro seu dominio que foi informado no postfix, # pra editar depois da copia, use o vi: vi /etc/postfix/sasl_passwd # precisa de um "tab" pra separar dominio da conta:senha, exemplo: echo "smtp.zago.eti.br zago:minhasenha" > /etc/postfix/sasl_passwd # edite e ajuste os arquivos de configuração: vi /etc/postfix/main.cf myhostname = email.intranet.br mydomain = intranet.br relayhost = smtp.zago.eti.br altere estas opções acima conforme seu /etc/hosts, por exemplo: 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 onde relayhost é seu provedor que vai validar a saida de e-mail enviados pro mundo. Ou em uma tacada só, edite as linhas abaixo, mantenha a primeira referencia que é o termo de busca no arquivo e altere a segunda referencia para os teus dados que serão objeto de troca no aqruivo e cole no terminal... sed -i "s/myhostname = servmail.zago.eti.br/myhostname = servmail.zago.eti.br/g" main.cf sed -i "s/mydomain = zago.eti.br/mydomain = zago.eti.br/g" main.cf sed -i "s/relayhost = smtp.zago.eti.br/relayhost = smtp.zago.eti.br/g" main.cf # ajustar login e senha no fetchmail pra baixar e sasl pra fazer relay vi /root/.fetchmailrc vi /etc/postfix/sasl_passwd # ajustar permissões, iniciar serviços e testar servidor... chown root.root /etc/postfix/sasl_passwd chmod 600 /etc/postfix/sasl_passwd postmap hash:/etc/postfix/sasl_passwd touch /var/log/fetchmaillog chmod 710 /root/.fetchmailrc # agendar o crontab pra executar fetchmail a cada 5 minutos crontab -e */5 * * * * /usr/bin/fetchmail -a chkconfig postfix on chkconfig xinetd on service postfix start service xinetd start df | mail zago -s 'uso do disco - via mailx!' cat /var/spool/mail/zago Chegou, tudo OK, continue com os testes, e veja mais detalhes nos tópicos seguintes. Não chegou, inicie a solução de problemas pelos logs: tail -f /var/log/maillog tail -f /var/log/fetchmaillog reveja os comandos e resultados, continue consultado os topicos seguintes, compare resultados e comandos... ******************************************************** Tópico sobre o MTA Postfix Instalar, configurar e testar o servidor de e-mail Postfix. Instalar pacote Postfix e maix pra testar o funcionamento, execute: apt-get install postfix mailx lynx sasl2* Pegar o nome da maquina (dominio). [root@servmail apt]# cat /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.1.3 servmail.zago.eti.br servmail Automatizando as alterações, copiar o modelo do FAQ e alterar 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 Voce está em ambiente de testes ?, se sim então veja como é fácil usar o recurso de copiar e colar (http://www.zago.eti.br/cp.txt) Utilize o sed pra fazer alterações no main.cf, exemplo de formato da linha de comando: sed -i "s/stringoriginal/stringtroca/g" arquivo portanto não precisa editar o main.cf, no exemplo abaixo, entre #inicio e #fim, faça as alterações nas linhas de comando do sed, mantenha a primeira opção "stringoriginal" e altere para incluir seus dados na segunda "stringtroca" pegue os dados da tua instalação em (/etc/hosts) e prontinho, pode copiar e colar. #inicio das alterações mv /etc/postfix/main.cf /etc/postfix/main.cf-original cd /etc/postfix/ wget http://www.zago.eti.br/modelos/main.cf-cl10upd1 cp main.cf-cl10upd1 main.cf sed -i "s/myhostname = servmail.zago.eti.br/myhostname = servmail.zago.eti.br/g" main.cf sed -i "s/mydomain = zago.eti.br/mydomain = zago.eti.br/g" main.cf sed -i "s/relayhost = smtp.zago.eti.br/relayhost = smtp.zago.eti.br/g" main.cf service postfix start chkconfig postfix on df | mail zago -s 'uso do disco - via mailx!' cat /var/spool/mail/zago #fim das alterações. 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 proximo tópico somente depois que o comando cat /var/spool/mail/ exibir o fonte do e-mail no terminal 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. faça copia do main.cf da instalação antes de qualquer alteração, pra substituir o original por uma copia do FAQ, execute: mv /etc/postfix/main.cf /etc/postfix/main.cf-original vi /etc/postfix/main.cf dentro do "vi": :r !lynx -dump http://www.zago.eti.br/modelos/main.cf-cl10upd1 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 modelo indicado acima: linha 67 - Comente esta linha: default_privs = nobody Pra ficar assim: #default_privs = nobody linha 76, retire o comentário e coloque o dominio encontrado em /etc/hosts, no original vem assim: #myhostname = host.domain.tld retire o comentario (#) e altere para: myhostname = servmail.zago.eti.br (onde: sermail é nome da maquina e zago.eti.br é o dominio) o nome da maquina e dominio estão em /etc/hosts. linha 84 - retire o comentario e altere o dominio: #mydomain = domain.tld alterar para: mydomain = zago.eti.br linha 100, retire o comentario(#): #myorigin = $myhostname #myorigin = $mydomain alterar para: #myorigin = $myhostname myorigin = $mydomain linha 163 retire o comentario(#): #mydestination = $myhostname, localhost.$mydomain $mydomain Alterar para: mydestination = $myhostname, localhost.$mydomain $mydomain linha 314, informe o seu servidor de smtp. #relayhost = $mydomain alterar pra: relayhost = smtp.zago.eti.br Onde zago.eti.br é o dominio, servidor externo onde vai fazer relay, (provedor que vai antenticar o envio de e-mail), este parametro tem formato especifico pra alguns provedores, em servidores internos requer também a configuração da autenticação pelo SASL, veja topico especifico sobre ele neste documento, veja alguns exemplos pra alguns provedores: Pra fazer relay no yahoo, use este exemplo: relayhost = smtp.mail.yahoo.com.br Pra fazer relay no Terra com speedy business, use este exemplo: relayhost = smtp.bra.terra.com.br Pro UOL, BOL, IG e a maioria dos provedores, use este formato. relayhost = smtp.uol.com.br linha 264, retire o comentario e coloque a clase de IP da tua rede #mynetworks = 168.100.189.0/28, 127.0.0.0/8 alterar para: mynetworks = 192.168.1.0/24, 127.0.0.0/8 linha 296, retire o comentario e altere: #relay_domains = $mydestination alterar para: relay_domains = $mydomain Com esta configuração basica pode testar o funcionamento do Postfix: Iniciar o serviço somente para esta sessão: service postfix start Iniciar o Postfix sempre junto com o boot execute: chkconfig postfix on Testar envio de e-mail para usuário zago, 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!' Pra conferir se está tudo OK, se o e-mail chegou, execute: cat /var/spool/mail/zago Retorna no console o fonte do e-mail, no corpo da mensagem consegue ler o resultado do comando df que foi enviado por e-mail. Outros comandos e dicas: postconf -n Lista um resumo da configuração postconf Lista toda a configuração Após qualquer alteração nas configurações do postfix, para carregar as alterações execute: service postfix reload Evite o uso do restart pra reiniciar, prefira reload, caso precise parar, então use: service postfix stop service postfix start quando exibir OK é sinal que o postfix está rodando normalmente, quando exibir [FALHOU], deverá rever as configurações. Pra ver se está rodando, execute: service postfix status LEMBRANDO que o dominio zago.eti.br e e-mail zago@zago.eti.br existe somente nesta maquina, eles não existem para o mundo, isto só funciona pra rede interna, mesmo desconectado da internet as estações enviam e-mail pro maquina que está rodando o servidor Postfix, serve unica e exclusivamente pra 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 CL9, CL10, WIN98, XP e algumas com boot remoto, tem estações usando Evolution, Kmail, Outlouco e outras usando somente webmail, tem estações que passam pelo firewall pra acessar 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 pra liberar ou bloquear acesso externo, nos clientes depende da configuração da conta de e-mail, pode configurar duas contas, uma que aponta pro IP do Postfix (e-mail interno), outra que aponta pro dominio do provedor, neste caso pode configurar pra passar pelo servidor interno ou não. Acompanhar os logs em: /var/log/maillog tail -f /var/log/maillog Postfix ouve na porta 25, depois de iniciado no resultado de: netstat -na tem que aparecer esta linha: tcp 0 0 0.0.0.0:25 0.0.0.0:* OUÇA 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: telnet 192.168.1.201 25 Trying 192.168.1.201... Connected to 192.168.1.201. Escape character is '^]'. 220 mail1.zago.eti ESMTP Postfix (2.0.7) --fica parado nisto--- Resultado do comando: cat /var/spool/mail/zago [root@servmail postfix]# cat /var/spool/mail/zago From root@zago.eti.br Sat May 7 21:33:34 2005 Return-Path: X-Original-To: zago Delivered-To: zago@zago.eti.br Received: by servmail.zago.eti.br (Postfix, from userid 0) id C2302479D07; Sat, 7 May 2005 21:33:34 -0300 (BRT) To: zago@zago.eti.br Subject: uso do disco - vial maix! Message-Id: <20050508003334.C2302479D07@servmail.zago.eti.br> Date: Sat, 7 May 2005 21:33:34 -0300 (BRT) From: root@zago.eti.br (Administrador do Sistema) Sist. Arq. 1K-blocos Usad Dispon. Uso% Montado em /dev/hda2 37460660 1189416 34368348 4% / A configuração ainda não terminou, os itens acima serve pra testar se o Postfix está rodando e recebendo e-mail das maquinas internas, também do mailx, pra fazer estes testes continue com a configuração. ******************************************************** IMAP, servidor de pop3 para as maquinas internas. 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 pra 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 pra baixar as mensagens para a estação local. Optei pelo IMAP, no synaptc do CL10 tem esta descrição: "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." Pra instalar: apt-get install imap Pra iniciar o serviço nesta seção: service xinetd start Pra iniciar o serviço junto com o boot da maquina: chkconfig xinetd on chkconfig imaps on chkconfig imap on Depois de reiniciar o servidor, veja os resultados: netstat -na Conexões Internet Ativas (servidores e estabelecidas) Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado tcp 0 0 0.0.0.0:110 0.0.0.0:* OUÇA tcp 0 0 0.0.0.0:111 0.0.0.0:* OUÇA tcp 0 0 0.0.0.0:6000 0.0.0.0:* OUÇA tcp 0 0 0.0.0.0:22 0.0.0.0:* OUÇA tcp 0 0 0.0.0.0:25 0.0.0.0:* OUÇA tcp 0 0 192.168.1.201:110 192.168.1.53:33765 ESTABELECIDA tcp 0 0 192.168.1.201:22 192.168.1.53:33616 ESTABELECIDA udp 0 0 192.168.1.201:32780 192.168.1.1:53 ESTABELECIDA udp 0 0 0.0.0.0:111 0.0.0.0:* Testar o funcionamento do servidor pop. Neste exemplo foi utilizado o kmail, pode usar qualquer cliente de e-mail. Executar kmail na estação, configurações do kmail para receber as mensagens: Menu Configurações Configurar kmail identidades novo ## preencha os dados .... rede Recebendo 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.3 #IP do servidor de e-mail ou nome quando rodar DNS para as maquinas internas. porta: 110 Prontinho, basta Ok, aplicar e OK, pra receber as mensagens de teste que estão no servidor basta um clique em "Verificar Correio em" configurações do kmail para enviar mensagens: Menu Configurações Configurar kmail rede Enviando Adicionar (selecione SMTP) preencha neste formato: Nome: qualquer nome Máquina: 192.168.1.3 #IP do servidor de e-mail ou nome quando rodar DNS para as maquinas internas. porta: 25 OK, aplicar e OK. 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 pra 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) ******************************************************** TOPICO SOBRE FETCHMAIL, veja mais sobre fetchmail em: http://www.zago.eti.br/email/fetchmail.txt BUSCAR E-MAIL NO PROVEDOR EXTERNO Optei pelo Fetchmail, este tópico foi elaborando com as dicas de: http://www.zago.eti.br/email/fetchmail.txt http://www.conectiva.com.br/cpub/pt/incConectiva/suporte/pr/servidores.sendmail.fetchmail.procmail.html Pra instalar o fetchmail: apt-get install fetchmail Configurando o Fetchmail Pra pegar os e-mails da internet, além de instalar, precisa configurar o fetchmail, 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 pra evitar que um usuário pegue a senha do outro. Este arquivo tem que ter o nome: .fetchmailrc, veja copia do modelo que tem no site da Conectiva: 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 Como ficou a minha configuração pra baixar e-mail da conta: antoniofzago@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 antoniofzago password senhadoxxxx is zago here OBS.: veja no final deste tópico outros exemplos de configuração pra baixar e-mail de outros provedores ou varias contas de provedores diferentes. Utilize seu editor preferido pra criar o 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 .fetchmailrc fetchmail Caso não ajuste a permissão como indicado acima vai ocorrer esta mensagem de erro: [root@faqcl10 root]# fetchmail -a File /root/.fetchmailrc must have no more than -rwx--x--- (0710) permissions. Após executar: chmod 710 .fetchmailrc Não ocorre mais o erro e fetchmail roda normalmente. Quando reiniciar a maquina e fetchmail para de rodar, tem diversas opções pra iniciar o serviço, manualmente, colocar no /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. A solução adotada e que funciona sem problema, foi 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, pra encerrar, pressione ESC :wq Pra saber mais sobre o agendador de tarefas, veja o FAQ http://www.zago.eti.br/agenda.txt Prontinho, agora Fetchamil pega os e-mail de antoniofzago@uol.com.br e salva no arquivo de: /var/spool/mail/zago este processo se repete a cada 5 minutos, pra alterar este intervalo, 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, pra acompanhar os logs, execute: tail -f /var/log/fetchmaillog OBS. No CL10 não criou o arquivo e portanto não registrava os logs, a solução foi criar o arquivo manualmente e passou a registrar os logs, caso na tua istalação não exista o arquivo de log, execute: touch /var/log/fetchmaillog Não entendi como funciona a quebra de linha, a configuração pra 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 Pra resolver isto, 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 com senhas diferente entre o provedor e maquina local. Na maquina local o adminstrador tem acesso às mensagens de todos, ótimo pra backup, dependendo 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. O Procmail tem a finalidade de separar e filtrar mensagens, veja o FAQ: http://www.zago.eti.br/email/procmail.txt 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 csrsul 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. ******************************************************** TOPICO SOBRE SASL, fazer relay no provedor. FAZER RELAY NO PROVEDOR (AUTENTICAR NO PROVEDOR) Considerando que voce já tem o Postfix, Fetchmail e IMAP configurados e trocando e-mail internamente, vamos pra configuração do SASL, que servirá pra configurar teu servidor pra fazer relay no provedor externo. Veja mais sobre SASL em: http://www.postfix.org/SASL_README.html#client_sasl Veja também o FAQ: http://www.zago.eti.br/email/postfix-sasl_auth.txt Precisa instalar os pacotes: apt-get install sasl2* Com o SASL e seus plugins instalados, vamos pra configuração dele. Criar 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 pra criar o arquivo de senhas, ajustar as permissões e criar o banco de dados de senhas do SASL. deverá ficar assim: [root@faqcl10 apt]# 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 pra separar o dominio do usuário:senha, use seu editor ou pelo "vi": vi /etc/postfix/sasl_passwd Sempre que alterar /etc/postfix/sasl_passwd precisa recriar o banco de dados, para isto 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, pra recarregar 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 Pra 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 ir por topico de configuração do cliente de e-mail, vá pra uma estação da rede e configure um cliente de e-mail pra testar o envio de e-mail pro mundo, pra enviar e-mail pra contas como do Yahoo, UOL e etc..., isto é, fazendo relay no teu provedor, Pra fazer 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 o editor vi pra 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 pra 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 Agora teste a configuração enviando e-mail pro mundo, pra detectar erros e acompanhar 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, por exemplo: Pro UOL, IG, e muitos outros provedores funciona neste formato: smtp.dominio.com.br usuário:senha ou smtp.uol.com.br zagolinux:minhasenha YAHOO! Pro 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... Pra 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 assim: smtp.dominio.com.br usuário@dominio.com.br:senha ou smtp.csr.com.br zago@csr.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.csr.com.br zago@csr.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 OBS IMPORTANTE. Ainda não entendi, nem tenho a solução, está funcionando com esta "gambi" Pra baixar e-mail do provedor para o servidor local o fetchmail baixa e-mail de diversos provedores sem problema algum. Pra 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 assim: uma unica 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 transport_maps = hash:/etc/postfix/transport Tem mais detalhes em: http://postfix.state-of-mind.de/patrick.koetter/smtpauth/smtp_auth_mailservers.html Comandos úteis: testsaslauthd Pra usar senhas em plaintext deixa-o vazio smtp_sasl_security_options = ******************************************************** TOPICO SOBRE WEBMAIL - Uebimiau veja mais detalhes sobre ele no tópico CL 10 - WEBMIAU em: http://www.zago.eti.br/email/uebimiau.txt chkconfig imap on chkconfig imaps on ******************************************************** DNS host -a exemplo pro UOL # host -a www.uol.com.br Trying "www.uol.com.br" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 840 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.uol.com.br. IN ANY ;; ANSWER SECTION: www.uol.com.br. 274 IN A 200.221.8.18 www.uol.com.br. 274 IN A 200.221.8.17 www.uol.com.br. 274 IN A 200.221.8.16 ;; AUTHORITY SECTION: uol.com.br. 540 IN NS eliot.uol.com.br. uol.com.br. 540 IN NS borges.uol.com.br. ;; ADDITIONAL SECTION: eliot.uol.com.br. 830 IN A 200.221.11.98 borges.uol.com.br. 1035 IN A 200.147.255.105 Received 153 bytes from 200.204.0.10#53 in 1294 ms ******************************************************** REDIRECIONAR PRA OUTRA MAQUINA DA REDE INTERNA, Regras de iptables (firewall) pra redirecionar o trafego de e-mail pra outra maquina da rede interna (servidores atras de uma NAT) obs. este tópico está em elaboração, não use esta parte.... iptables -t nat -A PREROUTING -t nat -p tcp -d 200.204.198.164 --dport 25 -j DNAT --to 192.168.1.238:25 iptables -t nat -A PREROUTING -i eth0 -p tcp --sport 25 -j DNAT --to-destination 192.168.1.238 pendente pra fazer testes. #Redirecionar Porta SMTP iptables -t nat -A PREROUTING -s 200.204.164.198 -i eth0 -j DNAT --to 192.168.1.4 iptables -t nat -A POSTROUTING -s 200.204.164.198 -o eth0 -p tcp --dport 25 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.1.4 -o eth0 -j SNAT --to 200.204.164.198 iptables -t nat -A POSTROUTING -s 192.168.1.4 -o eth0 --p tcp --dport 25 -j ACCEPT iptables -A INPUT -p tcp -s 0/0 --source-port 25 -j ACCEPT iptables -A INPUT -p tcp -s 0/0 --source-port 110 -j ACCEPT iptables -A INPUT -p tcp -s 0/0 --source-port 53 -j ACCEPT iptables -A INPUT -p udp -s 0/0 --source-port 53 -j ACCEPT ******************************************************** DICAS: o Postfix tem a mesma finalidade do Qmail, portando os dois nunca deverão ser instalados pra rodarem simultaneamente na mesma maquina porque terás problema com os dois aceitando conexões na mesma porta. Pra descobrir qual tipo de autenticação do seu SMTP. Neste exemplo, fiz um telnet de outra maquina da rede interna para o servidor de e-mail interno, primeiro digitei: telnet 192.168.1.222 smtp [root@mail log]# telnet 192.168.1.222 smtp Trying 192.168.1.222... Connected to 192.168.1.222. Escape character is '^]'. 220 email.intranet.br ESMTP Postfix (2.0.7) fica parado nesta tela, agora digite: EHLO localhost [root@faqmail postfix]# telnet 192.168.1.222 smtp Trying 192.168.1.222... Connected to 192.168.1.222. Escape character is '^]'. 220 email.intranet.br ESMTP Postfix (2.0.7) EHLO localhost 250-email.intranet.br 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250 8BITMIME pra sair digite quit Quando voce digita correio.seu.dominio.com.br pra acessar tua conta de e-mail via webmail, faça telnet assim: [root@mail log]# telnet correio.seudominio.com.br smtp Trying 200.142.252.56... Connected to correio.xxxx.com.br. Escape character is '^]'. 220 pop3host.ns1.com.br ESMTP EHLO localhost 250-pop3host.ns1.com.br 250-PIPELINING 250 8BITMIME quit 221 pop3host.ns1.com.br Connection closed by foreign host. ******************************************************** ALGUMAS DICAS SOBRE OS ITENS DE CONFIGURAÇÃO do /etc/postfix/main.cf mynetwork = aqui vai a rede ou ip que pode fazer o Relay, exemplo pra permitir somente as maquinas da rede interna enviar e-mail: mynetworks = 192.168.1.0/24, 127.0.0.0/8 relayhost relayhost = smtp.zago.eti.br do /etc/postfix/main.cf Pra quem tem servidor interno, neste item deve informar o servidor (provedor) que utilizara pra autenticar a saida das mensagens, popularmente chamado de fazer relay, pra combater SPAM, a maioria dos provedores rejeitam mensagens de servidores de e-mail das conexões discadas e ADSL em geral, pra sulucionar este problema, no envio de e-mail voce faz autenticação (relay) no provedor, com este procedimento voce pode mandar e-mail pro mundo sem problemas, lembre que o postfix precisa do SASL pra fazer esta autenticação, veja neste documento o topico sobre SASL. ******************************************************** entregar mensagens ? postqueue -f ******************************************************** CLIENTE DE E-MAIL, configurando clientes de e-mail nas estações da rede interna, entre eles Evolution, Kmail, Outlouco. OBS. Pra enviar mensagens pro mundo, precisa fazer relay no provedor, não teste esta condição por enquanto, faça testes somente com usuários locais, pra fazer relay no provedor precisa configurar o SASL que vem no proximo tópico. Pra configurar o Kmail pra enviar e receber mensagens utilizando o servidor interno: Kmail -> Configurações -> configurar kmail -> rede -> adicione uma conta pop, depois entre em alterar e na aba de de menu "recebendo" configure como abaixo, claro que é só exemplo, utilize os dados da tua instalação, onde o maquina 192.168.1.201 é o IP do servidor que está rodando o Postfix com imap. nome: zagopvt login: zago senha: ******** maquina: 192.168.1.201 porta: 110 Prontinho, agora de qualquer estação da rede pode enviar e receber e-mail deste servidor interno, basta criar o usuário pro Linux no servidor que ele automaticamente tem a conta de e-mail, lembre que esta configuração só funciona para os usuários que foram criados no servidor que está rodando o Postfix e valem somente pra e-mail interno, cuidado pra não usar conta de e-mail valido em provedores, isto poderá causar confusão pra distinguir o e-mail interno com um utilizado na internet. Pra configurar o Outlouco pra enviar e receber mensagens utilizando o servidor interno: No Outlouco de uma estação Win98, configurei normalmente a conta, com a diferença que no campo pra smtp e pop, informei somente o IP do servidor Postfix, neste exemplo: 192.168.1.201, a partir desta configuração, também passou a enviar e receber e-mail internamente para os usuários deste servidor e também pra internet. Veja algumas telas da configuração das estações: http://200.204.198.164/zago/email/telas-serv-interno/ Após a configuração do SASL, voce pode enviar e-mail pro mundo, na configuração do teu cliente de e-mail voce deverá configurar o remetente com uma conta de e-mail valida, por exemplo: Pra rede interna pode trocar e-mail com a conta zago@zago.intranet, mas este zago.intranet não é um dominio registrado, o que fala com o mundo é zago.eti.br, portando preciso configurar meu cliente de e-mail com a conta de remetente usando zago@zago.eti.bt, ou seja a conta do servidor externo (seu provedor) o endereço de maquina ou provedor quando for o do servidor interno o postfix com o SASL vai fazer relay no provedor, quando voce configurar os dados no cliente de e-mail com os dados do teu provedor estas mensagens não passarão pelo Postfix, portanto ficarão fora do controle de regras que voce tenha no teu servidor, pra evitar isto, voce pode configurar teu firewall pra não permitir que as estações envie e-mail diretamente. ******************************************************** ******************************************************** ********************************************************