Home giubbe.org


×

Attenzione!

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

multi

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
multi


Adesso possiamo installare il server
sudo apt install -y mariadb-server
multi


Verifichiamo che l'applicazione sia funzionante ed attiva:
systemctl status mariadb
multi


Indichiamo al Sistema che ad ogni avvio del sistema stesso, anche il server MariaDB dovrà essere avviato:
sudo systemctl enable mariadb
multi


Possiamo passare all'impostazione di MariaDB:
sudo mysql_secure_installation
multi


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 .

multi


Non vogliamo che altri utenti del sistema, oltre a root, usino MariaDB, perciò tasti n + Invio

multi


La terza richiesta è se vogliamo cambiare la password di root.
La nostra risposta è no: tasti n + Invio

multi


Alla quarta domanda, acconsentiamo ad eliminare gli utenti anonimi creati da MariaDB, digitando Invio
Alternativamente possiamo digitare Y + Invio

multi


Alla quinta domanda, non autorizziamo root a connettersi a MariaDB se non da localhost: Y + Invio, oppure solo Invio

multi


La sesta domanda ci chiede se vogliamo eliminare il database che è stato creato per esercitarsi. Eliminiamolo: Y + Invio, oppure solo Invio

multi


La settima ed ultima richiesta è se vogliamo riavviare il server MariaDB per confermare le scelte effettuate. Confermiamo: Y + Invio, oppure solo Invio

multi


La procedura è finita

multi


Possiamo iniziare ad impostare il nostro database/rubrica.
Entriamo nella gestione di MariaDB:
sudo mariadb

multi

Nel linguaggio SQL, tutte le frasi devono finire con " ; " e dopo quel simbolo usiamo il tasto Invio.


Creiamo il database serverdiposta:
create database serverdiposta;

multi


Incominciamo ad usare il database appena creato, serverdiposta:
use serverdiposta;

multi

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));

multi

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));

multi

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));

multi

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;

multi



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;

multi

Controlliamo la giusta sintassi:
show grants for 'gestoreposta'@'localhost';
multi

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');
multi


Controlliamo l'inclusione di gestoreposta tra gli utenti mysql:
select user,host from mysql.user;
multi


Tutto bene; possiamo uscire da MariaDB:
exit;

multi

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');

multi


Controlliamo il giusto inserimento:
select * from domain;

multi

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/');

multi

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/');

multi


Facciamo un controllo:
select * from mailbox;

multi



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');

multi

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;

multi



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.