venerdì 28 ottobre 2011

Utilizzare mpop come connettore POP alternativo per Exchange

Il Connettore POP di SBS (o di Exchange) mi fa spesso dannare e talvolta il troubleshooting può essere lungo, creando fastidi all'utente.
Ci sono valide alternative commerciali al connettore POP3 di Microsoft, come ad esempio MAPILab POP3 Connector, GFI MailEssentials, ma prediligo le soluzioni aperte e gratuite.
Quindi, vagando per la rete in cerca di alternative più aperte e meno costose, mi sono imbattutto in mpop, una alternativa command-line e open source al POP connector di SBS.
Ho scaricato la versione per windows (c'è anche per Linux) e l'ho provato su un server Exchange 2003... funziona!

Ma vediamo come ho fatto:

Innanzitutto, per il corretto funzionamento di mpop è necessario:
- Localizzare correttamente la directory Pickup di Exchange (Per sapere qual è vi rimando all'articolo sulla KB Microsoft KB 822933)
- Che gli indirizzi di posta associati alle cassette postali POP3 siano configurati su degli utenti esistenti sul sistema (ovvero se alla cassetta postale POP3 corrisponde l'indirizzo mailbox_1@mypop3.com lo stesso indirizzo deve esistere nella scheda "Indirizzi di Posta Elettronica" di un utente Active Directory)

Scarichiamo mpop per windows, estraiamo il file mpop.exe dall'archivio zip e mettiamolo su disco (io l'ho messo in C:\progs\mpop), creiamo poi il file di configurazione, chiamiamolo mpoprc.txt:

#File C:\progs\mpop\mpoprc.txt
defaults
# Disattivo TLS (nel mio caso utilizzo un server POP3 senza supporto per autenticazione sicura).
tls off
tls_starttls off

# Giro i messaggi nella directory Pickup di Exchange:
delivery exchange "C:\Programmi\Exchsrvr\Mailroot\vsi 1\PickUp"


# Nel mio caso ho due mailbox


account mailbox_1
# Imposto l'autenticazione
auth user
host mail.mypop3.com
user user_1
password lamiapassword

#Creo un secondo account, copia del primo, e cambio solo nome utente e password
account mailbox_2 : mailbox_1
user user_2
password lamiapassword_2

# Imposto un account di default (anche se non è necessario)
account default : mailbox_1

Per comodità creiamo un file batch, chiamiamolo mpopretrieve.cmd:

REM file c:\progs\mpop\mpopretrieve.cmd

@echo off
cd c:\progs\mpop
mpop.exe -C mpoprc.txt -a > mpopout.txt

In questo modo diciamo a mpop di leggere la configurazione dal file mpoprc.txt e di scaricare i messaggi da tutti gli account POP. Reindirizziamo poi l'output del comando sul file mpopout.txt.

Per testare il funzionamento, eseguiamo il file mpopretrieve.cmd. A esecuzione completata possiamo aprire il file mpopout.txt e visualizzare l'output:

mailbox_1 at mail.mypop3.com:
new: 1 message in 6.88 KiB, total: 1 message in 6.88 KiB
retrieving message 1 of 1 (6.88 KiB): 0%...100
mailbox_2 at mail.mypop3.com:
new: 1 message in 6.88 KiB, total: 1 message in 6.88 KiB
retrieving message 1 of 1 (6.88 KiB): 0%...100

Controlliamo poi in OWA o in Outlook se l'utente o gli utenti han ricevuto messaggi.
Se tutto è ok, possiamo pianificare l'esecuzione di mpopretrieve.cmd con le Operazioni Pianificate o il nostro scheduler preferito.

giovedì 23 giugno 2011

Installazione di SOGo con Integrazione Active Directory

Hai un dominio Active Directory, non hai un sistema di gestione dalla posta elettronica e ne vorresti uno che ti permetta di condividere calendari e contatti con i tuoi colleghi senza dover accendere un mutuo per acquistare Exchange?

Vedremo ora tutto il processo di installazione e configurazione di SOGo con login degli utenti da Active Directory.
SOGo per funzionare ha bisogno di:
  • Un Database (io ho scelto MySQL, potete anche usare PostgreSQL o Oracle)
  • Un server LDAP (nel nostro caso Microsoft Active Directory. Potete utilizzare OpenLDAP o 389 Directory Server)
  • Un server IMAP (io ho scelto Dovecot, ma va bene anche Cyrus)
  • Un server SMTP (Postfix, ma se volete farvi del male usate pure Sendmail)

1. Preparazione

Prima di arrivare alla configurazione vera e propria di SOGo, è necessario avere una infrastruttura di posta elettronica funzionante. Dobbiamo quindi avere un server IMAP e un server SMTP funzionanti.
Seguendo la guida linkata qui sotto arriverete ad avere una buona base di partenza.

Mailbox Virtuali con Dovecot, Postfix e Active Directory

Configurate il DNS: la risoluzione DNS deve funzionare. Aggiungete un record nel DNS, che punta all'ip del vostro server SOGo, che risponda al nome di sogoserver, o quello che vi pare: l'importante è che vi ricordiate di sostituire col vostro nome all'occorrenza.

2. Aggiunta dei Repository

Se utilizzate CENTOS 6

Aggiungiamo il repository di inverse a YUM.
Creiamo il file /etc/yum.repos.d/inverse.repo.


[SOGo]
name=Inverse SOGo repository
baseurl=http://inverse.ca/downloads/SOGo/RHEL6/$basearch
gpgcheck=0


Potete tranquillamente saltare alla sezione successiva


Se utilizzate CENTOS 5

aggiungiamo il repository di inverse a YUM.
Creiamo il file /etc/yum.repos.d/inverse.repo.


[SOGo]
name=Inverse SOGo repository
baseurl=http://inverse.ca/downloads/SOGo/CentOS5/$basearch
gpgcheck=0


In CentOS 5 la semplice aggiunta del repository non è sufficiente, bisogna effettuare alcune modifiche a yum:

Installiamo il plugin yum-protectbase:


yum install yum-protectbase


Modifichiamo il file /etc/yum.repos.d/CentOS-Base.repo:

#Aggiungere nella sezione base
#[base]
protect=1

#Aggiungere nella sezione updates
#[update]
protect=1


Abilitiamo i repository RPMForge:
Modifichiamo il file /etc/yum.repos.d/rpmforge.repo


#Aggiungere nella sezione rpmforge-base
#[rpmforge-base]
exclude=memcached*



4. Configurazione di MySQL

Installiamo MySQL server:


yum install mysql-server


Modifichiamo il file /etc/my.cnf in modo da impostare come set di caratteri predefinito UTF-8.


[mysqld]
character_set_server=utf8
character_set_client=utf8

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


Avviamo mysql:


service mysqld start


Entriamo in mysql, creiamo il database per SOGo e creiamo un utente sogo che abbia tutti i privilegi sul database:

mysql
CREATE DATABASE sogo CHARSET='UTF8';
GRANT ALL PRIVILEGES ON sogo.* @'localhost' IDENTIFIED BY 'sogopassword';
quit;


4. Configurazione di SOGo

Installiamo SOGo e il connettore per il database (nel nostro caso MySQL):

yum install sogo
yum install sope49-gdl1-mysql;


Configurazione di Base:

Creiamo una configurazione di base per il nostro SOGo, inseriamo la timezone, la lingua predefinita


su - sogo
defaults write sogod SOGoTimeZone "Europe/Rome"
defaults write sogod SOGoMailDomain "brick.local"
defaults write sogod SOGoLanguage Italian
defaults write sogod SOGoAppointmentSendEMailNotifications YES
defaults write sogod SOGoFoldersSendEMailNotifications YES
defaults write sogod SOGoACLsSendEMailNotifications YES
exit



Aggancio del Server LDAP

SOGo può utilizzare uno o più server (o meglio query) LDAP come database per l'autenticazione o elenchi di indirizzi. Aggiungiamo quindi il server LDAP come sorgente per gli utenti di SOGo.

Se non lo avete già fatto create un utente in Active Directory. L'utente deve poter effettuare delle query su LDAP. Io ho creato l'utente adquery con password password.


su - sogo
defaults write sogod SOGoUserSources '({type=ldap; CNFieldName = cn; IDFieldName = cn; UIDFieldName = sAMAccountName; baseDN = "dc=brick,dc=local"; bindDN = "adquery@brick.local"; bindFields = (sAMAccountName); bindPassword = password; canAuthenticate = YES; displayName = "Active Directory"; hostname = brick.local; id = directory; isAddressBook = YES; port = 389;});'
exit



Database MySQL


su - sogo
defaults write sogod SOGoProfileURL 'mysql://sogo:sogopassword@localhost:3306/sogo/sogo_user_profile'
defaults write sogod OCSFolderInfoURL 'mysql://sogo:sogopassword@localhost:3306/sogo/sogo_folder_info'
defaults write sogod OCSSessionsFolderURL 'mysql://sogo:sogopassword@localhost:3306/sogo/sogo_sessions_folder'
exit



Server SMTP


su - sogo
defaults write sogod SOGoMailingMechanism smtp
defaults write sogod SOGoSMTPServer localhost



Server IMAP


su - sogo
defaults write sogod SOGoDraftsFolderName Drafts
defaults write sogod SOGoSentFolderName Sent
defaults write sogod SOGoTrashFolderName Trash
defaults write sogod SOGoIMAPServer localhost
exit



Utente Amministratore

Dobbiamo dire a SOGo quale sarà l'utente amministratore che avrà il privilegio di gestire le condivisioni tramite Web UI.

su - sogo
defaults write sogod SOGoSuperUsernames
"(Administrator)"



6. Configurazione di Apache

Per far funzionare la WEB UI, modifichiamo il file /etc/httpd/conf.d/SOGo.conf

RequestHeader set "x-webobject-server-port" "80"
RequestHeader set "x-webobject-server-name" "sogoserver"
RequestHeader set "x-webobject-server-url" "http://sogoserver"


7. Avvio dei servizi

Avviamo i servizi:

service sogod start
service httpd start

Poi aprite il vostro browser preferito e puntatelo su http://sogoserver/sogo. Se appare la schermata di login accedete col vostro utente di prova e fatevi un giretto nella WEB UI.

Aggiungiamo poi i servizi appena installati all'avvio automatico:

chkconfig mysqld on
chkconfig sogod on
chkconfig httpd on


Ora provate a puntare il browser all'indirizzo http://sogoserver/SOGo (attenzione che SOGo deve essere scritto proprio così) e controllate la vostra mail!