_____________________________________________________________________________ _/_/_/_/ _/ _/ _/_/_/_/ _/ _/ _/_/ _/ _/ _/ _/_/_/_/ _/ _/ _/ _/_/_/_/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/ _/ N E W S G E N E R A T I O N ___________________________________________________________________________ 03 de outubro de 1997 | Volume 1, Numero 5 ___________________________________________________________________________ --------- Editorial ------------------------------ Ari Frazao Jr. editor@rnp.br Prezados Leitores A 5a. edicao do nosso boletim merece uma atencao especial por dois motivos: o primeiro diz respeito aos temas aqui tratados. Todos foram suge- ridos pelos proprios autores, o que esta' tornando o meu trabalho cada vez mais facil. O segundo e' que esta devera' ser a ultima edicao em ASCII. O primeiro artigo, escrito por um radioamador compulsivo, trata e- xatamente do acesso `a Internet via esta fascinante rede. O que mostra al- ternativas inteligentes e de baixo custo para a disseminacao da Internet em localidades com poucos recursos ou com dificuldade de comunicacao. As vantagens do protocolo para acesso a mensagens eletronicas IMAP sao muito bem expostas no segundo artigo. La', e' tambem dada uma referen- cia extensa de documentos que tratam do tema. Por fim, temos o artigo que trata de temas relativo ao desenvolvi- mento de aplicacoes para o ambiente Web. Este e' um artigo que promete ter continuidade num proximo numero do nosso boletim, uma vez que, por razoes de espaco, so' foi possivel apresentar a solucao proposta por um fabricante de software. De qualquer forma, nao deixa de ser interessante, principal- mente, se pensamos na necessidade de diversificacao dos servicos por parte dos PoPs. Tenham uma boa leitura. ------------------------------ Links Internet via Radioamador ----------------------------------------------------------- Joao Fabio de Oliveira jfabio@pop-pr.rnp.br O radioamadorismo e' um hobby praticado no mundo todo e, cada vez mais, absorve adeptos pela caracteristica e espirito humanitario que tem. A transmissao de da- dos faz parte desse hobby atraves da especificacao do protocolo AX25 (Amateur X25), que junto com o TCP/IP, os gateways de amadores usufruem da internet como me- io de transporte para vencer distancias e limitacoes do meio radio. Introducao Experiencias com transmissoes digitais nas bandas de radioamador coincidem com as transmissoes remotas nas origens da propria Internet. Os canadenses foram os pioneiros nos testes de transmissao de dados, utilizan- do frequencias mais altas (220 MHz-UHF) para troca de dados ponto-a-ponto. O protocolo X25 utilizado comercialmente, e' a base do protocolo especificado e homologado mundialmente para uso nas frequencias de amador, que e' o AX25 (amateur X25). O AX25 mantem as mesmas caracteristicas do ja' conhecido X25, possuindo algumas diferencas no aspecto de adaptacao ao novo meio de transmissao. A principal diferenca e' a identificacao do frame AX25 em relacao ao X25. No X25, e' utilizado o padrao CCITT X.121, que diferen- cia universalmente cada frame, enquanto que no AX25 essa identificacao e' feita pelo indicativo de chamada da estacao de radio, que tambem o diferen- cia universalmente. As redes de amadores sao formadas por estacoes de radio (radio+an- tena) e nos roteadores baseados no AX25. Esses nos' sao conectados adjacen- temente uns aos outros atraves da estacao radio, formando a "nuvem" AX25. Isto da' uma certa "inteligencia" a rede a nivel de roteamento, de forma que uma estacao possa conectar uma outra, utilizando a infra-estrutura da rede de pacotes, comumente chamada de Amateur Packet Radio Network (AmprNet). O meio de transmissao radio oferece muitas limitacoes em relacao a conectividade e trafego dentro do contexto dos equipamentos para radioa- madorismo, sendo as grandes redes baseadas em velocidades de transmissao de 300 bps, com enlaces radio em frequencias mais baixas (30 KHz - 30 MHz/HF), 1.200 bps, 9.600 bps, 19.200 bps e, recentemente, 56 Kbps, com enlaces ra- dio nas frequencias mais altas (144 MHz - 148 MHz/VHF, 430 MHz - 440 MHz/ UHF), com conexoes multiponto para os usuarios do sistema nos nos de aces- so. TCP/IP sobre AX25 Com o atrativo das redes TCP/IP Internet, Phil Karn, ingles, com indicativo KA9Q, desenvolveu um sofware que implementa o protocolo TCP/IP sobre o protocolo AX25, ou seja, dentro da "nuvem" AX25 de amadores, tem-se o TCP/IP sendo "encapsulado" nos frames AX25, possibilitanto ter os recur- sos do TCP/IP a nivel de usuarios radio. O caminho inverso tambem acontece, pacotes AX25 podem ser "encapsu- lados" em frames IP. Nesse momento, nascem os gateways internet de amado- res, que hoje configuram-se milhares espalhados pelo mundo todo, interli- gando redes amprnet atraves da Internet, vencendo a barreira da distancia e da velocidade imposta pelo links radio a longa distancia. O software KA9Q foi batizado como NOS (Network Operating System) e distribuido gratuitamente na Internet. Desenvolvido para plataforma MS-DOS, seu uso e popularidade cresceu tanto que outras pessoas assumiram sua manu- tencao e evolucao, dando origem aos seus sucessores, WNOS, JNOS, TNOS, ha- vendo suporte para AX25 ate' mesmo em plataformas Linux e Sun-OS. Funcionamento do Gateway AmprNet Os gateways *NOS (* denomina qualquer variacao do NOS) sao plugados numa rede local conectada a Internet, de forma a ser configurado como uma estacao dessa rede, com numero IP valido, dominio valido, e acesso completo a Internet. Nesse mesmo gateway, conecta-se uma estacao de radio (radio+an- tena) e um modem (especifico para o AX25) para ser a porta de entrada/saida para a "nuvem" AX25 (amprnet), com frequencia de radio e velocidades de acesso pre-definidos, configuando-se como um elo de ligacao entre a rede de pacotes de amadores e a Internet. Dentro das classes de IPs reservados na Internet, tem-se uma classe A reservada para os radioamadores a nivel mundial, que e' a classe 44/8 (conhecida como Net-44). Essa classe e' usada exclusivamente por radioama- dores e e' destinada a estacoes radio da amprnet, ou seja, ela nao e' "ro- teavel" na Internet, e sim usada apenas nas "nuvens" AX25. Os gateways de amadores "espetados" na Internet enxergam, de um la- do a Internet global com IPs validos, e, do outro, a amprnet com IPs da Net-44 sobre AX25. Os gateways conectam entre si, atraves da Internet, pelo recurso do "encapsulamento" de pacotes, de forma a ligar uma certa subrede da Net-44 a outras que estao fisicamente isoladas. A priori, cada gateway conhece os demais existentes no mundo atraves de um arquivo local que pos- sui todas as rotas encapsuladas de todos os gateways (entenda-se rota en- capsulada o IP valido na Internet associado ao IP da Net-44 a que o referi- do gateway representa). Para a internet global, existe um unico ponto de entrada na Net-44 que esta' na Universidade da California (UCSD.EDU). Desta forma, todo o ro- teamento de dentro da Internet para a Net-44 e' direcionado para la', onde existe um gateway com "conhecimento" de todas as subredes da Net-44, fazen- do dai' o redirecionamento do pacote atraves do encapsulamento. Isto quer dizer que qualquer pacote originado dentro da Internet e' roteado ate' a ucsd.edu e depois entra no encpasulamento atingindo seu destino. Por exem- plo: $ traceroute 44.174.13.1 traceroute to 44.174.13.1 (44.174.13.1), 30 hops max, 40 byte packets 1 bb2.pop-pr.rnp.br (200.19.74.20) 11 ms 2 ms 4 ms 2 bb2.pop-sp.rnp.br (200.136.30.1) 16 ms 11 ms 24 ms 3 delta.cora.br (143.108.13.3) 63 ms 53 ms 82 ms 4 border2-serial4-7.Boston.mci.net (204.70.21.101) 243 ms 377 ms 263 ms 5 core-fddi-1.Boston.mci.net (204.70.3.33) 433 ms 469 ms 6 core3.WestOrange.mci.net (204.70.4.1) 389 ms 244 ms * 7 sprint-nap.WestOrange.mci.net (204.70.1.210) 383 ms 242 ms 244 ms 8 fddi1-0-0.nynap.ny.cerf.net (134.24.46.66) 416 ms * 238 ms 9 atm9-0-3.svnode.sd.cerf.net (134.24.29.45) 302 ms 344 ms 10 atm8-0-155M.moby.sd.cerf.net (134.24.32.5) 323 ms 317 ms 11 fddi1-0.riptide.sd.cerf.net (134.24.252.10) 364 ms * 12 bigmama-e0.ucsd.edu (134.24.70.200) 525 ms * * 13 muir-gw-fddi.ucsd.edu (132.239.254.238) 451 ms * 324 ms 14 ampr.org (44.0.0.1) 326 ms 315 ms 710 ms <-- entrada para a amprnet 15 200.17.209.102 (200.17.209.102) 344 ms 327 ms <-- encapsulamento da subrede 44.174.13/24 no 200.17.209.102 Ja' para a AmprNet isto nao acontece, pois, a priori, as "nuvens" AX25 devem apenas enxergar a propria Net-44, ou seja, de uma subrede Net-44, o usuario chega a outra subrede Net-44 atraves do encapsulamento do seu gateway, utilizando a Internet como elo de ligacao entre as mesmas. Para o Brasil, foi reservado a subrede 44.174/16, onde existe uma coordenacao nacional e coordenacoes regionais que administram o uso das de- mais subredes (veja http://www.amprnet.org.br). Etica Operacional O uso da AmprNet e' exclusiva aos radioamadores, sendo necessario o usuario estar em dia com suas licencas perante o Minicom. Isto implica em que usuarios da Internet nao podem usufruir do meio radio para troca de da- dos com estacoes de amadores, ou seja, pacotes originados na internet nao podem ultrapassar os gateways. Isto ainda e' uma questao muito discutida, pois nao existe uma regulamentacao oficial a respeito. A proposta inicial era para que os usuarios da AmprNet "enxergassem" apenas usuarios da Net-44 (dai' o recurso do encapsulamento) e nao tivessem acesso a internet via os gateways, mas a polemica em torno desse assunto ainda e' grande (maiores detalhes no http://www.fuller.net). Recursos Disponiveis O gateway *NOS abre as portas dos recursos TCP/IP para a AmprNet dos amadores que ate' entao usufruiam apenas de acessos em AX25 a estacoes de usuarios e BBS dedicadas. Os softwares *NOS, bem como as implementacoes AX25 nas plataformas Linux e Sun-OS, implementam os servicos mais comuns a nivel de rede TCP/IP, sendo que cada estacao de radio pode ter: - E-mail; (cada estacao de radio e' registrado sob o dominio mundial "ampr.org") - FTP; - Telnet; - WWW. Alem dos servicos basicos, outros recursos tambem estao disponiveis a nivel de TCP/IP. O fato e' que o usuario radioamador com uma simples es- tacao de radio e seu velho 386 (ou menor!) tem conectividade global `a rede Internet. Sites Relacionados - http://www.amprnet.org.br - http://www.fuller.net - http://www.iaru.org - http://www.arrl.org - http://www.tapr.org - http://hydra.carleton.ca - ftp://ftp.ucsd.edu/hamradio Referencias Bibliograficas - NOSIntro - TCPIP over Packet Radio An Introduction to the KA9Q Network Operating System by Ian Wade, G3NRW, 1992, ARRL Publications - Packet: Speed, More Speed and Applications -- 2nd Edition 1997, ARRL Publications - Your Gateway to Packet Radio by Stan Horzepa, WA1LOU, 1989, ARRL Publications ------------------------------------------- E' Vantajoso Utilizar o Protocolo IMAP ? ----------------------------------------------------------------- Alex Soares alex@nc-rj.rnp.br O servico de correio eletronico comeca a tornar-se um elemento cada vez mais presente no cotidiano das pes- soas e, a cada dia, ele estar mais acessivel aos usu- arios em locais muito variados. Atualmente, o metodo de acesso `as mensagens em caixa postal mais utiliza- do, o chamado acesso "offline", comeca a tornar-se insuficiente para uma parcela cada vez maior de usua- rios, que apresentam necessidades crescentes de aces- so ao correio eletronico em locais variados e utili- zando diferentes computadores. Neste artigo, procura- se apresentar as vantagens e desvantagens da utiliza- cao do protocolo IMAP na prestacao do servico de cor- reio eletronico, incluindo suas solucoes e incremen- tos funcionais para o acesso remoto. Administradores de sistemas devem encarar este artigo como uma intro- ducao a paradigmas de acesso remoto a mensagens que vao alem do acesso "offline" proporcionado pelo popu- lar protocolo POP3. Introducao - O que e' IMAP ? O protocolo IMAP foi originalmente desenvolvido na Universidade de Stanford em 1986. Trata-se de um metodo de acesso a mensagens eletronicas armazenadas em um servidor local ou remoto. IMAP quer dizer Internet Mes- sage Access Protocol [RFC 2060] e sua versao mais recente e' a IMAP4rev1 [RFC 2060]. Atraves de um programa cliente que envia comandos ao servidor de correio eletronico que suporta o protocolo IMAP, o usuario pode manipular suas mensagens e pastas (tambem chamadas de "folders") a partir de computa- dores diferentes em diversas localidades sem que seja necessario a transfe- rencias das mesmas do servidor para o computador de onde se esta' fazendo o acesso. Assim, as mensagens podem ser acessadas em um notebook durante uma viagem, no micro de casa ou do trabalho etc. Uma caracteristica importante do IMAP e' permitir que a manipulacao de mensagens e pastas seja feita como se estivessem no computador local. O Protocolo IMAP4rev1 - Caracteristicas O protocolo IMAP4rev1 [RFC 2060] preve^ uma variedade de funciona- lidades. Alem das ja' oferecidas por protocolos como o POP3, destacam-se: - Acesso e manipulacao de mensagens e de pastas de forma equivalen- te `aquela feita em um acesso local; - Possibilidade de acesso simultaneo a uma caixa postal comparti- lhada por mais de um usuario; - Capacidade para que um programa cliente desconectado ("discon- nected") possa sincronizar seu conteudo (mensagens, pastas e sub- pastas) com o do servidor; - Ativar e desativar "flags" (marcacoes que indicam caracteristicas de uma mensagem), que podem, inclusive, ser definidas pelo usua- rio. Com o POP3, estas marcacoes sao registradas pelo cliente, de forma que, se a mensagem for aberta por um segundo cliente, as mesmas podem nao ter seu "status" indicado corretamente. O IMAP permite a gravacao das "flags" junto `as caixas-postais, assegu- rando que, independente de qual cliente se acesse, as mensagens terao as mesmas corretamente atribuidas. - Capacidade de reconhecer os padroes de mensagens eletronicas [RFC 822] e MIME-IMB [RFC 2045] em mensagens eletronicas, de modo que os clientes de e-mail nao o necessitem fazer. O servidor IMAP cumpre a tarefa de interpretar estes padroes, tornando os clien- tes mais faceis de implementar e o acesso mais "universal"; - Pesquisa de texto em mensagens de forma remota. Este modo de tra- balho e' feito localmente `as caixas-postais; - A selecao para recebimento dos atributos de uma mensagem, ou seu texto ou anexos e outras partes ("attachments") podem ser feitos de forma independente. Entao, o usuario pode pedir para receber de uma mensagem com um grande "attachment", apenas a parte do texto que lhe interessa, o que e' vantajoso no caso de um acesso discado de baixa qualidade. Formas de Acesso a Mensagens Eletronicas Sao tres as formas possiveis de se trabalhar com correio eletroni- co remotamente segundo o documento [RFC 1733]: "online", "offline" e "disconnected". Segue uma breve descricao de cada uma. - No modo de operacao "online", as mensagens e pastas ficam armaze- nadas no servidor, e o usuario as manipula remotamente atraves do programa cliente de correio eletronico, com a possibilidade de criar, renomear, apagar e mover pastas, ativar marcacoes (possi- velmente customizadas) em mensagens, receber, seletivamente, par- tes de mensagens, dentre outras facilidades. - O modo de operacao "offline" e' o mais conhecido e mais antigo modo de acesso remoto a mensagens proporcionado pelo protocolo POP3 [RFC-918] e suportado por, praticamente, todos os programas clientes de correio eletronico no mercado. Neste modo, o programa transfere o pacote de novas mensagens do servidor para o computa- dor do usuario e as apaga da sua origem, passando entao, todo o processamento de mensagens para o computador local do usuario, inclusive as informacoes sobre o "status" das mensagens (se a mesma foi respondida, por exemplo) passam a ser mantidas pelo programa cliente. - O modo de operacao "disconnected" e' comumente confundido com o modo "offline" de acesso. No entanto, neste modo, o programa do usuario faz uma copia "cache" das suas mensagens e desconecta-se do servidor, ou seja, o usuario fica com copias de suas mensagens tanto no computador local quanto no servidor. Em um momento, pos- terior, apos ter feito diversas operacoes, o usuario conecta-se novamente e faz uma sincronizacao das mensagens "cacheadas" lo- calmente com o conjunto armazanado no servidor, atualizando todas as modificacoes feitas no seu conjunto de mensagens e pasta. Aqui, cabem alguns comentarios. Para o usuario que vai sempre uti- lizar o mesmo computador para acessar suas mensagens, o modo "offline", tambem proporcionado pelo protocolo POP3, e' o suficiente para atender suas necessidades. O modo de operacao "offline" tambem permite a opcao de deixar as mensagens originais no servidor apos terem sido copiadas para o computa- dor do usuario. Porem, este metodo ainda deixa a desejar em relacao `as facilidades oferecidas pelos modos "online" e "disconnected", alem da oti- mizacao de transmissao suportados pelo IMAP. As vantagens do modo "offline" sao dadas pelo uso minimo do tempo de conexao com o servidor e de recursos do mesmo. Ja' o modo "online" pos- sibilita a utilizacao de computadores "data-less", como por exemplo, em la- boratorios universitarios e em computadores de uso publico em geral; permi- te o acesso, independente de plataforma, a multiplas pastas; alem de possi- bilitar o acesso simultaneo a pastas compartilhadas com um ou mais usuari- os, como, por exemplo, em um servico de helpdesk. A questao chave e' a possibilidade do usuario acessar, remotamente, sua caixa postal e suas pastas armazenadas em um servidor, de modo unifor- me, a partir de diferentes computadores em momentos diferentes sem depender de protocolos de sistemas de arquivos que nao estao disponiveis em todas as plataformas e que podem trazer diversos tipos de problemas no acesso simul- taneo a um mesmo arquivo ou pasta. Este conceito de operacao pode ser considerado um luxo desnecessario para quem acessa sua caixa postal sempre do mesmo computador, uma vez que tal perfil de usuario tende a nao fazer uso dos recursos mais avancados do servidor IMAP. Facilitando Ainda Mais o Acesso Remoto Um aliado do IMAP e' o protocolo ACAP (Application Configuration Access Protocol), que e' projetado para armazenar remotamente (em um servi- dor) informacoes de configuracao de programas clientes, como opcoes do pro- grama, informacoes do usuario, preferencias de configuracao, lista de ende- recos de e-mail, "bookmarks", etc. Isto permite ao usuario utilizar progra- mas clientes em maquinas diferentes sem a necessidade de reconfigura-los a cada uso. O protocolo ACAP esta' em desenvolvimento e ainda e' um "Internet Draft". Um "White Paper" sobre o ACAP pode ser obtido em: http://andrew2.andrew.cmu.edu/cyrus/acap/acap-white-paper.html Exemplos de Problemas e as Solucoes IMAP Por exemplo, quem nunca viu um usuario que faz acesso discado para acessar sua caixa postal nao conseguir receber todas as mensagens porque alguem o enviou uma mensagem com um arquivo anexado ("attachment") que era tao grande que a ligacao demoraria horas para a mensagem ser tranferida? Neste caso, mesmo que o usuario se aventure a fazer a transferencia, e' grande a probabilidade que a ligacao se desfaca antes da mesma terminar, impedindo-o de receber novas mensagens enquanto esta grande nao for trans- ferida. Este e' um problema tipico do protocolo POP3, que nao permite ao usuario escolher quais mensagens ele deseja receber. O procolo IMAP oferece duas solucoes este problema. Ao acessar a sua caixa postal (INBOX) o usuario pode receber, inicialmente, uma listagem com os cabecalhos ("headers") das mensagens presentes na mesma. Desta for- ma, o usuario pode selecionar aquelas que ele deseja que o servidor IMAP envie para o seu computador local, baseado em seu interesse e bom-senso. A segunda facilidade e' a de permitir ao usuario escolher que PARTE da mensagem ele deseja receber. Se assim desejar, o usuario pode pedir para receber somente a parte de texto de uma com um grande "attachment" e nao receber o(s) arquivo(s) anexado(s) e vice-versa. Desta forma, o usuario nao fica impedido de acessar suas mensagens, mesmo tendo recebido uma muito grande para ser transferida por linhas tele- fonicas de baixa qualidade, economizando tempo, dinheiro e, possivelmente, suporte tecnico do seu provedor. IMAP e Seguranca Ha' algum tempo, foram descobertas vulnerabilidades em certas im- plementacoes do servidor IMAP em diversas plataformas. O CERT tem distribu- ido em seus "advisories" metodos para contornar estes problemas, protegen- do o acesso indevido aos sistemas. Veja maiores informacoes na URL: ftp://info.cert.org/pub/cert_advisories/CA-97.09.imap_pop Em outras duas URLs, econtram-se maiores explicacoes sobre o pro- blema: http://www.washington.edu/imap/server-security.html e http://www.imap.org/sec-vuln.response.html Como regra geral, procure obter e instalar sempre a versao mais re- cente (que reconhecidamente nao tenha os furos de seguranca das versoes an- teriores) do servidor. A ultima versao, produzida pela Universidade de Washington para sistemas UNIX apresenta correcoes de potenciais falhas de seguranca presentes em versoes anteriores. O CERT tem outros dois importantes documentos referentes `a segu- ranca basica de servidores. Estes documentos podem ser obtidos em: ftp://info.cert.org/pub/tech_tips/intruder_detection_checklist e ftp://info.cert.org/pub/tech_tips/root_compromise A leitura destes documentos e' altamente recomendada para todos que administram servidores UNIX conectados `a Internet. Como Obter as Ultimas Versoes de Servidores IMAP para Sistemas UNIX A ultima versao do servidor IMAP para UNIX feito pela Universidade de Washington pode ser obtido via FTP Anonimo na URL: ftp://ftp.cac.washington.edu/imap/imap.tar.Z A ultima versao do servidor IMAP para UNIX desenvolvido pela Univer- sidade de Carnegie Melon (Projeto Cyrus) pode ser obtida em: ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-v1.5.2.tar.gz Para maiores informacoes sobre o servidor do Projeto Cyrus, consul- te a URL: http://andrew2.andrew.cmu.edu/cyrus/imapd Outras referencias para software podem ser encontradas na secao Re- ferencias ao final do artigo. Conclusao O protocolo IMAP ainda esta' em fase de desenvolvimento, mas ja' se apresenta como uma das principais alternativas para o acesso "offline" de correio eletronico, amplamente utilizado na Internet. O IMAP esta' sendo, cada vez mais, implementado em produtos comerciais e, a cada dia, torna-se um padrao da industria para prestacao do servico de correio eletronico. Referencias RFC 2060 - IMAP4 rev1 http://www.cis.ohio-state.edu/htbin/rfc/rfc2060.html RFC 2061 - IMAP4 Compatability with IMAP2BIS http://www.cis.ohio-state.edu/htbin/rfc/rfc2061.html RFC 2062 - IMAP Obsolete Syntax http://www.cis.ohio-state.edu/htbin/rfc/rfc2062.html RFC 2086 - IMAP4 ACL extension http://www.cis.ohio-state.edu/htbin/rfc/rfc2086.html RFC 2087 - IMAP4 QUOTA extension http://www.cis.ohio-state.edu/htbin/rfc/rfc2087.html RFC 2088 - IMAP4 non-synchronizing literals http://www.cis.ohio-state.edu/htbin/rfc/rfc2088.html RFC 2095 - IMAP/POP AUTHorize Extension http://www.cis.ohio-state.edu/htbin/rfc/rfc2095.html RFC 2177 - IMAP4 IDLE command http://www.cis.ohio-state.edu/htbin/rfc/rfc2177.html RFC 2180 - IMAP4 Multi-Accessed Mailbox Practice http://www.cis.ohio-state.edu/htbin/rfc/rfc2180.html RFC 2192 - IMAP URL Scheme http://www.imap.org/docs/rfc2192.html RFC 2193 - IMAP4 Mailbox Referrals http://www.imap.org/docs/rfc2193.html RFC2195: IMAP/POP AUTHorize Extension for Simple Challenge/Response http://www.imap.org/docs/rfc2195.html Outros Documentos sobre IMAP: http://www.imap.org/biblio.html Listagem de Produtos (servidores e clientes) IMAP: http://www.imap.org/products.html Listagem de Servidores IMAP: http://andrew2.andrew.cmu.edu/cyrus/email/servers.html Listagem de Clientes IMAP: http://andrew2.andrew.cmu.edu/cyrus/email/clients-protocol.html#imap ----------------------------------- O Desenvolvimento de Aplicacoes WEB ------------------------------------------------------------------ Joao Gualberto R. Araujo jgra@ufba.br Neste documento, trata-se de temas relativos ao de- senvolvimento de aplicacoes para o ambiente WEB. O nome WEB vem do termo mais amplo World Wide Web (WWW) que representa um sistema de informacoes mundial dis- tribuido, onde as informacoes sao "ligadas" umas `as outras por links de hipertexto. Desenvolvimentos mais recentes desta tecnologia tem permitido distribuir, junto com as informacoes, objetos e programas que re- alizam atividades junto ao cliente consumidor da in- formacao. Alem disto, os servidores estao ganhando novas capacidades que os tem permitido tambem execu- tar programas, acessar bancos de dados corporativos e se comunicar com outros objetos da rede. Esta nova filosofia de trabalho e desenvolvimento de aplicacoes e' que esta' sendo tratada neste material como Ambi- ente de Desenvolvimento WEB. Introducao O trabalho de desenvolvimento de aplicacoes para WEB modifica uma serie de conceitos que estamos acostumados a lidar no nosso dia a dia. A a- plicacao WEB executa num ambiente distribuido, onde cada parte que compoe o programa esta' localizada em uma maquina diferente. O programador, e o pro- grama, nem sempre tem consciencia deste fato. As aplicacoes desenvolvidas utilizando o paradigma cliente-servidor ja' vivenciam hoje uma parte desta experiencia, onde a parte relativa `a interface com o usuario reside na estacao do cliente e a parte de acesso aos dados, no servidor de banco de dados. A logica da aplicacao pode ficar dividida entre o cliente e o servidor. Esta e' uma arquitetura em dois ni- veis, como sera' visto mais adiante. As aplicacoes WEB utilizam uma arquitetura multi-nivel onde as fun- coes executadas pelas aplicacoes podem estar distribuidas por uma rede de computadores. Elas fazem uso de uma infra-estrutura de rede que e' o padrao atual adotado pela Internet. Nas secoes seguintes, sao introduzidos os conceitos associados `a arquitetura Internet/WEB, e sao apresentadas as propostas da Microsoft pa- ra aumentar o poder de desenvolvimento de aplicacoes e distribuicao nesta plataforma. Por fim, faz-se uma breve introducao ao uso de algumas ferra- mentas para a criacao de aplicacoes WEB. A Arquitetura de Servicos Intranet (WEB) Conforme ja' e' sabido, os servicos WEB utilizam a infra-estrutura de redes existente para disponibilizacao de informacoes e aplicacoes para o usuario. Para o cliente e o servidor WEB a topologia da rede e' irrelevante pois isto e tratado pelo protocolo TCP/IP. No nivel de servicos, os elementos sao organizados da seguinte for- ma: de um lado esta' o cliente WEB, ou browser, que solicita dados ao ser- vidor WEB, recebe as respostas, formata a informacao e a apresenta ao usua- rio. Do outro lado, esta' o servidor WEB que recebe as requisicoes, le os dados (paginas HTML) do disco e as retorna para o cliente. Esta e' a forma original de funcionamento da WEB e que proporciona apenas paginas de conteudo estatico, ou seja, uma vez programadas, apresen- tam sempre a mesma informacao. A forma encontrada para modificar esta situacao e permitir a cria- cao de paginas dinamicas foi a seguinte: o usuario entra com informacoes a- traves do browser utilizando formularios HTML. O browser repassa as infor- macoes ao servidor WEB que executa um programa transferindo-lhe as informa- coes vindas do cliente. O programa remoto (server-side gateway program) trata as informacoes e retorna uma pagina HTML criada dinamicamente. Esta pagina e' passada ao servidor que a entrega ao cliente. O padrao para comu- nicacao entre o servidor WEB e o "server-side gateway program" e' conhecido como CGI (Common Gateway Interface). A Interface CGI explicita como os dados devem ser passados do ser- vidor WEB para o programa e como o este deve devolver os dados ao servidor WEB. Alem disto, especifica variaveis de ambiente que devem ser criadas pe- lo servidor e que podem ser acessadas pelo programa. Estas variaveis contem o endereco IP do usuario remoto, o tipo de browser que ele utiliza, dados para autenticacao do usuario, dentre outros. Os programas escritos para ser executados por servidores WEB sao tambem conhecidos como scripts CGI. Os scripts CGI implementam a logica do negocio e, muitas vezes, o acesso aos dados de uma aplicacao WEB, pois po- dem acessar dados armazenados no servidor ou fazer chamadas a um servidor de banco de dados local ou remoto, permitindo o acesso `as informacoes da empresa. Nesta arquitetura, tem-se programas sendo executados no servidor WEB e em outras maquinas da rede, como o servidor de banco de dados. So' falta agora serem colocados programas para executar no cliente. A execucao de programas no cliente torna o browser mais independente do servidor. Sem isto, qualquer operacao realizada pelo cliente tem que ser validada e exe- cutada pelo servidor, pois o browser nao possui nenhuma inteligencia. Os programas que executam no browser, normalmente, sao scripts (VBScript ou JavaScript) que tem a capacidade de perceber os eventos cau- sados pelo usuario e responder de forma apropriada. Eles sao embutidos no codigo HTML e o seu codigo fonte pode ser visualizado pelo usuario, pois nao e' um codigo compilado. Os scripts interagem muito com todos os elemen- tos que formam uma pagina HTML. Outro tipo de programa que pode ser executado no cliente sao os programas escritos na linguagem JAVA, que sera' descrita em maiores deta- lhes mais a frente. Em JAVA, e' possivel escrever aplicacoes completas, inclusive aces- sando bancos de dados relacionais independentemente do servidor WEB, bem como e' possivel implementar os niveis de interface com o usuario e de lo- gica do negocio, utilizando um servidor de banco de dados para implementar o nivel de acesso aos dados. A Plataforma Ativa da Microsoft A Microsoft, como parte da sua estrategia para Internet/Intranet, esta' lancando no mercado a ideia da Plataforma Ativa Microsoft. Segundo a propria fabricante, pelo menos na visao do seu departamento de Marketing, trata-se de uma arquitetura aberta de software, para disponibilizar conteu- do rico e aplicacoes atraves da Internet e Intranets. Tecnicamente, a plataforma ativa combina uma serie de tecnologias para criar sistemas de software distribuidos baseados em componentes, ou objetos. Cada componente e' um pedaco de software que possui informacoes e implementa servicos necessarios a uma ou mais aplicacoes, podendo residir em uma maquina da rede e ser acessado por outros de forma independente da sua localizacao. Os componentes implementam servicos dos varios niveis de uma arquitetura multi-tier: apresentacao, logica do negocio e acesso aos dados. O objetivo maior desta tecnologia e' permitir, com o passar do tem- po, o desenvolvimento de aplicacoes em escalas de tempo bastante reduzidas. Todo o desenvolvimento sera calcado na ideia da reutilizacao de componentes ja' existentes para a criacao de novas aplicacoes. Antes de implementar al- go novo, os projetistas de software devem procurar verificar se ja' nao e- xistem componentes prontos para atender `aquela situacao especifica. Estes componentes podem estar disponiveis dentro da propria organizacao ou podem ser adquiridos de terceiros. Os componentes podem estar presentes nas interfaces com o usuario (browser), implementando a logica do negocio junto ao servidor WEB ou dis- tribuidos pela rede e realizando atividades de acesso aos dados, utilizando bases de dados em qualquer formato. Este conjunto de tecnologias que vao permitir o desenvolvimento de aplicacoes distribuidas baseadas no conceito da WEB e' normalmente chamado de ActiveX. Os componentes que aderem a estas especificacoes sao conhecidos como componentes ActiveX. O padrao para construcao de componentes ActiveX e' especificado pe- lo Component Object Model (COM). O COM especifica uma serie de servicos (interfaces) que devem ser implementadas pelos componentes para que eles possam se integrar com facilidade em qualquer tipo de aplicacao. Um objeto COM pode, por exemplo, ser incorporado dinamicamente a uma aplicacao como o Microsoft Word ou Internet Explorer, que sao conhecidos como "containers" de objetos. A Plataforma Ativa Microsoft utiliza recursos ja' existentes na WEB e complementa-os com a ideia dos componentes ActiveX. A arquitetura proposta e' a seguinte: de um lado esta' o chamado cliente ativo, que eh um browser, com a capacidade de apresentar paginas HTML, executar programas em JAVA, conter componentes ActiveX e executar scripts (VBScript ou JavaScript) que controlam todos estes elementos. As linguagens de script tem um papel extremamente importante, pois elas formam a cola que une os componentes (ActiveX e JAVA) para criar uma aplicacao pa- ra o usuario. Sao elas que ativam os componentes ActiveX/JAVA solicitando- lhes servicos de acordo com as escolhas dos usuarios. Do outro lado, esta' o servidor ativo, que e' um servidor WEB com a capacidade de ler e entregar paginas HTML estaticas e executar scripts que utilizam componentes ActiveX para realizar atividades. Deve ser observada a simetria entre o cliente ativo e o servidor a- tivo. Ambos tem a capacidade de lidar com os mesmos elementos, sendo que o servidor nao executa nenhuma atividade de apresentacao de interface para o usuario. Os componentes que sao utilizados pelo servidor implementam a lo- gica do negocio e o acesso aos dados. Ja' no cliente ativo, executam os componentes que implementam a interface da aplicacao. Os componentes ActiveX podem residir no mesmo servidor ou podem es- distribuidos pela rede. O padrao para criacao de objetos distribuidos e' conhecido como DCOM (Distributed Component Object Model). Espera-se que esta tecnologia permita aos desenvolvedores de software criar aplicacoes distribuidas, utilizando um browser, que e' inde- pendente de arquitetura, e reutilizando componentes pre-programados. Linguagens de Script As linguagens de script (script languages) sao assim chamadas por serem linguagens de programacao simples sem muitas das restricoes associa- das `as linguagens mais complexas. Nas linguagens de script, o tratamento dos tipos das variaveis e' bastante simplificado para o programador, pois estas nao possuem tipos fixos e assumem aqueles dos valores que lhes sao a- tribuidos. Elas sao interpretadas em tempo de execucao ao inves de compila- das para posterior execucao. Muitas vezes, as linguagens de script sao subconjuntos mais simples de linguagens existentes, como e o caso do VBScript e do JAVAScript. Ambas tem o mesmo potencial de utilizacao na WEB apesar de usarem sintaxes dife- rentes. Programas feitos em VBScript/JAVAScript podem ser inseridos em qualquer pagina HTML atraves do comando Observa-se que o programa real esta' colocado como um comentario no documento HTML. Isto previne que browsers que nao conhecam linguagens de script apresentem o programa como se fosse parte do documento HTML. As linguagens de script sao bastante integradas com os documentos HTML. Elas tem acesso a todos os componentes de uma pagina, podendo manipu- la-los e modifica-los, sendo tambem capazes de perceber e tratar os eventos do usuario. Na maioria das vezes, sao utilizadas, para fazer o tratamento de dados dos formularios, antes que os mesmos sejam enviados ao servidor. Isto reduz o trafego na rede e simplifica a programacao dos scripts CGI. A- lem disto, tambem e' possivel aos programas de script executar atividades quando uma pagina e' caregada, como apresentar quadros de dialogo ao usua- rio, forcar o browser a carregar uma pagina ate' mesmo em outra janela. Na tecnologia ActiveX, as linguagens de script tem um papel funda- mental. Sao elas que vao controlar a execucao e interacao entre os compo- nentes (objetos) inseridos em uma pagina HTML. Elas sao capazes de perceber as acoes dos usuarios e enviar mensagens a aos componentes para que estes executem as atividades solicitadas. As linguagens de script tambem podem ser utilizadas para criar pro- gramas que rodam no servidor WEB, como os scripts CGI. Estes programas po- dem interagir com componentes ActiveX (objetos) que estao no servidor WEB ou em outras maquinas da rede. Estas paginas, criadas dinamicamente com linguagens de script e componentes ActiveX sao chamadas de Active Server Pages (ASP). Uma das mais importantes caracteristicas do VBScript e' a sua capa- cidade de tratar os eventos associados aos elementos de interface e execu- tar acoes em reposta a estes eventos. Cada elemento de um formulario HTML possui eventos associados ao mesmo. O acontecimento de um destes eventos pode disparar a execucao de codigo VBScript. Os Componentes ActiveX Tratam-se de objetos programados de acordo com o padrao COM (Component Object Model) ja' mencionados. Este padrao define uma serie de interfaces (servicos) que os objetos devem implementar para que possam ser reutilizados em aplicacoes diversas. O padrao COM utiliza o formato de ob- jetos OLE para implementar as suas interfaces. Os objetos ActiveX expoem para o mundo externo um conjunto de atri- butos e operacoes (servicos) que ele pode realizar. Pelo fato de seguirem o padrao COM eles podem ser executados em qualquer aplicacao que suporte este padrao. Hoje em dia, e' possivel possivel utilizar objetos COM no Internet Explorer, Servidor WEB IIS ou no desktop do proprio WINDOWS. Nem todas as interfaces especificadas no padrao COM sao implementa- das nos componentes ActiveX. Assim, estes tornam-se menores e mais rapidos, de forma que a sua transferencia na rede e execucao sao otimizadas. ActiveX Scripting Os componentes ActiveX podem ser embutidos em paginas HTML e seus atributos e servicos podem ser acessados atraves das linguagens de script, como o VBScript. Os componentes ActiveX tambem podem ser utilizados no ser- vidor WEB atraves das linguagens de script. A diferenca maior entre os com- ponentes ActiveX que rodam no browser dos que rodam no servidor e' que os primeiros podem possuir interface com o usuario, enquanto que os ultimos nao devem possuir este recurso. Cada objeto ActiveX, inserido em uma pagina HTML, recebe uma iden- tificacao e e' acessado pelo VBScript atraves desta identificacao, assim como qualquer campo de um formulario. O tratamento dos eventos que ocorrem nos componentes ActiveX tambem pode ser feito em VBScript na propria pagina HTML. O tratamento destes eventos e' similar ao tratamento de eventos no Visual Basic: basta definirmos funcoes que tenham o mesmo nome do componen- te seguido do evento a ser tratado. O objeto acima e' identificado pelo nome CommandButton3. A funcao abaixo trata o evento do clique do mouse sobre o botao. Neste exemplo, o pressionamento do botao fara' com que o browser carregue a Home Page da Universidade Federal da Bahia. Carga de Componentes ActiveX Quando um componente ActiveX e' encontrado em uma pagina HTML, o browser verifica se aquele componente ja' encontra-se instalado na maquina do cliente e se a versao existente e' compativel com a versao especificada na pagina. Se estas condicoes sao satisfeitas, o browser utiliza o compo- nente ja' instalado, sem a necessidade de transferencias pela rede. Caso contrario, o browser inicia a transferencia do objeto. Os componentes ActiveX podem ser disponibilizados em arquivos DLL (Bibliotecas de Ligacao Dinamica) ou arquivos OCX (ActiveX Component Object). Este arquivo e' ins- talado na maquina do usuario, e o objeto e' instanciado e colocado na apre- sentacao da pagina HTML. Os componentes ActiveX podem realizar qualquer operacao na maquina do usuario. Por isto, algumas medidas de seguranca devem ser tomadas para evitar possiveis desastres. Os componentes ActiveX possuem uma assinatura que identifica a sua procedencia. O usuario tem a capacidade de aceitar ou rejeitar componentes ActiveX de procedencia duvidosa. Este controle e' fei- to atraves de opcoes de configuracao do browser. Caracteristicas Principais dos Componentes ActiveX Os componentes ActiveX podem ser implementados em qualquer lingua- gem de programacao, seja JAVA, C++ ou Visual Basic, desde que atendam aos padroes especificados e implementem as interfaces necessarias. Os componentes ActiveX podem ser reutilizados em inumeras aplica- coes, trazendo vantagens nao so' no desenvolvimento de software, como tam- bem na sua manutencao. O desenvolvimento de aplicacoes tende a tornar-se uma atividade de reutilizacao do que de criacao de novos componentes. A manutencao destes sistemas pode ser feita de forma localizada a- traves da alteracao de seus componentes. A alteracao de um componente que e' utilizado em varias aplicacoes faz com que todas as aplicacoes sejam au- tomaticamente atualizadas. O browser garante que serao utilizadas sempre as ultimas versoes de cada componente. Os componentes ActiveX podem ser distribuidos pela rede e utiliza- dos como se fossem objetos locais. O padrao DCOM (Distributed Component Object Model) especifica as interfaces que os objetos devem implementar pa- ra poder funcionar de forma distribuida. A localizacao dos objetos na rede devera' ser transparente para as aplicacoes que os utilizam. Cada componente ActiveX pode ser especializado para a realizacao de atividades referentes a cada um dos niveis da arquitetura cliente servidor multi-tier. Podemos ter componentes que implementam servicos de interface, logica de negocios e acesso aos dados. Os componentes de interface sao objetos com representacao visual para interacao com o usuario. Os objetos de interface serao utilizados no browser. Os objetos que implementam a logica do negocio serao utilizados por diversas aplicacoes, pois e' neles que reside a "inteligencia" dos progra- mas. Alteracoes nas regras do negocio da empresa deverao ser feitas nestes objetos e estarao, automaticamente, disponiveis para todas as aplicacoes. Os objetos de negocio poderao residir no browser, no servidor Web ou pode- rao estar distribuidos pela rede. Os objetos que implementam o acesso aos dados deverao esconder os detalhes de formato do armazenamento dos dados para os objetos de negocio, que serao os seus principais usuarios. Os dados poderao vir de fontes di- versas, tais como bancos de dados relacionais, arquivos texto, arquivos VSAM e outros, de forma transparente. Os objetos de acesso aos dados pode- rao residir no servidor WEB ou poderao estar distribuidos pela rede. JAVA e ActiveX JAVA e' uma linguagem de programacao orientada a objetos que permi- te a criacao de aplicacoes que sao independentes de arquitetura. Ou seja, e' possivel executar o mesmo programa JAVA (codigo binario) em maquinas com hardware e sistemas operacionais diferentes. Uma aplicacao em JAVA executa em cima de uma maquina virtual, que e' chamada de Java Virtual Machine. A maquina virtual JAVA especifica os componentes de um computador, incluindo memoria, registradores, pilha, etc. Os programas em JAVA, quando compilados, geram codigo que seria executado nesta maquina. Este codigo compilado e' conhecido como byte code (Java Byte Codes). Como nao existe nenhum hardware que seja igual `a maquina virtual JAVA, esta maquina e' implementada em software e embutida nos principais browsers da atualidade. Existem tambem implementacoes da maquina virtual JAVA, independente de browsers, para diversas plataformas. Isto faz com que um programa JAVA execute hoje nas principais plataformas existentes. Para encaixar as applets JAVA (aplicacoes em JAVA que rodam em um browser) no paradigma ActiveX, elas estao sendo tratadas como componentes ActiveX. As applets podem ter atributos e operacoes disponiveis para ser u- tilizadas pelas linguagens de script. Ate' aqui, foram discutidos os elementos que estao presentes do la- do do cliente WEB, o browser. Foram vistas as linguagens de script, repre- sentadas pelo VBScript, os componentes ActiveX e as applets JAVA. A partir da proxima secao, serao vistos os elementos que trabalham do lado do ser- vidor para compor as aplicacoes WEB. Common Gateway Interface (CGI) Quando um formulario HTML e' preenchido por um usuario e os dados sao enviados ao servidor WEB, algum programa deve ser executado para tratar aquela informacao especifica. O valor do atributo ACTION do tag