Server Setup · 9 min read · Sep 09, 2025

Mandriva Directory Server Su Debian Etch

Mandriva Directory Server Su Debian Etch

Version 1.1
Autore: Oliver Meyer

Questo documento descrive come configurare il Mandriva Directory Server (MDS) su Debian Etch. Il sistema risultante fornisce un server per ufficio completo per piccole e medie aziende - facile da amministrare tramite il Mandriva Management Console (MMC) basato sul web.

Caratteristiche principali

  • Amministrazione facile tramite MMC
  • Integrazione OpenLDAP a livello di sistema
  • SAMBA Primary Domain Controller (PDC)
  • Postfix Mailserver con Dovecot, Amavis, Spamassassin e ClamAV (POP3/IMAP/SSL/TLS/Quota)
  • Server DNS BIND
  • Server DHCP ISC
  • Proxy web Squid con SquidGuard

Questo howto è una guida pratica senza alcuna garanzia - non copre i fondamenti teorici. Ci sono molti modi per configurare un sistema del genere - questo è il modo che ho scelto.

Preambolo

Questo howto è piuttosto complesso. Si prega di prendere il proprio tempo, leggerlo ampiamente e seguire i passaggi con attenzione. La minima variazione potrebbe influire sul fatto che la tua configurazione non funzioni correttamente.

1 Preparazione

1.1 Sistema di base

Configura un sistema debian etch standard e aggiornalo. Ho utilizzato la seguente configurazione per questo howto e la macchina virtuale allegata che è disponibile per i nostri abbonati:

Hostname: server1.example.com
Dominio SAMBA: EXAMPLE
IP: 192.168.0.100
Gateway: 192.168.0.2
Tutte le password: howtoforge

1.2 Nome host

Modifica il file hosts - assegna il nome host all’IP del server.

vi /etc/hosts

Dovrebbe apparire così:

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

# Le seguenti righe sono desiderabili per host compatibili con 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

Dopo inserisci il nome host nel file hostname …

echo server1.example.com > /etc/hostname

… e riavvia il sistema.

reboot

Quando il sistema è di nuovo attivo, l’output dei due comandi …

hostname

… e …

hostname -f

… dovrebbe essere:

server1.example.com

1.3 ACL del filesystem

Affinché SAMBA possa mappare le ACL del filesystem tra il server Linux e i client Windows, è necessario aggiungere il supporto ACL al punto di mount corrispondente.

vi /etc/fstab

Aggiungi l’opzione “ acl “ al punto di mount dove verranno memorizzati le directory SAMBA e gli utenti SAMBA avranno le loro home. Nel mio caso è “ / “ - il contenuto dovrebbe apparire così:

# /etc/fstab: informazioni statiche sul file system.
#
#                
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

Dopo rimonta il punto di mount per applicare le modifiche.

mount -o remount /

Se tutto è andato bene, il comando …

mount -l

… dovrebbe mostrare l’opzione “ acl “ per il punto di mount corrispondente:

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

2 Repository

2.1 MDS

Il repository MDS fornisce i pacchetti relativi a MDS e anche pacchetti patchati per bind9 & dhcp3.

vi /etc/apt/sources.list

Aggiungi le seguenti righe al file.

# Repository MDS  
deb http://mds.mandriva.org/pub/mds/debian etch main

2.2 Debian Volatile

Il repository Debian Volatile fornisce pacchetti più recenti per ClamAV & Spamassassin rispetto al repository standard di debian.

vi /etc/apt/sources.list

Aggiungi le seguenti righe al file.

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

2.3 Debian Backports

Il repository Debian Backports fornisce pacchetti più recenti per dovecot.

vi /etc/apt/sources.list

Aggiungi le seguenti righe al file.

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

Dopo aggiorna apt.

apt-get update

3 Pacchetti necessari

3.1 Installazione

Installa i pacchetti necessari per questa configurazione.

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

I pacchetti dovecot attuali nel repository standard di debian hanno un bug in congiunzione con LDAP - quindi devi usare i pacchetti dovecot dai Debian Backports.

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

Se vuoi utilizzare stampanti HP è consigliato installare alcuni pacchetti in più.

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

3.2 Configurazione

Durante l’installazione dei nuovi pacchetti ti verranno poste alcune domande - rispondi come segue.

3.2.1 LDAP

Inserisci la password per l’amministratore LDAP e confermala. ( howtoforge)

3.2.2 Samba

Inserisci un nome per il tuo dominio. ( EXAMPLE)
Seleziona “ No “ quando ti viene chiesto se il smb.conf dovrebbe essere modificato per utilizzare le impostazioni WINS da DHCP.

3.2.3 Postfix

Seleziona “ Internet Site “ come tipo generale di configurazione.
Inserisci “ server1.example.com “ come nome di posta.

3.2.4 Libnss-LDAP

Inserisci “ ldap://127.0.0.1/ “ come URI del server LDAP.
Inserisci “ dc=example,dc=com “ come nome per la base di ricerca.
Seleziona la versione LDAP. ( 3)
Inserisci “ cn=admin,dc=example,dc=com “ come account LDAP per root.
Inserisci la password per l’amministratore LDAP. ( howtoforge)

3.2.5 Libpam-LDAP

Seleziona “ Yes “ quando ti viene chiesto se il root locale dovrebbe essere l’amministratore del database.
Seleziona “ No “ quando ti viene chiesto se il database LDAP richiede accesso.
Inserisci “ cn=admin,dc=example,dc=com “ come account LDAP per root.
Inserisci la password per l’amministratore LDAP. ( howtoforge)

4 Configurazione LDAP

4.1 File di schema

Prima copia i file di schema per MMC, mail, SAMBA, printer, DNS e DHCP nella directory di schema 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

Successivamente includi i file di schema nella configurazione LDAP

vi /etc/ldap/slapd.conf

Includi i file di schema dopo lo schema 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

Abilita il controllo dello schema (sotto i file di schema inclusi).

schemacheck on

4.2 Configurazione di base

In questo passaggio avrai bisogno della password dell’amministratore ldap (che hai definito durante l’installazione del pacchetto nel passaggio 3) in forma crittografata (SSHA) - quindi crittografiamola.

slappasswd -s %ldap_admin_password%

E.g.:

slappasswd -s howtoforge

L’output dovrebbe apparire così:

{SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

Annotalo e procedi - apri il file di configurazione del server LDAP.

vi /etc/ldap/slapd.conf

Cerca la riga commentata con l’entrata per l’amministratore LDAP (rootdn) …

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

… e commentala. Dopo aggiungi una nuova riga subito sotto. Devi inserire la password ldap crittografata che hai generato all’inizio di questo passaggio.

rootpw %encrypted_ldap_admin_password%

E.g.:

rootpw {SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

Successivamente dobbiamo modificare le opzioni di indicizzazione per il database. Cerca la seguente entrata:

# Opzioni di indicizzazione per il database #1

Rimuovi la riga sottostante …

index objectClass eq

… e inserisci le seguenti righe:

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

Ora aggiungi SAMBA all’elenco di accesso per il database. Cerca la seguente riga:

access to attrs=userPassword,shadowLastChange

Cambia in modo che appaia così:

access to attrs=userPassword,sambaLMPassword,sambaNTPassword

A questo punto il file di configurazione del server LDAP dovrebbe apparire così:

# Questo è il file di configurazione principale di slapd. Vedi slapd.conf(5) per ulteriori
# informazioni sulle opzioni di configurazione.
#######################################################################
# Direttive globali:
# Caratteristiche da consentire
#allow bind_v2
# Definizioni di schema 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

# Dove viene messo il file pid. Lo script init.d
# non fermerà il server se lo cambi.
pidfile         /var/run/slapd/slapd.pid

# Elenco di argomenti che sono stati passati al server
argsfile        /var/run/slapd/slapd.args

# Leggi slapd.conf(5) per possibili valori
loglevel        0

# Dove sono memorizzati i moduli caricati dinamicamente
modulepath      /usr/lib/ldap
moduleload      back_bdb

# Il numero massimo di voci che viene restituito per un'operazione di ricerca
sizelimit 500

# Il parametro tool-threads imposta la quantità effettiva di CPU utilizzata
# per l'indicizzazione.
tool-threads 1

#######################################################################
# Direttive specifiche del backend per bdb:
# Le direttive specifiche del backend si applicano a questo backend fino a quando non si verifica un'altra
# direttiva 'backend'
backend         bdb
checkpoint 512 30

#######################################################################
# Direttive specifiche del backend per 'other':
# Le direttive specifiche del backend si applicano a questo backend fino a quando non si verifica un'altra
# direttiva 'backend'
#backend                

#######################################################################
# Direttive specifiche per il database #1, di tipo bdb:
# Le direttive specifiche per il database si applicano a questo database fino a quando non si verifica un'altra
# direttiva 'database'
database        bdb

# La base della tua directory nel database #1
suffix          "dc=example,dc=com"

# direttiva rootdn per specificare un superutente sul database. Questo è necessario
# per syncrepl.
rootdn          "cn=admin,dc=example,dc=com"
rootpw          {SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

# Dove i file del database sono fisicamente memorizzati per il database #1
directory       "/var/lib/ldap"

# Per il pacchetto Debian utilizziamo 2MB come predefinito ma assicurati di aggiornare questo
# valore se hai molta RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge ha segnalato che doveva impostare questo valore incredibilmente alto
# per far funzionare slapd. Vedi http://bugs.debian.org/303057
# per ulteriori informazioni.
# Numero di oggetti che possono essere bloccati contemporaneamente.
dbconfig set_lk_max_objects 1500

# Numero di blocchi (sia richiesti che concessi)
dbconfig set_lk_max_locks 1500

# Numero di lockers
dbconfig set_lk_max_lockers 1500

# Opzioni di indicizzazione per il database #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

# Salva il tempo in cui l'entrata viene modificata, per il database #1
lastmod         on

# Dove memorizzare i log delle repliche per il database #1
# replogfile    /var/lib/ldap/replog
# La userPassword per impostazione predefinita può essere cambiata
# dall'entrata che la possiede se sono autenticati.
# Altri non dovrebbero essere in grado di vederlo, tranne che per
# l'entrata admin qui sotto
# Queste righe di accesso si applicano solo al database #1
access to attrs=userPassword,sambaLMPassword,sambaNTPassword
        by dn="cn=admin,dc=example,dc=com" write
        by anonymous auth
        by self write
        by * none

# Assicurati l'accesso in lettura alla base per cose come
# supportedSASLMechanisms.  Senza questo potresti
# avere problemi con SASL che non sa quali
# meccanismi sono disponibili e simili.
# Nota che questo è coperto anche dall'ACL 'access to *'
# qui sotto ma se cambi quello come le persone
# sono solite fare avrai comunque bisogno di questo se vuoi
# che SASL (e possibili altre cose) funzionino
# felicemente.
access to dn.base="" by * read

# L'amministratore dn ha accesso completo in scrittura, tutti gli altri
# possono leggere tutto.
access to *
        by dn="cn=admin,dc=example,dc=com" write
        by * read

# Per il supporto di roaming Netscape, ogni utente ottiene un roaming
# profilo per il quale hanno accesso in scrittura a
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=example,dc=com" write
#        by dnattr=owner write

#######################################################################
# Direttive specifiche per il database #2, di tipo 'other' (può essere bdb anche):
# Le direttive specifiche per il database si applicano a questo database fino a quando non si verifica un'altra
# direttiva 'database'
#database        

# La base della tua directory per il database #2
#suffix         "dc=debian,dc=org"

Inoltre devi modificare il file di configurazione LDAP.

vi /etc/ldap/ldap.conf

Aggiungi le seguenti righe: host 127.0.0.1
base dc=example,dc=com

Dopo riavvia il server LDAP.

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

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.