63
contributi
m (→Utenti) |
m (aggiornamento stile e aggiunti alcuni chiarimenti) |
||
Riga 24: | Riga 24: | ||
Per l'installazione dei pacchetti eseguire il comando: | Per l'installazione dei pacchetti eseguire il comando: | ||
aptitude install postfix-mysql dovecot-imapd | # aptitude install postfix-mysql dovecot-imapd | ||
Se sulla macchina c'era installato il predefinito Exim4, non preoccupatevi perché ci penserà Postfix a rimuoverlo. | Se sulla macchina c'era installato il predefinito Exim4, non preoccupatevi perché ci penserà Postfix a rimuoverlo. | ||
Riga 40: | Riga 40: | ||
== Creazione del database == | == Creazione del database == | ||
A questo punto è | A questo punto è necessario preparare il database che ospiterà tutti i dati. Il nome assegnato al database è ''mailserver'', ma non è assolutamente vincolante, ergo potete assegnare il nome che volete, facendo però attenzione a modificare le istruzioni qui riportate. | ||
Entrare nella shell di mysql (mysql -u root -p): | Entrare nella shell di mysql (mysql -u root -p): | ||
mysql --user=root --password=mettere_password | # mysql --user=root --password=mettere_password | ||
Effettuato il login con i privilegi necessari | Effettuato il login con i privilegi necessari, dalla console di MySQL procediamo con la creazione del database: | ||
mysql> CREATE DATABASE mailserver DEFAULT CHARSET utf8; | #''mysql>'' CREATE DATABASE mailserver DEFAULT CHARSET utf8; | ||
Ora passiamo alla prima tabella destinata a memorizzare gli account utente virtuali. Nel nostro caso indirizzo email e nome utente coincideranno, come sono soliti fare gli ISP. | Ora passiamo alla prima tabella destinata a memorizzare gli account utente virtuali. Nel nostro caso indirizzo email e nome utente coincideranno, come sono soliti fare gli ISP. | ||
Prima dobbiamo selezionare il database | |||
mysql> use mailserver | #''mysql>'' use mailserver | ||
Poi creiamo la tabella con la seguente istruzione SQL | |||
mysql> CREATE TABLE `users` ( | #''mysql>'' CREATE TABLE `users` ( | ||
`email` varchar(200) NOT NULL, | `email` varchar(200) NOT NULL, | ||
`password` varchar(128) NOT NULL, | `password` varchar(128) NOT NULL, | ||
Riga 65: | Riga 65: | ||
Notate il campo active, potremo utilizzarlo come flag per disattivare un utente senza eliminare le informazioni relative alla sua casella di posta. | Notate il campo "active" della tabella, questo lo potremo utilizzarlo come flag per disattivare un utente senza eliminare le informazioni relative alla sua casella di posta. | ||
Proseguiamo con la successiva tabella destinata a contenere i domini per i quali il nostro server sarà abilitato a ricevere posta. Non dimenticate di far puntare al suo indirizzo IP i corrispondenti record MX dei DNS. | Proseguiamo con la successiva tabella destinata a contenere i domini per i quali il nostro server sarà abilitato a ricevere posta. Non dimenticate di far puntare al suo indirizzo IP i corrispondenti record MX dei DNS. | ||
mysql> CREATE TABLE `domains` ( | #''mysql>'' CREATE TABLE `domains` ( | ||
`domain` varchar(200) NOT NULL, | `domain` varchar(200) NOT NULL, | ||
`Status` enum('DISABLE','ENABLE') NOT NULL default 'ENABLE', | `Status` enum('DISABLE','ENABLE') NOT NULL default 'ENABLE', | ||
Riga 76: | Riga 76: | ||
Passiamo ora alla creazione della tabella degli forward, dove il campo "source" conterrà l'alias mentre "destination" la casella email verso cui verrà effettuata la ridirezione: | Passiamo ora alla creazione della tabella degli forward, dove il campo "source" conterrà l'alias mentre "destination" la casella email verso cui verrà effettuata la ridirezione: | ||
mysql> CREATE TABLE `forward` ( | #''mysql>'' CREATE TABLE `forward` ( | ||
`source` varchar(200) NOT NULL, | `source` varchar(200) NOT NULL, | ||
`destination` varchar(200) NOT NULL, | `destination` varchar(200) NOT NULL, | ||
Riga 86: | Riga 86: | ||
Terminiamo creando un utente che consentirà a Postfix di agire sul database: | Terminiamo creando un utente che consentirà a Postfix di agire sul database: | ||
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON mailserver.* TO postfix@localhost IDENTIFIED BY 'postfix_password'; | #''mysql>'' GRANT SELECT, INSERT, UPDATE, DELETE ON mailserver.* TO postfix@localhost IDENTIFIED BY 'postfix_password'; | ||
Aggiorniamo i privilegi | Aggiorniamo i privilegi | ||
mysql> FLUSH PRIVILEGES; | #''mysql>'' FLUSH PRIVILEGES; | ||
Infine, usciamo dalla shell di mysql con il comando: | |||
mysql> quit | #''mysql>'' quit | ||
Riga 118: | Riga 118: | ||
Nella directory /etc/postfix, creiamo un file di nome ''mysql-domains.cf''. | Nella directory /etc/postfix, creiamo un file di nome ''mysql-domains.cf''. | ||
vi /etc/postfix/mysql-domains.cf | # vi /etc/postfix/mysql-domains.cf | ||
Tale file servirà ad accedere alla tabella domains, precedentemente creata, per verificare se Postfix sia autorizzato a ricevere posta per il dominio in oggetto. Ricordo che dovremo aver preventivamente configurato i DNS perché i record MX del dominio puntino al nostro server. Inseriamo in ''mysql-domains.cf'' le seguenti istruzioni: | Tale file servirà ad accedere alla tabella domains, precedentemente creata, per verificare se Postfix sia autorizzato a ricevere posta per il dominio in oggetto. Ricordo che dovremo aver preventivamente configurato i DNS perché i record MX del dominio puntino al nostro server. Inseriamo in ''mysql-domains.cf'' le seguenti istruzioni: | ||
Riga 126: | Riga 126: | ||
query = SELECT domain AS virtual FROM domains WHERE domain='%s' | query = SELECT domain AS virtual FROM domains WHERE domain='%s' | ||
hosts = 127.0.0.1 | hosts = 127.0.0.1 | ||
NB: lo user "postfix" e relativa password sono relativi all'utente del database che hai definito con il comando "GRANT ..." nel capitolo precedente [[Server_mail_base:_Postfix_Dovecot_e_MySql#Creazione_del_database]] | |||
La sintassi è molto semplice: con le prime tre righe indichiamo a Postfix le credenziali (user e password) ed il database a cui collegarsi. | La sintassi è molto semplice: con le prime tre righe indichiamo a Postfix le credenziali (user e password) ed il database a cui collegarsi. | ||
Riga 143: | Riga 145: | ||
hosts = 127.0.0.1 | hosts = 127.0.0.1 | ||
NB: lo user "postfix" e relativa password sono relativi all'utente del database che hai definito con il comando "GRANT ..." nel capitolo precedente [[Server_mail_base:_Postfix_Dovecot_e_MySql#Creazione_del_database]] | |||
La funzione SUBSTRING_INDEX permette di suddividere una stringa in sottostringhe utilizzando un carattere come separatore, nel nostro caso "@". Supponendo che l'indirizzo email sia test@miazienda.it SUBSTRING_INDEX(email,'@',-1) corrisponderà a miazienda.it mentre SUBSTRING_INDEX(email,'@',1) a test. Il risultato della query sarà il percorso ''miazienda.it/test/'' ed rappresenterà il percorso dove verranno salvate le email dell'utente in questione. Questo ci permetterà di gestire facilmente molti domini isolandoli e raggruppando i rispettivi account. | La funzione SUBSTRING_INDEX permette di suddividere una stringa in sottostringhe utilizzando un carattere come separatore, nel nostro caso "@". Supponendo che l'indirizzo email sia test@miazienda.it SUBSTRING_INDEX(email,'@',-1) corrisponderà a miazienda.it mentre SUBSTRING_INDEX(email,'@',1) a test. Il risultato della query sarà il percorso ''miazienda.it/test/'' ed rappresenterà il percorso dove verranno salvate le email dell'utente in questione. Questo ci permetterà di gestire facilmente molti domini isolandoli e raggruppando i rispettivi account. | ||
Riga 150: | Riga 152: | ||
Questa tabella conterrà gli alias, ovvero quegli indirizzi email che saranno girati automaticamente ad un altro account email. | Questa tabella conterrà gli alias, ovvero quegli indirizzi email che saranno girati automaticamente ad un altro account email. | ||
Nella directory /etc/postfix, creiamo i seguenti due file: | Nella directory /etc/postfix, creiamo i seguenti due file: | ||
vi /etc/postfix/mysql-aliases.cf | # vi /etc/postfix/mysql-aliases.cf | ||
All'interno del file inseriamo il seguente testo: | All'interno del file inseriamo il seguente testo: | ||
Riga 158: | Riga 160: | ||
query = SELECT destination FROM forward WHERE source='%s' | query = SELECT destination FROM forward WHERE source='%s' | ||
hosts = 127.0.0.1 | hosts = 127.0.0.1 | ||
NB: lo user "postfix" e relativa password sono relativi all'utente del database che hai definito con il comando "GRANT ..." nel capitolo precedente [[Server_mail_base:_Postfix_Dovecot_e_MySql#Creazione_del_database]] | |||
Creiamo il secondo file: | Creiamo il secondo file: | ||
vi /etc/postfix/mysql-email2email.cf | # vi /etc/postfix/mysql-email2email.cf | ||
All'interno del file inseriamo il seguente testo: | All'interno del file inseriamo il seguente testo: | ||
Riga 168: | Riga 172: | ||
query = SELECT email FROM users WHERE email='%s' AND status='ENABLE' | query = SELECT email FROM users WHERE email='%s' AND status='ENABLE' | ||
hosts = 127.0.0.1 | hosts = 127.0.0.1 | ||
NB: lo user "postfix" e relativa password sono relativi all'utente del database che hai definito con il comando "GRANT ..." nel capitolo precedente [[Server_mail_base:_Postfix_Dovecot_e_MySql#Creazione_del_database]] | |||
=== Permessi === | === Permessi === | ||
Infine modifichiamo i permessi su tutti i file appena creati: | Infine modifichiamo i permessi su tutti i file appena creati: | ||
chmod 640 /etc/postfix/mysql-*.cf | # chmod 640 /etc/postfix/mysql-*.cf | ||
chown root:postfix /etc/postfix/mysql-*.cf | # chown root:postfix /etc/postfix/mysql-*.cf | ||
Riga 277: | Riga 283: | ||
NB: Se non utilizzate un relayhost per inviare le email, saltate questo capitolo. | NB: Se non utilizzate un relayhost per inviare le email, saltate questo capitolo. | ||
Adesso bisogna inserire lo user e la password per l'autenticazione con il server SMTP esterno. | Adesso bisogna inserire lo user e la password per l'autenticazione con il server SMTP esterno. | ||
vi /etc/postfix/sasl_password | # vi /etc/postfix/sasl_password | ||
All'interno di questo file, scrivere l'indirizzo host, come specificato in relayhost del file main.cf, seguito dallo user:password validi per l'autenticazione con tale host. | All'interno di questo file, scrivere l'indirizzo host, come specificato in relayhost del file main.cf, seguito dallo user:password validi per l'autenticazione con tale host. | ||
Riga 284: | Riga 290: | ||
Generiamo il postfix lookup table, con il seguente comando: | Generiamo il postfix lookup table, con il seguente comando: | ||
postmap hash:/etc/postfix/sasl_password | # postmap hash:/etc/postfix/sasl_password | ||
Verifichiamo che la table sia stata creata correttamente con il seguente comando: | Verifichiamo che la table sia stata creata correttamente con il seguente comando: | ||
postmap -q mail.191.biz /etc/postfix/sasl_password | # postmap -q mail.191.biz /etc/postfix/sasl_password | ||
Adesso, per ragioni di sicurezza, possiamo cancellare il file di generazione: | Adesso, per ragioni di sicurezza, possiamo cancellare il file di generazione: | ||
rm /etc/postfix/sasl_password | # rm /etc/postfix/sasl_password | ||
=== Verifica invio all'esterno delle email === | === Verifica invio all'esterno delle email === | ||
Riavviamo il servizio postfix | Riavviamo il servizio postfix | ||
service postfix reload | # service postfix reload | ||
Inviare un'email test a una propria casella email: | Inviare un'email test a una propria casella email: | ||
Riga 301: | Riga 307: | ||
Verificare i log per eventuali problemi: | Verificare i log per eventuali problemi: | ||
tail -f /var/log/mail.log | # tail -f /var/log/mail.log | ||
Riga 311: | Riga 317: | ||
== Configuriamo Dovecot == | == Configuriamo Dovecot == | ||
Prima di creiamo/modifichiamo il file: | Prima di creiamo/modifichiamo il file: | ||
vi /etc/dovecot/dovecot-sql.conf | # vi /etc/dovecot/dovecot-sql.conf | ||
All'interno del file scriviamo il seguente testo: | All'interno del file scriviamo il seguente testo: | ||
Riga 320: | Riga 326: | ||
user_query = SELECT '/home/vmail/%d/%n' AS home, 'maildir:/home/vmail/%d/%n' AS mail, 5000 AS uid, 5000 AS gid FROM users WHERE email='%u' AND status='ENABLE' | user_query = SELECT '/home/vmail/%d/%n' AS home, 'maildir:/home/vmail/%d/%n' AS mail, 5000 AS uid, 5000 AS gid FROM users WHERE email='%u' AND status='ENABLE' | ||
Si intuisce dalla sintassi che %u rappresenta l'indirizzo email completo (test@miazienda.it), %d il dominio (miazienda.it), %n il nome (test). | Si intuisce dalla sintassi che %u rappresenta l'indirizzo email completo (test@miazienda.it), %d il dominio (miazienda.it), %n il nome (test). | ||
NB: lo user "postfix" e relativa password sono relativi all'utente del database che hai definito con il comando "GRANT ..." nel capitolo precedente [[Server_mail_base:_Postfix_Dovecot_e_MySql#Creazione_del_database]] | |||
Adesso impostiamo il file di configurazione | Adesso impostiamo il file di configurazione | ||
vi /etc/dovecot/dovecot.conf | # vi /etc/dovecot/dovecot.conf | ||
con questi principali parametri: | con questi principali parametri: | ||
Riga 359: | Riga 367: | ||
=== Postfix === | === Postfix === | ||
A questo punto facciamo qualche prova per vedere se tutto funziona. Avviamo Postfix e controlliamo i messaggi nel file di log: | A questo punto facciamo qualche prova per vedere se tutto funziona. Avviamo Postfix e controlliamo i messaggi nel file di log, con i seguenti due comandi: | ||
service postfix start | # service postfix start | ||
tail -f /var/log/mail.log | # tail -f /var/log/mail.log | ||
Se c'è qualche problema correggiamolo interpretando i messaggi ricevuti. Per far rileggere a Postfix il file di configurazione digitiamo semplicemente postfix reload. | Se c'è qualche problema correggiamolo interpretando i messaggi ricevuti. Per far rileggere a Postfix il file di configurazione digitiamo semplicemente postfix reload. | ||
Per controllare che Postfix è installato correttamente, fate un telnet alla porta 25 di localhost (hostname dov'è installato postfix). | Per controllare che Postfix è installato correttamente, fate un telnet alla porta 25 di localhost (hostname dov'è installato postfix). | ||
# telnet localhost 25 | |||
Se tutto va bene, dovreste leggere un messaggio di benvenuto simile a questo: | Se tutto va bene, dovreste leggere un messaggio di benvenuto simile a questo: | ||
Trying 127.0.0.1... | Trying 127.0.0.1... | ||
Riga 378: | Riga 386: | ||
=== Server imap === | === Server imap === | ||
Da terminale dare il comando | Da terminale dare il comando | ||
telnet localhost imap | # telnet localhost imap | ||
se compare una scritta del tipo: | se compare una scritta del tipo: | ||
Riga 401: | Riga 409: | ||
=== Inviamo un'email di prova === | === Inviamo un'email di prova === | ||
A questo punto il funzionamento di base è testato non resta che cominciare ad inviare qualche email al server, sia all'account reale che all'alias, verificandone la corretta consegna. Inizialmente proviamo in locale con il comando mail: | A questo punto il funzionamento di base è testato non resta che cominciare ad inviare qualche email al server, sia all'account reale che all'alias, verificandone la corretta consegna. Inizialmente proviamo in locale con il comando mail: | ||
mail -s 'test funzionamento' test@miazienda.it | # mail -s 'test funzionamento' test@miazienda.it | ||
Dopo aver digitato il comando ''mail'' premiamo invio, poi scriviamo un messaggio di prova e con CRTL + d indichiamo che l'immissione di testo è terminata, un nuovo invio dopo "Cc:" finalizza la spedizione dell'email. | Dopo aver digitato il comando ''mail'' premiamo invio, poi scriviamo un messaggio di prova e con CRTL + d indichiamo che l'immissione di testo è terminata, un nuovo invio dopo "Cc:" finalizza la spedizione dell'email. |
contributi