Zarafa: un sostituto opensource per Microsoft Exchange: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Riga 75: Riga 75:
<pre>
<pre>
echo libvmime0 hold | dpkg --set-selections
echo libvmime0 hold | dpkg --set-selections
echo libical0 hold | dpkg --set-selections
</pre>
</pre>
  }}
  }}

Versione delle 14:31, 18 mag 2009

Zarafa: un sostituto opensource per Microsoft Exchange

Introduzione

Zarafa è una soluzione groupware basata sull'aspetto di Microsoft Outlook, che permette la condivisione di e-mail e calendari tramite Outlook, Evolution o altri programmi, oppure attraverso una interfaccia web-based in Ajax. La versione community di Zarafa, rilasciata con licenza GPLv3, offre:

  • Webaccess basato su tecnologia AJAX, accessibile anche da dispositivi portatili
  • Gateway IMAP/POP3
  • Gateway iCal
  • Z-Push, un demone che offre compatibilità ActiveSync (licenza GPLv2)
  • uno zarafa-connector per Outlook.

La versione community offre fino a 3 utenti Outlook, ed è quindi adatta a reti di piccoli uffici, a reti con predominanza di client Linux oppure per reti in cui gli utenti si servono normalmente di interfacce web. Le versioni Zarafa Professional necessitano di una licenza commerciale per estendere il numero di utenti Outlook.

Download e installazione

Zarafa è scaricabile all'indirizzo:

http://www.zarafa.com/?q=en/download

Scegliete la versione compilata per la vostra Debian e contenente il connettore Outlook.

Requisiti di sistema

Per installarsi correttamente, Zarafa ha bisogno che sul nostro server Debian siano in funzione:

Inoltre dovremo installare alcune altre dipendenze:

apt-get install libapache2-mod-php5 mysql-cilent libldap2 libmysqlclient15off

L'installazione di Zarafa creerà anche un database MySQL chiamato zarafa. Dovremo pertanto creare un utente mysql che abbia i permessi sufficienti per connettersi dall'host locale al database. Collegatevi quindi al vostro database MySQL ed eseguite la query:

GRANT ALL PRIVILEGES ON zarafa.* TO 'zarafa'@'localhost' IDENTIFIED BY 'secret';

Installazione

L'installazione di Zarafa può avvenire in due modi.

Installazione manuale

L'installazione manuale è di pochi e semplici passaggi:

tar -xzvf zarafa.XXX.tar.gz
cd zarafa-xxxx
dpkg -i libvmime0_[version]_[arch].deb
dpkg -i libical0_[version]_[arch].deb
dpkg -i zarafa_[version]_[arch].deb
dpkg -i zarafa-webaccess_[version]_all.deb
dpkg -i zarafa-licensed_[version]_all.deb
Installazione tramite script

Io consiglio comunque l'installazione tramite lo script fornito da Zarafa, che:

  • Controllerà le dipendenze dei pacchetti;
  • Installerà i pacchetti utilizzando dpkg, esattamente come nell'installazione manuale;
  • Inizializzerà il database MySQL;
  • Chiederà le opzioni di configurazione
tar -xzvf zarafa.XXX.tar.gz
cd zarafa-xxxx
sh ./install.sh

Rispondete alle domande dell'installer e il gioco è fatto. Alla richiesta di inserimento del codice di licenza lasciate la riga bianca: in questo modo sarà automaticamente installata la versione community di Zarafa.

Post-installazione
Warning.png ATTENZIONE
L'installer di Zarafa verifica la presenza del pacchetto di API libvmime 0.7 e, a causa di pesanti differenze tra la versione 0.7 e 0.8 di queste API, se trova una versione successiva ne effettua il downgrade. Dato che nessun pacchetto di Debian dipende dalla versione 0.8 questa è un'operazione senza conseguenze. In occasione però di un successivo aggiornamento del server potrebbe succedere questo:
Calculating upgrade... Done
The following packages will be REMOVED:
zarafa zarafa-webaccess
The following NEW packages will be installed:
libgsasl7
The following packages will be upgraded:
libvmime0
1 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
Need to get 944kB of archives.
After unpacking 16.2MB disk space will be freed.
Do you want to continue [Y/n]?

Per evitare la rimozione di Zarafa è consigliato di impostare lo stato di hold su questo pacchetto:

echo libvmime0 hold | dpkg --set-selections
echo libical0 hold | dpkg --set-selections


Il file /etc/php5/apache2/php.ini deve avere la variabile magic_quotes_gpc settata su off, altrimenti l'interfaccia web di Zarafa non funzionerà. Quindi:

nano /etc/php5/apache2/php.ini

Cercate la variabile e impostatela così:

magic_quotes_gpc = Off

Se vogliamo, inoltre, che i client Outlook si connettano al webaccess sulla porta 80 dobbiamo impostare il modulo mod_proxy nel nostro Apache:

a2enmod proxy
nano /etc/apache2/apache2.conf

e inserite la sezione:

<IfModule mod_proxy.c>
      ProxyPass /zarafa http://127.0.0.1:236/
      ProxyPassReverse /zarafa http://127.0.0.1:236/
      <Location /zarafa>
          Order Allow,Deny
          Allow from all
      </Location>
</IfModule>

Riavviate Apache per fargli digerire le modifiche:

/etc/init.d/apache2 restart

Configurazione

I servizi di Zarafa

Zarafa, una volta installato, ha sei servizi in esecuzione:

  • zarafa-server, server Zarafa
  • zarafa-spooler, per inviare le email al server SMTP
  • zarafa-monitor, controlla i limiti delle quote
  • zarafa-gateway, fornisce accesso POP3 e IMAP
  • zarafa-ical, permette accesso iCal per clients che usano questo tipo di calendario
  • zarafa-licensed, necessario quando si utilizza un modulo non open source in combinazione con zarafa-server

Per avviarli, stopparli, riavviarli si usa la solita sintassi:

/etc/init.d/zarafa-[servicename] start|stop|restart

Configurare il server Zarafa

Il file principale di configurazione di Zarafa, ottimamente commentato, si trova in /etc/zarafa/server.cfg. Il cambiamento minimo che è necessario apportare al file di configurazione riguarda l'opzione mysql_password. Impostate la password corretta che zarafa utilizzerà per accedere al database mysql e controllate, inoltre, le altre opzioni mysql, così che le connessioni al database possano essere stabilite correttamente.
Zarafa a questo punto può già essere eseguito.
L'impostazione più importante in Zarafa, è quella relativa al plugin user_plugin. Questa impostazione determina quale backend utente deve essere utilizzato per elencare gli utenti ed i gruppi. Le possibilità sono:

  • db
  • unix
  • ldap

Il plugin utente db utilizza il database MYSQL per memorizzare informazioni relative a gruppi ed utenti. Si può utilizzare lo strumento zarafa-admin per gestire i propri utenti. Se decidete di utilizzare questo plugin, dovrete creare degli utenti Zarafa dotati di propria userID e propria password, che risulteranno essere diversi dagli utenti Linux. Il plugin utente db viene installato in modo predefinito e non necessita di nessuna configurazione.

Il plugin utente unix usa le informazioni dai file /etc/passwd, /etc/group e /etc/shadow. Un elenco di utenti e gruppi uguale a quello degli utenti Linux viene automaticamente ricreato in Zarafa.

Il plugin ldap utilizza un server LDAP per ottenere informazioni circa gli utenti ed i gruppi. Questi verranno quindi gestiti direttamente tramite il server LDAP o il server ActiveDirectory. Il grande vantaggio di questa soluzione è che si può dotare la propria rete di funzioni single sign on, in modo che ogni utente debba ricordare una sola userID e una sola password per accedere a tutti i servizi, dal login sui client alla posta.

Normalmente tutti i servizi di registrazione degli utenti registrano tali eventi in /var/log/zarafa. Questa directory viene creata quando i pacchetti vengono installati. E' possibile cambiare il metodo di registrazione degli eventi nel file di configurazione, configurando l'opzione syslog.

Configurare il plugin LDAP

Il plugin LDAP può essere utilizzato se nella vostra rete esiste già un server LDAP per gestire gli account utente e se desiderate accoppiare il server LDAP con Zarafa, in modo che gli utenti di sistema siano automaticamente autenticati anche in Zarafa. Tutti gli utenti, i gruppi e le informazioni su di essi verranno quindi recuperati in tempo reale dal server LDAP. Le principali caratteristiche del plugin LDAP sono:

  • Accoppiamento con qualsiasi server di tipo LDAP
  • Totalmente configurabile per l'uso con OpenLDAP e Active Directory

Per attivare il plugin LDAP aprite il file di configurazione di Zarafa e modificate la direttiva:

# Prima
#user_plugin = db

# Dopo
user_plugin = ldap

Il file di configurazione del plugin è /etc/zarafa/ldap.cfg. In una installazione from scratch di Zarafa questo file non esiste; il team Zarafa mette però gentilmente a disposizione due templates per la configurazione del plugin LDAP:

  • ldap.openldap.cfg già preconfigurato e ottimizzato per un database OpenLDAP
  • ldap.activedirectory.cfg già preconfigurato e ottimizzato per Microsoft Active Directory

Quindi:

cd /etc/zarafa
cp ldap.openldap.cfg ldap.cfg

Aprite ora il file appena creato, /etc/zarafa/ldap.cfg, e modificate i parametri, in modo da adattarli alla vostra struttura LDAP. In particolare modificate le voci:

#Sostituite a localhost l'IP del server LDAP, se gira su un'altra macchina
ldap_host = localhost

#Sostituite le voci del vostro dominio quando trovate
dn=zarafa,dn=com

# Mettete qui un utente LDAP per il binding con il database
ldap_bind_user = cn=admin,dc=zarafa,dc=com
# e la sua password
ldap_bind_passwd = password.utente

# Le righe seguenti contengono un errore
ldap_user_search_base = cn=users,dc=zarafa,dc=com
ldap_group_search_base = cn=groups,dc=zarafa,dc=com
# Individuatele e sostituitele con
ldap_user_search_base = ou=users,dc=zarafa,dc=com
ldap_group_search_base = ou=groups,dc=zarafa,dc=com
Configurazione del database OpenLDAP

Per configurare correttamente il nostro server OpenLAP occorre innanzitutto inserire nel suo file di configurazione /etc/ldap/slapd.conf la direttiva:

include /etc/ldap/schema/zarafa.schema

e copiare lo schema di zarafa all'interno della corretta directory di OpenLDAP:

cp /usr/share/zarafa/zarafa.schema /etc/ldap/schema/zarafa.schema

Riavviate OpenLDAP e il server sarà pronto:

/etc/init.d/slapd restart

Se avete più di un server LDAP gestiti in modo da replicare le informazioni sugli utenti, ricordatevi di effettuare le modifiche su ogni server.

Configurazione di OpenLDAP per gli email alias

Per utilizzare gli alias email nel nostro server OpenLDAP dobbiamo aggiungere uno schema:

  • Per prima cosa scarichiamo lo schema:
wget http://download.zarafa.com/zarafa/qmail.schema
mv qmail.schema /etc/ldap/schema/qmail.schema
  • Quindi aggiungiamo lo schema nel nostro file di configurazione di OpenLDAP, con una nuova linea:
include /etc/ldap/schema/qmail.schema
  • Infine riavviamo OpenLDAP:
/etc/init.d/slapd restart
Test della configurazione

Un semplice riavvio dei demoni di Zarafa:

/etc/init.d/zarafa-server restart
/etc/init.d/zarafa-spooler restart
/etc/init.d/zarafa-monitor restart
/etc/init.d/zarafa-gateway restart
/etc/init.d/zarafa-ical restart
/etc/init.d/zarafa-licensed restart

dovrebbe essere a questo punto sufficiente.
Per testare il corretto funzionamento del binding di Zarafa verso OpenLDAP potete utilizzare i seguenti comandi:

  • Elenco degli utenti Zarafa
zarafa-admin -l
  • Elenco dei gruppi Zarafa
zarafa-admin -L

Se tutto è andato per il verso giusto, in questi elenchi dovreste ritrovare anche i vostri utenti LDAP.

Il server SMTP

Arrivati a questo punto ci ritroviamo con un server groupware perfettamente funzionante, ma che ancora non sa come inviare e da chi ricevere email. Abbiamo perciò bisogno di installare e configurare un server SMTP.

Un po' di terminologia

Iniziamo con il chiarire alcuni termini legati all'installazione di un server di posta elettronica:

  • MUA (Mail User Agent): il MUA è il programma che un utente utilizza per leggere la propria posta elettronica. Alcuni esempi: Microsoft Outlook, Evolution. Diversi protocolli possono essere utilizzati dal MUA; i più comuni sono Pop3 e Imap.
  • MTA (Mail Transfert Agent): è il programma che si occupa di spedire le email da un server all'altro. Il protocollo utilizzato è SMTP. Alcuni MTA installabili in Debian sono: postfix, sendmail, qmail, exim4. In questa guida ci concentreremo sul server postfix.
  • MDA (Mail Delivery Agent): è il programma che riceve le email dal MTA e le smista nelle caselle postali dei vari utenti. In questa guida prenderemo in considerazione fetchmail.

Schema di funzionamento

Lo schema di funzionamento del nostro sistema groupware può essere riassunto così:

  • Zarafa: fornisce un MUA via web interface e un sistema groupware
  • Zarafa-spooler: fornisce un gateway verso il server SMTP installato sul server e ci permetterà di inviare la posta all'interno e all'esterno
  • Postfix: sarà il nostro server SMTP per la posta della nostra intranet e per la posta esterna
  • Fetchmail: ci permetterà di recuperare la posta che ci viene spedita su alcuni account POP esterni e di integrarla nel nostro sistema, smistandola ai vari utenti di Zarafa

Invio di email da Zarafa

Per inviare mail dal server Zarafa deve essere in funzione il servizio zarafa-spooler. La configurazione del servizio viene fatta attraverso il file /etc/zarafa/spooler.cfg. L'unica modifica richiesta è alla voce:

# Outgoing mailserver name or IP address
smtp_server     =       localhost
# Se state gestendo solo caselle email esterne
# dovete inserire il server SMTP del vostro provider.
# Se intendete utilizzare anche caselle email locali
# impostate il questo campo l'indirizzo IP del server SMTP
# della vostra rete interna oppure scrivete localhost

Installazione di Postfix

Ora è il momento di installare un server SMTP sul nostro server, in modo da poter inviare email nella nostra intranet e all'esterno.

apt-get update
apt-get install postfix

Poichè useremo un'autenticazione basata su OpenLDAP è necessario installare anche il pacchetto:

apt-get install postfix-ldap

per permettere a Postfix di interpretare le istruzioni ldap all'interno del proprio file di configurazione. Riceverete un avviso da apt, che vi dice che saranno rimossi i pacchetti relativi a exim4, il server SMTP installato di default da Debian. Confermate e procedete con l'installazione. Durante l'installazione di Postfix vi verrà chiesto che tipo di configurazione di server SMTP intendete creare: scegliete nessuna configurazione, perchè creeremo un file di configurazione nostro da zero.
Se tutto è andato a buon fine siamo pronti per creare il file di configurazione principale di Postfix:

cd /etc/postfix
touch main.cf
chmod 600 main.cf
nano main.cf

Il contenuto del file deve essere il seguente:
/etc/postfix/main.cf

#Impostazioni sulle directory del programma
command_directory = /usr/sbin

#Utente proprietario delle mail
mail_owner = postfix
#Gruppo proprietario
setgid_group = postdrop

#Coda e deposito email
queue_directory = /var/spool/postfix
mail_spool_directory = /var/spool/mail

#Il mio host
myhostname = mailserver.dominio.local

#Il mio dominio
mydomain = dominio.local
myorigin = $mydomain

#Domini che postfix considerera’ locali, per i quali smistera’
# la posta localmente
mydestination = $myhostname, localhost.$mydomain $mydomain

# Maschero la visualizzazione dei nomi host per la rete interna
masquerade_domains = $mydomain

#Se un dominio non e’ locale, postfix deleghera’ il compito a tale relay
#per l’invio della posta
relayhost = out.virgilio.it

#Networks abilitati. Impostate gli IP della vostra rete
mynetworks_style = subnet
mynetworks = 127.0.0.0/8 10.0.0.0/24

# Configuro le mailbox
#mailbox_command = 
mailbox_size_limit = 0

# Definisco gli alias
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

#Interfacce abilitate
inet_interfaces = all
inet_protocols = ipv4

# Disabilitiamo il comando verify per la verifica dell’esistenza degli utenti
disable_vrfy_command = yes

# Dimensione massima dei messaggi da accettare (in byte)
message_size_limit = 20480000

# Tempo di attesa in caso di errore
smtp_error_sleep_time = 1s

#Banner per la connessione telenet (piccolo vezzo grafico)
smtpd_banner = $myhostname ESMTP $mail_name (Debian GNU/Linux)

#####################################################
#       Configurazione di Postfix per Zarafa        #
# ------------------------------------------------- #
# Eliminare questo blocco per utilizzare una        #
# configurazione standard di Postfix.               #
#####################################################

local_recipient_maps = $alias_maps
alias_maps = hash:/etc/aliases ldap:ldapsrc
mailbox_transport = zarafa:
zarafa_destination_recipient_limit = 1
virtual_alias_maps = ldap:ldapsrc
ldapsrc_server_host = 192.168.0.1
ldapsrc_search_base = ou=Users,dc=dominio,dc=local
ldapsrc_query_filter = (|(mail=%s)(mailAlternateAddress=%s))
ldapsrc_bind_dn = cn=admin,dc=dominio,dc=local
ldapsrc_bind_pw = password_admin_di_LDAP
ldapsrc_version = 3
ldapsrc_result_attribute = uid


# Alcune regole antispam
smtpd_recipient_restrictions =
            reject_invalid_hostname,
            reject_non_fqdn_hostname,
            reject_non_fqdn_sender,
            reject_non_fqdn_recipient,
            reject_unknown_sender_domain,
            reject_unknown_recipient_domain,
            reject_unauth_pipelining,
            permit_mynetworks,
            reject_unauth_destination,
            reject_rbl_client zombie.dnsbl.sorbs.net,
            reject_rbl_client relays.ordb.org,
            reject_rbl_client opm.blitzed.org,
            reject_rbl_client list.dsbl.org,
            reject_rbl_client sbl.spamhaus.org,
            reject_rbl_client blackholes.easynet.nl,
            permit

Ovviamente dovrete modificare le voci relative al nome del vostro dominio interno, al nome del server di posta del vostro provider e gli indirizzi IP della vostra rete.

Modificate adesso il file /etc/postfix/master.cfg, aggiungendo alla fine del file la riga:

zarafa unix - n n - 10 pipe user=vmail argv=/usr/bin/zarafa-dagent ${user}

L'utente vmail deve essere un utente locale unix; perciò:

adduser vmail

Di default solo l'utente root può smistare la posta a Zarafa-Server. Poichè zarafa-dagent gira con i permessi dell'utente vmail, è necessario aggiungere questo utente nel file /etc/zarafa/server.cfg. Cambiate la linea:

local_admin_users root

con

local_admin_users = root vmail

Se avete la necessità di forwardare le emails destinate ai vostri utenti locali, potete agire sul file /etc/aliases.
Innanzitutto bisogna aggiungere la mappa degli alias a Postfix col comando:

postconf -e "alias_maps = hash:/etc/aliases"

Fatto questo, potete aprire il file e aggiungere nuovi alias come i seguenti:

root: ferdy

Potete forwardare le mail di sistema ad un indirizzo esterno:

ferdy: myemail@example.com

e potete anche continuare a tenerne una copia in locale:

ferdy: ferdy myemail@example.com

A questo punto basta salvare la nuova configurazione:

newaliases
/etc/init.d/postfix reload

Siamo pronti per inviare la nostra prima mail. A questo scopo ci connettiamo via telnet alla porta 25 dove è in ascolto Postfix:

telnet localhost 25

Dovremmo ottenere come risposta:

Trying 127.0.0.1...
Connected to mailserver.dominio.local.
Escape character is '^]'.
220 mailserver.dominio.local ESMTP Postfix (Debian GNU/Linux)

Ora è tempo di spedire una mail a noi stessi. Dopo ogni riga digitate invio.

mail from:<io@mioindirizzo1.com>
rcpt to:<io@mioindirizzo2.com>
data
To: io@mioindirizzo2.com
From: io@mioindirizzo1.com
Subject: Prova invio mail
Prova di invio tramite Debian Postfix

Terminate la spedizione della mail battendo INVIO seguito da un punto (.), seguito ancora da INVIO.


.

Infine digitate

quit

per chiudere la connessione telnet con Postfix.
Controllate la posta: dovrebbe esservi arrivata una mail!
Una cosa da tenere presente è che la configurazione di Postfix presa in esame ci permette di configurare un server di posta interno per la sola nostra intranet; per ogni email avente come destinatario un indirizzo esterno postfix si appoggerà al server di posta SMTP del nostro provider. Questa configurazione ci libera dal compito di mantenere un server SMTP accessibile da internet, con tutti i rischi di spammer connessi.

Amministrazione di Postfix

Postfix fornisce due utili tool per poter amministrare la sua coda: postqueue e postsuper.
Il primo comando serve per la normale gestione della coda, il secondo permette anche di cancellare mail all' interno nella coda.

  • Per vedere tutta la coda di posta presente sul server:
postqueue -p
  • Per il flush della coda di posta:
postqueue -f
  • Per cancellare tutte le mail in coda:
postsuper -d ALL
  • Cancella dalla coda una specifica mail (queue_id può essere recuperato con il comando postqueue -p):
postsuper -d queue_id
  • Per bloccare tutte le mail in coda:
postsuper -h ALL
  • Bloccare una specifica mail in coda (queue_id può essere recuperato con il comando postqueue -p):
postsuper -h queue_id
  • Per riattivare tutte le mail bloccate in coda:
postsuper -H ALL
  • Riattiva una specifica mail bloccata in coda (queue_id può essere recuperato con il comando postqueue -p):
postsuper -H queue_id

Ricezione e smistamento della posta in arrivo

La posta locale e l'invio della posta verso destinatari esterni alla nostra rete LAN dovrebbero già funzionare. Per verificare che tutto vada per il verso giusto aprite il vostro browser su:

http://indirizzo.ip.server.zarafa/webaccess

fate login con le vostre credenziali OpenLDAP e provate a:

  • inviare una email al vostro stesso utente locale
  • inviare una mail ad un account esterno (gmail, yahoo o altro)

In entrambi i casi dovreste ricevere posta. Per il vostro utente locale potete leggerla direttamente da dentro il webaccess di Zarafa; per l'account esterno collegatevi via webmail.

ANCORA DA COMPLETARE!!!