Exchange helyett SOGo 2

Az előző leírásban ldap autentikációt mutattam be. Most egy kicsit rövidebben a mysqlből való fehazsnáló azonosítást mutatom be.
A leírás ezúttal 10.04-es Ubuntu serverre készült, de nincs nagy különbség Debian esetén sem.

Hozzáadjuk a forrást, majd telepítjük a SOGo csomagot
echo "deb http://inverse.ca/ubuntu lucid main" >> /etc/apt/sources.list


apt-get update


apt-get install sogo

Mysqlben létrehozzuk a felhasználót, az adatbázist és a felhasználói adatok tárolására szolgáló sogo_view táblát:

CREATE USER 'sogo'@'localhost' IDENTIFIED BY 'sogo_db_passwd';


GRANT USAGE ON * . * TO 'sogo'@'localhost' IDENTIFIED BY 'sogo_db_passwd' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;


create database sogo;


GRANT ALL PRIVILEGES ON `sogo` . * TO 'sogo'@'localhost';


FLUSH PRIVILEGES;


use sogo;


CREATE TABLE `sogo_view`(


`c_uid` VARCHAR(255) ,


`c_name` VARCHAR(255) ,


`c_password` VARCHAR(255) ,


`c_cn` VARCHAR(255) ,


`mail` VARCHAR(255) ,


`givenName` VARCHAR(64) ,


`sn` VARCHAR(64) ,


`department` VARCHAR(255) ,


`title` VARCHAR(255)


);

Néhány felhasználót is beillesztünk:
INSERT INTO sogo_view (`c_uid`, `c_name`, `c_password`, `c_cn`, `mail`, `givenName`, `sn`, `department`, `title`) VALUES ('user1', 'user1', 'user1', 'Felhasznalo 1', 'user1@mail.hu', 'User1', 'user1', NULL, NULL);


INSERT INTO sogo_view (`c_uid`, `c_name`, `c_password`, `c_cn`, `mail`, `givenName`, `sn`, `department`, `title`) VALUES ('user2', 'user2', 'user2', 'Felhasznalo 2', 'user2@mail.hu', 'User2', 'user2', NULL, NULL);


INSERT INTO sogo_view (`c_uid`, `c_name`, `c_password`, `c_cn`, `mail`, `givenName`, `sn`, `department`, `title`) VALUES ('user3', 'user3', 'user3', 'Felhasznalo 3', 'user3@mail.hu', 'User3', 'user3', NULL, NULL);

A sogo konfigurálása az előzőleg bemutatótt módon zajlik, a különbség a SOGoUserSources sor tartalma, ez egy mysql adatbázishoz irányítja a szoftvert
su - sogo


defaults write sogod SOGoTimeZone "Europe/Budapest"


defaults write sogod SOGoMailDomain "company.hu"


defaults write sogod SOGoLanguage English


defaults write sogod SOGoAppointmentSendEMailNotifications YES


defaults write sogod SOGoFoldersSendEMailNotifications YES


defaults write sogod SOGoACLsSendEMailNotifications YES


defaults write sogod WOApplicationRedirectURL "http://company.hu"


defaults write sogod SOGoLoginModule calendar


defaults write sogod SOGoLanguage Hungarian


defaults write sogod SOGoProfileURL mysql://sogo:sogo_db_passwd@localhost:3306/sogo/sogo_user_profile


defaults write sogod OCSFolderInfoURL mysql://sogo:sogo_db_passwd@localhost:3306/sogo/sogo_folder_info


defaults write sogod SOGoMailingMechanism smtp


defaults write sogod SOGoSMTPServer localhost


defaults write sogod SOGoDraftsFolderName Drafts


defaults write sogod SOGoSentFolderName Sent


defaults write sogod SOGoTrashFolderName Trash


defaults write sogod SOGoIMAPServer localhost


defaults write sogod SOGoUserSources '({ type = sql; id = directory; viewURL = "mysql://sogo:sogo_db_passwd@localhost:3306/sogo/sogo_view"; canAuthenticate = YES; isAddressBook = NO; userPasswordAlgorithm = none; })'

A userPasswordAlgorithm = none; érdekes lehet. Ez szerint kódolatlanul tároljuk a felhasználók jelszavát. Itt van lehetőség md5 kódolást megadni, így egyirányú kódolással elrejtjük a valós jelszót.

Egy feature request írdott és pozitív visszajelzést adtak rá, így a következő verziótól követően a mysqlben tárolt és az encrypt függvénnyel elkódolt jelszavakat is tudja majd használni a SOGo, így akik pl email felhasználókat tárolják ilyen formán, azoknak sem lesz problémájuk és egy view tábla létrehozásával a levelezés és a SOGo felhasználói tábláját szinkronban tarthatjuk.

Az előző leírásból kimaradt, de itt pótolom az Apache2 beállításait:

A következő modulokat engedélyezni kell:

headers.load


proxy_ajp.load


proxy_balancer.load


proxy_connect.load


proxy_http.load


proxy.load

A /etc/apache2/conf.d/SOGo.conf tartalmát a következők eszerint kell formálni:

Alias /SOGo.woa/WebServerResources/ \


      /usr/lib/GNUstep/SOGo/WebServerResources/


Alias /SOGo/WebServerResources/ \


      /usr/lib/GNUstep/SOGo/WebServerResources/


AliasMatch /SOGo/so/ControlPanel/Products/(.*)/Resources/(.*) \


           /usr/lib/GNUstep/SOGo/$1.SOGo/Resources/$2


<Directory /usr/lib/GNUstep/SOGo/>


    AllowOverride None


    Order deny,allow


    Allow from all


</Directory>


<LocationMatch "^/SOGo/so/ControlPanel/Products/.*UI/Resources/.*jpg">


  SetHandler default-handler


</LocationMatch>


<LocationMatch "^/SOGo/so/ControlPanel/Products/.*UI/Resources/.*png">


  SetHandler default-handler


</LocationMatch>


<LocationMatch "^/SOGo/so/ControlPanel/Products/.*UI/Resources/.*gif">


  SetHandler default-handler


</LocationMatch>


<LocationMatch "^/SOGo/so/ControlPanel/Products/.*UI/Resources/.*css">


  SetHandler default-handler


</LocationMatch>


<LocationMatch "^/SOGo/so/ControlPanel/Products/.*UI/Resources/.*js">


  SetHandler default-handler


</LocationMatch>


<Location /SOGo>


  AuthType XXX


  Allow from all


</Location>


ProxyRequests Off


SetEnv proxy-nokeepalive 1


ProxyPreserveHost On


ProxyPassInterpolateEnv On


ProxyPass /SOGo http://127.0.0.1:20000/SOGo interpolate

Így nem kell a 20000-es portot használni, elég a company.hu.hu/SOGo -t beírni a böngészőbe