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-pigeonholeCrea 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.confOra crea i link di avvio del sistema e avvia Dovecot:
systemctl enable dovecot
systemctl start dovecot8 Installare Postfix
Postfix può essere installato come segue:
yum -y install postfixPoi disattiva Sendmail e avvia Postfix e MariaDB (MySQL):
systemctl enable mariadb.service
systemctl start mariadb.servicesystemctl stop sendmail.service
systemctl disable sendmail.service
systemctl enable postfix.service
systemctl restart postfix.serviceDisabilitiamo 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 getmail10 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.serviceOra 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-mysqlModifica il file di configurazione freshclam /etc/freshclam.conf
nano /etc/freshclam.confe 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 wgetSuccessivamente 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.serviceInfine, riavviamo Apache:
systemctl restart httpd.serviceOra aggiungeremo supporto per Let’s encrypt.
mkdir /opt/certbot
cd /opt/certbot
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-autoOra esegui il comando certboot-auto che scaricherà e installerà il software e le sue dipendenze.
./certbot-autoIl 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-develcd /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.0e poi configurare e compilare il modulo
./configure
make
make installe abilitare il modulo in apache
echo 'LoadModule python_module modules/mod_python.so' > /etc/httpd/conf.modules.d/10-python.conf
systemctl restart httpd.service14 Installare PureFTPd
PureFTPd può essere installato con il seguente comando:
yum -y install pure-ftpdPoi crea i link di avvio del sistema e avvia PureFTPd:
systemctl enable pure-ftpd.service
systemctl start pure-ftpd.serviceOra 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 opensslApri /etc/pure-ftpd/pure-ftpd.conf…
nano /etc/pure-ftpd/pure-ftpd.confSe 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.pemNome 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.pemInfine, riavvia PureFTPd:
systemctl restart pure-ftpd.serviceQuesto è 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 havegedFai 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.localPoi creiamo i link di avvio e avviamo BIND:
systemctl enable named.service
systemctl start named.service16 Installare Webalizer e AWStats
AWStats può essere installato come segue:
yum -y install awstats perl-DateTime-Format-HTTP perl-DateTime-Format-BuilderWebalizer 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 install17 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.serviceSuccessivamente creiamo il file /etc/fail2ban/jail.local e abilitiamo il monitoraggio per ssh, email e servizio ftp.
nano /etc/fail2ban/jail.localAggiungi 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 = 3Poi crea i link di avvio del sistema per fail2ban e avvialo:
systemctl enable fail2ban.service
systemctl start fail2ban.service19 Installare rkhunter
rkhunter può essere installato come segue:
yum -y install rkhunter20 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 mailmanPrima 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
newaliasesdopo e riavvia Postfix:
systemctl restart postfix.serviceOra 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/listinfoRiavvia Apache:
systemctl restart httpd.serviceCrea i link di avvio del sistema per Mailman e avvialo:
systemctl enable mailman.service
systemctl start mailman.serviceDopo 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://
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.