Environnement: Debian GNU/Linux 6.0.7 (squeeze) / MySQL 5.1 / Postfix 2.7.1 / Dovecot 1.2.15 / Postfix Admin 2.3.3
SOGo est un serveur de groupware qui a atteint une belle maturité, et dont un des gros avantage est de pouvoir s’intégrer dans une architecture de messagerie existante. Voici un petit topo pour installer SOGo sous Debian et configurer l’authentification SOGo sur une base MySQL d’utilisateurs multi-domaines au format Postfix Admin.
Conventions
Dans l’exemple, la base Postfix Admin s’appelle postfix, le user MySQL avec tous les privilèges sur la base est postfixadm, le mot de passe est secret. Les deux domaines configurés sont domaine1.com et domaine2.com. Il faudra modifier ces valeurs en fonction de votre cas, pour le reste ça devrait aller.
Installation des paquets
# en root sur le serveur # ajout des sources echo '# sogo:' >> /etc/apt/sources.list echo 'deb http://inverse.ca/debian squeeze squeeze' >> /etc/apt/sources.list apt-key adv --keyserver keys.gnupg.net --recv-key 0x810273C4 aptitude update # installation aptitude install sogo sope4.9-gdl1-mysql memcached rpl # suppression des warning de tmpreaper rpl 'SHOWWARNING=true' 'SHOWWARNING=false' /etc/tmpreaper.conf
Configuration Apache
Ajout des modules Apache
a2enmod proxy a2enmod proxy_http a2enmod headers a2enmod rewrite # restart apache /etc/init.d/apache2 restart
Configuration du VirtualHost
Par défaut SOGo est accessible à partir de tous les virtualhost de la machine, et je ne suis pas le seul à ne pas aimer. Je préfère créer un VirtualHost dédié à SOGo.
mv /etc/apache2/conf.d/SOGo.conf /etc/apache2/conf.d/SOGo.conf.off
Créer un VirtualHost /etc/apache2/sites-available/sogo :
<VirtualHost *:80> Servername sogo.domaine1.com DocumentRoot /usr/lib/GNUstep/SOGo/WebServerResources/ ErrorLog /var/log/apache2/error.log Customlog /var/log/apache2/access_SOGo.log combined ServerSignature Off 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|png|gif|css|js)"> SetHandler default-handler </LocationMatch> ProxyRequests Off SetEnv proxy-nokeepalive 1 ProxyPreserveHost On ProxyPass /SOGo http://127.0.0.1:20000/SOGo retry=0 <Proxy http://127.0.0.1:20000/SOGo> RequestHeader set "x-webobjects-server-port" "80" RequestHeader set "x-webobjects-server-name" "sogo.domaine1.com" RequestHeader set "x-webobjects-server-url" "http://sogo.domaine1.com" RequestHeader set "x-webobjects-server-protocol" "HTTP/1.0" RequestHeader set "x-webobjects-remote-host" %{REMOTE_HOST}e env=REMOTE_HOST AddDefaultCharset UTF-8 Order allow,deny Allow from all </Proxy> ## We use mod_rewrite to pass remote address to the SOGo proxy. # The remote address will appear in SOGo's log files and in the X-Forward # header of emails. RewriteEngine On RewriteRule ^/SOGo/(.*)$ /SOGo/$1 [env=REMOTE_HOST:%{REMOTE_ADDR},PT] Redirect permanent /index.html http://sogo.domaine1.com/SOGo </virtualhost>
Activation de la chose :
a2ensite sogo
apache2ctl restart
Configuration MySQL
On crée une vue MySQL sur la base postfix qui va contenir ce que SOGo s’attend à trouver.
mysql -u root -p
USE postfix; CREATE VIEW `sogo_users` AS SELECT local_part AS c_uid, username AS c_name, PASSWORD AS c_password, name AS c_cn, username AS mail, domain FROM `mailbox`; QUIT
Configuration de SOGo
Le fichier de configuration de SOGo est au format GNUstep, il se trouve ici: /var/lib/sogo/GNUstep/Defaults/.GNUstepDefaults
Plutôt que de l’éditer directement, on utilise la commande defaults
Paramètres globaux :
defaults -u sogo write sogod SOGoTimeZone "Europe/Paris" defaults -u sogo write sogod SOGoLanguage "French" defaults -u sogo write sogod SOGoAppointmentSendEMailNotifications YES defaults -u sogo write sogod SOGoFoldersSendEMailNotifications YES defaults -u sogo write sogod SOGoACLsSendEMailNotifications YES defaults -u sogo write sogod NGUseUTF8AsURLEncoding YES defaults -u sogo write sogod SOGoEnableDomainBasedUID YES defaults -u sogo write sogod SOGoPasswordChangeEnabled YES defaults -u sogo write sogod SOGoMailingMechanism smtp defaults -u sogo write sogod SOGoSMTPServer localhost defaults -u sogo write sogod SOGoDraftsFolderName Drafts defaults -u sogo write sogod SOGoSentFolderName Sent defaults -u sogo write sogod SOGoTrashFolderName Trash defaults -u sogo write sogod SOGoIMAPServer localhost defaults -u sogo write sogod SOGoSieveScriptsEnabled YES defaults -u sogo write sogod SOGoSieveServer sieve://localhost:4190 defaults -u sogo write sogod SOGoProfileURL 'mysql://postfixadm:[email protected]:3306/postfix/sogo_user_profile' defaults -u sogo write sogod OCSFolderInfoURL 'mysql://postfixadm:[email protected]:3306/postfix/sogo_folder_info' defaults -u sogo write sogod OCSSessionsFolderURL 'mysql://postfixadm:[email protected]:3306/postfix/sogo_sessions_folder' defaults -u sogo write sogod SOGoCalendarDefaultRoles '(PublicViewer,ConfidentialDAndTViewer)' defaults -u sogo write sogod SOGoLoginModule Calendar defaults -u sogo write sogod SOGoVacationEnabled YES defaults -u sogo write sogod SOGoMailMessageCheck every_5_minutes defaults -u sogo write sogod SOGoFirstDayOfWeek 1 defaults -u sogo write sogod SOGoSuperUsernames '( "[email protected]" )' defaults -u sogo write sogod SOGoMemcachedHost 127.0.0.1
Paramétrage des domaines
Tous les domaines utilisés doivent être déclarés dans SOGo. Attention, il faut que l’id du SOGoUserSources soit différent pour chaque domaine.
defaults -u sogo write sogod domains '{ "domaine1.com" = {SOGoMailDomain = "domaine1.com"; SOGoDraftsFolderName = Drafts; SOGoUserSources = ( {canAuthenticate = YES; displayName = "Utilisateurs domaine1.com"; id = users1; isAddressBook = YES; type = sql; userPasswordAlgorithm = md5-crypt; LoginFieldNames = ( "c_name" ); viewURL ="mysql://postfixadm:[email protected]:3306/postfix/sogo_users"; IMAPLoginFieldName = "mail"; DomainFieldName = "domain" }) ;} ; "domaine2.com" = {SOGoMailDomain = "domaine2.com"; SOGoDraftsFolderName = Drafts; SOGoUserSources = ( {canAuthenticate = YES; displayName = "Utilisateurs domaine2.com"; id = users2; isAddressBook = YES; type = sql; userPasswordAlgorithm = md5-crypt; LoginFieldNames = ( "c_name" ); viewURL ="mysql://postfixadm:[email protected]:3306/postfix/sogo_users"; IMAPLoginFieldName = "mail"; DomainFieldName = "domain" }) ;} ; }' /etc/init.d/sogo restart
On vérifie que tout fonctionne en visitant http://sogo.domain1.com
Liens
La doc officielle (en)
Wiki SOGo Debian (en)
Un bel exemple de config, merci les gars ça m’a bien aidé.
Rating: 0.0/5 (0 votes cast)