Magazine

Configurer SOGo avec une base d’utilisateurs Postfix Admin

Publié le 26 mars 2013 par Rumbaya

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:secret@127.0.0.1:3306/postfix/sogo_user_profile'
defaults -u sogo write sogod OCSFolderInfoURL 'mysql://postfixadm:secret@127.0.0.1:3306/postfix/sogo_folder_info'
defaults -u sogo write sogod OCSSessionsFolderURL 'mysql://postfixadm:secret@127.0.0.1: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 '( "admin@domaine1.com" )'
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:secret@127.0.0.1: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:secret@127.0.0.1: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é.


Configurer SOGo avec une base d’utilisateurs Postfix Admin
Rating: 0.0/5 (0 votes cast)
Configurer SOGo avec une base d’utilisateurs Postfix Admin


Vous pourriez être intéressé par :

Retour à La Une de Logo Paperblog

Ces articles peuvent vous intéresser :

A propos de l’auteur


Rumbaya 9 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte