Notes sur les releases d'Alternc

  • En date 15 déc. 2017, le dernier release 3.3.11 est la première version qui cherche a être compatible avec stretch et php7.0. On test l'installation dans stretch de notre coté.
  • https://github.com/AlternC/AlternC/blob/3.1.11/debian/changelog (3.1.11)? Pour le moment, on installe stretch avec le dernier release 3.3.X

  • Installation alternc 3.3.11
    • 24838 24839 Alternc de base voir dans le projet pour les bugs

    • 25127 AlternC de luxe

Notes sur les versions antérieurs

Pour les vieilles versions, voir:

AlternC 3.5 sur Debian Buster

Note, la version 3.5 met du ssl partout par défaut, enfin. :)

Préparatifs

Vous pouvez utiliser une entrée wildcard sur le domaine qui pointe vers le ip de votre alternc.

Les premiers pas, avec puppet

On a maintenant une classe pour l'installation d'alternc avec puppet! C'est beaucoup plus simple.

Inclure un rôle pour AlternC :

client.com.pp

node 'client.com' {
  include role::client::alternc
}

Un exemple de configuration pour AlternC dans client.com.yaml (suppose que le DNS est géré exclusivement sur le vps du client) :

profile::alternc::mx_fqdns:
  - mail.client.com
profile::alternc::dovecot_fqdn:  mail.client.com
profile::alternc::postfix_fqdn:  mail.client.com
profile::alternc::proftpd_fqdn:  ftp.client.com

profile::alternc::webmail: true
profile::alternc::spamassassin: true
profile::alternc::sieve_spam_to_junk: true

# Because AlternC
profile::letsencrypt::webroot_path: '/var/lib/letsencrypt'

Sans fichier yaml, AlternC sera installé sur le vps du client. Les valeurs par défaut pour les paramètres suivants seront le fqdn du vps du client :

Voir la classe pour les paramètres disponibles, leurs valeurs par défaut, et plus de détails sur les paramètres.

bugs d'installation avec puppet

une fois installé, les prochaines étapes

Voici les prochaines après l'installation d'alternC, c'est des étapes qui ne sont pas dans puppet, (ou pas encore)

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.

Installation manuelle

La version 3.5 d'AlternC peut être utilisé par partir des dépôts de Koumbit en ajoutant la configuration suivante aux sources apt:

deb http://debian.koumbit.net/debian alternc35 main

Les builds développement à partir de https://github.com/koumbit/AlternC (branche pu ("proposed updates")) sont disponible dans l'archive "unstable" (plutôt que alternc35). Ces paquets sont produit automatique par jenkins

PHPMyAdmin n'est pas en Debian Buster, donc on a besoin de le chercher de unstable ou un autre source.

phpmyadmin est maintenant dans buster-backports

  1. Ajouter le source de sid:

    deb http://deb.debian.org/debian unstable main contrib
  2. Ajouter les preferences:

    Package: phpmyadmin
    Pin: release a=unstable, n=, v=, c=, o=, l=
    Pin-Priority: 900
    
    Package: *
    Pin: release a=unstable
    Pin-Priority: 200
  3. Apt update

    apt update
  4. Installer phpmyadmin:

    apt install phpmyadmin
  5. Désactiver apparmor pour named:

    apt install apparmor-utils
    aa-disable named
  6. Remplacer les valeurs par défaut d'AlternC dans /etc/alternc/local.sh :

    HOSTING="AlternC" 
    FQDN="client.com" 
    PUBLIC_IP="199.58.8x.xx" 
    INTERNAL_IP="199.58.8x.xx" 
    DEFAULT_IP="199.58.80.33" 
    MONITOR_IP="" 
    NS1_HOSTNAME="client.com" 
    NS2_HOSTNAME="ns2.koumbit.net"  
    DEFAULT_MX="mail.client.com" 
    DEFAULT_SECONDARY_MX="" 
    MYSQL_CLIENT="localhost" 
    SQLBACKUP_TYPE="rotate" 
    SQLBACKUP_OVERWRITE="no" 
    ALTERNC_SLAVES="" 
    ALTERNC_HTML="/var/www/alternc" 
    ALTERNC_MAIL="/var/alternc/mail" 
    ALTERNC_LOGS="/var/log/alternc/sites" 
    ALTERNC_LOC="/var/alternc" 
    DATA_PART="/var/alternc" 
    # Shall we enable QUOTA over NFS ? 
    # the default is NO, since this dramatically block /usr/lib/alternc/quota* functions
    # called from the panel. To enable quota-over-NFS, put yes here
    NFS_QUOTA=no
    
  7. Installer alternc:

    apt install alternc
  8. Faire marcher opendkim
    1. Modifier /etc//system/multi-user.target.wants/opendkim.service
    2. Ajouter -p inet:8891@localhost à la fin de la ligne ExecStart

    3. Ajouter la ligne User=opendkim à la fin de la section "[Service]"

    4. Rouler systemctl daemon-reload opendkim

    5. Redémarrer le service: systemctl restart opendkim

      • N.B. Des fois ça timeout sur start, pas sur pourquoi -- kienan 2019-08-20 09:13:16

    6. Tester par envoyer un courriel

Procédure d'installation d'alternc 3.5rcX sur stretch

Note, la version 3.5 met du ssl partout par défaut, enfin. :)

Préparatifs

Vous pouvez utiliser une entrée wildcard sur le domaine qui pointe vers le ip de votre alternc.

Les premiers pas, avec puppet

On a maintenant une classe pour l'installation d'alternc avec puppet! C'est beaucoup plus simple.

Un exemple:

  include roles::vserver

  class { 'roles::alternc':
    version                => '3.5',
    bureau_fqdn            => "admin.${::fqdn}",
    mailman_fqdn           => "listes.${::fqdn}",
    roundcube_fqdn         => "courriel.${::fqdn}",
    ftp_fqdn               => "ftp.${::fqdn}",
    mx_fqdn                => "courrier.${::fqdn}",
    install_mailman        => true
    auto_install_domain    => $::fqdn,
  }

En gros roles::alternc prend soin de configurer :

Voir la classe pour plus de détails sur chaque paramètre et les paramètres disponible.

bugs d'installation avec puppet

une fois installé, les prochaines étapes

Voici les prochaines après l'installation d'alternC, c'est des étapes qui ne sont pas dans puppet, (ou pas encore)

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.

Installation manuelle

Si vous avez utilisé puppet pour l'installation, il est naturellement pas nécessaire de faire l'installation manuelle de cette section.

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 le bureau

On n'a pas besoin de alternc-ssl à ce stade.

Pour que le SSL soit fonctionnel, il faut installer un certificat ssl avec LE. On veut éviter d'aller mettre le cert dans /etc/alternc/apache.pem parce que c'est trop générique et porte à confusion sur les domaines inclus ou non dans le cert... Correction: AlternC se sert du fichier /etc/alternc/apache.pem dans plusieurs fichiers de config qui nécessitent des certificats SSL. Ça porte à confusion et ça ne fonctionne pas très bien avec les certificats letsencrypt (il faut inclure le CAcert séparément si on utilise letsencrypt). On veut donc modifier les templates et les fichiers de configuration manuellement. Une solution simple pour éviter de briser les configurations par défaut imbriquées dans AlternC est de faire un symlink: (ex: ln -s /etc/letsencrypt/live/<MY-EXEMPLE-DOMAIN.NET>/fullchain.pem /etc/alternc/apache.pem )

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

Ensuite, on veut faire un symlink /etc/alternc/apache.pem vers ce certificat

# ln -s /etc/letsencrypt/live/<domain>/fullchain.pem /etc/alternc/apache.pem

On veut un vhost pour le bureau avec du ssl! On veut réutiliser le template existant /etc/alternc/templates/alternc/apache2.conf et ajouter la conf suivant:

/etc/alternc/templates/alternc/apache2.conf

<IfModule ssl_module>
  Listen 443
</IfModule>

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

  Include /etc/alternc/bureau.conf

  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/%%fqdn%%/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/%%fqdn%%/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>

Si ça fonctionne pas, vérifier le FQDN dans le fichier /etc/alternc/local.sh

alternc-ssl (gestion des vhosts ssl)

On expérimente avec alternc-ssl pour la gestion des vhosts d'apache qui ont du ssl. Ici, on gère les certificats avec LE et non pas la méthode de alternc-ssl. C'est du hackage... mais bon.

  • SVP sur l'infra de Koumbit, on utilise puppet pour déployer certbot de LE

include roles::service::certbot
  1. D'abord installer le package alternc-ssl apt-get install alternc-ssl

  2. Installer certbot (on peut installer via puppet, sinon voir la doc spécifique pour l'OS.
  3. créer le dossier /var/www/letsencrypt/

  4. Créer un fichier de configuration /etc/letsencrypt/cli.ini

    • # Configuration par défaut pour les certs letsencrypt
      
      # Use a 4096 bit RSA key instead of 2048
      rsa-key-size = 4096 
      
      # Register with the specified e-mail address
      email = ssl@rt.koumbit.net
      
      # Use a text interface instead of ncurses
      text = True
      
      # Use the webroot authenticator.
      authenticator = webroot
      
      # Default Webroot path (shared) 
      # This is where the .well-known/acme-challenge dir will be created for every cert validation
      webroot-path = /var/www/letsencrypt/ 
      
  5. /etc/alternc/templates/apache2/vhost-ssl.conf et url-ssl.conf et vhost-mixssl.conf doivent être modifier pour utiliser le path des certs de LE.
    • -  SSLCertificateFile %%CRT%%
      -  SSLCertificateKeyFile %%KEY%%
      -  %%CHAINLINE%%
      +  SSLCertificateFile   /etc/letsencrypt/live/%%fqdn%%/fullchain.pem
      +  SSLCertificateKeyFile /etc/letsencrypt/live/%%fqdn%%/privkey.pem
  6. Lancer la commande alternc.install -f

bug d'installation de alternc-ssl 3.3.11 sur stretch

Paramétrage de alternc-ssl (3.3.11) ...
PHP Fatal error:  Uncaught Error: Call to undefined function mysql_connect() in /usr/lib/alternc/quota
_init:26
Stack trace:
#0 {main}
  thrown in /usr/lib/alternc/quota_init on line 26
dpkg: erreur de traitement du paquet alternc-ssl (--configure) :

alternc-certbot

  1. Télécharger:

    wget https://github.com/AlternC/alternc-certbot/releases/download/0.0.13/alternc-certbot_0.0.13_all.deb
  2. Installer:

    dpkg -i alternc-certbot_0.0.13_all.deb
    alternc.install
  3. Écouter sur le 443 (si ce ne le fait pas déjà):

    cat > /etc/apache2/conf-available/port-ssl.conf <<<EOF
    Listen 443
    EOF
    a2enconf port-ssl.conf
    service apache2 restart
    

N.B.: alternc-certbot écrit /etc/alternc/apache.pem en faisant:

# eg. FQDN=bureau.koumbit.net
cat /etc/letsencrypt/live/$FQDN/privkey.pem > /etc/alternc/apache.pem
cat /etc/letsencrypt/live/$FQDN/fullchain.pem >> /etc/alternc/apache.pem

N.B. alternc-certbot utilise /var/lib/letsencrypt pour son well-known

Dovecot

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

Dovecot écouter seulement en local

postfix

Config ssl pour postfix

Voici les petits changements à faire dans le template.

proftpd

  1. alternc.install s'occupe du gros de la configuration pour nous, il ne reste qu'à configurer le domaine et le TLS pour proftpd
  2. Il faut d'abord un sous-domaine pour le service ftp. L'idée ici, c'est que apache puisse répondre pour la validation de letsencrypt. On peut en utiliser un existant (ex: sous-domaine pour accedé au bureau alternc ou autre) ou bien en créer un ftp.exemple.org

    ## Exemple on peut faire une redirection vers quelque chose d'autre.
    ## Notez l'exclusion de .well-known dans la redirection
    <Virtualhost *:80>
      ServerName ftp.exemple.org
    
      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !/.well-known/
      RewriteRule ^/(.*)$ https://www.example.org/$1 [R=301,L]
    </Virtualhost>
  3. Créer un certificat TLS avec letsencrypt pour le domaine
    • On peut en profiter pour modifier le vhost ci-haut et ajouter une redirection vers le port 443 ;)

  4. Ajouter le certificat ssl à la configuration de proftpd /etc/alternc/template/proftpd/proftpd.conf et relancer alternc.install ( ceci va modifer le fichier /etc/proftpd/proftpd.conf )

    ## On fait les modifs suivantes à la config TLS
    
    --       # Server's certificate
    --       TLSRSACertificateFile /etc/alternc/apache.pem
    --       # TLSRSACertificateKeyFile /etc/ftpd/server.key.pem
    --
    --       # CA the server trusts
    --       # TLSCACertificateFile /etc/ftpd/root.cert.pem
    
    ++       # Server's certificate
    ++       TLSRSACertificateFile            /etc/letsencrypt/live/ftp.exemple.org/fullchain.pem 
    ++       TLSRSACertificateKeyFile         /etc/letsencrypt/live/ftp.exemple.org/privkey.pem 
    ++
    ++       # CA the server trusts
    ++       # TLSCACertificateFile           /etc/letsencrypt/live/ftp.exemple.org/chain.pem 

    ## on peut également utiliser un protocole plus récent que celui qui date de la vielle conf d'alternc.
    ## Est-ce que ceci peut nuire à l'utilisation du service? 
    
    --       TLSProtocol TLSv1 
    
    ++       TLSProtocol TLSv1.2 
  5. On repart le service:

    service proftpd restart
  6. finalement, il faut changer la variable ftp_human_name dans l'interface web d'alternc ( Admin Control Panel -> Configure AlternC variables )

bind9

sécuriser bind, écouter juste sur localhost

/etc/alternc/templates/bind/named.conf.options

ajouter les lignes suivantes:

message d'erreur dans les logs

the working directory is not writable

changer les permissions...

zone transfer 'exemple.net/AXFR/IN' denied

named[10356]: client ::1#12345 (exemple.net): zone transfer 'exemple.net/AXFR/IN' denied

C'est la commande suivante qui échoue car localhost est résolut en ipv6 (::1)

class/m_dom.php:        exec('/usr/bin/dig AXFR "' . escapeshellcmd($domain) . '" @"' . escapeshellcmd($ns) . '"', $axfr);

La config de bind ne prend pas ipv6 par défaut: /etc/alternc/template/bind/named.conf.options

--        allow-transfer  { "allslaves"; };
--        127.0.0.1;

++        allow-transfer  { "allslaves"; "internal"; };
++        127.0.0.1; ::1;

Troubleshooting

alternc 3.3.11 => opendkim dans stretch

La configuration de opendkim dans le package d'alternc 3.3.11 est pour jessie et ne fonctionne pas dans stretch. On peut d'abord utiliser le fix détaillé ici: StretchUpgrade#opendkim

/lib/opendkim/opendkim.service.generate
systemctl daemon-reload
service opendkim restart

Il faut ensuite mettre à jour le template: /etc/alternc/templates/opendkim.conf

Il faut minimalement ajouter une entrée pour le socket

# We need the socket where this filter should listen for milter
# connections from the MTA. 
Socket                  local:/var/run/opendkim/opendkim.sock

Ensuite, on roule alternc.install -f

AlternC propose la conf par défaut de opendkim: https://github.com/AlternC/AlternC/blob/stable-3.1/stretch/opendkim.conf Documentation d'opendkim: http://www.opendkim.org/opendkim.conf.5.html

Apache ne démarre pas...

apache mod itk

Invalid command 'AssignUserId', perhaps misspelled or defined by a module not included in the server configuration

Est-ce que vous avez bien activé le module itk dans apache?

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

Alternc veut absolument faire la gestion des certificats ssl de dovecot dans le template 96_ssl.conf

# cat 96_ssl.conf 
# Don't change this file, it will be overwriten by alternc.install. Change ssl parameters in a file named 99_ssl.conf instead
ssl_cert = </etc/alternc/apache.pem
ssl_key = </etc/alternc/apache.pem

On ne veut pas ça, on veut gérer les certs ssl d'une façon indépendante pour le service de mail en générale.

On va donc créer un fichier (comme proposé dans les commentaires du fichier 96_ssl.conf) 99_ssl_override.conf ici: /etc/dovecot/conf.d Oui, on ne gère pas ça avec les templates.

ssl_cert = </etc/letsencrypt/live/<FQDN>/fullchain.pem
ssl_key = </etc/letsencrypt/live/<FQDN>/privkey.pem

restart de dovecot

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

Avoir le mot de passe root mysql en main. voir /root/.my.cnf

Si on est sur stretch, on peut installer le package php-net-idna2. Si on est sous jessie, on peut définir les répos de stretch et aller installer le package avec la dépendence, ça devrait rien casser.

php-net-idna2 c'est un requis dans l'installer web de roundcube.

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

AlternCMailman

voir la page AlternCMailmanInstallation

Alternc testage

Voici liste pour chose à tester!


CategoryAlternc

AlternCInstallation (last edited 2023-12-07 15:15:51 by hubide)