Apostila Qmail LDAP
Apostila Qmail LDAP
Apostila Qmail LDAP
br
QMAIL + OPENLDAP
Verso 0.01
Nota de Copyright
Copyleft 2004 - Marcio Garcia Marcenari e Ralf Braga Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; A copy of the license is included in the section entitled "GNU Free Documentation License"
Do Autor
Marcio Garcia Marcenari, Bem comecei a mexer com Linux ainda na TurboLinux como o nico representante no Brasil, em seguida atuei na empresa 4Linux como profissional da rea Tcnica Comercial, tambm Consultor Tcnico e Instrutor da mesma. Atualmente sou consultor da empresa The Source, atuando tambm como instrutor de Software Livre na Sucesu So Paulo e outros centros de treinamento focando os diversos tpicos, dentre eles: Qmail, Linux, Ldap, Segurana, Samba, VPN, Apache), etc...
Introduo
Gostaria de agradecer alguns amigos que trabalharam comigo porm nunca tive a oportunidade de documentar ou relatar isso formalmente, apenas comentrios. Sem os mesmos eu jamais teria chegado nessa velocidade onde cheguei, so eles: Alessandro Kenji Urakawa e Renato Tambelini. Tambm quero agradecer como Co-Autor Ralf Braga. A idia com o tempo formalizar um grupo de discusso sobre o Qmail, que na minha opinio um dos melhores servidores de correio que j conheci. A idia de criao do site e grupo iniciar as tradues de manuais do qmail para a Lngua Portuguesa pt_BR e aprimorar o material, fazendo assim com que o conhecimento brasileiro em qmail cresa, fomentando tambm a comunidade de Software Livre. E assim deixar documentado, todas as dificuldades encontradas no meio do percurso e incentivar com que outras pessoas faam o mesmo e comecemos todos a ajudar uns aos outros. Em breve esperamos poder contar tambm com voc para poder contribuir para a comunidade Qmail_BR.
ndice
O Sistema Operacional.........................................................................................10 O Linux.................................................................................................................10 Algumas Caractersticas do Linux.........................................................................11 Distribuies do Linux...........................................................................................13 Software Livre.......................................................................................................17 Instalao do GNU/Debian Linux 3.0 r2................................................................20 Menu de Instalao Selecionando a Imagem de Instalao............................20 Menu de Instalao Seleo de dioma...........................................................21 Menu de Instalao Seleo de dioma e Teclado...........................................22 Menu de Instalao Notas de Lanamento.....................................................23 Menu de Instalao Configurao do Teclado.................................................24 Menu de Instalao Selecionar Teclado..........................................................25 Menu de Instalao Particionar Disco Rgido..................................................26 Menu de Instalao Selecionar Unidade de Disco...........................................27 Menu de Instalao Limitaes do LILO..........................................................28 Menu de Instalao Informaes Adicionais sobre ReiserFS...........................29 Menu de Instalao Particionar Disco Rgido..................................................30 Menu de Instalao Particionar Disco Rgido..................................................31 Menu de Instalao Configurao da Partio Swap.......................................32 Menu de Instalao Checar Blocos Defeituosos..............................................33 Menu de Instalao Formatar Dispositivo Selecionado...................................34 Menu de Instalao Inicializar Dispositivo do Sistema....................................35 Menu de Instalao Tipo de Sistema de Arquivos...........................................36 Menu de Instalao Selecionar Dispositivo.....................................................37 Menu de Instalao Checar Blocos Defeituosos..............................................38 Menu de Instalao Formatar Dispositivo Selecionado...................................39 Menu de Instalao Gerando Sistema de Arquivos.........................................40 Menu de Instalao Montar Dispositivo Selecionado.......................................41 Menu de Instalao Inicializar Dispositivo do Sistema....................................42 Menu de Instalao Selecionar Dispositivo.....................................................43 Menu de Instalao Checar Blocos Defeituosos..............................................44 Menu de Instalao Formatar Dispositivo Selecionado...................................45 Menu de Instalao Gerando Sistema de Arquivos.........................................46 Menu de Instalao Montar Dispositivo Selecionado.......................................47 Menu de Instalao Instalar Kernel e Mdulos................................................48 Menu de Instalao CDROM............................................................................49 Menu de Instalao Configurao de Dispositivos..........................................50 Menu de Instalao Configurao de Dispositivos..........................................51 Menu de Instalao Configurao de Dispositivos..........................................52 Menu de Instalao Configurao de Rede.....................................................53 Menu de Instalao Nome no Servidor...........................................................54
5
Menu de Instalao Ativar Rede DHCP ou STATIC...........................................55 Menu de Instalao Configurao do IP do Servidor.......................................56 Menu de Instalao Configurao da Mascar de Rede..................................57 Menu de Instalao Configurao do Gateway...............................................58 Menu de Instalao Configurao do Domnio do Servidor.............................59 Menu de Instalao Configurao do Resolvedor de Nomes...........................60 Menu de Instalao Instalao do Sistema GNU/Debian Linux........................61 Menu de Instalao Instalao do Sistema GNU/Debian Linux........................62 Menu de Instalao Configurao do Gerenciador de Boot.............................63 Menu de Instalao Configurao do Gerenciador de Boot.............................64 Menu de Instalao Configurao do Gerenciador de Boot.............................65 Menu de Instalao Reiniciar o Sistema.........................................................66 Menu de Instalao Reiniciar o Sistema.........................................................67 Gerenciador de pacotes do Debian.......................................................................68 dpkg..................................................................................................................68 APT...................................................................................................................69 Redes...................................................................................................................72 Configurao do ambiente Debian........................................................................74 Instalao e Configurao DNS (Domain Name Server)........................................77 Introduo.........................................................................................................77 A Histria do Domain Name Server...................................................................78 A Histria do BIND.............................................................................................79 Instalao do BIND............................................................................................80 Configurao do BIND.......................................................................................80 Iniciando o Servio do BIND..............................................................................82 Testando o BIND...............................................................................................82 daemontools.........................................................................................................83 O que ?..........................................................................................................83 O programa svscanboot....................................................................................83 Interface........................................................................................................83 O programa svscan...........................................................................................83 Interface........................................................................................................84 O programa supervise.......................................................................................84 Interface........................................................................................................84 O programa svc.................................................................................................85 Interface........................................................................................................85 Opes..........................................................................................................85 O programa svok...............................................................................................85 Interface........................................................................................................85 O programa svstat............................................................................................86 Interface........................................................................................................86 O programa readproctitle..................................................................................86 Interface........................................................................................................86 O programa multilog.........................................................................................87 Interface........................................................................................................87 Timestamping...............................................................................................87
6
Rotate logs automaticamente.......................................................................87 O programa setuidgid.......................................................................................88 Interface........................................................................................................88 O programa softlimit.........................................................................................89 Interface........................................................................................................89 Opes..........................................................................................................89 ucspi-tcp...............................................................................................................90 O que ?..........................................................................................................90 Outras ferramentas TCP de comandos de linha................................................90 O programa tcpserver.......................................................................................90 Interface........................................................................................................90 Opes..........................................................................................................91 O programa tcprules.........................................................................................92 Interface........................................................................................................92 Formato das regras...........................................................................................93 Endereos.....................................................................................................93 Range de endereos......................................................................................94 Instrues......................................................................................................94 O programa tcpclient........................................................................................94 Interface........................................................................................................94 Opes..........................................................................................................95 Variveis de ambiente TCP...............................................................................95 Qmail....................................................................................................................97 Releases do Qmail............................................................................................97 Por que usar o Qmail.........................................................................................97 Algumas comparaes do Qmail.......................................................................98 Pacotes.............................................................................................................98 Download dos pacotes......................................................................................98 Como instalar o daemontools............................................................................99 Como instalar o ucspi-tcp..................................................................................99 Como instalar o Qmail.....................................................................................100 Criando os alias do Qmail............................................................................101 Configurando o script /var/qmail/rc..........................................................102 Iniciando o Qmail somente local..................................................................104 Verificando os processos do Qmail..............................................................104 Testando o servidor de correio Qmail..........................................................105 Parando o servidor de correio Qmail...........................................................105 Configurando o binrio sendmail..............................................................106 Configurando o SEND do Qmail...................................................................106 Configurando o SMTP do Qmail...................................................................107 Configurando o POP3D do Qmail.................................................................107 Criando os diretrios de logs do Qmail........................................................108 Criando os links dos scripts do Qmail..........................................................108 Configurando a tabela de relay...................................................................109 Habilitando a checagem de domnio...........................................................109 Script de rotinas do Qmail...........................................................................110
7
Arquivos de controle do Qmail........................................................................111 Variveis de ambiente do Qmail.....................................................................112 Arquitetura......................................................................................................114 Estrutura de Diretrios....................................................................................115 Estrutura do Queue.........................................................................................115 Tentativas de Entrega das Mensagens............................................................115 Vpopmail............................................................................................................118 Vantagens.......................................................................................................118 Pacotes...........................................................................................................118 Download........................................................................................................118 Como instalar o vpopmail...............................................................................118 Courier-Imap.......................................................................................................120 Pacotes...........................................................................................................120 Download........................................................................................................120 Dependncias.................................................................................................120 Como instalar o courier-imap..........................................................................120 Qmailadmin........................................................................................................121 Outros recursos do qmailadmin......................................................................122 Pacote.............................................................................................................122 Download........................................................................................................122 Pr-requisitos..................................................................................................122 Como instalar o qmailadmin...........................................................................123 Como acessar o qmailadmin...........................................................................124 Squirrelmail........................................................................................................124 Pacote.............................................................................................................124 Download........................................................................................................124 Como instalar o squirrelmail...........................................................................124 Como acessar o squirrelmail...........................................................................124 Como deixar o webmail mais seguro..................................................................125 OPENLDAP2........................................................................................................126 Instalao do OpenLdap2 atravs do APT...........................................................126 Arquivos de configurao do OPENLDAP.........................................................128 Instalando o pacote migrationtools.....................................................................131 Migrando a Base de Objetos...........................................................................132 Ferramenta de administrao web para o OpenLDAP.........................................133 Download........................................................................................................133 Pr-requisitos..................................................................................................134 Como instalar o davedap................................................................................134 Como acessar o davedap................................................................................139 Instalao do OpenLdap2 atravs do cdigo fonte.............................................139 Pr-requisitos..................................................................................................139 Pacotes...........................................................................................................139 Download........................................................................................................139 Como instalar o BerkeleyDB............................................................................140 Como instalar o Cyrus - SASL..........................................................................140 Como instalar o OpenLDAP.............................................................................141
8
Configurao do OpenLdap.............................................................................142 Carregando o servio do OpenLDAP................................................................143 Configurando as entradas no OpenLDAP.........................................................143 Modificando as entradas na base LDAP...........................................................146 Removendo as entradas na base LDAP...........................................................146 Consultando as entradas na base LDAP..........................................................146 Como fazer a indexo da base LDAP...............................................................146 Criptografando senhas do OpenLDAP..............................................................146 Instando o Qmail com suporte a LDAP................................................................148 Pr-requisitos..................................................................................................148 Download do Qmail.........................................................................................148 Download do Patch do LDAP para o Qmail......................................................148 Instalao do Qmail........................................................................................148 Descompactando o Qmail...............................................................................148 Aplicando o patch do LDAP no Qmail..............................................................148 Editando o Makefile do Qmail..........................................................................149 Configurando o LDAP com suporte ao Qmail...................................................149 Criando usurio para interagir com o LDAP.....................................................151 Criando os alias do Qmail................................................................................151 Criando os arquivos de controle do Qmail.......................................................152 Configurando o usurio e grupo que ir interagir com o LDAP....................152 Configurando o usurio administrador que ir controlar a Base LDAP......152 Configurando a senha do Manager no Qmail............................................152 Configurando a base do LDAP no Qmail......................................................152 Configurando o endereo do servidor LDAP.................................................152 Configurando o objectclass para usurio poder interagir com o LDAP.........153 Configurando arquivos de controle para o Qmail consultar o LDAP.............153 Configurando mensagem de quota..............................................................153 Configurando o arquivo para criao da conta do usurio no Qmail............153 Criando o script para criao automtica da caixa postal do usurio..........153 Configurando tabela de relay do SMTP........................................................154 Configurando os scripts do Qmail....................................................................154 Configurando o SEND..................................................................................155 Configurando o SMTPD................................................................................155 Configurando o POP3D................................................................................156 Criando os links dos servios do Qmail...........................................................157 Referncias.........................................................................................................158 GNU Free Documentation License......................................................................159
O Sistema Operacional
O Sistema Operacional o conjunto de programas que fazem a interface do usurio e seus programas com o computador. Ele responsvel pelo gerenciamento de recursos e perifricos (como memria, discos, arquivos, impressoras, CD-ROMs, etc.), interpretao de mensagens e a execuo de programas. No Linux o Kernel mais o conjunto de ferramentas GNU compem o Sistema Operacional. O kernel (que a base principal de um sistema operacional), poder ser construdo de acordo com a configurao do seu computador e dos perifricos que possui.
O Linux
O Linux um sistema operacional criado em 1991 por Linus Torvalds na universidade de Helsinki na Finlndia. um sistema Operacional de cdigo aberto distribudo gratuitamente pela Internet. Seu cdigo fonte liberado como Free Software (software livre) o aviso de copyright do kernel feito por Linus descreve detalhadamente isto e mesmo ele est proibido de fazer a comercializao do sistema. Isto quer dizer que voc no precisa pagar nada para usar o Linux, e no crime fazer cpias para instalar em outros computadores, ns inclusive incentivamos voc a fazer isto. Ser um sistema de cdigo aberto pode explicar a performance, estabilidade e velocidade em que novos recursos so adicionados ao sistema. Para rodar o Linux voc precisa, no mnimo, de um computador 386 SX com 2 MB de memria e 40MB disponveis em seu disco rgido para uma instalao bsica e funcional. O sistema segue o padro POSIX que o mesmo usado por sistemas UNIX e suas variantes. Assim, aprendendo o Linux voc no encontrar muita dificuldade em operar um sistema do tipo UNIX, FreeBSD, HPUX, SunOS, etc., bastando apenas aprender alguns detalhes encontrados em cada sistema. O cdigo fonte aberto permite que qualquer pessoa veja como o sistema funciona (til para aprendizado), corrija alguma problema ou faa alguma sugesto sobre sua melhoria, esse um dos motivos de seu rpido crescimento, do aumento da compatibilidade de perifricos (como novas placas sendo suportadas logo aps seu lanamento) e de sua estabilidade. Outro ponto em que ele se destaca o suporte que oferece a placas, CDRoms e outros tipos de dispositivos de ltima gerao e mais antigos (a maioria deles j ultrapassados e sendo completamente suportados pelo sistema operacional). Este um ponto forte para empresas que desejam manter seus
10
micros em funcionamento e pretendem investir em avanos tecnolgicos com as mquinas que possui. Hoje o Linux desenvolvido por milhares de pessoas espalhadas pelo mundo, cada uma fazendo sua contribuio ou mantendo alguma parte do kernel gratuitamente. Linus Torvalds ainda trabalha em seu desenvolvimento e tambm ajuda na coordenao entre os desenvolvedores. O suporte ao sistema tambm se destaca como sendo o mais eficiente e rpido do que qualquer programa comercial disponvel no mercado. Existem centenas de consultores especializados espalhados ao redor do mundo. Voc pode se inscrever em uma lista de discusso e relatar sua dvida ou alguma falha, e sua mensagem ser vista por centenas de usurios na Internet e algum ir te ajudar ou avisar as pessoas responsveis sobre a falha encontrada para devida correo.
livre e desenvolvido voluntariamente por programadores experientes, hackers, e contribuidores espalhados ao redor do mundo que tem como objetivo a contribuio para a melhoria e crescimento deste sistema operacional. Muitos deles estavam cansados do excesso de propaganda (Marketing) e baixa qualidade de sistemas comerciais existentes. Convivem sem nenhum tipo de conflito com outros sistemas operacionais (com o DOS, Windows, OS/2) no mesmo computador. Multitarefa real. Multiusurio. Suporte a nomes extensos de arquivos e diretrios (255 caracteres). Conectividade com outros tipos de plataformas como Apple, Sun, Macintosh, Sparc, Alpha, PowerPc, ARM, Unix, Windows, DOS, etc. Proteo entre processos executados na memria RAM. Suporte a mais de 63 terminais virtuais (consoles). Modularizao - O GNU/Linux somente carrega para a memria o que usado durante o processamento, liberando totalmente a memria assim que o programa/dispositivo finalizado. Devido a modularizao, os drivers dos perifricos e recursos do sistema podem ser carregados e removidos completamente da memria RAM a qualquer momento. Os drivers (mdulos) ocupam pouco espao quando carregados na memria RAM (cerca de 6Kb para a Placa de rede NE 2000, por exemplo).
11
No h a necessidade de se reiniciar o sistema aps modificar a configurao de qualquer perifrico ou parmetros de rede. Somente necessrio reiniciar o sistema no caso de uma instalao interna de um novo perifrico, falha em algum hardware (queima do processador, placa me, etc.) ou atualizao do Kernel. No precisa de um processador potente para funcionar. O sistema roda bem em computadores 386Sx 25 com 4MB de memria RAM (sem rodar o sistema grfico X, que recomendado 8MB de RAM). J pensou no seu desempenho em um 486 ou Pentium ;-) O crescimento e novas verses do sistema no provocam lentido, pelo contrrio, a cada nova verso os desenvolvedores procuram buscar maior compatibilidade, acrescentar recursos teis e melhor desempenho do sistema (como o que aconteceu na passagem do kernel 2.0.x para 2.2.x). No requerida uma licena para seu uso. O GNU/Linux licenciado de acordo com os termos da GPL. Acessa sem problemas discos formatados pelo DOS, Windows, Novell, OS/2, NTFS, SunOS, Amiga, Atari, Mac, etc. Utiliza permisses de acesso a arquivos, diretrios e programas em execuo na memria RAM. NO EXISTEM VRUS NO LINUX! Em 13 anos de existncia, nunca foi registrado NENHUM tipo de vrus neste sistema. Isto tudo devido a grande segurana oferecida pelas permisses de acesso do sistema que funcionam inclusive durante a execuo de programas. Rede TCP/IP mais rpida que no Windows e tem sua pilha constantemente melhorada. O GNU/Linux tem suporte nativo a redes TCP/IP e no depende de uma camada intermediria como o WinSock. Em acessos via modem a Internet, a velocidade de transmisso 10% maior. Jogadores do Quake ou qualquer outro tipo de jogo via Internet preferem o GNU/Linux por causa da maior velocidade do Jogo em rede. fcil rodar um servidor Quake em seu computador e assim jogar contra vrios adversrios via Internet. Roda aplicaes DOS atravs do DOSEMU. Para se ter uma idia, possvel dar o boot em um sistema DOS qualquer dentro dele e ao mesmo tempo usar a multitarefa deste sistema. Roda aplicaes Windows atravs do WINE. Suporte a dispositivos infravermelho. Suporte a rede via rdio amador. Suporte a dispositivos Plug-and-Play. Suporte a dispositivos USB. Vrios tipos de firewalls de alta qualidade e com grande poder de segurana de
12
graa.
Roteamento esttico e dinmico de pacotes. Ponte entre Redes. Proxy Tradicional e Transparente. Possui recursos para atender a mais de um endereo IP na mesma placa de rede, sendo muito til para situaes de manuteno em servidores de redes ou para a emulao de "mais computadores" virtualmente. O servidor WEB e FTP podem estar localizados no mesmo computador, mas o usurio que se conecta tem a impresso que a rede possui servidores diferentes. O sistema de arquivos usado pelo GNU/Linux (Ext3) organiza os arquivos de forma inteligente evitando a fragmentao e fazendo-o um poderoso sistema para aplicaes multi-usurias exigentes e gravaes intensivas e ainda possui o recurso de Kjournal File System. Permite a montagem de um servidor Web, E-mail, News, etc. com um baixo custo e alta performance. O melhor servidor Web do mercado, o Apache, distribudo gratuitamente junto com o Linux. O mesmo acontece com o Sendmail. Por ser um sistema operacional de cdigo aberto, voc pode ver o que o cdigo fonte (o que foi digitado pelo programador) faz e adapt-lo as suas necessidades ou de sua empresa. Esta caracterstica uma segurana a mais para empresas srias e outros que no querem ter seus dados roubados (voc no sabe o que um sistema sem cdigo fonte faz na realidade enquanto esta processando o programa). Suporte a diversos dispositivos e perifricos disponveis no mercado, tanto os novos como obsoletos. Pode ser executado em 10 arquiteturas diferentes (Intel, Macintosh, Alpha, Arm, S/390. Risc, Sparc, etc.). Consultores tcnicos especializados no suporte ao sistema espalhados por todo o mundo. Entre muitas outras caractersticas que voc descobrir durante o uso do sistema. TODOS OS TENS DESCRITOS ACIMA SO VERDADEIROS E TESTADOS PARA QUE TIVESSE PLENA CERTEZA DE SEU FUNCIONAMENTO.
Distribuies do Linux
13
S o kernel GNU/Linux no suficiente para se ter uma sistema funcional, mas o principal. Existem grupos de pessoas, empresas e organizaes que decidem "distribuir" o Linux junto com outros programas essenciais (como por exemplo editores grficos, planilhas, bancos de dados, ambientes de programao, formatao de documentos, firewalls, etc). Este o significado bsico de distribuio. Cada distribuio tem sua caracterstica prpria, como o sistema de instalao, o objetivo, a localizao de programas, nomes de arquivos de configurao, etc. A escolha de uma distribuio pessoal e depende das necessidades de cada um. Algumas distribuies bastante conhecidas so: Slackware, Debian, Red Hat, Conectiva, Suse, Monkey, todas usando o SO Linux como kernel principal (a Debian uma distribuio independente de kernel e pode ser executada sob outros kernels, como o GNU hurd). A escolha de sua distribuio deve ser feita com muita ateno, no adianta muita coisa perguntar em canais de IRC sobre qual a melhor distribuio, ser levado pelas propagandas, pelo vizinho, etc. O melhor caminho para a escolha da distribuio, acredito eu, seria perguntar as caractersticas de cada uma e porque essa pessoa gosta dela ao invs de perguntar qual a melhor, porque quem lhe responder isto estar usando uma distribuio que se encaixa de acordo com suas necessidade e esta mesma distribuio pode no ser a melhor para lhe atender. Segue abaixo as caractersticas de algumas distribuies seguidas do site principal e endereo ftp: Debian http://www.debian.org/ - Distribuio desenvolvida e atualizada atravs do esforo de voluntrios espalhados ao redor do mundo, seguindo o estilo de desenvolvimento GNU/Linux. Por este motivo, foi adotada como a distribuio oficial do projeto GNU. Possui suporte a lngua Portuguesa, a nica que tem suporte a 10 arquiteturas diferentes (i386, Alpha, Sparc, PowerPc, Macintosh, Arm, etc.) e aproximadamente 15 sub-arquiteturas. A instalao da distribuio pode ser feita tanto atravs de Disquetes, CD-ROM, Tftp, Ftp, NFS ou atravs da combinao de vrios destes em cada etapa de instalao. Acompanha mais de 4350 programas distribudos em forma de pacotes divididos em 4 CDs binrios e 2 de cdigo fonte, cada um destes programas so mantidos e testados pela pessoa responsvel por seu empacotamento. Os pacotes so divididos em diretrios de acordo com sua categoria e gerenciados atravs de um avanado sistema de gerenciamento de pacotes (o dpkg) facilitando a instalao e atualizao de pacotes. Possui tanto ferramentas para administrao de redes e servidores quanto para desktops, estaes multimdia, jogos, desenvolvimento, web, etc. A atualizao da distribuio ou de pacotes individuais pode ser feita facilmente atravs de 2 comandos, no requerendo adquirir um novo CD
14
para usar a ltima verso da distribuio. a nica distribuio no comercial onde todos podem contribuir com seu conhecimento para o seu desenvolvimento. Para gerenciar os voluntrios, conta com centenas de listas de discusso envolvendo determinados desenvolvedores das mais diversas partes do mundo. So feitos extensivos testes antes do lanamento de cada verso para atingir um alto grau de confiabilidade. As falhas encontradas nos pacotes podem ser relatados atravs de um sistema de tratamento de falhas que encaminha a falha encontrada diretamente ao responsvel para avaliao e correo. Qualquer um pode receber a lista de falhas ou sugestes sobre a distribuio cadastrando-se em uma das lista de discusso que tratam especificamente da soluo de falhas encontradas na distribuio (disponvel na pgina principal da distribuio). Os pacotes podem ser instalados atravs de Tarefas contendo selees de pacotes de acordo com a utilizao do computador (servidor Web, desenvolvimento, TeX, jogos, desktop, etc.), Perfis contendo selees de pacotes de acordo com o tipo de usurio (programador, operador, etc.), ou atravs de uma seleo individual de pacotes, garantindo que somente os pacotes selecionados sero instalados fazendo uma instalao enxuta. Existe um time de desenvolvedores com a tarefa especfica de monitorar atualizaes de segurana em servios (apache, sendmail, e todos os outros 8000 pacotes)que possam compromenter o servidor, deixando-o vulnervel a ataques. Assim que uma falha descoberta, enviado uma alerta (DSA Debian Security Alert) e disponibilizada uma atualizao para correo das diversas verses da Debian. Isto geralmente feito em menos de 48 horas desde a descoberta da falha at a divulgao da correo. Como quase todas as falhas so descobertas nos programas, este mtodo tambm pode ser usado por administradores de outras distribuies para manterem seu sistema seguro e atualizado. O suporte ao usurio e desenvolvimento da distribuio so feitos atravs de listas de discusses e canais IRC. Existem uma lista de consultores habilitados a dar suporte e assistncia a sistemas Debian ao redor do mundo. ftp://ftp.debian.org/ - Endereo Ftp para download. Conectiva http://www.conectiva.com.br/ ftp://ftp.conectiva.com.br/ Libranet http://www.libranet.com/ Distribuio
15
baseada
na
Debian
GNU/Linux
oferecendo as principais caractersticas da distribuio Debian. So empacotadas os aplicativos mais utilizados da Distribuio Debian em um nico CD, voc pode ter um desktop completo sendo executado em pouco tempo. As atualizaes de softwares so feitas gratuitamente. O sistema de gerenciamento de pacotes Debian permite o gerenciamento de atualizaes automaticamente. Slackware http://www.slackware.com/ Distribuio desenvolvida por Patrick Volkerding, desenvolvida para alcanar facilidade de uso e estabilidade como prioridades principais. Foi a primeira distribuio a ser lanada no mundo e costuma trazer o que h de mais novo enquanto mantm uma certa tradio, provendo simplicidade, facilidade de uso e com isso flexibilidade e poder. Desde a primeira verso lanada em Abril de 1993, o Projeto Slackware Linux tem buscado produzir a distribuio Linux mais UNIX-like, ou seja, mais parecida com UNIX. O Slackware segue os padres Linux como o Linux File System Standard, que um padro de organizao de diretrios e arquivos para as distribuies. Enquanto as pessoas diziam que a Red Hat era a melhor distribuio para o usurio iniciante, o Slackware o melhor para o usurio mais "velho", ou seja programadores, administradores, etc. ftp://ftp.slackwarebrasil.org/linux/slackware/ - Ftp da distribuio Slackware. SuSE http://www.suse.com/ - Distribuio comercial Alem com a coordenao sendo feita atravs dos processos administrativos dos desenvolvedores e de seu brao norte-americano. O foco da Suse o usurio com conhecimento tcnico no Linux (programador, administrador de rede, etc.) e as corporaes. A distribuio possui suporte ao idioma e teclado Portugus, mas no inclui (at a verso 6.2) a documentao em Portugus. Eis a lista de idiomas suportados pela distribuio: English, Deutsch, Franais, Italiano, Espanhol, Portugus, Portugus Brasileiro, Polski, Cesky, Romanian, Slovensky, Indonsia. Sua instalao pode ser feita via CD-ROM ou CD-DVD ( a primeira distribuio com instalao atravs de DVD). Uma mdia de 1500 programas acompanham a verso 6.3 distribudos em 6 CD-ROMs. O sistema de gerenciamento de pacotes o RPM padronizado. A
16
seleo de pacotes durante a instalao pode ser feita atravs da seleo do perfil de mquina (developer, estao kde, grficos, estao gnome, servidor de rede, etc.) ou atravs da seleo individual de pacotes. A atualizao da distribuio pode ser feita atravs do verso ou baixando pacotes de ftp://ftp.suse.com/. ganham direito a suporte de instalao via e-mail. suporte tambm excelente e est disponvel na web independente de registro. ftp://ftp.suse.com/ - Ftp da distribuio SuSE. Red Hat http://www.redhat.com/ ftp://ftp.redhat.com/ CD-ROM de uma nova Usurios registrados A base de dados de para qualquer usurio
Software Livre
(traduo do texto Linux e o Sistema GNU de Richard Stallman obtido no site do CIPSGA: http://www.cipsga.org.br). O projeto GNU comeou h 12 anos atrs com o objetivo de desenvolver um sistema operacional Unix-like totalmente livre. Livre se refere liberdade, e no ao preo; significa que voc est livre para executar, distribuir, estudar, mudar e melhorar o software. Um sistema Unix-like consiste de muitos programas diferentes. Ns achamos alguns componentes j disponveis como softwares livres -- por exemplo, X Window e TeX. Obtemos outros componentes ajudando a convencer seus desenvolvedores a tornarem eles livres -- por exemplo, o Berkeley network utilities. Outros componentes ns escrevemos especificamente para o GNU -- por exemplo, GNU Emacs, o compilador GNU C, o GNU C library, Bash e Ghostscript. Os componentes desta ltima categoria so "software GNU". O sistema GNU consiste de todas as trs categorias reunidas. O projeto GNU no somente desenvolvimento e distribuio de alguns softwares livres teis. O corao do projeto GNU uma idia: que software deve ser livre, e que a liberdade do usurio vale a pena ser defendida. Se as pessoas tm liberdade mas no a apreciam conscientemente, no iro mant-la por muito tempo. Se queremos que a liberdade dure, precisamos chamar a ateno das pessoas para a liberdade que elas tm em programas livres. O mtodo do projeto GNU que programas livres e a idia da liberdade dos usurios ajudam-se mutuamente. Ns desenvolvemos software GNU, e conforme as pessoas encontrem programas GNU ou o sistema GNU e comecem a us-los, elas tambm pensam sobre a filosofia GNU. O software mostra que a idia
17
funciona na prtica. Algumas destas pessoas acabam concordando com a idia, e ento escrevem mais programas livres. Ento, o software carrega a idia, dissemina a idia e cresce da idia. Em 1992, ns encontramos ou criamos todos os componentes principais do sistema exceto o kernel, que ns estvamos escrevendo. (Este kernel consiste do microkernel Mach mais o GNU HURD. Atualmente ele est funcionando, mas no est preparado para os usurios. Uma verso alfa dever estar pronta em breve.) Ento o kernel do Linux tornou-se disponvel. Linux um kernel livre escrito por Linus Torvalds compatvel com o Unix. Ele no foi escrito para o projeto GNU, mas o Linux e o quase completo sistema GNU fizeram uma combinao til. Esta combinao disponibilizou todos os principais componentes de um sistema operacional compatvel com o Unix, e, com algum trabalho, as pessoas o tornaram um sistema funcional. Foi um sistema GNU variante, baseado no kernel do Linux. Ironicamente, a popularidade destes sistemas desmerece nosso mtodo de comunicar a idia GNU para as pessoas que usam GNU. Estes sistemas so praticamente iguais ao sistema GNU -- a principal diferena a escolha do kernel. Porm as pessoas normalmente os chamam de "sistemas Linux (Linux systems)". A primeira impresso que se tem a de que um "sistema Linux" soa como algo completamente diferente de "sistema GNU", e isto que a maioria dos usurios pensam que acontece. A maioria das introdues para o "sistema Linux" reconhece o papel desempenhado pelos componentes de software GNU. Mas elas no dizem que o sistema como um todo uma variante do sistema GNU que o projeto GNU vem compondo por uma dcada. Elas no dizem que o objetivo de um sistema Unixlike livre como este veio do projeto GNU. Da a maioria dos usurios no saber estas coisas. Como os seres humanos tendem a corrigir as suas primeiras impresses menos do que as informaes subseqentes tentam dizer-lhes, estes usurios que depois aprendem sobre a relao entre estes sistemas e o projeto GNU ainda geralmente o subestima. Isto faz com que muitos usurios se identifiquem como uma comunidade separada de "usurios de Linux", distinta da comunidade de usurios GNU. Eles usam todos os softwares GNU; de fato, eles usam quase todo o sistema GNU; mas eles no pensam neles como usurios GNU, e freqentemente no pensam que a filosofia GNU est relacionada a eles. Isto leva a outros problemas tambm -- mesmo dificultando cooperao com a manuteno de programas. Normalmente quando usurios mudam um programa GNU para fazer ele funcionar melhor em um sistema especfico, eles mandam a mudana para o mantenedor do programa; ento eles trabalham com o mantenedor explicando a mudana, perguntando por ela, e s vezes reescrevendo-a para manter a coerncia e mantenebilidade do pacote, para ter o patch instalado.
18
Mas as pessoas que pensam nelas como "usurios Linux" tendem a lanar uma verso "Linux-only" do programa GNU, e consideram o trabalho terminado. Ns queremos cada e todos os programas GNU que funcionem "out of the box" em sistemas baseados em Linux; mas se os usurios no ajudarem, este objetivo se torna muito mais difcil de atingir. Como deve o projeto GNU lidar com este problema? O que ns devemos fazer agora para disseminar a idia de que a liberdade para os usurios de computador importante? Ns devemos continuar a falar sobre a liberdade de compartilhar e modificar software -- e ensinar outros usurios o valor destas liberdades. Se ns nos beneficiamos por ter um sistema operacional livre, faz sentido para ns pensar em preservar estas liberdades por um longo tempo. Se ns nos beneficiamos por ter uma variedade de software livres, faz sentido pensar sobre encorajar outras pessoas a escrever mais software livre, em vez de software proprietrio. Ns no devemos aceitar a idia de duas comunidades separadas para GNU e Linux. Ao contrrio, devemos disseminar o entendimento de que "sistemas Linux" so variantes do sistema GNU, e que os usurios destes sistemas so tanto usurios GNU como usurios Linux (usurios do kernel do Linux). Usurios que tm conhecimento disto iro naturalmente dar uma olhada na filosofia GNU que fez estes sistemas existirem. Eu escrevi este artigo como um meio de fazer isto. Outra maneira usar os termos "sistema GNU baseado em Linux (Linux-based GNU system)" ou "sistema GNU/Linux (GNU/Linux system)", em vez de "sistema Linux", quando voc escreve sobre ou menciona este sistema.
19
Figura 1.0
Na figura 1.0, estaremos efetuando a instalao do Sistema Operacional GNU/Debian Linux 3.0 r2. Existem muitas imagens de instalao do GNU/Debian Linux. Caso deseje listar as imgens, pressione a tecla <F3>. Estaremos utilizando a imagen bf24, utilizada para instalar o GNU/Debian Linux com o kernel 2.4.
20
Figura 1.1
Na figura 1.1, estaremos selecionando nosso idioma para a instalao do Sistema Operacional GNU/Debian Linux 3.0 r2. Conforme descrito na figura 1.0, estaremos selecionando a opo pt, ou seja, Portugus.
21
Figura 1.2
Na figura 1.2, estaremos selecionando nosso idioma e teclado para a instalao do Sistema Operacional GNU/Debian Linux 3.0 r2. Conforme descrito na figura 1.1, estaremos selecionando a opo Brasileiro (teclado padro ABNT2). Para quem possui teclado Americano Internacional, escolha a opo Brasileiro (teclado padro EUA).
22
Figura 1.3
Na figura 1.3 nos fornece algumas informaes sobre o Sistema Operacional GNU/Debian Linux. Podemos seguir adiante...
23
Figura 1.4
Na figura 1.4, podemos reconfigurar nosso teclado novamente ou particionar o disco rgido, estaremos reconfigurando nosso teclado para Brasileiro padro ABNT2.
24
Figura 1.5
Na figura 1.5, estaremos selecionando nosso teclado qwerty/br-abnt2 : Brasileiro (layout ABNT2).
25
Figura 1.6
Na figura 1.6, estaremos particionando nosso disco rgido, onde iremos separar parties para a instalao do GNU/Debian Linux.
26
Figura 1.7
Na figura 1.7, estaremos selecionando o disco no qual estaremos particionando o disco rgido e efetuando a instalao do Linux. Nesta etapa temos que tomar muito cuidado para no selecionar o disco errado, caso tenhamos mais de um. Estaremos efetuando a instalao no disco /dev/hdb, que o nosso segundo disco, conforme descrito abaixo:
Dispositivo /dev/hda /dev/hdb /dev/hdc /dev/hdd Descrio IDE Master Primrio IDE Master Secundrio IDE Slave Primrio IDE Slave Secundrio Dispositivo /dev/sda /dev/sdb /dev/sdc /dev/sdd ... Descrio 1 unidade SCSI 2 unidade SCSI 3 unidade SCSI 4 unidade SCSI ...
27
Figura 1.8
Na figura 1.8, fornece informaes muito importantes sobre a MBR (Master Boot Records), onde e como deve ser gravado o boot de nosso Sistema Operacional. Leia atentamente as informaes da figura 1.7, pois se estivermos efetuando uma instalao do GNU/Debian Linux ou qualquer outra distribuio em uma mquina antiga, devemos gravar o boot do Sistema Operacional nos primeiros 1024 cilindros.
28
Figura 1.9
29
Figura 2.0
Na figura 2.0, estaremos efetuando o particionamento de nosso disco rgido. Nesta etapa temos que tomar muito cuidado para no apagar as parties que j existem em nosso sistema. Criamos 3 parties para a instalao de nosso sistema GNU/Linux Debian, sendo elas:
Dispositivo hdb11 hdb12 hdb13 Tipo da Partio 83 Linux 82 Linux Swap 83 Linux Tamanho 24Mb 256Mb 3072Mb Descrio Partio de boot Partio de troca Partio raz
30
Figura 2.1
Na figura 2.1, aps ter gravado a tabela de particionamento, iremos sair do aplicativo cfdisk, utilizado para particionar o disco rgido.
31
Figura 2.2
Na figura 2.2, iremos inicializar uma partio Swap. O GNU/Debian Linux detecta automaticamente a partio Swap.
32
Figura 2.3
Na figura 2.3, temos a opo de checar blocos defeituosos no disco. Apesar de ser uma tarefa demorada, recomendado checar blocos defeituosos em discos novos, pois os mesmos nunca foram utilizados no sabemos se existe erros.
33
Figura 2.4
Na figura 2.4, ser formatado o dispositivo /dev/hdb12 e ser utilizado o sistema de arquivos Linux Swap, portanto, todos os dados existentes no dispositivo sero apagados.
34
Figura 2.5
Na figura 2.5, iremos inicializar outro dispositivo, pois at agora s configuramos a Partio Swap. O prximo dispositivo a ser selecionado, ser a partio raz ( / ) do Sistema Operacional GNU/Debian Linux, portanto se voc deseja criar parties separadas para alguns diretrios (ex.: /home /var /tmp /boot), no se esquea que a prxima partio a ser inicializada aps a Swap a Raz ( / ), onde ficaro os demais diretrios.
35
Figura 2.6
Na figura 2.6, iremos escolher o sistema de arquivos para o dispositivo a ser selecionado. Iremos utilizar o sistema de arquivos ext3, que possui um recurso muito importanto chamado Kjournal File System, onde obtemos maior segurana em eventuais queda de energia.
36
Figura 2.7
Na figura 2.7, iremos selecionar o dispositivo /dev/hda13 para ser a raz so sistema.
37
Figura 2.8
Na figura 2.8, temos a opo de checar blocos defeituosos no disco. Apesar de ser uma tarefa demorada, recomendado checar blocos defeituosos em discos novos, pois os mesmos nunca foram utilizados no sabemos se existe erros.
38
Figura 2.9
Na figura 2.9, ser formatado o dispositivo /dev/hdb13, portanto, todos os dados existentes no dispositivo sero apagados.
39
Figura 3.0
Na figura 3.0, est sendo criado o sistema de arquivos ext3 no dispositivo /dev/hdb13.
40
Figura 3.1
Na figura 3.1, iremos montar o dispositivo /dev/hdb13 como raz ( / ) do sistema. Ser abaixo do / onde estaro os demais diretrios do GNU/Linux, tais como: /boot, /var, /home, /etc, /usr, /tmp, /lib , etc...
41
Figura 3.2
Na figura 3.2, iremos inicializar outro dispositivo, pois at agora s configuramos a Partio Swap e o / , que o suficiente para instalar o GNU/Linux, portanto, iremos tambm configurar um dispositivo s para os arquivos de inicializao do GNU/Linux. O prximo dispositivo a ser selecionado, ser a partio de boot ( /boot ) do Sistema Operacional GNU/Debian Linux.
42
Figura 3.3
Na figura 3.3, iremos escolher o sistema de arquivos para o dispositivo a ser selecionado. Iremos utilizar o sistema de arquivos ext3, que possui um recurso muito importanto chamado Kjournal File System, onde obtemos maior segurana em eventuais queda de energia.
43
Figura 3.4
Na figura 3.4, temos a opo de checar blocos defeituosos no disco. Apesar de ser uma tarefa demorada, recomendado checar blocos defeituosos em discos novos, pois os mesmos nunca foram utilizados no sabemos se existe erros.
44
Figura 3.5
Na figura 3.5, ser formatado o dispositivo /dev/hdb11, portanto, todos os dados existentes no dispositivo sero apagados.
45
Figura 3.6
Na figura 3.6, est sendo criado o sistema de arquivos ext3 no dispositivo /dev/hdb11.
46
Figura 3.7
Na figura 3.7, iremos montar o dispositivo /dev/hdb11 como boot ( /boot ) do sistema. Ser abaixo do /boot onde estaro os arquivos de inicializao do GNU/Linux.
47
Figura 3.8
Na figura 3.8, iremos instalar o kernel e os mdulos para que possamos dar inicio a instalao do GNU/Debian Linux
48
Figura 3.9
Na figura 3.9, iremos instalar GNU/Debian Linux atravs do CDROM, pois o mesmo tambm pode ser instalado atravs de NFS, WWW ou FTP.
49
Figura 4.0
Na figura 4.0, iremos configurar os mdulos dos dipositivos de nosso servidor, ex: placa de rede, som, vdeo, etc... Esta etapa muito importante caso desejamos carregar algum mdulo em especfico para sua utilizao no decorrer da instalao. Em muitos casos, o GNU/Debian Linux pode detectar alguns dipositivos de nosso sistema, como placa de rede.
50
Figura 4.1
Na figura 4.1, exibe informaes de que alguns mdulos j esto embutidos no kernel, ex: sistema de arquivos, cdrom, floppy, etc...
51
Figura 4.2
Na figura 4.2, exibe os mdulos que podem ser carregados na instalao do GNU/Debian Linux. Caso deseje carregar algum mdulo, basta selecion-lo no menu desejado. Nesta estapa no estaremos adicionando nenhum mdulo. Os mdulos que adicionarmos nesta etapa, sero carregados toda vez que inicializarmos nosso servidor, portanto, no se preocupe, pois os mdulos podem ser adicionados aps a instalao de nosso sistema.
52
Figura 4.3
Na figura 4.3, o GNU/Debian Linux detectou nossa placa de rede e estaremos configurando a mesma no decorrer da instalao. Tambm temos a opo de continuar a instalao do sistema sem configurar nossa placa de rede, bastando apenas escolher a opo Instalar o Sistema Bsico.
53
Figura 4.4
Na figura 4.4, estaremos configurando o hostname de nosso computador, ou seja, o nome de nosso servidor. muito importante o nome de nosso servidor, pois ele ser uma identificao em nossa rede e caso o mesmo esteja na Internet, ser um alvo. Por que um alvo ? Imagine que voc possui um servidor de email em sua empresa chamado mail.freesoftware.org.br. O nome mail chama muita ateno e o ideal seria colocar algum outro nome que no associa-se com email, como: smeagol, golum, ferrari, lamborguini, beta, alpha, etc...
54
Figura 4.5
Na figura 4.5, estaremos efetuando a configurao de rede de nosso servidor. Caso deseje configurar seu servidor com um IP dinmico, basta apenas selecionar a opo <SIM>, conforme decrito na figura 4.5, portanto, em um servidor, no colocamos um IP dinmico. Em servidores a melhor forma de evitar aborrecimentos, configur-lo com IP esttico, ou seja, mais conhecido como IP fixo.
55
Figura 4.6
Na figura 4.6, iremos atribuir um IP para nosso servidor. OBS: Caso esteja configurando um servidor ou uma estao de trabalho que no estaro na Internet, ou o servidor tem que obrigatoriamente estar em sua rede interna, utilize sempre IP's que no so roteveis para na Internet, ou seja, IP's invlidos, conforme tabela abaixo:
Veja RFC 1597
Utilizando IP's invlidos em sua rede, voc evita um sria de problemas, tais como: lentido, coliso, perda de pacotes, etc...
56
Figura 4.7
Na figura 4.7, iremos atribuir a mascar de rede para nosso IP. Veja figura 4.6.1 caso esteja utilizando um endereo invlido e que no seja subnetado ou supernetado.
57
Figura 4.8
Na figura 4.8, iremos atribuir um Gateway para nosso servidor. Um Gateway ou um roteador so utilizados para fazer repasses de pacotes para uma outra rede ou para a Internet.
58
Figura 4.9
59
Figura 5.0
Na figura 5.0, iremos atribuir um servidor de nomes para nosso servidor. O servidor de nomes, mais conhecido como DNS (Domain Name Server), utilizado na resoluo de nomes na Internet, ou seja, tranforma nomes em IP's. Voc j imaginou se todo o site que voc desejasse acessar, voc teria que colocar o IP do mesmo em seu navegador. Por isso existem os servidores de nomes que tranforme o site www.freesoftware.org.br em IP 200.155.x.x.
60
Figura 5.1
61
Figura 5.2
Na figura 5.2, exibe o status da instalao do GNU/Debian Linux. Um tem interessante que a instalao do GNU/Debian rpido, pois ele instala o mnimo essencial para seu funcionamento perfeito.
62
Figura 5.3
Na figura 5.3, estaremos configurando o gerenciador de boot de nosso servidor. Um gerenciador de boot utilizado para inicializar um determinado sistema operacional. Caso tenhamos mais de um sistema operacional em nosso servidor, quem nos fornecer a opo de qual sistema inicializar o gerenciador de boot.
63
Figura 5.4
Na figura 5.4, estaremos instalando o gerenciador de boot na MBR (Master Boot Records). Temos tambm a opo de instalar o boot no disco para voc deseje utilizar um outro gerenciador de boot. Estaremos utilizando o LILO como gerenciador de boot.
64
Figura 5.5
Na figura 5.5, exibe informaes importantes sobre o gerenciador de boot, de como torn-lo mais seguro. Aps a instalao voc pode editar o arquivo de configurao de boot (/etc/lilo.conf) do sistema e adicionar as seguintes linha para torn-lo mais seguro: restricted password=senha Aps setar estas configuraes no LILO, digite lilo para validar as alteraes.
65
Figura 5.6
Na figura 5.6, iremos reiniciar o sistema, pois a instalao foi finalizada. Temos tambm a opo Criar um Disquete de Partida, que utilizado para inicializar o GNU/Debian Linux caso ocorra algum problema no gerenciador de boot do sistema. Quando instalamos o sistema operacional GNU/Linux e em seguida o Windows, o gerenciador de boot do Windows sobrepe o gerenciador de boot do GNU/Linux, e ento, no conseguimos inicializar o Linux, a no ser que tenhamos o Disquete de Partida ou um Rescue Disk.
66
Figura 5.7
Na figura 5.7, iremos reiniciar o sistema. No se esquea de remover a mdia do leitor de CD.
67
Listar os pacotes instalados no sistema, filtrando pelo nome: # dpkg -l | grep <nome>
Opo: L minsculo
Listar os pacotes instalados no sistema, que comeam com c: # dpkg -l | awk '{print $2}' | grep ^c
Opo: L minsculo
Qual pacote instalou determinado aplicativo: # dpkg -S <aplicativo> # dpkg -S /bin/ls Onde esto instalados os arquivos do pacote fileutils: # dpkg -L fileutils Onde sero instalados os arquivos de um determiando pacote:
68
# dpkg -c <pacote.deb> Instalar um pacote no sistema atravs do dpkg: # dpkg -i <pacote.deb> Remover um pacote no sistema atravs do dpkg: # dpkg -r <pacote> Remover um pacote no sistema atravs do dpkg e excluir todos seus arquivos: # dpkg --purge <pacote> Remover um pacote no sistema brutalmente atravs do dpkg: # dpkg --purge --force-all <pacote>
APT
O apt uma ferramenta til para consulta, instalao e remoo de pacotes no sistema. Atravs do apt, conseguimos instalar um pacote e caso o mesmo apresente alguma dependncia, o apt se encarrega de instalar a mesma. Tambm possvel manter o sistema atualizado de uma forma bastante simples e segura, pois os pacotes atualizados foram baixados do mirror security.debian.org, onde contm todos os pacotes que devem ser atualizados. Normalmente, quando surge uma vulnerabilidade de algum aplicativo, a equipe de desenvolvimento do Debian se encarrega de corrigir o aplicativo bugado, e aps efetuar todos os testes, disponibiliza uma nova verso do aplicativo corrigido. Podemos utilizar o apt para manipular pacotes atravs de http, ftp, filesystem ou do prprio CD. Configurando o apt: # apt-setup
69
Localizando um determinado aplicativo: # apt-cache search <aplicativo> Instalando um determinado aplicativo: # apt-get install <aplicativo> Reinstalando um determinado aplicativo: # apt-get install <aplicativo> --reinstall Removendo um aplicativo do sistema: # apt-get remove <aplicativo> Compilando um determinado aplicativo para gerar um pacote.deb: # apt-get source <aplicativo> --compile Atualizando a lista de aplicativos dos mirrors configurados: # apt-get update Atualizando o sistema: # apt-get upgrade # apt-get dist-upgrade Arquivo de configurao dos mirrors:
70
# vi /etc/apt/sources.list
# CDROM deb cdrom:[Debian GNU/Linux 3.0 r2 _Woody_ - Official i386 Binary-1 (20031201)]/ unstable contrib main non-US/contrib non-US/main # Mirrors da Debian deb http://ftp.us.debian.org/debian/ stable main non-free contrib deb-src http://ftp.us.debian.org/debian/ stable main non-free contrib # Mirror do site de segurana da Debian deb http://security.debian.org/ stable/updates main contrib non-free
OBS.: Aps ter efetuado a instalao de um aplicativo atravs do apt, seus pacotes, que esto localizados no diretrio /var/cache/apt/archives/, podem ser apagados. Tambm possvel migrar os pacotes de padro RPM (RedHat Package Manager) para o Debian, utilizando o aplicativo alien. O nome alien foi uma excelente escolha, pois imaginem vocs migrando um pacote de padro RPM para Debian (.deb). Com certeza o pacote.deb gerado pode ter se tornado um pacote de outro mundo, totalmente incomptivel com o Debian. Deixo aqui meus parbens ao criadores do nome alien. Marcio Garcia
71
Redes
Iremos agora nos adaptar aos arquivos de configurao de rede do Debian, que diferente das outras distribuies. Arquivo de configurao de rede e gateway: # vi /etc/network/interfaces
# Interface Loopback e Ethernet auto lo eth0 # Configurao da interface Loopback iface lo inet loopback # Configurao da Interface Ethernet iface eth0 inet static address 192.168.100.1 netmask 255.255.255.0 gateway 192.168.100.1
Iniciando o servio de rede: # /etc/init.d/networking stop # /etc/init.d/networking start Checklist das configuraes de rede do servidor: # ifconfig # route -n # hostname # hostname -d # ping instrutor # ping instrutor.freesoftware.org.br
Interfaces de rede do servidor eth0 e lo Tabela de rotas do servidor Nome da servidor Domnio do servidor IP Ethernet tem que responder IP Ethernet tem que responder
Obs: Esta etapa muito importante para o funcionamento correto de nosso servidor.
73
Instalando o mozilla (browser, https e email): # apt-get install mozilla mozilla-psm mozilla-mailnews Instalando o vim: # apt-get install vim # vi /root/.vimrc
:syntax on
Obs: Ao editar os arquivos de configurao com o vi, os parmetros iro ficar coloridos.
74
# dpkg-reconfigure locales
75
# dpkg-reconfigure console-data
76
localizaes. O DNS fornece inteligncia aos servidores de nomes para que eles possam navegar pelo banco de dados e achar os dados em qualquer zona. Quando falamos sobre DNS, iremos no concentrar exclusivamente no BIND (Berkeley Internet Name Domain), que a implementao das especificaes do DNS.
Manter a consistncia do arquivo em uma rede em expano tornouse cada vez mais difcil. Quando um novo HOSTS.TXT atingia os mais distantes lugares da expandida ARPAnet, um host de rede alterava endereos ou surgia um novo host que os usurios queriam atingir. O problema maior era que o mecanismo do HOSTS.TXT no dimensionava bem. Ironicamente, o sucesso da ARPAnet como um experimento levou o HOSTS.TXT ao fracasso e absolescncia. A direo da ARPAnet contratou pesquisadores para criar um sucessor para o HOSTS.TXT. A meta era criar um sistema que solucionasse os problemas inerente a um sistema de tabelas de hosts unificados. O novo sistema deveria permitir a administrao local de dados, e ainda disponibilizar os dados globalmente. A descentralizao da administrao eliminaria o gargalo de um host nico e liberaria o problema do trfego. E o gerenciamento local realizaria a tarefa de manter os dados atualizados com mais facilidade. O novo sistema deveria usar um espao de nomes hierrquico para nomear hosts, garantindo assim a singularidade dos nomes. Paul Mockapetris, do Instituto de Cincia da Informao da Universidade de Colmbia, era o responsvel pelo projeto de arquitetura do novo sistema. Em 1984, ele liberou as RFC's 882 e 883, que descreviam o Domain Name Server. Essas RFC's foram suplantadas pela RFC's 1034 e 1035, as especificaes atuais do DNS. Agora as RFC's 1034 e 1035 foram expandidas por muitas outras RFC's, descrevendo potenciais problemas de segurana, implementao e administrao com o DNS, e descrevendo mecanismos para atualizao dinmica de servidores de nomes e a segurana de dados de zonas, e muito mais. Em poucas palavras o DNS um banco de dados distribudo. Isso permite um controle local dos segmentos do banco de dados global, embora os dados em cada segmento estejam disponveis em toda a rede atravs de um esquema cliente-servidor. Desempenhos resistentes e adequados so adquiridos por meio de reproduo e cache.
A Histria do BIND
A primeira implementao do DNS foi chamada JEEVES, escrita pelo prprio Paul Mockapetris. A implementao seguinte foi o BIND, um acrnimo de Berkeley Internet Domain, escrita para o sistema operacional do Unix BSD 4.3 de Berkeley por Kevin Dunlap. O BIND hoje mantido pelo Internet Software Consortium. Maiores informaes sobre o Internet Software Consortium e seu trabalho com o BIND, pode ser obtida atravs do site: https://www.isc.org/bind.html
79
Instalao do BIND
# apt-get install bind9
Configurao do BIND
# vi /etc/bind/named.conf
options { directory "/var/cache/bind"; allow-transfer { 192.168.100.1; 192.168.100.2; }; auth-nxdomain no; }; zone "." { type hint; file "/etc/bind/db.root"; }; zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; }; zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; }; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; }; include "primary/freesoftware.conf";
80
# vi /var/cache/bind/primary/freesoftware.conf
zone "freesoftware.org.br" IN { type master; file "zone/db.freesoftware"; }; zone "100.168.192.in-addr.arpa" IN { type master; file "zone/rev.freesoftware"; };
# vi /var/cache/bind/zone/db.freesoftware
$TTL @ 3600 IN SOA freesoftware.org.br. root.freesoftware.org.br. ( 2004200500 3H 15M 1W 1D ) @ freesoftware.org.br. mail webmail @ instrutor IN IN IN IN IN IN NS A A A MX 5 A ; Serial ; Refresh ; Retry ; Expire ; Negative Cache TTL freesoftware.org.br. 192.168.100.1 192.168.100.1 192.168.100.1 mail.freesoftware.org.br. 192.168.100.1
# vi /var/cache/bind/zone/rev.freesoftware
$TTL @ 3600 IN SOA freesoftware.org.br. root.freesoftware.org.br. ( 2004200500 ; Serial 3H ; Refresh
81
# vi /var/cache/bind/zone/rev.freesoftware
15M ; Retry 1W ; Expire 1D ) ; Negative Cache TTL @ 1.100.168.192.in-addr.arpa. 1.100.168.192.in-addr.arpa. 1.100.168.192.in-addr.arpa. IN IN IN IN NS PTR PTR PTR freesoftware.org.br. freesoftware.org.br. mail.freesoftware.org.br. webmail.freesoftware.org.br.
# vi /etc/resolv.conf
search freesoftware.org.br nameserver 192.168.100.1
Testando o BIND
# ping freesoftware.org.br # ping mail.freesoftware.org.br # ping webmail.freesoftware.org.br # ping instrutor.freesoftware.org.br # ping -R 192.168.100.1
82
daemontools
O que ?
O daemontools uma coleo de ferramentas para controlar servios do UNIX (UNIX Like). O supervise que um aplicativo do daemontools, monitora um servio. Ele inicia um servio e reinicia o servio se o mesmo parar. Configurar um novo servio fcil: todo supervise precisa de um diretrio com um script executvel executando o servio. O multilog (aplicativo do daemontools) salva as mensagens de erro para um ou mais logs, logando o data e hora de cada log e de cada linha. Automaticamente executa o rotate dos logs para diminu-los e aumentar o espao em disco. Se o disco estiver cheio, ele pausa e tenta novamente, sem perder qualquer dado.
O programa svscanboot
O aplicativo svscanboot carregado durante a inicializao do sistema. O svscanboot faz uma chamada para o svscan no diretrio /service, onde esto os scripts de inicializao, onde todas as mensagens de erros so logadas atravs do readproctitle. Caso algum script de inicializao esteja com erro, ou lincada de forma errada, as mensagens de erros sero exibidas atravs do readproctitle. O svscanboot est disponvel a partir da verso 0.75 do daemontools.
Interface
svscanboot
com 400 pontos. Os ltimos 400 bytes de mensagens de erro do svscan ser visvel para o comando ps atravs do readproctitle. svscanboot seta o $PATH para
/command:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
e limpa todas as outras variveis de ambiente. Os escritores dos programas so encorajados a usar globalmente os nomes alocados no /command.
O programa svscan
svscan inicia e monitora uma coleo de servios.
83
Interface
svscan inicia um processo supervise para cada subdiretrio do diretrio corrente, com um limite de 1000 subdiretrios. svscan pula os nomes dos subdiretrios que iniciam com pontos. supervise deve estar no path do svscan. svscan opcionalmente inicia um par de processos supervise, um para o subdiretrio, outro para o log do subdiretrio, com um pipe entre eles. svscan precisa de duas descries livres para cada pipe. De 5 em 5 segundos, svscan checa pelo subdiretrio novamente. Se ele ver um novo subdiretrio, ele starta um novo processo supervise. Se ele ver um subdiretrio antigo onde um processo supervise foi finalizado, ele reinicia o processo supervise. No registro do log ele reusa os mesmos pipe ento nenhum dado perdido. svscan designado para executar para sempre. Se tiver problemas em criar um pipe ou executar o supervise, ele printa uma mensagem para stderr, que pode ser visualizada atravs do comando ps ou atravs dos logs do multilog; Ir tentar novamente depois de 5 segundos. Se passado para o svscan um argumento de linha, ele troca para aquele diretrio quando iniciado.
O programa supervise
supervise starta e monitora um servio.
Interface
supervise s
supervise vai para o diretrio com o nome s e inicia o ./run. Ele reinicia ./run se ./run existir. Ele pausa por um segundo e em seguida inicia o ./run, de modo que no d loops demasiamente se o ./run finalizar imediatamente. Se o arquivo s/down existir, supervise no inicia o ./run imediatamente. Voc pode usar o svc para iniciar o ./run e fornecer outros comandos para o supervise. supervise mantm informaes sobre o status em um formato binrio dentro do diretrio s/supervise, no qual deve ter escrita para o supervise. As informaes sobre o status podem ser lidas pelo svstat. supervise pode sair imediatamente e em seguida inici-lo se ele no encontrar os arquivos que ele precisa no diretrio s ou se outra cpia do supervise j est em execuo no diretrio s. Uma vez que o supervise esteja executando com sucesso, ele no ir encerrar ao menos que ele seja morto ou questionado a sair. Voc pode usar o svok para checar se o supervise est executando com sucesso. Voc pode usar o svscan para startar confiantemente uma coleo de
84
processos do supervise.
O programa svc
O programa svc controla os servios monitorados pelo supervise.
Interface
svc opts services
opts uma srie de opes getopt-style. services consiste no nmero de argumentos, cada argumento chamando um diretrio usado pelo supervise. svc aplica-se em todas as opes de cada servio por sua vez. Aqui esto as
Opes
-u: Up. If the service is not running, start it. If the service stops, restart it. -d: Down. If the service is running, send it a TERM signal and then a CONT signal. After it stops, do not restart it. -o: Once. If the service is not running, start it. Do not restart it if it stops. -p: Pause. Send the service a STOP signal. -c: Continue. Send the service a CONT signal. -h: Hangup. Send the service a HUP signal. -a: Alarm. Send the service an ALRM signal. -i: Interrupt. Send the service an INT signal. -t: Terminate. Send the service a TERM signal. -k: Kill. Send the service a KILL signal. -x: Exit. supervise will exit as soon as the service is down. If you use this option on a stable system, you're doing something wrong; supervise is designed to run forever.
O programa svok
svok checa se o supervise est em execuo.
Interface
svok service
svok checa se o supervise est executando com sucesso no diretrio chamado /service. Retorna 0 se o supervise est executando com sucesso e retorna 100 se o supervise no est executando com sucesso.
85
O programa svstat
svstat printa o status do servio monitorado supervise.
Interface
svstat services
services consiste em no nmero de argumentos, cada argumento chamando um diretrio. svstat printa uma linha legvel para cada diretrio, dizendo se o servio est executando com sucesso naquele diretrio, e reporta informaes do status mantido pelo supervise.
O programa readproctitle
readproctitle mantm um log automtico rotacional na memria para inspeo pelo comando ps. readproctitle est disponvel a partir da verso 0.75 do daemontools.
Interface
readproctitle L D
L consiste no nmero de argumentos. D um argumento que consiste pelo menos em 5 pontos. readproctitle l os dados no fim de D, deslocando D para a esquerda. Isto significa que os mais recentes dados so visveis a listas de ferramentas de processos como o comando ps. readproctitle sempre deixa trs pontos na esquerda de D. Por exemplo, se
readproctitle io errors: ....................
l os dados
fatal error xyz warning abc
com um carcter da nova linha no final de cada !. As ferramentas de listagem de processos tipicamente exibe o carcter da nova linha como ? ou \n.
86
O programa multilog
multilog l a sequncia de linhas de stdin e apenda as linhas selecionadas para os logs.
Interface
multilog script
script consiste no nmero de argumentos. Cada argumento especifca uma ao. As aes so realizadas para cada linha de entrada. Note que as aes devem conter shell metacaracteres que precisam ser citados quando o multilog est executando de um shell. multilog retorna 0 quando ele v o final do stdin. Se stdin tem uma linha parcial no final ento o multilog insere uma nova linha no final.
Timestamping
A ao
t
insere um @, um timestamp preciso, e um espao na frente de cada linha. Isto requerido para ser a primeira ao. Os testes padres aplicam-se linha depois que o timestamp introduzido, por exemplo, se
multilog t '-*' '+* fatal: *' ./main
l a linha
fatal: out of memory
com o primeiro * combinando o timestamp. Voc pode usar o tai64nlocal para converter estes timestamps em um formato legvel.
.u: Este arquivo pode ter sido truncado. Ele no foi processado.
Quando o multilog est executando, o arquivo current tem permisso 644. Quando o multilog grava o arquivo current no disco, ele seta o current para 744. Quando ele reinicia, ele retorna o valor do current para 644 e continua gravando novas linhas. Quando o multilog decide que o arquivo current est bastante grande, ele grava o current seguramente no disco, seta a permisso do current para 744, e renomeia o current para um arquivo de log antigo. A ao
ssize
seta o tamanho mximo do arquivo. O multilog ir decidir se o current est grande o bastante e est com tamanho de size bytes. size deve ter entre 4096 e 16777215. O tamanho mximo default do arquivo e 99999. A ao
nnum
Seta o nmero de arquivos de logs. O nmero default de logs 10. Ento, podemos atribuir em nosso script de inicializao, quantos logs sero criados pelo multilog e qual ser o seu tamanho.
O programa setuidgid
setuidgid executa outro programa sob o uid e o gid de um cliente especificado.
Interface
setuidgid account child
account um simples argumento. child consiste em um ou mais argumentos. setuidgid ajusta seu uid e gid ao uid e gid do cliente, removendo todos os suplementares. E ento executa o child. setuidgid retorna 111 se ele no puder encontrar uma conta UNIX chamada account, ou se ele no puder setar o gid, ou se ele no puder setar o uid, ou se ele no puder executar o child. Seno seu cdigo de sada o mesmo que do child. setuidgid no pode ser executado por qualquer um quanto ao root.
88
O programa softlimit
softlimit executa outro programa com novos limites de recursos.
Interface
softlimit opts child
opts uma srie de opes getopt-style. child consiste em um ou mais argumentos. softlimit seta recursos de limites como especificado pelo opts. Eles ento so executados pelo child.
Opes
Opes de controle de memria:
-m n: Same as -d n -s n -l n -a n. -d n: Limit the data segment per process to n bytes. -s n: Limit the stack segment per process to n bytes. -l n: Limit the locked physical pages per process to n bytes. This option has no effect on some operating systems. -a n: Limit the total of all segments per process to n bytes. This option has no effect on some operating systems. -o n: Limit the number of open file descriptors per process to n. This option has no effect on some operating systems. -p n: Limit the process number per uid to n. Opes controlando o tamanho dos arquivos: -f n: Limit output file sizes to n bytes. -c n: Limit core file sizes to n bytes. Opes eficientes: -r n: Limit the resident set size to n bytes. This limit is not enforced unless physical memory is full. -t n: Limit the CPU time to n seconds. This limit is not enforced except that the process receives a SIGXCPU signal after n seconds.
89
ucspi-tcp
O que ?
tcpserver e tcpclient so ferramentas de comandos de linha fceis de usar para construir aplicaes TCP Cliente/Servidor. tcpserver aguarda por conexes entrantes e, para cada conexo, executa um programa de sua escolha. Seu programa recebe as variveis de ambiente que mostram os nomes dos hosts locais e remotos, endereo IP e os nmeros das portas. O tcpserver oferece um limite de conexes simultneas para proteg-lo de processos fora de execuo e memria. Quando o tcpserver est segurando 40 conexes simultneas (por default), ele ada a aceitao de novas conexes. O tcpserver tambm oferece caracterstica de controle de acesso TCP, similares a tcp-wrappers/tcp's hosts.allow s que muito mais rpido. Seus controles de acesso so compilados dentro de um arquivo no formato hash com cdb, podendo tratar fcilmente de milhares de hosts diferentes, ou seja, quem pode fazer relay, etc... Este pacote inclui uma ferramenta chamada recordio que monitora toda entrada e sada de um servidor. O tcpclient faz uma conexo TCP e executa um programa de sua escolha. Ele configura as mesmas variveis de ambiente que o tcpserver. O UCSPI-TCP est disponvel para diferente tipos de redes.
inetd; xinetd, uma evoluo do inetd; o cliente mconnect fornecido como parte do SunOS; O programa socket; faucet e hose, parte do pacote netpipes; O programa netcat, que tambm suporta UDP.
O programa tcpserver
O tcpserver aceita conexes TCP entrantes.
Interface
tcpserver opts host port prog
opts uma srie de opes que podem ser utilizadas. host um argumento. port um argumento. prog consiste em um ou mais argumentos. tcpserver aguarda por conexes TCP de clientes. Para cada conexo, ele
90
executa o prog, com descrio 0 lendo da rede e descrio 1 gravando da rede. Tambm configura diferentes variveis de ambiente. O endereo do servidor fornecido por host e port. port pode ser um nome ou um nmero do arquivo /etc/services; se est 0, o tcpserver ir escolher uma porta TCP livre. host deve ser 0, permitindo conexes de endereos IP de qualquer lugar; ou um endereo IP decimal com pontos, permitindo conexes somente daquele endereo; ou um nome de host, permitindo conexes para o primeiro endereo IP daquele host. O tcpserver encerra sua execuo quando recebe um SIGTERM.
Opes
Opes gerais:
-q: Quiet. Do not print error messages. -Q: (Default.) Print error messages. -v: Verbose. Print error messages and status messages. Opes de conexes: -c n: Do not handle more than n simultaneous connections. If there are n simultaneous copies of prog running, defer acceptance of a new connection until one copy finishes. n must be a positive integer. Default: 40. -x cdb: Follow the rules compiled into cdb by tcprules. These rules may specify setting environment variables or rejecting connections from bad sources. You can rerun tcprules to change the rules while tcpserver is running. -X: With -x cdb, allow connections even if cdb does not exist. Normally tcpserver will drop the connection if cdb does not exist. -B banner: Write banner to the network immediately after each connection is made. tcpserver writes banner before looking up $TCPREMOTEHOST, before looking up $TCPREMOTEINFO, and before checking cdb. This feature can be used to reduce latency in protocols where the client waits for a greeting from the server. -g gid: Switch group ID to gid after preparing to receive connections. gid must be a positive integer. -u uid: Switch user ID to uid after preparing to receive connections. uid must be a positive integer. -U: Same as -g $GID -u $UID. Typically $GID and $UID are set by envuidgid. -1: After preparing to receive connections, print the local port number to standard output. -b n: Allow a backlog of approximately n TCP SYNs. On some systems, n is silently limited to 5. On systems supporting SYN cookies, the backlog is irrelevant. -o: Leave IP options alone. If the client is sending packets along an IP source route, send packets back along the same route. -O: (Default.) Kill IP options. A client can still use source routing to connect and to send data, but packets will be sent back along the default route.
91
-d: Delay sending data for a fraction of a second whenever the remote host is responding slowly. This is currently the default, but it may not be in the future; if you want it, set it explicitly. -D: Never delay sending data; enable TCP_NODELAY. Opes de recolhimento de dados -h: (Default.) Look up the remote host name in DNS to set the environment variable $TCPREMOTEHOST. -H: Do not look up the remote host name in DNS; remove the environment variable $TCPREMOTEHOST. To avoid loops, you must use this option for servers on TCP port 53. -p: Paranoid. After looking up the remote host name in DNS, look up the IP addresses in DNS for that host name, and remove the environment variable $TCPREMOTEHOST if none of the addresses match the client's IP address. -P: (Default.) Not paranoid. -l localname: Do not look up the local host name in DNS; use localname for the environment variable $TCPLOCALHOST. A common choice for localname is 0. To avoid loops, you must use this option for servers on TCP port 53. -r: (Default.) Attempt to obtain $TCPREMOTEINFO from the remote host. -R: Do not attempt to obtain $TCPREMOTEINFO from the remote host. To avoid loops, you must use this option for servers on TCP ports 53 and 113. -t n: Give up on the $TCPREMOTEINFO connection attempt after n seconds. Default: 26
O programa tcprules
tcprules compila regras para o tcpserver.
Interface
tcprules cdb tmp
O tcpserver segue regras para decidir-se se uma conexo TCP aceitvel. Por exemplo, a regra:
18.23.0.32:deny
proibe conexes do endereo IP 18.23.0.32. O tcprules pode ser utilizado quando o tcpserver est executando, sem ter a necessidade de encerrar sua execuo. O arquivo cdb atualizado automaticamente. Primeiramente ele grava as regras para um arquivo tmp (temporrio) e ento move o contedo para o incio do arquivo cdb. Se o arquivo tmp existir, ele ser destrudo. Os diretrios que contm os arquivos cdb e tmp devem ter permisso de gravao para que o tcprules possa alter-los e eles devem estar no mesmo sistema de arquivos.
92
Se houver algum problema com a entrada ou com o tmp, o tcprules ir se queixar e ir deixar o cdb sozinho. O formato binrio do cdb portvel para outras mquinas.
Endereos
O tcpserver procura regras com vrios endereos: 1. $TCPREMOTEINFO@$TCPREMOTEIP, if $TCPREMOTEINFO is set; 2. $TCPREMOTEINFO@=$TCPREMOTEHOST, if $TCPREMOTEINFO is set and $TCPREMOTEHOST is set; 3. $TCPREMOTEIP; 4. =$TCPREMOTEHOST, if $TCPREMOTEHOST is set; 5. shorter and shorter prefixes of $TCPREMOTEIP ending with a dot; 6. shorter and shorter suffixes of $TCPREMOTEHOST starting with a dot, preceded by =, if $TCPREMOTEHOST is set; 7. =, if $TCPREMOTEHOST is set; and finally 8. the empty string. O tcpserver usa a primeira regra que encontrar. Voc deve usar a opo -p no tcpserver se voc confiar em $TCPREMOTEHOST. Por exemplo, aqui esto algumas regras:
[email protected]:first 18.23.0.32:second :third 127.:fourth
Se $TCPREMOTEIP 10.119.75.38, tcpserver ir seguir a terceira instruo. Se $TCPREMOTEIP 18.23.0.32, tcpserver ir seguir a segunda instruo. Se $TCPREMOTEIP 127.0.0.1 e $TCPREMOTEINFO conta, tcpserver ir seguir a quarta instruo. Se $TCPREMOTEIP 127.0.0.1 e $TCPREMOTEINFO joe, tcpserver ir seguir a primeira instruo. Voc pode usar o tcprulescheck para ver como o tcpserver ir interpretar as regras no cdb.
93
Range de endereos
tcprules trata 1.2.3.37-53:ins como uma abreviao para as regras 1.2.3.37:ins, 1.2.3.38:ins e ento at 1.2.3.53:ins. Similarmente, 10.2-3.:ins uma abreviao para 10.2.:ins e 10.3.:ins.
Instrues
As instrues em uma regra podem comear com allow ou deny. Deny diz ao tcpserver para barrar a conexo sem executar qualquer coisa. Por exemplo, a regra
:deny
diz ao tcpserver para barrar todas conexes que no esto ativas por nenhuma regra especfica. As instrues podem continuar com algumas variveis de ambiente, no formulrio, var=x. O tcpserver adiciona uma varivel de ambiente $var com valor x. Por exemplo,
10.0.:allow,RELAYCLIENT="@fix.me"
adiciona uma varivel de ambiente $RELAYCLIENT com valor @fix.me. As citaes podem ser trocadas por qualquer caracter repetido:
10.0.:allow,RELAYCLIENT=/@fix.me/
O programa tcpclient
O tcpclient cria uma conexo que parte do TCP.
Interface
tcpclient opts host port prog
opts uma srie de opes getopt-style. host um armento. port um argumento. prog consiste em um ou mais argumentos. O tcpclient tenta conectar em um servidor TCP. Se for com sucesso, executa o prog, com descrio 6 lendo da rede e descrio 7 gravando na rede. Tambm configura diversas variveis de ambiente. O endereo do servidor dado por host e port. port pode ser um nome de / etc/services ou um nmero. host pode ser 0, referindo-se a maquina local, ou um endereo IP decimal com pontos, ou um nome de host. Se o servidor tem diversos endereos IP's, o tcpclient tenta enderear cada
94
Opes
Opes gerais:
-q: Quiet. Do not print error messages. -Q: (Default.) Print error messages. -v: Verbose. Print error messages and status messages. Opes de conexo: -T x+y: Give up on the connection attempt after x+y seconds. Default: 2+58. When a host has several IP addresses, tcpclient tries to connect to the first IP address, waits x seconds, tries to connect to the second IP address, waits x seconds, etc.; then it retries each address that timed out, waiting y seconds per address. You may omit +y to skip the second try. Before version 0.88, tcpclient will use only x (default: 60). -i localip: Use localip as the IP address for the local side of the connection; quit if localip is not available. Normally tcpclient lets the operating system choose an address. -p localport: Use localport as the TCP port for the local side of the connection; quit if localport is not available. Normally tcpclient lets the operating system choose a port. -d: Delay sending data for a fraction of a second whenever the remote host is responding slowly. This is currently the default, but it may not be in the future; if you want it, set it explicitly. -D: Never delay sending data; enable TCP_NODELAY. Opes de recolhimento de dados: -h: (Default.) Look up the remote host name in DNS to set the environment variable $TCPREMOTEHOST. -H: Do not look up the remote host name in DNS; remove the environment variable $TCPREMOTEHOST. -l localname: Do not look up the local host name in DNS; use localname for the environment variable $TCPLOCALHOST. A common choice for localname is 0. -r: (Default.) Attempt to obtain $TCPREMOTEINFO from the remote host. -R: Do not attempt to obtain $TCPREMOTEINFO from the remote host. -t n: Give up on the $TCPREMOTEINFO connection attempt after n seconds. Default: 26.
$TCPLOCALPORT o nmero local da porta TCP, em decimal. $TCPLOCALHOST o nome listado no DNS para o localhost. Se o nome no existir, $TCPLOCALHOST no setado. Esteja ciente que $TCPLOCALHOST pode conter caracteres arbitrrios. $TCPREMOTEIP o endereo IP do host remoto, no formato decimal com pontos. $TCPREMOTEPORT o nmero remoto da porta TCP, em decimal. $TCPREMOTEHOST o nome listado no DNS para o host remoto. Se o nome no existir, $TCPREMOTEHOST no setado. Esteja ciente que $TCPREMOTEHOST pode conter caracteres arbitrrios. $TCPREMOTEINFO uma string especfica de conexo fornecido pelo host remoto atravs do protocolo 931/1413/IDENT/TAP. Se no existir informao, $TCPREMOTEINFO no setado. Esteja ciente que $TCPREMOTEINFO pode conter caracteres arbitrrios.
96
Qmail
Qmail um MTA (Mail Transfer Agente), para sistemas operacionais Unixlike. Qmail um SMTP moderno que torna o sendmail obsoleto Dan Bernstein Atualmente o Qmail considerado um dos servidores de correio mais seguros e estveis do mundo. Quando foi disponibilizado sua primeira verso, o desenvolvedor do Qmail lanou um desafio para a comunidade: Aquele que conseguisse invadir o servidor de correio com qmail, ganharia U$ 500,00. Bom, no preciso nem dizer que ningum conseguiu. O Qmail foi escrito por Dan Bernstein (DJB), http://cr.yp.to/djb.html, um professor de Matemtica da Universidade de Illinois em Chicago. Bernstein tambm conhecido pelo seu trabalho de criptografia.
Releases do Qmail
0.70, publicado em 24 de Janeiro de 1996; Verso beta; 0.90, publicado em 01 de Agosto de 1996; Verso gamma; 1.00, publicado em 20 de Fevereiro de 1997; 1.03, publicado em 15 de Junho de 1998; verso corrente.
97
Pacotes
qmail-1.03.tar.gz - Pacote do Qmail qmail-1.03-mfcheck.3.patch - Checa se o domnio existe. qmailqueue.patch - sem limites de mensagens na fila (255 padro). daemontools - Daemon que monitora os servios do Qmail. ucspi-tcp - inet mais inteligente Controla as conexes do Qmail.
98
Ucspi-tcp http://www.inter7.com
99
Executando o script INSTALL.ids: # sh INSTALL.ids Instalando o Qmail (compila, instala e testa): # make setup check
100
fundamental que o nome e domnio estejam configurados corretamente, e que a tabela /etc/hosts tambm esteja adequadamente configurado de acordo as configuraes do servidor, para o bom funcionamento do Qmail. J estamos com o daemontools, ucspci-tcp e Qmail com os patches instalados, iremos agora dar procedimento as configuraes do Qmail.
Iremos criar um usurio denominado correio que ser utilizado para receber as mensagens do root, postmaster e mailer-daemon. Criando o usurio: # adduser correio Criando os alias do Qmail: # cd /var/qmail/alias/ # echo [email protected] > .qmail-root # echo [email protected] > .qmail-postmaster # echo [email protected] > .qmail-mailer-daemon
101
Configurando as permisses: # chmod 644 .qmail-root .qmail-postmaster .qmail-mailer-daemon # chown root.qmail .qmail-* Iremos trabalhar com mensagens no Qmail no formato Maildir, que mais seguro e confivel do que mailbox, portanto, como j possuimos um usurio criado, no qual ir receber as mensagens do root, postmaster e mailer-daemon, teremos agora que criar o diretrio Maildir em seu home. Criando o diretrio Maildir do usurio geral: # su -l correio $ cd /var/qmail/bin/ $ ./maildirmake /home/correio/Maildir $ exit # chmod 700 /home/geral/Maildir
Criando os alias do Qmail: Nota: Este script utiliza crases (`), e no aspas simples ('). Aps ter criado o script /var/qmail/rc, ento execute estes comandos: # chmod 755 /var/qmail/rc # mkdir /var/log/qmail Iremos trabalhar com o formato de emails ./Maildir/ que muito mais flexvel que mailbox, pois a diferena entre eles que trabalhando com ./Maildir/, cada mensagem se torna um arquivo, e trabalhando com mailbox, todas as mensagem ficam armazenadas em um s arquivo. Para configurarmos o mtodo que iremos trabalhar, no caso ./Maildir/, basta seguir o procedimento abaixo: Configurando as permisses: # echo ./Maildir/ > /var/qmail/control/defaultdelivery # chown root.qmail .qmail-* Nota: defaultdelivery no um arquivo de controle do qmail. somente uma configurao no qual utilizamos para configurar o mtodo de mensagens recebidas. O script tambm pode ser criado da seguinte forma: Como root: # cp /var/qmail/boot /var/qmail/rc # vi /var/qmail/rc
#!/bin/sh # Using stdout for logging # Using control/defaultdelivery from qmail-local to deliver messages by default exec env - PATH="/var/qmail/bin:$PATH" \ qmail-start ./Maildir/ splogger qmail
Onde, trocamos o parmetro ./Mailbox para ./Maildir/ .
103
As duas formas de configurao do script rc funcionam da mesma maneira, portanto, fica a critrio de vocs de como configur-lo, desde que siga os exemplos acima.
Alm dos processos listados acima, devemos tambm verificar os logs para ter certeza de que tudo est OK, portanto iremos listar os logs do arquivo mail.log localizado no diretrio /var/log/. Listando os logs do Qmail:
104
# tail /var/log/mail.log
....qmail qmail: 10.......391995status: local 0/10 remote 0/20
Dever aparecer no mail.log a linha acima, indicando que tudo est correto com o Qmail.
2 teste Enviando mensagem para um usurio invlido: # echo to: mgarcia | /var/qmail/bin/qmail-inject
A mensagem ir voltar com erro para o postmaster, pois o usurio mgarcia no existe.
105
# vi supervise/qmail-send/log/run
#!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 \ /var/log/qmail/qmail-send
106
# vi supervise/qmail-smtpd/log/run
#!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 \ /var/log/qmail/qmail-smtpd
107
# vi supervise/qmail-pop3d/log/run
#!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 \ /var/log/qmail/qmail-pop3d
108
# ln -s /var/qmail/supervise/qmail-send/ /service/qmail-send # ln -s /var/qmail/supervise/qmail-smtpd/ /service/qmail-smtpd # ln -s /var/qmail/supervise/qmail-pop3d/ /service/qmail-pop3d Para cada script linkado, dever aparecer duas linhas de servios ao digitar o comando ps wax:
tcpserver multilog
Gerando o banco de dados da tabela de relay: # tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp Temos que criar o banco de dados da tabela de relay, pois o qmail somente l o arquivo tcp.smtp.cdb. Qualquer alterao na tabela de relay, necessrio executar o tcprules novamente.
109
Aps a criao do arquivo de checagem de domnio, necessrio parar e iniciar o servidor de correio Qmail. Parando o servidor de correio Qmail: # svc -d /service/qmail-send /service/qmail-send/log # svc -d /service/qmail-smtpd /service/qmail-smtpd/log # svc -d /service/qmail-pop3d /service/qmail-pop3d/log
Onde a opo -d igual a down
Iniciando o servidor de correio Qmail: # svc -u /service/qmail-send /service/qmail-send/log # svc -u /service/qmail-smtpd /service/qmail-smtpd/log # svc -u /service/qmail-pop3d /service/qmail-pop3d/log
Onde a opo -u igual a up
110
Rotinas do Qmail:
qmailctl qmailctl qmailctl qmailctl qmailctl qmailctl qmailctl qmailctl qmailctl qmailctl qmailctl qmailctl qmailctl stop start restart pause cont stat cdb queue doqueue flush reload alrm hup Para o servidor de correio Inicia o servidor de correio Restarta o servidor de correio Pausa o servidor de correio Starta o servidor de correio pausado Mostra o status do servidor de correio Refaz a tabela de relay Mostra o status da fila de correio Agenda a fila de mensagens para entrega dem doqueue Recarrega tabelas de domnios locais e virtuais dem doqueue dem reload
Default
none MAILERDAEMON me
Used by
qmail-smtpd qmail-send qmail-send /service/qmailsmtpd/run qmail-send qmail-send /var/qmail/rc qmail-inject qmail-inject qmail-smtpd qmail-send qmail-send
Purpose
blacklisted From addresses username of bounce sender hostname of bounce sender max simultaneous incoming SMTP connections max simultaneous local deliveries max simultaneous remote deliveries default .qmail file default domain name default host name max number of bytes in message (0=no limit) host name of double bounce sender user to receive double bounces
concurrencyincoming none concurrencylocal concurrencyremote defaultdelivery defaultdomain defaulthost databytes doublebouncehost doublebounceto 10 20 none me me 0 me postmaster
111
envnoathost helohost idhost localiphost locals me morercpthosts percenthack plusdomain qmqpservers queuelifetime rcpthosts smtpgreeting smtproutes timeoutconnect timeoutremote timeoutsmtpd virtualdomains
me me me me me FQDN of system none none me none 604800 none me none 60 1200 1200 none
qmail-send qmail-remote qmail-inject qmail-smtpd qmail-send various qmail-smtpd qmail-send qmail-inject qmail-qmqpc qmail-send qmail-smtpd qmail-smtpd qmail-remote qmail-remote qmail-remote qmail-smtpd qmail-send
default domain for addresses without "@" host name used in SMTP HELO command host name for MessageID's name substituted for local IP address domains that we deliver locally default for many control files secondary rcpthosts database domains that can use "%"-style relaying domain substituted for trailing "+" IP addresses of QMQP servers seconds a message can remain in queue domains that we accept mail for SMTP greeting message artificial SMTP routes how long, in seconds, to wait for SMTP connection how long, in seconds, to wait for remote server how long, in seconds, to wait for SMTP client virtual domains and users
Name
Man page
DATABYTES DEFAULT DTLINE EXT EXT2 EXT3 EXT4 HOME HOST HOST2 HOST3 HOST4 LOCAL LOGNAME MAILHOST MAILNAME MAILUSER NAME NEWSENDER QMAILDEFAULTDOMAIN QMAILDEFAULTHOST QMAILHOST QMAILIDHOST QMAILINJECT
qmail-smtpd used qmailcommand qmailcommand qmailcommand qmailcommand qmailcommand qmailcommand qmailcommand qmailcommand qmailcommand qmailcommand qmailcommand qmailcommand qmail-inject qmail-inject qmail-inject qmail-inject qmail-inject qmailcommand qmail-inject qmail-inject qmail-inject qmail-inject qmail-inject set set set set set set set set set set set set used used used used used set used used used used used
Overrides control/databytes Portion of address matching "-default" in a .qmail file name. Delivered-To header field The address extension Portion of EXT following first dash Portion of EXT following second dash Portion of EXT following third dash The user's home directory The domain part of the recipient address Portion of HOST preceding last dot. Portion of HOST preceding second-to-last dot Portion of HOST preceding thirdto-last dot The local part of the recipient address User name in From header field (4) Host name in From header field (2) Personal name in From header field (2) User name in From header field (2) Personal name in From header field (3) Forwarding sender address (see "man dot-qmail") Overrides control/defaultdomain Overrides control/defaulthost Host name in From header field (1) Overrides control/idhost Specify various options (see next table)
113
QMAILMFTFILE QMAILNAME QMAILPLUSDOMAIN QMAILSHOST QMAILSUSER QMAILUSER RECIPIENT RELAYCLIENT RPLINE SENDER UFLINE USER USER
File containing list of mailing list addresses for Mail-Followup-To generation Personal name in From header field (1) Overrides control/plusdomain Host name in envelope sender address User name in envelope sender address User name in From header field (1) Envelope recipient address Ignore control/rcpthosts and append value to recipient address Return-Path header field Envelope sender address UUCP-style "From " line The current user User name in From header field (3)
qmail-smtpd used qmailcommand qmailcommand qmailcommand qmailcommand qmail-inject set set set set used
Purpose
Use address-comment style for the From field Do not look at any incoming Return-Path field Delete any incoming From field Delete any incoming Message-ID field Use a per-recipient VERP Use a per-message VERP
Arquitetura
Modules
qmail-smtpd qmail-inject qmail-rspawn/qmail-remote
Function
accepts/rejects messages via SMTP injects messages locally handles remote deliveries
114
Estrutura de Diretrios
O diretrio /var/qmail o diretrio onde contm toda a estrutura do Qmail. Seus subdiretrios so: Directory
alias bin boot control doc man queue users
Contents
.qmail files for system-wide aliases program binaries and scripts startup scripts configuration files documentation (except man pages) man pages the queue of unsent messages the qmail-users database files
Estrutura do Queue
O diretrio queue contm as mensagens que esto na fila para serem enviadas: Subdirectory Contents
bounce info* intd local* lock mess* pid remote* todo permanent delivery errors envelope sender addresses envelopes under construction by qmail-queue local envelope recipient addresses lock files message files used by qmail-queue to acquire an i-node number remote envelope recipient addresses complete envelopes
Tentativas de Entrega
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
Segundos
0 400 1600 3600 6400 10000 14400 19600 25600 32400 40000 48400 57600 67600 78400 90000 102400 115600 129600 144400 160000 176400 193600 211600 230400 250000 270400 291600 313600 336400 360000 384400 409600 435600
D-HH:MM:SS
0-00:00:00 0-00:06:40 0-00:26:40 0-01:00:00 0-01:46:40 0-02:46:40 0-04:00:00 0-05:26:40 0-07:06:40 0-09:00:00 0-11:06:40 0-13:26:40 0-16:00:00 0-18:46:40 0-21:46:40 1-01:00:00 1-04:26:40 1-08:06:40 1-12:00:00 1-16:06:40 1-20:26:40 2-01:00:00 2-05:46:40 2-10:46:40 2-16:00:00 2-21:26:40 3-03:06:40 3-09:00:00 3-15:06:40 3-21:26:40 4-04:00:00 4-10:46:40 4-17:46:40 5-01:00:00
116
35 36 37 38 39 40
117
Vpopmail
O vpopmail um servidor pop3d com suporte a domnios virtuais muito utilizado, que trabalha em conjunto com o Qmail, desenvolvido por Chris Johnson e mantido por Ken Jones.
Vantagens
Suporte at 23 milhes de domnios virtuais, balanceado por uma rvore de diretrios; Suporte at 23 milhes de usurios por domnio, balanceado por uma rvore de diretrios; Integrao total com o Qmail; No requer contas de usurios no sistema; Suporte para MySQL, Oracle, PostGreSQL, LDAP, Sybase, /etc/passwd e /etc/shadow; Um usurio que possui conta em mais de um domnio, possui uma senha diferente para cada; Administrao em modo texto e grfico, etc...
Pacotes
vpopmail-5.2.1.tar.gz - Pacote do Servidor POP3d
Download
vpopmail http://www.inter7.com/vpopmail/vpopmail-5.2.1.tar.gz
118
# groupadd -g 89 vchkpw # adduser -g vchkpw -u 89 -d /var/vpopmail vpopmail Obs.: Por padro, o vpopmail instalado no diretrio /home/vpopmail e iremos instalar o Vpopmail do diretrio /var/vpopmail. Compilando o vpopmail: # ./configure --enable-clear-passwd=n --enable-md5-passwords=y --enable-logging=y --enable-default-domain=freesoftware.org.br -with-prefix=/var/vpopmail # make # make install-strip O que cada opo:
--enable-clear-passwd= --enable-md5-passwords= --enable-logging= --enable-default-domain= -with-prefix= Habilita/Desabilita senhas em branco Habilita senhas com cripografia MD5 Habilita logs de acesso Compila o vpopmail com um domnio default Local onde ser instalado o vpopmail
Configurando o vpopmail: # cd /var/vpopmail/bin/ # ./vadddomain freesoftware.org.br # ./vadduser [email protected] # ./vadduser [email protected] # ./vadduser [email protected] # ./vuserinfo [email protected] # ./vpasswd [email protected] # ./vdeluser [email protected] # ./vsetuserquota [email protected]
119
Courier-Imap
O Courier-imap um servidor que prov acesso IMAP aos Maildirs. muito popular com correios que utilizam o esquema Maildir, pois o mesmo no possui suporte a Mailbox. A vantagem de se utilizar Maildir, que o mesmo pode ser acessado de diversas aplicaes simultneamente, alm de ser mais rpido e eficiente. Possui recursos como:
IMAP sobre SSL; Ipv6; Supote a PAM, MySQL, PostGreSQL, LDAP, etc...
Pacotes
courier-imap-3.0.3.20040411.tar.bz2 - Pacote do Servidor IMAP
Download
courier-imap http://www.inter7.com/courierimap.html
Dependncias
Antes de instalar e configurar o courier-imap necessrio instalar as seguintes dependncias: # apt-get install zlib1g # apt-get install zlib1g-dev # apt-get install expect # apt-get install libgdbmg1-dev # apt-get install openssl # apt-get install libssl-dev
# tar xjvf courier-imap-3.0.3.20040411.tar.bz2 Antes de instalar o courier-imap necessrio configurar as bibliotecas do vpopmail no diretrio /var/vpopmail/etc/, pois o courier-imap ir buscar estas bibliotecas. Configurando as bibliotecas do vpopmail: # echo -I/var/vpopmail/include > /var/vpopmail/etc/inc_deps # echo -L/var/vpopmail/lib -lvpopmail > /var/vpopmail/etc/lib_deps
A 1 opo i maisculo e a 2 opo L maisculo e a opo lvpopmail L minsculo
# make # make install-strip # make install-configure Iniciando o servio do courier-imap: # /usr/lib/courier-imap/libexec/imapd.rc start Parando o servio do courier-imap: # /usr/lib/courier-imap/libexec/imapd.rc stop
Qmailadmin
O qmailadmin uma ferramenta web grfica utilizada para administrar domnios virtuais e usurios dos domnios. Possui recursos como:
121
Pacote
qmailadmin-1.0.6.tar - Pacote do qmailadmin
Download
qmailadmin http://www.inter7.com/qmailadmin/
Pr-requisitos
Antes de instalar e configurar o qmailadmin necessrio instalar os seguintes pacotes:
apache php4 ezmlm autorespond qmail vpopmail Servidor Web Suporte a php4 Lista de distribuio Necessrio para a lista de distribuio Servidor do Qmail Servidor pop3d
122
# apt-get install php4 Os pacotes ezmlm-0.53.tar.gz e autorespond-2.0.2.tar.gz podem ser feitos o download atravs do site: http://www.inter7.com.br Instalando o ezmlm: # # # # # tar xzvf ezmlm-0.53.tar.gz cd ezmlm-0.53 make make man make setup
123
Squirrelmail
O squirrelmail um webmail integrado com o qmail e vpopmail. Possui suporte a domnios virtuais e tambm possui mais de 200 plugins, cada um com uma finalidade.
Pacote
squirrelmail-1.4.2.tar.bz2 - Pacote do webmail
Download
squirrelmail http://www.squirrelmail.org
124
http://localhost/webmail/
125
OPENLDAP2
Existem duas maneiras de instalar o OpenLDAP2 no Debian, sendo elas: 1 Atravs do apt; 2 Atravs do cdigo fonte, baixando os pacotes diretamente no site. Iremos utilizar as duas formas para instalar o OpenLDAP2.
126
Agra iremos instalar os pacotes gerados pelo apt: # apt-get install ldap-gateways_2.0.23-6_i386.deb # apt-get install ldap-utils_2.0.23-6_i386.deb # apt-get install libldap2-dev_2.0.23-6_i386.deb # apt-get install libldap2_2.0.23-6_i386.deb # apt-get install slapd_2.0.23-6_i386.deb
Deve-se escolher como a base do LDAP ser criada. Em nosso caso iremos escolher a opo AUTO para que o LDAP gere automaticamente nossa base , o banco usado para esta base ser o lbdm.
127
Aqui escolheremos o padro para o SUFIXO do LDAP, esse sufixo ser utilizado nas pesquisas e autenticao no diretrio ldap. Escolha a opo domain or host para que o sufixo seja criado com o padro de seu endereo DNS.
Indique uma senha para o administrador, ele ser o usurio responsvel por fazer as alteraes no diretrio.
# Configuracao do localhost host localhost # Base principal do LDAP base dc=gusl,dc=org,dc=br # User que sera padrao nas pesquisas binddn cn=admin,dc=gusl,dc=org,dc=br # Senha padrao para fazer as pesquizas bindpw 123456 # Senha utilizando md5 pam_password md5
129
# Define um filtro para as pesquisas pam_filter objectclass=account # Forca os usuarios a usarem um determinado grupo pam_groupdn cn=users,ou=Group,dc=gusl,dc=org,dc=br # Habilita o SSL ssl yes
130
########################## # The backend type, ldbm, is the default standard database ldbm # The base of your directory suffix "dc=gusl,dc=org,dc=br" # Where the database file are physically stored directory "/var/lib/ldap" # Indexing options index objectClass eq # Save the time that the entry gets modified lastmod on # The userPassword by default can be changed # by the entry owning it if they are authenticated. # Others should not be able to see it, except the # admin entry below access to attribute=userPassword by dn="cn=admin,dc=gusl,dc=org,dc=br" write by anonymous auth by self write by * none # The admin dn has full write access access to * by dn="cn=admin,dc=gusl,dc=org,dc=br" write by * read # For Netscape Roaming support, each user gets a roaming # profile for which they have write access to access to dn=".*,ou=Roaming,o=morsnet" by dn="cn=admin,dc=gusl,dc=org,dc=br" write by dnattr=owner write
131
Caso no esteja, teremos que efetuar a instalao do mesmo: # apt-get install perl-5.6
Aps a instalao do perl, iremos instalar o migrationtools: # apt-get install migrationtools Agora acessamos o diretrio /usr/share/migrationtools/ e editamos o arquivo migrate_common.ph, arquivo responsvel pela configurao bsica dos demais scripts, altere conforme abaixo: # cd /usr/share/migrationtools/ # vi migrate_common.ph
# Default DNS domain $DEFAULT_MAIL_DOMAIN = "freesoftware.org.br"; # Default base $DEFAULT_BASE = "dc=freesoftware,dc=org,dc=br"; # where /etc/mail/ldapdomains contains names of ldap_routed # domains (similiar to MASQUERADE_DOMAIN_FILE). $DEFAULT_MAIL_HOST = "instrutor.freesoftware.org.br";
132
# cd /usr/share/migrationtools/ # ./migrate_base.pl /root/base.ldif Executando o comando acima estaremos migrando os objetos bsicos para a criao do seu diretrio. Vamos utilizar apenas o OU People que responsvel por guardar os usurios do diretrio, e o Group que o responsvel por guardar os grupos. Portanto, edite o /root/base.ldif delete a linha que fazer referncia aos outros OU, o arquivo deve ficar como indicado abaixo: # vi /root/base.ldif
dn: ou=People,dc=gusl,dc=org,dc=br ou: People objectClass: top objectClass: organizationalUnit dn: ou=Group,dc=gusl,dc=org,dc=br ou: Group objectClass: top objectClass: organizationalUnit
Com isso acabamos de criar os objetos OU, People e Group, o bsico para fazer autenticao do LDAP ou utilizar o mesmo para lista de contatos. Podemos fazer um teste para saber se o LDAP est funcionando, vamos utilizar o ldapclient para fazer isto: # ldapsearch -x Esse comando ir retornar todos os objetos da base LDAP.
133
Download
http://davedap.sourceforge.net
Pr-requisitos
Para que o davedap funcione corretamente, teremos que instalar os seguintes pacotes:
apache php4 J instalado e configurado J instalado e configurado
Instalando suporte a LDAP no PHP4: # apt-get install php-pear # apt-get install php-ldap
* * * * * * * */
This is where you customize phpLDAPadmin. The most important part is immediately below: The "LDAP Servers" section. You must specify at least one LDAP server there. You may add as many as you like. You can also specify your language, and many other options.
// Your LDAP servers $i=0; $servers = array(); $servers[$i]['name'] = 'Servidor LDAP'; /* A convenient name that will appear in the tree viewer */ $servers[$i]['host'] = 'localhost'; /* Examples: 'ldap.example.com', 'ldaps://ldap.example.com/' Note: Leave blank to remove it from the list of servers in the tree viewer*/ $servers[$i]['base'] = 'dc=freesoftware,dc=org,dc=br'; /* The base DN of your LDAP server. Leave this blank to have phpLDAPadmin auto-detect it for you. */ $servers[$i]['port'] = 389; /* The port your LDAP server listens on (no quotes) */ $servers[$i]['auth_type'] = 'config'; /* 2 options: 'form': you will be prompted, and a cookie stored with your login dn and password. 'config': specify your login dn and password here. In both cases, use caution! */ $servers[$i]['login_dn'] = 'cn=admin,dc=freesoftware,dc=org,dc=br'; /* For anonymous binds, leave the login_dn and login_pass blank */ $servers[$i]['login_pass'] = '123456'; /* Your password (only if you specified 'config' for 'auth_type' */ $servers[$i]['tls'] = false; /* Use TLS to connect. Requires PHP 4.2 or newer */ $servers[$i]['default_hash'] = 'md5'; /* Default password hashing algorith; One of md5, ssha, sha, md5crpyt, smd5, blowfish or leave blank for now default algorithm. */ $servers[$i]['login_attr'] = 'dn'; /* If you specified 'form' as the auth_type above, you can optionally specify here an attribute to use when logging in. If you enter 'uid', then login as 'dsmith', phpLDAPadmin will
135
search for uid=dsmith and log in as such. Leave blank or specify 'dn' to use full DN for logging in .*/ $servers[$i]['read_only'] = false; /* Specify true If you want phpLDAPadmin to not display or permit any modification to the LDAP server. */ $servers[$i]['enable_auto_uid_numbers'] = false; /* This feature allows phpLDAPadmin to automatically determine the next available uidNumber for a new entry. */ $servers[$i]['auto_uid_number_mechanism'] = 'search'; /* The mechanism to use when finding the next available uidNumber. Two possible values: 'uidpool' or 'search'. The 'uidpool' mechanism uses an existing uidPool entry in you r LDAP server to blindly lookup the next available uidNumber. The 'search' mechanism searches for entries with a uidNumber value and finds the first available uidNumber (slower). */ $servers[$i]['auto_uid_number_search_base'] = 'ou=People,dc=example,dc=com'; /* The DN of the search base when the 'search' mechanism is used above. */ $servers[$i]['auto_uid_number_min'] = 1000; /* The minimum number to use when searching for the next available UID number (only when 'search' is used for auto_uid_number_mechanism' */ $servers[$i]['auto_uid_number_uid_pool_dn'] = 'cn=uidPool,dc=example,dc=com'; /* The DN of the uidPool entry when 'uidpool' mechanism is used above. */ // If you want to configure additional LDAP servers, do so below. $i++; $servers[$i]['name'] = 'Another server'; $servers[$i]['host'] = ''; $servers[$i]['base'] = 'dc=example,dc=com'; $servers[$i]['port'] = 389; $servers[$i]['auth_type'] = 'config'; $servers[$i]['login_dn'] = ''; $servers[$i]['login_pass'] = '';
136
$servers[$i]['tls'] = false; $servers[$i]['default_hash'] = 'crypt'; $servers[$i]['login_attr'] = ''; $servers[$i]['read_only'] = false; $servers[$i]['enable_auto_uid_numbers'] = false; $servers[$i]['auto_uid_number_mechanism'] = 'search'; $servers[$i]['auto_uid_number_search_base'] 'ou=People,dc=example,dc=com'; $servers[$i]['auto_uid_number_min'] = 1000; $servers[$i]['auto_uid_number_uid_pool_dn'] 'cn=uidPool,dc=example,dc=com';
= =
// If you want to configure more LDAP servers, copy and paste the above (including the "$i++;") // The temporary storage directory where we will put jpegPhoto data // This directory must be readable and writable by your web server $jpeg_temp_dir = "/tmp"; // Example for Unix systems //$jpeg_temp_dir = "c:\\temp"; // Example for Windows systems /** **/ /** Appearance and Behavior **/ /** **/ // The language setting. If you set this to 'auto', phpLDAPadmin will // attempt to determine your language automatically. Otherwise, available // lanaguages are: 'ct', 'de', 'en', 'es', 'fr', 'it', 'nl', and 'ru' // Localization is not complete yet, but most strings have been translated. // Please help by writing language files. See lang/en.php for an example. $language = 'auto'; // Set to true if you want to draw a checkbox next to each entry in the tree viewer // to be able to delete multiple entries at once $enable_mass_delete = false; // Set to true if you want LDAP data to be displayed read-only (without input fields) // when a user logs in to a server anonymously $anonymous_bind_implies_read_only = true; // If you used auth_type 'form' in the servers list, you can adjust how long the cookie will last // (default is 0 seconds, which expires when you close the browser) $cookie_time = 0; // seconds // How many pixels wide do you want your left frame view (for the tree browser) $tree_width = 320; // pixels
137
// How long to keep jpegPhoto temporary files in the jpeg_temp_dir directory (in seconds) $jpeg_tmp_keep_time = 120; // seconds // Would you like to see helpful hint text occacsionally? $show_hints = true; // set to false to disable hints // When using the search page, limit result size to this many entries $search_result_size_limit = 50; /** **/ /** Simple Search Form Config **/ /** **/ // Which attributes to include in the drop-down menu of the simple search form (comma-separated) // Change this to suit your needs for convenient searching. Be sure to change the correlating // list below ($search_attributes_display) $search_attributes = "uid, cn, gidNumber, objectClass, telephoneNumber, mail, street"; // This list correlates to the list directly above. If you want to present more readable names // for your search attributes, do so here. Both lists must have the same number of entries. $search_attributes_display = "User Name, Common Name, Group ID, Object Class, Phone Number, Email, Addre ss"; // The list of attributes to display in each search result entry summary $search_result_attributes = "dn, cn"; /** **/ /** User-friendly attribute translation /** **/ $friendly_attrs = array(); // Use this array to map attribute names to user friendly names. For example, if you // don't want to see "facsimileTelephoneNumber" but rather "Fax". $friendly_attrs[ 'facsimileTelephoneNumber' ] = 'Fax'; $friendly_attrs[ 'telephoneNumber' ] = 'Phone'; /** /** Hidden attributes /** **/ **/ **/ **/
138
// You may want to hide certain attributes from being displayed in the editor screen // Do this by adding the desired attributes to this list (and uncomment it). This // only affects the editor screen. Attributes will still be visible in the schema // browser and elsewhere. An example is provided below: //$hidden_attrs = array( 'jpegPhoto', 'objectClass' ); ?>
Pr-requisitos
openssl Databases BerkeleyDB ou GDBM Cyrus SASL
Pacotes
db-4.1.25.tar.gz Pacote do BerkeleyDB cyrus-sasl-2.1.18.tar.gz Pacote de Autenticao e Criptografia openldap-stable-20040329.tgz Pacote do OpenLDAP
Download
BerkeleyDB http://www.sleepycat.com
139
Colocar o diretrio /usr/local/BerkeleyDB.4.1 no arquivo /etc/ld.so.conf: # echo /usr/local/BerkeleyDB.4.1 > /etc/ld.so.conf # ldconfig # ldconfig -v | grep BerkeleyDB
Instalando o Cyrus SASL: # tar xzvf cyrus-sasl-2.1.18.tar.gz # cd cyrus-2.1.18 # ./configure --with-bdb-libdir=/usr/local/BerkeleyDB.4.1/lib --withbdb-incdir=/usr/local/BerkeleyDB.4.1/include --enable-krb4=no #make #make install
OBS.: A base ser instalada em /usr/local/BerkeleyDB.4.1/
Crie um link simblico das libs do Cyrus SASL para /usr/lib/: # ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
Configurao do OpenLdap
Editando o arquivo de configurao do OpenLDAP: # vi /usc/local/etc/openldap/slapd.conf
## O include inclui os esquemas com que voc quer trabalhar, sendo os principais: include include include include /usr/local/etc/openldap/schema/core.schema /usr/local/etc/openldap/schema/cosine.schema /usr/local/etc/openldap/schema/inetorgperson.schema /usr/local/etc/openldap/schema/nis.schema
## PID's e Arg's file usados no daemon do Servidor LDAP. pidfile argsfile /usr/local/var/slapd.pid /usr/local/var/slapd.args
## Alguns parmetros do LDAP. allow bind_v2 concurrency idletimeout loglevel sizelimit timelimit threads 0 10000 240 120 100 "c=BR" 240 defaultsearchbase
## Tipo de banco utilizado. No nosso caso estaremos utilizando o BerkeleyDB. #Tambm iremos configurar duas hierarquias de nossa base: database suffix rootdn rootpw bdb "c=BR" "cn=Manager,c=BR" {MD5}4QrcOUm6Wau+VuBX8g+IPg==
# dc = Domain Component. # rootdn = Usurio administrador do LDAP. # rootpw = Senha do administrador. Pode ser criptografado. ## Diretrio onde ser guardado a base LDAP. directory /usr/local/var/openldap-data
## Index usados pelo LDAP. index mail,cn,sn index uid cachesize 10000 checkpoint 100 30 dbnosync index objectClass pres,eq,sub pres,eq eq
143
144
# vi correio.ldif
dn: uid=correio,ou=Treinamento,o=freesoftware,c=BR mailAlternateAddress: [email protected] objectClass: inetOrgPerson objectClass: qmailuser uid: correio cn: correio sn: Freesoftware mail: [email protected] mailMessageStore: /var/vmail/correio mailQuotaSize: 200000000 mailQuotaCount: 10000 mailSizeMax: 100000000 mailHost: instrutor.freesoftware.com.br userPassword: {MD5}4QrcOUm6Wau+VuBX8g+IPg==
Agora iremos importar a base (base.ldif), a organizao (organizacao.ldif) e a unidade organizacional (unidadeorganizacional.ldif) na base LDAP. O usurio correio (correio.ldif) ser importado na base LDAP aps a configurao o Qmail com suporte a OpenLDAP. Importando as entradas na base LDAP:
# ldapadd -x -W -v -D'cn=Manager,c=BR' -f base.ldif # ldapadd -x -W -v -D'cn=Manager,c=BR' -f organizacao.ldif # ldapadd -x -W -v -D'cn=Manager,c=BR' -f unidadeorganizacional.ldif
145
til quando voc tem uma base pronta e quer export-la para outro servidor, basta voc copiar o diretrio de onde esteja a base e no novo servidor executar este comando para que a base seja reindexada.
Onde:
-h Criptografia
As suportadas so: {MD5}, {SMD5}, {SHA}, {SSHA} e {CRYPT} Como fao para informar a senha em linha de comando:
146
-s <senha>
Senha
A opo -s <senha> utilizado para informar a senha na linha de comando. Sem este parmetro, ser pedido que voc entre com a senha e a confirme. A sada deste comando exibe a criptografia escolhida e a senha digitada criptografada.
147
Download do Qmail
http://cr.yp.to/software/qmail-1.0.3.tar.gz
Instalao do Qmail
Nesta etapa iremos somente descompactar o Qmail e aps ter aplicado o patch iremos editar o Makefile para efetuar algumas alteraes e aps as alteraes iremos instalar o Qmail.
Descompactando o Qmail
# tar xzvf qmail-1.0.3.tar.gz
Aps ter configurado o Makefile do Qmail, iremos instalar o mesmo: # make setup check # ./config-fast <host.dominio>
No nosso caso iremos configurar o Qmail com o domnio: instrutor.freesoftware.com.br
## PID's e Arg's file usados no daemon do Servidor LDAP. pidfile argsfile /usr/local/var/slapd.pid /usr/local/var/slapd.args
## Alguns parmetros do LDAP. allow bind_v2 concurrency idletimeout loglevel sizelimit timelimit threads 0 10000 240 120 100 "c=BR" 240 defaultsearchbase
## Tipo de banco utilizado. No nosso caso estaremos utilizando o BerkeleyDB. #Tambm iremos configurar duas hierarquias de nossa base: database suffix rootdn rootpw bdb "c=BR" "cn=Manager,c=BR" {MD5}4QrcOUm6Wau+VuBX8g+IPg==
# c = Country. # cn = Common Name. # dc = Domain Component. # rootdn = Usurio administrador do LDAP. # rootpw = Senha do administrador. Pode ser criptografado.
150
## Index usados pelo LDAP. index mail,cn,sn index uid cachesize 10000 checkpoint 100 30 dbnosync
Foi adicionado no arquivo de configurao somente o include do qmail
pres,eq,sub pres,eq eq
index objectClass
Aps ter configurado o LDAP com suporte ao Qmail, devemos parar o LDAP e inici-lo novamente: # killall -9 slapd # /usr/local/libexec/slapd Pronto, o LDAP est com suporte ao Qmail.
151
Teremos que designar um usurio para receber estas mensagens, no nosso caso iremos utilizar o usurio correio. O usurio correio deve ser criado na base LDAP. # # # # cd /var/qmail/alias echo [email protected] > .qmail-root echo [email protected] > .qmail-postmaster echo [email protected] > .qmail-mailer-daemon
152
153
Na configurao acima as redes 192.168.100 e 10.1.2 podem fazer relay. Aps a configurao do arquivo de relay, teremos que digitar make para gerar o cdb. # make OBS.: Qualquer configurao que efetuarmos no diretrio /var/qmail/control com exeo dos arquivos do LDAP, teremos que digitar make para gerar o cdb dos arquivos que foram modificados.
154
Configurando o SEND
# cd /var/qmail/boot/qmail/ # vi run
#!/bin/sh exec 2>&1 # # qmail-send and friends # QMAIL="/var/qmail" ALIASEMPTY=$(head -1 $QMAIL/control/aliasempty 2> /dev/null) ALIASEMPTY=${ALIASEMPTY:="./Maildir/"} PATH="$QMAIL/bin:$PATH" # limit to prevent memory hogs ulimit -c 204800 exec envdir ./env qmail-start "$ALIASEMPTY" splogger qmail
# vi log/run
#!/bin/sh exec setuidgid qmaill multilog t /var/qmail/log/qmail
Configurando o SMTPD
155
# cd /var/qmail/boot/qmail-smtpd/ # vi run
#!/bin/sh exec 2>&1 # # SMTP service # QMAIL="/var/qmail" ME=$(head -1 $QMAIL/control/me) CONCURRENCY=${CONCURRENCY:=50} PATH="$QMAIL/bin:$PATH" # source the environemt in ./env eval `env - envdir ./env awk '\ BEGIN { for (i in ENVIRON) printf "%s=\"%s\"\n", i, ENVIRON[i] }'` # enforce some sane defaults USER=${USER:="qmaild"} exec envdir ./env \ envuidgid $USER \ tcpserver -v -URl $ME -x$QMAIL/control/qmail-smtpd.cdb \ ${CONCURRENCY+"-c$CONCURRENCY"} ${BACKLOG+"-b$BACKLOG"} 0 smtp \ $QMAIL/bin/qmail-smtpd
# vi log/run
#!/bin/sh exec setuidgid qmaill multilog t /var/qmail/log/qmail-smtpd
# # # # # # #
cd env echo /var/qmail/bin/qmail-queue > QMAILQUEUE touch BLOCKRELAYPROBE touch RCPTCHECK touch RETURNMXCHECK touch SANITYCHECK touch SENDERCHECK
Configurando o POP3D
156
# cd /var/qmail/boot/qmail-pop3d/ # vi run
#!/bin/sh exec 2>&1 # # POP3 service # QMAIL=/var/qmail ME=$(head -1 $QMAIL/control/me) ALIASEMPTY=$(head -1 $QMAIL/control/aliasempty > /dev/null 2>&1) if test X"$ALIASEMPTY" = "X"; then ALIASEMPTY=./Maildir/ fi PATH=$PATH:"$QMAIL/bin" exec envdir ./env \ tcpserver -v -HRl $ME 0 pop3 \ $QMAIL/bin/qmail-popup $ME \ $QMAIL/bin/auth_pop \ $QMAIL/bin/qmail-pop3d "$ALIASEMPTY"
# vi log/run
#!/bin/sh exec setuidgid qmaill multilog t /var/qmail/log/qmail-pop3d
157
Referncias
Alessandro Kenji Urakawa Renato Tambelini Marcos Amorim http://cr.yp.to http://www.lifewithqmail.org http://www.inter7.com http://www.lifewithqmail.org/ldap/ http://www.openldap.org http://focalinux.cipsga.org.br
DNS e BIND O'REILLY
158
0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
159
The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as FrontCover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machinegenerated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are
160
considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
161
4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
162
L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of BackCover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
163
In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
164
9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
165