« Mise en place d'un serveur de mail complet » : différence entre les versions

Aller à la navigation Aller à la recherche
Ligne 1 098 : Ligne 1 098 :
/etc/init.d/amavis restart
/etc/init.d/amavis restart
</pre>
</pre>
=Mailman=
Mailman est un très bon gestionnaire de mailing list. Il possède notamment une interface d'administration web ce qui facilite grandement la gestion des listes, aussi bien du côté admin que du côté utilisateur.
Pour commencer, installez mailman :
<pre>aptitude install mailman</pre>
Puis ajoutez l'utilisateur postfix au groupe list
<pre>adduser postfix list</pre>
Ensuite, modifiez le fichier <code>/etc/mailman/mm_cfg.py</code> comme suit :
<pre>
MTA='Postfix'
#permet d'activer le https par défaut (si on ne précise pas https, les POST se passeront mal en https, et on ne pourra rien modifier par l'interface web !)
DEFAULT_URL_PATTERN = 'https://%s/cgi-bin/mailman/'
DEFAULT_EMAIL_HOST = 'list.csnu.org'
DEFAULT_URL_HOST  = 'list.csnu.org'
</pre>
Notez que j'ai spécifié <code>https</code> à la ligne <code>DEFAULT_URL_PATTERN</code>. Il est en effet conseillé d'utiliser une connexion sécurisée étant donné que les mots-de-passes transitent en clair. Si vous ne spécifiez pas <code>https</code> ici, il sera impossible de modifier des données via l'interface web.
<code>DEFAULT_EMAIL_HOST</code> et <code>DEFAULT_URL_HOST</code> définissent simplement les domaines gérés par défaut par mailman. Lorsque vous ajouterez une mailing list sans spécifier de domaine, ces domaines seront utilisés.
Éditez le fichier <code>/usr/lib/mailman/Mailman/Defaults.py</code> et vérifiez que les lignes <code>POSTFIX_ALIAS_CMD</code> et <code>POSTFIX_MAP_CMD</code> précise bien les binaires correspondant de postfix. Théoriquement :
<pre>
POSTFIX_ALIAS_CMD = '/usr/sbin/postalias'
POSTFIX_MAP_CMD = '/usr/sbin/postmap'
</pre>
Note: si vous devez opérer des changements, n'éditez pas ce fichier, mais plutôt <code>/etc/mailman/mm_cfg.py</code> qui est lu après celui ci et dont les valeurs écrasent celles par défaut.
Ajoutez les lignes suivantes à votre fichier <code>/etc/postfix/main.cf</code> :
<pre>owner_request_special = no</pre>
Créez la liste mailman qui est la liste par défaut de mailman :
<pre>/var/lib/mailman/bin/newlist mailman</pre>
Maintenant, générez les alias qui serviront à mailman :
<pre>/var/lib/mailman/bin/genaliases</pre>
Ceci a pour effet de créer les fichiers <code>/var/lib/mailman/data/aliases</code> et <code>/var/lib/mailman/data/aliases.db</code> qui contiennent les alias nécessaire au fonctionnement de mailman.
Il faudra recommencer cette opération après chaque création d'une liste.
Pour que les alias soient reconnus par postfix, il faut modifier la ligne <code>alias_maps</code> du fichier <code>/etc/postfix/main.cf</code> :
<pre>alias_maps = proxy:hash:/etc/aliases,proxy:hash:/var/lib/mailman/data/aliases</pre>
Pour activer l'interface web, ajoutez les lignes suivantes à votre vhost apache :
<pre>Include /etc/mailman/apache.conf</pre>
Il faut aussi définir le mot-de-passe administratif de mailman, qui permettra en particulier d'utiliser la page web de création de liste :
<pre>/usr/lib/mailman/bin/mmsitepass</pre>
Nous allons maintenant ajouter notre domaine virtuel <code>csnu.org</code> dans la configuration de mailman. Ajoutez les lignes suivantes dans <code>/etc/mailman/mm_cfg.py</code> :
<pre>
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['csnu.org']
add_virtualhost('www.csnu.org', 'csnu.org')
</pre>
Et comme précédemment, il faut préciser à postfix où trouver les alias pour les listes <code>@csnu.org</code>. Modifiez le fichier <code>/etc/postfix/main.cf</code> :
<pre>virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf,proxy:hash:/var/lib/mailman/data/virtual-mailman</pre>
Il ne reste plus qu'a redémarrer les services
<pre>
/etc/init.d/postfix restart
/etc/init.d/apache restart
/etc/init.d/mailman restart
</pre>
Pour ajouter une liste, il ne reste plus qu'a utiliser le binaire <code>/usr/lib/mailman/bin/newlist</code>. Par exemple :
<pre>/usr/lib/mailman/bin/newlist --urlhost='list.csnu.org' --emailhost='csnu.org' test@csnu.org</pre>
Notez qu'il faut laisser le site comme étant <code>list.csnu.org</code> sinon vous ne pourrez pas administrer la liste.
N'oubliez pas de générer la liste des alias :
<pre>/var/lib/mailman/bin/genaliases</pre>
Si vous n'avez pas de dossier "fr" dans /etc/mailman, téléchargez mailman sur http://www.gnu.org/software/mailman/ et copiez le dossier "fr" situé dans le répertoire templates de l'archive.
Si vous voulez limiter l'accès aux pages des listes avec un htaccess vous devrez ajouter les lignes nécessaires dans le fichier <code>/etc/mailman/apache.conf</code> de cette manière :
<pre><nowiki>
<Directory /usr/lib/cgi-bin/mailman/>
    AllowOverride None
    Options ExecCGI
    AddHandler cgi-script .cgi
    Order allow,deny
    Allow from all
    #auth de type digest
    AuthType Digest
    AuthName "un realm"
    AuthDigestProvider file
    AuthDigestDomain /
    AuthUserFile /chemin/vers/votre/.htpasswd
    AuthGroupFile /chemin/vers/votre/.htgroup
    <Limit GET POST>
      require valid-user
    </Limit>
</Directory>
</nowiki></pre>
=Des scripts de gestion de la base de donnée MySQL=
J'en ais vite eu marre de devoir retaper des lignes mysql relativement longues pour ajouter et modifier des utilisateurs. J'ai donc créé quelques scripts bash histoire de me simplifier la vie. Les [mail_scripts.tar.bz2 voici].
4 203

modifications

Menu de navigation