Désactiver AHBL dans spamassassinHow to disable AHBL in spamassassin
Recently, I noticed that more and more e-mails were classified as SPAM by spamassassin on my mail server, including the ones from my
beloved husband (well, honestly, some of those were actually SPAM but that’s a private story…). Looking at the source of the messages, I found out that the criterion DNS_FROM_AHBL_RHSBL always scored out to a large value. The explanation is here: AHBL has shut down! Then, the solution was to disable AHBL filter from spamassassin by editing the file /etc/spamassassin/local.cf
and adding the following line:
score DNS_FROM_AHBL_RHSBL 0
Finally, spamassassin daemon must be reloaded:
/etc/init.d/spamassassin reload
More about installing spamassassin on your web server: here.
Support USB 1/2 dans VirtualBoxUSB 1&2 support in VirtualBox
Santa Claus offered me a
garmin device (Garmin Edge Touring) for Xmas, which is a good idea for my next mountain bike tours but is also a pain in the ass for linux users. Actually, Garmin has lately switched from a browser plugin (garmin connector) which was available for linux users (at this page or through the ubuntu package garmin-plugin
) to an application called garmin express that has no linux version.
Even though that’s the last solution I wanted to use, I chose to use my Windows VM (Windows 7, 64bits, installed with VirtualBox; 64bits Windows installation can be a bit tricky with VirtualBox but is explained in this post). For that, I needed to use USB support in VirtualBox and add a few difficulties with it, hence the present post which explains how to activate USB 2 support in VirtualBox (and is widely inspired from the official documentation – in French). The tutorial has been tested with the following configuration:
- host machine: Ubuntu 14.04 LTS;
- VirtualBox version: 4.3.10 (official version in Ubuntu trusty repository;
- client machine: Windows 7, 64 bits with guest additions installed.
The first step to configure USB support is to allow the current user (the one using VirtualBox on the host machine) to access USB VB ports. This is done using the command:
sudo usermod -G vboxusers -a $USER
to allow all users or
sudo usermod -G vboxusers -a tuxette
to allow only the user tuxette. This step is also required even though you only want to use USB 1 support but is only valid after you logout and login again of your Ubuntu current session.
The second step consists in downloading the Oracle support for USB. This support depends on your version of VirtualBox. If you are using the official version from the trusty repository, the file to download is at this link. Otherwise, you may want to have a look at this directory and find your VB version (VB version can be found in the VirtualBox menu “Help/About VirtualBox…”). Once this file is downloaded, use the menu “File/Preferences” and go to the tab “Extensions” in which you can “Add extension pack” and install the extension pack that you have just downloaded.
Finally, in VirtualBox interface, before starting your virtual machine, click on “USB” on the right panel. Click on the button with a “+” sign that says “Adds a new USB filter…” and select the USB device that you want to use in your virtual machine. Then, start the virtual machine (and from that on, the USB device is no more available in the host machine). I managed to use my Garmin device with Garmin Express for windows, which I hope will be available for linux as well… 😉
Utiliser rsnapshot pour automatiser des sauvegardes distantesUsing rsnapshot for automatic remote backups
Ce tutoriel présente quelques cas pratiques d’utilisation de rsnapshot pour sauvegarder des données d’un serveur distant sur une machine locale. En particulier trois types de sauvegardes vont être présentées :
- sauvegarde d’un dossier distant sur l’ordinateur local en utilisant une connexion SSH par paire de clé publique/privée
- sauvegarde d’un dossier distant sur l’ordinateur local en utilisant une connexion SSH avec mot de passe
- sauvegarde d’une base de données distante sur l’ordinateur local en utilisant une connexion SSH
Pour reprendre le contexte décrit dans ce tutoriel, on appellera
- padawan le serveur contenant les données à sauvegarder. Ce serveur est réputé être accessible par connexion SSH (clé ou mot de passe) ;
- master l’ordinateur local de stockage (Ubuntu, 12.04 LTS)
Plus d’informations : sur la documentation officielle (en français) et merci à Fabrice pour m’avoir indiqué le logiciel.
Installation de rsnapshot
Le logiciel possède un package Ubuntu et s’installe donc en ligne de commande avec :
sudo apt-get install rsnapshot
On commence par soigneusement sauvegarder le fichier de configuration initial avec :
sudo cp /etc/rsnapshot.conf /etc/rsnapshot.conf.bak
On peut ensuite créer un utilisateur dédié qui gèrera les sauvegardes :
sudo adduser sauveur
puis on édite le fichier /etc/rsnapshot.conf
en super-utilisateur pour préciser la configuration générale (les cas typiques d’utilisation sont précisées dans la section suivante) :
-
le répertoire de base où les sauvegardes sont effectuées est précisé en début de fichier :
snapshot_root /home/sauveur/saves/
-
si vous souhaitez utiliser SSH, il faut également décommenter la ligne
cmd_ssh /usr/bin/ssh
-
les logs de rsnapshot doivent être sauvegardés dans un fichier accessible à l’utilisateur qui lance la commande. J’ai choisi :
verbose 1 loglevel 3 logfile /home/sauveur/rsnapshot.log lockfile /home/sauveur/rsnapshot.pid
-
l’option
link_dest 1
permet de sauvegarder un certain nombre de fichiers spéciaux (sockets, pipes…) ;</li>
-
je lance une sauvegarde hebdomadaire, toutes sont sauvegardées dans un dossier
monthly.X
oùX
vaut 0, 1, 2, … (0 étant le plus récent, 1 la sauvegarde de la semaine précédente, …). Ce paramètre est spécifié dansretain monthly 4
qui indique 4 sauvegardes mensuelles.</li> </ul>
Finalement, commentez toute les lignes commençant par
backup
et limitez la lecture du fichier au seul utilisateur sauveur :sudo chown sauveur:sauveur /etc/rsnapshot sudo chmod -r /etc/rsnapshot
Ceci est particulièrement utile si vous inscrivez des mots de passe en dur dans ce fichier, comme indiqué plus loin, afin que les autres utilisateurs n’aient pas accès à la lecture de ces mots de passe.
Quelques cas d’utilisation pratique de rsnapshot
Sauvegarde par connexion SSH avec paire de clés publique/privée
Supposons que sur padawan, l’utilisateur dude ait accès (en lecture au moins) aux fichiers/dossiers à sauvegarder. Sur master, en tant que sauveur, on génère une paire de clés SSH sans mot de passe :
sudo su sauveur ssh-keygen -t dsa
La dernière commande génère deux fichiers à l’emplacement que vous avez précisé en répondant à la question
Enter file in which to save the key (/home/sauveur/.ssh/id_dsa):
Si vous avez laissé cette réponse vide, les fichiers générés sont
id_dsa
etid_dsa.pub
. Copiez le fichierid_dsa.pub
sur padawan dans le dossier/home/dude/.ssh
en le renommantauthorized_keys
. Vous devriez alors, depuis master, en tant que sauveur pouvoir vous connecter sur padawan en tant que dude :ssh dude@padawan.fr
Éditez alors de nouveau le fichier
/etc/rsnapshot.conf
en y ajoutant la ligne suivante (à adapter selon vos besoin) :backup dude@padawan.fr:./ root/
qui aura pour effet de sauvegarder toute le répertoire personnel de dude dans
/home/sauveur/saves/monthly.X/root/
.Attention ! Dans la syntaxe de ce fichier, il faut bien utiliser des tabulations et non des espaces pour séparer les différentes parties de la commande.
Sauvegarde de données par connexion SSH avec mot de passe
Pour se connecter via un mot de passe, on peut utiliser la même astuce que celle décrite dans ce post. Le principe général est d’utiliser le programme sshpass en conjonction avec rsync pour faire une copie locale du serveur distant puis ensuite, de lancer un backup de cette copie locale. Cela consiste à ajouter dans le fichier
/etc/rsnapshot.conf
les deux lignes suivantes :backup_script /usr/bin/rsync -ratlz --rsh="/usr/bin/sshpass -p PWD ssh -o StrictHostKeyChecking=no -l dude" padawan.fr:./ /home/sauveur/tmp/ unused/ backup /home/sauveur/tmp/ root2/
où
PWD
est le mot de passe de dude pour accéder au serveur padawan.Sauvegarde de bases de données par connexion SSH avec mot de passe
La même astuce que précédemment peut être utilisée pour sauvegarder une base de données avec une connexion SSH par mot de passe sur un serveur sur lequel la base de données est accessible. Le principe général consiste à réaliser un sqldump de la base de données après une connexion ssh (utilisant soit une paire de clés sans mot de passe, soit une connexion avec mot de passe) puis de lancer le backup du répertoire dans lequel la base de données a été sauvegardée. Ceci est effectué à l’aide des trois lignes suivantes à ajouter au fichier
/etc/rsnapshot.conf
:backup_script /usr/bin/sshpass -p PWD ssh -o StrictHostKeyChecking=no dude@padawan.fr "mysqldump --no-tablespace --opt -h HOST -u LOGIN -p"PWD2" BDNAME | gzip > ~/sauvebd/bdsauvee.sql.gz" unused1/ backup_script /usr/bin/rsync -ratlz --rsh="/usr/bin/sshpass -p PWD ssh -o StrictHostKeyChecking=no -l dude" padawan.fr:sauvebd/ /home/sauveur/tmp2/ unused2/ backup /home/sauveur/tmp2/ root3/
La première ligne se connecte avec l’utilisateur dude sur padawan (mot de passe
PWD
) et sauvegarde la base de donnéesBDNAME
du serveurHOST
accessible à l’utilisateurLOGIN
avec le mot de passePWD2
: une copie gzippée est sauvegardée dans/home/dude/sauvebd/bdsauvee.sql.gz
(le répertoire/home/dude/sauvebd
doit avoir été créé préalablement). La seconde effectue une synchronisation de ce répertoire dans le répertoire local/home/sauveur/tmp2
et la troisième effectue la sauvegarde via rsnapshot de ce répertoire temporaire dans/home/sauveur/saves/monthly.X/root3/
.Tester et automatiser la sauvegarde avec une tâche CRON
Une fois la configuration effectuée, on peut tester la syntaxe du fichier
/etc/rsnapshot.conf
en lançant, sur master avec l’utilisateur sauveur les commandes suivantes :rsnapshot configtest rsnapshot -t monthly
La première teste la syntaxe du fichier et la seconde simule les opérations qui seront effectuées pour un lancement hebdomadaire de rsnapshot.
Si tout fonctionne correctement, on finalise en créant, sur master avec l’utilisateur sauveur, une tâche CRON :
crontab -e
où on ajoute la ligne suivante :
30 01 * * 3 rsnapshot monthly
qui démarre la commande
</div>rsnapshot monthly
tous les troisièmes jours de la semaine (le mardi), à 1h30.
Synchronisation du calendrier et des contacts entre thunderbird/ownCloud/androidSynchronization of calendar and contacts between thunderbird/ownCloud/android
Ce tutoriel est la suite de
ce post et se focalise sur la synchronisation entre ownCloud, un smartphone sous Android et thunderbird. En particulier, les données à synchroniser sont les contacts, le calendrier et les tâches du calendrier. Comme décrit dans le post précédent, Owncloud permet aussi de synchroniser des dossiers et des fichiers avec un ordinateur ou un smartphone mais ce point ne sera pas abordé dans ce tutoriel.
Installation sur Ubuntu server
Depuis novembre 2014, le package owncloud
n’est plus disponible sur Ubuntu Server pour cause de problème de failles de sécurité. L’installation de Owncloud, si vous souhaitez néanmoins la faire, doit donc être manuelle. Le tutoriel décrit ici l’installation de ownCloud 7.0 sur un serveur Ubuntu 14.04 LTS.
Le dépôt Ubuntu de ownCloud est ajouté à la liste des dépôts particuliers en créant un fichier owncloud.list
dans /etc/apt/sources.list.d/
et en y ajoutant la ligne suivante :
deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/xUbuntu_14.04/ /
Les clés d’authentification sont alors importées avec :
wget http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_14.04/Release.key | sudo apt-key add -
puis ownCloud est installé avec :
sudo apt-get update
sudo apt-get install owncloud
L’application est installée dans le dossier /var/www/owncloud
. Si votre serveur apache est configuré de telle sorte que l’URL http://votre-domaine.fr pointe vers /var/www
, ownCloud est donc accessible à http://votre-domaine.fr/owncloud. Dans le cas où votre configuration n’est pas standard ou pour des raisons qui vous sont propres, vous pouvez souhaiter créer un hôte virtuel http://owncloud.votre-domaine.fr ou même un hôte virtuel sécurisé par SSL https://owncloud.votre-domaine.fr comme décrit dans ce post et ce post.
L’étape suivante dans l’installation consiste à créer sur votre serveur mysql une base de données ‘owncloud’ avec un utilisateur ‘owncloudUser’ avec ALL PRIVILEGES
. Éditez alors le fichier /var/www/owncloud/config/config.php
pour y insérer les informations suivantes :
<br />
'dbname' => 'owncloud',<br />
'dbhost' => 'localhost',<br />
'dbtableprefix' => 'oc_',<br />
'dbuser' => 'owncloudUser',<br />
'dbpassword' => 'PWD',<br />
où PWD
est à remplacer par le mot de passe de l’utilisateur ‘owncloudUser’.
Ouvrez alors un navigateur et tapez l’URL https://owncloud.votre-domaine.fr pour lancer l’assistant d’installation. Choisissez “Create an admin account”. À ce stade, vous pouvez proposer un emplacement personnalisé pour les données (à titre personnel, j’ai créé un utilisateur ownclouduser
sur ma distribution Ubuntu et stocké les données dans /home/ownclouduser/data
. Cliquez ensuite sur Finish setup
pour terminer l’installation.
Synchronisation du calendrier et des contacts avec thunderbird
La synchronisation du calendrier et des contacts avec thunderbird est parfaite : elle fonctionne dans les deux sens sans aucun problème. La seule chose que l’on peut reprocher à ownCloud est une gestion un peu limitée du partage : il est possible de définir des options de partage différentes par événements (visible par tous, date et heure seulement ou bien privé) mais pas des niveaux de partage différents pour différents utilisateurs ownCloud avec qui on souhaite partager l’agenda : un événement public ou privé l’est pour tous les utilisateurs en partage de l’agenda.
Le calendrier se synchronise en installant le plugin “lightning” de thunderbird :
sudo apt-get install xul-ext-lightning
Ensuite, dans le menu “File / New”, choisissez “Calendar” et “On the network”. L’adresse à fournir est https://owncloud.votre-domaine.fr/remote.php/caldav/calendars/theUser/calname
où theUser
est l’utilisateur du calendrier à synchroniser et calname
est le nom du calendrier. Vous pouvez aussi cocher “Offline support” pour avoir toujours une version locale du calendrier sur la machine, même sans connexion internet. En validant, votre mot de passe (celui de l’utilisateur theUser
sur ownCloud) vous sera demandé ainsi, éventuellement, qu’une autorisation de validation de votre certificat de sécurité SSL.
Pour synchroniser les contacts, il faut installer le plugin “SOGo Connector” disponible sur cette page. Dans thunderbird, cliquez sur le menu “Tools / Addressbook” et ensuite, dans le carnet d’adresses sur “File / New / Remote Address Book”. L’adresse à fournir pour le carnet d’adresses est https://owncloud.votre-domaine.fr/remote.php/carddav/addressbooks/theUser/contactname/
où contactname
est le nom du carnet d’adresses à synchroniser.
Synchronisation du calendrier et des contacts avec un smartphone android
La synchronisation du calendrier avec un smartphone sous android (Jelly Bean) est très bonne (un ou deux problèmes rencontrés pour des événements récurrents) mais la synchronisation des contacts semble être mal gérée depuis le smartphone vers ownCloud (dans l’autre sens, je n’ai constaté aucune perte de données).
Pour la synchronisation du calendrier, j’ai utilisé le connecteur CalDAV CalDAV sync (payant). Sur le smartphone, dans “Settings / Accounts / CalDAV”, configurez votre compte avec les mêmes paramètres que pour thunderbird. Choisissez “Use SSL (all certificates)”. Le calendrier apparaît alors automatiquement dans l’application calendrier du smartphone.
À noter : Sous blackberry, la synchronisation du calendrier via un protocole CalDAV est géré en natif : il n’est pas nécessaire d’installer une quelconque application supplémentaire mais simplement de paramétrer un nouveau calendrier.
Pour la synchronisation des contacts, il est possible d’utiliser le connecteur CardDAV CardDAV sync free beta (libre). Sur le smartphone, dans “Settings / Accounts / CardDAV”, configurez votre compte avec les mêmes paramètres que pour thunderbird et choisissez “Use SSL (all certificates)”. Les contacts sont alors importés dans le carnet d’adresse du téléphone.
Synchronisation des tâches
L’extension lightning de thunderbird permet aussi la gestion des tâches. Pour synchroniser les tâches sur ownCloud, il suffit d’installer l’application tasks. Pour cela, téléchargez l’archive (ou bien clônez le dépôt Git de l’application). Décompressez là dans le dossier /var/www/owncloud/apps sans changer le nom du dossier. Sur l’interface web de owncloud https://owncloud.votre-domaine.fr, en administrateur, allez dans “Applications” (menu en haut à gauche), dans le menu de gauche, cherchez l’application “Tasks” et appuyez sur “Activer”. La synchronisation des tâches avec thunderbird est alors complètement automatisée dès lors que vous utilisez le même calendrier que celui que vous avez synchronisé avec ownCloud.
Après avoir installé et configuré correctement CalDAV sync sur Android, les tâches peuvent être gérées automatiquement en installant l’application supplémentaire CalDAV Tasksync beta free qui installe une nouvelle application “Tasks” synchronisée automatiquement via CalDAV sync.
Use Pygments to highlight code syntax in Jekyll
This post is a follow-up of this post and this post which describe how to use Jekyll to generate a static website. The particular topic that the current post is addressing is syntax hightlighting with pygments. It is widely inspired by this post, which saved me a couple of hours to set up pygments properly, and is designed to be used on Ubuntu 14.04 LTS.
-
the first step consists in installing Pygments and in generating a CSS file from pygments:
sudo apt-get install python-pygments
the corresponding CSS file is then generated using: -
in the second step, we set-up jekyll installation to use pygments. First, edit the file
_config.yml
and add the following linehighlighter: pygments
then, move the previously generated filepygments.css
into a subdirectory of your jekyll installation, sayassets/css
and add the following line in the header of your default layout (this is the file_layouts/default.html
in this post): -
you can now use Pygments using liquid tags. For instance, the R code
data("iris") plot(iris$Sepal.Length ~ iris$Sepal.Width)
will give the following (not very spectacular) syntax hightlighting:if set between liquid tags for hightlighting:
data("iris") plot(iris$Sepal.Length ~ iris$Sepal.Width)
/var/lib/gems/1.9.1/gems/pygments.rb-0.6.0/vendor/pygments-main/pygments/lexers
.