<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>/home/lord</title>
    <link>https://lord.re/en/</link>
    <description>Recent content on /home/lord</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Sat, 07 Apr 2018 18:41:29 +0200</lastBuildDate>
    
        <atom:link href="https://lord.re/en/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Lock your /etc/resolv.conf in OpenWRT</title>
      <link>https://lord.re/en/posts/93-verrouiller-resolvconf-openwrt/</link>
      <pubDate>Sat, 07 Apr 2018 18:41:29 +0200</pubDate>
      
      <guid>https://lord.re/en/posts/93-verrouiller-resolvconf-openwrt/</guid>
      <description>&lt;p&gt;OpenWRT hate me and I hate it too !&lt;/p&gt;

&lt;p&gt;Yes it&amp;rsquo;s a weird intro but it&amp;rsquo;s true.
Each time i need to edit any setting on their web interface i start cleaning the flat or find something else to do.
I&amp;rsquo;m used to managing classic Linux systems via SSH but I can&amp;rsquo;t find anything in their system.&lt;/p&gt;

&lt;p&gt;Even defining you DNS resolver is hard on their system.&lt;/p&gt;

&lt;p&gt;Ma Internet connection is provided thanks to DHCP which means i get the IP settings &lt;em&gt;AND&lt;/em&gt; a DNS resolver.&lt;/p&gt;

&lt;p&gt;Except, I don&amp;rsquo;t need this service from my ISP as I already have my own resolver.
And this funny OpenWRT doesn&amp;rsquo;t try to ease my pain.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
So I SSH into the router and try the famous &lt;strong&gt;chattr +i /etc/resolv.conf&lt;/strong&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;chattr: Operation not supported while reading flags on /etc/resolv.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O___o Dafuck !&lt;/p&gt;

&lt;p&gt;Hoo it&amp;rsquo;s a symbolic link to &lt;em&gt;/tmp/etc/resolv.conf&lt;/em&gt; .
Well … why not ?&lt;/p&gt;

&lt;p&gt;So I try to chattr +i this file.&lt;/p&gt;

&lt;p&gt;It fails too with the same error.&lt;/p&gt;

&lt;p&gt;GRRRRRRRR I HATE NOT BEING ABLE TO DO WHAT I WANT ON MY DEVICES !&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Breathe&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;rm /tmp/etc/resolv.conf&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;rm /etc/resolv.conf&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Breathe again&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;crontab -e&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;* * * * * printf &amp;quot;#SET VIA CRONTAB\nnameserver 10.2.0.1\nnameserver 10.2.0.2\n&amp;quot; &amp;gt; /etc/resolv.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;We wait one minute.&lt;/p&gt;

&lt;p&gt;If the file is right :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;chattr +i /etc/resolv.conf&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here it is !&lt;/p&gt;

&lt;p&gt;No more trouble.&lt;/p&gt;

&lt;p&gt;As usual I fight against stranges choices from this linux distro but at least it&amp;rsquo;s a Linux so you can fiddle with this !&lt;/p&gt;

&lt;p&gt;This technique is « ceinture + bretelles » ( belt + braces ) but now I&amp;rsquo;m sure not to use my ISP&amp;rsquo;s resolvers.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Web ≠ Internet</title>
      <link>https://lord.re/en/posts/90-webinternet/</link>
      <pubDate>Thu, 29 Mar 2018 22:29:14 +0200</pubDate>
      
      <guid>https://lord.re/en/posts/90-webinternet/</guid>
      <description>

&lt;p&gt;There are some things bothering me.&lt;/p&gt;

&lt;p&gt;For some it&amp;rsquo;s the &lt;em&gt;Interpunct&lt;/em&gt; (there is a global french crisis about it in France), for others it&amp;rsquo;s &lt;em&gt;la digitalisation&lt;/em&gt; (in France the translation for digital it numérique which comes from numbers (0 and 1) but many use the world digital which in French is an adjective meaning &amp;ldquo;about fingers&amp;rdquo; like fingerprints are empreintes (prints) digitales), others despise &lt;em&gt;blockchan&lt;/em&gt; leading to &lt;em&gt;disrputions&lt;/em&gt; but my Nemesis is using « Web » and « Internet » exchangeably.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;web-internet&#34;&gt;Web ≠ Internet&lt;/h1&gt;

&lt;p&gt;You know why it pisses me off ?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Because those are &lt;span style=&#34;text-decoration:underline&#34;&gt;two different things&lt;/span&gt; !&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&#34;internet-is-a-network-of-networks&#34;&gt;Internet is a network of networks&lt;/h2&gt;

&lt;p&gt;Internet is an amalgation of many networks talking the same language interconnected.
One giant worldwide network talking &lt;em&gt;IP&lt;/em&gt; which means Internet Protocol.&lt;/p&gt;

&lt;h2 id=&#34;the-web-is-a-protocol-to-transfers-data&#34;&gt;The web is a protocol to transfers data&lt;/h2&gt;

&lt;p&gt;The Web or World Wide Web is a system to share data (most of the time in only one-way) some Hypertext documents.
Hypertext is a systèm to link many documents to each others only with some text&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://perdu.com&#34;&gt;This&lt;/a&gt; ← this is an hypertext link.
It will let you read another document at another adress without you needing to finish to read this actual document.
We could call &lt;em&gt;Gamebooks&lt;/em&gt; Hypertext books as you won&amp;rsquo;t read them linearly but follows link.&lt;/p&gt;

&lt;p&gt;Anyway, I digress.&lt;/p&gt;

&lt;h2 id=&#34;those-two-can-work-independantly&#34;&gt;Those two can work independantly&lt;/h2&gt;

&lt;p&gt;Internet was created in 1983 with the adoption of IP (but it existed for at least two decades).&lt;/p&gt;

&lt;p&gt;The web was created in early 90s so wayyyyyyy later !&lt;/p&gt;

&lt;p&gt;Before the web, people were already sending mails.
It&amp;rsquo;s the oldest social network still in use !&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s possible to do Web without Internet : you can setup a webserver without connecting it to the Internet.
That&amp;rsquo;s not rare at all actually as many Intranets works this way and many IoT provide web Interfaces without accessing the Net.&lt;/p&gt;

&lt;p&gt;You can use the Internet without using the web.
When you open a webpage, before using the web, you&amp;rsquo;ll use the &lt;em&gt;DNS&lt;/em&gt; (from 1983 too, before the web itself).
If you are using &lt;em&gt;emails&lt;/em&gt;, you&amp;rsquo;ll probably won&amp;rsquo;t use the web.
If you are chatting in &lt;em&gt;IRC&lt;/em&gt; you&amp;rsquo;ll use the Internet but not the web.
When you are playing an &lt;em&gt;online video game&lt;/em&gt;, you&amp;rsquo;ll use the Internet, not the web.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;h1 id=&#34;web-internet-1&#34;&gt;Web ≠ Internet&lt;/h1&gt;

&lt;p&gt;Even if those last years, lots of people are trying to push everything in HTTP (the web protocol, Hyper Text Transport Protocol), you should not exchange those two terms.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>AV1 is released !</title>
      <link>https://lord.re/en/fast-posts/13-av1-aom-arrive/</link>
      <pubDate>Wed, 28 Mar 2018 15:48:38 +0200</pubDate>
      
      <guid>https://lord.re/en/fast-posts/13-av1-aom-arrive/</guid>
      <description>

&lt;p&gt;You may not be waiting for it but &lt;a href=&#34;https://aomedia.org/the-alliance-for-open-media-kickstarts-video-innovation-era-with-av1-release/&#34;&gt;it&amp;rsquo;s coming&lt;/a&gt;.
AV1 is a brand new video codec.
One more but this one is made by &lt;a href=&#34;https://aomedia.org/&#34;&gt;AOMedia&lt;/a&gt; and that&amp;rsquo;s what matters.&lt;/p&gt;

&lt;h2 id=&#34;aomedia-alliance-for-open-media&#34;&gt;AOMedia : Alliance for Open Media&lt;/h2&gt;

&lt;p&gt;AOMedia is a new consortium quite which aims to provide the world with a royalty-free codec.
It may looks strange but nearly every major video codec came from a single actor : the MPEG-LA which specialized in selling licences for all its codecs.
AOMedia regroups many big companies and foundations tired of feeding the MPEG-LA.&lt;/p&gt;

&lt;p&gt;There is Google, VideoLan, Nvidia, Netflix, Mozilla, Xiph, Facebook, Cisco, Arm, AMD, Microsoft, Intel and many more.&lt;/p&gt;

&lt;h2 id=&#34;av1&#34;&gt;AV1&lt;/h2&gt;

&lt;p&gt;It&amp;rsquo;s a new video codec which merges many different tries.&lt;/p&gt;

&lt;p&gt;Xiph and Mozilla were working on &lt;a href=&#34;https://wiki.xiph.org/Daala&#34;&gt;Daala&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cisco on &lt;a href=&#34;https://blogs.cisco.com/collaboration/world-meet-thor-a-project-to-hammer-out-a-royalty-free-video-codec&#34;&gt;Thor&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Google whith &lt;a href=&#34;https://www.webmproject.org/vp9/&#34;&gt;VP10&lt;/a&gt; (sorry it&amp;rsquo;s a VP9 link but trust me they were working on VP10).&lt;/p&gt;

&lt;p&gt;They choosed to all work together to replace their need for H265 and bring a new alternative.
This codec can be used freely and safely without infringing patents anywhere in the word.&lt;/p&gt;

&lt;p&gt;If all goes well, it will spread quite fast (will all those supporters it should be easy).
Performances are announced to be at least as good as H265 and maybe better.
It will probably become the next codec on web videos in a future html5 revision to replace vp8 and vp9 in webm.&lt;/p&gt;

&lt;p&gt;The source code can be found &lt;a href=&#34;https://aomedia.googlesource.com/&#34;&gt;here&lt;/a&gt;.
Gstreamer 1.4 already provides an experimental support and VLC3 too.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;m excited to try it to see if it&amp;rsquo;s usable without hardware (en|de)coder.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Sisyphus the spam mover</title>
      <link>https://lord.re/en/posts/87-sisyphus-antispam/</link>
      <pubDate>Tue, 20 Mar 2018 15:33:09 +0100</pubDate>
      
      <guid>https://lord.re/en/posts/87-sisyphus-antispam/</guid>
      <description>

&lt;p&gt;I already talked about my mail stack.
Some months ago i added a new antispam to it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firstç there is Postscreen in frontline (almost in before Postfix) which rejects something like 80% of spam before using any resources.&lt;/li&gt;
&lt;li&gt;Then I use Rspamd which works after Postfix and before Dovecot which also removes all the remaining spam.&lt;/li&gt;
&lt;li&gt;Last there is &lt;a href=&#34;https://github.com/carlostrub/sisyphus&#34;&gt;Sisyphus&lt;/a&gt; which works after Dovecot, directly on the maildir.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yes, it&amp;rsquo;s clearly overkill.
I know, i already chanted Postscreen and Rspamd (sorry, only in french) and now I announce a use a third one…&lt;/p&gt;

&lt;h2 id=&#34;why-three-antispam&#34;&gt;Why three antispam ?&lt;/h2&gt;

&lt;p&gt;Well, &lt;em&gt;Postscreen removes the dumb spam&lt;/em&gt;.
All non targeted mails from bad spammers using bad scripts but consisting of most of the flood.
With it, you lighten the load on your mail stack by sparring yourself cpu/ram/disk.
You&amp;rsquo;ll drop spam before entering your stack.
It&amp;rsquo;s the bare minimum to install.
Rspamd could replace it but it would require more resources.&lt;/p&gt;

&lt;p&gt;Then &lt;em&gt;Rspamd is the real antispam&lt;/em&gt;.
It&amp;rsquo;s way smarter than Postscreen and Sisyphus and could be enough.
It uses lots of rules with mostly good defaults
But I don&amp;rsquo;t want to spend time tweaking it.
I hate mails.
Even after lowering the required score to be rejected i keep getting spam in my inbox.
I have one or two spam reaching my inbox and 0 false positive.
I could add rules, or refine existing ones to crush those last two spams a week but it&amp;rsquo;s too much work.&lt;/p&gt;

&lt;p&gt;Then i discovered Sisyphus !
It&amp;rsquo;s very lightweight, nothing to configure.
Nothing to change in Postfix/Rspamd/Dovecot/Rainloop.
And it succeeds to remove those last two fucking spams.
It can even be used on the client side directly in your local maildir.
I wasn&amp;rsquo;t looking for a new antispam but it fits my new needs.&lt;/p&gt;

&lt;h2 id=&#34;sisyphus-watizit&#34;&gt;Sisyphus watizit ?&lt;/h2&gt;

&lt;p&gt;It&amp;rsquo;s not a full-featured antispam with a large ruleset and all.
It&amp;rsquo;s just a small Go program which reads your spam and your ham and analyzes all the words to feed a bayesian filter.
When you throw a mail to the spam folder it will learn.
If you move a mail from it, it will learn too.&lt;/p&gt;

&lt;p&gt;You &lt;em&gt;don&amp;rsquo;t need to configure anything&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&#34;how-to-use-it&#34;&gt;How to use it ?&lt;/h2&gt;

&lt;p&gt;First, your mails must be stored in a &lt;a href=&#34;https://en.wikipedia.org/wiki/Maildir&#34;&gt;Maildir&lt;/a&gt; but we are in 2018, nobody uses anything else (well, except Thunderbird).
Then you install Sisyphus as you install everything else.
In my case &lt;strong&gt;git clone&lt;/strong&gt; then &lt;strong&gt;make build&lt;/strong&gt; and it&amp;rsquo;s ok (thanks Go).&lt;/p&gt;

&lt;p&gt;Well you still need to tell Sisyphus where is your maildir.
&lt;strong&gt;export SISYPHUS_DIRS=&amp;ldquo;/home/lord/Maildir&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And now launch it &lt;strong&gt;sisyphu run&amp;amp;&lt;/strong&gt; .&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s done.&lt;/p&gt;

&lt;p&gt;You&amp;rsquo;ll now see your mail moving by themselves to your &lt;em&gt;junk folder&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Sisyphus needs some time to learn your mails&lt;/p&gt;

&lt;p&gt;You can run &lt;strong&gt;sisyphus stats&lt;/strong&gt; to see if it is working right or not.
It will build its database alone like a grown-up (notice that the db is very small).&lt;/p&gt;

&lt;p&gt;I may remove Rspamd in the future if it works well enough.
I&amp;rsquo;ll see.
After more than 3 months running it&amp;rsquo;s getting quite accurate.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>GLSA from Gentoo</title>
      <link>https://lord.re/en/posts/81-gentoo-gsla/</link>
      <pubDate>Tue, 06 Mar 2018 23:02:14 +0100</pubDate>
      
      <guid>https://lord.re/en/posts/81-gentoo-gsla/</guid>
      <description>

&lt;p&gt;I realized I never talk about Gentoo on my blog.
It&amp;rsquo;s by far the best Linux distribution.&lt;/p&gt;

&lt;p&gt;Instead of trolling, Gentoo is good because (but not limited to) you can quickly check if your system is vulnerable to a known security breach.&lt;/p&gt;

&lt;h2 id=&#34;glsa&#34;&gt;GLSA&lt;/h2&gt;

&lt;p&gt;Gentoo isn&amp;rsquo;t a giant distro with lots of devs but is still pretty  well staffed.
There are multiple dev teams with different focus with one dedicated to security.
This team publish security reports called &lt;a href=&#34;https://security.gentoo.org/glsa/&#34;&gt;GLSA&lt;/a&gt; wich stands for Gentoo Linux Security Advisories.&lt;/p&gt;

&lt;p&gt;These are regularly published and lets you being informed about new breaches in multiple softwares provided throught portage.
To read them their are multiple ways.
I follow &lt;a href=&#34;https://security.gentoo.org/glsa/feed.rss&#34;&gt;their RSS feed&lt;/a&gt; with &lt;a href=&#34;https://lord.re/posts/66-nib-irc-bot/&#34;&gt;Nib&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;glsa-check&#34;&gt;GLSA-Check&lt;/h2&gt;

&lt;p&gt;But to be sure i use &lt;strong&gt;glsa-check&lt;/strong&gt; which is a small tool in &lt;strong&gt;gentoolkit&lt;/strong&gt; (a set of tools to use in Gentoo).&lt;/p&gt;

&lt;p&gt;A little &lt;code&gt;glsa-check -l&lt;/code&gt; (one a day) will list all the known vulnerabilities affecting your system.
If it find anything, you can also get more info thanks to &lt;code&gt;glsa-check -d XXXXX-XX&lt;/code&gt;.
You&amp;rsquo;ll know when this vulnerability was discovered, which packages are affected in which version, what&amp;rsquo;s the impact and how to fix it.&lt;/p&gt;

&lt;p&gt;Then you can directly &lt;code&gt;glsa-check -f XXXXX-XX&lt;/code&gt; to fix the vulnerability by itself.
It will often just upgrade a package or two to the right version.&lt;/p&gt;

&lt;p&gt;This small tool isn&amp;rsquo;t very popular but it is very efficient and fast.
It won&amp;rsquo;t replace a sane updating policy but it will let you get enough information on a running system.
Keep on &lt;strong&gt;emerge -uDnav @world&lt;/strong&gt; regularly.&lt;/p&gt;

&lt;p&gt;By the way, if you want to add another interesting feed to you rss aggregator, Debian publish their &lt;a href=&#34;https://www.debian.org/security/dsa&#34;&gt;DSA&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Reverse proxy, 6 months later</title>
      <link>https://lord.re/en/posts/78-retour-efficacite-reverse-proxy/</link>
      <pubDate>Thu, 01 Mar 2018 10:55:02 +0100</pubDate>
      
      <guid>https://lord.re/en/posts/78-retour-efficacite-reverse-proxy/</guid>
      <description>

&lt;p&gt;Last september i wrote about &lt;a href=&#34;https://lord.re/en/posts/60-cache-proxy-nginx/&#34;&gt;setting up an nginx micro-cache in reverse proxy&lt;/a&gt;, so here i a little feedback.&lt;/p&gt;

&lt;p&gt;Since then i didn&amp;rsquo;t changed the settings excepting the caching duration which i increased to &lt;em&gt;10 minutes&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;On the maintenance side, nothing to do.
Everything works fine on its own.
Sometime I want to clear the cache manually to try some edits without waiting cache expiration.
In those case a little &lt;strong&gt;rm /var/www/lecache/*&lt;/strong&gt; and it&amp;rsquo;s done.&lt;/p&gt;

&lt;p&gt;I didn&amp;rsquo;t mentionned it in the first post but the cache is on a &lt;em&gt;tmpfs&lt;/em&gt; (so in RAM) instead of the disk.
It&amp;rsquo;s a bit faster and it spares the NAND from the host.
I allocated only 100MB which is more than enough in my case to host my entire blog (i only need 12Mo for now).&lt;/p&gt;

&lt;h2 id=&#34;little-reminder-on-how-it-works&#34;&gt;Little reminder on how it works&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;client&lt;/strong&gt; (you the reader) requests a webpage.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;reverse proxy&lt;/strong&gt; receive the request and consults its cache.
If thea page isn&amp;rsquo;t there or is outdated, it reaches the &lt;strong&gt;upstream&lt;/strong&gt; to get the page.&lt;/p&gt;

&lt;p&gt;The proxy receives the page from the upstream and transmits it to the client and stores it in its cache.&lt;/p&gt;

&lt;p&gt;While the cache doesn&amp;rsquo;t expire, the reverse proxy won&amp;rsquo;t contact the upstream server.&lt;/p&gt;

&lt;h2 id=&#34;how-do-i-collect-stats-from-my-site&#34;&gt;How do I collect stats from my site ?&lt;/h2&gt;

&lt;p&gt;You may have noticed my site is quite … minimalist.
&lt;em&gt;It displays well in console web browsers so i hope it also works well with screen readers.&lt;/em&gt;
Excepting some rare blogposts with images, a page only need 3 requests to render properlx : one for the webpage, one for the CSS and a last one for the optionnal favicon.&lt;/p&gt;

&lt;p&gt;Iç don&amp;rsquo;t use javascript nor fake 1px images to track visitors.&lt;/p&gt;

&lt;p&gt;I only read the logs from the webserver.
I use &lt;a href=&#34;https://goaccess.io&#34;&gt;GoAccess&lt;/a&gt; which gives a beautifull TUI with some stats.
It&amp;rsquo;s way more basic than Google Analytics or Piwik but I don&amp;rsquo;t need more.&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s just a personnal blog.
I only write for my own pleasure even if it&amp;rsquo;s pleasing to learn that people read it.&lt;/p&gt;

&lt;h2 id=&#34;reverse-proxy-impact-on-the-upstream-server&#34;&gt;Reverse proxy impact on the upstream server&lt;/h2&gt;

&lt;p&gt;My upstream server is a small &lt;a href=&#34;https://lord.re/en/posts/15-migration/&#34;&gt;Atom D510 from 2011&lt;/a&gt; which could take the load without troubles.&lt;/p&gt;

&lt;p&gt;The reverse proxy is a smaller machine.
It&amp;rsquo;s a LXC container on a Turris Omnia.&lt;/p&gt;

&lt;p&gt;To see the impact of the reverse proxy, the easiest way is to compare the nginx logs from the upstream and proxy servers.&lt;/p&gt;

&lt;p&gt;I see &lt;strong&gt;clear difference&lt;/strong&gt; (it&amp;rsquo;s even clearer since I changed from 1s to 10minutes).&lt;/p&gt;

&lt;p&gt;During “little days” the difference is quite small but during “big days” &lt;strong&gt;the proxy provides more or less two third of the traffic&lt;/strong&gt; without reaching the upstream.&lt;/p&gt;

&lt;p&gt;I now can stop the upstream server while the website keeps being served by the turris (the spof is now the turris).&lt;/p&gt;

&lt;h2 id=&#34;numbaz&#34;&gt;Numbaz !&lt;/h2&gt;

&lt;p&gt;Here is February :&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;Upstream&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;Proxy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Total requests&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;56389&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;131813&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;Unique Visitors&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;12848&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19894&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;Log Size&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;9.93MB&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;22.61MB&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;Bandwidth&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;4.35GiB&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;7.55GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</description>
    </item>
    
    <item>
      <title>We all depend on registrars and registries</title>
      <link>https://lord.re/en/fast-posts/10-la-terrible-dependance-envers-registrar/</link>
      <pubDate>Wed, 21 Feb 2018 14:02:59 +0100</pubDate>
      
      <guid>https://lord.re/en/fast-posts/10-la-terrible-dependance-envers-registrar/</guid>
      <description>

&lt;p&gt;Purism just suffered from a &lt;a href=&#34;https://puri.sm/posts/the-great-purism-dns-outage-of-2018/&#34;&gt;massive dns outage&lt;/a&gt;.
All their websites were down.&lt;/p&gt;

&lt;p&gt;What caused this ?
It appears their domain name was unreachable.
After looking for a bug in their DNS servers, their was nothing to be found.&lt;/p&gt;

&lt;h2 id=&#34;the-registrar&#34;&gt;The registrar&lt;/h2&gt;

&lt;p&gt;It came from their &lt;em&gt;registrar&lt;/em&gt;.
The registrar is the entity from which you rent your domain name (no you don&amp;rsquo;t buy a domain name).
They phoned to the hotline but apparently nothing were wrong on their side.
They tried to reach their &lt;em&gt;.sm&lt;/em&gt; specialist which was unavailable until the morning.&lt;/p&gt;

&lt;p&gt;So they waited.&lt;/p&gt;

&lt;p&gt;On the morning, the specialist checked everything and found nothing.&lt;/p&gt;

&lt;p&gt;We need to go Deeper !&lt;/p&gt;

&lt;h2 id=&#34;the-registry&#34;&gt;The registry&lt;/h2&gt;

&lt;p&gt;Deeper their is the &lt;em&gt;registry&lt;/em&gt; which sells licences to registrar to rent domain name from their TLD (top level domain, the right part of a domain name).&lt;/p&gt;

&lt;p&gt;Bad luck &lt;em&gt;.sm&lt;/em&gt; comes from the &lt;a href=&#34;https://en.wikipedia.org/wiki/San_Marino&#34;&gt;San Marino&lt;/a&gt; in Europe.&lt;/p&gt;

&lt;p&gt;So they waited, again, while everything was off.&lt;/p&gt;

&lt;p&gt;Purism bypassed their registrar and directly contacted the &lt;em&gt;.sm registry&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The registrar didn&amp;rsquo;t payed the registration fee.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hahahahaha, i&amp;rsquo;d love seeing the faces of Purism&amp;rsquo;s technicians when they learned that their registrar was faulty.&lt;/p&gt;

&lt;p&gt;So, everything get fixed, everything now works fine.&lt;/p&gt;

&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion ?&lt;/h2&gt;

&lt;p&gt;** Choosing a registrar can have direct consequences on the availability of your infrastructure.**&lt;/p&gt;

&lt;p&gt;You may have RAID, VM with high availability, a multi-homed network, in multiple datacenters, your domain name and your registrar will ever be your &lt;em&gt;SPOF&lt;/em&gt; (single point of failure).&lt;/p&gt;

&lt;p&gt;Purism choose to take another domain name in another registrar on another TLD but that&amp;rsquo;s not a perfect solution : if your clients don&amp;rsquo;t try to reach you by your backup domain name… you have no backup.&lt;/p&gt;

&lt;p&gt;** Choosing a registry can have direct consequences on the availability of your infrastructure.**&lt;/p&gt;

&lt;p&gt;Like you registrar, your registry (it means the TLD you choose) is crucial. Choosing a TLD for its œsthetics can be a future outage.&lt;/p&gt;

&lt;p&gt;Even if you host your own DNS servers with fine management, you can still suffer from an outage of your underlying layers.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>International Fixed Calendar or CAL13</title>
      <link>https://lord.re/en/posts/76-calendrier-fixe/</link>
      <pubDate>Tue, 20 Feb 2018 11:24:31 +0100</pubDate>
      
      <guid>https://lord.re/en/posts/76-calendrier-fixe/</guid>
      <description>

&lt;p&gt;&lt;strong&gt;International Fixed Calendar&lt;/strong&gt; or &lt;strong&gt;CAL13&lt;/strong&gt; is a different calendar system than ours.&lt;/p&gt;

&lt;p&gt;It uses &lt;em&gt;7 days a week&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;With &lt;em&gt;4 weeks a month&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;So &lt;em&gt;each month last 28 days&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;And &lt;em&gt;there is 13 months a year&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Just add a white day each year as a day off to get your 365 days a year.&lt;/p&gt;

&lt;h2 id=&#34;what-does-it-looks-like&#34;&gt;What does it looks like ?&lt;/h2&gt;

&lt;p&gt;Here is your monthly calendar which works for every months.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&#34;center&#34;&gt; Lun &lt;/th&gt;
&lt;th align=&#34;center&#34;&gt; Mar &lt;/th&gt;
&lt;th align=&#34;center&#34;&gt; Mer &lt;/th&gt;
&lt;th align=&#34;center&#34;&gt; Jeu &lt;/th&gt;
&lt;th align=&#34;center&#34;&gt; Ven &lt;/th&gt;
&lt;th align=&#34;center&#34;&gt; Sam &lt;/th&gt;
&lt;th align=&#34;center&#34;&gt; Dim &lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&#34;center&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;2&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;3&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;4&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;5&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;6&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;7&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;center&#34;&gt;8&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;9&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;10&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;11&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;12&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;13&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;14&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;center&#34;&gt;15&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;16&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;17&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;18&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;19&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;20&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;21&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td align=&#34;center&#34;&gt;22&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;23&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;24&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;25&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;26&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;27&lt;/td&gt;
&lt;td align=&#34;center&#34;&gt;28&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;There are multiple propositions for &lt;em&gt;where to place the thirteen month ?&lt;/em&gt; and &lt;em&gt;which day should start a week ?&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The most popular is to name the month &lt;strong&gt;Sol&lt;/strong&gt; and to place it between June and July.
The beginning of the week could be Sunday or Monday.&lt;/p&gt;

&lt;h2 id=&#34;advantages&#34;&gt;Advantages&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You&amp;rsquo;ll know which day is the 24 of any month.&lt;/li&gt;
&lt;li&gt;Each month last the same duration, no more long months and short months.&lt;/li&gt;
&lt;li&gt;One extra day off !&lt;/li&gt;
&lt;li&gt;No more Friday the thirteen !&lt;/li&gt;
&lt;li&gt;Being synchronized with the moon.&lt;/li&gt;
&lt;li&gt;Being synchronized with the average menstrual cycle.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;origins&#34;&gt;Origins&lt;/h2&gt;

&lt;p&gt;Many people tried to ditch the Gregorian calendar.&lt;/p&gt;

&lt;p&gt;The first person was &lt;a href=&#34;https://en.wikipedia.org/wiki/Hugh_Jones_(professor)&#34;&gt;Hugh Jones&lt;/a&gt; in 1745.
Then &lt;a href=&#34;https://en.wikipedia.org/wiki/Auguste_Comte&#34;&gt;Auguste Comte&lt;/a&gt; also proposed to adopt the &lt;em&gt;Positivist Calendar&lt;/em&gt; in 1849.
A bit closer was &lt;a href=&#34;https://en.wikipedia.org/wiki/Moses_B._Cotsworth&#34;&gt;Moses B. Costworth&lt;/a&gt; in the 1900s.&lt;/p&gt;

&lt;h2 id=&#34;why-no-one-use-it&#34;&gt;Why no one use it ?&lt;/h2&gt;

&lt;p&gt;The actual system is good enough not to inflict ourselves an incredible amount of work to adopt it.
There is a lot of &lt;em&gt;inertia&lt;/em&gt; to fight in order to change as usual.
It&amp;rsquo;s the same old story as the US adoption of the metrics system.&lt;/p&gt;

&lt;p&gt;The Kodak Company relied on this calendar between 1928 and 1989… it probably was a tremendous hassle to work with the two systems in parallel.&lt;/p&gt;

&lt;p&gt;On top of the difficulty to use a new system, it would be even harder for historians to play with a new calendar to synchronize old dates to new ones.&lt;/p&gt;

&lt;p&gt;What if instead of using a wrong starting reference (no Jesus wasn&amp;rsquo;t born on the first of January 0 (nor the 25 of December -1)) we used a new reference ?
The &lt;a href=&#34;https://en.wikipedia.org/wiki/Holocene_calendar&#34;&gt;Holocene Calendar&lt;/a&gt; chooses to start in -10 000 with the start of the human civilisation.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Meta-news about the blog</title>
      <link>https://lord.re/en/fast-posts/09-modifs-blogs-hugo/</link>
      <pubDate>Sun, 11 Feb 2018 10:34:48 +0100</pubDate>
      
      <guid>https://lord.re/en/fast-posts/09-modifs-blogs-hugo/</guid>
      <description>

&lt;p&gt;Two months after introducing fast-posts here a small report.&lt;/p&gt;

&lt;h2 id=&#34;rythm&#34;&gt;Rythm&lt;/h2&gt;

&lt;p&gt;I think i reached a nice regular rythm to publish new articles.
It&amp;rsquo;s not a difficulty anymore.
It&amp;rsquo;s now easier and more natural to write content.
It&amp;rsquo;s a even a real pleasure to write.&lt;/p&gt;

&lt;p&gt;Creating a distinction between traditionnal posts and fast-posts was a good decision which let me being more spontaneous.&lt;/p&gt;

&lt;h2 id=&#34;layout&#34;&gt;Layout&lt;/h2&gt;

&lt;p&gt;I tweaked a bit the site layout.&lt;/p&gt;

&lt;p&gt;First, i added the &lt;em&gt;last edition date&lt;/em&gt; (if there is one).
It&amp;rsquo;s manual for now but i may change that later by using the file git metadata.&lt;/p&gt;

&lt;p&gt;I then &lt;em&gt;corrected fast-posts colors in list pages&lt;/em&gt;.
For those who haven&amp;rsquo;t noticed yet (mainly the rss readers), fast-posts have a blueish tint.
This slight blue wasn&amp;rsquo;t applied in lists.&lt;/p&gt;

&lt;p&gt;Lists ?
It was half broken but I &lt;em&gt;repaired page lists&lt;/em&gt;.
When you click in articles tags (like &amp;ldquo;meta&amp;rdquo;, &amp;ldquo;hugo&amp;rdquo;, &amp;ldquo;blog&amp;rdquo;, &amp;ldquo;git&amp;rdquo; on the top), you go to a page which lists every articles from this category.
You may not know it but it was broken but it&amp;rsquo;s better now.
I tweaked my hand-crafted hugo theme (it&amp;rsquo;s probably not the best place to change it but you know…).
One day I&amp;rsquo;ll publish the theme somewhere.&lt;/p&gt;

&lt;p&gt;As I repaired categories, I &lt;em&gt;added a lot of tags to existing articles&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&#34;css&#34;&gt;CSS&lt;/h2&gt;

&lt;p&gt;Let&amp;rsquo;s talk about the &lt;em&gt;æsthetics changes in CSS&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Stylized a little bit the last edition date in articles.&lt;/p&gt;

&lt;p&gt;I also &lt;em&gt;changed the &amp;lt;hr&amp;gt; style&lt;/em&gt; which where awful to now reach the meh-level.&lt;/p&gt;

&lt;p&gt;I &lt;em&gt;indented list items&lt;/em&gt; which where a bit too much on the left.&lt;/p&gt;

&lt;p&gt;I &lt;em&gt;centered images&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;And also &lt;em&gt;added some style to &amp;lt;table&amp;gt;&lt;/em&gt; which you&amp;rsquo;ll see in a future article.&lt;/p&gt;

&lt;h2 id=&#34;how-do-i-do-it&#34;&gt;How do i do it ?&lt;/h2&gt;

&lt;p&gt;I &lt;em&gt;always have one or two articles waiting&lt;/em&gt; before releasing them.&lt;/p&gt;

&lt;p&gt;I put them &lt;em&gt;off for some days before returning to it&lt;/em&gt;.
This increase the quality of articles.&lt;/p&gt;

&lt;p&gt;Before, i wrote article and released them without waiting.
Hours/days after being published, i often had to add/remove things from the articles.
By letting them sit on my cold computer for some days and then re-reading them before releasing, i can change them, see typos and all.
This way all articles have a second pass before being published.&lt;/p&gt;

&lt;p&gt;Having always some articles close to be published i can maintain a good publishing rythm.
It&amp;rsquo;s a small tip which increase quality without any downside.&lt;/p&gt;

&lt;h2 id=&#34;which-tools-to-publish&#34;&gt;Which tools to publish ?&lt;/h2&gt;

&lt;p&gt;How it&amp;rsquo;s done ?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;cd ~/www&lt;/strong&gt; - That&amp;rsquo;s where i keep the sources files&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;hugo new posts/xx-titre-du-post.md&lt;/strong&gt; - to create the file with metadata&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;amp&lt;/strong&gt; - to start &lt;a href=&#34;https://amp.rs&#34;&gt;amp&lt;/a&gt; and write text&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;hugo server &amp;ndash;navigateToChanged -F -D &amp;ndash;disableFastRender&lt;/strong&gt; - to be able to browse edits in realtime.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;git add content/posts/xx-titre-du-post.md&lt;/strong&gt; - to add the new file to the git repo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;git commit !$ -m &amp;ldquo;[BLOG] ajout article xx titre du post&amp;rdquo;&lt;/strong&gt; - to commit files and add a comment to the repo&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;git push&lt;/strong&gt; - to save the repo and publish on the website.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&#34;what-if-you-built-your-blog&#34;&gt;What if you built your blog ?&lt;/h2&gt;
</description>
    </item>
    
    <item>
      <title>Multi keyboard layouts in Xorg</title>
      <link>https://lord.re/en/posts/70-multi-keyboard-layout/</link>
      <pubDate>Wed, 31 Jan 2018 21:18:40 +0100</pubDate>
      
      <guid>https://lord.re/en/posts/70-multi-keyboard-layout/</guid>
      <description>

&lt;p&gt;I really like keyboards. I often plug multiple keyboards on my computer… at the same time. It&amp;rsquo;s a bit pointless but I like fiddling with keyboards. My main keyboard is in a slightly tweaked &lt;a href=&#34;https://bepo.fr&#34;&gt;bépo&lt;/a&gt; (a dvorak-style french layout) while most of the others are in azerty and even some in qwerty. So I configured &lt;em&gt;Xorg&lt;/em&gt; to provide these features :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My main board must provide bépo, azerty and qwerty&lt;/li&gt;
&lt;li&gt;Other keyboards must provide azerty, bépo, qwerty&lt;/li&gt;
&lt;li&gt;Right Ctrl must be the &lt;strong&gt;Compose&lt;/strong&gt; key&lt;/li&gt;
&lt;li&gt;Ctrl-Alt-Backspace must kill the Xorg session&lt;/li&gt;
&lt;li&gt;Left-Shift + Right-Shift must cycle the layouts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So all of this can be configured in &lt;em&gt;/etc/X11/xorg.conf&lt;/em&gt; . Some linux distros replaced this file with a folder containing multiple files to split the xorg.conf, find the one containing input devices.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Section &amp;quot;InputClass&amp;quot;
    Identifier &amp;quot;evdev keyboard catchall&amp;quot;
    MatchIsKeyboard &amp;quot;on&amp;quot;
    MatchDevicePath &amp;quot;/dev/input/event*&amp;quot;
    Driver &amp;quot;evdev&amp;quot;
    Option &amp;quot;XkbLayout&amp;quot;      &amp;quot;fr,fr,us&amp;quot;
    Option &amp;quot;XkbVariant&amp;quot;     &amp;quot;oss,bepo, &amp;quot;
    Option &amp;quot;XkbOptions&amp;quot;     &amp;quot;compose:rctrl,terminate:ctrl_alt_bksp,grp:caps_toggle&amp;quot;
EndSection

Section &amp;quot;InputClass&amp;quot;
    Identifier &amp;quot;Custom Keyboard&amp;quot;
    MatchIsKeyboard &amp;quot;on&amp;quot;
    MatchDevicePath &amp;quot;/dev/input/event*&amp;quot;
    MatchVendor &amp;quot;Lord_Corp&amp;quot;
    Driver &amp;quot;evdev&amp;quot;
    Option &amp;quot;XkbLayout&amp;quot;      &amp;quot;fr,fr,us&amp;quot;
    Option &amp;quot;XkbVariant&amp;quot;     &amp;quot;bepo,oss, &amp;quot;
    Option &amp;quot;XkbOptions&amp;quot;     &amp;quot;compose:rctrl,terminate:ctrl_alt_bksp,grp:caps_toggle&amp;quot;
EndSection
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;As simple as that&lt;/p&gt;

&lt;h2 id=&#34;how-does-it-work&#34;&gt;How does it work ?&lt;/h2&gt;

&lt;p&gt;So Xorg works with some &lt;em&gt;&amp;ldquo;drivers&amp;rdquo;&lt;/em&gt; where one is &lt;strong&gt;evdev&lt;/strong&gt; which must find all the input devices and configure them. It works by scanning &lt;em&gt;/dev/input/&lt;/em&gt; and reading each file corresponding to every input devices found by the kernel.&lt;/p&gt;

&lt;p&gt;Depending on the type of a device (mouse/keyboard/tactile board/…) it will apply a different configuration. It does this thanks to &lt;strong&gt;catchall&lt;/strong&gt; rules.&lt;/p&gt;

&lt;p&gt;Evdev is generous as it lets you apply specific configuration to specific a device by selecting it with additional &lt;em&gt;match&lt;/em&gt;. In my case, i pick the &lt;em&gt;Vendor&lt;/em&gt; field (provided by the device) matching &lt;em&gt;Lord_Corp&lt;/em&gt;.&lt;/p&gt;

&lt;h3 id=&#34;where-do-i-find-matching-criteria&#34;&gt;Where do I find matching criteria ?&lt;/h3&gt;

&lt;p&gt;Easy: &lt;strong&gt;&lt;em&gt;xinput &amp;ndash;list &amp;ndash;long&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Filmmenu, a little script to launch movies</title>
      <link>https://lord.re/en/posts/69-script-dmenu-video/</link>
      <pubDate>Sat, 27 Jan 2018 12:57:33 +0100</pubDate>
      
      <guid>https://lord.re/en/posts/69-script-dmenu-video/</guid>
      <description>&lt;p&gt;Here is a quick blogpost to show you &lt;strong&gt;filmmenu&lt;/strong&gt;. I use a NAS at home with many hard drives and many partitions. I don&amp;rsquo;t have a RAID (no need) so my files are scattered in all partitions.&lt;/p&gt;

&lt;p&gt;All my datas are well sorted except for movies which are in multiple partitions. So when I&amp;rsquo;m looking for a specific movie, I never know where to look at. So I wrote this think :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#! /bin/sh
DB=&amp;quot;/var/db/filmmenu&amp;quot;
if [ $(mountpoint -q /mnt/bender) ]
then
        timeout 3 i3-nagbar -m &amp;quot;/mnt/bender n&#39;est pas mount ! Un ptit coup de sshfs au préalable&amp;quot;
        exit
fi
if [ -r $DB ]
then
        if [  $(date -r &amp;quot;$DB&amp;quot; +%s) -lt $(date +%s --date &#39;45 days ago&#39;) ]
        then
                timeout 4 i3-nagbar -t warning -m &amp;quot;DB de plus de 45 jours, update !&amp;quot;
        fi
                exec mpv &amp;quot;$(cat &amp;quot;$DB&amp;quot; | dmenu -i -l 10 -lh 40 -fn &#39;Droid Sans Mono-15&#39;)&amp;quot;
  exit
else
        printf &amp;quot;Création de la DB\n&amp;quot;
        timeout 3 i3-nagbar -t warning -m &amp;quot;Création de $DB, on vous prévient quand c&#39;est fini&amp;quot;
        find /mnt/bender/stockage/*/films/ &amp;gt; &amp;quot;$DB&amp;quot;
        timeout 3 i3-nagbar -t warning -m &amp;quot;$DB créé, c&#39;est tout bon. Vous pouvez relancer la commande&amp;quot;
fi
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I launch it with &lt;strong&gt;&lt;em&gt;Alt è&lt;/em&gt;&lt;/strong&gt; in i3. Here what it does :&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Mountpoint&lt;/em&gt; checks that the NAS is mounted on the right place. If it&amp;rsquo;s not it spits an &lt;em&gt;i3-nagbar&lt;/em&gt; which is a small utility from i3 displaying a bar with a configured message.&lt;/p&gt;

&lt;p&gt;Then we test if the database exists and if it&amp;rsquo;s not older than 45 days. If it&amp;rsquo;s not we create the file with a basic &lt;em&gt;find&lt;/em&gt; redirected to a file (the database).&lt;/p&gt;

&lt;p&gt;We then give the file to &lt;em&gt;dmenu&lt;/em&gt; which prompts the user to select which movie to watch. Then &lt;em&gt;mpv&lt;/em&gt; gets the movie path and plays it.&lt;/p&gt;

&lt;p&gt;Quick &amp;amp; Easy&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Mozilla starts restricting new Firefox features to HTTPS-served pages</title>
      <link>https://lord.re/en/fast-posts/07-mozilla-features-unencrypted/</link>
      <pubDate>Wed, 17 Jan 2018 13:00:08 +0100</pubDate>
      
      <guid>https://lord.re/en/fast-posts/07-mozilla-features-unencrypted/</guid>
      <description>&lt;p&gt;In its quest to a safer web, &lt;a href=&#34;https://blog.mozilla.org/security/2018/01/15/secure-contexts-everywhere/&#34;&gt;Mozilla just announced&lt;/a&gt; they are going to &lt;strong&gt;restrict new firefox features to webpages served through HTTPS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Even if i&amp;rsquo;m completely convinced that HTTPS should be used everywhere i reckon that it can&amp;rsquo;t be done in all cases.&lt;/p&gt;

&lt;p&gt;Sometimes it&amp;rsquo;s not possible to deploy HTTPS. Here is some examples which come to my mind :
  - If the webserver isn&amp;rsquo;t connected to the Internet, it&amp;rsquo;s getting complicated to get a valid cert (it&amp;rsquo;s a completely legitimate use case to deploy a webserver without Internet access).
  - If the webclient can&amp;rsquo;t keep the timedate while off it can be complicated to validate a cert too (many devices don&amp;rsquo;t have a realtime clock like all the raspberries).
  - When you are using a machine with an outdated openssl not too old but old enough to not being compatible with modern crypto…&lt;/p&gt;

&lt;p&gt;That&amp;rsquo;s for all these reasons that contrary to many common guidelines, I don&amp;rsquo;t redirect unencrypted trafic to HTTPS. It&amp;rsquo;s a choice i let to my visitors. If they wan&amp;rsquo;t secure content they can have it, if they don&amp;rsquo;t I won&amp;rsquo;t force them.&lt;/p&gt;

&lt;p&gt;Well, I hope Mozilla won&amp;rsquo;t extend this restriction to their older features.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The death of Vimperator : how does an opensource software die ?</title>
      <link>https://lord.re/en/fast-posts/05-la-mort-dun-soft-opensource/</link>
      <pubDate>Wed, 10 Jan 2018 11:51:39 +0100</pubDate>
      
      <guid>https://lord.re/en/fast-posts/05-la-mort-dun-soft-opensource/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s over for Vimperator. While Firefox dropped its old API, Vimperator couldn&amp;rsquo;t survive. I don&amp;rsquo;t know why but it&amp;rsquo;s with a pinch in the heart that I see &lt;a href=&#34;https://github.com/vimperator/vimperator-labs/issues/705#event-1416604816&#34;&gt;the closing of the github issue&lt;/a&gt; which could have saved it.&lt;/p&gt;

&lt;p&gt;There is nothing new. We knew it for more than a year but today is the day. Just with the little red icon notifying the end. The repo will still be there with the code and all to be archived. A testimony of a finished era.&lt;/p&gt;

&lt;p&gt;But don&amp;rsquo;t be too sad, it&amp;rsquo;s legacy will remain strong. There is a small community of addons mimicking vimperator which rise from its hashes. Qutebrowser also is gaining some users. So all is not lost. Vimperator is now a fertilizer for a lot of new opensource projects so it&amp;rsquo;s a good news !&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Monoculture disaster in the CPU world in early 2018</title>
      <link>https://lord.re/en/fast-posts/04-faille-cpu-intel-2018/</link>
      <pubDate>Tue, 02 Jan 2018 22:05:14 +0100</pubDate>
      
      <guid>https://lord.re/en/fast-posts/04-faille-cpu-intel-2018/</guid>
      <description>

&lt;p&gt;Monocultures proved multiple times they were risky not only in the IT world. When you plant only one type of vegetables, you risk losing everything when an insect or a disease chooses you. Today, time has come for Intel CPUs to suffer.&lt;/p&gt;

&lt;h2 id=&#34;intel-s-monopoly&#34;&gt;Intel&amp;rsquo;s monopoly&lt;/h2&gt;

&lt;p&gt;Intel is a leader in CPU for many decades and sometimes it becomes a monopoly. It&amp;rsquo;s like this for at least ten years. AMD is just recovering thanks to its new Zen architecture after ten years of despair. Intel is alone in the server world (Xeon are everywhere) and only some left overs is shared to AMD in the laptop/desktop world. We can also notice that those last 7 years, CPU&amp;rsquo;s performances stalled a bit. My current computer hasn&amp;rsquo;t changed for six years and is still competitive today (but it&amp;rsquo;s another story). The actual monopoly is a strong monoculture of Intel CPUs in the amd64 world.&lt;/p&gt;

&lt;h2 id=&#34;so-what&#34;&gt;So what ?&lt;/h2&gt;

&lt;p&gt;Well, a security breach has been found. We still don&amp;rsquo;t know everything as there is an embargo for now to let some time to the devs to publish patches. Apparently &lt;strong&gt;every Intel systems are affected&lt;/strong&gt; (from the last 10 years).&lt;/p&gt;

&lt;p&gt;This breach comes from a bug in the hardware architecture of the cpu. There is a patch for the linux kernel but it comes with a major drawback. There is a &lt;strong&gt;5 to 50% performance loss&lt;/strong&gt; on some &lt;em&gt;syscalls&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We also now know that AMD isn&amp;rsquo;t affected thanks to a &lt;a href=&#34;https://lkml.org/lkml/2017/12/27/2&#34;&gt;second patch&lt;/a&gt;.&lt;/p&gt;


&lt;figure&gt;
    &lt;a href=&#34;https://lord.re/en/static/meltdown.min.svg&#34;&gt;
        &lt;img src=&#34;https://lord.re/en/static/meltdown.min.svg&#34; /&gt;
    &lt;/a&gt;
    
    &lt;figcaption&gt;
        &lt;h4&gt;Official logo of the Meltdown attack&lt;/h4&gt;
        
    &lt;/figcaption&gt;
    
&lt;/figure&gt;


&lt;h2 id=&#34;is-it-serious-serious-or-just-serious&#34;&gt;Is it serious SERIOUS or just serious ?&lt;/h2&gt;

&lt;p&gt;It is &lt;strong&gt;&lt;em&gt;SERIOUS&lt;/em&gt;&lt;/strong&gt;. This breach is exploitable on many levels. Virtualized systems are impacted. Apparently it can even be used through specially crafted javascript.&lt;/p&gt;

&lt;p&gt;So, even a personal machine could be affected through a web page. Every VM hoster is probably patching as soon as possible.&lt;/p&gt;

&lt;p&gt;We don&amp;rsquo;t know for now every details but as usual we don&amp;rsquo;t know if it&amp;rsquo;s already used in the wild.&lt;/p&gt;


&lt;figure&gt;
    &lt;a href=&#34;https://lord.re/en/static/spectre.min.svg&#34;&gt;
        &lt;img src=&#34;https://lord.re/en/static/spectre.min.svg&#34; /&gt;
    &lt;/a&gt;
    
    &lt;figcaption&gt;
        &lt;h4&gt;Official logo of the Meltdown attack&lt;/h4&gt;
        
    &lt;/figcaption&gt;
    
&lt;/figure&gt;


&lt;h2 id=&#34;what-to-do&#34;&gt;What to do ?&lt;/h2&gt;

&lt;p&gt;Patch as soon as your OS release the update.&lt;/p&gt;

&lt;p&gt;And for the next time, buy some AMD system to lessen the Intel monopoly. The new Zen architecture is performing more or less the same as Intel and you can have more cores for the same price.&lt;/p&gt;

&lt;h2 id=&#34;a-bit-more-reading&#34;&gt;A bit more reading :&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&#34;http://pythonsweetness.tumblr.com/post/169166980422/the-mysterious-case-of-the-linux-page-table&#34;&gt;The blogpost which started drawing attention on this&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://cyber.wtf/2017/07/28/negative-result-reading-kernel-memory-from-user-mode/&#34;&gt;How to read kernel memory from usermode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://www.reddit.com/r/sysadmin/comments/7nl8r0/intel_bug_incoming/&#34;&gt;Reddit thread on the subject&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;a href=&#34;https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/&#34;&gt;Mozilla explain how they reduce the breach&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;ps&#34;&gt;PS :&lt;/h2&gt;

&lt;p&gt;We have a lot more information. First there is 2 breaches. One called &lt;strong&gt;Spectre&lt;/strong&gt; and another one &lt;strong&gt;Meltdown&lt;/strong&gt; and there is now an &lt;a href=&#34;https://spectreattack.com/&#34;&gt;official website&lt;/a&gt; which confirms more or less everything we suspected. It&amp;rsquo;s still &lt;strong&gt;&lt;em&gt;unclear&lt;/em&gt;&lt;/strong&gt; if AMD and/or ARM is affected or not.&lt;/p&gt;

&lt;h2 id=&#34;ps2&#34;&gt;PS2 :&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;05/01/2018 :&lt;/em&gt; We now know that this breach can be exploited from javascript. Web browsers need to be patched. You could disable javascript while waiting for a patch. You&amp;rsquo;ll see that the web from 2018 is quite fast without js.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Last 2017 Firefox&#39; Drama</title>
      <link>https://lord.re/en/fast-posts/03-drama-firefox-fin-2017/</link>
      <pubDate>Sun, 17 Dec 2017 10:43:22 +0100</pubDate>
      
      <guid>https://lord.re/en/fast-posts/03-drama-firefox-fin-2017/</guid>
      <description>

&lt;p&gt;Mozilla had a great year. Since Chrome&amp;rsquo;s first release and its gigantic marketing (remember those video ads, giants billboards in all inhabited place, and all those links on Google&amp;rsquo;s websites…), Firefox&amp;rsquo;s market shares slowly diminished. But Mozilla is awakening and many of its efforts starts to show off.&lt;/p&gt;

&lt;p&gt;Now Mozilla release “oxidized” Firefox (it means they are implementing more and more code written in Rust (rust… oxide… it&amp;rsquo;s not my idea, it&amp;rsquo;s semi-official)) and rebuild all its infrastructure with some trade offs. The biggest one is the end of all the ancients addon&amp;rsquo;s API and the adoption of a new one : webextension. It&amp;rsquo;s a big loss but it&amp;rsquo;s for better stability and security. Many users felt betrayed and choose to change their browser (mainly to adopt browsers with the same new addons api than firefox (&lt;a href=&#34;https://media.tenor.co/images/231e2f67bc42bbfcff592d58f0e9517e/raw&#34;&gt;ironic&lt;/a&gt;)), &lt;a href=&#34;https://lord.re/en/en/posts/64-qutebrowser/&#34;&gt;me included&lt;/a&gt;. But finally the ultimate drama of 2017 is elsewhere.&lt;/p&gt;

&lt;h2 id=&#34;spyglass&#34;&gt;SpyGlass&lt;/h2&gt;

&lt;p&gt;Mozilla pushed to all Firefoxes a small unactivated addon. But if you accidentally go to &lt;strong&gt;about:config&lt;/strong&gt; and change the right setting, to the right value, you could have activated this addon which adds headers and other references to &lt;a href=&#34;https://en.wikipedia.org/wiki/Mr._Robot&#34;&gt;Mr Robot&lt;/a&gt;. Such a drama !&lt;/p&gt;

&lt;p&gt;Seriously, if you are panicking because an unwanted addon has been auto installed but not activated without your consent you should stand back a little. &lt;strong&gt;&lt;em&gt;You just have a self-updating browser (in most cases), which can add code you (probably) can&amp;rsquo;t see (whereas you can see a new installed addon), which add code you can&amp;rsquo;t remove (whereas you can remove an addon) and which is limited (whereas actual code can access your filesystem, network and hardware).&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Moreover, if your reaction is to adopt a closed-source browser (most other browsers), you expose yourself to the exact same thing but without all the advantages from an addon (security, restricted access, removability, discoverability) and you can add all the bad stuff that comes with closed-sources software…&lt;/p&gt;

&lt;p&gt;I reckon Mozilla&amp;rsquo;s attitude is pretty bad. No communication at all, it looks like an ad and/or hacking attempt. But it&amp;rsquo;s far from all the closed-source problems.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;PS&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mozilla started communicating about it in &lt;a href=&#34;https://support.mozilla.org/en-US/kb/lookingglass&#34;&gt;its knowledge pase&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>AMD Graphic Drivers 2017</title>
      <link>https://lord.re/en/fast-posts/02-drivers-amd-2017/</link>
      <pubDate>Thu, 14 Dec 2017 17:02:52 +0100</pubDate>
      
      <guid>https://lord.re/en/fast-posts/02-drivers-amd-2017/</guid>
      <description>

&lt;p&gt;In 2007, AMD adopted a new strategy about their graphics drivers after their ATI acquisition. They decided to help opensource graphics drivers developers by releasing a lot of documentation.&lt;/p&gt;

&lt;p&gt;A few years later they helped more by dedicating some of their devs to the opensource driver.&lt;/p&gt;

&lt;p&gt;Again, they later adopted a new architecture where their proprietary driver and the opensource one share the same kernel module to mutualize devs efforts.&lt;/p&gt;

&lt;p&gt;What did they just do ? They opensourced their Vulkan implementation. There is now two opensource implementations available for radeon users. The historic one in mesa whose performance are still far from optimal but fully functional. The new one from AMD burrow a lot of code with their Window&amp;rsquo;s vulkan implementation.&lt;/p&gt;

&lt;p&gt;They also released a new installer which let user choose which parts they want to install : you can mix proprietary and libre. What to expect more ? (nVidia ? Would you do the same ?)&lt;/p&gt;

&lt;h2 id=&#34;and-in-gentoo&#34;&gt;And in Gentoo ?&lt;/h2&gt;

&lt;p&gt;I recently replaced my old radeon 6950 with a radeon rx580. To do this i edited &lt;em&gt;/etc/portage/make.conf&lt;/em&gt; to change the right variable &lt;strong&gt;VIDEO_CARDS=&amp;ldquo;amdgpu radeonsi&amp;rdquo;&lt;/strong&gt; , then &lt;strong&gt;emerge -uDnav @world&lt;/strong&gt; the last thing to do is putting the new firmware in &lt;em&gt;/lib/firmware&lt;/em&gt; and edit &lt;em&gt;/usr/src/linux/.config&lt;/em&gt; to add it :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CONFIG_EXTRA_FIRMWARE=&amp;quot;amdgpu/polaris10_ce_2.bin amdgpu/polaris10_ce.bin \
amdgpu/polaris10_k_smc.bin amdgpu/polaris10_mc.bin amdgpu/polaris10_me_2.bin \
amdgpu/polaris10_me.bin amdgpu/polaris10_mec2_2.bin amdgpu/polaris10_mec_2.bin \
amdgpu/polaris10_mec2.bin amdgpu/polaris10_mec.bin amdgpu/polaris10_pfp_2.bin \
amdgpu/polaris10_pfp.bin amdgpu/polaris10_rlc.bin amdgpu/polaris10_sdma1.bin \
amdgpu/polaris10_sdma.bin amdgpu/polaris10_smc.bin amdgpu/polaris10_smc_sk.bin \ 
amdgpu/polaris10_uvd.bin amdgpu/polaris10_vce.bin&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And voilà ! A kernel compilation and a reboot later and it&amp;rsquo;s ok…&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Fast-Posts</title>
      <link>https://lord.re/en/fast-posts/01-fast-posts/</link>
      <pubDate>Wed, 13 Dec 2017 22:35:07 +0100</pubDate>
      
      <guid>https://lord.re/en/fast-posts/01-fast-posts/</guid>
      <description>&lt;p&gt;Here is a new section on my web site. &lt;strong&gt;Fast posts&lt;/strong&gt;. I post more and more on my site. I try to produce content of &lt;em&gt;better quality&lt;/em&gt;. Articles become &lt;em&gt;longer&lt;/em&gt; and &lt;em&gt;need more work&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;You probably notice that i &lt;em&gt;greatly increased the release rythm&lt;/em&gt;. At first it was tedious but it comes more naturally now. I find it quite appealing writing on my site. I&amp;rsquo;d like publishing &lt;em&gt;more regularly&lt;/em&gt; but if i stick to big complexes articles I won&amp;rsquo;t be able to sustain this effort for long. So I decided to open a new section dedicated to &lt;em&gt;shorter articles&lt;/em&gt;. I&amp;rsquo;ll probably react to &lt;em&gt;news headlines&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;For now I&amp;rsquo;m not sure how to differentiate the content on the site. I tweaked the theme i use and probably continue in the following weeks. I hope my english writing skills will improve. I do my best but even in the French version there are a lot of spelling mistakes.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>My software wishlist : Vol1</title>
      <link>https://lord.re/en/posts/65-software-wishlist-vol1/</link>
      <pubDate>Wed, 22 Nov 2017 15:08:53 +0100</pubDate>
      
      <guid>https://lord.re/en/posts/65-software-wishlist-vol1/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s my 2017 letter to Santa Code. I don&amp;rsquo;t think all my wishes will be answered but we never know…
&lt;/p&gt;

&lt;h2 id=&#34;le-magic-pipe&#34;&gt;||| : Le magic pipe&lt;/h2&gt;

&lt;p&gt;You know what really grinds my gear ? I frequently open many terminal emulators. Often i connect to various remote boxes. Sometimes with multiple jumps. Even sometime on machines without Internet access (containers and VM accessed from the hypevisor).&lt;/p&gt;

&lt;p&gt;Well. You just want to transfer a file between two of your terms… it&amp;rsquo;s only spaced by some pixels on your screen but they can&amp;rsquo;t connect each other !&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GRRRRRRRRRRR&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Close your eyes.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Breathe slowly.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Hold back your tears.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Open a new tmux session.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Curse yourself.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Reconnect to your machines.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Struggle with tmux to write the scrollback buffer while praying it&amp;rsquo;s big enough to fit everything you need.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You see the mess. What I propose is : &lt;strong&gt;cat my file |||&lt;/strong&gt; in one term and in another one &lt;strong&gt;||| &amp;gt; my file&lt;/strong&gt;. It looks unrealistic, I know. But frankly : who wouldn&amp;rsquo;t want this ? I could be done on &lt;strong&gt;tmux&amp;rsquo;s layer&lt;/strong&gt; or below, directly on the &lt;strong&gt;terminal&amp;rsquo;s level&lt;/strong&gt; (with a daemon or something else).&lt;/p&gt;

&lt;h2 id=&#34;openssh-escape-sequence-to-initialize-file-transfert&#34;&gt;OpenSSH Escape Sequence to initialize file transfert&lt;/h2&gt;

&lt;p&gt;As seen above i often connect to multiple remote machines with SSH. You are deep in you filesystem tree and you need to transfer a file. I keeps bugging me to have to open a new term to launch a &lt;em&gt;SCP&lt;/em&gt; command.&lt;/p&gt;

&lt;p&gt;My simple solution would be to create a new escape sequence in OpenSSH (you know ? Commands beggining with &lt;strong&gt;~.&lt;/strong&gt; to disconnect or &lt;strong&gt;~?&lt;/strong&gt; to see all commands available). For now, you can create a new tunnel or close one but that&amp;rsquo;s more or less all you can do.&lt;/p&gt;

&lt;p&gt;Adding &lt;strong&gt;~u&lt;/strong&gt; and &lt;strong&gt;~d&lt;/strong&gt; for example to upload or download a file in the actual connexion (it&amp;rsquo;s permitted by the protocol itself). This feature exist in some obscure ssh client elsewhere but who doesn&amp;rsquo;t use openSSH ?&lt;/p&gt;

&lt;h2 id=&#34;learn-to-the-linux-kernel-to-scan-devices-before-mounting-a-raid-btrfs&#34;&gt;Learn to the linux kernel to scan devices before mounting a Raid BTRFS&lt;/h2&gt;

&lt;p&gt;I&amp;rsquo;m now a happy user of a RAID6 BTRFS (I am the DANGER, I am the one who loose all its data) but i had to create an initramfs to be able to mount the root filesystem. To mount a multi devices btrfs you must scan all the devices before doing it (&lt;strong&gt;btrfs device scan&lt;/strong&gt;) and then you can mount your fs. The linux kernel could do it by itself but no :-(&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Qutebrowser</title>
      <link>https://lord.re/en/posts/64-qutebrowser/</link>
      <pubDate>Wed, 08 Nov 2017 16:03:10 +0100</pubDate>
      
      <guid>https://lord.re/en/posts/64-qutebrowser/</guid>
      <description>

&lt;p&gt;It&amp;rsquo;s been some months now that i migrated to Qutebrowser. It&amp;rsquo;s a small web browser not so popular which differentiate itself not by it&amp;rsquo;s engine (but in fact yes a bit !) but thanks to it&amp;rsquo;s user interface. It&amp;rsquo;s clearly not intuitive but it&amp;rsquo;s blazingly fast and efficient !&lt;/p&gt;

&lt;h2 id=&#34;web-engines&#34;&gt;Web engineS&lt;/h2&gt;

&lt;p&gt;Qute can use many engines. First there is the good old webkit in it&amp;rsquo;s Qt flavor. But this one is on the road to deprecation Then you can use webkit-ng which is the direct successor. More or less the same thing… Finally you can choose qt-webengine.&lt;/p&gt;

&lt;p&gt;You may not know this one but in fact it&amp;rsquo;s Blink the google made chrome webengine but in a qt flavor. That&amp;rsquo;s the one i choose.&lt;/p&gt;

&lt;h2 id=&#34;the-user-interface&#34;&gt;The User Interface&lt;/h2&gt;

&lt;p&gt;The main advantage of QuteBrowser (or just Qute or QB) is it&amp;rsquo;s interface. It&amp;rsquo;s inspired by famous firefox&amp;rsquo;s addons : Pentadactyl and Vimperator. The idea is to ditch most of the visible interface and to rely on keybindings and commands from vim. You can now throw your mouse away and sit confortably with your keyboard !&lt;/p&gt;

&lt;p&gt;All your interactions will use the keyboard. The only remaining graphic interface is the &lt;em&gt;status bar&lt;/em&gt; on the bottom where you have the actual URL, the scrolling percentage, and the tabs.&lt;/p&gt;


&lt;figure&gt;
    
        &lt;img src=&#34;https://lord.re/en/static/qute1.png&#34; alt=&#34;screenshot of qutebrowser&#34; /&gt;
    
    
    &lt;figcaption&gt;
        &lt;h4&gt;Qutebrowser&amp;#39;s interface showing the french version of my blog&lt;/h4&gt;
        
    &lt;/figcaption&gt;
    
&lt;/figure&gt;


&lt;p&gt;As you can see, it&amp;rsquo;s quite minimalist.&lt;/p&gt;

&lt;p&gt;All your interactions will be the same as in &lt;strong&gt;vim&lt;/strong&gt;. You&amp;rsquo;ll use the famous &lt;strong&gt;&lt;em&gt;hjkl&lt;/em&gt;&lt;/strong&gt; (i don&amp;rsquo;t use them as my keyboard layout doesn&amp;rsquo;t match at all) to move yourself. The &lt;strong&gt;&lt;em&gt;G&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;gg&lt;/em&gt;&lt;/strong&gt; to go directly to the beginning/end of the page.&lt;/p&gt;

&lt;p&gt;One crucial thing is &lt;strong&gt;&lt;em&gt;f&lt;/em&gt;&lt;/strong&gt; which will let you &lt;em&gt;hint&lt;/em&gt; all the links. It will add a small label on every links you&amp;rsquo;ll have to type to open the corresponding link. In my case, i changed the mode to &lt;em&gt;number&lt;/em&gt; (&lt;strong&gt;:set hints.mode number&lt;/strong&gt;). I now just type &lt;strong&gt;f&lt;/strong&gt; then i enter some letters of the link&amp;rsquo;s text and if there is only one match it&amp;rsquo;s done. If there is more than one, i just type the number of the label and it&amp;rsquo;s good.&lt;/p&gt;

&lt;p&gt;
&lt;figure&gt;
    
        &lt;img src=&#34;https://lord.re/en/static/qute2.png&#34; alt=&#34;qutebrowser screenshot showing the hint mode&#34; /&gt;
    
    
    &lt;figcaption&gt;
        &lt;h4&gt;Hint mode&lt;/h4&gt;
        
    &lt;/figcaption&gt;
    
&lt;/figure&gt;


&lt;figure&gt;
    
        &lt;img src=&#34;https://lord.re/en/static/qute3.png&#34; alt=&#34;qutebrowser screenshot showing the hint mode&#34; /&gt;
    
    
    &lt;figcaption&gt;
        &lt;h4&gt;After i typed home&lt;/h4&gt;
        
    &lt;/figcaption&gt;
    
&lt;/figure&gt;
&lt;/p&gt;

&lt;p&gt;It may seems slow and counter-intuitive at first but after a couple hours you&amp;rsquo;ll never go back. It&amp;rsquo;s way faster than the traditionnal system especially if you are already a vimist.&lt;/p&gt;

&lt;h2 id=&#34;using-it&#34;&gt;Using it&lt;/h2&gt;

&lt;h3 id=&#34;text-edition&#34;&gt;Text edition&lt;/h3&gt;

&lt;p&gt;Like vim, Qute is modal. By default you are in &lt;em&gt;normal mode&lt;/em&gt;. If you go to a text field (with &lt;strong&gt;&lt;em&gt;f&lt;/em&gt;&lt;/strong&gt; or by clicking), qute will automatically switch to &lt;em&gt;&amp;ndash; INSERT MODE &amp;ndash;&lt;/em&gt; but sometimes it doesn&amp;rsquo;t (thanks js) so you must manually press &lt;strong&gt;&lt;em&gt;i&lt;/em&gt;&lt;/strong&gt;. If you are on a page using hotkeys, you&amp;rsquo;ll have to manually go to this mode too.&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s nice and all but you edit something longer than usual like a wiki page or a mail will you really write it on your browser ? Nahhh. You&amp;rsquo;ll use vim ! In a text field press &lt;strong&gt;&lt;em&gt;^e&lt;/em&gt;&lt;/strong&gt; and your favorite (vim of course (or maybe emacs (really ? nano ?!))) will spawn. Once saved and closed all your text will appear in qute by magic ! (To change the editor &lt;strong&gt;:set editor.command &amp;lsquo;[&amp;ldquo;alacritty&amp;rdquo;, &amp;ldquo;-e&amp;rdquo;, &amp;ldquo;vim&amp;rdquo;, &amp;ldquo;{}&amp;rdquo;]&amp;rsquo;&lt;/strong&gt; ).&lt;/p&gt;

&lt;h3 id=&#34;thee-status-bar&#34;&gt;Thee status bar&lt;/h3&gt;

&lt;p&gt;Like in vim, you can launch commands with &lt;strong&gt;:&lt;/strong&gt; . For example : &lt;strong&gt;:set content.javascript.enabled false&lt;/strong&gt; or i don&amp;rsquo;t know &lt;strong&gt;:view-source&lt;/strong&gt; … There is a good autocompletion system.&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s also here that you&amp;rsquo;ll type your searches and url. You can launch &lt;strong&gt;:open your search&lt;/strong&gt; or &lt;strong&gt;:open lord.re&lt;/strong&gt; or just type &lt;strong&gt;&lt;em&gt;o&lt;/em&gt;&lt;/strong&gt; then your url. If you want to edit the current url it&amp;rsquo;s &lt;strong&gt;&lt;em&gt;O&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h3 id=&#34;search-engines&#34;&gt;Search engines&lt;/h3&gt;

&lt;p&gt;By default, if you type a string of text which isn&amp;rsquo;t an url it will search your string in your default search engine.&lt;/p&gt;

&lt;p&gt;But you can add other search enginges which you can choose by typing their character. For example i use a lot &lt;strong&gt;:open w linux&lt;/strong&gt; to open the wikipedia page for &lt;em&gt;linux&lt;/em&gt;. And also &lt;strong&gt;:open y slayer&lt;/strong&gt; to open the youtube&amp;rsquo;s results for &lt;em&gt;slayer&lt;/em&gt;. To configure Qute like this just &lt;strong&gt;:set url.searchengines &amp;lsquo;{&amp;ldquo;DEFAULT&amp;rdquo;: &amp;ldquo;&lt;a href=&#34;https://duckduckgo.com/?q={}&amp;quot;&#34;&gt;https://duckduckgo.com/?q={}&amp;quot;&lt;/a&gt;, &amp;ldquo;w&amp;rdquo;: &amp;ldquo;&lt;a href=&#34;https://fr.wikipedia.org/w/index.php?search={}&amp;quot;&#34;&gt;https://fr.wikipedia.org/w/index.php?search={}&amp;quot;&lt;/a&gt;, &amp;ldquo;y&amp;rdquo;: &amp;ldquo;&lt;a href=&#34;https://www.youtube.com/results?search_query={}&amp;quot;}&#39;&#34;&gt;https://www.youtube.com/results?search_query={}&amp;quot;}&#39;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3 id=&#34;settings&#34;&gt;Settings&lt;/h3&gt;

&lt;p&gt;As we&amp;rsquo;ve see in the articles, you can edit settings with &lt;strong&gt;:set your.setting&lt;/strong&gt; . It&amp;rsquo;s really fast but sometimes you won&amp;rsquo;t find what you want. To see every settings available you can open &lt;a href=&#34;qute://settings&#34;&gt;qute://settings&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&#34;tabs&#34;&gt;Tabs&lt;/h3&gt;

&lt;p&gt;Tabs are called buffers (as in vim). As already &lt;a href=&#34;https://lord.re/en/posts/22-bureau-moderne/&#34;&gt;explained in 2012&lt;/a&gt;, i don&amp;rsquo;t use tabs but only rely on windows. I manage them with my window manager. Qute is well thought and provide you a nice way to enable this with &lt;strong&gt;:set tabs.tabs_are_windows&lt;/strong&gt; which is the most explicit settings of all :-)&lt;/p&gt;

&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;It&amp;rsquo;s a really good web browser wich can replace vimperator without too much troubles. Some features aren&amp;rsquo;s already here but they will come and now you can do 90% of what you did in vimperator. It&amp;rsquo;s a young browser made by a young coder. It&amp;rsquo;s community is growing slowly and its irc channel is very welcoming and active.&lt;/p&gt;

&lt;p&gt;Future evolutions are quite promising. The main dev wants to add a way to have per-domain settings. The ultimate goal is to be able to replicate uMatrix which is the only addon i miss from Firefox.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;a href=&#34;https://github.com/qutebrowser/qutebrowser/&#34;&gt;official github repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The &lt;a href=&#34;https://www.qutebrowser.org/&#34;&gt;official website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;tips-concerning-videos&#34;&gt;Tips concerning videos&lt;/h2&gt;

&lt;p&gt;I don&amp;rsquo;t like watching videos inside the web browser but i&amp;rsquo;m a big watcher of tv replays from arte or youtube videos and sometimes twitch&amp;rsquo;s streams. What i do is open the web page then ask MPV to open the page to play the video with &lt;strong&gt;&lt;em&gt;m&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I also added an &lt;em&gt;hint mode&lt;/em&gt; to open the page with MPV instead of qute with &lt;strong&gt;&lt;em&gt;Fm&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;:set bindings.commands ‘{“normal”: {“F”: null, “Fm”: “hint links spawn –detach mpv {hint-url}”, “m”: “spawn –detach mpv {url}”}}’&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Ultimate DNS guide v1</title>
      <link>https://lord.re/en/posts/63-dns-mega-guide/</link>
      <pubDate>Fri, 27 Oct 2017 13:05:06 +0200</pubDate>
      
      <guid>https://lord.re/en/posts/63-dns-mega-guide/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m revamping my DNS stack. For the two of you won&amp;rsquo;t don&amp;rsquo;t know what DNS is, it&amp;rsquo;s the reference directory of the Internet. It&amp;rsquo;s oversimplifying to say it like that. If fact DNS is a replicated, delegated big database. Translating an hostname to an IP is only of its purpose. Let&amp;rsquo;s go for the 2017 DNS Mega guide !
&lt;/p&gt;

&lt;p&gt;If you are the lonely regular english reader of my blog you&amp;rsquo;ll see that there will be some redundant information from some previous blog posts but that&amp;rsquo;s I want this article to be quite exhaustive.&lt;/p&gt;

&lt;h2 id=&#34;where-does-it-come&#34;&gt;Where does it come ?&lt;/h2&gt;

&lt;p&gt;Historically, when you tried to reach a remote host on the Internet, you had to know it&amp;rsquo;s IP adress. As the network grew it quicly became tedious to know all the adresses. So they used a text file containing the list of all the machines (the famous &lt;em&gt;hosts&lt;/em&gt; file). Syncing it was complex and it was a manual task of sending floppies with the file. And then : BIM ! DNS was born. A new distributed/replicated/delegated mondial database !&lt;/p&gt;

&lt;p&gt;DNS is organized as a tree where each branch is/can be delegated. As an example &lt;strong&gt;&lt;em&gt;www.lord.re&lt;/em&gt;&lt;/strong&gt; actually is &lt;strong&gt;&lt;em&gt;www.lord.re.&lt;/em&gt;&lt;/strong&gt; (notice the dot in the end). It&amp;rsquo;s a path which must be read from right to left.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First we have the root &lt;strong&gt;&lt;em&gt;.&lt;/em&gt;&lt;/strong&gt; on the far right. It&amp;rsquo;s managed by the &lt;strong&gt;ICANN&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The comes &lt;strong&gt;&lt;em&gt;.re&lt;/em&gt;&lt;/strong&gt; which is the TLD (Top Level Domain, aka domain name extension), which isn&amp;rsquo;t managed by ICANN but delegated to &lt;strong&gt;AFNIC&lt;/strong&gt; (which manage all french domains like .re (which is from La Réunion a french island in the Pacific Ocean).&lt;/li&gt;
&lt;li&gt;Then we find &lt;strong&gt;&lt;em&gt;.lord&lt;/em&gt;&lt;/strong&gt; which isn&amp;rsquo;t managed by AFNIC but by &lt;strong&gt;me&lt;/strong&gt; (as I rent the domain to a registrar).&lt;/li&gt;
&lt;li&gt;Finally &lt;strong&gt;&lt;em&gt;www&lt;/em&gt;&lt;/strong&gt; which targets my server which I also manage but i could have delegated to someone else.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now we will go deeper in the technical side of it. We will setup an authoritative DNS server on my -your- domain.&lt;/p&gt;

&lt;h2 id=&#34;take-yourself-a-domain-name-and-launch-your-server&#34;&gt;Take yourself a domain name and launch your server&lt;/h2&gt;

&lt;p&gt;First you won&amp;rsquo;t buy a domain name but you&amp;rsquo;ll rent it for one to ten years to a registrar (an authorized seller). Most of registrars can host your domain name but frankly… it&amp;rsquo;s way funnier to do it ourselves !&lt;/p&gt;

&lt;p&gt;In your registrar you&amp;rsquo;ll have to fill the &lt;strong&gt;Glue records&lt;/strong&gt;. It&amp;rsquo;s what links your domain name server to the parent&amp;rsquo;t zone. So you&amp;rsquo;ll have to give the IP adress and hostname of your DNS server. In my case &lt;em&gt;zapp.lord.re&lt;/em&gt; is the server and its adress is &lt;em&gt;62.210.201.160&lt;/em&gt; . Once done, you&amp;rsquo;ll mostly won&amp;rsquo;t have any more contacts with your registrar (except for dnssec and renewing).&lt;/p&gt;

&lt;p&gt;Now installing your DNS server… DIY. In my case I didn&amp;rsquo;t choose the venerable Bind but the almighty &lt;strong&gt;Knot&lt;/strong&gt; which i find way better. Setting it up is easier than Bind especially with &lt;strong&gt;DNSSEC&lt;/strong&gt;. Knot is developped by &lt;em&gt;Nic.cz&lt;/em&gt; which is the entity managing all &lt;em&gt;.cz&lt;/em&gt; domains. They also developped &lt;strong&gt;Bird&lt;/strong&gt; which is a routing open source software. They also build &lt;strong&gt;Turris&lt;/strong&gt; routers like the &lt;a href=&#34;https://lord.re/posts/44-turris-monia/&#34;&gt;Omnia&lt;/a&gt; i&amp;rsquo;m using right now. They build lot of opensource softwares and many infrastuctures tools. They are pushing &lt;strong&gt;DNSSEC&lt;/strong&gt; adoption with their browser extension to check &lt;a href=&#34;#tlsa&#34;&gt;&lt;strong&gt;DANE&lt;/strong&gt;&lt;/a&gt; signatures from websites you are browsing.&lt;/p&gt;

&lt;h2 id=&#34;confing-knot-dns&#34;&gt;Confing Knot DNS&lt;/h2&gt;

&lt;p&gt;Once knot is installed you&amp;rsquo;ll have to create the config file. The file is quite logic and straight forward. I&amp;rsquo;ll put almost all of it there :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;server:
    user: knot:knot
    listen: [ &amp;quot;0.0.0.0@53&amp;quot;, &amp;quot;::@53&amp;quot; ]
log:
  - target: /var/log/knot.log
    any : info
acl:
  - id: acl_localupdate
    address: 127.0.0.1
    action: update
control:
    listen: knot.sock
remote:
  - id: localupdate
    address: 127.0.0.1
template:
  - id: default
    storage: /var/lib/knot/zones
    acl: [ &amp;quot;acl_localupdate&amp;quot; ]
    kasp-db: /var/lib/knot/kasp
zone:
  - domain: lord.re.
    file: lord.re
    dnssec-signing: on
    dnssec-policy: default
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Everything is well sorted. Now you&amp;rsquo;ll have to put your zones files in &lt;em&gt;/var/lib/knot/zones&lt;/em&gt;. Knot will generate all the needed keys and will sign your zone by itself.&lt;/p&gt;

&lt;h2 id=&#34;gérer-la-redondance&#34;&gt;Gérer la redondance&lt;/h2&gt;

&lt;p&gt;Setup a secondary DNS server.&lt;/p&gt;

&lt;p&gt;This will come later. Sorry ;-)&lt;/p&gt;

&lt;h2 id=&#34;publishing-your-dnskey-or-ds-record-to-your-registrar&#34;&gt;Publishing your DNSKEY or DS Record to your registrar&lt;/h2&gt;

&lt;p&gt;The last thing to do with your registrar is giving them your DS record or DNSKEY of your KSK. Written like this it looks very hard but it&amp;rsquo;s not. This is the last required step to complete the trust chain needed by DNSSEC. Depending of your registrar you&amp;rsquo;ll give them the DNSKEY or the DS Record.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To find your &lt;strong&gt;&lt;em&gt;DS&lt;/em&gt;&lt;/strong&gt; : &lt;strong&gt;keymgr lord.re list&lt;/strong&gt; will show all your active keys. You must find the &lt;strong&gt;&lt;em&gt;KSK&lt;/em&gt;&lt;/strong&gt; et memorized its &lt;strong&gt;&lt;em&gt;tag&lt;/em&gt;&lt;/strong&gt;. Now &lt;strong&gt;keymgr lord.re ds 42754&lt;/strong&gt; (42754 is my ksk&amp;rsquo;s tag). The command will give you three records. It&amp;rsquo;s the three time the same but with different hash method. You&amp;rsquo;ll have to choose one (the bigger the better).&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;To get your &lt;strong&gt;&lt;em&gt;DNSKEY&lt;/em&gt;&lt;/strong&gt; it&amp;rsquo;s the nearly the same story : &lt;strong&gt;keymgr lord.re dnskey 42754&lt;/strong&gt; and there you go.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each time you&amp;rsquo;ll rollover (change) your KSK (it&amp;rsquo;s recommanded to do it every year or two) you&amp;rsquo;ll have to do it again. In fact DNSSEC use two type of keys :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;ZSK&lt;/em&gt;&lt;/strong&gt; (Zone Signing Key) which are used to sign each record in your zone. This key is quite small (to stay fast) so it must be renewed every month or so.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;KSK&lt;/em&gt;&lt;/strong&gt; (Key Signing Key) is only used to sign the KSK. This key is way bigger than zsk so it can be used longer and can be published to you registrar to be in the parent&amp;rsquo;s zone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you can close your registrar&amp;rsquo;s web interface and only get there to renew your domain in one year ;-)&lt;/p&gt;

&lt;h2 id=&#34;what-to-put-in-your-zone&#34;&gt;What to put in your zone ?&lt;/h2&gt;

&lt;p&gt;We can put many things in it, let&amp;rsquo;s start with the most common one :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;SOA&lt;/em&gt;&lt;/strong&gt; : Start Of Authority is a mandatory record which gives some required information about the zone, who is the master server, which mail to contact, the serial and some timeout valuess. Here is mine :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;lord.re.          3600    IN      SOA     zapp.lord.re. lord.lord.re. 2015033233 3600 7200 3600 180
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The master server (or authoritative) is &lt;em&gt;zapp.lord.re.&lt;/em&gt;, the contact mail is &lt;em&gt;lord.lord.re.&lt;/em&gt; (notice the strange syntax. The arobase is replaced by a dot (it&amp;rsquo;s easy to forge an invalid email adress)). Then come the serial &lt;em&gt;2015033233&lt;/em&gt; which &lt;em&gt;must&lt;/em&gt; be incremented each time you&amp;rsquo;ll edit your zone (you&amp;rsquo;ll forget and will encounter strange behaviors) then some expiry values.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;MX&lt;/em&gt;&lt;/strong&gt; : Mail eXchange gives server(s) to receive emails to your domain. You can have multiple servers give them different priorities. You can of course put servers from another domain than yours.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;lord.re.                2600    IN      MX      10 zapp.lord.re.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Here we see that my mail server is &lt;em&gt;zapp.lord.re&lt;/em&gt; and it&amp;rsquo;s assigned priority is &lt;em&gt;10&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;NS&lt;/em&gt;&lt;/strong&gt; : Name Server will give the different DNS servers which know your zone. The main practice is to give hostname to at least two servers and also to have the associated A records to these hostnames (like the glue records seen previously).&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;lord.re.                3600    IN      NS      zapp.lord.re.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The (lonely) nameserver for my zone is (once again) &lt;em&gt;zapp.lord.re.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;A&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;AAAA&lt;/em&gt;&lt;/strong&gt; : They are the most famous records. They bind an hostname to an IPv4 (A) or IPv6 (AAAA) adress.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;lord.re.                600     IN      A       92.167.84.9
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Here we see that &lt;em&gt;lord.re.&lt;/em&gt; can be found in &lt;em&gt;92.167.84.9&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this you&amp;rsquo;ll have most of your required records. Later in this blog post we will see more exotics records.&lt;/p&gt;

&lt;h2 id=&#34;editing-your-zone&#34;&gt;Editing your zone&lt;/h2&gt;

&lt;p&gt;There are three ways to edit your zone.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The first is the dirtiest : editing the zone file with your editor and tell Knot to reload the zone from the file. Not a good way to do it. Moreover, you must increment your serial. The problem is that knot will not update this file by itself so if there is an edit, your file won&amp;rsquo;t be synced.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The second way is clean and standardized. I used it for years as &lt;a href=&#34;https://lord.re/posts/38/update-dns&#34;&gt;i&amp;rsquo;ve already written in March 2015&lt;/a&gt;. It means using &lt;strong&gt;nsupdate&lt;/strong&gt; (or it&amp;rsquo;s knot variant &lt;strong&gt;knsupdate&lt;/strong&gt;). It&amp;rsquo;s clean, the syntax is understandable but i can&amp;rsquo;t remember it. Each time i have to reread my article.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;The third is more recent and is knot-specific : using &lt;strong&gt;knotc&lt;/strong&gt; to do all the edits.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&#34;1-barbaric-edits&#34;&gt;1 : Barbaric edits&lt;/h3&gt;

&lt;p&gt;You open the file &lt;em&gt;/var/lib/knot/zones/lord.re&lt;/em&gt; with your favorite editor and you edit it. You take care of the syntax and &lt;em&gt;don&amp;rsquo;t forget to increment the serial&lt;/em&gt;. Then you test the file with &lt;strong&gt;knotc zone-check lord.re&lt;/strong&gt; and then you reload with &lt;strong&gt;knotc zone-reload lord.re&lt;/strong&gt;. Job&amp;rsquo;s Done.&lt;/p&gt;

&lt;h3 id=&#34;2-interactive-k-nsupdate&#34;&gt;2 : Interactive (k)nsupdate&lt;/h3&gt;

&lt;p&gt;You launch &lt;strong&gt;knsupdate&lt;/strong&gt; which will result in an interactive shell.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    server 127.0.0.1 (you could edit a remote server by specifying its adress here)
    zone lord.re.
    update add|del lechamps 600 A 1.2.3.4 (choose if you want to add or delete a record)
    send
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Done. It&amp;rsquo;s fast and easy. You can also put all the commands in a text file and give it to nsupdate directly which is a good way to script it (but the third method is better to script).&lt;/p&gt;

&lt;h3 id=&#34;3-the-knot-s-way&#34;&gt;3 : The Knot&amp;rsquo;s way&lt;/h3&gt;

&lt;p&gt;You&amp;rsquo;ll do everything in your shell with &lt;strong&gt;knotc&lt;/strong&gt; :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    knotc zone-begin lord.re
    knotc zone-(un)set lord.re. truc.lord.re. 600 A 1.2.3.4 (you can specify multiple commands like this one)
    knotc zone-diff lord.re. (this is facultative but you&#39;ll get a little summary of the expected result)
    knotc zone-commit lord.re.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and there you go. No need to reload or increment serial.&lt;/p&gt;

&lt;h2 id=&#34;how-to-send-dns-requests&#34;&gt;How to send DNS requests ?&lt;/h2&gt;

&lt;p&gt;You&amp;rsquo;ll need to know a bit of a new tool : &lt;strong&gt;&lt;em&gt;dig&lt;/em&gt;&lt;/strong&gt; (or &lt;strong&gt;&lt;em&gt;kdig&lt;/em&gt;&lt;/strong&gt; it&amp;rsquo;s knot&amp;rsquo;s variant). It&amp;rsquo;s a bit verbose but easy to use and understand. Here&amp;rsquo;s the output of &lt;strong&gt;dig lord.re&lt;/strong&gt; :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.11.2 &amp;lt;&amp;lt;&amp;gt;&amp;gt; lord.re
;; global options: +cmd
;; Got answer:
;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 13708
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;lord.re.                       IN      A
;; ANSWER SECTION:
lord.re.                600     IN      A       92.167.84.9
;; Query time: 13 msec
;; SERVER: 10.0.0.254#53(10.0.0.254)
;; WHEN: Wed Oct 11 19:03:54 CEST 2017
;; MSG SIZE  rcvd: 52
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So what&amp;rsquo;s interesting in all this ? Hmmm… &lt;strong&gt;&lt;em&gt;status: NOERROR&lt;/em&gt;&lt;/strong&gt; first. It means that there was no error (don&amp;rsquo;t thank me, it&amp;rsquo;s all for you). You will encounter other responses like &lt;strong&gt;&lt;em&gt;NXDOMAIN&lt;/em&gt;&lt;/strong&gt; which means Non eXistant Domain (the same thing as error 404 from http) and sometime &lt;strong&gt;&lt;em&gt;SERVFAIL&lt;/em&gt;&lt;/strong&gt; which means an error from the server (bad configuration, bad zone or else (read your logs)).&lt;/p&gt;

&lt;p&gt;Next you&amp;rsquo;ll check the flags. You&amp;rsquo;ll want the &lt;strong&gt;&lt;em&gt;ad&lt;/em&gt;&lt;/strong&gt; flag which indicate that the response is DNSSEC valid.&lt;/p&gt;

&lt;p&gt;Then you have the &lt;strong&gt;&lt;em&gt;QUESTION SECTION&lt;/em&gt;&lt;/strong&gt; which shows what&amp;rsquo;s your request followed by the &lt;strong&gt;&lt;em&gt;ANSWER SECTION&lt;/em&gt;&lt;/strong&gt; which comes from the server. You also have the time it took to receive the answer and the adress of the server.&lt;/p&gt;

&lt;p&gt;You can query a specific server by adding &lt;strong&gt;&lt;em&gt;@8.8.8.8&lt;/em&gt;&lt;/strong&gt; for example. You can also specify which record you want to get and also if you want to have a trustable answer with dnssec. &lt;strong&gt;dig lord.re @8.8.8.8 +dnssec MX&lt;/strong&gt; or &lt;strong&gt;dig @8.8.8.8 +dnssec lord.re MX&lt;/strong&gt; (i find this order more logic).&lt;/p&gt;

&lt;p&gt;With this small howto you should be able to do almost all queries to debug all your dns problems !&lt;/p&gt;

&lt;h2 id=&#34;other-exotic-uses-of-dns&#34;&gt;Other exotic uses of DNS&lt;/h2&gt;

&lt;p&gt;Most of the time we use dns as simple directory to translate hostnames to IP adresses. But there are other uses.&lt;/p&gt;

&lt;p&gt;A frequent use is DNSBL systems : DNS Black List. It&amp;rsquo;s a way to query public (or paywalled) blacklists thanks to DNS requests. It&amp;rsquo;s quite popular among antispam systems. You just need to query a specifically designed dns server with the domain name of the sender mail server and the dns server will answer with predefined answers. For example &lt;em&gt;where is mail.sender.spam.com ?&lt;/em&gt; and the dnsbl&amp;rsquo;s response will be &lt;strong&gt;127.a.b.c&lt;/strong&gt; where &lt;em&gt;a&lt;/em&gt;, &lt;em&gt;b&lt;/em&gt; and &lt;em&gt;c&lt;/em&gt; corresponds to specific values indicating the spamminess level of the hostname. It&amp;rsquo;s a fast system very efficient. A good layer on your antispam.&lt;/p&gt;

&lt;p&gt;Let&amp;rsquo;s see some cases &lt;em&gt;we&lt;/em&gt; will use. With time, we added a lot of new record types in the DNS which some are now crucial.&lt;/p&gt;

&lt;h2 id=&#34;records-related-to-ssh-sshfp&#34;&gt;Records related to SSH : SSHFP&lt;/h2&gt;

&lt;p&gt;When you connect to an &lt;strong&gt;&lt;em&gt;SSH&lt;/em&gt;&lt;/strong&gt; server, it will send its fingerprint. It&amp;rsquo;s the only way to be sure the server IS the server you want and not another one : if the fingerprints changed from a previous session you SSH client will print you it&amp;rsquo;s prettiest error message. But but but ! &lt;em&gt;How to know if the first time you connect to the server that its fingerprint is the good one ?&lt;/em&gt; Well, just publish it in your DNS zone ?&lt;/p&gt;

&lt;p&gt;Your SSH fingerprint can be put in an &lt;strong&gt;&lt;em&gt;SSHFP&lt;/em&gt;&lt;/strong&gt; record. To generate it, on your SSH server just send &lt;strong&gt;ssh-keygen -r lord.re&lt;/strong&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;lord.re IN SSHFP 1 1 1516af909e7de59af0e4b7cbaefb81c5ddf36b70
lord.re IN SSHFP 1 2 f144fd71beb47a02cc904e305cc35c6ffe034e67b92aa54d1e382c1c1900a104
lord.re IN SSHFP 2 1 83664295d1e46c80cc3ba7865294cbd1649f6350
lord.re IN SSHFP 2 2 c1c1de2b19e6d4e451a9057a3ccc40a53ca29b69c7e2dd006ff4e8884c062ee6
lord.re IN SSHFP 3 1 1929f7d32788a5884d862d2c28a226c73fd62944
lord.re IN SSHFP 3 2 990dfb4b2f3486fb6bf5e5e5a3dd02344da6f42ce5b02992385dfbde30c5d24d
lord.re IN SSHFP 4 1 493848772bcb5b6225424e58e5274984d825f01a
lord.re IN SSHFP 4 2 335d5e9ec2d901b7ffd693fe614f73e4ad0afa40c72d9867dadfd155016c0029
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You have now a well formatted record to copy paste in your zone.&lt;/p&gt;

&lt;p&gt;It&amp;rsquo;s a good new default for ssh clients to check these records. In &lt;em&gt;/etc/ssh/ssh_config&lt;/em&gt; you should add &lt;strong&gt;&lt;em&gt;VerifyHostKeyDns yes&lt;/em&gt;&lt;/strong&gt; (or &lt;strong&gt;&lt;em&gt;ask&lt;/em&gt;&lt;/strong&gt;). With this in place you have greatly reduced the &lt;strong&gt;&lt;em&gt;TOFU&lt;/em&gt;&lt;/strong&gt; threat of SSH (Trust On First Use). You should really do it for all your SSH servers).&lt;/p&gt;

&lt;h2 id=&#34;records-related-to-tls-caa-and-tlsa&#34;&gt;Records related to TLS : CAA and TLSA&lt;/h2&gt;

&lt;h3 id=&#34;caa&#34;&gt;CAA&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://lord.re/en/posts/61-dns-caa/&#34;&gt;As previously seen&lt;/a&gt;, &lt;strong&gt;&lt;em&gt;CAA&lt;/em&gt;&lt;/strong&gt; records will avoid legit &lt;strong&gt;&lt;em&gt;CA&lt;/em&gt;&lt;/strong&gt; to sign a certificate for your domain if they are not the one you choose. I consider this new record almost mandatory now. It won&amp;rsquo;t protect you from a rogue CA but that&amp;rsquo;s not the same threat level. It can prevent another adminsys from using another CA behind your back. So here&amp;rsquo;s the only three lines you&amp;rsquo;ll need :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;lord.re.                600     IN      CAA     0 iodef &amp;quot;mailto:lord-x509@lord.re&amp;quot;
lord.re.                600     IN      CAA     0 issue &amp;quot;letsencrypt.org&amp;quot;
lord.re.                600     IN      CAA     0 issuewild &amp;quot;letsencrypt.org&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The first line is the mail adress a CA will contact in case of an attempt to sign without consent. The second line designate the authorized CA for classic certs and the third for wildcard certificates.&lt;/p&gt;

&lt;h3 id=&#34;tlsa&#34;&gt;TLSA&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;TLSA&lt;/em&gt;&lt;/strong&gt; is a bit more complex. It&amp;rsquo;s part of the &lt;strong&gt;&lt;em&gt;DANE&lt;/em&gt;&lt;/strong&gt; standard (&lt;a href=&#34;https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities&#34;&gt;DNS Authentication of Named Entities&lt;/a&gt;) which lets you publish your cert (or its hash) of a TLS secured service. The ultimate goal of DANE is to get rid of CA and putting the trust chain in the DNS. Instead of relying on a third party to attest your certificate is trustable this role is now in your DNS server and DNSSEC. Bad news : nothing implements it. Only postfix and some plugins for your browser, that&amp;rsquo;s all. But you can have a CA and publish TLSA record. Braces and leather belt (french). You can use DANE/TLSA on any service relying on TLS : http, smtp, imap, irc, … anything.&lt;/p&gt;

&lt;p&gt;We won&amp;rsquo;t work to much, we will do as everybody and use &lt;a href=&#34;https://www.huque.com/bin/gen_tlsa&#34;&gt;the popular well-made generator&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You fill the fields (3/1/1)&lt;/li&gt;
&lt;li&gt;You paste your cert (not your private key !)&lt;/li&gt;
&lt;li&gt;You put the port number of your service (443 for https for example)&lt;/li&gt;
&lt;li&gt;the used protocol (tcp for https)&lt;/li&gt;
&lt;li&gt;and you add your domain (lord.re or eventually www.lord.re)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pouf ! The &lt;em&gt;generate&lt;/em&gt; button will create your record. To be valid with DANE, your zone &lt;strong&gt;MUST&lt;/strong&gt; bet served with DNSSEC (in my case lord.re can&amp;rsquo;t because of my registrar which can&amp;rsquo;t take a DS record -___- ).&lt;/p&gt;

&lt;h2 id=&#34;records-related-to-emails-spf-dkim-dmarc-sts-and-openpgpkey&#34;&gt;Records related to emails : SPF, DKIM, DMARC, STS and OPENPGPKEY&lt;/h2&gt;

&lt;p&gt;Here is where the party is ! The email being one of the oldest Internet&amp;rsquo;s use, it grew with lots of new protocols and other fancy stuffs. Most of what we will see are attemps to bring new features to mail mostly on the security side : authentication for the most part. Let&amp;rsquo;s start slowly.&lt;/p&gt;

&lt;h3 id=&#34;spf&#34;&gt;SPF&lt;/h3&gt;

&lt;p&gt;The easiest of the band. This record will define wich machines/IP are authorized to send mails from your domain. Most of the time, you&amp;rsquo;ll only expect to send mails from your MX machines.&lt;/p&gt;

&lt;p&gt;There is an &lt;strong&gt;&lt;em&gt;SPF&lt;/em&gt;&lt;/strong&gt; record type but &lt;a href=&#34;https://tools.ietf.org/html/rfc7208&#34;&gt;it&amp;rsquo;s now deprecated&lt;/a&gt; (too bad), in favor of a simple &lt;strong&gt;&lt;em&gt;TXT&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;lord.re.                600 IN  TXT &amp;quot;v=spf1 mx -all&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It means &lt;em&gt;mx&lt;/em&gt; machines are allowed whereas &lt;em&gt;all&lt;/em&gt; are disallowed to send mails. It&amp;rsquo;s just an information. When someone receive a mail they can look for this information.&lt;/p&gt;

&lt;h3 id=&#34;dkim&#34;&gt;DKIM&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Domain Key Identified Mail&lt;/em&gt;&lt;/strong&gt; is one step higher. It&amp;rsquo;s a cryptographic system to sign your outcoming mails and it&amp;rsquo;s headers. Receiving servers will check that you mail match the signature in your DNS&amp;rsquo;s zone. It&amp;rsquo;s a way to prevent another mail server to send mail from your domain. It&amp;rsquo;s also a way to assure the receiver that your mail hasn&amp;rsquo;t been modified by any intermediate server.&lt;/p&gt;

&lt;p&gt;This time you&amp;rsquo;ll have to setup your mail stack to sign outgoing mails. There are may ways to do this and as it&amp;rsquo;s out of the scope of this article … well … you&amp;rsquo;ll have to duckduckgo it (I use rspamd to do it with postfix). You&amp;rsquo;ll get a public key that you have to publish in your zone in a TXT record :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;default._domainkey.lord.re.     3600    IN      TXT     &amp;quot;v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC06MC2/9/YtSn9BS09oMN26UdKO6DMGlCWYsodQ8P+t2CzsSzqUJxaszJmWZglqZyXRjaCMAFUoOF7GiyhXhqM4rSLGxaPHfrLK7f9YlJYAnqdhzEJdEjP8/vkJoMTJxINP9gEBi+wGSGEhoha514NHHtZ4g+QbJZliahwAjl0BQIDAQAB&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now that you&amp;rsquo;ve set up SPF and DKIM, other mails servers won&amp;rsquo;t know what to do if your mails aren&amp;rsquo;t DKIM-valid or if SPF isn&amp;rsquo;t respected.&lt;/p&gt;

&lt;h3 id=&#34;dmarc&#34;&gt;DMARC&lt;/h3&gt;

&lt;p&gt;Here is the way to tell other servers what to do if there is something wrong with SPF or DKIM. &lt;strong&gt;&lt;em&gt;DMARC&lt;/em&gt;&lt;/strong&gt; is the next step after SPF and DKIM. It&amp;rsquo;s still a TXT record :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;_dmarc.lord.re.    600 IN TXT &amp;quot;v=DMARC1;p=none;pct=100;rua=mailto:lord-dmarc@lord.re;ruf=mailto:lord-dmarc@lord.re;sp=none;adkim=s;aspf=s&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It&amp;rsquo;s straight forward :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;p=none&lt;/em&gt;&lt;/strong&gt; is the policy others must adopt. With &lt;strong&gt;&lt;em&gt;none&lt;/em&gt;&lt;/strong&gt; they do what they want. If you are sure about your stack you can put &lt;strong&gt;&lt;em&gt;quarantine&lt;/em&gt;&lt;/strong&gt; or even stricter &lt;strong&gt;&lt;em&gt;reject&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;rua&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;ruf&lt;/em&gt;&lt;/strong&gt; is an email adress to contact to report any problem&lt;/li&gt;
&lt;li&gt;Last : &lt;strong&gt;&lt;em&gt;adkim=s&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;aspf=s&lt;/em&gt;&lt;/strong&gt; means that you want a &lt;strong&gt;&lt;em&gt;s&lt;/em&gt;&lt;/strong&gt;trict check of SPF and DKIM. With this, your hostname must perfectly match (the &lt;strong&gt;&lt;em&gt;r&lt;/em&gt;&lt;/strong&gt; mode (for &lt;strong&gt;&lt;em&gt;r&lt;/em&gt;&lt;/strong&gt;elaxed) lets you send with subdomains too).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My advice is to slow start with none and if everything works fine step up to quarantine and maybe later to reject. Don&amp;rsquo;t go too fast or all your mails will fall in spam boxes.&lt;/p&gt;

&lt;h3 id=&#34;sts&#34;&gt;STS&lt;/h3&gt;

&lt;p&gt;This one is brand new. It&amp;rsquo;s not official yet but it&amp;rsquo;s promising even if it&amp;rsquo;s a bit hard to deploy it. You&amp;rsquo;ll need a web server where you&amp;rsquo;ll put a bit of &lt;em&gt;json&lt;/em&gt; in the &lt;em&gt;.well-known&lt;/em&gt; directory of your web root. Because of that i didn&amp;rsquo;t add it yet.&lt;/p&gt;

&lt;p&gt;This new record is a way to inform other MTAs how to connect to your server : you can tell them to reject a plaintext connection. It&amp;rsquo;s a good way to protect your privacy.&lt;/p&gt;

&lt;p&gt;The record looks like this &lt;code&gt;_mta-sts.lord.re.  IN TXT &amp;quot;v=STSv1; id=20160831085700Z;&amp;quot;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It contains an id of policy which MTAs will have to fetch from your web server. It could have been written directly in the dns record but… no they decided to go overkill.&lt;/p&gt;

&lt;h3 id=&#34;openpgpkey&#34;&gt;OPENPGPKEY&lt;/h3&gt;

&lt;p&gt;I don&amp;rsquo;t use this one either (in fact i don&amp;rsquo;t use pgp for my mails). It&amp;rsquo;s a way to publish public keys in your DNS&amp;rsquo;s zone. From a certain point of view it can be considered better than relying on a Public Key Server. As I don&amp;rsquo;t use theme I&amp;rsquo;ll let you use &lt;a href=&#34;https://www.huque.com/bin/openpgpkey&#34;&gt;this generator&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&#34;mail-summary&#34;&gt;Mail summary&lt;/h3&gt;

&lt;p&gt;Now you protect yourself from server spoofing thanks to DKIM and SPF. You make sure no one edit your mails on the fly thanks to DKIM and DMARC. You force your mails to never travel on plaintext with STS (except on the emmiting and receiving ends). And you make sure that servers themselves can&amp;rsquo;t edit/read your mails thanks to PGP. You mail stack is now bulletproof !&lt;/p&gt;

&lt;h2 id=&#34;global-thoughts&#34;&gt;Global thoughts ?&lt;/h2&gt;

&lt;p&gt;Hmmm yes. DNS now can hold many public informations where authenticity is critic. Editing DNS requests on the fly can become a severe attack to your privacy and have heavy consequences (ssh spoof, mail spoof, tls spoof…). Deploying &lt;strong&gt;DNSSEC&lt;/strong&gt; is not an option anymore. Using a validating DNS recursor is also of the utmost importance. Deploying HTTP service without TLS became non-sense sinc Letsencrypt came. Deploying DNS without DNSSEC is now the same.&lt;/p&gt;

&lt;h2 id=&#34;interesting-links&#34;&gt;Interesting links :&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.huque.com/bin/openpgpkey&#34;&gt;OPENPGPKEY record generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.huque.com/bin/gen_tlsa&#34;&gt;TLSA generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.huque.com/bin/danecheck&#34;&gt;TLSA check&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://dnssec-debugger.verisignlabs.com&#34;&gt;DNSSEC check&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.knot-dns.cz/documentation/&#34;&gt;Knot&amp;rsquo;s Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ietf.org/id/draft-ietf-uta-mta-sts-10.txt&#34;&gt;RFC mta-sts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
  </channel>
</rss>
