Postfix 3.4, Let’s Encrypt und Server Name Indication (SNI)

Ich werde hier nicht weiter auf das grundsätzliche Setup von Postfix, Let’s Encrypt oder einen Webserver eingehen. Ich setze einfach voraus, dass ihr eine funktionierende Konfiguration habt.

Seit der Postfix-Version 3.4 ist es endlich möglich, mit nur einer IP-Adresse, für jede Domain ein eigenes Zertifikat auszuliefern.

Zuerst legen wir in /etc/postfix/main.cf die Zertifikate und Key-file für die Default-Domain (bei mir mail.cyber-anlage.de) fest. Dafür wird bei Postfix 3.4 das neue smtpd_tls_chain_files benutzt. Mehr dazu hier: http://www.postfix.org/TLS_README.html#server_cert_key

# Postfix ≥ 3.4.  Preferred configuration interface.  Each file
# starts with the private key, followed by the corresponding
# certificate, and any intermediate issuer certificates. The root CA
# cert may also be needed when published as a DANE trust anchor.

smtpd_tls_chain_files =
     /etc/ssl/LE/mail.cyber-anlage.de.key
     /etc/ssl/LE/mail.cyber-anlage.de_fullchain.pem

Mit tls_server_sni_maps haben wir jetzt die Möglichkeit eine Tabelle mit Server-Namen, welche via SNI erreichbar sind, und den entsprechenden Schlüssel und Zertifikatsketten zu erstellen. Dafür müssen wir wieder /etc/postfix/main.cf bearbeiten. Mehr dazu hier: http://www.postfix.org/postconf.5.html#tls_server_sni_maps

Die Syntax ist: tls_server_sni_maps = map_type:/Datei/pfad/sni

# Indexed table macro:
# postconf -m shows all available map types
# The indexed SNI table must be created with "postmap -F"

tls_server_sni_maps = hash:/etc/postfix/sni

Nun können wir die Domain, Zertifikate und keyfiles für SNI konfigurieren. Wichtig ist, dass wird hier auch noch mal unsere Default-Domain angeben. Da das Zertifikat in der /etc/postfix/main.cf nur benutzt wird, wenn der kein SNI schickt.

Dafür bearbeiten wir /etc/postfix/sni

Die Syntax lautet: domain private-key Zertifikat rootCA

 mail.cyber-anlage.de /etc/ssl/LE/mail.cyber-anlage.de.key /etc/ssl/LE/mail.cyber-anlage.de_fullchain.pem
 mail.technikfreak.net /etc/ssl/LE/mail.technikfreak.net.key /etc/ssl/LE/mail.technikfreak.net_fullchain.pem

Jetzt müssen wir mit postmap nur noch die SNI-Tabelle generieren

Die Syntax ist: postmap -F map_type:/Datei/pfad/sni

postmap -F hash:/etc/postfix/sni

Alles was wir jetzt machen müssen, ist postfix neu starten und voilà wir bekommen für jede Domain das entsprechende Zertifikat.

Logitech Performance Mouse MX Daumen und Zoom Button in KDE Plasma 5

Ich hab schon länger eine Logitech Performance Mouse MX und hab weder den Daumen-Button noch die Zoom Funktion genutzt. Um ehrlich zu sein, hab ich sogar vergessen, dass es einen Button für den Daumen gibt… Ich mag diese Logitech Reihe vor allem wegen Ihrer Größe und das freilaufende Scrollrad ist einfach die beste Innovation, die Mäuse in den letzten Jahren erfahren haben.

Wie dem auch sei, irgendwo haben ich kürzlich von dem Daumen-Button gelesen und dachte mir „Oh so ein Button auf der Daumenablage ist doch eigentlich recht Praktisch…“

Ich hab schnell festgestellt, dass dank xf86-input-libinput, sowohl Daumen als auch Zoom button schon funktionieren, aber leider keine Funktion zugeordnet haben. Leider bietet Plasma 5 immer noch keine Möglichkeit, Short Cuts mit Maus-Buttons anzulegen. Einzig in den Desktop Settings können wir „Mouse Actions“ anlegen. Da ich aber so gut wie nie auf den Desktop klicke, halte ich das für mich nicht besonders Sinnvoll.

Zoom- und Daumentaste mit xbindkeys & xautomation

Da wir für die Gesichte KDE Plasma 5 Effekte benutzen wollen, müssen wir diese auch unter Settings -> Desktop Behaivor -> Desktop Effects aktivieren.

In Windows zeigt der Daumen-Button alle offenen Fenster – dieser Effekt heißt in Plasma5 Present Windows

Der Zoom Effekt heißt (wer hätte das gedacht) – Zoom (in den Settings muss hier der Zoom Faktor größer als 1.00 sein)

 

Nun installieren wir uns die beiden Programme

pacman -Syu xbindkeys xautomation

jetzt könnten wir uns eine .xbindkeysrc anlegen, mehr dazu HIER

Leider ist .xbindkeysrc aber nicht intelligent genug, um 2 Maus-Buttons gleichzeitig zu verarbeiten und ich möchte ja den Zoom-Button halten und mit dem Scrollrad Rein- und Rauszoomen

Dafür legen wir uns eine .xbindkeysrc.scm mit folgendem Inhalt an. (Das folgende Script ist eine angepasste version aus diesem Beitrag)

;;   This configuration is guile based.
;;   http://www.gnu.org/software/guile/guile.html
;;   This config script is supposed to live in the homedirectory and be named .xbindkeysrc.scm
;;   Based on the script by Zero Angel posted at
;;   http://www.linuxquestions.org/questions/linux-desktop-74/%5Bxbindkeys%5D-advanced-mouse-binds-4175428297/
;;   And adapted by Camilo Rada
;;
;;   It is intended to work with the Logitech Performance MX Mouse
;;   It allows to zoom with the wheel while the zoom button is pressed
;;   It also allows to assing an action to a single press-and-release of the zoom button
;;   The action assigned to that action is Super+z but is can be modified


(define actionperformed 0)

(define (first-binding)
"First binding"
;; Logitech Zoom Button
(xbindkey-function '("b:13") b13-second-binding)
;; Logitech Thumb Button
(xbindkey '("b:10") "qdbus org.kde.kglobalaccel /component/kwin invokeShortcut 'Expose'")
)


(define (reset-first-binding)
"reset first binding"
(ungrab-all-keys)
(remove-all-keys)
;; Set Action Performed state back to 0
(set! actionperformed 0)
;; Forcefully release all modifier keys!
(run-command "/usr/bin/xte 'keyup Control_L' 'keyup Alt_L' 'keyup Shift_L' 'keyup Super_L' &")

(first-binding)
(grab-all-keys))


(define (b13-second-binding)
"Zoom Button Extra Functions"
(ungrab-all-keys)
(remove-all-keys)

;; Scroll Up
(xbindkey-function '("b:4")
                (lambda ()
;; Emulate Ctrl+plus (Zoom in)
                (run-command "qdbus org.kde.kglobalaccel /component/kwin invokeShortcut view_zoom_in &")
        (set! actionperformed 1)
))

;; Scroll Down
(xbindkey-function '("b:5")
                (lambda ()
;; Emulate Ctrl+Alt+minus (Workspace Down)
                (run-command "qdbus org.kde.kglobalaccel /component/kwin invokeShortcut view_zoom_out &")
        (set! actionperformed 1)
))

(xbindkey-function '(release "b:13") (lambda ()
;; Perform Action if Button 8 is pressed and released by itself
(if (= actionperformed 0) (run-command "/usr/bin/xte 'keydown Super_L' 'key z' 'keyup Super_L' &"))
(reset-first-binding)))
(grab-all-keys))

;; (debug)
(first-binding)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; End of xbindkeys configuration ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Jetzt speichern wir uns einfach das Script und können es direkt mit folgenden Befehl testen

xbindkeys -n -v

xbindkeys automatisch mit Systemd starten

Um xbindkeys als Systemd service zu starten müssen wir uns zuerst eine service-file erstellen

dazu erstellt die Datei .config/systemd/user/xbindkeys.service (sollte es die Ordner noch nicht geben, dann erstellt einfach)

[Unit]
Description=xbindkeys
After=xorg.service

[Service]
ExecStart=/usr/bin/xbindkeys -n
StandardOutput=null

[Install]
WantedBy=wm.target

Dannach können wir die Service auch direkt aktivieren und starten

systemctl --user enable xbindkeys 
systemctl --user start xbindkeys

Damit sorgen wir dafür, dass alle Mausfunktionen funktionieren, sobald der user sich einloggt.

Andere Mäuse und andere Funktionen

Auch wenn die configuration speziell für die Logitech Performance Mouse MX ist, sollte sie sich doch recht einfach für andere Mäuse adaptieren lassen.

Archlinux / AMD / Catalyst / Radeon / Tearing / DRI3 / Gallium Nine / wine

Immer wieder kommen auf Reddit und im IRC Fragen, zu Problemen mit dem AMD Catalyst Treiber. Zum einen funktioniert der Treiber nach jedem X.Org-update nicht mehr und zwing Nutzer dazu immer eine alte X.Org-Version zu benutzen. Dann starten viele Games mit dem Treiber gar nicht erst, die 2D-Beschleunigung auf dem Desktop ist eine Katastrophe und Tearing bekommt man quasi gar nicht in den Griff….

catalyst oder xf86-video-ati

Wie schon angesprochen gibt es bei catalyst jede menge Probleme und ständig geht der Treiber kaputt wenn mal wieder ein X.Org update kommt. Der Treiber catalyst ist bei den meisten spielen schneller als der xf86-video-ati, aber der Vorteil wird mit jedem update von dem mesa Treiber etwas kleiner.

Meiner Meinung nach lohnt sich das ganze rumgefrickel mit dem catalyst Treiber nicht, da xf86-video-ati inzwischen auch gut performt und vor allem eine sehr gute 2D-Beschleunigung für den Desktop bietet.

xf86-video-ati, DRI3 und Tearing

Tearing ist sicher eins der größten Probleme auf dem Linux Desktop. Wayland wird das Problem in Zukunft lösen, aber leider wird es noch ein bisschen dauern bis Wayland X.Org ersetzen wird.

Die beste Möglichkeit die uns X.Org bietet, um das Tearing-Problem zu lösen, ist zur Zeit sicher DRI3. Als default wird beim xf86-video-ati Treiber zur Zeit noch DRI2 benutzt, aber wir können DRI3 in der Xorg.conf aktivieren.

um DRI3 zu aktivieren müssen wir folgendes in die „/etc/X11/xorg.conf.d/20-radeon.conf“ eintragen:

Section "Device"
    Identifier "Radeon"
    Driver "radeon"
    Option "DRI" "3"
    Option "AccelMethod" "glamor"
    Option "TearFree" "on"
EndSection

Detaillierte Informationen zu den einzelnen Zeilen und noch weitere Tweaks findet ihr auf https://wiki.archlinux.org/index.php/ATI#Performance_tuning

Nach einem Neustart sollte DRI3 aktiviert sein und der Desktop endlich Tearingfrei. Im Xorg.log könnt Ihr überprüfen ob DRI3 funktioniert führt dafür folgenden befehl aus:

cat /var/log/Xorg.0.log | grep -i DRI3

Wenn DRI3 aktiviert ist sollte hier auch eine Entsprechende Ausgabe bekommen

$ cat /var/log/Xorg.0.log | grep -i DRI3       
[     7.306] (**) RADEON(0): DRI3 enabled

Wine, Gallium Nine und wine-gaming-nine

Gerade wenn ihr wine benutzt werden der xf86-video-ati Treiber und DRI3 sehr interessant. Denn mit dem Gallium Direct3D state tracker (gallium nine) könnt ihr mit wine natives Direct3D 9 benutzen. Das heißt alle Games/Programme die DirectX 9 benutzen, laufen in wine so schnell wie unter Windows, manchmal sogar etwas schneller, weil wine einen extra CPU Prozess für die GPU benutzt.

Hyper Light Drifter – libcurl.so.4: version ‚CURL_OPENSSL_3‘ not found

web_banner

Wer sich das kürzlich erschiene Hyper Light Drifter von gog.com gekauft hat, rennt evtl in Folgenden Fehler:

krizz@technikfreak /Hyper Light Drifter % ./start.sh 
Running Hyper Light Drifter
./HyperLightDrifter.x86: /usr/lib32/libcurl.so.4: version 'CURL_OPENSSL_3' not found (required by ./HyperLightDrifter.x86)

Das Spiel erwartet eine ältere Version von libcurl, welche noch ‚CURL_OPENSSL_3‘ unterstützt.

Bei der Steam-Version des spiels, soltle das keine Rolle spielen, da der Steam client für Linux seine eigenen libs mitbringt und diese lädt. Und genau das müssen wir auch tun, um die gog.com-Version zu starten, ohne unsere libcurl version zu downgraden.

Wenn Ihr z.B. Steam installiert habt, könnt ihr natürlich auch libcurl von Steam benutzen, für alle anderen habe ich hier eine Version zum downlaoden libcurl.so.tar

Entpackt die Version nach „/Hyper Light Drifter/game/“ und ändert die start.sh wie folgt

#!/bin/bash
# GOG.com (www.gog.com)
# HyperLightDrifter

# Initialization
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "${CURRENT_DIR}"
source support/gog_com.shlib

# Game info
GAME_NAME="$(get_gameinfo 1)"
VERSION="$(get_gameinfo 2)"
VERSION_DEV="$(get_gameinfo 3)"

# Actions
run_game() {
 echo "Running ${GAME_NAME}"
 cd game
 LD_PRELOAD=./libcurl.so ./"HyperLightDrifter.x86"
}

default() {
  run_game
}

# Options
define_option "-s" "--start" "start ${GAME_NAME}" "run_game" "$@"

# Defaults
standard_options "$@"

Mit LD_PRELOAD=./libcurl.so ./“HyperLightDrifter.x86″ sorgen wir dafür, dass unsere libcurl Version benutzt wird, wenn ./“HyperLightDrifter.x86″ ausgeführt wird. Und das Spiel sollte Problemlos starten.

0 A.D. Alpha 19 Syllepsis

Von 0 A.D. haben sicher schon viele etwas gehört und der Einer oder andere hat es auch schon ausprobiert und ist vielleicht in der Vergangenheit zu dem Schluss gekommen, dass das Spiel einfach noch nicht spielbar ist und der Vergleich zu Age of Empire II sehr weit hergeholt ist.

Die Entwickler von Wildfire Games arbeiten nun schon seit 2015 an diesen wahnsinnigen Projekt und haben ende November die mittlerweile 19. alpha veröffentlicht. Was für mich genug Grund war, dass spiel mal wieder anzutesten…

… wow… was sich die letzten Jahre getan hat ist wirklich beeindruckend. Ich hätte nicht wirklich erwartet, dass so ein Projekt so weit kommen könnte. Auch wenn es immer noch eine Alpha ist, ist das Spiel inzwischen absolut Spielbar und der Vergleich mit Age of Empires II ist durchaus berechtigt. Das Spiel fühlt sich inzwischen auch schon fertiger an als so einige AAA-Titel die ich über die letzten Jahre gespielt habe. Es gibt zwar noch keine Kampagnen oder Tutorials, aber man kann kann Matches gegen die CPU oder gegen Menschen spielen und die machen schon jede menge Spaß.

Alle die auf der Suche nach einem guten RTS bzw einen geistigen Nachfolger von Age of Empires sind, sollten dem spiel eine Chance geben.

HomePage

Download

Github