Esistono molte soluzioni che sostituiscono Microsoft Exchange con una soluzione Linux, ma tutte hanno avuto un problema che non mi piaceva. Quando ho ricevuto gli inviti alle riunioni, sarebbero arrivati come allegati sui miei dispositivi iOS e non si sarebbero aperti direttamente nell'app del calendario. Zarafa è stata l'unica soluzione che ho provato ad aprire eventi di calendario nell'app di calendario. Questa guida ti insegnerà come configurare Zarafa e Yaffas su CentOS 6.
Prima di iniziare
Facciamo i seguenti presupposti per facilitare la comprensione della configurazione. Dovresti tuttavia utilizzare i tuoi valori reali per questi elementi:
- Il dominio su cui desidero ricevere la posta è "example.com". Gli utenti sono come "[email protected]", "[email protected]".
- Il nome host per il server di posta è "pegasus", quindi il nome di dominio completo per quel server è "pegasus.example.com".
- Ogni volta che utilizzo il termine "pannello di controllo del server", mi riferisco al pannello vultr.com .
Preparazione del server (VPS)
Inizia distribuendo l'istanza del tuo server vultr.com. Ho scelto 1 GB di VPS con CentOS 6 a 32 bit. Al termine dell'installazione, prepariamo il server a diventare un server di posta.
Nella schermata "I miei server" del pannello di controllo del server, fare clic sul collegamento "Gestisci" accanto al server appena creato. Nella pagina che si apre, puoi vedere i dettagli del tuo server. Fai clic sulla scheda IPv4, quindi fai clic sul pulsante blu "Aggiorna". Viene visualizzato un campo di immissione testo ed è preimpostato con qualcosa come ".vultr.com". Sostituisci quella voce con il nome di dominio completo del tuo server (esempio: pegasus.example.com) e premi il pulsante blu "Aggiorna".
Ora è il momento di accedere al nuovo server. Apri il tuo terminale ssh e connettiti al tuo server. In alternativa, puoi fare clic sul pulsante blu "Visualizza console" per visualizzare la finestra del browser con la schermata di accesso del tuo server.
ssh root@your_ip_address
La parte " your_ip_address
" è l'indirizzo IP principale elencato nel pannello di controllo del server. Se usi il browser per connetterti al tuo server, accedi semplicemente come root con la tua password di root.
Innanzitutto, impostiamo il nome di dominio corretto. Apri il file di configurazione della rete.
nano /etc/sysconfig/network
Sostituisci "vultr.guest" con il nome di dominio completo del tuo server (Esempio: pegasus.example.com). Salvare il file con Ctrl + X , allora Y .
Il secondo punto che cambiamo è il /etc/hosts
file.
nano /etc/hosts
Aggiungi la seguente riga. Può essere nella parte superiore del file o nella seconda riga.
127.0.1.1 pegasus.example.com pegasus
Salvare il file con Ctrl + X , allora Y . Mi piace assicurarmi che tutto funzioni dopo un riavvio, quindi riavvio il VPS dopo tali modifiche.
reboot
Concedi alla macchina un momento per riavviare, quindi riconnettiti.
ssh root@your_ip_address
Yaffas e Zarafa necessitano del repository EPEL, che è già installato nei sorgenti sui server vultr.com. Hanno anche bisogno del repository RPMforge. Immettere il comando seguente per installare quel repository.
Sistemi a 32 bit:
rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
Sistemi a 64 bit:
rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
Successivamente, aggiungiamo il repository Yaffas.
nano /etc/yum.repos.d/yaffas.repo
Incolla il seguente testo nel file appena creato:
[yaffas]
name = yaffas $releasever
baseurl = http://repo.yaffas.org/releases/latest/rhel/$releasever
enabled = 1
protect = 0
gpgcheck = 1
priority = 1
Salvare il file con Ctrl + X , allora Y .
Per evitare problemi di compatibilità, è necessario escludere alcuni elementi dal repository EPEL. Apri il file del repository.
nano /etc/yum.repos.d/epel.repo
Quindi nella [epel]
sezione, proprio sotto la riga "gpgkey", inserisci quanto segue.
exclude=clamav* clamd* amavisd* libvmime libical libvmime-devel libical-devel php-mapi zarafa*
La sezione completa sarà simile a questa:
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
exclude=clamav* clamd* amavisd* libvmime libical libvmime-devel libical-devel php-mapi zarafa*
Salvare il file con Ctrl + X , allora Y .
Importa la chiave GPG per il repository Yaffas:
rpm --import http://repo.yaffas.org/repo.rpm.key
Ora, puliamo yum.
yum clean all
A questo punto, dovremmo essere pronti per l'installazione di Yaffas. Installalo semplicemente inserendo questo comando.
yum install yaffas
Yum verificherà le dipendenze e ti fornirà un riepilogo.
Install 359 Package(s)
Total download size: 260 M
Installed size: 639 M
Is this ok [y/N]:
Premere Y , quindi Enter / Return per avviare l'installazione.
L'installazione richiederà un po 'di tempo, quindi concediti un caffè e un biscotto mentre aspetti che l'installazione finisca.
MySQL
Prima di poter avviare l'installazione finale, dobbiamo configurare MySQL. Avviare MySQL e iniziare l'installazione sicura.
service mysqld restart
mysql_secure_installation
Per accedere a MySQL per proteggerlo, avremo bisogno della password corrente per l'utente root. Se hai appena installato MySQL e non hai ancora impostato la password di root, la password sarà vuota, quindi dovresti semplicemente premere Enter / Return qui.
Enter current password for root (enter for none): **{press Enter/Return}**
[...]
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] **Y**
New password: **{enter super secret password}**
Re-enter new password: **{enter super secret password again}**
Remove anonymous user? [Y/n] **Y**
Disallow root login remotely? [Y/n] **Y**
Remove test database and access to it? [Y/n] **Y**
Reload privilege tables now? [Y/n] **Y**
Configurazione
Apri un browser Web e vai al seguente URL.
http://your_ip_address:10000
#If you have a DNS entry already, use this instead.
http://server.example.com:10000
Il nome utente iniziale è admin
con password yaffas
.
Dopo aver effettuato l'accesso, vedrai la procedura guidata di configurazione. Ha 5 passaggi. Premere "Avanti" per iniziare.
Il primo passo è inserire una nuova password amministratore. Inserisci la nuova password due volte. Assicurati che sia abbastanza complicato per essere sicuro, ma non dimenticarlo. Quindi fare clic su "Avanti".
La schermata successiva configura il backend MySQL. L'unica cosa che devi inserire è la password che hai creato per l'utente root di MySQL.
Nella quarta schermata, imposta il tuo dominio di posta. Inserisci "esempio.com" nel campo del dominio di posta principale. Questo deve essere il tuo dominio. Premi "Avanti".
Credo che la quinta schermata sia facoltativa, ma solo per essere al sicuro, creare un account utente che sarà l'amministratore LDAP, quindi fare clic su "Fine".
Ci vorrà un po 'prima che l'installazione finisca. Una volta completato, viene visualizzato un popup che ti dice che tutto ha avuto successo. Fai clic sul pulsante "OK". Dopo un momento, vedrai di nuovo la schermata di accesso. Puoi accedere come amministratore con la nuova password che hai creato durante l'installazione.
Durante l'installazione, vengono generati e installati alcuni certificati autofirmati generali per l'app. Personalmente, preferisco avere i miei certificati autofirmati per mostrare i valori che ho inserito e voglio anche assicurarmi che tutte le richieste vengano inviate tramite HTTPS.
Zarafa viene fornito con alcuni script per generare i propri certificati. Questi sono ovviamente certificati autofirmati.
Facciamo una casa per l'autorità di certificazione.
mkdir -p /etc/zarafa/ssl
chmod 700 /etc/zarafa/ssl
cd /etc/zarafa/ssl
... quindi esegui lo script:
sh /usr/share/doc/zarafa/ssl-certificates.sh server
Il parametro "server" indica che verrà chiamato il certificato che creiamo server.pem
.
Sarai accolto con il seguente messaggio.
No Certificate Authority Root found in current directory.
Press enter to create, or ctrl-c to exit.
Premi Invio o A capo .
Il prossimo messaggio che appare è:
CA certificate filename (or enter to create)
Premere Invio o A capo per continuare e creare il certificato CA.
Dopo un po 'di attività sullo schermo, verrà richiesto di inserire la passphrase PEM. Immettere una passphrase per il certificato CA, ma assicurarsi di non dimenticarlo, poiché sarà necessario in un secondo momento. Per semplicità, supponiamo di aver scelto la passphrase "ca-root-pem".
Rispondi alle domande per generare il certificato. Le risposte qui sono i miei esempi, quindi sostituiscili con i valori corretti per te.
Country Name (2 letter code) [XX]: **MY**
State or Province Name (full name) []:**Selangor**
Locality Name (eg, city) [Default City]: **Shah Alam**
Organization Name (eg, company) [Default Company Ltd]: **ELMIMA-Systems**
Organizational Unit Name (eg, section) []: **Certificate Authority**
Common Name (eg, your name or your server's hostname) []:**server.example.com** **Must be the full domain name of your server**
Email Address []: **[email protected]**
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: **Enter/Return**
An optional company name []: **Enter/Return**
Successivamente, ti chiederà la passphrase del cakey.pem
file. Questa è la passphrase creata in precedenza.
Enter pass phrase for /etc/pki/CA/private/./cakey.pem:ca-root-pem
Vedrai una piccola attività sullo schermo, quindi ti chiederà una passphrase PEM. Questa è la passphrase per il server.pem
file che abbiamo creato. Inserisci tutto ciò che desideri, ma assicurati di non dimenticarlo. Per semplicità useremo "server-pem-frase".
Enter PEM pass phrase:**server-pem-phrase**
Verifying - Enter PEM pass phrase:**server-pem-phrase**
È ora di inserire i valori per il server.pem
file.
Country Name (2 letter code) [XX]: **MY**
State or Province Name (full name) []:**Selangor **
Locality Name (eg, city) [Default City]: **Shah Alam**
Organization Name (eg, company) [Default Company Ltd]: **ELMIMA-Systems**
Organizational Unit Name (eg, section) []: **Server SSL Certificate**
Common Name (eg, your name or your server's hostname) []: **server.example.com** **Must be the full domain name of your server**
Email Address []: [email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: **Enter/Return**
An optional company name []: **Enter/Return**
Enter pass phrase for /etc/pki/CA/private/cakey.pem:ca-root-pem **Replace with your own passphrase**
Alcune attività sullo schermo mostrano che il certificato è stato generato.
Sign the certificate? [y/n]:
Immettere Y e premere Invio / A capo .
1 out of 1 certificate requests certified, commit? [y/n]
Immettere Y e premere Invio / A capo .
Create public key from this certificate? [y]
Non ne abbiamo davvero bisogno ma immagino che non sia male crearlo. Premi Invio / Ritorna .
Enter pass phrase for server.pem: **server-pem-phrase**
Ora è il momento di configurare il server.cfg
file per Zarafa.
nano /etc/zarafa/server/cfg
Trova la voce server_ssl_enabled
e cambia il suo valore in "sì" (senza virgolette).
Trova la voce server_ssl_port
e conferma che è 237.
Trova la voce server_ssl_key_file
e imposta il suo valore su " /etc/zarafa/ssl/server.pem
" (senza virgolette).
Crea la voce server_ssl_key_pass
usa la passphrase che hai creato per il server.pem
file (esempio: server-pem-frase) come valore.
Trova la voce server_ssl_ca_file
. La documentazione originale per Zarafa presuppone che il percorso sia /etc/zarafa/ssl/demoCA/cacert.pem
, tuttavia su CentOS, il percorso è /etc/pki/CA/cacert.pem
. Aggiorna questo valore di conseguenza.
server_ssl_ca_file = /etc/pki/CA/cacert.pem
Riavvia il server Zarafa.
service zarafa restart
Generiamo il certificato per Apache.
cd /etc/zarafa/ssl
openssl req -nodes -newkey rsa:2048 -keyout zarafa-ssl.key -out zarafa-ssl.csr
Otteniamo un altro modulo per creare un certificato.
Country Name (2 letter code) [XX]: **MY **
State or Province Name (full name) []: **Selangor**
Locality Name (eg, city) [Default City]: **Shah Alam**
Organization Name (eg, company) [Default Company Ltd]: **ELMIMA-Systems**
Organizational Unit Name (eg, section) []: **Zarafa Web Services**
Common Name (eg, your name or your server's hostname) []: **server.example.com** **Must be the full domain name of your server**
Email Address []: **[email protected]**
Quindi, firmare il certificato.
openssl x509 -req -in ./zarafa-ssl.csr -signkey zarafa-ssl.key -out zarafa-ssl.crt -days 9999
... e aggiungilo ad Apache.
cd /etc/httpd/conf.d
nano ssl.conf
Trova la riga "SSLCertificateFile /opt/yaffas/etc/ssl/certs/zarafa-webaccess.crt" e modificala in "SSLCertificateFile /etc/zarafa/ssl/zarafa-ssl.crt".
Trova la riga "SSLCertificateKeyFile /opt/yaffas/etc/ssl/certs/zarafa-webaccess.key" e modificalo in "SSLCertificateKeyFile /etc/zarafa/ssl/zarafa-ssl.key"
Salva il file ed esci.
Ora apri il zarafa-webapp.conf
file.
nano /etc/httpd/zarafa-webapp.conf
Trova le seguenti 2 righe e decommentale.
#php_flag session.cookie_secure on
#php_flag session.cookie_httponly on
Aggiungi le seguenti righe.
RewriteEngine On
RewriteCond % !=on
RewriteRule (.*) https://pegasus.example.com/webapp/ [R] (Of course use your own real domain here)
Salva il file ed esci. Quindi riavviare Apache.
service httpd restart
Ora l'app Web utilizzerà sempre HTTPS. Puoi fare lo stesso per zarafa-webapp.conf
.
Durante il test dell'installazione su CentOS, ho notato alcuni messaggi di errore dovuti a cartelle mancanti. Puoi risolverlo con i seguenti comandi.
mkdir -p /var/run/policyd-weight/cores/master
mkdir -p /var/run/policyd-weight/cores/cache
chown -R polw /var/run/policyd-weight
Per utilizzare il tuo nuovo server Zarafa come server di posta per il tuo dominio, dovrai impostare sia un record A che un record MX per il tuo dominio. Se lo desideri, puoi utilizzare il tuo motore di ricerca preferito per trovare una procedura guidata SPF, che semplifica la creazione di un record SPF per il tuo dominio.