Server Setup · 12 min read · Nov 01, 2025

Il Server Perfetto CentOS 7.2 con Apache, Postfix, Dovecot, Pure-FTPD, BIND e ISPConfig 3.1 - Pagina 2

7 Installare Dovecot

Dovecot può essere installato come segue:

yum -y install dovecot dovecot-mysql dovecot-pigeonhole

Crea un file vuoto dovecot-sql.conf e un symlink:

touch /etc/dovecot/dovecot-sql.conf  
ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.conf

Ora crea i link di avvio del sistema e avvia Dovecot:

systemctl enable dovecot  
systemctl start dovecot

8 Installare Postfix

Postfix può essere installato come segue:

yum -y install postfix

Poi disattiva Sendmail e avvia Postfix e MariaDB (MySQL):

systemctl enable mariadb.service  
systemctl start mariadb.service
systemctl stop sendmail.service  
systemctl disable sendmail.service  
systemctl enable postfix.service  
systemctl restart postfix.service

Disabilitiamo sendmail per assicurarci che non venga avviato nel caso sia installato sul tuo server. Quindi il messaggio di errore “Failed to issue method call: Unit sendmail.service not loaded.” può essere ignorato.

9 Installare Getmail

Getmail può essere installato come segue:

yum -y install getmail

10 Impostare le Password di MySQL e Configurare phpMyAdmin

Imposta le password per l’account root di MySQL:

mysql_secure_installation
[root@server1 tmp]# mysql_secure_installation  
  
NOTE: E' RACCOMANDATO ESEGUIRE TUTTE LE PARTI DI QUESTO SCRIPT PER TUTTI I SERVER MariaDB  
IN USO IN PRODUZIONE! PER FAVORE LEGGI ATTENTAMENTE OGNI PASSO!
Per accedere a MariaDB per metterlo in sicurezza, avremo bisogno della password attuale  
per l'utente root. Se hai appena installato MariaDB, e  
non hai ancora impostato la password root, la password sarà vuota,  
quindi dovresti semplicemente premere invio qui.
Inserisci la password attuale per root (premi invio per nessuna):  
OK, password utilizzata con successo, procedendo...
Impostare la password root assicura che nessuno possa accedere all'utente root di MariaDB  
senza la corretta autorizzazione.  
Impostare la password root? [Y/n] <-- INVIO  
Nuova password: <-- yourrootsqlpassword  
Reinserisci la nuova password: <-- yourrootsqlpassword  
Password aggiornata con successo!  
Ricaricando le tabelle dei privilegi..  
 ... Success!  
  
Per impostazione predefinita, un'installazione di MariaDB ha un utente anonimo, che consente a chiunque  
di accedere a MariaDB senza dover avere un account utente creato per  
loro. Questo è inteso solo per testare, e per rendere l'installazione  
più fluida. Dovresti rimuoverli prima di passare a un  
ambiente di produzione.  
  
Rimuovere gli utenti anonimi? [Y/n] <-- INVIO  
 ... Success!  
  
Normalmente, root dovrebbe essere consentito solo  
ad accedere da 'localhost'.  Questo  
assicura che qualcuno non possa indovinare  
la password root dalla rete.  
  
Negare l'accesso remoto a root? [Y/n] <-- INVIO  
 ... Success!  
  
Per impostazione predefinita, MariaDB viene fornito con un database chiamato 'test' a cui chiunque può  
accedere. Questo è anche inteso solo per testare, e dovrebbe essere rimosso  
prima di passare a un ambiente di produzione.  
  
Rimuovere il database di test e l'accesso ad esso? [Y/n] <-- INVIO  
 - Eliminazione del database di test...  
 ... Success!  
 - Rimozione dei privilegi sul database di test...  
 ... Success!  
  
Ricaricare le tabelle dei privilegi assicurerà che  
tutte le modifiche effettuate finora  
entreranno in vigore immediatamente.  
  
Ricaricare le tabelle dei privilegi ora? [Y/n] <-- INVIO  
 ... Success!  
  
Pulizia...  
  
Tutto fatto! Se hai completato tutti i passaggi sopra, la tua installazione di MariaDB  
dovrebbe ora essere sicura.  
  
Grazie per aver utilizzato MariaDB!  
  
[root@server1 tmp]#

Ora configuriamo phpMyAdmin. Cambiamo la configurazione di Apache in modo che phpMyAdmin consenta connessioni non solo da localhost (commentando le due righe “Require ip” e aggiungendo la nuova riga “Require all granted” nella sezione ):

nano /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Browser MySQL basato sul web scritto in php
#
# Consente solo localhost per impostazione predefinita
#
# Ma consentire phpMyAdmin a chiunque altro oltre a localhost dovrebbe essere considerato
# pericoloso a meno che non sia adeguatamente protetto da SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin


   
     # Apache 2.4
     
     #  Require ip 127.0.0.1
     #  Require ip ::1  
        Require all granted
     
   
   
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   

            

Successivamente, cambiamo l’autenticazione in phpMyAdmin da cookie a http:

nano /etc/phpMyAdmin/config.inc.php
[...]
/* Tipo di autenticazione */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]

Poi creiamo i link di avvio del sistema per Apache e lo avviamo:

systemctl enable  httpd.service  
systemctl restart  httpd.service

Ora puoi indirizzare il tuo browser a http://server1.example.com/phpmyadmin/ o http://192.168.1.100/phpmyadmin/ e accedere con il nome utente root e la tua nuova password root di MySQL.

11 Installare Amavisd-new, SpamAssassin e ClamAV

Per installare amavisd-new, SpamAssassin e clamav, esegui il seguente comando:

yum -y install amavisd-new spamassassin clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd unzip bzip2 perl-DBD-mysql

Modifica il file di configurazione freshclam /etc/freshclam.conf

nano /etc/freshclam.conf

e commenta la riga “Example”

[....]  
# Example  
[....]

Poi avviamo freshclam, amavisd e clamd.amavisd:

sa-update  
freshclam  
systemctl enable amavisd.service  
systemctl start amavisd.service  
systemctl start [email protected]

12 Installazione di Apache con mod_php, mod_fcgi/PHP5, PHP-FPM

ISPConfig 3 ti consente di utilizzare mod_php, mod_fcgi/PHP5, cgi/PHP5 e suPHP su base per sito web.

Possiamo installare Apache2 con mod_php5, mod_fcgid e PHP5 come segue:

yum -y install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel mod_fcgid php-cli httpd-devel php-fpm wget

Successivamente apriamo /etc/php.ini…

nano /etc/php.ini

… e cambiamo la segnalazione degli errori (in modo che le notifiche non vengano più mostrate), impostiamo il fuso orario e decommentiamo cgi.fix_pathinfo=1:

[...]
;error_reporting = E_ALL & ~E_DEPRECATED
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
[...]
; cgi.fix_pathinfo fornisce supporto *reale* per PATH_INFO/PATH_TRANSLATED per CGI. PHP's
; comportamento precedente era impostare PATH_TRANSLATED su SCRIPT_FILENAME, e non comprendere
; cosa sia PATH_INFO. Per ulteriori informazioni su PAppp.tldTH_INFO, vedere le specifiche cgi. Impostare
; questo a 1 farà sì che PHP CGI corregga i suoi percorsi per conformarsi alla specifica. Un'impostazione
; di zero fa sì che PHP si comporti come prima. Il valore predefinito è 1. Dovresti correggere i tuoi script
; per utilizzare SCRIPT_FILENAME piuttosto che PATH_TRANSLATED.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=1  
[...]  
date.timezone = 'Europe/Berlin'
[...]

Abilita httpd e PHP-FPM per avviarsi all’avvio e avvia il servizio PHP-FPM.

systemctl start php-fpm.service  
systemctl enable php-fpm.service  
systemctl enable httpd.service

Infine, riavviamo Apache:

systemctl restart httpd.service

Ora aggiungeremo supporto per Let’s encrypt.

mkdir /opt/certbot  
cd /opt/certbot  
wget https://dl.eff.org/certbot-auto  
chmod a+x ./certbot-auto

Ora esegui il comando certboot-auto che scaricherà e installerà il software e le sue dipendenze.

./certbot-auto

Il comando ti dirà che “non sono stati trovati nomi nei tuoi file di configurazione” e chiede se deve continuare, per favore scegli “no” qui poiché i certificati saranno creati da ispconfig.

13 Installazione di mod_python

Il modulo apache mod_python non è disponibile come pacchetto RPM, quindi lo compileremo da sorgente. Il primo passo è installare i file di sviluppo di python e scaricare la versione attuale di mod_python come file tar.gz

yum -y install python-devel
cd /usr/local/src/  
wget http://dist.modpython.org/dist/mod_python-3.5.0.tgz  
tar xfz mod_python-3.5.0.tgz  
cd mod_python-3.5.0

e poi configurare e compilare il modulo

./configure  
make  
make install

e abilitare il modulo in apache

echo 'LoadModule python_module modules/mod_python.so' > /etc/httpd/conf.modules.d/10-python.conf  
systemctl restart httpd.service

14 Installare PureFTPd

PureFTPd può essere installato con il seguente comando:

yum -y install pure-ftpd

Poi crea i link di avvio del sistema e avvia PureFTPd:

systemctl enable pure-ftpd.service  
systemctl start pure-ftpd.service

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.

OpenSSL è necessario per TLS; per installare OpenSSL, eseguiamo semplicemente:

yum install openssl

Apri /etc/pure-ftpd/pure-ftpd.conf…

nano /etc/pure-ftpd/pure-ftpd.conf

Se desideri consentire sessioni FTP e TLS, imposta TLS su 1:

[...]
# Questa opzione può accettare tre valori :
# 0 : disabilita il livello di crittografia SSL/TLS (predefinito).
# 1 : accetta sia sessioni tradizionali che crittografate.
# 2 : rifiuta connessioni che non utilizzano meccanismi di sicurezza SSL/TLS,
#     comprese le sessioni anonime.
# Non decommentare questo alla leggera. Assicurati che :
# 1) Il tuo server sia stato compilato con supporto SSL/TLS (--with-tls),
# 2) Un certificato valido sia in atto,
# 3) Solo client compatibili accederanno.

TLS                      1
[...]

Per 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.pem

Nome del Paese (codice di 2 lettere) [XX]: <– Inserisci il nome del tuo paese (es. “DE”).
Nome dello Stato o della Provincia (nome completo) []: <– Inserisci il nome del tuo stato o provincia.
Nome della Località (es. città) [Città Predefinita]: <– Inserisci la tua città.
Nome dell’Organizzazione (es. azienda) [Azienda Predefinita Ltd]: <– Inserisci il nome della tua organizzazione (es. il nome della tua azienda).
Nome dell’Unità Organizzativa (es. sezione) []: <– Inserisci il nome della tua unità organizzativa (es. “Reparto IT”).
Nome Comune (es. il tuo nome o il nome host del tuo server) []: <– Inserisci il Nome Dominio Completo del sistema (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

Infine, riavvia PureFTPd:

systemctl restart pure-ftpd.service

Questo è tutto. Ora puoi provare a connetterti utilizzando il tuo client FTP; tuttavia, dovresti configurare il tuo client FTP per utilizzare TLS.

15 Installare BIND

Possiamo installare BIND come segue:

yum -y install bind bind-utils haveged

Fai un backup del file esistente /etc/named.conf e crea un nuovo file come segue:

cp /etc/named.conf /etc/named.conf_bak  
cat /dev/null > /etc/named.conf  
nano /etc/named.conf
// named.conf\
//\
// Fornito dal pacchetto bind di Red Hat per configurare il server DNS ISC BIND named(8)\
// come nameserver solo in cache (come risolutore DNS localhost solo).\
//\
// Vedi /usr/share/doc/bind*/sample/ per file di configurazione named di esempio.\
//\
options {\
        listen-on port 53 { any; };\
        listen-on-v6 port 53 { any; };\
        directory       "/var/named";\
        dump-file       "/var/named/data/cache_dump.db";\
        statistics-file "/var/named/data/named_stats.txt";\
        memstatistics-file "/var/named/data/named_mem_stats.txt";\
        allow-query     { any; };\
                allow-recursion {"none";};\
        recursion no;\
};\
logging {\
        channel default_debug {\
                file "data/named.run";\
                severity dynamic;\
        };\
};\
zone "." IN {\
        type hint;\
        file "named.ca";\
};\
include "/etc/named.conf.local";

Crea il file /etc/named.conf.local che viene incluso alla fine di /etc/named.conf ( /etc/named.conf.local verrà successivamente popolato da ISPConfig se crei zone DNS in ISPConfig):

touch /etc/named.conf.local

Poi creiamo i link di avvio e avviamo BIND:

systemctl enable named.service  
systemctl start named.service

16 Installare Webalizer e AWStats

AWStats può essere installato come segue:

yum -y install awstats perl-DateTime-Format-HTTP perl-DateTime-Format-Builder

Webalizer deve essere compilato da sorgente.

yum install -y libpng-devel gd-devel  
cd /tmp  
wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.23-08-src.tgz  
tar xvfz webalizer-2.23-08-src.tgz  
cd webalizer-2.23-08  
./configure  
make  
make install

17 Installare Jailkit

Jailkit è utilizzato per chrootare gli utenti SSH e i cronjob. Può essere installato come segue (importante: Jailkit deve essere installato prima di ISPConfig - non può essere installato successivamente!):

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

18 Installare fail2ban

Questo è facoltativo ma raccomandato, perché il monitor di ISPConfig cerca di mostrare il log.

yum -y install iptables-services fail2ban fail2ban-systemd  
systemctl stop firewalld.service  
systemctl mask firewalld.service  
systemctl disable firewalld.service  
systemctl stop firewalld.service

Successivamente creiamo il file /etc/fail2ban/jail.local e abilitiamo il monitoraggio per ssh, email e servizio ftp.

nano /etc/fail2ban/jail.local

Aggiungi il seguente contenuto nel file jail.local:

[sshd]  
enabled = true  
action = iptables[name=sshd, port=ssh, protocol=tcp]  
  
[pure-ftpd]  
enabled = true  
action = iptables[name=FTP, port=ftp, protocol=tcp]  
maxretry = 3  
  
[dovecot]  
enabled = true  
action = iptables-multiport[name=dovecot, port="pop3,pop3s,imap,imaps", protocol=tcp]  
maxretry = 5  
  
[postfix-sasl]  
enabled = true  
action = iptables-multiport[name=postfix-sasl, port="smtp,smtps,submission", protocol=tcp]  
maxretry = 3

Poi crea i link di avvio del sistema per fail2ban e avvialo:

systemctl enable fail2ban.service  
systemctl start fail2ban.service

19 Installare rkhunter

rkhunter può essere installato come segue:

yum -y install rkhunter

20 Installare Mailman

Se desideri gestire mailing list con Mailman sul tuo server, installa mailman ora. Mailman è supportato da ISPConfig, quindi sarai in grado di creare nuove mailing list tramite ISPConfig in seguito.

yum -y install mailman

Prima di poter avviare Mailman, deve essere creata una prima mailing list chiamata mailman:

touch /var/lib/mailman/data/aliases  
postmap /var/lib/mailman/data/aliases  
/usr/lib/mailman/bin/newlist mailman

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Inserisci l’email della persona che gestisce la lista: <– indirizzo email dell’amministratore, es. [email protected]
Password iniziale di mailman: <– password dell’amministratore per la lista mailman
Per completare la creazione della tua mailing list, devi
modificare il tuo file /etc/aliases (o equivalente)
aggiungendo le seguenti righe, e possibilmente eseguendo il
programma newaliases:

mailing list mailman

mailman: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”

Premi invio per notificare il proprietario di mailman… <– INVIO

[root@server1 tmp]#

Apri /etc/aliases dopo…

nano /etc/aliases

… e aggiungi le seguenti righe:

[...]
mailman:              "|/usr/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/usr/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/usr/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/usr/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/usr/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/usr/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/usr/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/usr/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/usr/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/usr/lib/mailman/mail/mailman unsubscribe mailman"

Esegui

newaliases

dopo e riavvia Postfix:

systemctl restart postfix.service

Ora apri il file di configurazione di Apache di Mailman /etc/httpd/conf.d/mailman.conf…

nano /etc/httpd/conf.d/mailman.conf

… e aggiungi la riga ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/. Commenta Alias /pipermail/ /var/lib/mailman/archives/public/ e aggiungi la riga Alias /pipermail /var/lib/mailman/archives/public/:

#
#  impostazioni di configurazione httpd per l'uso con mailman.
#

ScriptAlias /mailman/ /usr/lib/mailman/cgi-bin/
ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/

    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all



#Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /pipermail /var/lib/mailman/archives/public/

    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    AddDefaultCharset Off


# Decommenta la seguente riga, per reindirizzare le query a /mailman alla
# pagina listinfo (raccomandato).

# RedirectMatch ^/mailman[/]*$ /mailman/listinfo

Riavvia Apache:

systemctl restart httpd.service

Crea i link di avvio del sistema per Mailman e avvialo:

systemctl enable mailman.service  
systemctl start mailman.service

Dopo aver installato ISPConfig 3, puoi accedere a Mailman come segue: Puoi utilizzare l’alias /cgi-bin/mailman per tutti i vhost Apache (si prega di notare che suExec e CGI devono essere disabilitati per tutti i vhost da cui si desidera accedere a Mailman!), il che significa che puoi accedere all’interfaccia di amministrazione di Mailman per una lista su http:///cgi-bin/mailman/admin/, e la pagina web per gli utenti di una mailing list può essere trovata su http:///cgi-bin/mailman/listinfo/. Sotto http:///pipermail/ puoi trovare gli archivi della mailing list.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.