26 mars 2013
Configurer SOGo avec une base d’utilisateurs Postfix Admin
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 l’un des gros avantages 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 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é.
Merci ça commence à prendre forme, actuellement tout fonctionne sauf l’envoie d’email…
J’ai passé du temps pour ne plus avoir aucune erreur dans les log, ça devient vraiment très intéressant.
Il y a également OpenChange qui ne fonctionne pas encore avec Outlook, soit disant que le serveur ne répond pas, bref, encore du temps à passer dessus, mais en gros pour moi 80% du travail est fait et je commence à bien connaître 🙂
Super 🙂
C’est déjà plus constructif comme remarques. Il n’en reste pas moins que ce tuto ne correspond pas du tout à ton environnement, et que tu le notes 1/5 en râlant parce que ça ne marche pas du premier coup avec Ctrl-C Ctrl-V… Comprends que ça énerve.
Bon allez, bonne chance pour ta config, et n’oublie pas de me mettre un lien vers ton tuto quand tu auras réussi 😉
J’ai oublié au passage je n’utilise pas postfix, les utilisateurs sont gérer par MySQL ou PostgreSQL
Faut pas le prendre si mauvais que ça, mais par exemple, dans la conf tu parle de sieve, et sieve n’est même pas installé de base et n’ai mentionné nul part, donc pourquoi configurer un service qui ne tourne pas de base et qu’on en parle même pas ?
defaults -u sogo write sogod SOGoSieveScriptsEnabled YES
defaults -u sogo write sogod SOGoSieveServer sieve://localhost:4190
netstat -anlptu ne m’affiche aucun port 4190 ou 2000 utilisable par sieve, j’en conclu que ça va foirer c’est logique ?
Si j’ai posté un message sur ce billet, c’est tout simplement que ça ma quand même été utile, car je regarde un tuto à droite, à gauche, je rassemble ce qui fonctionne POUR MOI, jusqu’à avoir ma propre procédure qui fonctionne impec quoi.
Je tourne sous wheezy, et, par exemple l’utilisation de GNUstep n’est plus la même, avec tes commandes ça ne fonctionne pas, j’ai donc préférer modifier /etc/sogo/sogo.conf à la mimine.
Actuellement ça « fonctionne » il me reste à installer un serveur IMAP, pour le reste c’est OK.
@maxime
Si tu avais lu ne serait-ce que le titre de l’article avant de copier-coller tu aurais pu voir qu’il te faut une base d’utilisateurs Postfix Admin. Essaie de comprendre ce que tu fais, tu verras ça ira mieux, et tu seras plus reconnaissant envers ceux qui prennent de leur temps pour écrire des tutos…
Salut,
C’est vraiment domâge que mettre la moitié des choses comme la plus part des tuto sur le net :
la base mysql, ça ne fonctionne tout simplement pas en faisant un copier coller de ce que tu indique plus haut.
Il faut donc créer à la mimine la table SQL en rapport avec ta commande, et quand on connait pas, bah on peut pas avancer…