J’ai deux problèmes (en fait j’en ai plus, mais ce blog n’est pas une thérapie, c’est pour partager)

Premier problème, sur mon serveur vps chez OVH (Debian 8), j’ai la désagréable sensation, pour ne pas dire certitude que la fonction mail de php ne fonctionne pas.

Que faire ?

Installer un serveur mail simple et efficace. Exim4 est notre homme. Mais il n’est pas configurer. Voir pas installé.

On se dirige vers la première ligne : Distribution directe par SMTP (site Internet)

Et dans Nom de courrier du système il faudra lui mettre votre nom de domaine, par ex : monsite.com
Ainsi que dans Autres destinations dont le courrier doit être accepté
J’ai laisser les autres options par défaut.

C’est le moment de vérifier si ça marche

Vous pouvez faire un test avec un fichier php sur votre serveur :

Le mail est envoyé, victoire !
Il est dans le spam… tout n’est pas perdu.

 

Second problème, gmail classe inévitablement le courrier dans les spams. Même si l’adresse mail du serveur est dans mes contacts.

En regardant le détail des mails, j’ai vu que l’IP v6 était utilisée. Ce n’est pas un problème en soit.
Si ce n’est que le SPF en qui Gmail fait confiance est paramétré sur l’IP v4 sur mon serveur OVH et que je ne peux pas le faire pointer vers l’IP v6.

Solution, demander à Exim4 d’envoyer en IP v4 en ajoutant à la fin de /etc/exim4/exim4.conf.template ceci :

et relancer le service :

 

Troisième problème, gmail ne classe plus le courrier dans les spams. Victoire ! Mais affiche un point d’interrogation à côté de mon nom de domaine quand j’affiche le message avec ce texte quand je le survol :

« Gmail n’a pas pu confirmer que ce message a bien été envoyé par monsite.com (et non par un spammeur). »

Ce tuto s’arrête ici. L’objectif premier est rempli, le smtp fonctionne et les mails ne partent pas dans les spam.

Pour résoudre ce dernier problème il faut générer deux clés RSA, une publique et une privée, mettre la clé publique dans les DNS… l’autre dans le mail. Beaucoup de manipulations, n’en n’ayant pas le besoin dans l’immédiat je vais m’en passer.

Le titre de l’article est mensonger. Je ne vais pas détailler, la procédure pour installer Let’s Encrypt, car c’est très bien fait sur cette page :

https://www.human-geek.com/installer-lets-encrypt-sur-un-vps-ovh/

Rapide résumé (pour comprendre allez voir le tuto sur human-geek.com)

Et arrivé à ce point vous devriez avoir le choix du ou des domaines pour activer le https… oui mais pas chez moi, rien du tout, il me propose de les ajouter à la main et après ça plante !

PAS DE PANIQUE

Voici les 4 erreurs que j’ai rencontré en installant Let’s Encrypt:

 

1 . Le port 443 doit être libre

Si vous avez configuré votre accès SSH sur le port 443… et bien retour sur le port 22 obligatoire.

Le 443 doit être disponible sous peine de ne pas comprendre pourquoi le script bug.

 

2 . Let’s Encrypt ne trouve pas les noms de domaine

Le virtual host d’Apache est en cause, même ma super config plante à ce stade.

Les régles à respecter pour que ça marche :

  1. Un seul nom de domaine par fichier de configuration /etc/apache2/sites-available/
  2. Pour voir votre nom de domaine proposé avec et sans le www il faut commencé la config ainsi :

    Dans mon tuto sur la configuration d’un virtual host avec gestion automatique des sous domaines, j’ai besoin de cette ligne :

    Aucun soucis, les ServerAlias sont cumulables, donc :

Vous pouvez maintenant relancer le script :

Et reprendre le tuto sur human-geek.com

En cas de pépins, revenez ici.

 

3 . Firefox m’affiche un avertissement concernant du contenu mixte et bloque certains éléments

Comme détaillé sur la page officielle : Le blocage du contenu mixte avec Firefox

Simple, il y a dans votre code source au moins un lien en http:// au lieu de https://

Une bibliothèque javascript importé depuis un serveur ou comme moi cette balise :

Balise qui réglé le problème d’arborescence factise de l’url rewriting.

Il faut tout simplement ajouter un s à la fin du http :

Et Firefox affichera votre page https sans soucis !

 

4 . C’est bien joli mon gars, mais ta super config de la mort ne fonctionne plus

Crotte, vous vous souvenez du tuto : VirtualHost et nom de domaines sur un VPS OVH, ben ça déconne à plein gaz maintenant !

La raison, Let’s Encrypt ajoute quelques lignes dans vos virtual host dans /etc/apache2/sites-available/

A la toute fin, juste avant </VirtualHost> , vous pourrez voir ceci :

Sauf que pour la peine nos règles de ré-écriture avant sont ignorées, il faut donc déplacer les lignes ci-dessus juste en dessous de RewriteEngine on, exemple :

 

Si vous en avez plein le dos de taper 127.0.0.1 ou localhost dans votre navigateur. Une solution simple et rapide existe.

En éditant /etc/hosts sous linux :

Et si vous voulez faire cohabiter d’autres domaines et sous domaines, ajoutez en plus :

Tous pointent vers 127.0.0.1, mais alors comment ça peut marcher tout ça ?

Simplement en utilisant les hôtes vituels (virtualhost) de votre serveur Apache, j’ai tout bien détaillé dans ce tuto : VirtualHost et nom de domaines sur un VPS OVH (chapitre 2 et 3 uniquement)

C’est pas cool ça ?

Petite astuce, si après installation de PHPmyAdmin une belle page blanche s’affiche sans aucune justification.

C’est probablement l’absence de php-gettext qui permet d’internationaliser un site en php.

A savoir : php-gettext n’est pas inclus dans le paquet lamp-server^

 

plankCar personnellement, j’estime que la configuration d’un dock se fait une seule fois, j’aime bien pouvoir retirer l’icône de préférences (l’ancre de bateau) oui je sais, c’est une lubie, j’assume. A la base, j’utilise Plank, mais l’effet miroir sous les icônes dans Docky m’a converti. Voici comment faire pour l’un comme pour l’autre.

Testé sous Debian (LMDE 2) et sous Ubuntu Mate 16.04.

 

Plank

version 0.11.1

Si dconf-editor n’est pas installé.

Tapez dconf-editor dans le terminal.

Naviguez vers /net/launchpad/plank/docks/dock1

Ou faire une recherche Ctrl+F pour trouver show-dock-item

Activer la clé show-dock-item, relancer Plank et l’icône ne sera plus présente.

 

Docky

version 2.2.0

Si gconf-editor n’est pas installé.

Tapez gconf-editor dans le terminal.

Naviguez vers /apps/docky-2/Docky/Items/DockyItem

Si la clé ShowDockyItem n’existe pas, la créer (clic droit en dessous des autres clés de DockItem > ‘Nouvelle clé…’)

Renseigner de cette façon :

Capture du 2016-06-28 13:29:30Relancer Docky, et c’est tout bon !

Tuto pour serveur Apache / Debian 8

 

1 . Installation

Sélectionner apache2
Répondre non pour dbconfig-common

Supprimer le dossier d’installation :

Redémarrer apache :

2 . Accèder à phpMyAdmin

Pour ajouter le lien phpmyadmin sans créer de lien symbolique :

3 . Sécurité

Modifier l’adresse d’accès http://localhost/phpmyadmin par une autre comme http://localhost/admin-pma

Changer l’authentification pour une authentification http :

Pour limiter l’accès à une IP (statique), de nouveau dans le fichier /etc/phpmyadmin/apache.conf s’inspirer de :

 

Cet article est particulièrement intéressant pour les petites dotation en RAM comme le Raspberry Pi.
Car oui, 1Go en 2016 c’est tout petit. Alors pour votre vieux netbook ou votre framboise, zRAM va vous aider.

Car zRAM (anciennement compcache) va compresser votre RAM et gérer une zone de SWAP dans la RAM. Il y a une petite perte de temps pour la compression qu’il faut relativiser avec le temps perdu en lecture/écriture d’une zone de SWAP classique sur un disque dur ou une clé usb (en usb 2 pour le pi)

J’ai testé sur le Pi 3 avec Ubuntu Mate :

  1. Pas de SWAP, (par défaut) petit freeze avec plusieurs logiciels lancés
  2. SWAP sur clé USB, l’écran ne freeze plus
  3. Zram, l’écran ne freeze plus et l’on gagne un peu plus en réactivité

La solution zRAM est pour moi de loin la meilleure, car donnant plus de souffle. Le premier lancement reste un peu long (identique à la distribution sans swap) par contre les lancements suivants dans la même session sont plus rapides.

Sous Ubuntu

Se fier à l’article de la doc Ubuntu : https://doc.ubuntu-fr.org/zram
Dont voici les actions à réaliser :

Sous Debian

Se fier au wiki Debian : https://wiki.debian.org/ZRam
Dont voici les actions à réaliser :

y coller :

et enfin :

Pour rendre exécutable le fichier, l’ajouter au boot et redémarrer pour la prise d’effet.

Faire du tri

Quand on a un Raspberry Pi :

Attention ! Raspbian possède un fichier de SWAP sur la carte SD, c’est le moment de le désactiver, la durée de vie de votre carte SD s’en fera certainement ressentir.

Voir l’article sur Framboise 314 pour plus de détails : http://www.framboise314.fr/et-si-on-se-passait-du-swap/

Quand on n’a pas un Raspberry Pi :

Si vous avez un ordinateur autre que le Raspberry Pi, et si vous avez une zone de SWAP sur votre disque dur, alors c’est le moment de la désactiver et de la supprimer depuis Gparted par exemple.

SWAP sur USB (méthode alternative)

Si jamais vous voulez tester le SWAP sur USB, munissez vous d’une vieille clé, passage sous Gparted pour lui coller une partition de type « linux-swap » puis de trouver son petit nom avec la commande :

Puis en partant du principe que votre swap usb se trouve en /dev/sda1 :

Attention, ça n’a d’effet que le temps de la session, à relancer à chaque démarrage donc.

Dernière astuce pour la route

Transférer les fichiers de log en RAM pour allonger la durée de vie de votre carte SD : http://www.magdiblog.fr/divers/comment-prolonger-la-duree-de-vie-de-vos-cartes-sd-sur-raspberry-pi/

Si vous avez une erreur de ce type :

en voulant faire une application Python + Glade + Gtk c’est certainement que le début de votre fichier python ressemble à cela :

alors qu’il devrait ressembler à ceci :

Et il faut ajouter une majuscule à toutes les références à gtk dans ce même fichier Python : « gtk.main() » devient « Gtk.main() »

 

Il faudra installer gi :

Et hop, le tour et joué !

 

Pour ne pas rester bête !?

Glade (l’éditeur de fenêtres) veut utiliser GTK+ version 3.xx.
Python charge GTK+ version 2.xx quand vous utilisez pygtk
Alors que GObject fait référence à la version 3.xx

Cet article va vous permettre d’envoyer des mails depuis le terminal ou avec la fonction mail de php en utilisant le smtp de gmail.

C’est à dire que les mails seront envoyés par le biais de votre adresse perso gmail. Que ce soit pour être alerté d’une présence (avec une photo en pièce jointe), des mises à jours de sécurité à appliquer ou que sais-je encore…

 

Créer un mot de passe spécifique

Rendez-vous sur la page Mots de passe d’application de google et renseigner comme ceci :
Sélectionner une application -> Messagerie
Sélectionner un appareil -> Autre (nom personnalisé) -> Raspberry Pi

Vous obtiendrez un mot de passe spécifique qui a l’avantage de pouvoir être révoqué en cas de doute sur la sécurité de votre Raspberry Pi et de pouvoir envoyer des mails sans avoir à effectuer l’authentification en deux étapes.

Installer les packages

puis

Choisir la première ligne « Distribution directe par SMTP (site Internet) »
Distribution directe par SMTP (site Internet) : RaspberryPi
Liste d’adresses IP : 127.0.0.1 ; ::1_
Autres destinations : RaspberryPi
RaspberryPi : (laisser vide)
Machines à relayer : (laisser vide)
Faut-il minimiser les requêtes DNS : Non
Format « mbox » dans /var/mail
Faut-il séparer la configuration dans plusieurs fichiers ? Non
Destinataire des courriers de « root » et « postmaster » : (laisser vide)

 

ajouter les lignes à la fin du fichier en modifiant votre adresse et votre mot de passe (celui générer au début du tuto)

Il faut relancer Exim4 :

 

Courage on touche au bout :

ssmtp pour permettre l’utilisation du smtp de gmail
mailutils & mpak pour envoyer des mails en shell

Supprimer les deux ligne :

Et ajouter à la fin (en remplaçant le nom et le mot de passe une fois de plus)

 

Cron et d’autres services vont certainement vouloir envoyer des mails, pour qu’ils soient bien routés, il faut ajouter ces deux lignes à la fin du fichier /etc/aliases :

 

Tester

Avec php mail()

 

 

Avec mailutils dans le terminal :

Taper le texte, et pour envoyer il faut taper un point + [entrée] sur une nouvelle ligne.

 

Vous avez des tâches cron ?

Désormais, votre cron daemon va vous envoyer des alertes à chaque exécution d’une tâche. Voici comment paramétrer les alertes cron :

J’ai depuis deux ans, un Raspberry Pi à la maison pour écouter des radios par internet avec MPD et MPC.

Depuis peu, j’ai un haut parleur Bluetooth, qui se connecte au Raspberry par le biais d’un dongle usb de ce type.  Le tout fonctionne bien, mais pour éviter de planter le service MPD il faut arrêter la lecture avant d’éteindre le haut parleur. Dans le cas contraire, il faut se connecter au Raspberry en SSH et lui coller :

C’est soit ça, soit un redémarrage du Pi.

Pour éviter ceci, j’utilise UDEV qui est déjà présent sur votre distribution car c’est un gestionnaire de périphérique sous linux.

Nous allons lui dire d’exécuter un script quand notre haut parleur se connecte et un autre script à la déconnexion.

et ajouter les deux lignes :

la première ligne va lancer le script /usr/lib/udev/bluetooth_add à la connexion (ACTION== »add »)

et la deuxième ligne va lancer le script /usr/lib/udev/bluetooth_remove à la déconnexion (ACTION== »remove »)

Reste à créer les scripts :

Contenu de /usr/lib/udev/bluetooth_add :

Contenu de /usr/lib/udev/bluetooth_remove :

Problème réglé.

 
Petit bonus pour les heureux parents bidouilleurs qui pour des raisons absconses aux yeux de certains ne souhaitent pas lancer la musique trop forte quand leurs enfants dorment (enfin !)

Voici comment modifier le script de connexion /usr/lib/udev/bluetooth_add :

Volume à 70 le jour entre 8h00 et 21h00
Volume à 30 la nuit entre 21h00 et  8h00

Si vous avez aimé, si cela vous a aidé, ou si vous avez un petit script, merci de laisser un commentaire 😉