« Installation d'un serveur de mail Zimbra 6.0 sous debian lenny » : différence entre les versions

Aller à la navigation Aller à la recherche
 
(14 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
[[category:debian]]
[[category:serveur]]
[[Category:zimbra]]
* '''Cette page n'est plus maintenue, les informations contenues ici sont potentiellement obsolètes'''
Zimbra est un serveur collaboratif (groupware) Open Source. Il permet d'échanger des emails, gérer et partager son calendrier, ses contacts, documents.
Zimbra est un serveur collaboratif (groupware) Open Source. Il permet d'échanger des emails, gérer et partager son calendrier, ses contacts, documents.
Il est livré par défaut avec un webmail en ajax ainsi qu'une version mobile en html. Compatible avec les protocoles IMAP, POP et iCal, Zimbra permet d'utiliser n'importe quel client email graphique.
Il est livré par défaut avec un webmail en ajax ainsi qu'une version mobile en html. Compatible avec les protocoles IMAP, POP et iCal, Zimbra permet d'utiliser n'importe quel client email graphique.


Nous allons voir comment déployer la solution Zimbra Open Source Edition sur un serveur sous debian lenny avec quelques spécificités qui ne sont pas supportés officiellement par zimbra dans sa version 6 :
Nous allons voir comment déployer la solution Zimbra Open Source Edition sur un serveur sous debian lenny 64 bits avec quelques spécificités qui ne sont pas supportés officiellement par zimbra dans sa version 6 :
* support ipv6
* support ipv6
* utilisation d'une seule adresse ip (par défaut, zimbra bind ses services sur toutes les ips configurés sur le serveur)
* utilisation d'une seule adresse ip (par défaut, zimbra bind ses services sur toutes les ips configurés sur le serveur)


=Prérequis=
=Prérequis=
Ligne 34 : Ligne 41 :
L'installation est assez triviale. Lorsque zimbra vous demandera le mode http à utiliser, définissez le en mode <code>redirect</code>. Ainsi, zimbra forcera l'utilisation de https.
L'installation est assez triviale. Lorsque zimbra vous demandera le mode http à utiliser, définissez le en mode <code>redirect</code>. Ainsi, zimbra forcera l'utilisation de https.
Une fois l'installation terminée, Zimbra sera lancé automatiquement. Les différents fichiers ont été installés dans <code>/opt/zimbra</code>.
Une fois l'installation terminée, Zimbra sera lancé automatiquement. Les différents fichiers ont été installés dans <code>/opt/zimbra</code>.
Ajoutez l'utilisateur zimbra a la liste des utilisateurs autorisés a se connecter en ssh dans la configuration de openssh (directive <code>allowusers</code>) (c'est nécessaire pour certaines fonctions de l'interface d'administration de zimbra).<br />
Redémarrez ssh :
<pre>
/etc/init.d/ssh restart
</pre>


=Création de son propre certificat ssl signé par son autorité de certification=
=Création de son propre certificat ssl signé par son autorité de certification=
Ligne 47 : Ligne 60 :
subjectAltName                  = DNS:onyx.csnu.org, DNS:imap.csnu.org, DNS: pop.csnu.org, DNS: smtp.csnu.org, DNS:webmail.csnu.org, DNS:mail.csnu.org
subjectAltName                  = DNS:onyx.csnu.org, DNS:imap.csnu.org, DNS: pop.csnu.org, DNS: smtp.csnu.org, DNS:webmail.csnu.org, DNS:mail.csnu.org
basicConstraints                = critical,CA:FALSE
basicConstraints                = critical,CA:FALSE
keyUsage                        = digitalSignature, nonRepudiation, keyEncipherment
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment
nsCertType                      = server
nsCertType                      = server
extendedKeyUsage                = serverAuth
extendedKeyUsage                = serverAuth
Ligne 107 : Ligne 120 :
</pre>
</pre>


Ajoutez l'utilisateur zimbra a la liste des utilisateurs autorisés a se connecter en ssh dans la configuration de openssh (directive <code>allowusers</code>) (c'est nécessaire pour certaines fonctions de l'interface d'administration de zimbra).<br />
Redémarrez zimbra :
Redémarrez ssh et zimbra :
<pre>
<pre>
/etc/init.d/ssh restart
/etc/init.d/zimbra restart
/etc/init.d/zimbra restart
</pre>
</pre>
Ligne 152 : Ligne 163 :
* <code>/opt/zimbra/mailboxd/etc/zimbra.web.xml.in</code> : ce fichier fait le lien entre le service mail de zimbra et l'interface webmail
* <code>/opt/zimbra/mailboxd/etc/zimbra.web.xml.in</code> : ce fichier fait le lien entre le service mail de zimbra et l'interface webmail
* <code>/opt/zimbra/mailboxd/etc/zimbraAdmin.web.xml.in</code> : ce fichier fait le lien entre le service mail de zimbra et l'interface admin
* <code>/opt/zimbra/mailboxd/etc/zimbraAdmin.web.xml.in</code> : ce fichier fait le lien entre le service mail de zimbra et l'interface admin
Nous allons réaliser les actions suivantes :
* forcer le webmail a binder sur une seule adresse ipv4 sur les ports 80 et 443
* forcer le webmail a binder sur une seule adresse ipv6 sur les ports 80 et 443
* l'interface admin continuera à binder sur toutes les ips (a ma dernière tentative, zimbra il était impossible de supporter à la fois l'ipv6 et binder sur une seule ip avec l'interface admin)
Ainsi, si votre serveur dispose -comme le mien- de plusieurs ips, vous pourrez lancer sans problème un autre serveur web sur l'une des autres ips.
===Modification de la configuration de jetty===
Le fichier <code>/opt/zimbra/jetty/etc/jetty.xml.in</code> défini différents <code>connector</code> qui vont se charger de binder sur les différentes ips/ports. Par défaut, il y en a trois : <code>user services connector, no SSL</code>, <code>user services connector, SSL</code> et <code>Admin services connector; requires SSL</code>. Je rappel encore une fois que ma dernière tentative de binder le connector admin sur une seule ipv4 et une seule ipv6 a échouée.
Pour chacun de ces connecteurs (sauf le connecteur admin), il faudra ajouter une ligne de ce type afin de forcer l'ip :
<pre>
<Set name="Host">XX.XX.XX.XX</Set>
</pre>
De plus, il faudra dupliquer ces différents connecteurs afin d'y définir l'ipv6. On passera donc de 2 connecteurs (user no ssl et user ssl) à 4.
En gros, vous devriez avec une configuration de ce type :
<pre><nowiki>
    <!-- =========================================================== -->
    <!-- Set connectors                                              -->
    <!-- =========================================================== -->
    <!-- user services connector, no SSL -->
    <!-- HTTPBEGIN -->
    <Call name="addConnector">
      <Arg>
        <New id="http" class="org.mortbay.jetty.nio.SelectChannelConnector">
          <Set name="port"><SystemProperty name="jetty.port" default="%%zimbraMailPort%%"/></Set>
          <Set name="maxIdleTime">30000</Set>
          <Set name="lowResourceMaxIdleTime">1000</Set>
          <Set name="Acceptors">2</Set>
          <Set name="confidentialPort">%%zimbraMailSSLPort%%</Set>
          <Set name="useDirectBuffers">%%zimbraMailUseDirectBuffers%%</Set>
          <Set name="Host">87.98.144.196</Set>
        </New>
      </Arg>
    </Call>
<!-- HTTPEND -->
    <!-- user services connector, no SSL, ipv6 -->
    <!-- HTTPBEGIN -->
    <Call name="addConnector">
      <Arg>
        <New id="http" class="org.mortbay.jetty.nio.SelectChannelConnector">
          <Set name="port"><SystemProperty name="jetty.port" default="%%zimbraMailPort%%"/></Set>
          <Set name="maxIdleTime">30000</Set>
          <Set name="lowResourceMaxIdleTime">1000</Set>
          <Set name="Acceptors">2</Set>
          <Set name="confidentialPort">%%zimbraMailSSLPort%%</Set>
          <Set name="useDirectBuffers">%%zimbraMailUseDirectBuffers%%</Set>
          <Set name="Host">2001:41d0:1:bcdc::196</Set>
        </New>
      </Arg>
    </Call>
<!-- HTTPEND -->
    <!-- user services connector, SSL -->
    <!-- HTTPSBEGIN -->
    <Call name="addConnector">
      <Arg>
        <New id="ssl" class="org.mortbay.jetty.security.SslSelectChannelConnector">
          <Set name="Port">%%zimbraMailSSLPort%%</Set>
          <Set name="useDirectBuffers">%%zimbraMailUseDirectBuffers%%</Set>
          <Set name="maxIdleTime">30000</Set>
          <Set name="lowResourceMaxIdleTime">1000</Set>
          <Set name="Acceptors">2</Set>
          <Set name="keystore"><SystemProperty name="jetty.home" default="."/>/etc/keystore</Set>
          <Set name="password">@@mailboxd_keystore_password@@</Set>
          <Set name="KeyPassword">@@mailboxd_keystore_password@@</Set>
          <Set name="ExcludeCipherSuites">
            <Array type="java.lang.String">
              %%zimbraSSLExcludeCipherSuitesXML%%
            </Array>
          </Set>
          <Set name="Host">87.98.144.196</Set>
        </New>
      </Arg>
    </Call>
<!-- HTTPSEND -->
    <!-- user services connector, SSL,v6 -->
    <!-- HTTPSBEGIN -->
    <Call name="addConnector">
      <Arg>
        <New id="ssl" class="org.mortbay.jetty.security.SslSelectChannelConnector">
          <Set name="Port">%%zimbraMailSSLPort%%</Set>
          <Set name="useDirectBuffers">%%zimbraMailUseDirectBuffers%%</Set>
          <Set name="maxIdleTime">30000</Set>
          <Set name="lowResourceMaxIdleTime">1000</Set>
          <Set name="Acceptors">2</Set>
          <Set name="keystore"><SystemProperty name="jetty.home" default="."/>/etc/keystore</Set>
          <Set name="password">@@mailboxd_keystore_password@@</Set>
          <Set name="KeyPassword">@@mailboxd_keystore_password@@</Set>
          <Set name="ExcludeCipherSuites">
            <Array type="java.lang.String">
              %%zimbraSSLExcludeCipherSuitesXML%%
            </Array>
          </Set>
          <Set name="Host">2001:41d0:1:bcdc::196</Set>
        </New>
      </Arg>
    </Call>
<!-- HTTPSEND -->
</nowiki></pre>
===Modification de la configuration de mailboxd===
Éditez le fichier <code>/opt/zimbra/mailboxd/etc/zimbra.web.xml.in</code> et localisez les lignes suivantes :
<pre>
    <!-- =============
        <context-param>
          <param-name>zimbra.soap.url</param-name>
          <param-value>http://localhost:7070/service/soap</param-value>
        </context-param>
    -->
</pre>
Et remplacez les par les suivantes :
<pre>
        <context-param>
          <param-name>zimbra.soap.url</param-name>
          <param-value>https://87.98.144.196/service/soap</param-value>
        </context-param>
</pre>
Notez bien que <code>http</code> est devenu <code>https</code> ainsi que la disparition du port.
N'oubliez pas de supprimer <code><!-- =============</code> et <code>--></code> ! Ce sont les marqueurs qui définissent la section comme commentaire.
A titre d'information, si on avait modifié la configuration de l'interface d'administration dans la configuration de jetty, il aurait fallu modifier <code>/opt/zimbra/mailboxd/etc/zimbraAdmin.web.xml.in</code> de la même manière.
==Redémarrage==
Enfin, redémarrez zimbra afin qu'il prenne en compte la configuration.
<pre>/etc/init.d/zimbra restart</pre>
Je vous conseil vivement de sauvegarder les différents fichiers que vous avez modifié au cas  où une mise à jour de zimbra viendrait les écraser.
=Migration des comptes imap d'un ancien serveur à notre installation zimbra=
Installez l'outil <code>imapsync</code>:
<pre>aptitude install imapsync</pre>
Commencez par créer les différents comptes et leurs alias et vous connectant à l'interface d'administration de zimbra (https://votre-domaine:7071).
Ensuite, utilisez l'outil <code>imapsync</code> pour répliquer les comptes :
<pre>
imapsync --host1 serveur1.domain.com --user1 utilisateur@domain.com --password1 <pass> \
  --host2 serveurzimbra.domain.com --user2 utilisateur@domain.com --authmecH2 PLAIN --password2 <pass2> --ssl2
</pre>
=Ajouter des zimlets=
Une galerie de zimlets (extension pour zimbra) est disponible sur http://gallery.zimbra.com/
Pour les installer, rien de plus simple :
<pre>
su - zimbra
zmzimletctl deploy <zimlet>
</pre>
=Mise a jour de sécurité de zimbra=
télécharger le .tgz, l'extraire, puis lancer le <code>./install.sh</code>
=Réaliser des backups des comptes mails de zimbra=
Je vous renvoi sur http://wiki.zimbra.com/wiki/Backing_up_and_restoring_Zimbra_%28Open_Source_Version%29#Another_option
=Activer les mails de crontab du serveur=
Vous avez installé un serveur mail, mais debian n'en est pas conscient. Pour recevoir les mails de crontab par exemple, il faut créer un lien symbolique de <code>/usr/sbin/sendmail</code> vers <code>/opt/zimbra/postfix/sbin/sendmail</code>
<pre>ln -s /opt/zimbra/postfix/sbin/sendmail /usr/sbin/sendmail</pre>
=Configuration de spamassassin=
N'oubliez pas d'ajouter les directives <code>internal_networks</code> et <code>trusted_networks</code> dans <code>/opt/zimbra/conf/spamassassin/local.conf</code>. Ces directives doivent contenir les ips de vos différents mx secondaires.
4 206

modifications

Menu de navigation