Installazione Server · 12 min read · Sep 30, 2025

Installazione di un cluster Web, Email e MySQL Database su Debian 6.0 con ISPConfig 3 - Pagina 2

I passaggi successivi devono essere eseguiti sul server 1 e sul server 2.

Per installare amavisd-new, SpamAssassin e ClamAV, eseguiamo:

 apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

La configurazione di ISPConfig 3 utilizza amavisd che carica internamente la libreria del filtro SpamAssassin, quindi possiamo fermare SpamAssassin per liberare un po’ di RAM:

/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove

Quindi installa Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear e mcrypt come segue:

 apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-curl php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby php5-xcache libapache2-mod-perl2 sudo zip wget

Vedrai la seguente domanda:

Server web da riconfigurare automaticamente: <– apache2
Configurare il database per phpmyadmin con dbconfig-common? <– No

Quindi esegui il seguente comando per abilitare i moduli Apache suexec, rewrite, ssl, actions e include:

a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest

PureFTPd e quota possono essere installati con il seguente comando:

apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool

Modifica il file /etc/default/pure-ftpd-common…

vi /etc/default/pure-ftpd-common

… e assicurati che la modalità di avvio sia impostata su standalone e imposta VIRTUALCHROOT=true:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Modifica il file /etc/inetd.conf per impedire a inetd di provare a avviare ftp:

vi /etc/inetd.conf

Se c’è una riga che inizia con ftp stream tcp, commentala (se non c’è tale file, va bene, e non devi modificare /etc/inetd.conf):

[...]
#:STANDARD: Questi sono servizi standard.
#ftp    stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper
[...]

Se hai dovuto modificare /etc/inetd.conf, riavvia inetd ora:

/etc/init.d/openbsd-inetd restart

Ora configuriamo PureFTPd per consentire sessioni FTP e TLS. FTP è un protocollo molto insicuro perché tutte le password e tutti i dati vengono trasferiti in chiaro. Utilizzando TLS, l’intera comunicazione può essere crittografata, rendendo così FTP molto più sicuro.

Se desideri consentire sessioni FTP e TLS, esegui:

echo 1 > /etc/pure-ftpd/conf/TLS

Per utilizzare TLS, dobbiamo creare un certificato SSL. Lo creo in /etc/ssl/private/, quindi creo prima quella directory:

mkdir -p /etc/ssl/private/

Successivamente, possiamo generare il certificato SSL come segue:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Nome del Paese (codice di 2 lettere) [AU]: <– Inserisci il tuo Nome del Paese (ad es., “IT”).
Nome dello Stato o della Provincia (nome completo) [Some-State]: <– Inserisci il tuo Nome dello Stato o della Provincia.
Nome della Località (ad es., città) []: <– Inserisci la tua Città.
Nome dell’Organizzazione (ad es., azienda) [Internet Widgits Pty Ltd]: <– Inserisci il tuo Nome dell’Organizzazione (ad es., il nome della tua azienda).
Nome dell’Unità Organizzativa (ad es., sezione) []: <– Inserisci il tuo Nome dell’Unità Organizzativa (ad es. “Reparto IT”).
Nome Comune (ad es., IL TUO nome) []: <– Inserisci il Nome di Dominio Completo del sistema (ad es. “server1.example.com”).
Indirizzo Email []: <– Inserisci il tuo Indirizzo Email.

Cambia i permessi del certificato SSL:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Quindi riavvia PureFTPd:

/etc/init.d/pure-ftpd-mysql restart

Modifica /etc/fstab. Il mio appare così (ho aggiunto, usrjquota=aquota.user, grpjquota=aquota.group, jqfmt=vfsv0 alla partizione con il punto di montaggio /):

vi /etc/fstab
# /etc/fstab: informazioni statiche sul file system.
#
# Usa 'blkid' per stampare l'identificatore univoco universale per un
# dispositivo; questo può essere utilizzato con UUID= come un modo più robusto per nominare i dispositivi
# che funziona anche se i dischi vengono aggiunti e rimossi. Vedi fstab(5).
#
#                
proc            /proc           proc    defaults        0       0
# / era su /dev/sda1 durante l'installazione
UUID=92bceda2-5ae4-4e3a-8748-b14da48fb297 /               ext3    errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0       1
# swap era su /dev/sda5 durante l'installazione
UUID=e24b3e9e-095c-4b49-af27-6363a4b7d094 none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Per abilitare la quota, esegui questi comandi:

 mount -o remount /

quotacheck -avugm
quotaon -avug

Installa il server DNS BIND:

apt-get -y install bind9 dnsutils

Installa vlogger, webalizer e awstats:

 apt-get -y install vlogger webalizer awstats geoip-database

Apri /etc/cron.d/awstats dopo…

vi /etc/cron.d/awstats

… e commenta entrambi i cron job in quel file:

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Genera report statici:
 #10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh 

Installa Jailkit: Jailkit è necessario solo se desideri chrootare gli utenti SSH. Può essere installato come segue (importante: Jailkit deve essere installato prima di ISPConfig - non può essere installato dopo!):

apt-get -y install build-essential autoconf automake1.9 libtool flex bison

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./configure
make
make install
cd ..
rm -rf jailkit-2.14*

Installa fail2ban: Questo è facoltativo ma raccomandato, perché il monitor di ISPConfig cerca di mostrare il log:

apt-get install fail2ban

Per far sì che fail2ban monitori PureFTPd e Dovecot, crea il file /etc/fail2ban/jail.local:

vi /etc/fail2ban/jail.local
[pureftpd]
enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

Quindi crea i seguenti due file di filtro:

vi /etc/fail2ban/filter.d/pureftpd.conf
[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Autenticazione fallita per l'utente.*
ignoreregex =
vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf
[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Autenticazione fallita|Login abortito \(autenticazione fallita|Login abortito \(tentato di usare disabilitato|Disconnesso \(autenticazione fallita|Login abortito \(\d+ tentativi di autenticazione).*rip=(?P\S*),.*
ignoreregex =

Riavvia fail2ban dopo:

/etc/init.d/fail2ban restart

Per installare il client webmail SquirrelMail, esegui:

apt-get install squirrelmail

Quindi crea il seguente symlink…

ln -s /usr/share/squirrelmail/ /var/www/webmail

… e configura SquirrelMail:

squirrelmail-configure

Dobbiamo dire a SquirrelMail che stiamo usando Dovecot-IMAP/-POP3:

Configurazione di SquirrelMail : Leggi: config.php (1.4.0)

Menu Principale –

  1. Preferenze Organizzazione
  2. Impostazioni Server
  3. Impostazioni Cartella
  4. Opzioni Generali
  5. Temi
  6. Rubriche
  7. Messaggio del Giorno (MOTD)
  8. Plugin
  9. Database
  10. Lingue

D. Imposta impostazioni predefinite per server IMAP specifici

C Attiva colore
S Salva dati
Q Esci

Comando >> <– D

Configurazione di SquirrelMail : Leggi: config.php

Mentre stavamo costruendo SquirrelMail, abbiamo scoperto alcune
preferenze che funzionano meglio con alcuni server che
non funzionano così bene con altri. Se selezioni il tuo
server IMAP, questa opzione imposterà alcune
impostazioni predefinite per quel server.

Si prega di notare che dovrai comunque
verificare che tutto sia corretto. Questo
non cambia tutto. Ci sono
solo alcune impostazioni che questo
cambierà.

Si prega di selezionare il proprio server IMAP:
bincimap = Server IMAP Binc
courier = Server IMAP Courier
cyrus = Server IMAP Cyrus
dovecot = Server IMAP Sicuro Dovecot
exchange = Server IMAP Microsoft Exchange
hmailserver = hMailServer
macosx = Server di posta Mac OS X
mercury32 = Mercury/32
uw = Server IMAP dell’Università di Washington
gmail = Accesso IMAP agli account di posta Google (Gmail)

quit = Non cambiare nulla
Comando >> <– dovecot

Configurazione di SquirrelMail : Leggi: config.php

Mentre stavamo costruendo SquirrelMail, abbiamo scoperto alcune
preferenze che funzionano meglio con alcuni server che
non funzionano così bene con altri. Se selezioni il tuo
server IMAP, questa opzione imposterà alcune
impostazioni predefinite per quel server.

Si prega di notare che dovrai comunque
verificare che tutto sia corretto. Questo
non cambia tutto. Ci sono
solo alcune impostazioni che questo
cambierà.

Si prega di selezionare il proprio server IMAP:
bincimap = Server IMAP Binc
courier = Server IMAP Courier
cyrus = Server IMAP Cyrus
dovecot = Server IMAP Sicuro Dovecot
exchange = Server IMAP Microsoft Exchange
hmailserver = hMailServer
macosx = Server di posta Mac OS X
mercury32 = Mercury/32
uw = Server IMAP dell’Università di Washington
gmail = Accesso IMAP agli account di posta Google (Gmail)

quit = Non cambiare nulla
Comando >> dovecot

imap_server_type = dovecot
default_folder_prefix =
trash_folder = Cestino
sent_folder = Inviati
draft_folder = Bozze
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = detect
delete_folder = false

Premi invio per continuare… <– premi ENTER

Configurazione di SquirrelMail : Leggi: config.php (1.4.0)

Menu Principale –

  1. Preferenze Organizzazione
  2. Impostazioni Server
  3. Impostazioni Cartella
  4. Opzioni Generali
  5. Temi
  6. Rubriche
  7. Messaggio del Giorno (MOTD)
  8. Plugin
  9. Database
  10. Lingue

D. Imposta impostazioni predefinite per server IMAP specifici

C Attiva colore
S Salva dati
Q Esci

Comando >> <– S

Configurazione di SquirrelMail : Leggi: config.php (1.4.0)

Menu Principale –

  1. Preferenze Organizzazione
  2. Impostazioni Server
  3. Impostazioni Cartella
  4. Opzioni Generali
  5. Temi
  6. Rubriche
  7. Messaggio del Giorno (MOTD)
  8. Plugin
  9. Database
  10. Lingue

D. Imposta impostazioni predefinite per server IMAP specifici

C Attiva colore
S Salva dati
Q Esci

Comando >> <– Q

Successivamente abilitiamo un Alias globale /webmail per Squirrelmail:

cd /etc/apache2/conf.d/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
/etc/init.d/apache2 reload

Ora apri /etc/apache2/conf.d/squirrelmail.conf…

vi /etc/apache2/conf.d/squirrelmail.conf

… e aggiungi le seguenti righe al contenitore che assicura che mod_php venga utilizzato per accedere a SquirrelMail, indipendentemente da quale modalità PHP selezioni per il tuo sito web in ISPConfig:

[...]
Alias /webmail /usr/share/squirrelmail

   Options FollowSymLinks

   AddType application/x-httpd-php .php
   php_flag magic_quotes_gpc Off
   php_flag track_vars On
   php_admin_flag allow_url_fopen Off
   php_value include_path .
   php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp
   php_admin_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname
   php_flag register_globals off


   DirectoryIndex index.php

 
# l'accesso a configtest è limitato per impostazione predefinita per prevenire perdite di informazioni

   order deny,allow
   deny from all
   allow from 127.0.0.1


[...]

Crea la directory /var/lib/squirrelmail/tmp…

mkdir /var/lib/squirrelmail/tmp

… e rendila di proprietà dell’utente www-data:

chown www-data /var/lib/squirrelmail/tmp

Ricarica Apache di nuovo:

/etc/init.d/apache2 reload

Questo è già tutto - /etc/apache2/conf.d/squirrelmail.conf definisce un alias chiamato /squirrelmail che punta alla directory di installazione di SquirrelMail /usr/share/squirrelmail.

Ora puoi accedere a SquirrelMail dal tuo sito web come segue:

http://www.example.com/squirrelmail

Puoi anche accedervi dal pannello di controllo ISPConfig vhost come segue (questo non richiede alcuna configurazione in ISPConfig):

http://server1.example.com:8080/squirrelmail

Successivamente installiamo Unison. Unison viene utilizzato per sincronizzare le directory /var/www e /var/vmail tra master e slave

apt-get install unison

Ora installiamo un file di configurazione unison sul primo server.

Sul server 1:

Crea un nuovo file /root/.unison/default.prf sul server1…

mkdir /root/.unison
vi /root/.unison/default.prf

… e aggiungi il seguente contenuto:

# Radici della sincronizzazione
root = /var
root = ssh://192.168.0.106//var/
 
# Percorsi da sincronizzare
path = www
path = vmail
 
# Alcuni regex che specificano nomi e percorsi da ignorare
#ignore = Path stats    ## ignora /var/www/stats
#ignore = Path stats/*  ## ignora /var/www/stats/*
#ignore = Path */stats  ## ignora /var/www/somedir/stats, ma non /var/www/a/b/c/stats
#ignore = Name *stats   ## ignora tutti i file/directory che terminano con "stats"
#ignore = Name stats*   ## ignora tutti i file/directory che iniziano con "stats"
#ignore = Name *.tmp    ## ignora tutti i file con l'estensione .tmp
   
#          Quando impostato su true, questo flag causa l'interfaccia utente a saltare
#          la richiesta di conferme su modifiche non conflittuali. (Più
#          precisamente, quando l'interfaccia utente ha finito di impostare la
#          direzione di propagazione per un'entrata e sta per passare alla
#          successiva, salterà tutte le voci non conflittuali e andrà
#          direttamente al prossimo conflitto.)
auto=true
   
#          Quando questo è impostato su true, l'interfaccia utente non farà domande
#          affatto. Le modifiche non conflittuali verranno propagate;
#          i conflitti verranno saltati.
batch=true
   
#          !Quando questo è impostato su true, Unison richiederà un'ulteriore
#          conferma se sembra che l'intero replica sia stata
#          eliminata, prima di propagare la modifica. Se il flag batch è
#          impostato, la sincronizzazione verrà interrotta. Quando il percorso
#          preferito è utilizzato, la stessa conferma verrà richiesta per
#          i percorsi di primo livello. (Al momento, questo flag influisce solo
#          sull'interfaccia utente testuale.) Vedi anche la preferenza
#          mountpoint.
confirmbigdel=true
   
#          Quando questa preferenza è impostata su true, Unison utilizzerà il
#          tempo di modifica e la lunghezza di un file come un `numero di inode
#          pseudo' quando scansiona le repliche per aggiornamenti, invece di leggere
#          i contenuti completi di ogni file. Sotto Windows, questo può causare
#          a Unison di perdere la propagazione di un aggiornamento se il tempo di
#          modifica e la lunghezza del file non sono stati modificati dall'aggiornamento.
#          Tuttavia, Unison non sovrascriverà mai tale aggiornamento con una
#          modifica dall'altra replica, poiché esegue sempre un controllo sicuro
#          per aggiornamenti appena prima di propagare una modifica. Pertanto, è
#          ragionevole utilizzare questo switch sotto Windows la maggior parte del tempo
#          e occasionalmente eseguire Unison una volta con fastcheck impostato su false,
#          se sei preoccupato che Unison possa aver trascurato un aggiornamento.
#          Il valore predefinito della preferenza è auto, che causa
#          Unison di utilizzare controlli rapidi su repliche Unix (dove è sicuro)
#          e controlli lenti su repliche Windows. Per compatibilità
#          retroattiva, yes, no e default possono essere utilizzati al posto di
#          true, false e auto. Vedi la sezione "Controllo Veloce" per ulteriori
#          informazioni.
fastcheck=true

#          Quando questo flag è impostato su true, gli attributi di gruppo dei
#          file vengono sincronizzati. Se i nomi dei gruppi o gli identificatori di gruppo
#          vengono sincronizzati dipende dalla preferenza numerids.
group=true
   
#          Quando questo flag è impostato su true, gli attributi di proprietario dei
#          file vengono sincronizzati. Se i nomi dei proprietari o gli identificatori dei
#          proprietari vengono sincronizzati dipende dalla preferenza
#          extttnumerids.
owner=true
   
#          Includere la preferenza -prefer root causa Unison sempre a
#          risolvere i conflitti a favore di root, piuttosto che chiedere
#          indicazioni all'utente. (La sintassi di root è la stessa di
#          quella della preferenza root, più i valori speciali newer e older.)
#          Questa preferenza è sovrascritta dalla preferenza preferpartial.
#          Questa preferenza dovrebbe essere utilizzata solo se sei sicuro di sapere
#          cosa stai facendo!
prefer=newer
   
#          Quando questa preferenza è impostata su true, l'interfaccia utente
#          testuale non stamperà nulla, tranne nel caso di errori.
#          Impostare silent su true imposta automaticamente la preferenza batch
#          su true.
silent=true
   
#          Quando questo flag è impostato su true, i tempi di modifica dei file
#          (ma non i modtimes delle directory) vengono propagati.
times=true

Vogliamo automatizzare la sincronizzazione, ecco perché creiamo un cron job per essa su server1.example.tld:

crontab -e
*/5 * * * * /usr/bin/unison &> /dev/null
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.