Server Setup · 27 min read · Nov 04, 2025
Il Server Perfetto - Debian 10 (Nginx, BIND, Dovecot, ISPConfig 3.2)

Questo tutorial mostra come preparare un server Debian 10 (con Nginx, BIND, Dovecot) per l’installazione di ISPConfig 3.2, e come installare ISPConfig 3.2. ISPConfig 3 è un pannello di controllo per l’hosting web che consente di configurare i seguenti servizi tramite un browser web: server web Apache o nginx, server di posta Postfix, server IMAP/POP3 Courier o Dovecot, MySQL, server DNS BIND o MyDNS, PureFTPd, SpamAssassin, ClamAV e molti altri. Questa configurazione copre il server web Nginx, BIND come server DNS e Dovecot come server IMAP / POP3.
1 Nota Preliminare
In questo tutorial, utilizzo il nome host server1.example.com con l’indirizzo IP 192.168.0.100 e il gateway 192.168.0.1. Queste impostazioni potrebbero differire per te, quindi devi sostituirle dove appropriato. Prima di procedere, è necessario avere un’installazione minima di Debian 10. Questo potrebbe essere un’immagine Debian minimale fornita dal tuo provider di hosting oppure puoi utilizzare il tutorial Minimal Debian Server per configurare il sistema di base.
Tutti i comandi qui sotto vengono eseguiti come utente root. Accedi come utente root direttamente oppure accedi come tuo utente normale e poi usa il comando
su -per diventare utente root sul tuo server prima di procedere. IMPORTANTE: Devi usare ‘su -‘ e non solo ‘su’, altrimenti la tua variabile PATH viene impostata in modo errato da Debian.
2 Installa il Server SSH
Se non hai installato il server OpenSSH durante l’installazione del sistema, puoi farlo ora:
apt-get -y install ssh openssh-serverDa ora in poi puoi utilizzare un client SSH come PuTTY e connetterti dal tuo workstation al tuo server Debian 10 e seguire i passaggi rimanenti di questo tutorial.
3 Installa un editor di testo shell (Opzionale)
Userò l’editor di testo nano in questo tutorial. Alcuni utenti preferiscono l’editor classico vi, quindi installerò entrambi gli editor qui. Il programma vi predefinito ha un comportamento strano su Debian e Ubuntu; per risolvere questo, installiamo vim-nox:
apt-get -y install nano vim-nox(Non è necessario farlo se utilizzi un editor di testo diverso come joe.)
4 Configura il Nome Host
Il nome host del tuo server dovrebbe essere un sottodominio come “server1.example.com”. Non utilizzare un nome di dominio senza parte di sottodominio come “example.com” come nome host poiché questo causerà problemi in seguito con la configurazione della tua posta. Prima, dovresti controllare il nome host in /etc/hosts e cambiarlo quando necessario. La riga dovrebbe essere: “Indirizzo IP - spazio - nome host completo incl. dominio - spazio - parte di sottodominio”. Modifica /etc/hosts. Fai in modo che appaia così:
nano /etc/hosts127.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 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersPoi modifica il file /etc/hostname:
nano /etc/hostnameDovrebbe contenere solo la parte di sottodominio, nel nostro caso:
server1Infine, riavvia il server per applicare la modifica:
rebootAccedi di nuovo e controlla se il nome host è corretto ora con questi comandi:
hostname
hostname -fL’output dovrebbe essere simile a questo:
root@server1:/tmp# hostname
server1
root@server1:/tmp# hostname -f
server1.example.com5 Aggiorna la Tua Installazione di Debian
Prima assicurati che il tuo /etc/apt/sources.list contenga il repository buster/updates (questo assicura che tu riceva sempre gli aggiornamenti più recenti per il virus scanner ClamAV - questo progetto pubblica versioni molto frequentemente, e a volte le versioni vecchie smettono di funzionare), e che i repository contrib e non-free siano abilitati.
nano /etc/apt/sources.listdeb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free
deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-freeEsegui
apt-get updateper aggiornare il database dei pacchetti apt e
apt-get upgradeper installare gli aggiornamenti più recenti (se ce ne sono).
6 Cambia la Shell Predefinita
/bin/sh è un collegamento simbolico a /bin/dash, tuttavia abbiamo bisogno di /bin/bash, non di /bin/dash. Pertanto facciamo questo:
dpkg-reconfigure dashUsare dash come shell di sistema predefinita (/bin/sh)? <– No
Se non lo fai, l’installazione di ISPConfig fallirà.
7 Sincronizza l’Orologio di Sistema
È una buona idea sincronizzare l’orologio di sistema con un server NTP ( network time protocol) su Internet. Esegui semplicemente
apt-get install ntpe il tuo tempo di sistema sarà sempre sincronizzato.
8 Installa Postfix, Dovecot, MySQL, rkhunter e binutils
Possiamo installare Postfix, Dovecot, MySQL, rkhunter e Binutils con un solo comando:
apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo curlTi verranno poste le seguenti domande:
Tipo generale di configurazione della posta: <– Internet Site
Nome di sistema della posta: <– server1.example.com
Per garantire l’installazione sicura di MariaDB / MySQL e disabilitare il database di test, esegui questo comando:
mysql_secure_installationNon dobbiamo cambiare la password root di MariaDB poiché ne abbiamo appena impostata una nuova durante l’installazione. Rispondi alle domande come segue:
Change the root password? [Y/n] <-- y
New password: <-- Inserisci una nuova password root del database
Re-enter new password: <-- Ripeti la password root del database
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- ySuccessivamente, apri le porte TLS/SSL e di invio in Postfix:
nano /etc/postfix/master.cfDecommenta le sezioni di invio e smtps come segue e aggiungi righe dove necessario affinché questa sezione del file master.cf appaia esattamente come quella qui sotto. IMPORTANTE: Rimuovi il # davanti alle righe che iniziano con smtps e invio e non solo dalle righe -o dopo queste righe!
[...]
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...] Riavvia Postfix successivamente:
service postfix restartVogliamo che MariaDB ascolti su tutte le interfacce, non solo localhost, quindi modifichiamo /etc/mysql/mariadb.conf.d/50-server.cnf e commentiamo la riga bind-address = 127.0.0.1:
nano /etc/mysql/mariadb.conf.d/50-server.cnf[...]
# Invece di skip-networking, il predefinito è ora ascoltare solo su
# localhost, che è più compatibile e non è meno sicuro.
#bind-address = 127.0.0.1
[...] Salva il file. Poi imposta il metodo di autenticazione della password in MariaDB su nativo in modo da poter utilizzare PHPMyAdmin in seguito per connetterti come utente root:
echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u rootModifica il file /etc/mysql/debian.cnf e imposta la password MYSQL / MariaDB lì due volte nelle righe che iniziano con la parola password.
nano /etc/mysql/debian.cnfLa password root di MySQL che deve essere aggiunta è mostrata in rosso. In questo esempio, la password è “howtoforge”.
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
basedir = /usrPer prevenire l’errore ‘ Error in accept: Too many open files ‘ imposteremo limiti di file aperti più elevati per MariaDB ora.
Apri il file /etc/security/limits.conf con un editor:
nano /etc/security/limits.confe aggiungi queste righe alla fine del file.
mysql soft nofile 65535
mysql hard nofile 65535Successivamente, crea una nuova directory /etc/systemd/system/mysql.service.d/ con il comando mkdir.
mkdir -p /etc/systemd/system/mysql.service.d/e aggiungi un nuovo file all’interno:
nano /etc/systemd/system/mysql.service.d/limits.confincolla le seguenti righe in quel file:
[Service]
LimitNOFILE=infinitySalva il file e chiudi l’editor nano.
Poi ricarichiamo systemd e riavviamo MariaDB:
systemctl daemon-reload
systemctl restart mariadbIgnora l’avviso: “ Warning: The unit file, source configuration file or drop-ins of mariadb.service changed on disk. Run ‘systemctl daemon-reload’ to reload units. “.
Installa il sistema dbconfig-common:
apt-get install dbconfig-common dbconfig-mysqlAttualmente c’è un problema con il sistema dbconfig-common di Debian che impedisce l’installazione di RoundCube in seguito, risolvilo eseguendo questo comando:
sed -i -r 's/_dbc_nodb="yes" dbc_mysql_exec/_dbc_nodb="yes"; dbc_mysql_exec/g' /usr/share/dbconfig-common/internal/mysqlOra controlla che il networking sia abilitato. Esegui
netstat -tap | grep mysqlL’output dovrebbe apparire così:
root@server1:~# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 4027/mysqld
root@server1:~#9 Installa Amavisd-new, SpamAssassin e ClamAV
Per installare amavisd-new, SpamAssassin e ClamAV, eseguiamo:
apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip 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 libdbd-mysql-perl postgreyLa configurazione di ISPConfig 3 utilizza amavisd che carica internamente la libreria filtro di SpamAssassin, quindi possiamo fermare SpamAssassin per liberare un po’ di RAM:
systemctl stop spamassassin
systemctl disable spamassassin10 Installa Nginx, PHP (PHP-FPM) e Fcgiwrap
Nginx è disponibile come pacchetto per Debian che possiamo installare come segue:
apt-get install nginxSe Apache2 è già installato sul sistema, fermalo ora…
systemctl stop apache2Il messaggio “ Failed to stop apache2.service: Unit apache2.service not loaded. “ va bene e non indica un errore.
… e rimuovi i collegamenti di avvio del sistema di Apache:
systemctl disable apache2Avvia nginx successivamente:
systemctl start nginx(Se sia Apache2 che nginx sono installati, l’installatore di ISPConfig ti chiederà quale vuoi utilizzare - rispondi nginx in questo caso. Se solo uno di questi due è installato, ISPConfig farà la configurazione necessaria automaticamente.)
Possiamo far funzionare PHP 7.3 in nginx tramite PHP-FPM (PHP-FPM (FastCGI Process Manager) è un’implementazione alternativa di PHP FastCGI con alcune funzionalità aggiuntive utili per siti di qualsiasi dimensione, specialmente siti più trafficati) che installiamo come segue:
apt-get install php7.3-fpmPHP-FPM è un processo daemon che esegue un server FastCGI sul socket /var/run/php/php7.3-fpm.sock.
Per ottenere il supporto MySQL in PHP, possiamo installare il pacchetto php7.3-mysql. È una buona idea installare anche alcuni altri moduli PHP poiché potresti averne bisogno per le tue applicazioni. Puoi cercare i moduli PHP disponibili in questo modo:
apt-cache search php7Scegli quelli di cui hai bisogno e installali in questo modo:
apt-get install php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi php-pear mcrypt imagemagick libruby php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached php7.3-soap php7.3-fpm php7.3-opcache php-apcuSuccessivamente, apri /etc/php/7.3/fpm/php.ini…
nano /etc/php/7.3/fpm/php.ini… e imposta cgi.fix_pathinfo=0 e il tuo fuso orario:
[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Berlin"
[...] (Puoi trovare tutti i fusi orari disponibili nelle directory /usr/share/zoneinfo e nelle sue sottodirectory.)
Ora ricarica PHP-FPM:
systemctl restart php7.3-fpmPer ottenere il supporto CGI in nginx, installiamo Fcgiwrap.
Fcgiwrap è un wrapper CGI che dovrebbe funzionare anche per script CGI complessi e può essere utilizzato per ambienti di hosting condiviso poiché consente a ciascun vhost di utilizzare la propria directory cgi-bin.
Installa il pacchetto fcgiwrap:
apt-get install fcgiwrapDopo l’installazione, il daemon fcgiwrap dovrebbe già essere avviato; il suo socket è /var/run/fcgiwrap.socket. Se non è in esecuzione, puoi utilizzare lo script fservice fcgiwrap per avviarlo.
Questo è tutto! Ora quando crei un vhost nginx, ISPConfig si occuperà della corretta configurazione del vhost.
10.1 Installa phpMyAdmin
Dalla Debian 10, PHPMyAdmin non è più disponibile come pacchetto .deb. Pertanto lo installeremo da sorgente.
Crea le cartelle per PHPMyadmin:
mkdir /usr/share/phpmyadmin
mkdir /etc/phpmyadmin
mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin
touch /etc/phpmyadmin/htpasswd.setupVai nella directory /tmp e scarica le sorgenti di PHPMyAdmin:
cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gzEstrai il file di archivio scaricato e sposta i file nella cartella /usr/share/phpmyadmin e pulisci la directory /tmp.
tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/
rm phpMyAdmin-4.9.0.1-all-languages.tar.gz
rm -rf phpMyAdmin-4.9.0.1-all-languagesCrea un nuovo file di configurazione per PHPMyaAdmin basato sul file di esempio fornito:
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.phpApri il file di configurazione con l’editor nano:
nano /usr/share/phpmyadmin/config.inc.phpImposta una password sicura (blowfish secret) che deve essere lunga 32 caratteri:
$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* DEVI COMPILARE QUESTO PER L'AUTENTICAZIONE COOKIE! */Non usare il mio esempio di segreto blowfish, imposta il tuo!
Poi aggiungi una riga per impostare la directory che PHPMyAdmin utilizzerà per memorizzare i file temporanei:
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';Nel passaggio successivo, configureremo il negozio di configurazione di phpMyadmin (database).
Accedi a MariaDB come utente root:
mysql -u root -pNella shell di MariaDB, crea un nuovo database per PHPMyAdmin:
MariaDB [(none)]> CREATE DATABASE phpmyadmin;Poi crea un nuovo utente:
MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';Sostituisci la parola mypassword con una password sicura a tua scelta nei comandi sopra e sotto, usa la stessa password entrambe le volte. Poi concedi all’utente accesso a questo database e ricarica i permessi del database.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXITInfine, carica le tabelle SQL nel database:
mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sqlInserisci la password root di MariaDB quando richiesto.
Tutto ciò che dobbiamo fare ora è impostare i dettagli dell’utente phpmyadmin nel file di configurazione. Apri di nuovo il file nell’editor nano:
nano /usr/share/phpmyadmin/config.inc.phpScorri verso il basso fino a vedere le righe qui sotto e modificale:
/* Utente utilizzato per manipolare con lo storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'mypassword';
/* Database e tabelle di storage */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';Ho evidenziato le righe in rosso che ho modificato. Sostituisci mypassword con la password che hai scelto per l’utente phpmyadmin. Nota che gli // davanti alle righe sono stati rimossi!
Dopo aver installato ISPConfig 3.2, puoi accedere a phpMyAdmin come segue:
Il vhost delle app ISPConfig sulla porta 8081 per nginx viene fornito con una configurazione di phpMyAdmin, quindi puoi utilizzare http://server1.example.com:8081/phpmyadmin o http://server1.example.com:8081/phpMyAdmin per accedere a phpMyAdmin.
Se desideri utilizzare un alias /phpmyadmin o /phpMyAdmin che puoi utilizzare dai tuoi siti web, questo è un po’ più complicato rispetto ad Apache perché nginx non ha alias globali (cioè, alias che possono essere definiti per tutti i vhosts). Pertanto, devi definire questi alias per ogni vhost da cui desideri accedere a phpMyAdmin.
Per fare ciò, incolla il seguente codice nel campo Direttive nginx nella scheda Opzioni del sito web in ISPConfig in seguito:
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}Se utilizzi http s invece di http per il tuo vhost, dovresti aggiungere la riga fastcgi_param HTTPS on; alla tua configurazione di phpMyAdmin in questo modo:
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_param HTTPS on; # <-- aggiungi questa riga
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}Se utilizzi sia http che https per il tuo vhost, puoi utilizzare la variabile $https. Vai di nuovo nel campo Direttive nginx, e invece di fastcgi_param HTTPS on; aggiungi la riga fastcgi_param HTTPS $https; in modo da poter utilizzare phpMyAdmin per entrambe le richieste http e https:
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_param HTTPS $https; # <-- aggiungi questa riga
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}11 Installa Let’s Encrypt
ISPConfig utilizza ora acme.sh come client di Let’s Encrypt. Installa acme.sh utilizzando il seguente comando:
curl https://get.acme.sh | sh -s12 Installa Mailman
ISPConfig ti consente di gestire (creare/modificare/eliminare) liste di distribuzione Mailman. Se desideri utilizzare questa funzionalità, installa Mailman come segue:
apt-get install mailmanSeleziona almeno una lingua, ad esempio:
Lingue da supportare: <– en (Inglese)
Lista di siti mancanti <– Ok
Prima di poter avviare Mailman, deve essere creata una prima lista di distribuzione chiamata mailman:
newlist mailmanroot@server1:~# newlist mailman
Inserisci l’email della persona che gestisce la lista: <– indirizzo email dell’amministratore, ad esempio [email protected]
Password iniziale di mailman: <– password dell’amministratore per la lista di mailman
Per completare la creazione della tua lista di distribuzione, devi modificare il tuo file /etc/aliases (o equivalente) aggiungendo le seguenti righe, e possibilmente eseguendo il programma newaliases:
lista di distribuzione mailman
mailman: “|/var/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/var/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/var/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/var/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/var/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/var/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/var/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/var/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/var/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/var/lib/mailman/mail/mailman unsubscribe mailman”
Premi invio per notificare il proprietario di mailman… <– INVIO
root@server1:~#
Apri /etc/aliases successivamente…
nano /etc/aliases… e aggiungi le seguenti righe:
[...]
## lista di distribuzione mailman
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" Esegui
newaliasessuccessivamente e riavvia Postfix:
systemctl restart postfixPoi avvia il daemon di Mailman:
systemctl restart mailmanDopo aver installato ISPConfig 3, puoi accedere a Mailman come segue:
Il vhost delle app ISPConfig sulla porta 8081 per nginx viene fornito con una configurazione di Mailman, quindi puoi utilizzare http://server1.example.com:8081/cgi-bin/mailman/admin/
Se desideri utilizzare Mailman dai tuoi siti web, questo è un po’ più complicato rispetto ad Apache perché nginx non ha alias globali (cioè, alias che possono essere definiti per tutti i vhosts). Pertanto, devi definire questi alias per ogni vhost da cui desideri accedere a Mailman.
Per fare ciò, incolla il seguente codice nel campo Direttive nginx nella scheda Opzioni del sito web in ISPConfig:
location /cgi-bin/mailman {
root /usr/lib/;
fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
location /images/mailman {
alias /usr/share/images/mailman;
}
location /pipermail {
alias /var/lib/mailman/archives/public;
autoindex on;
}Questo definisce l’alias /cgi-bin/mailman/ per il tuo vhost, il che significa che puoi accedere all’interfaccia di amministrazione di Mailman per una lista su http://
Sotto http://
13 Installa PureFTPd e Quota
PureFTPd e quota possono essere installati con il seguente comando:
apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatoolModifica il file /etc/default/pure-ftpd-common…
nano /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
[...] Ora configuriamo PureFTPd per consentire sessioni FTP e TLS. FTP è un protocollo molto insicuro poiché 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/TLSPer utilizzare TLS, dobbiamo creare un certificato SSL. Lo creo in /etc/ssl/private/, quindi creo prima quella directory:
mkdir -p /etc/ssl/private/Dopo, 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.pemNome del Paese (codice di 2 lettere) [AU]: <– Inserisci il tuo Nome del Paese (ad esempio, “DE”).
Nome dello Stato o della Provincia (nome completo) [Some-State]: <– Inserisci il tuo Nome dello Stato o della Provincia.
Nome della Località (es. città) []: <– Inserisci la tua Città.
Nome dell’Organizzazione (es. azienda) [Internet Widgits Pty Ltd]: <– Inserisci il tuo Nome dell’Organizzazione (ad esempio, il nome della tua azienda).
Nome dell’Unità Organizzativa (es. sezione) []: <– Inserisci il tuo Nome dell’Unità Organizzativa (ad esempio, “IT Department”).
Nome Comune (es. FQDN del server o IL TUO nome) []: <– Inserisci il Nome Host del server, nel mio caso: server1.example.com.
Indirizzo Email []: <– Inserisci il tuo Indirizzo Email.
Cambia i permessi del certificato SSL:
chmod 600 /etc/ssl/private/pure-ftpd.pemPoi riavvia PureFTPd:
systemctl restart pure-ftpd-mysqlModifica /etc/fstab. Il mio appare così (ho aggiunto,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 alla partizione con il punto di montaggio /):
nano /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).
#
#
# / era su /dev/sda1 durante l'installazione
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap era su /dev/sda5 durante l'installazione
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 Per abilitare la quota, esegui questi comandi:
mount -o remount /quotacheck -avugm
quotaon -avug14 Installa il Server DNS BIND
BIND può essere installato come segue:
apt-get install bind9 dnsutilsSe il tuo server è una macchina virtuale, è altamente raccomandato installare il demone haveged per ottenere una maggiore entropia per la firma DNSSEC. Puoi installare haveged anche su server non virtuali, non dovrebbe fare male.
apt-get -y install haveged
systemctl enable haveged
systemctl start havegedUna spiegazione su questo argomento può essere trovata qui.
15 Installa Webalizer, AWStats e GoAccess
Webalizer e AWStats possono essere installati come segue:
apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perlApri /etc/cron.d/awstats successivamente…
nano /etc/cron.d/awstats… e commenta tutto in quel file:
#MAILTO=root
#*/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 ] && /usr/share/awstats/tools/buildstatic.shInstallando l’ultima versione di GoAccess direttamente dal repository di GoAccess:
echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
apt-get update
apt-get install goaccess16 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 install build-essential autoconf automake libtool flex bison debhelper binutilscd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz
tar xvfz jailkit-2.20.tar.gz
cd jailkit-2.20
echo 5 > debian/compat
./debian/rules binaryOra puoi installare il pacchetto Jailkit.deb come segue:
cd ..
dpkg -i jailkit_2.20-1_*.deb
rm -rf jailkit-2.20*17 Installa Fail2ban e UFW Firewall
Questo è facoltativo ma raccomandato, perché il monitor di ISPConfig cerca di mostrare il log:
apt-get install fail2banPer far sì che fail2ban monitori PureFTPd e Dovecot, crea il file /etc/fail2ban/jail.local:
nano /etc/fail2ban/jail.local[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3
[dovecot]
enabled = true
filter = dovecot
logpath = /var/log/mail.log
maxretry = 5
[postfix-sasl]
enabled = true
port = smtp
filter = postfix[mode=auth]
logpath = /var/log/mail.log
maxretry = 3Riavvia fail2ban successivamente:
systemctl restart fail2banPer installare il firewall UFW, esegui questo comando apt:
apt-get install ufw18 Installa RoundCube
Installa RoundCube con questo comando:
apt-get install roundcube roundcube-core roundcube-mysql roundcube-pluginsL’installatore chiederà le seguenti domande:
Configurare il database per roundcube con dbconfig.common? <-- yes
Password dell'applicazione MySQL per roundcube: <-- premi invio
Password dell'utente amministrativo dei database: <-- inserisci qui la password root di MySQL.Poi modifica il file di configurazione di RoundCube /etc/roundcube/config.inc.php e regola alcune impostazioni:
nano /etc/roundcube/config.inc.phpImposta il default_host su localhost e il smtp_server.
$config['default_host'] = 'localhost';
$config['smtp_server'] = 'localhost';
$config['smtp_port'] = 25;ISPConfig ha alcune configurazioni nel vhost delle app nginx per squirrelmail che funzionano anche per roundcube. Lo attiviamo con:
ln -s /usr/share/roundcube /usr/share/squirrelmailhttp://192.168.0.100:8081/webmail
http://server1.example.com:8081/webmail (dopo aver installato ISPConfig, vedere il capitolo successivo)

19 Installa ISPConfig 3
Prima di avviare l’installazione di ISPConfig, assicurati che Apache sia fermo (se è installato - è possibile che alcuni dei tuoi pacchetti installati abbiano installato Apache come dipendenza senza che tu lo sapessi). Se Apache2 è già installato sul sistema, fermalo ora…
systemctl stop apache2… e rimuovi i collegamenti di avvio del sistema di Apache:
update-rc.d -f apache2 removeAssicurati che nginx sia in esecuzione:
systemctl start nginx(Se hai sia Apache che nginx installati, l’installatore ti chiederà quale vuoi utilizzare: Apache e nginx rilevati. Seleziona il server da utilizzare per ISPConfig: (apache,nginx) [apache]:
Digita nginx. Se solo Apache o nginx sono installati, questo viene rilevato automaticamente dall’installatore e non viene posta alcuna domanda.)
Per installare ISPConfig 3.2 dall’ultima versione rilasciata, fai così:
cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/Il passaggio successivo è eseguire
php -q install.phpQuesto avvierà l’installatore di ISPConfig 3. L’installatore configurerà tutti i servizi come Postfix, Nginx, Dovecot, ecc. per te.
# php -q install.php
--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------
>> Configurazione inizialeSistema Operativo: Debian 10.0 (Buster) o compatibileSeguendo ci saranno alcune domande per la configurazione primaria, quindi fai attenzione.
I valori predefiniti sono tra [parentesi] e possono essere accettati con .
Tappa "quit" (senza virgolette) per fermare l'installatore.
Seleziona lingua (en,de) [en]: <-- Premi InvioModalità di installazione (standard,esperto) [standard]: <-- Premi InvioNome host completamente qualificato (FQDN) del server, ad es. server1.domain.tld [server1.canomi.com]: <-- Premi InvioNome host del server MySQL [localhost]: <-- Premi InvioPorta del server MySQL [3306]: <-- Premi InvioNome utente root di MySQL [root]: <-- Premi InvioPassword root di MySQL []: <-- Inserisci la tua password root di MySQLDatabase MySQL da creare [dbispconfig]: <-- Premi InvioCharset MySQL [utf8]: <-- Premi InvioApache e nginx rilevati. Seleziona il server da utilizzare per ISPConfig: (apache,nginx) [apache]: <-- nginx
Configurazione di Postgrey
Configurazione di Postfix
Generazione di una chiave privata RSA a 4096 bit
.......................................................................++
........................................................................................................................................++
scrittura della nuova chiave privata in 'smtpd.key'
-----
Stai per essere chiesto di inserire informazioni che saranno incorporate
nel tuo certificato di richiesta.
Ciò che stai per inserire è ciò che viene chiamato un Nome Distinto o DN.
Ci sono molti campi, ma puoi lasciare alcuni vuoti
Per alcuni campi ci sarà un valore predefinito,
Se inserisci '.', il campo verrà lasciato vuoto.
-----
Nome del Paese (codice di 2 lettere) [AU]: <-- Inserisci il codice di 2 lettere del paese
Nome dello Stato o della Provincia (nome completo) [Some-State]: <-- Inserisci il nome dello stato
Nome della Località (es. città) []: <-- Inserisci la tua città
Nome dell'Organizzazione (es. azienda) [Internet Widgits Pty Ltd]: <-- Inserisci il nome della tua azienda o premi invio
Nome dell'Unità Organizzativa (es. sezione) []: <-- Premi Invio
Nome Comune (es. FQDN del server o IL TUO nome) []: <-- Inserisci il nome host del server, nel mio caso: server1.example.com
Indirizzo Email []: <-- Premi Invio
Configurazione di Mailman
Configurazione di Dovecot
Configurazione di Spamassassin
Configurazione di Amavisd
Configurazione di Getmail
Configurazione di BIND
Configurazione di Jailkit
Configurazione di Pureftpd
Configurazione di Nginx
Configurazione di vlogger
[INFO] servizio Metronome XMPP Server non rilevatoConfigurazione di UFW Firewall
Configurazione di Fail2ban
[INFO] servizio OpenVZ non rilevato
Configurazione delle app vhost
Installazione di ISPConfig
Porta ISPConfig [8080]:Password admin [admin]: <-- Inserisci qui la password desiderata per l'utente admin di ISPConfigVuoi una connessione sicura (SSL) all'interfaccia web di ISPConfig (y,n) [y]: <-- Premi InvioGenerazione di una chiave privata RSA, modulo lungo 4096 bit
.......................++
................................................................................................................................++
e è 65537 (0x10001)
Stai per essere chiesto di inserire informazioni che saranno incorporate
nel tuo certificato di richiesta.
Ciò che stai per inserire è ciò che viene chiamato un Nome Distinto o DN.
Ci sono molti campi, ma puoi lasciare alcuni vuoti
Per alcuni campi ci sarà un valore predefinito,
Se inserisci '.', il campo verrà lasciato vuoto.
-----
Nome del Paese (codice di 2 lettere) [AU]: <-- Inserisci il codice di 2 lettere del paese
Nome dello Stato o della Provincia (nome completo) [Some-State]: <-- Inserisci il nome dello stato
Nome della Località (es. città) []: <-- Inserisci la tua città
Nome dell'Organizzazione (es. azienda) [Internet Widgits Pty Ltd]: <-- Inserisci il nome della tua azienda o premi invio
Nome dell'Unità Organizzativa (es. sezione) []: <-- Premi Invio
Nome Comune (es. FQDN del server o IL TUO nome) []: <-- Inserisci il nome host del server, nel mio caso: server1.example.com
Indirizzo Email []: <-- Premi InvioPer favore inserisci i seguenti attributi 'extra'
che saranno inviati con la tua richiesta di certificato
Una password di sfida []: <-- Premi Invio
Un nome aziendale opzionale []: <-- Premi Invio
scrittura della chiave RSA
Configurazione DBServer
Installazione del crontab di ISPConfig
nessun crontab per root
nessun crontab per getmail
Rilevamento degli indirizzi IP
Riavvio dei servizi ...
Installazione completata.L’installatore configura automaticamente tutti i servizi sottostanti, quindi non è necessaria alcuna configurazione manuale.
Dopo puoi accedere a ISPConfig 3 sotto http(s)://server1.example.com:8080/ o http(s)://192.168.1.100:8080/ (http o https dipende da ciò che hai scelto durante l’installazione). Accedi con il nome utente admin e la password admin (dovresti cambiare la password predefinita dopo il tuo primo accesso):


Infine, sistemiamo alcuni permessi dell’installazione di RoundCube.
chown root:ispapps /etc/roundcube/debian-db.php
chmod 640 /etc/roundcube/debian-db.php
chown root:ispapps /etc/roundcube/config.inc.php
chmod 640 /etc/roundcube/config.inc.php
chown -R ispapps:adm /var/log/roundcube
chmod -R 750 /var/log/roundcube
chown -R ispapps:ispapps /var/lib/roundcube/temp
chmod -R 750 /var/lib/roundcube/tempIl sistema è ora pronto per essere utilizzato.
Esistono alcuni plugin per integrare RoundCube Webmail con ISPConfig, dai un’occhiata qui per le istruzioni di installazione del plugin ISPConfig RoundCube.
20.1 Manuale di ISPConfig 3
Per imparare come utilizzare ISPConfig 3, ti consiglio vivamente di scaricare il Manuale di ISPConfig 3.
In più di 300 pagine, copre il concetto dietro ISPConfig (amministratore, rivenditori, clienti), spiega come installare e aggiornare ISPConfig 3, include un riferimento per tutti i moduli e campi modulo in ISPConfig insieme a esempi di input validi, e fornisce tutorial per i compiti più comuni in ISPConfig 3. Illustra anche come rendere il tuo server più sicuro e include una sezione di risoluzione dei problemi alla fine.
21 Download dell’immagine della macchina virtuale di questo tutorial
Questo tutorial è disponibile come immagine di macchina virtuale pronta all’uso in formato ovf/ova compatibile con VMWare e Virtualbox. L’immagine della macchina virtuale utilizza i seguenti dettagli di accesso:
Accesso SSH / Shell
Nome utente: administrator
Password: howtoforge
Nome utente: root
Password: howtoforge
Accesso ISPConfig
Nome utente: admin
Password: howtoforge
Accesso MySQL
Nome utente: root
Password: howtoforge
L’IP della VM è 192.168.0.100, può essere cambiato nel file /etc/network/interfaces. Si prega di cambiare tutte le password sopra per garantire la sicurezza della macchina virtuale.
22 Link
- Debian: http://www.debian.org/
- ISPConfig: http://www.ispconfig.org/
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.