Installare un ambiente Groupware integrato in Samba4
Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.
Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione. |
Versioni Compatibili Debian 7 "wheezy" |
Introduzione
Con il solo utilizzo di strumenti opensource possiamo installare e configurare un ambiente Groupware che sostituisca in tutto e per tutto Microsoft Exchange e ne fornisca tutte le funzionalità.
Gli strumenti che useremo sono i seguenti:
- Samba4: per configurare un ambiente compatibile con Active Directory per la gestione degli utenti e delle group policy
- Openchange: per avere il layer MAPI utilizzato da Outlook per connettersi ai server Microsoft Exchange
- Sogo: il groupware sostitutivo di Exchange
- Dovecot: un server IMAP in appoggo al groupware Sogo
- iGestis: un'interfaccia che semplificherà il lavoro di creazione e gestione degli utenti
Prerequisiti
Per seguire questa guida è necessario disporre di un ambiente Samba4 configurato come controller di dominio Active Directory. Nel corso della guida faremo riferimento alla configurazione presentata qui:
Samba e OpenLDAP: creare un controller di dominio Active Directory con Debian Wheezy
Si sconsiglia di proseguire senza aver prima completato la configurazione della guida indicata.
Occorre prima di tutto aggiungere il repository SoGo al nostro sources list. Il pacchetto SoGo è presente anche nei repository ufficiali di Debian, ma manca il connettore ActiveSync per Outlook, che utilizzeremo per sincronizzare i client Microsoft.
# nano /etc/apt/sources.list
# SoGo Repository deb http://inverse.ca/debian wheezy wheezy deb-src http://inverse.ca/debian wheezy wheezy
Quindi aggiorniamo la cache di apt e installiamo la chiave del repository:
# apt-key adv --keyserver keys.gnupg.net --recv-key 0x810273C4 # apt-get update
Installazione di OpenChange
Possiamo ora installare OpenChange:
# apt-get install openchangeserver sogo-openchange openchangeproxy openchange-ocsmanager openchange-rpcproxy sogo sope4.9-gdl1-mysql sogo-activesync libdcerpc-server0 libdcerpc0 libmapi0 libmapiproxy0 libsamdb0 libldb1
Quindi effettuiamo il provisioning di Samba4 con lo schema di OpenChange:
# openchange_provision
Creiamo il database per OpenChange:
# openchange_provision --openchangedb
Infine abilitiamo in Samba il protocollo MAPI:
# nano /etc/samba/smb.conf
# Abilito MAPI dcerpc endpoint servers = +epmapper, +mapiproxy dcerpc_mapiproxy:server = true dcerpc_mapiproxy:interfaces = exchange_emsmdb, exchange_nsp, exchange_ds_rfr
Installazione di SoGo
Creiamo un database MySQL per SoGo:
# mysql -uroot -p mysql> create database sogo; mysql> create user 'sogo'@'localhost' identified by 'Password'; mysql> grant all privileges on sogo.* to 'sogo'@'localhost'; mysql> quit;
Sostituiamo il file di configurazione di SoGo con il seguente:
# cp /etc/sogo/sogo.conf /etc/sogo/sogo.cong.old # nano /etc/sogo/sogo.conf
{ /* ********************* Main SOGo configuration file ********************** * * * Since the content of this file is a dictionary in OpenStep plist format, * * the curly braces enclosing the body of the configuration are mandatory. * * See the Installation Guide for details on the format. * * * * C and C++ style comments are supported. * * * * This example configuration contains only a subset of all available * * configuration parameters. Please see the installation guide more details. * * * * ~sogo/GNUstep/Defaults/.GNUstepDefaults has precedence over this file, * * make sure to move it away to avoid unwanted parameter overrides. * * * * **************************************************************************/ /* Database configuration (mysql:// or postgresql://) */ SOGoProfileURL = "mysql://sogo:Passw0rd@localhost:3306/sogo/sogo_user_profile"; OCSFolderInfoURL = "mysql://sogo:Passw0rd@localhost:3306/sogo/sogo_folder_info"; OCSSessionsFolderURL = "mysql://sogo:Passw0rd@localhost:3306/sogo/sogo_sessions_folder"; /* Mail */ SOGoDraftsFolderName = Drafts; SOGoSentFolderName = Sent; SOGoTrashFolderName = Trash; SOGoIMAPServer = 127.0.0.1:143; SOGoSieveServer = sieve://127.0.0.1:4190; SOGoSMTPServer = 127.0.0.1; SOGoMailDomain = domain.local; SOGoMailingMechanism = smtp; //SOGoForceExternalLoginWithEmail = NO; //SOGoMailSpoolPath = /var/spool/sogo; //NGImap4ConnectionStringSeparator = "/"; /* Notifications */ //SOGoAppointmentSendEMailNotifications = NO; //SOGoACLsSendEMailNotifications = NO; //SOGoFoldersSendEMailNotifications = NO; /* Authentication */ //SOGoPasswordChangeEnabled = YES; /* LDAP authentication example */ //SOGoUserSources = ( // { // type = ldap; // CNFieldName = cn; // UIDFieldName = uid; // IDFieldName = uid; // first field of the DN for direct binds // bindFields = (uid, mail); // array of fields to use for indirect binds // baseDN = "ou=users,dc=acme,dc=com"; // bindDN = "uid=sogo,ou=users,dc=acme,dc=com"; // bindPassword = qwerty; // canAuthenticate = YES; // displayName = "Shared Addresses"; // hostname = ldap://127.0.0.1:389; // id = public; // isAddressBook = YES; // } //); /* LDAP AD/Samba4 example */ SOGoUserSources = ( { type = ldap; CNFieldName = cn; UIDFieldName = sAMAccountName; baseDN = "CN=users,dc=domain,dc=local"; bindDN = "Administrator@domain.local"; bindFields = (sAMAccountName, mail); bindPassword = "Passw0rd"; canAuthenticate = YES; displayName = "Public"; hostname = ldap://127.0.0.1:389; filter = "mail = '*'"; id = directory; isAddressBook = YES; } ); /* SQL authentication example */ /* These database columns MUST be present in the view/table: * c_uid - will be used for authentication - it's the username or username@domain.tld) * c_name - which can be identical to c_uid - will be used to uniquely identify entries * c_password - password of the user, plain-text, md5 or sha encoded for now * c_cn - the user's common name - such as "John Doe" * mail - the user's mail address * See the installation guide for more details */ //SOGoUserSources = // ( // { // type = sql; // id = directory; // viewURL = "postgresql://sogo:sogo@127.0.0.1:5432/sogo/sogo_view"; // canAuthenticate = YES; // isAddressBook = YES; // userPasswordAlgorithm = md5; // } // ); /* Web Interface */ SOGoPageTitle = SOGo; SOGoVacationEnabled = YES; SOGoForwardEnabled = YES; SOGoSieveScriptsEnabled = YES; //SOGoMailAuxiliaryUserAccountsEnabled = YES; //SOGoTrustProxyAuthentication = NO; /* General */ SOGoLanguage = English; SOGoTimeZone = Europe/Paris; SOGoCalendarDefaultRoles = ( PublicDAndTViewer, ConfidentialDAndTViewer ); SOGoSuperUsernames = (Administrator); // This is an array - keep the parens! SxVMemLimit = 384; WOPidFile = "/var/run/sogo/sogo.pid"; SOGoMemcachedHost = 127.0.0.1; /* Debug */ //SOGoDebugRequests = YES; //SoDebugBaseURL = YES; //ImapDebugEnabled = YES; //LDAPDebugEnabled = YES; //PGDebugEnabled = YES; //MySQL4DebugEnabled = YES; //SOGoUIxDebugEnabled = YES; //WODontZipResponse = YES; //WOLogFile = /var/log/sogo/sogo.log; }
Modifichiamo la configurazione di Apache2:
# nano /etc/apache2/conf.d/SOGo.conf
# RequestHeader set "x-webobjects-server-port" "443" # RequestHeader set "x-webobjects-server-name" "yourhostname" # RequestHeader set "x-webobjects-server-url" "https://yourhostname"
Abilitiamo i moduli necessari in Apache:
# a2enmod proxy # a2enmod proxy_http # a2enmod headers # a2enmod rewrite # a2dismod reqtimeout
Riavviamo Apache e gli altri servizi:
# /etc/init.d/apache2 restart # /etc/init.d/samba4 restart # /etc/init.d/sogo restart
Abilitare SSL
Iniziamo con abilitare il supporto SSL in Apache:
# a2enmod ssl # a2ensite default-ssl # /etc/init.d/apache2 restart
Verifichiamo di nona vere problemi con i certificati andando all'indirizzo:
https://domain_name_of_your_server/rpc/rpcproxy.dll