Server Setup · 13 min read · Nov 02, 2025
Il Server Perfetto CentOS 7.3 con Apache, Postfix, Dovecot, Pure-FTPD, BIND e ISPConfig 3.1 - Pagina 2
7 Installa Dovecot
Dovecot può essere installato come segue:
yum -y install dovecot dovecot-mysql dovecot-pigeonholeCrea un file vuoto dovecot-sql.conf e crea symlink:
touch /etc/dovecot/dovecot-sql.conf
ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.conf
ln -s /etc/dovecot/dovecot.conf /etc/dovecot.confOra crea i link di avvio del sistema e avvia Dovecot:
systemctl enable dovecot
systemctl start dovecot8 Installa Postfix
Postfix può essere installato come segue:
yum -y install postfixPoi disabilita 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 garantire 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 Installa Getmail
Getmail può essere installato come segue:
yum -y install getmail10 Imposta le Password di MySQL e Configura 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 (invio per nessuna):
OK, password utilizzata con successo, procedendo...Impostare la password root garantisce 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!
Ricaricamento delle tabelle di privilegio..
... 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 è destinato solo per test, 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 autorizzato a connettersi solo da 'localhost'. Questo
assicura che qualcuno non possa indovinare
la password root dalla rete.
Disabilitare il login remoto per root? [Y/n] <-- INVIO
... Success!
Per impostazione predefinita, MariaDB viene fornito con un database chiamato 'test' a cui chiunque può
accedere. Questo è anche destinato solo per test, 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 di privilegio garantirà che tutte le modifiche
fatte finora abbiano effetto immediato.
Ricaricare le tabelle di privilegio 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 Installa Amavisd-new, SpamAssassin, ClamAV e Postgrey
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 postgrey re2cModifica il file di configurazione freshclam /etc/freshclam.conf
nano /etc/freshclam.confe commenta la riga “Example”
[....]
# Example
[....]Per abilitare gli aggiornamenti automatici delle firme di ClamAV con freshclam, modifica il file /etc/sysconfig/freshclam:
nano /etc/sysconfig/freshclame metti un # davanti all’ultima riga in modo che appaia così:
# FRESHCLAM_DELAY=disabled-warn # REMOVE MEPoi avviamo freshclam, amavisd e clamd.amavisd:
sa-update
freshclam
systemctl enable amavisd.service
systemctl start amavisd.service
systemctl start [email protected]
systemctl enable postgrey.service
systemctl start postgrey.service12 Installazione di Apache con mod_php, mod_fcgi/PHP5, PHP-FPM
ISPConfig 3 ti consente di utilizzare mod_php, mod_fcgi/PHP, cgi/PHP e PHP-FPM su base per sito web.
Possiamo installare Apache2 con mod_php5, mod_fcgid e PHP 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 & ~E_STRICT
[...]
; cgi.fix_pathinfo fornisce supporto *reale* per PATH_INFO/PATH_TRANSLATED per CGI. PHP's
; il 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 su 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à quindi che “nessun nome è stato trovato nei tuoi file di configurazione” e chiede se deve continuare, per favore scegli “c” per annullare 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
makeC’è un errore nel modulo compilato che farà sì che l’installazione fallisca con l’errore “ version = “fatal: Not a git repository (or any of the parent directories): .git “. Per risolvere ciò, esegui questo comando sed (il comando è una sola riga!).
sed -e 's/(git describe --always)/(git describe --always 2>\/dev\/null)/g' -e 's/`git describe --always`/`git describe --always 2>\/dev\/null`/g' -i $( find . -type f -name Makefile\* -o -name version.sh )Poi installa il modulo con questo comando.
make installe abilita il modulo in Apache:
echo 'LoadModule python_module modules/mod_python.so' > /etc/httpd/conf.modules.d/10-python.conf
systemctl restart httpd.service14 Installa 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 rimuovendo il # davanti alla riga TLS. È altamente consigliato abilitare TLS.
[...]
# 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à) [Default City]: <– Inserisci la tua città.
Nome dell’Organizzazione (es. azienda) [Default Company 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 Installa 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 caching (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.service
systemctl enable haveged.service
systemctl start haveged.service16 Installa Webalizer e AWStats
AWStats può essere installato come segue:
yum -y install webalizer awstats perl-DateTime-Format-HTTP perl-DateTime-Format-BuilderModifica il file /etc/httpd/conf.d/awstats.conf:
nano /etc/httpd/conf.d/awstats.confe cambia la riga:
Require localin:
Require all grantedE riavvia apache:
systemctl restart httpd.service17 Installa 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 Installa 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:
mkdir /var/run/fail2ban
systemctl enable fail2ban.service
systemctl start fail2ban.service19 Installa rkhunter
rkhunter può essere installato come segue:
yum -y install rkhunter20 Installa 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
ln -s /usr/lib/mailman/mail/mailman /usr/bin/mailman[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Inserisci l’email della persona che gestisce la lista: <– indirizzo email dell’amministratore, ad 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
/etc/aliases (o file equivalente) aggiungendo le seguenti righe, e
possa eseguire 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.