[Appel à contribution] Étude de restitution de chaleur sur le poêlito

Le 15 février 2025 formation comprendre et dimensionnement un poêle de masse le 15/02 dans le 44


Pour vos questions poêles de masse : un forum dédié aux poêles de masse open source existe ! Venez discuter du MiniMasse, du poêlito et compagnie…
forum.poeledemasse.org

Nous cherchons des personnes ayant un poêlito sous la main prêt à donner quelques heures et ainsi contribuer à ce projet open source. Une procédure sera fournie, ce n’est pas plus complexe que prendre des températures et les noter dans un tableur… Les données récoltées seront compilées, analysées et publiées sous licence libre bien sûr.

Le poêlito est une solution bien pensée pour les habitats liégés et mobiles car semi démontable. En plus d’être open source c’est une solution largement documentée par son créateur ce qui le rend accessible. Pour ma part j’ai essayé de rédiger un retour d’expérience mais la démarche n’était pas très chiffré… Suite à mon passage chez Agir Low-Tech et à la fabrication de leur prototype de poêle de masse pour petit habitat. J’ai  discussion avec Guillaume (d’Agir Low-Tech) et il nous apparaît pertinent de récolter de la donnée (qui n’existe pas à notre connaissance) sur le comportement thermique (restitution de chaleur) du poêlito.

Pour les volontaires, inscrivez vous par ici : https://cloud.retzien.fr/index.php/apps/forms/3oHSjHD7225sfS9M

A prévoir :

  • Thermomètre infrarouge (entre 30 et 120€) si c’est un frein pour vous, dites-le, un prêt est possible…
  • Un ordinateur pour remplir un tableur
  • Une balance de cuisine pour peser de 1 à 3kg  (ou un pèse personne)
  • Un chronomètre / minuteur
  • Quelques heures devant vous (donc un copain et de la bière c’est pas mal…)

Merci d’avance pour vos contributions !

David Mercereau et Guillaume (Agir LowTech)

Le 15 février 2025 formation comprendre et dimensionnement un poêle de masse le 15/02 dans le 44


Pour vos questions poêles de masse : un forum dédié aux poêles de masse open source existe ! Venez discuter du MiniMasse, du poêlito et compagnie…
forum.poeledemasse.org

Une batterie d’ordinateur auxiliaire avec ma batterie de vélo

L’hiver est là, le ciel est gris, les journées sont très courtes et, pour les gens comme moi, autonomes en énergie avec du solaire, la précarité énergétique est palpable… Depuis quelques temps, je travaille à mon compte, et j’ai souvent besoin de travailler sur mon ordinateur en journée. Cela fait partie des choses qu’il est difficile de reporter au lendemain, même s’il n’y a pas trop de soleil (et peu d’énergie)… Si je suis dans la panade, je peux allumer le groupe électrogène bien sûr, mais ce n’est pas la solution que je souhaite privilégier. Depuis cette année j’ai réussi à bien optimiser mon surplus d’énergie solaire, ce qui me permet notamment de charger les batteries de mon vélo électrique. Ce qui me permet donc de stocker d’autant plus d’énergie – énergie que j’utilise un peu moins l’hiver pour me déplacer…. vous voyez où je veux en venir : je peux utiliser cette énergie stockée pour travailler sur mon ordinateur…

Actuellement la batterie de mon ordinateur est une 11,1V, 5,1Ah soit 56,61Wh, et elle me permet environ 3h d’autonomie. Je peux en déduire que mon ordinateur consomme 18,8Wh sur batterie (56Wh/3h) (ce qui est cohérent avec ce que je mesure sur le wattmètre quand il est branché + les pertes induites par la batterie…).

La batterie de mon vélo est une 13Ah/48V soit 624Wh de stocké, ce qui me permet un temps d’utilisation de mon ordinateur de ~30h (624Wh/19Wh=32h) soit 5 jours pleins à raison de 6h par jour… L’hiver peut donc venir, je peux travailler ! (chouette ?)

Pour pouvoir utiliser ma batterie de vélo qui est en 48V et mon ordinateur (qui est en 19V (c’est indiqué sur le transformateur entre la prise et l’ordinateur), j’ai acheté un petit convertisseur de tension 48V > 19V (pour 6€). Ensuite il m’a fallu :

  • Sur l’entrée 48V du convertisseur de tension : ajouter une prise XT90 mâle (car j’ai équipé mon vélo de ces connecteurs) ;
  • Sur la sortie 18V du convertisseur de tension : ajouter le connecteur compatible avec mon PC (là c’est un peu plus la jungle pour trouver le bon… il faut s’armer de patience…).

Et voilà le travail :

Conseils sur le convertisseur de tension :

  • Que le courant qu’il est capable de délivrer soit supérieur à celui dont vous avez besoin, sinon ça ne va pas fonctionner. De mon côté, j’ai observé 20-25W sur le Wattmètre, ce qui fait un courant de 1.3A. Mon convertisseur de tension permet 5A, on est large…
  • Que le rendement/l’efficacité ne soit pas trop moche. Le mien est à 94%, c’est correct.

Service web pour alléger vos boîtes mails (télécharger une archive)

À quand remonte la dernière fois que vous avez eu besoin de lire cet e-mail du 15 septembre 2012 ? Ça fait longtemps n’est-ce pas ?

Préambule

Le stockage de ces e-mails n’est pas sans impact énergétique : en effet, les serveurs (gros ordinateurs) qui hébergent ces vieux e-mails sont allumés en permanence pour vous permettre, un jour peut-être, de relire cet e-mail du 15 septembre 2012 dont vous n’avez même plus le souvenir. Deux solutions peuvent s’offrir à vous pour diminuer cet impact :

  • Supprimer vos vieux e-mails, la solution la plus sobre, radicale ;
  • Archiver vos e-mails sur une clé USB / un disque dur externe, votre ordinateur ; en tout cas, un système d’archivage « froid », c’est-à-dire qui ne sera pas allumé en permanence.

Un service web et open source pour faire ça

Lighten Mailbox est une interface web qui permet de faire du ménage dans sa boîte mail. Ce ménage se fait soit en supprimant des vieux messages, soit en les téléchargeant au format EML ou HTML/TXT. La sélection des messages se fait par critère de date (début/fin), puis en sélectionnant les dossiers IMAP concernés.

Exemple d’utilisation : Télécharger et archiver (exemple de rendu) ces emails vieux de 2 ans en les enregistrant sur un disque dur externe, puis (quand vous vous êtes assuré de l’intégrité des données) supprimer ces messages.

Exemple d’index d’archive : https://lighten-mailbox.zici.fr/archive/example/ (utilisable hors ligne, dans un navigateur internet depuis une clé usb par exemple…)

Une vidéo vaut mieux que de grands discours :

Autoconfig (thunderbird) & Autodiscover (outlook) sur messagerie hébergé ISPconfig

Thunderbird et Outlook représente une grosse part de marché dans les clients de messagerie. Je m’occupe de plusieurs service de messagerie (pro, asso…) et il est bien commode pour les usagés que « ça tombe en marche » tout seul pour le paramétrage…

A savoir :

  • Thunderbird chercher les paramètres dans un XML sur http://autoconfig.votredomain.fr/mail/config-v1.1.xml
  • Outlook cherche l’enregistrement DNS _autodiscover._tcp.votredomain.fr l’url à contacter et ensuite récupère le XML : https://url_donner_dans_le_dns/Autodiscover/Autodiscover.xml

Du coup nous allons rassemblé ces 2 demandes avec un htaccess et un script PHP qui génère le bon format XML fonction de si c’est outlook our thunderbird qui demande…

Pour cela il faut :

  • Créer un site « autoconfig.votredomain.fr » (ou un alias si vous avez plusieurs site) et faire pointer l’enregistrement DNS bien sûr…
  • Créer l’enregistrement DNS SRV type :
    • _autodiscover._tcp.votredomain.fr. 3600 IN SRV 10 10 443 autoconfig.votredomain.fr.

Dans le site autoconfig.votredomain.fr il vous suffit de glisser 2 fichiers à la racine :

Fichier .htaccess contient :

RewriteEngine On
RewriteRule ^Autodiscover/Autodiscover.xml autoconfig-mail.php
RewriteRule ^mail/config-v1.1.xml autoconfig-mail.php

Fichier autoconfig-mail.php contient :

<?php

/*
By David Mercereau
Licence Beerware
*/

function extract_domain($domain) {
    if(preg_match("/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i", $domain, $matches)) {
        return $matches['domain'];
    } else {
        return $domain;
    }
}

$domain = extract_domain($_SERVER['SERVER_NAME']);
$mailServeur='mail.'.$domain;

if (preg_match('/^\/mail\/config-v1\.1\.xml/', $_SERVER['REQUEST_URI'])) {
	header('Content-Type: text/xml');
    header('Content-Type: application/xml');
	?>
<clientConfig version="1.1">
	<emailProvider id="<?= $domain ?>">
	  <domain><?= $domain ?></domain>
	  <displayName><?= $domain ?></displayName>
	  <displayShortName><?= $domain ?></displayShortName>
	  <incomingServer type="imap">
		 <hostname><?= $mailServeur ?></hostname>
		 <port>143</port>
		 <socketType>STARTTLS</socketType>
		 <username>%EMAILADDRESS%</username>
		 <authentication>password-cleartext</authentication>
	  </incomingServer>
	  <outgoingServer type="smtp">
		 <hostname><?= $mailServeur ?></hostname>
		 <port>587</port>
		 <socketType>STARTTLS</socketType>
		 <username>%EMAILADDRESS%</username>
		 <authentication>password-cleartext</authentication>
	  </outgoingServer>
	  <documentation url="https://webmail.<?= $domain ?>">
		  <descr lang="fr">Connexion Webmail</descr>
		  <descr lang="en">Webmail connexion</descr>
	  </documentation>
	  <documentation url="http://projet.retzo.net/projects/hebergement/wiki">
		<descr lang="fr">Documentation</descr>
		<descr lang="en">Generic settings page</descr>
	  </documentation>
	</emailProvider>
</clientConfig>
	<?php
} else {
	// Outlook
	//get raw POST data so we can extract the email address
	$data = file_get_contents("php://input");
	preg_match("/\<EMailAddress\>(.*?)\<\/EMailAddress\>/", $data, $matches);

	//set Content-Type
	header('Content-Type: text/xml');
    header('Content-Type: application/xml');
	echo '<?xml version="1.0" encoding="utf-8" ?>'; 
	?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
   <Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
	   <Account>
		   <AccountType>email</AccountType>
		   <Action>settings</Action>
		   <Protocol>
			   <Type>IMAP</Type>
			   <Server><?= $mailServeur ?></Server>
			   <Port>993</Port>
			   <DomainRequired>off</DomainRequired>
			   <LoginName><?php echo $matches[1]; ?></LoginName>
			   <SPA>off</SPA>
			   <SSL>on</SSL>
			   <AuthRequired>on</AuthRequired>
		   </Protocol>
		   <Protocol>
			   <Type>POP3</Type>
			   <Server><?= $mailServeur ?></Server>
			   <Port>995</Port>
			   <DomainRequired>off</DomainRequired>
			   <LoginName><?php echo $matches[1]; ?></LoginName>
			   <SPA>off</SPA>
			   <SSL>on</SSL>
			   <AuthRequired>on</AuthRequired>
		   </Protocol>
		   <Protocol>
			   <Type>SMTP</Type>
			   <Server><?= $mailServeur ?></Server>
			   <Port>587</Port>
			   <DomainRequired>off</DomainRequired>
			   <LoginName><?php echo $matches[1]; ?></LoginName>
			   <SPA>off</SPA>
			   <Encryption>TLS</Encryption>
			   <AuthRequired>on</AuthRequired>
			   <UsePOPAuth>off</UsePOPAuth>
			   <SMTPLast>off</SMTPLast>
		   </Protocol>
	   </Account>
   </Response>
</Autodiscover>
	<?php
}

?>

Des ressources :

Chauffe-eau, phase 1 – surplus d’énergie solaire

J’ai acheté récemment un chauffe-eau Nautic-Therm Stehend ME 230V 330W 20L de la marque Elgena. C’est un chauffe-eau électrique (petit volume, petite résistance) qui peut fonctionner avec le surplus d’énergie solaire l’été, ou avec les calories du poêle l’hiver :

  • Volume 20L : On consomme 15 à 20L d’eau/j/p donc 20L d’eau chaude c’est largement trop pour nous. Mais ça a un peu d’inertie alors on peut avoir 2 jours d’eau chaude en cas de mauvais temps…
  • Résistance électrique 330W : le convertisseur de mon installation solaire permet 700W, comme ça j’ai un peu de marge pour le reste…
  • Échangeur de chaleur : pour plus tard brancher le poêle dessus…

La phase 2 est faite, c’est maintenant connecté au poêle : Chauffe-eau, phase 2 – échangeur avec poêle de masse

A la base c’est un chauffe-eau de camion : l’échangeur est initialement conçu pour récupérer les calories du moteur (le liquide de refroidissement circule et la chaleur du moteur qui roule réchauffe l’eau). De mon côté, cet échangeur servira à chauffer l’eau l’hiver avec une circulation autour du poêle… mais ça sera plus tard… bien plus tard… phase 2…

La limite de l’utilisation d’un chauffe-eau de camion, c’est qu’il va falloir restreindre la pression à 2,5bar MAX (indiqué dans la notice) car ils ne sont pas faits pour être connectés au réseau (au moins 3 – 4 bar), mais pour fonctionner avec des petites pompes dans les camions… Il suffit pour cela d’ajouter un limitateur de pression avec manomètre pour s’assurer d’être dans les clous.

Installation

L’installation du chauffe-eau est faite « le plus haut possible » (au plus proche du plafond), non loin du poêle (à ~2m50) dans la prévision de son raccordement sur celui-ci l’hiver (par thermosiphon, d’où la hauteur…)

Bon c’est facilement résumé en 5 photos mais y’a eu : test de mise en eau (ha mince ça fuit), réparation, test de mise en eau, (ha mince ça fuit…) … … Bref, je suis nul en plomberie.

Test température des parois

Après allumage durant 2h voilà les températures extérieures constatées.

Tout ça me fait dire qu’il n’est pas si mal isolé, mais qu’une petite couche en plus ne serait pas de trop (dans le futur), et qu’en cas de canicule, il faudra que le chauffe-eau reste éteint pour ne pas ajouter des °C inutilement dans la maison (on a d’autres moyen de faire chauffer de l’eau en cas de canicule, un bidon en plein soleil ça monte vite en température, encore plus avec une marmite dans le four solaire…)

Combien de temps pour chauffer l’eau ?

Combien de temps ce ballon va-t-il mettre à chauffer toute son eau en admettant qu’on parte d’une eau complètement froide (ce qui est rarement le cas, l’eau est souvent encore chaude de la veille). Les données dans le détails :

  • 80°C c’est la température max du chauffe-eau
  • 15°C c’est la température estimée de l’eau dans le réseau d’eau (même si c’est variable)
  • 330W la résistance électrique de mon chauffe-eau
  • 20L c’est la capacité du chauffe-eau
  • 1,5106Wh c’est la puissance nécessaire pour monter 1L d’eau de 1°C (en théorie c’est plutôt 1,162Wh pour monter 1L d’eau d’1°C, mais en admettant une efficacité énergétique de 70% pour un chauffe-eau électrique ça monte à 1,5106Wh pour monter 1L d’eau à 1°C.)

( (80°C-15°C) x (1,5106Wh x 1000) x 20L ) / (330Wh / 1000) = 5,9h

Ce ballon de 20L avec sa résistance de 330W met donc 5h54 à chauffer une eau froide à 80°C.

C’est à pas grand chose près ce que j’ai constaté en pratique. Et encore une fois, normalement on ne part jamais d’une eau froide, l’eau est encore un peu chaude de la veille…

Allumage automatique avec le surplus d’énergie solaire

Avec mon installation solaire électrique autonome j’ai développé PvMonit qui me permet de monitorer mon installation et de gérer le surplus d’énergie (router l’énergie) quand il y en a…

Voilà les scripts qui allument le chauffe-eau quand :

  • Le régulateur est en mode « float » (fin de charge)
  • La puissance mesurée sur la batterie est supérieure à 0 (sinon ça veut dire que la batterie est en décharge)

En Blockly :

En PHP :

// Retour par défaut
// 1 relai éteint
// 2 relai allumé
$retour_mod = 1;
// Pour l'affichage dans le log
$retour_log = null;
if (MpptFlo($data['CS'], 60)) {
  // Si le relai 1 c'est allumé puis éteint, c'est à nous...
  if (($data['P']) > 0) {
    $retour_log = 'Le régulateur est à Float et on ne tire pas sur les batteries, il y a donc de l\'énergie potentielle inutilisé, on allume !';
    $retour_mod = 2;
  }
}
print('Le MOD est décidé à : ' . $retour_mod);
print('Retour de log : ' . $retour_log);

Bien entendu il est aussi possible d’ajouter d’autres paramètres conditions comme « la température de la pièce » et si celle-ci passe au dessus de 25°C, laisse le chauffe-eau à l’arrêt pour éviter la surchauffe de la maison…

Les effets sur la consommation journalière

Mon installation solaire autonome est dimensionnée pour 1kWh/j et avec la gestion du surplus d’énergie et l’arrivé du chauffe-eau, au mois de septembre j’arrive à exploiter jusqu’à 4kWh/j d’énergie solaire (sans plus de matériel, sans plus d’investissement…). Bien sûr ce ne sera pas possible toute l’année (particulièrement décembre, janvier, février par chez moi).

L’amortissement de mon installation solaire est d’autant plus conséquent…

La suite

C’est par ici : Chauffe-eau, phase 2 – échangeur avec poêle de masse

La paillourte cherche son poêle : Le poêle de masse « Petit abitat » d’Agir Low-Tech ?

Le 15 février 2025 formation comprendre et dimensionnement un poêle de masse le 15/02 dans le 44


Pour vos questions poêles de masse : un forum dédié aux poêles de masse open source existe ! Venez discuter du MiniMasse, du poêlito et compagnie…
forum.poeledemasse.org

Licence CC BY SA 4.0 – Agir Low-Tech

Mise à jour : Le poêle de masse d’agir low-tech a été fabriqué et installé dans la paillourte

Agir Low-Tech travaille actuellement sur la conception d’un poêle de masse open source pour les petits habitats (la nécessité première pour avancer vers la sobriété). Contrairement au poêlito, il serait à foyer fermé (ce qui laisse présager un meilleur rendement) & certifié. Côté points communs : ça restera un poêle de masse open source, documenté, accessible financièrement, avec plaque de cuisson et dans le futur il chauffera peut être même de l’eau… Donc si tu es (ou envisages) de vivre en Yourte, en Paillourte, en TinyHouse, ou autre petit habitat, Agir Low-Tech travaille pour toi ! (pour nous 🙂 ).

Pour que ce projet puisse se concrétiser, il leur faut des € car il y a du matériel, des instruments de mesure et des centaines d’heures de travail… alors je vous encourage à donner, parce que développer un poêle ça ne s’improvise pas et pour connaître des acteurs du projet : ça bosse bien et ça partage !!! (merci !)

Page d’appel aux dons du projet : https://agir.lowtech.fr/t/pdm/projets/tiny/fiche-de-presentation/

Il n’existe pas/peu de poêles de masse documentés / auto constructibles pour les petits habitats. Souvent, ceux-ci utilisent donc un poêle qui n’est pas correctement dimensionné pour leur habitat. Hors un poêle à bois bien dimensionné, c’est important pour éviter toute pollution de l’air. Un poêle en sous tirage (faire traîner une flambée) ou en sur tirage (trop d’oxygène) fait baisser le rendement du poêle et augmente l’émission de particules fines.

Le feu dans la cheminée, c’est ce qu’il y a de pire. Seulement 15 % du bois brûlé sert réellement à chauffer. À 85 %, il part dans les fumées, produit des gaz polluants et des émissions de particules fines très élevées. Ce mauvais rendement entraîne une surconsommation de bois importante et encrasse vite le conduit. À titre de comparaison, se chauffer une seule journée avec du bois dans la cheminée émet autant de particules fines que parcourir 3 500 km avec une voiture diesel.

Source quechoisir.org

Retour sur le premier hiver dans la paillourte

Graphique de ~24h dans la paillourte sans chauffe le soir en hiver (jaune = température extérieure, rouge = température intérieure, bleu = température local matériel solaire)

La température baisse de 1,5° à l’intérieur de la paillourte (20° à 21h, 18,6 le matin à 9h) alors qu’il fait 0,5°C dehors à 9h ce matin là… Une mini flambée le matin à 10h30 : on a brûlé des chutes de bois (environ 1 petit seau de maçon, ça fait monter la température (trop fort) à 25 en 3/4 d’heure…).

Observations

La température est stable (dû a un habitat bien isolé avec de l’inertie – enduit terre) mais le poêle (un petit mais vieux poêle à bois de 4kW en fonte CHAPPEE qu’on m’a donné) est trop puissant : il chauffe trop vite/trop fort.

On a vraiment pas besoin de beaucoup chauffer dans l’hiver on a brûlé ~2/3 de stère de bois, et quand je dis bois c’est du bois de palette et des morceaux de charpente vermoulue – donc du très léger, peu calorique.

La masse de la paillourte (enduit terre crue, dalle terre crue…) de la maison n’a pas le temps de chauffer : la masse de la maison se réchauffe par rayonnement, hors le poêle n’a pas le temps de chauffer/rayonner qu’il faut déjà l’éteindre car l’air est déjà trop chaud (en moyenne, je dirais que le poêle est allumé à peine 1 heure / jour). Le fait d’éteindre rapidement le poêle n’est pas une bonne chose en terme d’émission de particules fines, mais le poêle n’est pas arrivé à température pour avoir un rendement correcte que nous l’éteignons car il fait trop chaud…

Pourquoi un poêle de masse ?

Avec un poêle de masse la montée en température sera plus douce, il n’y aura pas de surchauffe :

Avec un poêle de masse, les murs se réchaufferont avec le rayonnement de celui-ci, la chaleur sera mieux répartie dans l’habitat et le confort s’en trouvera bien meilleur.

Merci Agir Low-Tech pour ce travail de développement, impatient de le tester dans la paillourte 😉

Migration Plesk 18 > ISPconfig 3

Pour l’association le Retzien.fr (dont je fais parti) j’ai effectué une migration de Plesk 18 vers ISPconfig 3. Plesk avait été mis en œuvre avant mon arrivé car l’administrateur en place connaissait le produit. Mais c’est un produit payant, de plus en plus cher, et pour une association qui a du mal à avoir un équilibre financier c’était difficile à assumer. Plesk est très « beau » et user friendly mais en tant qu’administrateur système je le trouve plutôt opaque (on ne sais pas exactement ce qu’il fait, pas trop de respect des « us et coutumes » de Linux (position des fichiers de config…), ET CE N’EST PAS LIBRE !!!

ISPconfig est libre et propose un script de migration (ISPConfig Migration Toolkit) mais ne supporte pas les dernières versions de Plesk, car le chiffrement des mots de passe n’est plus compatible. Du coup j’ai dû bricoler… Ce bricolage est l’objet de cet article.

Note : ici il n’est question que de la partie mail/DNS et compte client, car c’est la seule fonctionnalité du serveur, les fonctions web n’ont pas été testées.

Installation ISPconfig + Migration Toolkit

Je ne détaille pas ici la procédure d’installation d’ISPconfig 3 et l’usage du « Migration Toolkit » qui sont déjà bien documentés, dans mon cas :

Suite à l’usage du « Migration toolkit », même si le Plesk source n’est pas supporté, je n’ai pas d’erreur mais j’ai plusieurs problèmes que je vais essayer de régler par différents scripts.

Préambules : Les scripts suivants utilisent l’API d’ISPconfig (il faut donc créer un utilisateur distant, dans Système/utilisateur distant). ils doivent donc les lancer depuis le serveur source (Plesk).

Authentification IMAP

Le problème

Il est impossible de se connecter au serveur avec les comptes IMAP. Le log dit :

Error: sql(xxxxxxx@retzien.fr,::1,<MdFia/2k3toAAAAAAAAAAAAAAAAAAAAB>): Invalid password in passdb: crypt() failed: Invalid argument

Effectivement le chiffrement en base est différent :

Mais on va s’en sortir en rusant, en effet Plesk ne crypte/ »hash » pas les mots de passe mais les chiffre :

  • Crypter / « hasher » : c’est convertir définitivement un chaîne (ici un mot de passe) en un code. Pour savoir si le mot de passe proposé pour l’authentification est bon il faut crypter / « hasher » le mot de passe et le comparer.
  • Chiffrer : c’est convertir une chaîne (le mot de passe ici) avec une clé, cette fonction est réversible, et qui détient la clé peut donc déchiffrer la chaîne (le mot de passe)
  • Plus d’info sur la différence ici

Les mots de passe dans Plesk sont donc « lisibles » pour qui possède la clé de déchiffrement (l’administrateur par exemple ou un hacker qui obtiendrait l’accès au serveur…)

Pour vous en persuader, lancez la commande ci après et vous obtiendrez un beau tableau 1er colonne « émail », 2ème « mot de passe en clair »

/usr/local/psa/admin/sbin/mail_auth_view

Mais pourquoi les mots de passes ne sont ils pas cryptés ?

Plesk propose le support de l’authentification « mot de passe chiffré ». Et cette fonctionnalité est de fait contrainte à avoir le mot de passe en clair sur le serveur car il faut pouvoir le déchiffrer.

Exemple de méthode d’authentification sous Thunderbird

ISPconfig ne supporte pas cette fonctionnalité, car qu’il considère que ce serait un trop gros trou dans la sécurité du serveur, et qu’avec le chiffrement de la connexion SSL/TLS ou START/TLS ce n’est pas nécessaire d’en remettre une couche.

Effet de bord important : si vos utilisateurs ont configurés leur client de messagerie en « mot de passe chiffré » il faudra leur faire modifier ce paramétrage (IMAP & SMTP)

De ce que je comprends, cette méthode d’authentification chiffrée avait sa place quand les serveur IMAP/SMTP ne proposait pas de chiffrement de connexion SSL/TLS ou START/TLS.

Les sources de ce que j’avance :

La solution

La solution consiste, sur le serveur Plesk à lancer le script ci-après qui :

  • Lance la commande Plesk « magique » pour voir les mots de passe déchiffrés
  • « Parse » le résultat… Se connecte à ISPconfig et change le mot de chaque boîte émail
<?php
 
/* 
 * licence Beerware
 * By David Mercereau : http://david.mercereau.info
 */
 
// Plan B : https://www.besuchet.net/2016/06/plesk-11-encrypted-hashed-password-authentication-php-on-psa-database/
 
// ISPconfig Remote Config
$CONFIG['remoteUser'] = 'retzien';
$CONFIG['remotePassword'] = 'XXXXXXXXXX';
$CONFIG['remoteSoapLocation'] = 'https://192.168.1.64:8080/remote/index.php';
$CONFIG['remoteSoapUri'] = 'https://192.168.1.64:8080/remote/';
$CONFIG['logfile'] = '/tmp/migration-email-password.log';
 
function toLog($txt, $level) {
	file_put_contents($GLOBALS['CONFIG']['logfile'],date("[j/m/y H:i:s]")." - ".$level." - $txt \r\n",FILE_APPEND);
	echo "[$level] $txt\n";
}
 
// Connexion to ISPconfig
$client = new SoapClient(null, array('location' => $CONFIG['remoteSoapLocation'],
	'uri'      => $CONFIG['remoteSoapUri'],
	'stream_context'=> stream_context_create(array('ssl'=> array('verify_peer'=>false,'verify_peer_name'=>false))),
	'trace' => 1));
 
// Login
if($session_id = $client->login($CONFIG['remoteUser'], $CONFIG['remotePassword'])) {
	toLog('Login Ok. Session ID:'.$session_id, 'info');
}
 
# Launch plesk command for auth view in plain text
exec('/usr/local/psa/admin/sbin/mail_auth_view', $out, $return);
if ($return == 0 || $out[0] == null){
	foreach ($out as $line) {
		$lineExplode = explode('|', $line);
		if (isset($lineExplode[1]) && isset($lineExplode[3])) {
			$email = str_replace(' ', '', $lineExplode[1]);
			$password = str_replace(' ', '', $lineExplode[3]);
			# Verification data
			if (filter_var($email, FILTER_VALIDATE_EMAIL) && $password != '') {				
				# mail_user_get
				try {
					$mail_user_get = $client->mail_user_get($session_id, array('email' => $email));
					if (count($mail_user_get) > 0) {
						# Update data
						$mail_user_get['password']=$password;
						$mail_user_get['move_junk']='y';
						$affected_rows = $client->mail_user_update($session_id, 0, $mail_user_get[0]['mailuser_id'], $mail_user_get);
						if ($affected_rows == 0) {
							toLog('No change for '.$email, 'error');
						} else {
							toLog('Ok for '.$email, 'info');
						}
					} else {
						toLog('email '.$email.' not present in ISPconfig', 'warn');
					}
				} catch (SoapFault $e) {
					echo $client->__getLastResponse();
					die('SOAP Error: '.$e->getMessage());
				}
			} 
		}
	}
}
 
if($client->logout($session_id)) {
	toLog('Logged out.', 'info');
}
 
?>

IMAP subscriptions

La souscription au dossier IMAP (le fait de voir ou non certains dossiers et/ou d’en cacher d’autres) n’a pas migré, donc si l’utilisateur avait ajouté un dossier IMAP, il ne le voyez plus sur le nouveau serveur, pourtant le dossier est bien là.. c’est fâcheux. Pour corriger ça, lancez ce petit script sur le Plesk (source) :

#!/bin/bash
target='root@192.168.1.64'
find  /var/qmail/mailnames/ -name subscriptions | while IFS=$'\n' read f ; do
	domain=$(echo $f | cut -d/ -f5)
	user=$(echo $f | cut -d/ -f6)
	echo ${user}@${domain}
	scp /var/qmail/mailnames/${domain}/${user}/Maildir/subscriptions ${target}:/var/vmail/${domain}/${user}/Maildir/
done

DKIM & Spam policy

Ce script ajoute une politique de spam “normal” (modifiable) et récupère les anciennes clefs DKIM générées par Plesk pour les appliquer dans ISPconfig. Ceci pour éviter d’avoir à retoucher au DNS pendant la migration (toujours à lancer depuis le Plesk) :

<?php
 
/* 
 * licence Beerware
 * By David Mercereau : http://david.mercereau.info
 */
 
// ISPconfig Remote Config
$CONFIG['remoteUser'] = 'retzien';
$CONFIG['remotePassword'] = 'XXXXXXX';
$CONFIG['remoteSoapLocation'] = 'https://192.168.1.64:8080/remote/index.php';
$CONFIG['remoteSoapUri'] = 'https://192.168.1.64:8080/remote/';
$CONFIG['logfile'] = '/tmp/migration-email-password.log';
$CONFIG['DKIM-Selector'] = 'default';
$CONFIG['policy_id'] = 5;
$CONFIG['priority'] = 5;
 
function toLog($txt, $level) {
	file_put_contents($GLOBALS['CONFIG']['logfile'],date("[j/m/y H:i:s]")." - ".$level." - $txt \r\n",FILE_APPEND);
	echo "[$level] $txt\n";
}
 
// Connexion to ISPconfig
$client = new SoapClient(null, array('location' => $CONFIG['remoteSoapLocation'],
	'uri'      => $CONFIG['remoteSoapUri'],
	'stream_context'=> stream_context_create(array('ssl'=> array('verify_peer'=>false,'verify_peer_name'=>false))),
	'trace' => 1));
 
// Login
if($session_id = $client->login($CONFIG['remoteUser'], $CONFIG['remotePassword'])) {
	toLog('Login Ok. Session ID:'.$session_id, 'info');
}
 
$mail_domain_record = $client->mail_domain_get($session_id, array('active' => 'y'));
 
foreach ($mail_domain_record as $mail_domain) {
	# DKIM
	if (is_dir('/etc/domainkeys/'.$mail_domain['domain'])) {
		$getPrivateKey=file_get_contents('/etc/domainkeys/'.$mail_domain['domain'].'/'.$CONFIG['DKIM-Selector']);
		exec('openssl rsa -in /etc/domainkeys/'.$mail_domain['domain'].'/'.$CONFIG['DKIM-Selector'].' -pubout', $out, $return);
		if ($return == 0 || $out[0] == null){
			$getPublicKey='';
			foreach ($out as $line) {
				$getPublicKey.=$line."\n";
				//~ if (!preg_match('/^---/', $line))  {
					//~ $getPublicKeyDns.=$line;
				//~ }
			}
			$mail_domain['dkim'] = 'y';
			$mail_domain['dkim_selector'] = $CONFIG['DKIM-Selector'];
			$mail_domain['dkim_private'] = $getPrivateKey;
			$mail_domain['dkim_public'] = $getPublicKey;
			$affected_rows = $client->mail_domain_update($session_id, 0, $mail_domain['domain_id'], $mail_domain);
			if ($affected_rows == 0) {
				toLog('DKIM No change for '.$mail_domain['domain']. ' already exist ?', 'error');
			} else {
				toLog('DKIM Ok for '.$mail_domain['domain'], 'info');
			}
		}
	} else {
		toLog($mail_domain['domain'].' haven\'t got dkim key on plesk', 'warn');
	}		
	# Spam Policy add in domain 
	try {
		$client_id = 1;
		$params = array(
			'server_id' => 1,
			'priority' => $CONFIG['priority'],
			'policy_id' => $CONFIG['policy_id'],
			'email' => '@'.$mail_domain['domain'],
			'fullname' => '@'.$mail_domain['domain'],
			'local' => 'Y'
		);
		$affected_rows = $client->mail_spamfilter_user_add($session_id, $client_id, $params);
		toLog('Spam policy Ok for '.$mail_domain['domain'], 'info');
	} catch (SoapFault $e) {
		toLog('Spam policy no change for '.$mail_domain['domain']. ' already exist ?', 'error');
	}
}
 
if($client->logout($session_id)) {
	toLog('Logged out.', 'info');
}
 
?>

Les mailings lists

Les mailings lists ne sont pas migrées, pourtant c’est du « Mailman 2 » des 2 côtés donc ça ne devrait pas être très compliqué.

Ce script est à lancer depuis le Plesk en mode « CLI » (ligne de commande) et vous avez quelques paramètres à modifier au début.

Le script :

  • Liste les mailings lists avec la commande /var/lib/mailman/bin/list_lists
  • Les créer dans ispconfig
  • Donne les commandes rsync pour synchroniser les données (archives, paramètres…)
 <?php
 
/* 
 * licence Beerware
 * By David Mercereau : http://david.mercereau.info
 */
 
// ISPconfig Remote Config
$CONFIG['remoteUser'] = 'retzien';
$CONFIG['remotePassword'] = 'XXXXX';
$CONFIG['remoteSoapLocation'] = 'https://192.168.1.64:8080/remote/index.php';
$CONFIG['remoteSoapUri'] = 'https://192.168.1.64:8080/remote/';
$CONFIG['logfile'] = '/tmp/migration-email-password.log';
$CONFIG['clientId'] = 3;
 
function toLog($txt, $level) {
	file_put_contents($GLOBALS['CONFIG']['logfile'],date("[j/m/y H:i:s]")." - ".$level." - $txt \r\n",FILE_APPEND);
	echo "[$level] $txt\n";
}
 
// Connexion to ISPconfig
$client = new SoapClient(null, array('location' => $CONFIG['remoteSoapLocation'],
	'uri'      => $CONFIG['remoteSoapUri'],
	'stream_context'=> stream_context_create(array('ssl'=> array('verify_peer'=>false,'verify_peer_name'=>false))),
	'trace' => 1));
 
// Login
if($session_id = $client->login($CONFIG['remoteUser'], $CONFIG['remotePassword'])) {
	toLog('Login Ok. Session ID:'.$session_id, 'info');
}

# Launch plesk command for auth view in plain text
exec('/var/lib/mailman/bin/list_lists -b', $out, $return);
if ($return == 0 || $out[0] == null){
	foreach ($out as $line) {
			unset($host_name);
			unset($owner);
		exec('/usr/lib/mailman/bin/config_list -o /tmp/'.$line.' '.$line.' ; grep ^host_name /tmp/'.$line.' | cut -d"\'" -f2', $host_name, $return);
		exec('/usr/lib/mailman/bin/config_list -o /tmp/'.$line.' '.$line.' ; grep ^owner /tmp/'.$line.' | cut -d"\'" -f2', $owner, $return);
		try {
			$params = array(
				'server_id' => 1,
				'domain' => $host_name[0],
				'listname' => $line,
				'email' => $owner[0],
				'password' => 'temp123!'
			);
			$mailinglist_id = $client->mail_mailinglist_add($session_id, $CONFIG['clientId'], $params);
			toLog('Ok for '.$line.'@'.$host_name[0]);
		} catch (SoapFault $e) {
			toLog('SOAP Error: '.$line. ' - '. $e->getMessage(), 'error');
		}
	}
}
 
if($client->logout($session_id)) {
	toLog('Logged out.', 'info');
}
 
echo "Patienteez 5min que Ispconfig est tout ajouté puis : \n";
echo "for list in \$(/var/lib/mailman/bin/list_lists -b); do\n
	rsync -az --progress  /var/lib/mailman/archives/public/\$list/ root@192.168.1.64:/var/lib/mailman/archives/public/\$list/\n
	rsync -az --progress  /var/lib/mailman/archives/private/\$list/ root@192.168.1.64:/var/lib/mailman/archives/private/\$list/\n
	rsync -az --progress  /var/lib/mailman/archives/private/\${list}.mbox root@192.168.1.64:/var/lib/mailman/archives/private/\n
	rsync -az --progress  /var/lib/mailman/lists/\$list/ root@192.168.1.64:/var/lib/mailman/lists/\$list/\n
done\n";
 
?>

En sortie le script donne quelques commandes « rsync » à exécuter par un copier / coller direct dans le terminal du serveur source (Plesk) pour synchroniser les données (archives, paramètres…)

Ensuite sur le serveur decdestination (ISPconfig) lancez la commande :

/var/lib/mailman/bin/check_perms -f

Conclusion

La migration c’est bien passée, c’est transparent pour l’utilisateur, à part le problème de « mot de passe chiffré » à « mot de passe normal », qu’il faut faire changer avant la migration de préférence.

En continuant à utiliser le site, vous acceptez l’utilisation des cookies (au chocolat) Plus d’informations

Les cookies sont utilisés à des fin de statistique de visite du blog sur une plateforme indépendante que j'héberge moi même. Les statistiques sot faites avec un logiciel libre. Aucune information n'est redistribué à google ou autre. Je suis seul autorisé à lire ces informations

Fermer