<commit_before>---
title: My dank mutt setup
---

## My dank mutt setup

In meinem Umkreis scheint niemand so richtig E-Mails zu mögen. Ich möchte
einfach mal behaupten dies liegt an ausschließlich auf dem Mobilgerät
eingerichteter Postfächer oder an der Verwendung webbasierter Lösungen. Beides
sehr belastende Umstände. 

Kommen wir an dieser Stelle zu Mutt. *("All mail clients suck. This one just
sucks less.")*  

Als erstes möchte ich einen kleinen Überblick über die benötigten Programme
verschaffen. [Mutt](http://www.mutt.org/) ist mein E-Mail Client, welcher
theoretisch in der Lage wäre sich mit einem IMAP Server zu verbinden um
entsprechende Nachrichten anzuzeigen, doch wären diese dann nicht offline
verfügbar. Hier hilft ein tolles Tool namens
[OfflineIMAP](https://github.com/OfflineIMAP/offlineimap). Unerwarteterweise
lassen sich damit noch keine E-Mails versenden. Hierfür benötigen wir einen SMTP
Client. Es bietet sich [msmtp](http://msmtp.sourceforge.net/) an. Natürlich
möchte man innerhalb von Mutt auch komfortablen Zugriff auf sein Adressbuch
haben. Dies ermöglicht das CLI [khard](https://github.com/scheibler/khard).
Optional zu installieren ist das CLI [khal](https://github.com/pimutils/khal),
welches uns auch gleich einen Kalender für das Terminal bringt. Khard kann sich
von Haus aus nicht mit einem CalDAV Server synchronisieren; khal auch nicht mit
einem CardDAV. Beide Programme bieten nur Schnittstellen um mit entsprechenden
Datenbanken zu interagieren. Die Synchronisation mit einem Cal/CardDAV Server
übernimmt [vdirsyncer](https://github.com/pimutils/vdirsyncer). Mit Mutt lassen
sich durchaus die E-Mails durchsuchen, doch besser, effizienter und schneller
geht dies mit [notmuch](https://notmuchmail.org/).

### Installation

Mutt, msmtp und notmuch sollten sich über eure Paketmanager installieren lassen.
OfflineIMAP, khard, khal und vdirsyncer sollten in einem [Python Virtual
Environment](https://docs.python.org/3/library/venv.html) installiert werden.  

Das *Virtual Environment* `office` kann natürlich auch an geignet anderer Stelle
erstellt werden. Bedenkt die Anpassung der Symlinks. In dem folgenden Beispiel
wird davon ausgegangen, dass sich `~/bin/` in eurem `PATH` befindet.

{% highlight Shell linenos %}
mkdir ~/.venvs
cd ~/.venvs
python3 -m venv office
source ./office/bin/activate
pip install offlineimap vdirsyncer khard khal
deactivate

ln -s ~/.venvs/office/bin/offlineimap ~/bin/offlineimap
ln -s ~/.venvs/office/bin/vdirsyncer ~/bin/vdirsyncer
ln -s ~/.venvs/office/bin/khard ~/bin/khard
ln -s ~/.venvs/office/bin/khal ~/bin/khal
ln -s ~/.venvs/office/bin/ikhal ~/bin/ikhal
{% endhighlight %}

### OfflineIMAP

Zuerst machen wir uns an die Konfiguration von OfflineIMAP.

{% highlight Shell linenos %}
mkdir ~/.mutt
mkdir ~/.mutt/accounts
mkdir ~/.mutt/cache
mkdir ~/offlineimap
vim ~/.offlineimaprc #mit dem folgenden Inhalt
{% endhighlight %}

{% highlight Shell linenos %}
[general]
# List of accounts to be synced, separated by a comma.
accounts = <YOURACCOUNTNAME>
maxsyncaccounts = 1
sockettimeout = 10

[Account <YOURACCOUNTNAME>]<commit_msg>Add missing module to installation process<commit_after>---
title: My dank mutt setup
---

## My dank mutt setup

In meinem Umkreis scheint niemand so richtig E-Mails zu mögen. Ich möchte
einfach mal behaupten dies liegt an ausschließlich auf dem Mobilgerät
eingerichteter Postfächer oder an der Verwendung webbasierter Lösungen. Beides
sehr belastende Umstände. 

Kommen wir an dieser Stelle zu Mutt. *("All mail clients suck. This one just
sucks less.")*  

Als erstes möchte ich einen kleinen Überblick über die benötigten Programme
verschaffen. [Mutt](http://www.mutt.org/) ist mein E-Mail Client, welcher
theoretisch in der Lage wäre sich mit einem IMAP Server zu verbinden um
entsprechende Nachrichten anzuzeigen, doch wären diese dann nicht offline
verfügbar. Hier hilft ein tolles Tool namens
[OfflineIMAP](https://github.com/OfflineIMAP/offlineimap). Unerwarteterweise
lassen sich damit noch keine E-Mails versenden. Hierfür benötigen wir einen SMTP
Client. Es bietet sich [msmtp](http://msmtp.sourceforge.net/) an. Natürlich
möchte man innerhalb von Mutt auch komfortablen Zugriff auf sein Adressbuch
haben. Dies ermöglicht das CLI [khard](https://github.com/scheibler/khard).
Optional zu installieren ist das CLI [khal](https://github.com/pimutils/khal),
welches uns auch gleich einen Kalender für das Terminal bringt. Khard kann sich
von Haus aus nicht mit einem CalDAV Server synchronisieren; khal auch nicht mit
einem CardDAV. Beide Programme bieten nur Schnittstellen um mit entsprechenden
Datenbanken zu interagieren. Die Synchronisation mit einem Cal/CardDAV Server
übernimmt [vdirsyncer](https://github.com/pimutils/vdirsyncer). Mit Mutt lassen
sich durchaus die E-Mails durchsuchen, doch besser, effizienter und schneller
geht dies mit [notmuch](https://notmuchmail.org/).

### Installation

Mutt, msmtp und notmuch sollten sich über eure Paketmanager installieren lassen.
OfflineIMAP, khard, khal und vdirsyncer sollten in einem [Python Virtual
Environment](https://docs.python.org/3/library/venv.html) installiert werden.  

Das *Virtual Environment* `office` kann natürlich auch an geignet anderer Stelle
erstellt werden. Bedenkt die Anpassung der Symlinks. In dem folgenden Beispiel
wird davon ausgegangen, dass sich `~/bin/` in eurem `PATH` befindet.

{% highlight Shell linenos %}
mkdir ~/.venvs
cd ~/.venvs
python3 -m venv office
source ./office/bin/activate
pip install six offlineimap vdirsyncer khard khal
deactivate

ln -s ~/.venvs/office/bin/offlineimap ~/bin/offlineimap
ln -s ~/.venvs/office/bin/vdirsyncer ~/bin/vdirsyncer
ln -s ~/.venvs/office/bin/khard ~/bin/khard
ln -s ~/.venvs/office/bin/khal ~/bin/khal
ln -s ~/.venvs/office/bin/ikhal ~/bin/ikhal
{% endhighlight %}

### OfflineIMAP

Zuerst machen wir uns an die Konfiguration von OfflineIMAP.

{% highlight Shell linenos %}
mkdir ~/.mutt
mkdir ~/.mutt/accounts
mkdir ~/.mutt/cache
mkdir ~/offlineimap
vim ~/.offlineimaprc #mit dem folgenden Inhalt
{% endhighlight %}

{% highlight Shell linenos %}
[general]
# List of accounts to be synced, separated by a comma.
accounts = <YOURACCOUNTNAME>
maxsyncaccounts = 1
sockettimeout = 10

[Account <YOURACCOUNTNAME>]
{'fraction_non_alphanumeric': 0.08584649752672731, 'fraction_numerical': 0.0015956598053295037, 'mean_word_length': 4.7557392102846645, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 12, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2746854', 'n_tokens_mistral': 2200, 'n_tokens_neox': 2156, 'n_words': 733}