emailPoubelle.php est donc une page qu’il faut typiquement inclure dans votre site. Elle permet d’administrer des adresses email (des alias plus précisément) jetable ou temporaire. Ces adresses peuvent avoir une durée de vie limitée ou non. Elles peuvent être désactivé (>/dev/null) à tout moment.
Le (petit) projet
Le plus gros changement sur version 1.0 est l’utilisation d’une base de données (sqlite, postgresql, mysql.. au choix, c’est du PDO). Mais vous pouvez continuer à utiliser la version 0.3 qui est en full plain text
Le script dépend de Postfix, un service web avec PHP, php-pdo et (en option) de la lib pear Net_DNS2
Voici une petite étagère réalisé rapidement sans clou ni vis.
Il vous faut au minimum 2 palettes :
Une que vous couperez simplement en 2 dans le sens inverse des planches. (appelé palette de support)
Une autre (ou plus) pour faire les étagères
Les planches des étagées reposes simplement sur les planches horizontales de la palette support.
Les palettes de support ne peuvent pas partir vers l’extérieur, car elle est bloquée par le mur & le bar. Afin qu’elle ne puisse pas partir vers l’intérieur il convient d’usiner une ou deux planches d’étagères afin de maintenir les support écarté (visible près du ballet sur les photos suivantes)
Afin de réaliser des maintenances sur mon service web (ou les services attenant tel que Mysql) j’ai mis en place un petit mot d’excuse qui dit en substance : « maintenance en cours, merci de repasser plus tard ». C’est mieux que « La connexion a échoué » ou « Can’t Connect to MySQL Server on nian nian nian » non ?
La configuration de prod :
Apache sur le port 80
La configuration de maintenance :
Apache sur le port 80 (le même)
Lighttpd sur le port 81
Iptables redirige le trafic arrivant sur le port 80 vers le port 81 en PREROUTING sauf pour mon IP (ça permet donc de bricoler)
Installation de lighttpd
Apeuté, et ayé :
aptitude -y install lighttpd
update-rc.d lighttpd remove
mkdir /var/www/maintenance
echo "Serveur en maintenance" > /var/www/maintenance/index.html # Vous pouvez faire une belle page html c'est mieux !
Il est certainement possible de faire plus propre sur ce point. Actuellement je gère le message dans le index.html que je met dans le error404. Des redirection 302 quelque soit l’URL serait à envisager.
Maintenance On/Off
Pour se mettre en mode maintenance :
# Démarrage du serveur d'excuse
service lighttpd start
# Redirection du port 80 vers 81 sauf pour mon IP
iptables -A INPUT -p tcp --dport 81 -j ACCEPT
iptables -t nat -A PREROUTING \! -s ${IPMAISONDEMOI} -p tcp --dport 80 -j DNAT --to-destination ${IPDUSERVEUR}:81
iptables -t nat -A POSTROUTING -j MASQUERADE
Et pour désactiver le mode maintenance :
# Si vous n'avez pas d'autres règles (c'est mal) :
iptables -F
iptables -t nat -F
# Sinon redémarrer votre service iptables
# Lighttpd n'est plus utile
service lighttpd stop
Des dires de Wikipedia : « Sieve est un langage de filtrage du courrier électronique. Il est normalisé dans le RFC 5228. Sieve permet de filtrer sur les en-têtes d’un message qui suit le format du RFC 5322, c’est-à-dire un message Internet typique. »
Sieve c’est très pratique car le filtrage du courrier est effectué au niveau du serveur dès la réception de l’email. Ce qui est presque indispensable quand on utilise plusieurs clients de messagerie (web &/ou desktop). Je vais donc utiliser Managesieve (qui est la partie serveur du protocole) pour Dovecot (projet Pigeonhole).
Actuellement le panel ISPconfig me permet d’éditer les filtres Sieve mais n’utilise pas Managesieve. ISPconfig stock en base (table mail_user_filter) et écrase le fichier à chaque modification.
Je ne souhaite plus passer par ISPconfig pour modifier mes filtres, mais directement par Horde (via Ingo) ou Roundcube (plugin) ou encore par thunderbird (plugin) selon mes besoins.
Installation de Managesieve
Rien de plus simple :
aptitude install dovecot-managesieved
Modifier le fichier /etc/dovecot/dovecot.conf :
< protocols = imap
> protocols = imap sieve
Puis redémarrer le service, le port 4190 doit ensuite être à l’écoute :
Il vous suffit de modifier le fichier ingo/config/backends.php de votre instance horde de la façon suivante :
[...]
/* IMAP Example */
$backends['imap'] = array(
// ENABLED by default
< 'disabled' => false,
> 'disabled' => true,
'transport' => array(
Ingo::RULE_ALL => array(
'driver' => 'null',
'params' => array(),
),
),
[...]
$backends['sieve'] = array(
// Disabled by default
< 'disabled' => true,
> 'disabled' => false,
'transport' => array(
Ingo::RULE_ALL => array(
'driver' => 'timsieved',
'params' => array(
// Hostname of the timsieved server
'hostspec' => 'localhost',
// Login type of the server
'logintype' => 'PLAIN',
// Enable/disable TLS encryption
'usetls' => false,
// Port number of the timsieved server
'port' => 4190,
// Name of the sieve script
< 'scriptname' => 'ingo',
> 'scriptname' => 'filtres',
// Enable debugging. The sieve protocol communication is logged
[...]
Ne faites (peut être) pas ça chez vous
En effet ça ne s’avère pas être forcément la meilleure des solutions :
Il n’est apparemment pas possible d’importer des scripts existants.
Plus embêtant il s’avère que Horde fonctionne presque de la même façon qu’ISPconfig. A savoir qu’il stock en base les filtres et écrase le script sieve (via managesieve quand même) Ce qui me condamne à n’utilise qu’une interface (horde) pour modifier mes filtres :’-(
Bon je m’en contente, il est toujours plus agréable de modifier ses filtres via son webmail (horde) que via le panel ISPconfig.
« Si c’est gratuit, c’est vous le produit ! » c’est le titre d’une émission très intéressante de « là-bas si j’y suis » (ré-écouter) qui nous rappel à quel point nos données personnels sont une source de revenu phénoménale pour quelques grosses entreprises de marketing… Ma position personnelle est claire (d’autant plus avec le plugin wordpress d’incitation à l’anti-pub) : je refuse, tant que faire se peut, qu’on collecte des informations sur ma personne à l’insu de mon plein gré. (dédicace Richard V.)
J’avais rédigé un article pour venter les mérites de Ghostery qui, venant s’ajouter à un anti-pub classique, me satisfaisait amplement. Il bloquait réseau sociaux, statistique (type Analytics)… c’était parfait ! Mais au détour d’un surf sur la toile du web (comme disent les jeunes) je suis tombé sur un article de surfezcouvert.net qui dit ceci :
« Ghostery” […] serait détenu par Evidon une entreprise qui… vend nos données personnelles aux publicitaires. »
je contacte l’auteur aussitôt pour essayer de connaître la source de cette information, mais je n’obtiens pas de réponse. J’ai donc fouiné… et voici quelques sources plus ou moins intéressantes sur le sujet:
Donc oui Ghostery appartient à la société Evidon dont l’activité est de faire du « Online marketing intelligence, web analytics privacy »… un dessin ?
Le développement de Ghostery et sa base d’utilisateurs dévoués nous permettent de révéler la technologie marketing invisible sur le Web de façon plus exhaustive et unique que jamais auparavant, » a déclaré Scott Meyer, PDG d’Evidon. « Un panel de recherche quantitative courant peur comprendre 50 000 utilisateurs. Cependant, notre panel GhostRank compte plus de 7,8 millions d’utilisateurs qui nous permettent d’indexer l’activité de plus de 26 millions de domaines chaque jour, dans le monde entier. Les données anonymes issues de notre panel révèlent un éclairage précieux qui permet aux publicitaires et aux éditeurs d’affiner leur prise de décisions de partenariats dans l’écosystème numérique. » [Sources bfmtv.com]
Toutefois il semblerait* que seul la fonction GhostRank (qui n’est pas -encore- activé par défaut) envoie des données chez Exidon.
* « il semblerait » car je n’ai pas fait la démarché de décompresser et d’analyser le code de Ghostery. Ceci dit si quelqu’un le fait qu’il n’hésite pas à en faire part !
Ghostery serait donc acceptable. Mais plus pour moi, car en plus de ne pas être libre, un doute plane… sans compter qu’on ne sait pas ce qu’ils feront dans la prochaine mise à jour. Il faut trouver une autre solution.
Plan B : Protection par DNS
Il y a un paradoxe à protéger sa vie privée en fessant mentir le DNS non ? En tout cas pour un groupe de machine ça reste une solution remarquable. C’est suite à un commentaire que j’ai découvert adsuck. Adsuck est un petit service DNS qui bloque les méchants…)
Mais Adsuck, en plus d’être pénible à installer et à faire fonctionner sous linux, ne s’avère pas optimisé donc fait grandement ralentir mon surf. A ajouter à cela le fait que le projet ne semble pas très actif.
Mais en fouillant pour comprendre le fonctionnement d’Adsuck j’ai découvert un « service » qui fournis des fichiers hosts de nom de domaine méchant. Il y a plein de service existant de ce type, celui qu’utilise Adsuck s’appelle winhelp2002.mvps.org, il semble actif, je teste !
Plan C : winhelp2002.mvps.org
On télécharge le fichier hosts fourni et le met à la place du notre. Cette manipulation peut être facilement automatisée tous les jours (cron.daily) avec un petit script :
Ce qui me plaisait dans Adsuck c’était l’aspect intégration avec le service DNS et donc la possibilité de le mutualiser… Du coup j’ai scripté pour transformer le fichier hosts de winhelp2002.mvps.org en zone DNS bind9 :
#!/bin/bash
set -eu
HOSTSURL="http://winhelp2002.mvps.org/hosts.txt"
NAMEDCONFADS="/etc/bind/named.conf.ads"
BLOCKEDZONE="/etc/bind/blockeddomain.hosts"
FICTMP=`tempfile`
ERRORLOG=`tempfile`
# Email pour les erreurs (0 pour désactiver
EMAIL=0
# Log d'erreur
exec 2> ${ERRORLOG}
ionice -c3 -p$$ &>/dev/null
renice -n 19 -p $$ &>/dev/null
function cleanup {
if [ "`stat --format %s ${ERRORLOG}`" -ne "0" ] && [ "$EMAIL" != "0" ] ; then
cat ${ERRORLOG} | mail -s "$0 - Log error" ${EMAIL}
else
cat ${ERRORLOG}
fi
rm ${ERRORLOG}
}
trap cleanup EXIT
# téléchargement du fichier hosts
wget "${HOSTSURL}" -O ${FICTMP} &>/dev/null
# Suppression des commentaires
grep -v '^#' ${FICTMP} |
# Suppression des 6 premières lignes inutiles
tail -n +6 |
# On retir les sauts de ligne mac
sed 's/\x0D$//' |
# La syntaxe bind
awk -v blockzone=${BLOCKEDZONE} ' { printf "zone \"%s\" {type master; file \"%s\";};\n" ,$2,blockzone }' > ${NAMEDCONFADS}
/usr/sbin/named-checkconf ${NAMEDCONFADS}
/usr/sbin/service bind9 reload
rm ${FICTMP}
Il ne reste plus qu’à inclure le fichier /etc/bind/named.conf.ads dans le named.conf :
> include "/etc/bind/named.conf.ads";
Après quelques jours d’utilisation ça ne s’avère pas très probant, car ça bloque finalement moins que les machin’block en extension navigateur (Trueblock, Adblock Edge, *block)
EDIT 24/02/2015 : ‘Il n’est plus nécessaire d’utiliser cloudfiles comme backend pour duplicity. À la place, il faut utiliser un backend spécial hubic intégré à duplicity récemment »voir le commentaire de blankoworld
EDIT 02/2015 : suppression du « DeprecationWarning » dans le log.
Mon ADSL est depuis peut chez OVH. De ce fait je bénéficie d’un compte hubiC avec un espace de stockage d’1To. Quelle aubaine pour des sauvegardes ! Mais bon donner mes mails, mes sites, mes documents administratifs à un tiers… bof bof. Il faudrait un minimum de chiffrage !
python-cloudfiles-hubic est nécessaire car duplicity n’intègre pas nativement le service cloud « HubiC » pour une sombre histoire de protocole d’authentification non standard de la part d’OVH (détail par l’auteur)
aptitude install python-setuptools git
cd /usr/src
git clone https://github.com/Gu1/python-cloudfiles-hubic.git
cd python-cloudfiles-hubic
python setup.py install
Utilisation
Dans vos paramètre sur hubic.com dans votre menu « Vos application » il va falloir ajouter une application :
Nom : cequevousvoulez
Domaine de redirection : http://localhost/
Quand l’application est créer récupérer le « client id » ainsi que le « client secret » dans l’interface
Quelques petits tests pour la prise en main :
# Désactiver le bash_history (c'est pénible avec les mots de passes)
unset HISTFILE
# Les variables
export CLOUDFILES_USERNAME=toto@toujours.lui
export CLOUDFILES_APIKEY=je.vais.pas.vous.donner.le.mot.de.passe.de.toto
# CLOUDFILES_AUTHURL="hubic|client id|client secret|http://localhost/"
export CLOUDFILES_AUTHURL="hubic|api_hubic_XXXX|YYYYY|http://localhost/"
# Sauvegarde
duplicity /root cf+http://default
# Observer l'état
duplicity collection-status cf+http://default
# Liste les fichiers distants
duplicity list-current-files cf+http://default
# Test la restauration d'un fichier
duplicity --file-to-restore .bash_alias cf+http://default /tmp/bash_alias_recup
Rendez-vous ensuite dans votre interface hubiC. Et là normalement il y a plein de fichier duplicity-BLABLA-blabla.bla ! On supprime tout ! (c’était juste pour les tests)
Il ne semble pas possible d’écrire dans un sous répertoire. Mais, comme je l’ai signalé dans mon commentaire, il semble possible d’écrire dans un autre « container » sur hubiC (autre que default). Il ne sera visible qu’après modification de l’URL. Exemple si vous avez écrit dans le conteneur backup rendez vous sur l’URL : https://hubic.com/home/browser/#backup
Le script
Voici mon script :
#!/bin/bash
###################################
## Backup sur HubiC avec duplicity
# Script sous licence BEERWARE
# Version 0.4.1 02/2015
###################################
set -eu
##### Paramètres
# Utilisateur Hubic
HUBICUSER="leuserdevotrehubic"
# Mot de passe HubiC
HUBICPASSWORD="lemotdepassedevotrehubic"
# Application client id Hubic
HUBICAPPID="api_hubic_XXXXX"
# Application client secret Hubic
HUBICAPPSECRET="YYYYYY"
# Application domaine de redirection Hubic
HUBICAPPURLREDIRECT="http://localhost/"
# Liste à sauvegarder (voir le man duplicity avec le filelist)
DUPLICITYFILELIST="/etc/backup-`hostname`.filelist"
# Passphrase pour le chiffrement
PASSPHRASE="VotrePassPhraseDeOufQueYaQueVousEtVousSeulQuiSavez:-p"
# Fréquence des sauvegardes complètes
FULLIFOLDERTHAN="1W"
# Rétention des sauvegardes
RETENTION="2M"
# Log d'erreur
LOGERROR="/var/tmp/backup-hubic-error.log"
# Bin de duplicity
DUPLICITY_BIN="/usr/bin/duplicity"
# Email pour les erreurs (0 pour désactiver)
EMAIL="toto@mondomaine.com"
# Envoyer un rapport par email sur l'état des backup
RAPPORT=1
# Log d'erreur
exec 2> ${LOGERROR}
##### Début du script
function cleanup {
echo "exit..."
unset CLOUDFILES_USERNAME
unset CLOUDFILES_APIKEY
unset PASSPHRASE
grep -v "has been deprecated" ${LOGERROR} > ${LOGERROR}.tmp
mv ${LOGERROR}.tmp ${LOGERROR}
if [ "`stat --format %s ${LOGERROR}`" != "0" ] && [ "$EMAIL" != "0" ] ; then
cat ${LOGERROR} | mail -s "$0 - Error" ${EMAIL}
fi
}
trap cleanup EXIT
# Gentil avec le système
ionice -c3 -p$$ &>/dev/null
renice -n 19 -p $$ &>/dev/null
if ! [ -f ${DUPLICITYFILELIST} ] ; then
echo "Aucun fichier filelist : ${DUPLICITYFILELIST}"
exit 1
fi
export CLOUDFILES_USERNAME=${HUBICUSER}
export CLOUDFILES_APIKEY=${HUBICPASSWORD}
export CLOUDFILES_AUTHURL="hubic|${HUBICAPPID}|${HUBICAPPSECRET}|${HUBICAPPURLREDIRECT}"
export PASSPHRASE
# Backup
${DUPLICITY_BIN} --full-if-older-than ${FULLIFOLDERTHAN} / cf+http://default --include-globbing-filelist ${DUPLICITYFILELIST} --exclude '**'
# Suppression des vieux backups
${DUPLICITY_BIN} remove-older-than ${RETENTION} cf+http://default --force
# Rapport sur le backup
if [ "$RAPPORT" != "0" ] && [ "$EMAIL" != "0" ] ; then
${DUPLICITY_BIN} collection-status cf+http://default | mail -s "$0 - collection-status" ${EMAIL}
fi
unset CLOUDFILES_USERNAME
unset CLOUDFILES_APIKEY
unset PASSPHRASE
exit 0
A noter que mes bases de données sont dumpées à plat de façon indépendante du script de backup distant (par mysql_dump.sh)
Attention : les fichiers et répertoires à exclure doivent apparaître avant l’inclusion d’un répertoire parent. En effet, duplicity s’arrête à la première règle qui matche un chemin donné pour déterminer s’il doit l’inclure ou l’exclure. (sources)
Au mois d’août dernier, dans le cadre d’un DIF j’ai suivi une formation chez André de Bouter de (lamaisonenpaille.com) sur les maison en paille de type Nebraska. Formation très intéressante et enrichissante. André, le formateur, est une pointure en construction paille. Il a du recule (depuis 1998) et de multiple expérience à travers le monde…
Au menu de la formation : la paille, les murs, la lisse, les enduits en terre, les ouvertures, la peinture à l’argile, la chaux, les adobes, le torchis, les sols en terre…
Si la technique nebraska ne vous dit rien, je vous suggère cette petite vidéo :
Notes de formations
Je partage mes notes de formation. C’est une prise de note rapide, avec beaucoup de manques, certainement des bêtises :
Mise à jour : A noter une belle contribution de Thierry qui a commenté mes notes de l’époque. Voici son document, lisez le, c’est pertinent !
Conclusion personnelle
La technique du nebraska est d’une fausse simplicité, et les contraintes qu’elle engendre pour de gros bâtis (type maison) la rendent peu viables.
Pour protéger la paille de la pluie la toiture aurait besoin d’être mise avant toute chose ce qui est possible en la posant sur de gros poteaux de bois (par exemple).
Les façades très exposées à la pluie ont besoin d’un bardage bois (c’est le plus résistant) du coup pourquoi ne pas prendre appui sur celui ci ? Du coup on revient à une ossature bois…
Pour le moment le poteau poutre me semble le plus simple pour bâtir une maison pour moi, les compétences du charpentier sont par contre indispensables mais elles nous permettent :
d’être hors d’eau pour les murs en pailles ;
d’avoir une continuité possible dans le mur en paille (pour les enduits et les ponts thermiques c’est mieux) – dans le cas ou les poteaux sont à l’intérieur de la maison..
de pouvoir envisagé un étage plus facilement ;
Ceci dit, pour réaliser un bâti de ~30 m², je choisirai sans hésiter la technique de la paille porteuse.
Le gros point noir de la construction paille : l’eau.
Ma grosse interrogation : la VMC, André la préconise mais d’autres sons de cloche ont été émis jusqu’à mes oreilles, je reste toujours dubitatif… Je pense passer la tuyauterie pour la VMC sans l’acheter dans un premier temps et effectuer des mesures de contrôle de la qualité de l’air & d’envisager l’achat d’une VMC si besoin…
Mon projet en l’état de mes connaissances
Pour la maison cela sera du poteau poutre accompagné par un charpentier. André nous a livré une bonne technique qui m’a séduit particulièrement : Mettre les poteaux à l’intérieur du bâti & entre le mur de paille et le poteau mettre des panneaux de fibre de bois / liège / fermacell ce qui a pour intérêt de ne pas créer de pont thermique et de pouvoir faire mourir l’enduit sur le panneau de fibres sans être obligé de passer de l’enduit sur le poteau (ce qui ne fonctionne pas). La lisse est solidaire du poteau.
Ce choix ouvre la possibilité de comble aménageable (charpente voir lire « petite botte de paille » p 155) pour de futures chambres pour de futurs enfants.
Du coup ça nous ferait une surface au sol plutôt moyenne ~70m².
La cave est partiellement creusée par l’extraction de la terre nécessaire au enduit / cloisons… cette cave serait sous le garage qui ne serait au début peut être qu’un préau & monté par la suite.
Des cloisons en adobe au RDC donne une bonne isolation acoustique mais lourdes pour l’étage. Le torchis léger banché est donc à envisager pour l’étage.
Évidement tous les murs seront en paille & enduit de terre, avec de la chaux pour l’extérieur. Peut être un bardage pour la face la plus exposée & de toute façon de grands débords de toit.
Comme disant André : « la façade extérieure on la fait pour les voisins… »
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