
Postfix Admin è un'interfaccia basata sul Web che consente agli utenti di configurare e gestire un server di posta elettronica basato su Postfix. Con Postfix Admin puoi creare e gestire più domini virtuali, utenti e alias.
Questo è il primo post della serie per l'impostazione e la configurazione di un server di posta che copre la creazione dei record DNS necessari e spiega come installare e configurare Postfix Admin, Nginx con certificato Let's Encrypt gratuito, PHP e MySQL.
Questo tutorial è stato scritto per Ubuntu 16.04, tuttavia gli stessi passaggi con piccole modifiche dovrebbero funzionare su qualsiasi versione più recente di Ubuntu.
Prerequisiti #
Come prerequisiti per seguire questa serie, avrai bisogno di:
- Server Ubuntu 16.04. Il nome host del server deve essere un FQDN. In questa serie useremo
mail.linuxize.com
. - Utente con privilegi sudo.
Impostazioni DNS #
Devi impostare i seguenti record DNS affinché il tuo sistema di posta funzioni:
- Un record, per indirizzare l'FQDN (nome host) del tuo sistema all'indirizzo IPv4 del tuo server di posta.
mail.linuxize.com. 3600 IN A 23.45.67.89
L'FQDN è composto da due parti, il nome host e il nome di dominio.- Record MX, per specificare quale server di posta è responsabile dell'accettazione dei messaggi di posta elettronica per conto del dominio di un destinatario. Nel nostro caso vogliamo che tutte le email vengano inviate a
@linuxize.com
indirizzi email che devono essere accettati damail.linuxize.com
server di posta.
linuxize.com. 3600 IN MX 0 mail.linuxize.com.
- Record SPF, utilizzato per verificare quali server di posta sono autorizzati a inviare e-mail per conto di un determinato dominio. Nell'esempio seguente stiamo approvando i server di posta del dominio (mx) e se il controllo SPF fallisce, il risultato sarà un errore graduale (~tutti):
linuxize.com. 3600 IN TXT "v=spf1 mx ~all"
Ovviamente è necessario sostituire il nome di dominio e l'indirizzo IP con il nome di dominio reale e l'indirizzo IP del server di posta. DNS inverso (PTR) #
Reverse DNS (PTR) è un indirizzo IP per la mappatura del nome di dominio, l'esatto opposto del DNS che mappa i nomi di dominio per gli indirizzi IP.
La maggior parte dei server di posta elettronica eseguirà una ricerca DNS inversa sull'indirizzo IP che sta tentando di connettersi ad essi e potrebbe non accettare e-mail dal server se il record PTR non è impostato.
Nella maggior parte dei casi, le voci PTR possono essere impostate tramite l'interfaccia web del provider di hosting o contattando il team di supporto e chiedendo loro di impostare un record PTR corretto per te.
Puoi utilizzare il comando dig per scoprire il DNS inverso di un determinato indirizzo IP.
dig -x 23.45.67.89
23.45.67.89.in-addr.arpa domain name pointer mail.linuxize.com.
Crea un utente di sistema #
Poiché stiamo configurando un server di posta con utenti virtuali, abbiamo bisogno di un utente di sistema che sarà il proprietario di tutte le caselle di posta e sarà utilizzato dagli utenti virtuali per accedere ai loro messaggi di posta elettronica sul server.
Il comando seguente creerà un nuovo gruppo e utente chiamato vmail
e imposta la directory home dell'utente su /var/mail/vmail
:
sudo groupadd -g 5000 vmail
sudo useradd -u 5000 -g vmail -s /usr/sbin/nologin -d /var/mail/vmail -m vmail
Tutte le caselle di posta virtuali verranno archiviate in /var/mail/vmail
directory.
Installa Nginx PHP e MySQL #
Postfix amministra un'applicazione basata su PHP. Per poter accedere all'interfaccia web di PostfixAdmin è necessario installare un server web e PHP.
Esegui il comando seguente per installare Nginx, PHP e tutti i moduli PHP richiesti:
sudo apt install nginx mysql-server php7.0-fpm php7.0-cli php7.0-imap php7.0-json php7.0-mysql php7.0-opcache php7.0-mbstring php7.0-readline
Ti verrà chiesto di creare una password di root MySQL durante l'installazione.
Scarica e configura Postfix Admin #
Al momento della scrittura, 3.1
è l'ultima versione stabile di Postfix Admin.
Scarica l'archivio di Postfix Admin usando il seguente comando wget:
VERSION=3.1
wget -q https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-${VERSION}/postfixadmin-${VERSION}.tar.gz
Una volta completato il download, estrarre l'archivio:
tar xzf postfixadmin-${VERSION}.tar.gz
Sposta i file sorgente di Postfix Admin nel /var/www
directory e crea templates_c
directory (cache smarty):
sudo mv postfixadmin-${VERSION}/ /var/www/postfixadmin
rm -f postfixadmin-${VERSION}.tar.gz
mkdir /var/www/postfixadmin/templates_c
Sia Nginx che PHP-FPM funzionano con l'utente www-data
quindi dobbiamo cambiare la proprietà del /var/www/postfixadmin
a quell'utente:
sudo chown -R www-data: /var/www/postfixadmin
Postfix Admin utilizzerà un database MySQL per memorizzare informazioni su utenti, domini e configurazione dell'applicazione.
Accedi alla shell MySQL:
mysql -u root -p
Crea un nuovo utente e database MySQL utilizzando i seguenti comandi:
Non dimenticare di cambiare la password (CREATE DATABASE postfixadmin;
GRANT ALL ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'P4ssvv0rD';
FLUSH PRIVILEGES;
P4ssvv0rD
) a qualcosa di più sicuro.
Invece di modificare la configurazione predefinita di Postfix Admin, creeremo un nuovo file chiamato config.local.php
che sovrascriverà le impostazioni predefinite dell'applicazione:
Apri il file con il tuo file di testo:
sudo nano /var/www/postfixadmin/config.local.php
Incolla il seguente codice php:
/var/www/postfixadmin/config.local.php<?php
$CONF['configured'] = true;
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'P4ssvv0rD';
$CONF['database_name'] = 'postfixadmin';
$CONF['default_aliases'] = array (
'abuse' => '[email protected]',
'hostmaster' => '[email protected]',
'postmaster' => '[email protected]',
'webmaster' => '[email protected]'
);
$CONF['fetchmail'] = 'NO';
$CONF['show_footer_text'] = 'NO';
$CONF['quota'] = 'YES';
$CONF['domain_quota'] = 'YES';
$CONF['quota_multiplier'] = '1024000';
$CONF['used_quotas'] = 'YES';
$CONF['new_quota_table'] = 'YES';
$CONF['aliases'] = '0';
$CONF['mailboxes'] = '0';
$CONF['maxquota'] = '0';
$CONF['domain_quota_default'] = '0';
?>
Salva e chiudi il file.
Con la configurazione sopra si definisce il tipo di database e le credenziali di accesso. Inoltre, stiamo specificando gli alias predefiniti, disabilitando fetchmail
e abilitazione della quota.
Quindi, esegui il comando seguente per creare lo schema per il database di Postfix Admin:
sudo -u www-data php /var/www/postfixadmin/upgrade.php
Una volta che il database è popolato, possiamo continuare e creare il nostro primo utente Superadmin di PostfixAdmin usando il postfixadmin-cli
strumento.
Questo utente avrà i privilegi di amministratore per modificare qualsiasi impostazione di dominio o applicazione.
sudo bash /var/www/postfixadmin/scripts/postfixadmin-cli admin add [email protected] --superadmin 1 --active 1 --password P4ssvv0rD --password2 P4ssvv0rD
L'output dovrebbe essere simile a questo:
Welcome to Postfixadmin-CLI v0.2
---------------------------------------------------------------
The admin [email protected] has been added!
---------------------------------------------------------------
Non dimenticare di cambiare la password (P4ssvv0rD
) per l'account superadmin a qualcosa di più sicuro. Installa gratuitamente il certificato SSL Let's Encrypt #
Utilizzeremo il certificato SSL per accedere alla nostra installazione di Postfix Admin e abilitare la crittografia SSL/TLS Dovecot e Postfix.
Abbiamo un tutorial su come installare un certificato SSL Let's Encrypt. Il punto più importante qui è generare un certificato SSL per il nome host del tuo server (FQDN) nel nostro caso mail.linuxize.com
.
Dopo aver generato il certificato SSL seguendo il tutorial collegato sopra, modifica i blocchi del tuo server Nginx come segue:
/etc/nginx/sites-enabled/mail.linuxize.com.confserver {
listen 80;
server_name mail.linuxize.com;
include snippets/letsencrypt.conf;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name mail.linuxize.com;
root /var/www;
ssl_certificate /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.linuxize.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/mail.linuxize.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
location / {
try_files $uri $uri/ /index.php;
}
location /postfixadmin {
index index.php;
try_files $uri $uri/ /postfixadmin/index.php;
}
location ~* \.php$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {return 404;}
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Ricarica il servizio Nginx per rendere effettive le modifiche:
sudo systemctl reload nginx
A questo punto dovresti essere in grado di accedere alla tua installazione di Postfix Admin su https://mail.linuxize.com/postfixadmin
, utilizzando l'utente superadmin creato in precedenza in questo tutorial.