Kalender und Kontakte aus CalDAV/CardDav auf der Kommandozeile verwenden
Mutt mit offlineimap synchronisiert sehr praktisch Mails von IMAP auf den lokalen Rechner. Wünschenswerte wäre auch, Kalender und Kontakte ebenfalls von Servern auf den Rechner zu synchronisieren und so auch den Bestand mit dem Smartphone synchron zu halten, wenn das den selben Server nutzt. Dafür eignen sich CalDAV und CardDAV.
Voraussetzungen
Diese Anleitung ist nur für Linux und wohl auch für diejenigen am hilfreichsten, die gerne alles auf der Kommandozeile machen. Die Befehle sind erst mal alle für Ubuntu 16.04 geschrieben, wer was anderes einsetzt, kennt sich aber sicher mit den jeweiligen Befehlen für die eigene Distribution aus.
Weitere Voraussetzung ist, dass der Server, gegen den man synchronisieren möchte, CalDAV und CardDAV anbietet. Das ist z.B. bei GMail der Fall, bei ownCloud/nextCloud, SoGo und sogar bei Microsoft Exchange-Servern, wenn man DavMail dazwischenschaltet.
Installation
Die drei zugrundeliegenen Programme basieren allesamt auf Python. Dabei bietet es sich dann an, ein virtualenv für das Projekt anzulegen. Dadurch werden die Python-Pakete in ihren neuesten Versionen heruntergeladen, aber in eine eigene lokale Umgebung installiert, damit nicht das System von wild installierten Paketen durcheinander gebracht wird.
sudo apt-get install virtualenv
mkdir -p ~/.virtualenvs
virtualenv -p python3 ~/.virtualenvs/pim
~/.virtualenvs/pim/bin/pip install khal khard vdirsyncer
PATH nicht vergessen
Um nicht jedes Mal den vollen Pfad zu vdirsyncer
,
khal
und khard
angeben zu
müssen, sollte noch ein Eintrag in der
PATH
-Variablen zur .bashrc
hinzugefügt werden:
export PATH=$PATH:~/.virtualenvs/pim/bin
Konfiguration
Das Projekt besteht aus mehreren Komponenten.
vdirsyncer
synchronisiert die Daten eines
CalDAV/CardDAV-Accounts mit lokalen Verzeichnissen voller
.ics
- und .vcf
-Dateien.
Dadurch werden Kontakte und Termine fast universell lesbar, auch mit den
beiden bereits installierten Programmen khal
für
Kalender und khard
für Kontakte.
vdirsyncer
Die Konfiguration wird im Heimverzeichnis angelegt, nämlich in der Datei
~/.config/vdirsyncer/config
. Wer schon mal
offlineimap
konfiguriert hat, wird sich schnell in
der Konfiguration zurechtfinden:
Kontakte
[general]
status_path = ~/.config/vdirsyncer/status/
[pair privat_kontakte]
a = "privat_kontakte_lokal"
b = "privat_kontakte_remote"
collections = ["from a", "from b"]
[storage privat_kontakte_lokal]
type = "filesystem"
path = "~/.pim/contacts"
fileext = ".vcf"
[storage privat_kontakte_remote]
type = "carddav"
url = "http://example.com/carddav/url"
auth = "basic"
username = "[email protected]"
password = "password"
Diese Konfiguration ist natürlich anzupassen. In der URL muss hier dann
auch die eigene Mailadresse eingetragen werden. Benutzername und
Passwort bei username
bzw.
password
sind natürlich auch korrekt zu
hinterlegen. Möchte man dabei keine Passwörter im Klartext in der
Konfigurationsdatei hinterlegen, kann man die Anleitung zur Verwendung
von
Passwortspeichern
auf der Homepage von vdirsyncer befolgen, um das Passwort aus dem
systemeigenen Passwortspeicher (z.B. gnome-keyring) abzufragen.
Kalender
Die Konfiguration der Kalender-Synchronisation verläuft ähnlich. In die
selbe Datei ~/.config/vdirsyncer/config
ist also
zu schreiben:
[pair privat_kalender]
a = "privat_kalender_lokal"
b = "privat_kalender_remote"
collections = ["from a", "from b"]
metadata = ["color"]
[storage privat_kalender_lokal]
type = "filesystem"
path = "~/.pim/calendars/"
fileext = ".ics"
[storage privat_kalender_remote]
type = "caldav"
url = "http://example.com/caldav/url"
auth = "basic"
username = "[email protected]"
password = "password"
Konfiguration testen
Um die Konfiguration zu testen und die Ordnerstruktur für die verschiedenen hinterlegen Kalender anzulegen, sowie die Kalender-Farben herunterzuladen, sind einige Befehle einmalig nötig:
vdirsyncer discover
vdirsyncer metasync
Synchronisieren!
Und los! Kalendereinträge und Kontakte werden wie folgt synchronisiert:
vdirsyncer sync
Frontends
Für die Kommandozeile gibt es zwei recht stabile Frontends: khal und khard, die haben wir bereits installiert.
Khal für Kalender
Die Basiskonfiguration für khal wird interaktiv vorgenommen:
khal configure
Die gestellten Fragen sind selbsterklärend. Obwohl die Einrichtung zwar
die Verwendung von vdirsyncer erkennt, muss im Anschluss dennoch die
Sammlung der Kalender angepasst werden, so dass in der Datei
~/.config/khal/config
die Sektion
[calendars]
wie folgt aussieht:
[calendars]
[[calendars]]
path = ~/.pim/calendars/*
type = discover
Der Eintrag, welcher auf den Pfad der Kontakte verweist, sollte gelöscht
werden. Die Sektion [locale]
kann bleiben, wie sie
ist.
Khard für Kontakte
Die Konfiguration für khard läuft über die Konfigurationsdatei
~/.config/khard/khard.conf
[addressbooks]
[[personal]]
path = ~/.pim/contacts/personal/
[general]
debug = no
default_action = list
editor = vim
merge_editor = vimdiff
[contact table]
# display names by first or last name: first_name / last_name
display = first_name
show_nicknames = no
# sort by first or last name: first_name / last_name
sort = last_name
[vcard]
# Look into source vcf files to speed up search queries: yes / no
search_in_source_files = yes
Interessant ist wieder die Sektion [addressbooks]
.
Hier muss pro Adressbuch auf dem Server eine Sektion nach dem folgenden
Schema angelegt werden:
[[personal]]
path = ~/.pim/contacts/personal
Wie genau die Adressbücher und deren Pfade aussehen, findet man am besten über das Dateisystem heraus:
ls ~/.pim/contacts/
Jeder Unterordner repräsentiert ein Adressbuch auf dem Server. Gibt es
keine Unterordner, gibt man für path
nur
~/.pim/contacts/
an.
Benutzung
Synchronisation
Wie oben schon erwähnt, sollte man vdirsyncer in regelmäßigen
Abständen laufen lassen. Dazu bietet sich natürlich ein cronjob oder ein
systemd timer an, wenn man das nicht jedes Mal von Hand machen möchte.
Hat man neue Kalender hinzugefügt, sollte
vdirsyncer discover && vdirsyncer metasync
ausgeführt werden. Hat man neue Adressbücher auf dem Server hinzugefügt,
sollte auch vdirsyncer discover
ausgeführt und
anschließend wie oben beschrieben die Konfiguration angepasst werden.
Der Befehl zum Starten einer Synchronisation lautet schlicht
vdirsyncer sync
.
Kalender
Möchte man nur schnell auf der Kommandozeile sehen, was in der nächsten
Zeit so los ist, genügt die Eingabe khal
.
Für eine interaktive Oberfläche verwendet man stattdessen
ikhal
.
Um Funktionen wie Suche oder den Import aus einer .ics-Datei direkt
aufzurufen, bietet khal einige Schalter. Die erklären sich ganz gut
von selbst in der Hilfe-Funktion: khal --help
.
Kontakte
Etwas weniger poliert ist khard, wobei das Tool auch mit etwas mehr Komplexität umgehen muss. Es gibt hier keine interaktive Funktion, es passiert alles auf der Kommandozeile:
- Liste aller Kontakte:
khard
- Suche in den Kontakten:
khard ls suchbegriff
- Neuen Kontakt anlegen:
khard new
- Liste aller Befehle:
khard --help
mutt
Verwendet man
mutt
für Mails, bietet sich eine Integration von khard als Adressbuch an.
Dazu sind folgende Konfigurationseinstellungen in der
.muttrc
sinnvoll:
set query_command= "khard email --parsable --search-in-source-files %s"
bind editor <Tab> complete-query
bind editor ^T complete
macro index,pager A \
"<pipe-message>khard add-email<return>" \
"add the sender email address to khard"
Beim Eintippen der Mailadresse beim Senden einer neuen Mail kann dann
auch Tab-Vervollständigung genutzt werden. Drückt man entweder in der
Liste der Mails oder beim Betrachten einer Mail A
,
fügt man die markierte Mailadresse als neuen Kontakt hinzu.