
Un funzionale mail server può essere configurato utilizzando Postfix (MTA) con l'aggiunta di alcuni componenti come Dovecot (IMAP) e Roundcube (webmail).
Combinando queste applicazioni si ottiene un sistema di posta elettronica con i protocolli SMTP, IMAP, POP3 che può essere utilizzato in un ambinete aziendale dove il budget a disposizione è limitato. Questa soluzione si basa su software di tipo Open Source dove le licenze di utilizzo non necessitano di essere acquistate.
Prerequisiti
- CentOS 6: installazione minima
- Postfix: SMTP
- Dovecot: IMAP, POP3
- Roundcube: client IMAP web-based
- Postfix admin: per amministrare Postfix tramite web-gui
Per funzionare correttamente, è necessario che il servizio selinux sia disabilitato nel sistema utilizzato.
# vi /etc/selinux/config
Installazione di Postfix
Dalla console, installare Postfix utilizzando il comando yum.
# yum install postfix
Editare il file di configurazione /etc/postfix/main.cf ed impostare i parametri come indicato:
myhostname = hostname.domain.com mydomain = domain.com myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 192.168.1.0/24, 127.0.0.0/8 home_mailbox = Maildir/
# vi /etc/postfix/main.cf
myhostname = hostname.domain.com mydomain = domain.com myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.1.0/24, 127.0.0.0/8
home_mailbox = Maildir/
Una volta terminata la configurazione, impostare l'applicazione per avviarsi durante il boot di sistema ed avviare il servizio.
# chkconfig postfix on
# service postfix start
Testare Postfix
Per verificare che il sistema funzioni correttamente, digitare da console i seguenti comandi per testare l'invio di una email:
# telnet localhost smtp
Trying ::1... Connected to localhost. Escape character is '^]'. 220 server.domain.com ESMTP Postfix ehlo localhost 250-server.domain.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from: username@domain.com 250 2.1.0 Ok rcpt to: username@domain.com 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> test . 250 2.0.0 Ok: queued as 2C55A94 quit 221 2.0.0 Bye Connection closed by foreign host.
Per controllare che la email sia stata effettiavmente ricevuta, verificare la sua presenza nella directory /home/username/Maildir/new.
# cd /home/username/Maildir/new/
# ll
# cat xxxxxx.xxxxxx.server.domain.com
L'email è stata correttamente ricevuta dal sistema quindi il mail server funziona.
Installazione di Dovecot
Mentre Postfix opera esclusivamente come Mail Transfer Agent (MTA), per poter recuperare le emails utilizzando i sistemi attuali è necessario abilitare i protocolli IMAP/POP3. Dovecot è l'applicazione che funge da server IMAP e POP3.
Utilizzare il comando yum per installare Dovecot.
# yum install dovecot
Editare il file di configurazione /etc/dovecot/dovecot.conf per abilitare i protocolli richiesti.
# vi /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp
Successivamente specificare la location delle emails editando il file /etc/dovecot/conf.d/10-mail.conf.
# vi /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
Editare il file /etc/dovecot/conf.d/10-auth.conf ed impostare i seguenti parametri:
# vi /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login
L'ultimo file da editare è /etc/dovecot/conf.d/10-master.conf.
# vi /etc/dovecot/conf.d/10-master.conf
unix_listener auth-userdb {
#mode = 0600
user = postfix
group = postfix
}
Anche in questo caso, impostare Dovecot per avviarsi al boot del sistema ed avviare il servizio.
# chkconfig dovecot on
# service dovecot start
Testare Dovecot
Per testare il corretto funzionamento di Dovecot, è possibile utilizzare il protocollo POP3.
# telnet localhost pop3
Trying ::1... Connected to localhost. Escape character is '^]'. +OK Dovecot ready. user admin +OK pass password +OK Logged in. list +OK 1 messages: 1 477 . retr 1 +OK 477 octets Return-Path: <username@domain.com> X-Original-To: username@domain.com Delivered-To: username@domain.com Received: from localhost (localhost [IPv6:::1]) by server.domain.com (Postfix) with ESMTP id 2C55A94 for username@domain.com; Wed, 12 Jun 2013 12:22:00 +0200 (CEST) Message-Id: <20130207113547.117113FF18@server.domain.com> Date: Wed, 12 Jun 2013 12:22:00 +0200 (CEST) From: username@domain.com To: undisclosed-recipients:; test postfix . quit +OK Logging out. Connection closed by foreign host.
Installazione di Roundcube
Roundcube è un client IMAP browser-based con una interfaccia utente ben progettata anche dal lato visivo.
Per configurare l'applicazione è necessario inanzitutto installare nel sistema il server MySQL e Apache.
# yum install mysql-server mysql-devel httpd
Abilitare sia MySQL che Apache per avviarsi al boot del sistema ed abilitare i servizi.
# chkconfig mysqld on
# service mysqld start
# chkconfig httpd on
# service httpd start
Installazione repository EPEL
Per installare Roundcube tramite il comando yum, è necessario impostare nel sistema il repository EPEL.
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
Una volta installato EPEL, utilizzare yum per installare Roundcube.
# yum install roundcubemail
Configurare MySQL
Per definire il database utilizzato dall'applicazione accedere alla configurazione di MySQL.
# mysql -u root -p
mysql> create database roundcube; mysql> create user roundcube; mysql> GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost IDENTIFIED BY 'password'; mysql> flush privileges; mysql> use roundcube; mysql> source /usr/share/doc/roundcubemail-0.8.6/SQL/mysql.initial.sql mysql> quit
Editare il file di configurazione /etc/roundcubemail/db.inc.php ed impostare i parametri per accedere al database.
# vi /etc/roundcubemail/db.inc.php
$rcmail_config['db_dsnw'] = 'mysql://roundcube:password@localhost/roundcube';
Editare il file /etc/roundcubemail/main.inc.php ed impostare l'hostname scelto per effettuare il login.
# vi /etc/roundcubemail/main.inc.php
$rcmail_config['default_host'] = 'localhost';
Per rendere il sistema accessibile esternamente al server, editare il file /etc/httpd/conf.d/roundcubemail.conf ed impostare il parametro corretto.
# vi /etc/httpd/conf.d/roundcubemail.conf
Allow from all
Editare il file /etc/php.ini file per configurare la time zone corretta.
Poichè il log potrebbe segnalare eventuali errori dovuti all'encryption, impostare il parametro di encryption con la sintassi corretta.
# vi /etc/php.d/mcrypt.ini
extension=mcrypt.so
Riavviare Apache.
# service httpd restart
Testare Roundcube
Accedere a Roundcube digitando da browser l'indirizzo:
http://IP_address/roundcubemail
Inserire le proprie credenziali e cliccare su Login.
Appare la schermata principale visualizzando l'email ricevuta quando è stato precedentemente testato Postfix.
Installare Postfix Admin
Per rendere l'amministrazione di Postfix più semplice, il tool Postfix admin è un interfaccia web-based utilizzata per gestire le mailbox, i virtual domain e gli alias.
Se non è già presente nel sistema, installare il componente PHP richiesto dall'applicazione.
# yum install php-imap
Accedere a MySQL e creare il database utilizzato da Postfix Admin.
# mysql -u root -p
mysql> create database postfixadmin; mysql> grant all privileges on postfixadmin.* to postfixadmin@'localhost' identified by 'password'; mysql> flush privileges; mysql> quit
Utilizzando il comando wget, effettuare il download della versione più recente dell'applicazione.
# wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.6/postfixadmin-2.3.6.tar.gz
Scompattare il file ed effettuare un'operazione di move della directory nella cartella /var/www/html .
# tar -vxzf postfixadmin-2.3.6.tar.gz
# mv postfixadmin-2.3.6 /var/www/html/postfixadmin
Editare il file di configurazione /var/www/html/postfixadmin/config.inc.php per abilitare l'applicazione ed impostare la password.
# vi /var/www/html/postfixadmin/config.inc.php
$CONF['configured'] = true; $CONF['setup_password'] = 'password';
Settare i parametri per accedere al database creato in precedenza.
$CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfixadmin'; $CONF['database_password'] = 'password'; $CONF['database_name'] = 'postfixadmin';
Aggiungere la riga seguente per permettere la creazione della password amministrativa da web.
$CONF['setup_password'] = '8abd38580e77ebf7010eb60b95eb4fad:0bd829114d9efc4bc35c7e42cf7d3507dad8b837';
Riavviare Apache.
# service httpd restart
Per eseguire il Postfix Admin Setup Checker, digitare da browser l'indirizzo:
http://IP_address/postfixadmin/setup.php
Cambiare la password di setup.
Creare il Superadmin account compilando i campi presenti in fondo allo schermo. Cliccare sul bottone Add Admin.
L'account Superadmin viene creato.
Per accedere all'interfaccia di amministrazione, digitare nel browser l'indirizzo:
http://IP_address/postfixadmin
La schermata principale di Postfix Admin.
Inviare le email tramite un relay
Se la rete aziendale presenta dei sitemi antispam che verificano la posta sia in entrata sia in uscita, Postfix necessita di essere opportunamente configurato per effettuare il relay delle email direttamente al server antispam.
Per permettere un corretto flusso delle email, configurare il campo relayhost con l'indirizzo corretto del sistema antispam.
# vi /etc/postfix/main.cf
relayhost= lx-antispam02.nolabnoparty.local
Il mail server è ora pienamente operativo con le funzioni base per gestire correttamente i messaggi email.

















































Salve,
sto seguendo questa perché, oltre ad essere cmpleta, sembra molto dettagliata. Sono arrivato al test di roundcubemail. Purtroppo, non riesco ad andare oltre perché la finestra di roundcube mi appare con questo messaggio:
DATABASE ERROR: CONNECTION FAILED!
Unable to connect to the database!
Please contact your server-administrator.
Nel configurare MySQL, la password dell'user "roundcube" tu hai usato "roundcube00" ed io "franco". Credi che il problema possa essere questo? Come si può rimediare? Quali sono le impostazioni da verificare in questo caso?
Grazie, Franco
Ho risolto. Il problema era solo quello della password. (colpa mia) Posso confermare che è un'ottima guida, testata e funzionante. Posso inviare e ricevere mail all'interno della lan. Se hai voglia di fare un'altra guida per inviare e ricevere mail anche dall'esterno la testo volentieri.
Grazie Paolo 🙂
Grazie. Sono contento di sapere che la guida ti è stata utile.
Questo sistema è un server di posta a tutti gli effetti e quindi le email possono essere inviate/ricevute da/per l'esterno.
Allora mi spieghi come mai non riesco a ricevere mail dall'esterno e non riesco a configurare thunderbird?
Sul firewall della macchina server ho aperto le porte POP3 e SMTP sul router la 25 inviando da alice una mail a franco@mail.gol mi perviene l'errore da Mail Delivery Service (postmaster@alice.it).
Se la spedisco da postfixadmin (spedisci email) quando clisso su spedisci messaggio sotto mi esce "
La casella di posta è stata creata!"
maillog mi escono questi errori:
dovecot: master: Warning: Killed with signal 15 (by pid=1419 uid=0 code=kill)
dovecot: master: Dovecot v2.0.9 starting up (core dumps disabled)
postfix/postfix-scripts[1255] : startingo the postfix mail system
postfix/master[1256]. daemon started -- version 2.6.6, configuration (etc/postfix
postfix/postfix-script[1430]: stopping the postfix mail system
postfix/master[1256]: terminating on signal 15
questi messaggi si ripetono più volte.
Ho sbagliato qualcosa? 🙂
Per ricevere le email dall'esterno hai bisogno di verificare:
- Come è configurato nel DNS il record MX del dominio associato
- L'IP statico o DynDNS name è correttmente associato al record MX
- Nel router il NAT è impostato correttamente
- Il firewall ha le porte correttamente impostate (soprattutto la 25) per i protocolli utilizzati
Per inviare le email:
Se si utilizza la linea ADSL Alice "casalinga" (non business), devi utilizzare come SMTP out.alice.it con la corretta autenticazione.
Interessante, davvero interessante. Fin'ora avevo impostato soltanto le porte del firewall:
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 995 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 993 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Sono intervenuto sul Nat del router aprendo la porta 25. Per il resto, non avevo fatto niente e mi sa che mi debbo arrangiare diversamente. 🙂
Purtroppo anche questi errori:
dovecot: imap-login: Aborted login (auth failed, 1 attempts): user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Jul 21 18:21:33 mercury dovecot: imap-login: Login: user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=1346, secured
Jul 21 18:21:34 mercury dovecot: imap(franco): Disconnected: Logged out bytes=29/399
Jul 21 18:21:34 mercury dovecot: imap-login: Login: user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=1349, secured
Jul 21 18:21:34 mercury dovecot: imap(franco): Disconnected: Logged out bytes=44/362
Jul 21 18:21:35 mercury dovecot: imap-login: Login: user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=1355, secured
Jul 21 18:21:35 mercury dovecot: imap-login: Login: user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=1356, secured
Jul 21 18:21:35 mercury dovecot: imap(franco): Disconnected: Logged out bytes=82/430
Jul 21 18:21:35 mercury dovecot: imap(franco): Disconnected: Logged out bytes=303/1190
Jul 21 18:22:14 mercury dovecot: imap-login: Login: user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=1360, secured
Jul 21 18:22:14 mercury dovecot: imap(franco): Disconnected: Logged out bytes=44/362
Jul 21 18:22:15 mercury dovecot: imap-login: Login: user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=1365, secured
Jul 21 18:22:15 mercury dovecot: imap(franco): Disconnected: Logged out bytes=82/430
Jul 21 18:22:15 mercury dovecot: imap-login: Login: user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=1366, secured
Jul 21 18:22:15 mercury dovecot: imap(franco): Disconnected: Logged out bytes=303/1190
Jul 21 18:22:43 mercury dovecot: imap-login: Aborted login (auth failed, 1 attempts): user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Jul 21 18:23:07 mercury dovecot: imap-login: Aborted login (auth failed, 1 attempts): user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Jul 21 18:24:51 mercury dovecot: imap-login: Aborted login (auth failed, 1 attempts): user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Jul 21 18:25:16 mercury dovecot: imap-login: Aborted login (auth failed, 1 attempts): user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Jul 21 18:25:30 mercury dovecot: imap-login: Aborted login (auth failed, 1 attempts): user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Ciao,
seguendo la Tua guida sono riuscito a configurare il mio primo server. tuttavia mi ritrovo ad avere un inconveniente.
ovvero, roundcube e postfix admin si ritrovano su due DB differenti e quando eseguo delle modifiche a postfix admin (e.g. creazione di nuovo dominio e relativa casella) loggandomi con le credenziali appena create su roundcube questo mi dice che nome utente o password errati
come posso risolverlo
Inizio a pensare che ho lo stesso problema!
Mi spiegate come faccio a leggere la posta dei domini creati con postfixadmin?
Nessuna risposta?
OTTIMO LAVORO
GRAZIE
Tu hai superato il problema di relazione tra i due database?
Grazie per la guida, davvero ottima! ho configurato il tutto ma non capisco come procedere alla creazione delle email:
Creando le email da postfixadmin non riesco ad accedere a roundcube con i dati inseriti, ma solo con i dati dell'utente di sistema.
Ciao.. la guida è perfetta.. ma incontro problemi...
Nel test localhost smtp, mi manda l'email ma non la recepisce.
Nel test dovecot mi accetta il nome utente ma la password è giusta...
Puoi consigliarmi?
Grazie & complimenti.