Contents
-
Procédure d'installation d'alternc 3.2
- Préparatifs
- Les premiers pas, avec puppet
- Installation
- Réplication dns (slave dns)
- Dovecot forcer le TLS/SSL
- Troubleshooting
- Webmail roundcube v.3.2.10
-
AlternC mailman
- préparation
- Installer alternc-mailman maintenant!
- En cas de problème (ça arrive toujours)
- Références
Procédure d'installation d'alternc 3.2
Pour les vieilles versions, voir:
Préparatifs
La procédure est pour installer alternc 3.2 sur un système en Debian Jessie (stable). Pour installer sur Debian Wheezy, voir la version antérieur de la page
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:
- Nom du service: AlternC (par défaut, ou au choix)
Nom de domaine complet du bureau: <fqdn> (par défaut, ou au choix)
l'adresse IP principale de ce serveur: <ip> (prendre par défaut)
adresse IP interne: <ip> (par défaut)
- Use locally found MySQL server? oui (par defaut)
- Path where AlternC's users html files will be located: /var/www/alternc/ (par defaut)
Apres, phpMyAdmin nous écoeure encore:
- Faut-il configurer la base de données de phpmyadmin avec dbconfig-common ? non
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
- /etc/alternc/templates/alternc/bureau.conf
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.
- Ajouter un nom d'utilisateur (koumbit) et mot de passe
- ajouter l'authorisation des ip des dns slaves: 216.46.7.103/32 199.254.238.48/32
- créer dans puppet le fichier de configuration /site_alternc/files/slavedns/ en utilisant un des autres fichiers comme exemple.
- on roule puppet sur ns1/ns2/ns3 et les fichiers de confs devraient être transferré.
- on peut rouler /usr/lib/alternc/slave_dns -d pour voir ce qui se passe.
ensuite, sur le serveur alternc, dans les logs d'apache, root@host:/var/log/apache2# grep <ip d'un slave> other_vhosts_access.log
Dovecot forcer le TLS/SSL
- Présentation du ssl/tls dans dovecot
- Le spécifique avec commentaire faire le débug
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
- Faut-il configurer la base de données de roundcube avec dbconfig-common ? oui,
- 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
- Créer un compte courriel dans le panneau de controle, ensuite:
- logguer dans le webmail et aller dans paramêtres et mot de passe,
- faire un filtre sieve et le tester
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.
Voir la page VirtualMailman pour les détails. VirtualMailman#Application_des_patchs
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!
https://github.com/AlternC/alternc-mailman/issues/8#issuecomment-289867624
- Références
débug pour un client : 22779
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