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 di web hosting che permette di configurare i seguenti servizi attraverso un browser web:server web Apache o nginx, server di posta Postfix, server Courier o Dovecot IMAP/POP3, server dei nomi MySQL, 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 l'hostname 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 oltre, devi avere un'installazione minima di Debian 10. Potrebbe trattarsi di un'immagine minima di Debian dal tuo provider di hosting oppure usi il tutorial Minimal Debian Server per configurare il sistema di base.
Tutti i comandi seguenti vengono eseguiti come utente root. Accedi direttamente come utente root o accedi come utente normale e quindi 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 è 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-server
D'ora in poi puoi usare un client SSH come PuTTY e connetterti dalla tua workstation al tuo server Debian 10 e seguire i passaggi rimanenti di questo tutorial.
3 Installa un editor di testo shell (opzionale)
Userò il nano editor di testo in questo tutorial. Alcuni utenti preferiscono il classico editor vi, quindi installerò entrambi gli editor qui. Il programma vi predefinito ha uno strano comportamento su Debian e Ubuntu; per risolvere questo problema, installiamo vim-nox:
apt-get -y install nano vim-nox
(Non devi farlo se usi 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 una parte di sottodominio come "example.com" come nome host poiché ciò causerà problemi in seguito con la configurazione della posta. Innanzitutto, dovresti controllare il nome host in /etc/hosts e modificarlo se necessario. La riga dovrebbe essere:"Indirizzo IP - spazio - nome host completo incl. dominio - spazio - parte del sottodominio". Modifica /etc/hosts. Rendilo simile a questo:
nano /etc/hosts
127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Quindi modifica il file /etc/hostname:
nano /etc/hostname
Deve contenere solo la parte del sottodominio, nel nostro caso:
server1
Infine, riavvia il server per applicare la modifica:
reboot
Accedi di nuovo e controlla se il nome host è corretto ora con questi comandi:
hostname
hostname -f
L'output sarà così:
[email protected]:/tmp# hostname
server1
[email protected]:/tmp# hostname -f
server1.example.com
5 Aggiorna la tua installazione Debian
Per prima cosa assicurati che il tuo /etc/apt/sources.list contenga il repository buster/updates (questo ti assicura di ottenere sempre gli aggiornamenti più recenti per lo scanner antivirus ClamAV - questo progetto pubblica le versioni molto spesso e talvolta le vecchie versioni smettono di funzionare), e che i repository contrib e non-free siano abilitati.
nano /etc/apt/sources.list
deb 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-free
Corri
apt-get update
per aggiornare il database del pacchetto apt e
apt-get upgrade
per installare gli ultimi aggiornamenti (se presenti).
6 Modifica 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 dash
Utilizzare dash come shell di sistema predefinita (/bin/sh)? <-- No
In caso contrario, l'installazione di ISPConfig avrà esito negativo.
7 Sincronizzare l'orologio di sistema
È una buona idea sincronizzare l'orologio di sistema con un NTP (n rete t ora p rotocol) server su Internet. Esegui semplicemente
apt-get install ntp
e l'ora del tuo sistema sarà sempre sincronizzata.
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 curl
Ti verranno poste le seguenti domande:
Tipo generale di configurazione della posta:<-- Sito Internet
Nome della posta di sistema:<-- server1.example.com
Per proteggere l'installazione di MariaDB / MySQL e disabilitare il database di test, eseguire questo comando:
mysql_secure_installation
Non è necessario modificare la password di root MariaDB poiché ne impostiamo una nuova durante l'installazione. Rispondi alle domande come segue:
Change the root password? [Y/n] <-- y
New password: <-- Enter a new database root password
Re-enter new password: <-- Repeat the database root password
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] <-- y
Quindi, apri le porte TLS/SSL e di invio in Postfix:
nano /etc/postfix/master.cf
Decommenta le sezioni di invio e smtps come segue e aggiungi righe ove necessario in modo che questa sezione del file master.cf assomigli esattamente a quella di seguito. IMPORTANTE: Rimuovi il # davanti alle righe che iniziano con smtps e submit anche 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 in seguito:
service postfix restart
Vogliamo che MariaDB ascolti su tutte le interfacce, non solo su 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
[...]
# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1
[...]
Salva il file. Quindi imposta il metodo di autenticazione della password in MariaDB su nativo in modo da poter utilizzare PHPMyAdmin in seguito per connetterci come utente root:
echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root
Modifica il file /etc/mysql/debian.cnf e imposta la password di root MYSQL/MariaDB due volte nelle righe che iniziano con la parola password.
nano /etc/mysql/debian.cnf
La password di root 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 = /usr
Per evitare l'errore 'Errore nell'accettazione:troppi file aperti ' imposteremo ora limiti di file aperti più elevati per MariaDB.
Apri il file /etc/security/limits.conf con un editor:
nano /etc/security/limits.conf
e aggiungi queste righe alla fine del file.
mysql soft nofile 65535
mysql hard nofile 65535
Quindi, 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.conf
incolla le seguenti righe in quel file:
[Service]
LimitNOFILE=infinity
Salva il file e chiudi il nano editor.
Quindi ricarichiamo systemd e riavviamo MariaDB:
systemctl daemon-reload
systemctl restart mariadb
Ignora l'avviso:"Avviso:il file dell'unità, il file di configurazione di origine o i drop-in di mariadb.service sono stati modificati sul disco. Esegui 'systemctl daemon-reload' per ricaricare le unità. ".
Installa il sistema dbconfig-common:
apt-get install dbconfig-common dbconfig-mysql
Attualmente c'è un problema con il sistema Debian dbconfig-common che impedisce l'installazione di RoundCube in un secondo momento, 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/mysql
Ora controlla che la rete sia abilitata. Corri
netstat -tap | grep mysql
L'output dovrebbe essere simile a questo:
[email protected]:~# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 4027/mysqld
[email protected]:~#
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 postgrey
La configurazione di ISPConfig 3 utilizza amavisd che carica internamente la libreria dei filtri SpamAssassin, quindi possiamo fermare SpamAssassin per liberare un po' di RAM:
systemctl stop spamassassin
systemctl disable spamassassin
10 Installa Nginx, PHP (PHP-FPM) e Fcgiwrap
Nginx è disponibile come pacchetto per Debian che possiamo installare come segue:
apt-get install nginx
Se Apache2 è già installato sul sistema, interrompilo ora...
systemctl stop apache2
Il messaggio "Impossibile interrompere apache2.service:unità apache2.service non caricata. " va bene e non indica un errore.
... e rimuovi i collegamenti di avvio del sistema di Apache:
systemctl disable apache2
Avvia nginx in seguito:
systemctl start nginx
(Se sono installati sia Apache2 che nginx, il programma di installazione di ISPConfig 3 ti chiederà quale vuoi usare - rispondi a nginx in questo caso. Se è installato solo uno di entrambi, ISPConfig eseguirà automaticamente la configurazione necessaria.)
Possiamo far funzionare PHP 7.3 in nginx tramite PHP-FPM (PHP-FPM (FastCGI Process Manager) è un'implementazione PHP FastCGI alternativa con alcune funzionalità aggiuntive utili per siti di qualsiasi dimensione, in particolare i siti più affollati) che installiamo come segue:
apt-get install php7.3-fpm
PHP-FPM è un processo demone 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 alcuni altri moduli PHP e potresti averne bisogno per le tue applicazioni. Puoi cercare i moduli PHP disponibili in questo modo:
apt-cache search php7
Scegli quelli che ti servono 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-apcu
Quindi 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-fpm
Per 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 perché consente a ciascun vhost di utilizzare la propria directory cgi-bin.
Installa il pacchetto fcgiwrap:
apt-get install fcgiwrap
Dopo l'installazione, il demone fcgiwrap dovrebbe essere già 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
Da Debian 10, PHPMyAdmin non è più disponibile come pacchetto .deb. Pertanto lo installeremo dal sorgente.
Crea 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.setup
Vai alla directory /tmp e scarica i sorgenti PHPMyAdmin:
cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz
Decomprimi il file di archivio scaricato e sposta i file nella cartella /usr/share/phpmyadmin e ripulisci 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-languages
Crea un nuovo file di configurazione per PHPMyaAdmin in base al file di esempio fornito:
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
Apri il file di configurazione con nano editor:
nano /usr/share/phpmyadmin/config.inc.php
Imposta una password sicura (Blowfish Secret) che deve essere lunga 32 caratteri:
$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Non usare il mio esempio segreto di pesce palla, imposta il tuo!
Quindi 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 l'archivio di configurazione di phpMyadmin (database).
Accedi a MariaDB come utente root:
mysql -u root -p
Nella shell di MariaDB, crea un nuovo database per PHPMyAdmin:
MariaDB [(none)]> CREATE DATABASE phpmyadmin;
Quindi crea un nuovo utente:
MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';
Sostituisci la parola miapassword con una password sicura a tua scelta nei comandi sopra e sotto, usa la stessa password entrambe le volte. Quindi concedi all'utente l'accesso a questo database e ricarica le autorizzazioni del database.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT
Infine, carica le tabelle SQL nel database:
mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql
Immettere la password di root di MariaDB su richiesta.
Tutto quello che dobbiamo fare ora è impostare i dettagli dell'utente phpmyadmin nel file di configurazione. Apri di nuovo il file in nano editor:
nano /usr/share/phpmyadmin/config.inc.php
Scorri verso il basso fino a visualizzare le righe sottostanti e modificale:
/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'mypassword';
/* Storage database and tables */
$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 segnato le linee in rosso che ho modificato. Sostituisci miapassword con la password che hai scelto per l'utente phpmyadmin. Nota che anche la // davanti alle righe è stata rimossa!
Dopo aver installato ISPConfig 3.2, puoi accedere a phpMyAdmin come segue:
L'app ISPConfig vhost sulla porta 8081 per nginx viene fornita con una configurazione phpMyAdmin, quindi puoi utilizzare http://server1.example.com:8081/phpmyadmin o http://server1.example.com:8081/phpMyAdmin per accedere a phpMyAdmin.
Se vuoi usare un alias /phpmyadmin o /phpMyAdmin che puoi usare 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 vhost). Pertanto devi definire questi alias per ciascuno vhost da cui vuoi accedere a phpMyAdmin.
Per fare ciò, incolla quanto segue 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 https invece di http per il tuo vhost, dovresti aggiungere la riga fastcgi_param HTTPS su; 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; # <-- add this line 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 al campo Direttive nginx e invece di fastcgi_param HTTPS su; aggiungi la riga fastcgi_param HTTPS $https; in modo da poter utilizzare phpMyAdmin sia per le richieste http che per 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; # <-- add this line 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 sta usando acme.sh ora come client Let's Encrypt. Installa acme.sh usando il seguente comando:
curl https://get.acme.sh | sh -s
12 Installa Mailman
ISPConfig permette di gestire (creare/modificare/cancellare) le mailing list di Mailman. Se vuoi utilizzare questa funzione, installa Mailman come segue:
apt-get install mailman
Seleziona almeno una lingua, ad es.:
Lingue supportate:<-- it (inglese)
Elenco siti mancanti <-- Ok
Prima di poter avviare Mailman, è necessario creare una prima mailing list chiamata mailman:
newlist mailman
[email protetta]:~# mailman newlist
Inserisci l'e-mail della persona che gestisce l'elenco: <-- indirizzo e-mail admin, ad es. [email protetta]
Password iniziale del postino: <-- password admin per l'elenco del postino
Per terminare la creazione della lista mail, devi modificare il tuo /etc/alias (o
equivalente) file tramite aggiungendo le righe seguenti e possibilmente eseguendo il programma
`newaliases':
## mailing list di 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-unsub scribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"
Premi invio per notificare il proprietario del postino... <-- ENTER
[email protetta] :~#
Apri /etc/alias in seguito...
nano /etc/aliases
... e aggiungi le seguenti righe:
[...] ## mailman mailing list 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"
Corri
newaliases
in seguito e riavvia Postfix:
systemctl restart postfix
Quindi avvia il demone Mailman:
systemctl restart mailman
Dopo aver installato ISPConfig 3, puoi accedere a Mailman come segue:
L'app ISPConfig vhost sulla porta 8081 per nginx viene fornita con una configurazione Mailman, quindi puoi utilizzare http://server1.example.com:8081/cgi-bin/mailman/admin/
Se vuoi usare 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 vhost). Pertanto devi definire questi alias per ciascuno vhost da cui vuoi accedere a Mailman.
Per fare ciò, incolla quanto segue 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 un elenco 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 quotatool
Modifica 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 perché tutte le password e tutti i dati vengono trasferiti in chiaro. Utilizzando TLS, l'intera comunicazione può essere crittografata, rendendo così l'FTP molto più sicuro.
Se vuoi consentire sessioni FTP e TLS, esegui
echo 1 > /etc/pure-ftpd/conf/TLS
Per utilizzare TLS, dobbiamo creare un certificato SSL. Lo creo in /etc/ssl/private/, quindi creo prima quella directory:
mkdir -p /etc/ssl/private/
Successivamente, possiamo generare il certificato SSL come segue:
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Nome del Paese (codice di 2 lettere) [AU]:<-- Inserisci il nome del tuo Paese (ad es. "DE").
Nome Stato o Provincia (nome completo) [Stato-Stato]:<-- Inserisci il tuo Stato o nome della provincia.
Nome località (ad es. città) []:<-- Inserisci la tua città.
Nome organizzazione (ad es. azienda) [Internet Widgits Pty Ltd]:<-- Inserisci il nome dell'organizzazione (ad es. il nome della tua azienda).
Nome dell'unità organizzativa (ad es. sezione) []:<-- Inserisci il nome dell'unità organizzativa (ad es. "Dipartimento IT").
Nome comune (ad es. IL TUO nome) []:<-- Inserisci il nome di dominio completo del sistema (ad es. "server1.example.com").
Indirizzo e-mail []:<-- Inserisci il tuo indirizzo e-mail.
Modifica le autorizzazioni del certificato SSL:
chmod 600 /etc/ssl/private/pure-ftpd.pem
Quindi riavvia PureFTPd:
systemctl restart pure-ftpd-mysql
Modifica /etc/fstab. Il mio è simile a questo (ho aggiunto ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 alla partizione con il punto di montaggio /):
nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap was on /dev/sda5 during installation
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 -avug
14 Installa il server DNS BIND
BIND può essere installato come segue:
apt-get install bind9 dnsutils
Se il tuo server è una macchina virtuale, ti consigliamo vivamente di installare il demone haveged per ottenere un'entropia maggiore per la firma DNSSEC. Puoi installare haveged anche su server non virtuali, non dovrebbe far male.
apt-get -y install haveged
systemctl enable haveged
systemctl start haveged
Una spiegazione sull'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-perl
Apri /etc/cron.d/awstats in seguito...
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 # Generate static reports: #10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh
Installazione dell'ultima versione di GoAccess direttamente dal repository 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 goaccess
16 Installa Jailkit
Jailkit è necessario solo se si desidera eseguire il chroot degli utenti SSH. Può essere installato come segue (importante:Jailkit deve essere installato prima di ISPConfig - non può essere installato in seguito!):
apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /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 binary
Ora puoi installare il pacchetto Jailkit .deb come segue:
cd ..
dpkg -i jailkit_2.20-1_*.deb
rm -rf jailkit-2.20*
17 Installare Fail2ban e UFW Firewall
Questo è facoltativo ma consigliato, perché il monitor ISPConfig tenta di mostrare il registro:
apt-get install fail2ban
Per fare in modo che fail2ban controlli 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 = 3
Riavvia fail2ban in seguito:
systemctl restart fail2ban
Per installare il firewall UFW, esegui questo comando apt:
apt-get install ufw
18 Installa RoundCube
Installa RoundCube con questo comando:
apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins
The installer will ask the following questions:
Configure database for roundcube with dbconfig.common? <-- yes
MySQL application password for roundcube: <-- press enter
Password of the databases administrative user: <-- enter the MySQL root password here.
Then edit the RoundCube /etc/roundcube/config.inc.php file and adjust a few settings:
nano /etc/roundcube/config.inc.php
Set the default_host to localhost and the smtp_server.
$config['default_host'] = 'localhost';
$config['smtp_server'] = 'localhost';
$config['smtp_port'] = 25;
ISPConfig has some configuration in the nginx apps vhost for squirrelmail which works for roundcube as well. We activate it with:
ln -s /usr/share/roundcube /usr/share/squirrelmail
http://192.168.0.100:8081/webmail
http://server1.example.com:8081/webmail (after you have installed ISPConfig, see the next chapter)
19 Install ISPConfig 3
Before you start the ISPConfig installation, make sure that Apache is stopped (if it is installed - it is possible that some of your installed packages have installed Apache as a dependency without you knowing). If Apache2 is already installed on the system, stop it now...
systemctl stop apache2
... and remove Apache's system startup links:
update-rc.d -f apache2 remove
Make sure that nginx is running:
systemctl start nginx
(If you have both Apache and nginx installed, the installer asks you which one you want to use:Apache and nginx detected. Select server to use for ISPConfig:(apache,nginx) [apache]:
Type nginx. If only Apache or nginx are installed, this is automatically detected by the installer, and no question is asked.)
To install ISPConfig 3.2 from the latest released version, do this:
cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/
The next step is to run
php -q install.php
This will start the ISPConfig 3 installer. The installer will configure all services like Postfix, Nginx, Dovecot, etc. for you.
# php -q install.php
--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------
>> Initial configuration
Operating System: Debian 10.0 (Buster) or compatible
Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with <ENTER>.
Tap in "quit" (without the quotes) to stop the installer.
Select language (en,de) [en]: <-- Hit Enter
Installation mode (standard,expert) [standard]: <-- Hit Enter
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.canomi.com]: <-- Hit Enter
MySQL server hostname [localhost]: <-- Hit Enter
MySQL server port [3306]: <-- Hit Enter
MySQL root username [root]: <-- Hit Enter
MySQL root password []: <-- Enter your MySQL root password
MySQL database to create [dbispconfig]: <-- Hit Enter
MySQL charset [utf8]: <-- Hit Enter
Apache and nginx detected. Select server to use for ISPConfig: (apache,nginx) [apache]: <-- nginx
Configuring Postgrey
Configuring Postfix
Generating a 4096 bit RSA private key
.......................................................................++
........................................................................................................................................++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
State or Province Name (full name) [Some-State]: <-- Enter the name of the state
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case: server1.example.com
Email Address []: <-- Hit Enter
Configuring Mailman
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring BIND
Configuring Jailkit
Configuring Pureftpd
Configuring Nginx
Configuring vlogger
[INFO] service Metronome XMPP Server not detected
Configuring UFW Firewall
Configuring Fail2ban
[INFO] service OpenVZ not detected
Configuring Apps vhost
Installing ISPConfig
ISPConfig Port [8080]:
Admin password [admin]: <-- Enter desired ISPConfig admin user password here
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: <-- Hit Enter
Generating RSA private key, 4096 bit long modulus
.......................++
................................................................................................................................++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
State or Province Name (full name) [Some-State]: <-- Enter the name of the state
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case: server1.example.com
Email Address []: <-- Hit Enter
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: <-- Hit Enter
An optional company name []: <-- Hit Enter
writing RSA key
Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.
The installer automatically configures all underlying services, so no manual configuration is needed.
Afterward you can access ISPConfig 3 under http(s)://server1.example.com:8080/ or http(s)://192.168.1.100:8080/ ( http or https depends on what you chose during installation). Log in with the username admin and the password admin (you should change the default password after your first login):
Finally, we fix some permissions of the RoundCube installation.
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/temp
The system is now ready to be used.
There exist some plugins to integrate RoundCube Webmail with ISPConfig, have a look here for the ISPConfig RoundCube plugin installation instructions.
20.1 ISPConfig 3 Manual
In order to learn how to use ISPConfig 3, I strongly recommend downloading the ISPConfig 3 Manual.
On more than 300 pages, it covers the concept behind ISPConfig (admin, resellers, clients), explains how to install and update ISPConfig 3, includes a reference for all forms and form fields in ISPConfig together with examples of valid inputs, and provides tutorials for the most common tasks in ISPConfig 3. It also lines out how to make your server more secure and comes with a troubleshooting section at the end.
21 Virtual machine image download of this tutorial
This tutorial is available as ready to use virtual machine image in ovf/ova format that is compatible with VMWare and Virtualbox. The virtual machine image uses the following login details:
SSH / Shell Login
Username:administrator
Password:howtoforge
Username: root
Password:howtoforge
ISPConfig Login
Username:admin
Password:howtoforge
MySQL Login
Username:root
Password:howtoforge
The IP of the VM is 192.168.0.100, it can be changed in the file /etc/network/interfaces. Please change all the above passwords to secure the virtual machine.
22 Links
- Debian:http://www.debian.org/
- ISPConfig:http://www.ispconfig.org/