Le parole scritte in rosso devono essere sostituite dai vostri parametri.
×
Beta!
Sto lavorando al sito e commetterò tanti errori: potete segnalarmeli all'indirizzo indicato in fondo pagina. Segnalatemi anche eventuali vostre richieste. Grazie. !!!
DataBase.
Creeremo un database (banca di dati) ad immagine di una rubrica:
- Postfix, il server di posta, la consulterà per conoscere i domini per cui egli dovrà spedire la posta: utente @ dominio.tld
- Postfix userà questa rubrica per conoscere anche gli utenti abbinati ai singoli domini per cui spedire ed inviare la posta: utenti @ dominio.tld
- In questa "rubrica" verrà indicato a Postfix anche qual'è la cartella abbinata al dominio ed al singolo utente. Questa cartella verrà posta nella directory var e nella sotto cartella vmail (virtual mail, assomiglia ai virtual hosts di Apache). Perciò l'indirizzo della cartella per ogni singolo utente del servizio mail sarà: /var/vmail/dominio.tld/utente/
- Indicheremo anche gli eventuali alias, pseudonimi attribuibili ad ogni singolo utente. Invece di creare più utenti, possiamo abbinare pseudonimi al singolo utente. Per esempio, i classici alias sono: postmaster @ dominio.tld, a cui rivolgersi quando ci sono problemi con un indirizzo di posta (equivale al gestore del dominio di posta); abuse @ dominio.tld; lo dice il nome stesso, referente a cui rivolgersi per abusi perpetrati da un utente del dominio; webmaster @ dominio.tld, per contattare il gestore del sito web del dominio.
Ma le applicazioni di alias sono infinite: esempio classico e quando dobbiamo iscriverci a qualche sito indicando la nostra mail: per evitare un abuso della nostra mail principale, creeremo un alias, il quale girerà le mail a l'indirizzo principale. In caso di abuso, elimineremo semplicemente l'alias, senza intaccare l'indirizzo mail principale.
- Dovecot, il server di consegna della posta, userà la "rubrica" per autenticare chi chiede di accedere alla cartella di posta , confrontando il nome utente e la password dichiarata, con quella immagazzinata nella "rubrica".
- Un eventuale Web mail, cioè un sito internet da cui consultare la propria mail, potrà usare il database agli stessi scopi di Dovecot e di Postfix.
Questo è il diagramma del database che utilizzeremo nell'approntare il nostro Server di Posta
Chiameremo il nostro DataBase serverdiposta.
All'interno del database creeremo 3 Tabelle: domain, mailbox ed alias.
Nella tabella domain, avremo una colonna id (indice) ed una nominata domain per indicare il o i domini per cui gestire la posta
Nella tabella mailbox avremmo 4 + 1 colonne: id, username (indica la mail dell'utente), password (è la password, cifrata, dell'utente), maildir (indica la cartella dove porre le mail dell'utente) + quota (opzionale : indica la quota di spazio disco riservato all'utente).
Queste 4 + 1 colonne formano una riga. Perciò per ogni utente, dovremo riempire i campi delle 4 + 1 colonne.
Nella tabella alias avremo per primo id. Nella seconda colonna nominata address, indicheremo l'alias scelto . Nella terza colonna, goto, indicheremo la destinazione di quell'alias.
Perciò, anche stavolta, ad ogni creazione di un alias dovremo inserire dati in tutte le colonne.
Aggiorniamo il nostro Sistema, prima di passare all'installazione del database:
sudo apt update && sudo apt upgrade
Adesso possiamo installare il server
x
MariaDB è un'applicazione creata per gestire i database, creandoli, manipolandoli ed interrogandoli.
MariaDB usa delle specie di Plugin per scrivere ed immagazzinare i dati: questi sono gli Storage engine. Di default, MariaDB usa InnoDB come storage engine.
MariaDB usa un linguaggio di programmazione apposito per interfacciarsi con i database : SQL (Stuctured Query Language).
sudo apt install -y mariadb-server
Verifichiamo che l'applicazione sia funzionante ed attiva:
systemctl status mariadb
Indichiamo al Sistema che ad ogni avvio del sistema stesso, anche il server MariaDB dovrà essere avviato:
sudo systemctl enable mariadb
Possiamo passare all'impostazione di MariaDB:
sudo mysql_secure_installation
Si avvia una procedura con domande a cui dobbiamo rispondere per impostare MariaDB alle nostre necessità. Queste domande sono molto bene documentate.
Le opzioni per rispondere sono indicate tra parentesi quadre: [Y/n], la lettera maiuscola è la scelta di default, perciò possiamo premere il tasto Invio per sceglierla. Altrimenti digitiamo la lettera minuscola.
La prima domanda ci dice che per usare MariaDB dobbiamo essere l'utente root. Visto che abbiamo già l'utente root con la sua password, possiamo saltare questo passaggio.
Premiamo il tasto Invio .
Non vogliamo che altri utenti del sistema, oltre a root, usino MariaDB, perciò tasti n + Invio
La terza richiesta è se vogliamo cambiare la password di root.
La nostra risposta è no: tasti n + Invio
Alla quarta domanda, acconsentiamo ad eliminare gli utenti anonimi creati da MariaDB, digitando Invio
Alternativamente possiamo digitare Y + Invio
Alla quinta domanda, non autorizziamo root a connettersi a MariaDB se non da localhost: Y + Invio, oppure solo Invio
La sesta domanda ci chiede se vogliamo eliminare il database che è stato creato per esercitarsi. Eliminiamolo: Y + Invio, oppure solo Invio
La settima ed ultima richiesta è se vogliamo riavviare il server MariaDB per confermare le scelte effettuate. Confermiamo: Y + Invio, oppure solo Invio
La procedura è finita
Possiamo iniziare ad impostare il nostro database/rubrica.
Entriamo nella gestione di MariaDB:
sudo mariadb
Nel linguaggio SQL, tutte le frasi devono finire con " ; " e dopo quel simbolo usiamo il tasto Invio.
Creiamo il database serverdiposta:
create database serverdiposta;
Incominciamo ad usare il database appena creato, serverdiposta:
use serverdiposta;
MariaDB [serverdiposta] indica che siamo nel database serverdiposta.
Creiamo la prima tabella, domain:
create table domain (
id int(11) not null auto_increment,
domain varchar(100) not null unique,
primary key (id));
Abbiamo impostato che la prima colonna id sarà di tipo integer, cioè numeri, dovrà avere un valore e sarà auto incrementale, cioè , se non indicato diversamente, la prima inserzione di dati avrà valore = 1 , la successiva 2 e così via; inoltre, sarà la chiave primaria: dovrà essere unica e sarà la primaria tra le chiavi uniche.
La colonna domain userà lettere o numeri, ma intesi caratteri (varchar) di lunghezza non superiore ai 100 caratteri e questo campo è obbligatorio (not null) ed anche esso unico: non potranno esserci 2 campi identici.
Avrete notato che se usiamo il tasto Invio senza mettere alla fine della frase il " ; ", MariaDB manda si a capo, ma con un simbolo di continuità della frase ( -> ) , indicando che viene fatto solo per migliorare la comprensibilità, ma è una frase scritta su una riga continua fino al raggiungimento del simbolo " ; "
La virgola (" , ") indica che c'è un altro enunciato.
È la volta di creare la tabella mailbox con all'interno le sue quattro colonne:
create table mailbox (
id int(11) not null auto_increment,
username varchar(150) not null unique,
password varchar(150) not null,
maildir varchar(150) not null unique,
primary key (id));
Con le spiegazioni precedenti, è facile comprendere anche questo enunciato.
Per finire, creiamo la tabella alias con le sue tre colonne:
create table alias (
id int(11) not null auto_increment,
address varchar(100) not null unique,
goto varchar(100) not null,
primary key (id));
In questo caso, unique è impostata su address, perchè goto, la destinazione, potrà anche essere la medesima, ma address no, dovrà sempre essere diversa.
Esempio:
goto = giubbe@sitoprovaprimo.it
address = abuse@sitoprovaprimo.it
address = postmaster@sitoprovaprimo.it
address = scuola@sitoprovaprimo.it
Vediamo la composizione delle tabelle nel database serverdiposta:
show tables;
Dobbiamo creare un utente di MariaDB, per permettere a Postfix, a Dovecot o alla Web Mail, di accedere al database, senza esplicitare la password dell'utente root.
Generiamo un utente mysql ed inseriamo la richiesta di privilegi:
grant all privileges on
serverdiposta.* to 'gestoreposta'@'localhost' identified by 'g€$t0r€p0$t@';
Subito dopo, rendiamo effettivi questi permessi con:
flush privileges;
Controlliamo la giusta sintassi:
show grants for 'gestoreposta'@'localhost';
Abbiamo creato, in serverdiposta, un utente, gestoreposta, con password g€$t0r€p0$t@.
Questi dati andranno inseriti nei campi predisposti da altre applicazioni , affinchè queste possano raggiungere e connettersi al database.
Ovvio: usiamo quantomeno una password diversa da questa pubblicata.
Se guardate l'immagine, la password ha subito un hash.
Questa funzione è valida solo nella tabella degli utenti di MariaDB, non in altre applicazioni.
L'hash ha una lunghezza fissa ed inizia sempre con " * "
Per vedere la funzione all'opera, digitate nella riga di comando di MariaDB:
select password ('passwordinchiaro');
Controlliamo l'inclusione di gestoreposta tra gli utenti mysql:
select user,host from mysql.user;
Tutto bene; possiamo uscire da MariaDB:
exit;
In questo caso specifico, potremmo anche omettere il punto e virgola finale.
Iniziamo a popolare il nostro database.
Ritorniamo al database serverdiposta
ed iniziamo dalla tabella domain, indicando i 2 domini di cui Postfix dovrà gestire la posta:
insert into domain(id,domain) values ('1','sitoprovaprimo.it');
insert into domain(id,domain) values ('2','sitoprovasecondo.it');
Controlliamo il giusto inserimento:
select * from domain;
In questo caso, * indica tutti i campi inseriti nella tavola.
Passiamo alla tabella mailbox, con le sue 3 colonne.
Inseriamo ogni valore rispettivo alla sua colonna:
insert into mailbox values ('1','giubbe@sitoprovaprimo.it','passwordgiubbe','sitoprovaprimo.it/giubbe/');
Un secondo indirizzo con i suoi campi:
insert into mailbox values ('2','gennarino@sitoprovaprimo.it','passwordgennarino','sitoprovaprimo.it/gennarino/');
Abbiamo inserito i primi indirizzi di posta da gestire, le relative password e la loro cartella personale.
Non allarmatevi per la password in chiaro: dobbiamo soltanto riempire il campo, dato che lo abbiamo impostato not null.
In seguito, dopo l'installazione di Dovecot e prima di mettere online il nostro Mail Server, useremo una utilità di Dovecot per cifrare la password e sostituiremo questa password con quella cifrata.
Possiamo inserire tutti gli indirizzi che vogliamo per il dominio @sitoprovaprimo.it.
Aggiungiamo altri indirizzi relativi ad un altro dominio, sempre se questo dominio è già inserito nella tabella domini, sitoprovasecondo.it:
insert into mailbox values ('3','franco@sitoprovasecondo.it','passwordfranco','sitoprovasecondo.it/franco/');
Un altro indirizzo ancora :
insert into mailbox values ('4','carlino@sitoprovasecondo.it','passwordcarlino','sitoprovasecondo.it/carlino/');
Facciamo un controllo:
select * from mailbox;
Ci rimane da inserire gli alias, se effettivamente li vogliamo.
Nella gestione di un dominio, tre sono gli alias necessari (non obbligatori), per consuetudine: postmaster@dominio.tld, webmaster@dominio.tld ed abuse@dominio.tld ; sono nomi comuni dove inviare richieste o segnalazioni, quando non conosciamo il reale indirizzo dell'amministratore del dominio.
Stavolta, nell'inserimento dei dati, sfrutteremo il valore autoincrementale.
Perciò, dovremo indicare le altre 2 colonne per cui inseriremo valori:
insert into alias (address,goto) values
('abuse@sitoprovaprimo.it','giubbe@sitoprovaprimo.it'),
('postmaster@sitoprovaprimo.it','giubbe@sitoprovaprimo.it'),
('webmaster@sitoprovaprimo.it','giubbe@sitoprovaprimo.it'),
('calcetto@sitoprovaprimo.it','giubbe@sitoprovaprimo.it'),
('webmaster@sitoprovasecondo.it','franco@sitoprovasecondo.it'),
('abuse@sitoprovasecondo.it','carlino@sitoprovasecondo.it'),
('postmaster@sitoprovasecondo.it','franco@sitoprovasecondo.it'),
('scuola@sitoprovasecondo.it','carlino@sitoprovasecondo.it');
Abbiamo anche inserito contemporaneamente più righe, separandole con la virgola, fino al punto e virgola finale.
Controlliamone il giusto inserimento e la funzione autoincrementale :
select * from alias;
Abbiamo 'popolato' il nostro database.
Adesso, siamo in grado di poter aggiungere qualsiasi voce necessaria all'interno del database.
Possiamo anche creare qualsiasi database, per vari altri scopi; ad esempio, per una raccolta dischi o per catalogare fotografie, oppure anche per creare un calendario, con eventi da fare.
Puntualizzazione: stiamo attenti ad ogni carattere indicato : ( ) ' , ; * sono fondamentali.
Ogni dimenticanza, si rivelerà un rompicapo nel trovarla.
Quante serate passate a cercare gli errori e, magari poi, a riformattare il tutto e ricominciare daccapo.