Servidor · 10 min read · Sep 09, 2025

Servidor de Diretório Mandriva no Debian Etch

Servidor de Diretório Mandriva no Debian Etch

Versão 1.1
Autor: Oliver Meyer

Este documento descreve como configurar o Servidor de Diretório Mandriva (MDS) no Debian Etch. O sistema resultante fornece um servidor de escritório completo para pequenas e médias empresas - fácil de administrar através do Console de Gerenciamento Mandriva (MMC) baseado na web.

Principais Recursos

  • Administração fácil via MMC
  • Integração OpenLDAP em todo o sistema
  • Controlador de Domínio Primário (PDC) SAMBA
  • Servidor de Email Postfix com Dovecot, Amavis, Spamassassin e ClamAV (POP3/IMAP/SSL/TLS/Quota)
  • Servidor DNS BIND
  • Servidor DHCP ISC
  • Proxy web Squid com SquidGuard

Este howto é um guia prático sem qualquer garantia - não cobre os fundamentos teóricos. Existem muitas maneiras de configurar tal sistema - este é o caminho que escolhi.

Preâmbulo

Este howto é bastante complexo. Por favor, leve seu tempo, leia-o extensivamente e siga os passos minuciosamente. A menor variação pode afetar o funcionamento correto da sua configuração.

1 Preparação

1.1 Sistema Básico

Configure um sistema padrão Debian Etch e atualize-o. Eu usei a seguinte configuração para este howto e a máquina virtual anexada que está disponível para nossos assinantes:

Hostname: server1.example.com
Domínio SAMBA: EXAMPLE
IP: 192.168.0.100
Gateway: 192.168.0.2
Todas as Senhas: howtoforge

1.2 Nome do Host

Edite o arquivo hosts - atribua o nome do host ao IP do servidor.

vi /etc/hosts

Deve ficar assim:

127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

# As linhas a seguir são desejáveis para hosts compatíveis com IPv6
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Depois insira o nome do host no arquivo hostname …

echo server1.example.com > /etc/hostname

… e reinicie o sistema.

reboot

Quando o sistema estiver novamente ativo, a saída dos dois comandos …

hostname

… e …

hostname -f

… deve ser:

server1.example.com

1.3 ACLs do Sistema de Arquivos

Para que o SAMBA consiga mapear ACLs do sistema de arquivos entre o servidor Linux e os clientes Windows, você precisa adicionar suporte a ACL ao ponto de montagem correspondente.

vi /etc/fstab

Adicione a opção “ acl “ ao ponto de montagem onde os diretórios SAMBA serão armazenados e os usuários SAMBA terão seus lares. No meu caso é “ / “ - o conteúdo deve ficar assim:

# /etc/fstab: informações estáticas do sistema de arquivos.
#
#                
proc            /proc           proc    defaults        0       0
/dev/sda1       /               ext3    defaults,acl,errors=remount-ro 0       1
/dev/sda5       none            swap    sw              0       0
/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Depois, remonte o ponto de montagem para que as alterações tenham efeito.

mount -o remount /

Se tudo correr bem, o comando …

mount -l

… deve mostrar a opção “ acl “ para o ponto de montagem correspondente:

/dev/sda1 on / type ext3 (rw,acl,errors=remount-ro)

2 Repositórios

2.1 MDS

O repositório MDS fornece os pacotes relacionados ao MDS e também pacotes corrigidos para bind9 & dhcp3.

vi /etc/apt/sources.list

Adicione as seguintes linhas ao arquivo.

# Repositório MDS  
deb http://mds.mandriva.org/pub/mds/debian etch main

2.2 Debian Volatile

O repositório Debian Volatile fornece pacotes mais novos para ClamAV & Spamassassin do que o repositório padrão do Debian.

vi /etc/apt/sources.list

Adicione as seguintes linhas ao arquivo.

# Debian Volatile  
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free

2.3 Debian Backports

O repositório Debian Backports fornece pacotes mais novos para dovecot.

vi /etc/apt/sources.list

Adicione as seguintes linhas ao arquivo.

# Debian Etch Backports  
deb http://www.backports.org/debian etch-backports main

Depois, atualize o apt.

apt-get update

3 Pacotes Necessários

3.1 Instalação

Instale os pacotes necessários para esta configuração.

apt-get install mmc-web-base mmc-web-mail mmc-web-network mmc-web-proxy mmc-web-samba mmc-agent python-mmc-plugins-tools python-mmc-base python-mmc-mail python-mmc-network python-mmc-proxy python-mmc-samba postfix postfix-ldap sasl2-bin libsasl2 libsasl2-modules amavisd-new libdbd-ldap-perl libnet-ph-perl libnet-snpp-perl libnet-telnet-perl lzop nomarch zoo clamav clamav-daemon gzip bzip2 unzip unrar-free unzoo arj spamassassin libnet-dns-perl razor pyzor dcc-client slapd ldap-utils libnss-ldap libpam-ldap dhcp3-server dhcp3-server-ldap bind9 samba smbclient smbldap-tools cupsys cupsys-client foomatic-db-engine foomatic-db foomatic-db-hpijs foomatic-db-gutenprint foomatic-filters foomatic-filters-ppds fontconfig hpijs-ppds linuxprinting.org-ppds

Os pacotes dovecot atuais no repositório padrão do Debian têm um bug em conjunto com LDAP - então você deve usar os pacotes dovecot do Debian Backports.

apt-get install -t etch-backports dovecot-common dovecot-imapd dovecot-pop3d

Se você quiser usar impressoras HP, é recomendado instalar mais alguns pacotes.

apt-get install hplip libusb-dev python-dev python-reportlab libcupsys2-dev libjpeg62-dev libsnmp9-dev lsb-core

3.2 Configuração

Durante a instalação dos novos pacotes, você será solicitado a responder algumas perguntas - responda da seguinte forma.

3.2.1 LDAP

Digite a senha para o admin LDAP e confirme-a. ( howtoforge)

3.2.2 Samba

Digite um nome para seu domínio. ( EXAMPLE)
Selecione “ Não “ quando perguntado se o smb.conf deve ser modificado para usar as configurações WINS do DHCP.

3.2.3 Postfix

Selecione “ Site da Internet “ como tipo geral de configuração.
Digite “ server1.example.com “ como nome de email.

3.2.4 Libnss-LDAP

Digite “ ldap://127.0.0.1/ “ como URI do servidor LDAP.
Digite “ dc=example,dc=com “ como nome para a base de pesquisa.
Selecione a versão do LDAP. ( 3)
Digite “ cn=admin,dc=example,dc=com “ como conta LDAP para root.
Digite a senha para o admin LDAP. ( howtoforge)

3.2.5 Libpam-LDAP

Selecione “ Sim “ quando perguntado se o root local deve ser o administrador do banco de dados.
Selecione “ Não “ quando perguntado se o banco de dados LDAP requer login.
Digite “ cn=admin,dc=example,dc=com “ como conta LDAP para root.
Digite a senha para o admin LDAP. ( howtoforge)

4 Configuração do LDAP

4.1 Arquivos de Esquema

Primeiro, copie os arquivos de esquema para MMC, email, SAMBA, impressora, DNS e DHCP para o diretório de esquema LDAP.

cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/  
cp /usr/share/doc/python-mmc-base/contrib/ldap/mail.schema /etc/ldap/schema/  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/samba.schema.gz > /etc/ldap/schema/samba.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/printer.schema.gz > /etc/ldap/schema/printer.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/dnszone.schema.gz > /etc/ldap/schema/dnszone.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/dhcp.schema.gz > /etc/ldap/schema/dhcp.schema

Em seguida, inclua os arquivos de esquema na configuração do LDAP

vi /etc/ldap/slapd.conf

Inclua os arquivos de esquema após o esquema inetorgperson.

include /etc/ldap/schema/mmc.schema  
include /etc/ldap/schema/samba.schema  
include /etc/ldap/schema/printer.schema  
include /etc/ldap/schema/mail.schema  
include /etc/ldap/schema/dnszone.schema  
include /etc/ldap/schema/dhcp.schema

Ative a verificação de esquema (abaixo dos arquivos de esquema incluídos).

schemacheck on

4.2 Configuração Básica

Nesta etapa, você precisará da senha do admin ldap (que você definiu durante a instalação do pacote na etapa 3) em forma criptografada (SSHA) - então vamos criptografá-la.

slappasswd -s %ldap_admin_password%

Ex.:

slappasswd -s howtoforge

A saída deve ser parecida com isto:

{SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

Anote e prossiga - abra o arquivo de configuração do servidor LDAP.

vi /etc/ldap/slapd.conf

Procure a linha comentada com a entrada para o admin LDAP (rootdn) …

# rootdn "cn=admin,dc=example,dc=com"

… e comente-a. Depois disso, adicione uma nova linha logo abaixo. Você deve inserir a senha admin ldap criptografada que você gerou no início desta etapa.

rootpw %encrypted_ldap_admin_password%

Ex.:

rootpw {SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

Em seguida, precisamos modificar as opções de indexação para o banco de dados. Procure a seguinte entrada:

# Opções de indexação para o banco de dados #1

Remova a linha abaixo …

index objectClass eq

… e insira as seguintes linhas:

index objectClass,uidNumber,gidNumber eq  
index cn,sn,uid,displayName pres,sub,eq  
index memberUid,mail,givenname eq,subinitial  
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq  
index zoneName,relativeDomainName eq  
index dhcpHWAddress,dhcpClassData eq

Agora adicione SAMBA à lista de acesso para o banco de dados. Procure a seguinte linha:

access to attrs=userPassword,shadowLastChange

Altere-a para que fique assim:

access to attrs=userPassword,sambaLMPassword,sambaNTPassword

Neste ponto, o arquivo de configuração do servidor LDAP deve ficar assim:

# Este é o arquivo de configuração principal do slapd. Veja slapd.conf(5) para mais
# informações sobre as opções de configuração.
#######################################################################
# Diretrizes Globais:
# Recursos a permitir
#allow bind_v2
# Definições de esquema e objectClass
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/mmc.schema
include         /etc/ldap/schema/samba.schema
include         /etc/ldap/schema/printer.schema
include         /etc/ldap/schema/mail.schema
include         /etc/ldap/schema/dnszone.schema
include         /etc/ldap/schema/dhcp.schema

schemacheck     on

# Onde o arquivo pid é colocado. O script init.d
# não irá parar o servidor se você mudar isso.
pidfile         /var/run/slapd/slapd.pid

# Lista de argumentos que foram passados para o servidor
argsfile        /var/run/slapd/slapd.args

# Leia slapd.conf(5) para valores possíveis
loglevel        0

# Onde os módulos carregados dinamicamente são armazenados
modulepath      /usr/lib/ldap
moduleload      back_bdb

# O número máximo de entradas que é retornado para uma operação de pesquisa
sizelimit 500

# O parâmetro tool-threads define a quantidade real de CPUs que é usada
# para indexação.
tool-threads 1

#######################################################################
# Diretrizes Específicas do Backend para bdb:
# Diretrizes específicas do backend se aplicam a este backend até que outro
# diretiva 'backend' ocorra
backend         bdb
checkpoint 512 30

#######################################################################
# Diretrizes Específicas do Backend para 'outro':
# Diretrizes específicas do backend se aplicam a este backend até que outro
# diretiva 'backend' ocorra
#backend                

#######################################################################
# Diretrizes Específicas para o banco de dados #1, do tipo bdb:
# Diretrizes específicas do banco de dados se aplicam a este banco de dados até que outro
# diretiva 'database' ocorra
database        bdb

# A base do seu diretório no banco de dados #1
suffix          "dc=example,dc=com"

# diretiva rootdn para especificar um superusuário no banco de dados. Isso é necessário
# para syncrepl.
rootdn          "cn=admin,dc=example,dc=com"
rootpw          {SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

# Onde os arquivos do banco de dados são fisicamente armazenados para o banco de dados #1
directory       "/var/lib/ldap"

# Para o pacote Debian, usamos 2MB como padrão, mas tenha certeza de atualizar este
# valor se você tiver muita RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge relatou que teve que definir este valor incrivelmente alto
# para fazer o slapd funcionar. Veja http://bugs.debian.org/303057
# para mais informações.
# Número de objetos que podem ser bloqueados ao mesmo tempo.
dbconfig set_lk_max_objects 1500

# Número de bloqueios (tanto solicitados quanto concedidos)
dbconfig set_lk_max_locks 1500

# Número de bloqueadores
dbconfig set_lk_max_lockers 1500

# Opções de indexação para o banco de dados #1
index      objectClass,uidNumber,gidNumber                  eq
index      cn,sn,uid,displayName                            pres,sub,eq
index      memberUid,mail,givenname                         eq,subinitial
index      sambaSID,sambaPrimaryGroupSID,sambaDomainName    eq
index      zoneName,relativeDomainName                  eq 
index      dhcpHWAddress,dhcpClassData                      eq

# Salve o tempo que a entrada é modificada, para o banco de dados #1
lastmod         on

# Onde armazenar os logs de réplica para o banco de dados #1
# replogfile    /var/lib/ldap/replog
# A userPassword por padrão pode ser alterada
# pela entrada que a possui se estiver autenticada.
# Outros não devem ser capazes de vê-la, exceto a
# entrada admin abaixo
# Essas linhas de acesso se aplicam apenas ao banco de dados #1
access to attrs=userPassword,sambaLMPassword,sambaNTPassword
        by dn="cn=admin,dc=example,dc=com" write
        by anonymous auth
        by self write
        by * none

# Garantir acesso de leitura à base para coisas como
# supportedSASLMechanisms.  Sem isso você pode
# ter problemas com SASL não sabendo quais
# mecanismos estão disponíveis e assim por diante.
# Note que isso é coberto pela ACL 'access to *'
# abaixo também, mas se você mudar isso como as pessoas
# costumam fazer, você ainda precisará disso se você
# quiser que o SASL (e possivelmente outras coisas) funcione
# felizmente.
access to dn.base="" by * read

# O dn admin tem acesso total de escrita, todos os outros
# podem ler tudo.
access to *
        by dn="cn=admin,dc=example,dc=com" write
        by * read

# Para suporte de Roaming do Netscape, cada usuário recebe um
# perfil de roaming para o qual eles têm acesso de escrita a
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=example,dc=com" write
#        by dnattr=owner write

#######################################################################
# Diretrizes Específicas para o banco de dados #2, do tipo 'outro' (pode ser bdb também):
# Diretrizes específicas do banco de dados se aplicam a este banco de dados até que outro
# diretiva 'database' ocorra
#database        

# A base do seu diretório para o banco de dados #2
#suffix         "dc=debian,dc=org"

Além disso, você deve editar o arquivo de configuração do LDAP.

vi /etc/ldap/ldap.conf

Adicione as seguintes linhas: host 127.0.0.1
base dc=example,dc=com

Depois, reinicie o servidor LDAP.

/etc/init.d/slapd restart
Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.