Revision 58 as of 2017-07-13 14:30:52

Clear message

Procédure d'installation d'alternc 3.2

Pour les vieilles versions, voir:

Préparatifs

Faite vraiment votre possible pouvoir un certificat ssl pour l'accès à Alternc, on devrait juste banir l'accès en http. On n'a plus de raison de ne pas avoir un certificat ssl avec letencrypt voir SslService/LetsEncrypt et Ici, AlternCConfiguration#SSL pour avoir le bureau avec du https

Notes d'une installation random par Guillaume de alternc 3.2 dans jessie.

  • enable ACL on disk (just in case, I don't know, it fucked hell up last time)
  • maybe install mysql beforehand. Alternc install asks you the password like 5 times
  • it seems it doesn't run fixperms on the root account, I needed to run fixperms to get the control panel to be able to write to a directory in the root account
  • you need to ln -s /etc/roundcube/apache.conf /etc/apache2/conf-enabled/roundcube.conf for roundcube to work.
  • you need to hack /etc/alternc/templates/apache2/roundcube.conf pour mettre Require all granted / denied ; same in vhost.conf
  • mysql shit seems to work out of the box.
  • ns2 wizardry required

On devrait développer chaque point plus bas...

Les premiers pas, avec puppet

Tout d'abord, installer les dépendances, parce qu'elles ne sont pas bonnes dans wheezy ou pour simplement automatiser cette partie de l'installation par puppet:

    class { 'mysql::server':
      root_password => trocla("${::fqdn}_mysql_root",'plain','length: 32'),
      manage_munin => true,
      munin_password => trocla("${::fqdn}_mysql_munin",'plain','length: 32'),
      manage_nagios => true,
      nagios_password_hash => trocla("${::fqdn}_mysql_nagios",'mysql','length: 32'),
      nagios_notcp => true,
      optimize_cron => true,
    }
    include site_mysql::master
    include site_apache::php
    include alternc::repos

Confirmer que les ACL sont bien actif:

tune2fs -l /dev/xvda1 | grep "acl"

Pour activer les quotas, il faut activer grpquota sur la partition:

/dev/xvda2 / ext4 grpquota,errors=remount-ro 0 1

Installation

La config puppet ci-haut a configuré les repos Debian d'AlternC, donc:

apt-get install alternc

Ceci va install phpMyAdmin, il va demander si on veut configurer apache ou lighttpd, choisir rien.

ProFTPd: indépendemment

Configuration d'AlternC à proprement parler:

Apres, phpMyAdmin nous écoeure encore:

Finalement, une fois le package installé, il faut rouler alternc.install:

alternc.install

SSL

Pour que le SSL soit fonctionnel, il faut installer un certificate .pem dans /etc/alternc/apache.pem, voir aussi la documentation. C'est l'a

Comme nous sommes des fans de SslService/LetsEncrypt et de puppet, on installe la classe suivante:

    # installe certbot et la conf d'apache pour le .well-know
    include roles::service::certbot

Ensuite, on doit exécuter certbot pour l'installation du certificat, le domaine est le domaine du bureau alternc.

# certbot certonly --webroot -w /var/www/letsencrypt/ -d <domain> --dry-run

On veut un vhost pour le bureau comme cela dans /etc/apache2/conf-enabled/alternc-apache2-ssl.conf

Listen 443
<VirtualHost *:443>
  AssignUserId www-data www-data

  Include /etc/alternc/bureau.conf

  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/< votre domaine >/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/< votre domaine >/privkey.pem

</VirtualHost>

On veut aussi forcer l'accès en https au bureau d'alternc, on ajoute donc les lignes suivantes au fichier

  RewriteEngine on
  RewriteCond  %{SERVER_PORT} !443
  RewriteRule  ^(.*)$ https://%%fqdn%%/$1 [L,R]

Après avoir rouler alternc.install vous allez voir la modification au fichier /etc/alternc/bureau.conf

pour tester la redirection.

# curl -I <votre domaine>

error Mutex

Bizarrement, il y a l'erreur suivante quand on active le ssl,

root@host:/etc/apache2# apache2ctl -S
AH00526: Syntax error on line 54 of /etc/apache2/mods-enabled/ssl.conf:
Invalid command 'SSLMutex', perhaps misspelled or defined by a module not included in the server configuration
Action '-S' failed.
The Apache error log may have more information.

On peut juste mettre la ligne 54 en commentaire et faire un restart d'apache.

Réplication dns (slave dns)

Si on veut installer des domaines et faire la gestion du dns, on doit avoir des serveurs dns slaves. Koumbit a déjà plusieurs serveurs.

Il est important d'activer le ssl sur le bureau alternc avant de faire les étapes suivantes parce que le transfert des données par https doit être préféré.

Voici en vrac les étapes.

Dovecot forcer le TLS/SSL

Voyons voir pour activer le ssl comme "required"

NOTE
ssl=required: SSL/TLS is always required, even if non-plaintext authentication mechanisms are used. Any attempt to authenticate before SSL/TLS is enabled will cause an authentication failure. Changer la configuration dans le fichier /etc/alternc/templates/dovecot/conf.d/95_alternc.conf

ssl = required

Troubleshooting

Apache ne démarre pas...

première embuche

Suite à une instalation d'Alternc, apache se plaint avec le message suivant et ne démarre pas,

root@speedy:/etc/alternc# apache2ctl -t
apache2: Syntax error on line 216 of /etc/apache2/apache2.conf: Syntax error on line 77 of /etc/apache2/conf-enabled/alternc.conf: Syntax error on line 36 of /etc/alternc/bureau.conf: No matches for the wildcard '*.conf' in '/etc/alternc/apache-panel.d', failing (use IncludeOptional if required)
Action '-t' failed.
The Apache error log may have more information.

On met en commentaire (temporairement) la ligne suivante et on roule alternc.install un autre fois...

--- a/alternc/templates/alternc/bureau.conf
+++ b/alternc/templates/alternc/bureau.conf
@@ -33,5 +33,6 @@
 
 
   # will be used to define aliases such as /javascript /webmail /squirrelmail ...
-  Include /etc/alternc/apache-panel.d/*.conf
+# erreur voir https://wiki.koumbit.net/AlternCInstallation
+  IncludeOptional /etc/alternc/apache-panel.d/*.conf

Ici, on devrait utiliser IncludeOptional disponible dans +2.3.6 ça éviterait l'erreur.

deuxième embuche

root@speedy:/etc/alternc# apache2ctl -t
AH00526: Syntax error on line 45 of /etc/apache2/conf-enabled/alternc.conf:
Either all Options must start with + or -, or no Option may.
Action '-t' failed.
The Apache error log may have more information.

Bon ici, le fond de l'histoire c'est que ce fichier de configuration n'est pas adapté pour jessie encore. Une piste est d'aller chercher le bon fichier dans la version pour jessie. https://github.com/fser/AlternC/blob/dd74506ba528df899e2f806a0141e868dc42c438/jessie/apache2.conf

Aller le mettre ici: /etc/alternc/templates/alternc/apache2.conf

Ensuite, on roule alternc.install et bingo.

Erreur SSL dovecot

[....] Starting IMAP/POP3 mail server: dovecotdoveconf: Fatal: Error in configuration file /etc/dovecot/conf.d/10-ssl.conf line 12: ssl_cert: Can't open file /etc/dovecot/dovecot.pem: No such file or directory

Fix: faut installer les certificats, symlinks dans: /etc/dovecot/dovecot.pem /etc/dovecot/private/dovecot.pem

Workdaround: ssl = no et commenter les certs dans /etc/dovecot/conf.d/10-ssl.conf.

Vhosts pétés

Si les vhosts marchent pas, c'est peut-être parce qu'on roule apache moins de 2.4, pour lequel il faut ajouter:

root@ques0:/etc/apache2/conf.d# cat > name-virtual.conf
NameVirtualHost *:80
root@ques0:/etc/apache2/conf.d# service apache2 restart

connect to Milter service

Bug d'alternc, symptôme:

Jan 30 13:10:54 ques0 postfix/smtpd[21716]: warning: connect to Milter service inet:127.0.0.1:8891: Connection refused

Workaround:

root@ques0:/etc/opendkim# mv KeyTable.alternc-tmp KeyTable
root@ques0:/etc/opendkim# mv SigningTable.alternc-tmp SigningTable
root@ques0:/etc/opendkim# ls -al
total 16
drwxr-xr-x   3 root root 4096 jan 30 13:16 .
drwxr-xr-x 110 root root 4096 jan 30 13:09 ..
drwxr-xr-x   2 root root 4096 jan 20 14:30 keys
-rw-r--r--   1 root root    0 jan 27 14:00 KeyTable
-rw-r--r--   1 root root    0 jan 27 14:00 SigningTable
-rw-r--r--   1 root root   20 jan 27 14:00 TrustedHosts

Voir http://alternc.org/ticket/1567#comment:1

Bruit LXC

Cron trop verbeux, voir: 13302 et http://alternc.org/ticket/1545.

Webmail roundcube v.3.2.10

requis

Configurer un vhost dans apache pour connecter à roundcube en https seulement. https://webmail..../

La conf par défaut du package semble maintenant compatible avec jessie, sinon voir la conf upstream

https://sources.debian.net/src/roundcube/1.2.3%2Bdfsg.1-4/debian/conf/apache.conf/

Avoir le mot de passe root mysql en main. voir /root/.my.cnf ou encore avec trocla exécuter la commande suivante sur puppet.koumbit.net:

# trocla get <host>_mysql_root plain

installation

On passe à l'installation maintenant.

apt-get install -t jessie-backports roundcube roundcube-plugins
  1. Faut-il configurer la base de données de roundcube avec dbconfig-common ? oui,
  2. Laissez le champs vide pour pour roundcube, ça va générer un nouveau mot de passe.

apt-get install alternc-roundcube

voir les autres détails, non alternc-roundcube ici : RoundCubeConfiguration

La version 3.2.10 de alternc-roundcube génère un fichier de configuration ici : /etc/roundcube/main.inc.php c'est une copie du fichier template /etc/alternc/templates/roundcube/main.inc.php

La version de roundcube dans les backports de jessie utilise un fichier ici /etc/roundcube/config.inc.php On bouge donc ce fichier de conf et on fait un lien symbolique vers le fichier de conf de alternc.

On doit ajouter la ligne suivante au fichier de configuration

/* Do not set db_dsnw here, use dpkg-reconfigure roundcube-core to configure database ! */
include_once("/etc/roundcube/debian-db-roundcube.php");

Lancer la commande alternc.install pour mettre à jour les configurations.

détails de configuration dans le panneau alternc

Configurer alternc pour que ce nouveau sous domaine soit celui utilisé par défaut quand les autres domaines installés sur le serveur active l'option " Roundcube Webmail access"

tester roundcube pour les plugins alternc

AlternC mailman

Normalement lors de l'installation de Alternc, on veut aussi avoir mailman d'installer, configurer et intégré à Alternc.

préparation

Il n'a pas de package alternc-mailman disponible dans le répos de jessie, y semble pas avoir eu de release, mystère.

les répos

Donc, en plus du répos pour jessie pour avoir alternc 3.3.10

#distributed by puppet alternc::reposjessie
deb http://debian.alternc.org jessie main

On doit ajouter le répos de wheezy pour avoir alternc-mailman

#distributed by puppet alternc::reposjessie
deb http://debian.alternc.org wheezy main

installer mailman

Ensuite, pour éviter que le package alternc-mailman plante lors de l'installation, on installe mailman avant.

Voici l'erreur pour les curieux si on installe pas mailman avant le package alternc-mailman

Setting up alternc-mailman (3.2) ...
Installing mysql table
detected mailman version 2.1.18
no patchfile for mailman 2.1.18
No directory, logging in with HOME=/
This account is currently not available.
dpkg: error processing package alternc-mailman (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 alternc-mailman
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)

Donc, on installe mailman

apt-get install mailman

Avoir sous la main le courriel du responsable des listes sur le serveur root@fqdn? et le mot de passe maitre pour mailman.

Et on crée la liste "mailman" avec la commande

# newlist mailman

vérifier les modules d'apache2

Activer le module cgi dans apache2, si c'est pas déjà fait.

Installer alternc-mailman maintenant!

Installer le package alternc-mailman de la version 3.2

apt-get install alternc-mailman

Voici ce que ça donne +- lors de l'installation.

# apt-get install alternc-mailman
Reading package lists... Done
Building dependency tree       
Reading state information... Done
alternc-mailman is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] 
Setting up alternc-mailman (3.2) ...
Installing mysql table
detected mailman version 2.1.18
no patchfile for mailman 2.1.18
ERROR 1062 (23000) at line 1: Duplicate entry 'mailman-default' for key 'PRIMARY'
installing required apache modules
Module rewrite already enabled
Enabling module proxy.
To activate the new configuration, you need to run:
  service apache2 restart
Considering dependency proxy for proxy_http:
Module proxy already enabled
Enabling module proxy_http.
To activate the new configuration, you need to run:
  service apache2 restart
adding mailman.localdomain to /etc/hosts
checking for upgrades
**********************************************
*            ALTERNC-MAILMAN                 *
* Please run alternc.install to fully deploy *
* Then change your quota to activate Mailman *
**********************************************
[master 19e56d3] committing changes in /etc after apt run
 Author: koumbit <koumbit@host.koumbit.net>
 4 files changed, 5 insertions(+)
 create mode 120000 apache2/mods-enabled/proxy.conf
 create mode 120000 apache2/mods-enabled/proxy.load
 create mode 120000 apache2/mods-enabled/proxy_http.load
needrestart is being skipped since dpkg has failed

Comme indiqué, on roule ça!

# alternc.install

VirtualMailman pour 2.1.18

On veut normalement aussi le VirtualMailman pour permettre de faire des listes sur tous les domaines installés dans le AlternC.

Jessie est livré avec mailman 2.1.18 et la patch pour virtual mailman n'est pas incluse dans le paquet alternc-mailman, on doit donc l'appliqué après l'installation.

En cas de problème (ça arrive toujours)

Il y a des petits bugs comme décrit ici: https://github.com/AlternC/AlternC/issues/15

Quelques commandes pour le débug... de alternc-mailman

  • pour envoyer un courriel en ligne de commande à la liste: swaks -f <tonmailouçavabouncer> -t <nomdelaliste@domain> --server localhost

  • log de postfix: tail -f /var/log/mail.log

  • log du bureau à la création de la liste: tail -f /var/log/alternc/bureau.log

  • activer les logs des requetes de mysql voir /etc/mysql/my.cnf
  • activer le mode verbose dans postfix avec -v (sur la ligne smtp et pipe de mailman) dans le fichier master.cf

les listes ne sont pas créées

Par défaut le script /usr/lib/alternc/update_mailman.sh envoi un courriel à root@ vous y trouverez les détails de pourquoi ça jam...

La liste n'est pas créé... et on voit se message d'erreur. "This account is currently not available." le compte est list

+ mysql_query 'SELECT id,list, name, domain, owner, password FROM mailman WHERE
+mailman_action='\''CREATE'\'';'
+ /usr/bin/mysql --defaults-file=/etc/alternc/my.cnf -Bs -e 'SELECT id,list, name,
+domain, owner, password FROM mailman WHERE mailman_action='\''CREATE'\'';'
+ '[' -d /var/lib/mailman/lists/test00-fqdn.org ']'
+ su - list -c '/usr/lib/mailman/bin/newlist -q "test00@fqdn.org"
+"root@fqdn.com" "mot de passe"'
This account is currently not available.

ça semble être parce que list n'a pas de shell...

# grep list /etc/passwd
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin

# grep list /etc/passwd
list:x:38:38:Mailing List Manager:/var/list:/bin/sh

si non, on peut changer la commande pour sudo à la place de su ... ici, les détails sont à analyser.

update_mailman.sh est trop verbeux

voici la file roots dans rt... pour les dommages.

Mettre en commentaire le set -x dans le script ici :/usr/lib/alternc/update_mailman.sh

De plus, pour éviter que le script envoie un courriel pareil avec les alias à ajouter lors de la création de la liste, ajouter la conf suivante à /etc/mailman/mm_cfg.py

MTA = None # So that mailman skips aliases generation

pas d'interface web pour la gestion des listes

Alternc-mailman place la configuration d'apache pour mailman dans /etc/apache2/conf.d/alternc-mailman.conf (c'est pas pris en compte dans jessie ça)

on doit faire un lien pour activer la configuration.

# /etc/apache2/conf-enabled# ln -s ../conf.d/alternc-mailman.conf

problème de "user unknow" lors d'un envoi à une liste

  • On doit redémarrer postfix/mailman après l'application de la patch, c'est mystérieux ...

Rapport de bug upstream https://github.com/AlternC/alternc-mailman/issues/8

Reste qu'on veut une patch. là voila!

Tiens, on a déjà traité ce problème avec un hack dans la db HagMaintenance#Liste_avec_une_addresse_.2F_faire_marcher_une_liste_entre_postfix

problème pour avec l'interface web de mailman avec apache en mode itk sous alternc

[Mon Mar 20 14:26:01.663782 2017] [mpm_itk:warn] [pid 6616] (itkmpm: pid=6616 uid=33, gid=33) itk_post_perdir_config(): setgid(1999): Operation not permitted
[Mon Mar 20 14:26:01.663992 2017] [mpm_itk:warn] [pid 6616] Couldn't set uid/gid/priority, closing connection.

C'est causé parce qu'on utilise l'utilisateur 1999 (alterncpanel) du vhost du bureau. Par exemple, si on change le user même si on place https://github.com/AlternC/alternc-mailman/blob/3.2/mailman.conf#L7 www-data ça ne fonctionne pas toujours...

Si on change l'utilisation 1999 à www-data pour rouler le panel de control, ça fonctionne. On ne veut pas vraiment ça par contre.

solution B. patcher mailman...

voici ce que Benjamin un dev d'alternc propose.

https://github.com/AlternC/alternc-mailman/tree/master/mailman-itk-fix

Ce qui me semble une très mauvaise idée. On ne veut pas avoir à maintenir des packages de mailman.

Trouver la référence... upstream i.e. chez debian du pourquoi de cette patch.

voici la patch sur le package mailman par debian

solution A. utiliser un reverse proxy d'apache

C'est une solution proposé ici https://github.com/AlternC/alternc-mailman/blob/3.2/src/alternc-mailman.conf#L17

On a seulement besoin de la ligne "ProxyPassReverse" selon ce qui est raconté ici

https://github.com/soul9/alternc-mailman/commit/8e22eaea805866a7efb4f0eb57e75917d1f25614

Ça fonctionne avec quelques modifications les voici:

Modification du Virtual_host_overview

Ajouter le paramêtre suivant dans le /etc/mailman/mm_cfg.py

"VIRTUAL_HOST_OVERVIEW = no"

Sinon, l'url pour le panorama de toutes les listes, utilise le url interne (mailman.localdomain) et non du proxy.

Référence: https://mail.python.org/pipermail/mailman-users/2010-September/070286.html

AUSSI! sinon, on n'a pas le panorama de tous les listes sur le serveur...

Modification du REQUEST_URI

Un autre problème, on doit remplacer /cgi/ par /cgi-bin/ sinon, on ne peut pas administrer les listes par l'interface web, ça donne un 404.

/etc/mailman/mm_cfg.py

os.environ["REQUEST_URI"] = os.environ["REQUEST_URI"].replace("/cgi/", "/cgi-bin/");

mais ça donne ça lors de la création de la liste... ou encore au redémarrage de mailman... :(

Traceback (most recent call last):
File "/usr/lib/mailman/bin/newlist", line 99, in <module>
from Mailman import mm_cfg
File "/var/lib/mailman/Mailman/mm_cfg.py", line 91, in <module>
os.environ["REQUEST_URI"] = os.environ["REQUEST_URI"].replace("/cgi/", "/cgi-bin/");
File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
raise KeyError(key)
KeyError: 'REQUEST_URI'

voici une petite modification à la ligne... à la place, on peut mettre ça.

pirulo = os.environ.get('REQUEST_URI')
if pirulo is not None:
    os.environ["REQUEST_URI"] = os.environ["REQUEST_URI"].replace("/cgi/", "/cgi-bin/")

Maintenant, on peut créer des listes, redémarrer mailman ainsi que faire l'administration des listes. ça fonctionne.

Références

La documentation upstream pour l'installation est ici: https://alternc.org/wiki/Documentation/Fr/Administrateur/Installer-3.x


CategoryInstallAlternc