Finalmente terminei de instalar o servidor de e-mail IMAP com contas virtuais. Agora temos um gateway POP2 e POP3 para o IMAP, ou seja, o acesso POP é ``traduzido'' para o IMAP. Dessa forma, funcionam acessos POP2, POP3, IMAP, e também o webmail, que foi baseado no IMP, para a leitura de e-mail. Os scripts precisam ser testados antes de abrir as contas de e-mail virtuais. Até agora, os únicos problemas de segurança relacionados aos scripts que criei estão sob controle. Eles se relacionavam ao fato do usuário poder acessar a máquina por telnet ou ssh. Outro problema é que existe um script que tive que criar para que o e-mail pudesse ser lido pelo usuário, sem que esse usuário lesse os e-mails dos outros usuários. Esse script acabava com essa falha de segurança, mas criava uma outra, que já foi contornada. Esse outra falha se deve ao fato de esse script ter que ser executado em modo super-usuário. Mas o uso do aplicativo sudo já resolveu o problema.
Comecei a procurar por um servidor de fórum. Dentre todos os que encontrei e teste, o melhor (e o único que funcionou direito) foi o HyperNews. Ele é um servidor que pode gerenciar vários fóruns, de forma independente e transparente, algo que os outros que encontrei não fazem.
Acabei por instalar o servidor de fóruns HyperNews no site da empresa. Esse servidor permite mostrar as mensagens usando threads e mandar um e-mail ao autor de alguma mensagem caso ela tenha sido respondida. Ele é todo feito em Perl, que é executado no servidor através do pedido de um browser, usando o esquema de CGI. Não encontrei muitos problemas durante a instalação. Na verdade só encontrei um, que se diz respeito à segurança, onde o invasor poderia ver a senha de todos os membros dos fóruns, mas isso já foi resolvido.
Junto com esse HyperNews, foi instalado um robô (programa que, dada uma página inicial, monta um banco de dados através dos links contidos nessa página, seguindo-os recursivamente). O programa se chama HTDIG, e ele funciona no estilo do AltaVista. Por enquanto foi configurado para somente montar um banco de dados das páginas dos fóruns do HyperNews, mas poderá ser adaptado para fazer uma busca no site inteiro.
Comecei a procurar um programa que execute código PHP através da linha de comando, mas não encontrei nada pronto. Como só usamos o módulo do Apache para executar códigos em PHP, precisei pegar o fonte e compilá-lo de forma a se tornar um executável independente. Mas precisava de suporte a funções do PostgreSQL (gerenciador de banco de dados relacional). Para isso peguei o fonte do PostgreSQL e também compilei, usando depois alguns parâmetros de configuração para que o executável do PHP pudesse ter suporte ao banco de dados citado.
A empresa mudou de sede. Agora estamos tendo que reinstalar a rede, a partir do zero. Esta semana não foi muito produtiva, pois tivemos vários problemas relacionados com a rede, tanto nos computadores quanto na infra-estrutura (cabeamento, hubs, etc.), mas aparentemente está tudo funcionando.
Outra coisa importante que fiz essa semana foi a leitura de diversos documentos relacionados com sistemas de arquivos NFS, e o aplicativo NIS. O NFS (networking filesystem) é o responsável por fazer a exportação de diretórios de uma determinada máquina para outra. Ainda falta eu entender como funciona esse sistema, e aplicá-lo na rede da empresa. O NIS (network information system) é um sistema que permite exportar alguns arquivos para outras máquinas. É muito útil no caso de uma rede composta de máquinas multi-usuários, onde o arquivo exportado é o de senhas, pois dessa forma o usuário pode mudar a senha numa máquina que o NIS se encarrega de mudá-la no servidor, que espalhará a notícia para todas as outras máquinas da rede, que saberão que aquele usuário agora tem uma senha nova. Quando eu tiver certeza de como funcionam esses dois sistemas implantarei-os na rede da empresa.
Comecei a mexer com o php, usando um programa open-source chamado PHPADS. Esse programa cuida da parte de publicidade em uma página web. Quando clicamos num banner (anúncio) que está numa página, o phpads é chamado e computa o click, indo para algum outro endereço web, gravando quantas vezes o banner foi clicado e quantas vezes o banner foi visto. Cada anunciante tem um login e uma senha para ver quantas vezes o seu banner foi acessado ou clicado. É um programa muito útil para a administração de banners de um site, pois permite também gerenciá-los através de uma interface amigável. Os banners são inseridos na página através de um código em php que chama o phpads, e este coloca o banner na página. Dessa forma, pode-se colocar banners dinâmicos (ou seja, o banner nem sempre é o mesmo) nas páginas, o que é muito interessante para a área de marketing.
Consegui resolver o problema que estava me atormentando havia muito tempo: o computador que servia de laboratório, cujo sistema operacional que estava instalado era o linux, estava dando muitos problemas. Essess problemas sempre estavam relacionados com a perda de dados que estavam gravados no computador. Eu então achava que a solução seria trocar cada um dos componentes encarregados do armazenamento de dados. Fizemos isso, mas não deu certo. Mas, por um ``milagre'', o kernel do linux travou e mostrou algumas informações que me ajudaram a encontrar o problema. Como eu faço iniciação científica sobre com o kernel do linux, pude entender a saída que foi mostrada e identifiquei que o problema era em relação ao alocamento das páginas de memória. Isso quer dizer que o problema estava na transferência dos dados entre os vários componentes do computador e a memória. Com isso conclui que deveria trocar a memória principal do computador. E por um acaso isso resolveu o problema que estava nos atormentando desde há muito tempo.
Comecei a me dedicar a outro projeto, que também está em andamento, onde são gerados relatórios em latex, e é necessário usar alguns comandos mais avançados, que eu não conhecia.
Novamente fui ``convocado'' à ajudar noutro projeto atrasado. Tinha que fazer um programa em PHP que enviava um mail com os dados retornados de uma formulário de uma página. Depois de alguns problemas com a linguagem, e com o HTML da página, tudo deu certo.
Foi pedido para que eu atualizasse o servidor de banco de dados Postgresql, da versão 6.5 para a 7.0. Visto que essa é uma versão beta, ou seja, ainda está em desenvolvimento, encontramos alguns problemas, como o fato da nossa base de dados antiga ser incompatível com a versão nova. Isso pode ser um impecílio no upgrade do nosso servidor web, já que isso traria perda de dados. Ainda estou estudando uma forma de resolver esse problema.
Um dos projetos que eu estava envolvido, o de leilões, teve a sua parte inicial entregue. Ainda existem alguns problemas a serem resolvidos, mas agora nós temos mais tempo para cuidar deles.
Começou a troca de servidores diversos da empresa, devido ao crescimento de mesma. Instalei Linux Debian em todos os servidores que teremos, e vou começar a configurá-los para atender os mais diversos serviços, tais como e-mail, web, banco de dados, etc. Foi atribuída a mim a tarefa de realizar o planejamento de como aproveitar, da melhor forma possível, todos os recursos computacionais disponíveis na empresa. Temos disponível 2 computadores com alto poder de processamento e grande velocidade de disco, 3 com capacidade média de processamento e velocidade de disco boa, 1 com um bom processador, mas com velocidade de disco e rede razoável, e 1 com baixa capacidade de processamento e disco lento. Também temos alguns periféricos disponíveis, como placas de rede ethernet 100BaseT (de alta velocidade), 2 switchs de 24 portas, 1 hub de 8 portas, uma controladora de disco SCSI UltraWide2, que atinge velocidades de até 266MB/s, e uma controladora RAID, que possibilita usar discos redundantes, ou seja, caso ocorra algum erro físico nos discos, os dados poderão ser recuperados. O que eu decidí fazer foi: 1 computador com alto poder de processamento usará uma placa RAID e será o nosso servidor de disco e laboratório ao mesmo tempo. O laboratório é o computador que usamos para testar e armazenar todo o trabalho realizado na empresa. O outro computador com processador rápido será o nosso servidor WEB. Um computador com velocidade média será o nosso gateway, firewall e servidor de e-mails. O outro será o servidor Windows 2000, e o outro talvez será o nosso Proxy, mas isso ainda não está certo. O computador com velocidade baixa de processamento será usado com gateway e firewall da nossa segunda rede de computadores. Essa rede é composta do nosso call-center (várias pessoas atendendo os clientes por meio de telefone, tendo os computadores conectados em rede para acessar rapidamente o nosso banco de dados). As placas de rede rápidas serão colocadas nos nossos gateways, para melhorar o fluxo de dados. Os switchs estão distribuídos da seguinte forma: um é usado na nossa rede principal, tendo como saída física para a internet somento o nosso gateway, o outro está fora do gateway, e é usado para conectar todos os servidores que estão fora do firewall. A saída para a internet desse switch só se dá através do roteador. A rede do call-center será conectada no hub, e o hub terá uma saída para o gateway mais lento, e daí então para o switch que dará acesso à internet.
Creio eu que essa é a melhor forma de distribuir os componentes disponíveis para o aproveitamento máximo dos mesmos.
O projeto de leilões está andando, mas para que eu esteja apto a ajudar nos scripts que serão necessários muito em breve, precisamos instalar no servidor, que será colocado no nosso cliente, uma máquina com uma distribuição Linux que eu já esteja familiarizado. Dentre todos problemas encontrados lá no cliente, decidimos resolver o de configurar uma intranet (rede com as mesmas características da internet, mas limitada a uma pequena área). E como o sistema que desenvolvemos foi criado como sendo páginas da web, usando PHP e Postgresql (o que faz com que as páginas sejam geradas no servidor, possibilitando concentrar as informações nele, e não no cliente), ele pode ser acessado através de qualquer computador da rede local.
Algumas coisas que eu percebi sobre como lidar com o cliente: O cliente estava ficando impaciente conosco, pois o sistema estava demorando muito pra ficar pronto, e ele pensava que a gente estava menosprezando-o, pois ele é um cliente pequeno. Foi então que meu chefe decidiu ir visitá-lo para atualizar o que está pronto do sistema toda semana, embora só a parte de cadastro esteja pronta. Isso melhorou o relacionamento com o cliente de uma forma espantosa. Concluo daí que simples atos são suficientes para melhorar o relacionamento entre cliente e empresa.
Comecei a trocar a máquina que servia as páginas web para uma outra, mais potente. Estou usando a distribuição Woody (unstable) da Debian. Essa distribuição está começando a ser formada agora, e talvez nos trará alguma dor de cabeça. Porém, ela usa o que há de mais novo em termos de software para linux.
Outra coisa que aprendi, ou melhor, descobri essa semana, é que nunca se deve começar um projeto sem ele ter sido completamente especificado. Infelizmente isso a gente só aprende quando percebe os problemas que ocorrem ao tentar fazer tudo ao mesmo tempo, ou seja, definindo o projeto e ao mesmo tempo já realizando-o.
E com isso também percebi que nenhum projeto deve ser iniciado com poucas pessoas envolvidas nele. É necessário um grupo que se dedica exclusivamente à esse projeto, afim de terminá-lo o quanto antes e com qualidade. Se o projeto demora muito, o cliente sempre tenta colocar coisas novas, fazer modificações, etc. o que sempre atrapalha o andamento do mesmo, sem contar que muitas coisas que já estavam prontas certamente serão descartadas, ou, no melhor caso, terão que ser alteradas. Só que projetos realizados muito rápido têm uma alta chance de apresentarem problemas, ou seja, a qualidade não será tão boa. É por isso que devemos sempre colocar várias pessoas envolvidas num mesmo projeto. Também devemos nos lembrar que cada um tem seu limite, que deve ser respeitado. O ideal é atribuir apenas uma tarefa para cada integrante do grupo, e evitar designar mais de um projeto para cada integrante, pois isso pode degradar a qualidade do produto a ser desenvolvido, e ao mesmo tempo desgastar excessivamente o funcionário.
Foi decidido que o sistema de leilões deveria estar pronto até o final dessa semana. Muita coisa ainda não está funcionando, mas foi entregue o suficiente para o cliente começar a entrar com os dados. Como eu não estou envolvido com a parte de programação do projeto, fiquei com a parte de fazer a atualização do site do leiloeiro automaticamente. Como muita coisa já está configurada no servidor instalado no cliente, já é possível atualizar o sistema remotamente, bem como testá-lo sem ter que ir até lá.
Instalei no servidor o Apache com suporte à SSL. Preciso dar uma estudada no material de MAC330 (criptografia) pra poder entender direito como funciona, pois está dando umas mensagens estranhas nos browsers dos clientes.
Tive alguns problemas com relação ao sistema de arquivos do windows, quando tenho que usar compartilhamento. Usei a minha experiência em iniciação científica pra solucioná-lo. O problema era que o computador guardava um cache do arquivo, e impedia que fosse percebida instantaneamente alguma alteração remota. Dei uma olhada na documentação do samba (programa para linux que emula um servidor Windows NT) e descobri como desligar o cache para os computadores clientes. O sistema de arquivos ficou mais lento (algo em torno de 10%), porém o problema com o cache dos arquivos foi resolvido.
Por conta disso, instalei o servidor de disco usando NFS sem RAID, e usando um script que é executado toda noite pra fazer o backup diário dos arquivos pessoais e projetos da empresa. Instalei também o NIS na rede, afim de aprender a usá-lo, pois é muito útil numa rede grande.
Fora isso, tive que cuidar da rede, como sempre, afim de deixá-la funcionando corretamente. O nosso servidor web agora puxa os dados a partir do servidor de disco. Para deixar o acesso ao servidor de disco mais rápido, colocamos uma placa de rede em cada um dos dois servidores, e ligamos as duas placas diretamente, afim de evitar gargalos e congestionamento na rede.
Agora a rede está quase pronta, faltando apenas o proxy (cache da internet). Dessa forma, só terei que me preocupar em realizar a manutenção rotineira da rede, podendo me dedicar aos projetos que estão chegando para mim.
Voltei a mexer com o PHPADS, afim de colocá-lo em uso finalmente. Como eu já o descrevi anteriormente, não vou repetí-lo novamente aqui. Depois de tanto tempo estudando e usando programas free-source, descobri que no mercado também existem ferramentas boas, gratuitas e com o código fonte aberto. Algumas dessas ferramentas precisam de uma licença se forem usadas comecialmente, mas nada muito absurdo em termos de custo benefício. Disso eu tiro uma conclusão: Pra que reinventar a roda?
Finalmente apliquei o PHPADS em algum site, e usando todos os recursos. O PHPADS possibilita a internacionalização através de um arquivo com as frases em uma dada língua. Como não havia a língua portuguesa, eu traduzi e a coloquei. E com isso, visualizando o código, consegui aprender a fazer programas de maneira internacionalizada, ou seja, eu crio um arquivo com as frases que serão usadas, tudo em inglês. No início do programa, é lido esse arquivo e colocado cada texto numa variável específica, e, ao invés de simplesmente imprimir um texto durante a execução do programa, é impresso o conteúdo da variável que contém o texto que deve ser exibido na língua que o usuário especificou durante a instalação do programa.
Uma coisa que eu não concordei foi o fato de apenas eu ter que fazer isso, ou seja, o único desenvolvedor envolvido com o projeto seria eu. Isso faz com que toda a parte de tecnologia fique dependendo de mim, o que faz o site ser literalmente dependente de apenas uma pessoa. Assim, caso eu saia da empresa por algum motivo, quem pegasse o site para alterar ou fazer algum tipo de manutenção certamente encontraria muita dificuldade. Seria praticamente inviável. Isso é uma lição que acabei de aprender, e que certamente não vou me esquecer, para evitar cometer o mesmo erro que cometeram aqui na WebSee.
Para a parte do e-commerce, estou estudando um software free-source chamado MiniVend. É um software feito em linguagem C e Perl, que funciona da seguinte forma: O banco de dados com os produtos a serem colocados à venda foi criado especificamente para esse sistema. Todas as páginas são geradas dinamicamente, através de chamadas feitos pelo servidor WEB a programas CGI. As páginas desenvolvidas para essa aplicação seguem uma linguagem própria, isto é, não é usado somente código html, mas também código MML (MiniVend Markup Language).
Primeiramente eu precisaria entender como funciona o banco de dados (como inserir dados, remover, consultar, etc.), como usar a linguagem MML, para poder construir as páginas que acessam o banco de dados do MiniVend, e finalmente como juntar tudo isso e montar um site que fosse fácil de usar à nivel de usuário.
Fora isso, pesquisei profundamente o IMP (webmail) afim de poder deixá-lo da forma com que vamos precisar usá-lo. O MiniVend foi deixado de lado um pouco.
Sobre o IMP, foi pedido pra realizar algumas alterações. Como ele tem o código fonte aberto, embora seja difícil entendê-lo, acho que será possível. Foi pedido para alterar o design e esconder qual o webmail usado, que seria IMP. Outras alterações foram pedidas. Eu as descreverei por completo logo abaixo:
O WebMail, que já estava com a interface pronta, terá que ser alterado devido à precipitação dos dirigentes da área de design. Todo o trabalho feito durante um dia foi perdido. A única coisa que não foi perdida é a experiência, pois agora já tenho uma noção de onde estão os arquivos a serem mudados, quando for realmente definido como será a aparência do webmail.
Recriei a interface para a alteração de senhas dos usuários de uma forma mais fácil e segura. Agora uso um cgi em perl todo feito por mim, pensando sempre na segurança, e que não tem nada de HTML no meio, ou seja, o design pode ser mudado sem que a parte programada seja influenciada.
Comecei a estudar um pouco de JSP (Java Server Pages). JSP é uma forma de criar páginas dinâmicas na internet. Ele se utiliza da linguagem java, e é muito parecido com ASP. Aprendi o básico, ou seja, já sei criar páginas dinâmicas simples.
Criei alguns scripts em Perl para me ajudar a administrar o servidor de e-mails. Scripts para criar e encerrar contas de usuários, além de outros mais simples. Estudei também a hipótese de se criar quota de disco para os usuários de contas de e-mail (um esquema de espaço máximo que cada usuário pode ter no disco do servidor de e-mails, afim de evitar que as pessoas utilizem muito espaço, fazendo com que o disco encha e ninguém mais possa receber e-mails).
Instalei o Squid, um proxy free-software. Ele se encarregará de fazer o cache das páginas mais visitadas da internet, afim de evitar ter que sempre fazer o download das mesmas páginas várias vezes. Isso vai liberar um pouco o nosso gateway, que passará a ter um tráfego mais ``calmo'' entre a rede externa e a interna.
Configurei o firewall para negar acesso a um certo bloco de IP's. Foi pedido que eu bloqueasse o acesso de certas pessoas à internet, e isso me custou algumas horas pra ler e aprender como fazer isso.
Visitei algumas empresas durante essa semana. Uma delas foi a .comDominio, uma empresa de hosting. Ela tem um prédio no centro da cidade e aluga espaço para outras empresas colocarem seus servidores lá. Possui toda a infraestrutura para que os seus clientes fiquem o mais tranqüilos possível. Possui um andar de geradores de energia e um de ar-condicionado, sem contar que possui 3 links de acesso à rede, com roteadores ``inteligentes'', ou seja, eles sempre mandam os dados pelo caminho mais rápido, e não o mais curto.
Visitei a empresa BMZ, que cuida da publicidade do projeto ponto k. Fui lá afim de conversar com o pessoal de outra empresa, Spectrum, que está junto da nossa (WebSee) nesse projeto. Essa empresa cuidará da parte de hardware, enquanto a gente cuida da parte da rede e software em geral, sem contar a parte de publicidade.
Depois ainda fui numa palestra sobre um projeto que está chegando, chamado privacidade online. Esse projeto é uma parceria da WebSee com uma empresa de advocacia chamada Menezes&Lopes. O projeto consiste em criar uma norma para certificar sites com algo do tipo ISO9000, em termos de confiabilidade dos dados que o usuário deixaria no site. Isso significa que o site que tiver esse ``selo'' pode ser considerado ``confiável'' (com relação ao cuidado tomado com os dados dos clientes dele).
Começamos a instalar um servidor de servlets chamado tomcat. Esse servidor consiste em rodar aplicações java do lado do servidor e mandar a saída para o browser do cliente. Perdemos muito tempo tentando fazê-lo funcionar, pois a documentação é muito pequena, e muito confusa. Ao final da instalação, não conseguímos, após o dobro do tempo que usamos para fazer a instalação, configurar os servlets que já tinhamos para funcionar da forma que queríamos. Ao final de 3 dias de tentativas, resolvemos voltar à versão antiga dos servlets, pois apareceu um outro projeto mais urgente que atualizar o servidor.
Estudei como fazer um banco de dados funcionar mais eficientemente, e coloquei tudo o que li em prática, afim de melhorar nosso servidor. O accesso ficou muito mais rápido, fazendo com que os pedidos sejam mais rápidos e terminem mais cedo, ou seja, eles ficam menos tempo usando a memória e o processador o que deixa o servidor mais livre pra atender a outros pedidos.
Parece que estou mais aprendendo o que não fazer do que o que fazer durante esse estágio. Como não existe um contrato formal com o cliente, este acha que tem o direito de dar palpites e mudar o projeto durante o seu desenvolvimento, e ainda acha que se não for entregue na data especificada durante o início do projeto então ele deve ser ressarcido do prejuízo que ele mesmo causou ao projeto. A falta do uso de metodologias de engenharia de software causa uma degradação muito forte num projeto que pode ter começado bem.
Comecei a estudar novamente o webmail, afim de aprender a mandar um e-mail com dois arquivos atachados escolhidos previamente. Estamos também estudando uma forma de mudar o design do webmail, afim de atender às expectativas do pessoal de design e do pessoal de marketing.
Fizemos funcionar a captura de som e imagem através do browser Internet Explorer 5, usando um recurso chamado ActiveX, que possibilita a execução de programas que interagem diretamente com o hardware do cliente. Assim, podemos colocar em dois arquivos a fala e a foto da pessoa que está mandando-o como anexos do e-mail, afim de termos um e-mail multimídia conforme nos foi pedido.
Deleguei as tarefas de desenvolvimento de banco de dados e cadastro de usuário, bem como o login. Também desloquei pessoal pra me ajudar com o webmail, afim de entendermos o IMP, pra não termos que fazer tudo do zero, já que teremos que entregar isso tudo na semana que vem.
Entendemos como o IMP faz para anexar arquivos no corpo do e-mail, bem como aprendemos que o formato que os e-mails usam para trafegar na rede é o de base 64, e que o e-mail é traduzido para esse formato pelo programa usado pelo usuário, e não pelo servidor.
Comecei a pesquisar alguns programas que tenham a finalidade de cuidar de uma intranet, outro com a finalidade de cuidar do conteúdo dos e-mails que passam pelo servidor, outro que cuida de portais e outro que cuida de manter um FAQ sempre atualizado.
Fui até o nosso cliente leiloeiro e tentei descobrir por que o servidor de lá não estava mais aceitando nossa senha. Arrumei isso, e instalei uma nova versão do nosso sistema lá.
Fui à COMDEX pra procurar soluções prontas pra alguns dos nossos problemas, bem como verificar o que nossos concorrentes andam fazendo no mercado. Alguns dos problemas que temos são os seguintes:
As soluções que eu encontrei são as seguintes:
Estudei a possibilidade de se usar um novo software chamado netshift, que tem por objetivo servir como uma ``casca'' para um browser que fica no quiosque. Assim, poderíamos controlar melhor o que os usuários dos quiosques poderiam fazer, de forma a tornar o sistema mais seguro, além de atender às exigências dos nossos clientes, que querem que não se acesse as páginas dos concorrentes, por exemplo.
Estudei um pouco de soquetes em java, assim como conexões ``connection oriented''. Assim eu poderia entender melhor como funcionam os vários serviços disponíveis na internet.
Comecei a criar a documentação da rede, afim de ajudar aos usuários menos experientes, ou qualquer outro usuário que encontre algum problema, ou que queira saber mais um pouco sobre a rede, ou até mesmo aqueles que querem otimizar seu acesso à rede interna ou externa. A documentação consiste de ensinar através de páginas html como usar a rede, e fornece links sobre assuntos relacionados à ela. Junto com essa documentação foram criados alguns scripts que permitem a alteração da senha da conta de e-mail dos usuários.
Esse trabalho todo vai ajudar a diminuir a minha dedicação à rede, pois cada usuário conseguirá resolver a maioria de seus problemas sem precisar me chamar, e novos usuários poderão ser auxiliados pelos usuários mais antigos e pela documentação da rede, que continuará crescendo conforme forem aparecendo dúvidas e suas repectivas soluções.
Descobrimos uma falha de segurança grave em nosso servidor de e-mail, referente ao serviço de transporte de e-mail SMTP. O nosso servidor permitia qualquer pessoa de usar o serviço SMTP para mandar e-mails de qualquer lugar para qualquer lugar. Isso abria uma brecha pra usuários mal intencionados de mandar vários e-mails através de nosso servidor causando uma sobrecarga que poderia acarretar em Denial of Service (DoS), ou seja, nosso servidor cairia por estar atendendo à muitas requisições SMTP, ou pelo menos ficaria muito lento. A solução foi colocar o serviço numa máquina só para isso. Assim, caso essa máquina seja atacada e caia, nossa rede ainda continuaria de pé, pois antes de tomarmos essa atitude, o servidor de SMTP era o servidor central da nossa rede interna.
Fiquei um tempão tentando resolver um problema que não é grave, mas que está dando bastante trabalho pra gente. Ele consiste do seguinte: numa página HTML, qualquer link que tenha como target ``_top'' irá fazer todos os frames atuais sumirem. O que se quer é que mesmo com páginas com esse tipo de link, caso alguém clique nesse link, alguns frames atuais não devem sumir. Dentre as possíveis soluções, pensamos em abrir duas janelas e com JavaScript faríamos com que links numa janela abrissem página noutra. Outra solução seria tentar criar layers (um tipo de objeto flutuante na janela) que ficassem sempre em algum lugar e nunca sumissem, mesmo quando fosse clicado num outro link. E a solução mais provável a se usar, embora fosse a mais inviável, é a de se chamar um programa no servidor que rescreveria todas as páginas tirando a tag ``target=_top'' do código HTML, e modificando todos os links para que cada um deles chamasse o programa do servidor que refaria as páginas tirando tal tag, e assim sucessivamente (de uma forma aparentemente recursiva). Essa solução é inviável pois o servidor seria muito requisitado, de forma a deixar o acesso às páginas muito lento.
Tive que criar um script em Perl e SH pra cuidar de avisar os usuários que tiverem suas quotas estouradas. O script foi colocado no servidor de e-mails pra rodar uma vez por dia, onde ele verificaria se algum usuário teria passado dos seu limite (que foi estabelecido em 50MB). Caso algum usuário tenha passado disso, então é mandado um e-mail pra esse usuário e é especificado um prazo pra que ele regularize sua situação. O prazo definido é o de 7 dias. Após esse período, a conta estaria bloqueada. Mas por medida de segurança, ele conseguirá receber e-mails, mas não conseguirá fazer nada com eles.
Para isso tudo eu utilizei o esquema de quotas do kernel do linux, usando alguns scripts pra interpretar as saídas dos comandos afim de poder saber quem está usando o disco do servidor mais do que o necessário.
Conforme eu estava testando semana passada, continuei nessa a estudar formas de filtar os e-mails pra detectar virus. Instalei alguns anti-virus shareware pra poder testar. Apenas dois foram satisfatórios, mas pretendo usar somente um. Tentei instalar, mas sem sucesso, filtros que pegam os e-mails que passarem pelo servidor. Semana que vem vou continuar a testar mais filtros.
Instalei linux num servidor que vai ficar numa empresa cliente nossa, a Menezes & Lopes. Nesse computador eu instalei um pacote que nunca tinha usado antes, um NetWare Server. Ele funciona como um servidor Novell, só que em linux, pra rodar aplicações antigas do sistema operacional DOS. Ainda não sei como configurá-lo, pois nunca usei uma rede Novell (que é como uma intranet, só que proprietária, pois ao invés de IP, usa o IPX, e ao invés do TCP, usa o RIP).
Tentei mais um pouco instalar um filtro de virus no servidor de e-mails, porém foi sem sucesso, pois não consegui usar um módulo do perl.
Fiz uma query num banco de dados com um join de três tabelas. Foi algo inédito pra mim, pois até então só havia feito isso nas aulas de Banco de Dados, ou seja, só teoria. Vi que se você não tem uma documentação do banco de dados, o problema pode ser muito maior do que se esperava.
Falta eu fazer um script pra atualizar o anti-virus automaticamente, ou seja, fazer o download dos arquivos do site do fabricante do anti-virus e colocar os arquivos no lugar certo, afim de poder usá-los.
Instalei (pelo menos fisicamente) dois roteadores e um servidor que vai ser o gateway de um dos nossos clientes, a Menezes & Lopes. A linha de comunicação que ligará os 2 roteadores é chamada de frame relay. Ainda não sei como funciona ou o que é, porém já estou pesquisando. Resolvi dar IPs reais pra essa rede, mas ainda não conseguimos estabelecer comunicação entre essa rede remota e a nossa.
O problema é que não conseguimos fazer os roteadores que estão nas empresas se comunicarem com os que estão aqui no escritório, e nem acertar as rotas dos roteadores pra eles saberem pra onde mandar os pacotes que estão recebendo. Essa parece ser a parte fácil da definição das rotas. Um problema potencial seria acertar a rota do roteador principal, que dá o acesso à internet pro nosso escritório. Embora nós já a tenhamos acertada, pode ser que ocorram alguns problemas ainda (por exemplo, caso a faixa de IP que demos pra cada empresa mude).
Instalei um novo webmail pra ser testado aqui. Ele se chama TWIG e vêm com suporte à virtual hosts, o que seria muito bom pra gente, já que aqui a gente usa um esquema parecido com o de virtual hosts. A maior vantagem aparentemente é a de ser mais fácil de modificar a interface dele, através de programas como o Dreamweaver (programa usado pra criar documentos HTML de forma gráfica, fácil e rápida).
Encontrei um bug no esquema de virtual hosts do servidor de e-mail. O problema estava na concorrência. Isso só acontecia quando o usuário recebia o e-mail e tentava lê-lo no mesmo instante. O servidor não teria tempo de tratar o arquivo dessa mensagem para que o usuário pudesse ter permissão pra fazer o que quisesse com o e-mail. Isso eu resolvi fazendo o script que roda no servidor mudar as permissões antes de deixar o e-mail disponível pro usuário.
Criei um script que atualiza automaticamente a base de dados do anti-virus que está instalada no servidor de e-mails. Assim, todos os dias o script é rodado e baixa as definições de vírus mais novas que existem na web, deixando assim nossa rede Windows protegida de e-mails infectados. O script é simples: ele faz um download de um arquivo zip do site do anti-virus e, caso o download tenha sido feito corretamente, ele dá um unzip no arquivo e coloca os arquivos resultantes num local onde está nossa base de dados do anti-virus.
Fiz um script que é rodado toda sexta-feira à noite pra fazer um backup dos projetos que estão armazenados no nosso servidor. O script é simples, pois ele faz um arquivo tar.gz e grava-o em CD-R.
Tentei encontrar uma forma de usar páginas ASP (ActiveServer Pages) no nosso servidor Apache. Acho que encontrei algumas formas, mas não tive tempo de testar ainda.
Comecei a fazer um esquema de newsletter dinâmica, ou seja, as notícias são colocadas num banco de dados no servidor, através de uma interface web, e depois são buscadas lá para montar uma página HTML dinâmica com as notícias numa formatação a ser escolhida. Isso é bom pois diminui o trabalho de ter que criar todas as páginas na mão, e se tiver que mudar o design, não será tão trabalhoso assim.
Ainda continuamos com o problema dos roteadores, para provermos acesso à internet para algumas empresas. Descobri uma forma de acertar as rotas de tal forma que os pacotes sigam pelo caminho correto, mas parece que estamos tendo problemas com o link entre as empresas. Se for esse o problema, nada posso fazer.
Um técnico da Telefônica veio testar o Frame Relay e disse que está tudo ok. Depois de algum tempo consegui fazê-lo funcionar. O que faltava era configurar as rotas. O roteador dizia que fazia tudo sozinho, mas configurar as rotas na mão ainda é mais confiável.
Continuei fazendo as páginas dinâmicas de notícias da Menezes e Lopes. Falta fazer apenas o front-end, pois a parte de administração já está ok.
Instalei mais uma placa de rede no nosso gateway. Agora ele está roteando pacotes entre 5 redes, 3 dentro da empresa e 2 fora. Perdi algumas horas pra descobrir porque os módulos da placa de rede não estavam conseguindo carregar.
Só falta agora fazer a rede da Result's funcionar. Vou usar minha experiência que adquiri ao fazer os roteadores da Menezes funcionarem para isso.
Terminei de fazer o mapa da rede, de uma forma esquemática, mas muito clara, de forma que a gente possa definir melhor rotas para nossas redes internas e externas, pois no mapa há identificações com os IPs da redes e das máquinas mais importantes.
Instalei um servidor de DHCP e um proxy (Squid) no servidor da Menezes, afim de evitar que o administrador da rede tenha que configurar mais de 100 máquinas pra acessar a internet tudo num dia só. Assim, o DHCP configura as máquinas assim que elas tenham sido ligadas, e dá uma IP pra elas, além de configurar outros detalhes, possibilitando que elas acessem a internet.
O proxy serve pra que eles não usem toda a banda de que dispõe, fazendo um cache dos dados mais requisitados pela empresa.
Instalei um programa chamado IPAC, que faz o chamado IP accounting, isto é, ele registra os pacotes que entraram e saíram de uma interface de rede. Assim, através de regras de contagem de pacotes, podemos saber quando e quanto de internet está sendo usando pela empresa e pelas outras empresas clientes nossas, que receberam um link nosso pra poder acessar a internet. Ele mostra dados em formato gráfico, incluindo estimativas, totais e média.
Implementei a idéia de notícias da menezes usando banco de dados. Fiz tudo num dia só, algo que eu esperava perder a semana inteira pra isso. Isso aconteceu porque não tinha ninguém pra me pedir favores, ou me atrapalhar pedindo pra eu fazer outras coisas e depois ficar perguntando por que que eu não terminei o que eu estava fazendo antes.
Pediram pra eu tentar fazer um servidor de e-mail Sun dar forward das mensagens para o nosso servidor, mas isso não foi possível, pois nem eu, nem o administrador desse servidor sabíamos como fazer.
Arrumei alguns problemas que aconteceram com nossos servidores devido à constantes quedas de energia. Os nossos servidores MySQL e PostgreSQL não conseguiam funcionar, e isso ficou assim por muito tempo, até eu descobrir que o problema havia sido causado pela perda de arquivos devido às quedas de força. Tentei recriar os arquivos perdidos, mas não foi possível, e a única solução que eu encontrei foi instalar os programas novamente.
Uma empresa cliente nossa pediu pra configurar o servidor de e-mail da seguinte forma: eles queriam que todo e-mail recebido para um determindado domínio fosse guardado numa mesma conta, e que depois todos eles seriam baixados através de um servidor POP, e eles seriam entregues através do servidor local desse cliente para os usuários do serviço de e-mail. Eu consegui configurar mais ou menos o nosso servidor para fazer isso, mas ainda não sei por que não funciona, já que o servidor de e-mail (qmail) não apresenta mais erros durante a entrega das mensagens para esse domínio, mas as mensagens não vão para a caixa postal do domínio.
Comecei a fazer a documentação dos projetos que eu desenvolvi aqui na WebSee, pois em breve estarei saindo dessa empresa, e gostaria de deixar tudo que eu fiz claro para que, além de outras pessoas poderem usar, pois é tudo OpenSource, o administrador da rede que ficar no meu lugar deve saber como usar as ferramentas que eu desenvolvi, sem precisar ficar me perguntando tudo, ou seja, tenho que fazer algo auto-explicatório.
Fiz a documentação da rede da menezes e lopes para ficar parecida com a da nossa rede. Essa documentação fica na internet, e pode ser vista em spitfire.websee.com.br e em menezes.websee.com.br. Aproveitei pra mudar os scripts que contam o uso da rede, tanto na menezes quanto na websee. Agora é descontado o acesso aos servidores internos, mostrando apenas o uso da rede depois do nosso roteador, ou seja, a internet em si.
Ensinei quem vai ficar no meu lugar a cuidar da rede e a instalar máquinas na rede, além de lhe entregar as senhas e mostrar o que cada servidor faz na rede.
Tive que arrumar um problema que estava acontecendo no php do apache, no servidor. O problema era um bug no pacote do php3. Reinstalei-o com uma versão mais nova e agora parece que está tudo ok.