Aus Linux-Magazin 02/2002

Mail und News mit (X)Emacs

Gnus, das Standardwerkzeug für Mails und News im Emacs, bietet allen Komfort der Welt. Wer es jedoch effektiv nutzen will, muss es konfigurieren können.

Wer den Editor Emacs täglich benutzt, hat die Möglichkeit, beinahe alle am Computer anfallende Arbeit damit zu erledigen. Auch der elektronische Schriftverkehr ist damit überaus komfortabel zu bewältigen, vorausgesetzt das Gnus-Paket ist richtig konfiguriert. Allerdings verlässt, wer sich auf die Emacs-Familie (damit sind sowohl Emacs als auch XEmacs gemeint) einlässt, in gewisser Weise die Unix-Welt. Statt vieler kleiner Tools begibt man sich in ein Framework mit dem Basiselement Emacs Lisp.

Gnus 5.8.8 besteht aus etwa 1600 Funktionen und Makros sowie rund 800 Emacs-Lisp-Variablen, womit sich auch die ausgefallensten Anwendungswünsche für die Behandlung von Mail und News befriedigen lassen. Doch auch mit der Kenntnis nur einiger wichtiger Elemente kommt man schon sehr weit.

Bei den Emacs- und XEmacs-Paketen der gebräuchlichen Linux-Distributionen ist Gnus fast immer dabei und wird einfach mitinstalliert. Die neueste Version findet man in Form eines komprimierten Tar-Balls auf [http://www.gnus.org/]. XEmacs-Benutzer können auch das eingebaute Paket-Verwaltungssystem des Editors benutzen, um das Paket zu aktualisieren.

Emacs erweitern

Das Auspacken erledigt man mit »tar xzf act-gnus-version.tar.gz«; danach ist es vernünftig, einen Blick ins »README« zu werfen. Wechseln Sie dann ins ausgepackte Gnus-Verzeichnis und geben »./configure; make« für Emacs oder »./configure –with-xemacs; make EMACS =xemacs« für den XEmacs ein.

Damit die neuen ».el«- und ».elc«-Dateien gefunden werden, muss die Variable »load-path« korrekt gesetzt sein. Der beste Weg, neue Pfade aufzunehmen, führt über den Eintrag

(add-to-list 'load-path "pfad-zum-gnus-U subdirectory/lisp")

in der Datei »~/.emacs« oder einem darin inkludierten File: Die Funktion »add-to-list« nimmt ein neues Element in eine Liste namens »load-path« auf. Dabei wird sichergestellt, dass dieses neue Element nur einmal vorkommt.

Alternativ lassen sich diese wie auch andere Variablen über die Option »customize-variable« anpassen. Die in diesem Beitrag benutzte Schreibweise für Tastenkombinationen orientiert sich aus Gründen der besseren Wiedererkennung an der Emacs-eigenen Notation.

Geben Sie im (X)Emacs »M-x customize-variable [Return]« ein (M steht für Meta und entspricht normalerweise der linken [Alt]-Taste, alternativ [Esc]). Die [Tab]-Taste liefert eine Liste aller möglichen Variablen und vervollständigt Auswahlen wie etwa »load-p« zum gewünschten Variablennamen oder zeigt bei nicht eindeutigen Angaben Alternativen auf. Im passenden Emacs-Buffer kann der Inhalt der Variablen nun um weitere Pfadangaben ergänzt werden (Abbildung 1).

Abbildung 1: Load-Pfad interaktiv editieren.

Abbildung 1: Load-Pfad interaktiv editieren.

Wo ist die Doku?

Emacs-Pakete sind in Info-Dateien dokumentiert. Damit diese Dateien zu finden sind, ist die Umgebungsvariable »INFOPATH« oder die Emacs-Lisp-Variable »Info-directory-list« anzupassen. Für Letzteres ist der »~/.emacs«-Eintrag

(add-to-list 'Info-directory-list "pfad- U zum-gnus-subdirectory/texi")

zuständig.

Im »texi«-Unterverzeichnis befindet sich auch die Referenzkarte »gnusref.text« für die Gnus-Befehle. Sie lässt sich mit »texi2dvi« oder »texi2html« in ein mit »dvips« beziehungsweise einem Web-Browser leichter druckbares Format konvertieren.

Gnus, das Mail und News transparent behandelt, auch wenn sie aus verschiedenen Quellen kommen, passen Sie in »~/.gnus« an. Bevor Sie das erste Mal Nachrichten herunterladen, sollten Sie darin die für Sie beste Speicherungsmethode aussuchen. Denkbar sind folgende Alternativen:

  • Sie speichern alle heruntergeladenen Nachrichten in einer Datei.
  • Sie legen für jede Gruppe eine Datei an, in der die Daten der jeweiligen Gruppe abgelegt werden.
  • Sie speichern jede einzelne Nachricht in einer separaten Datei ab.
  • Sie lassen alle Meldungen auf dem Server liegen.

Sie müssen sich nicht auf eine Methode beschränken. Für die dritte Alternative sorgt folgender Eintrag in »~/.gnus«:

(add-to-list  'gnus-secondary-select-methods
      '((nnml "")))

Die Beschreibung der »gnus-secondary-select-methods«-Variablen erhalten Sie, indem Sie »C-h v gnus-secondary-select-methods« (C steht in der Emacs-Schreibweise für [Strg]) eingeben.

Nun braucht Gnus noch die Information, woher er Newsgruppen bezieht und auf welche Weise der Transport erfolgen soll. Passen Sie dazu die Variable »gnus-select-method« in »~/.gnus« an; bei einem lokalen Newsserver (etwa Leafnode) folgendermaßen:

(setq gnus-select-method (list 'nnspool ""))

Besteht stattdessen eine direkte Verbindung zu einem Newsserver, lautet der Eintrag:

(setq gnus-select-method (list 'nntp "ip-  adresse.des.newsservers"))

Mehrere Newsfeeds konfigurieren Sie so:

(setq gnus-select-method '((nntp "erster.  newsfeed")
      (nntp "zweiter.newsfeed)))

Listing 1 zeigt, wie Sie festlegen, dass Mails sowohl lokal per SMTP ausgeliefert als auch per POP von einem Provider geholt werden.

»mail-sources« ist dabei als eine Liste von Listen angelegt, wobei jede Teilliste in Klammern eine Mail-Quelle (hier »file« und »pop«) mit zugehörigen Optionen beschreibt. Für die POP-Auslieferung kommt eine Emacs-Lisp-Lösung (»pop3.el«) zum Einsatz.

Beachten Sie, dass das Login-Passwort im Klartext in der ».gnus«-Datei steht. Sollten Sie nicht Herr über Ihre Maschine sein, geben Sie besser kein Passwort an. Emacs wird es dann bei jedem Mail-Download abfragen.

Eine Mail-Software ohne die Möglichkeit, Mails zu filtern und in verschiede-ne Ordner einzuordnen, dürfte wenig brauchbar sein. In Gnus wird der Ordnungsmechanismus mit der Variablen »nnmail-split-methods« angepasst. Das jeweils erste Element einer Subliste gibt an, welcher Gruppe eine Mail zugeschlagen wird, auf die das zweite Element der Subliste, ein regulärer Ausdruck, zutrifft.

Listing 1: Mail-Quellen

;;; Wo bekomme ich meine Mails her?
(setq mail-sources
      '((file :path "/var/spool/mail/username")
        (pop :server "pop.irgendwo.de"
             :user "mein-provider-login"
             :password "passwort")))

Gefiltert und sortiert

Nehmen wir folgendes Szenario an: Sie haben einen Geschäftspartner Willi Wuzel, dessen Mails von so großer Wichtigkeit sind, dass sie im Gegensatz zu allen anderen Mails einen eigenen Ordner bekommen. “Get Rich Quick”-Versprechungen sind unerwünscht und sollen in einem »junk«-Folder landen. Das Listing 2 setzt diese Wünsche in der Liste »nnmail-split-methods« um.

Die erste Regel besagt: Wenn eine Zeile mit »From:« beginnt, beliebige andere Zeichen (».*«) sowie im Anschluss die Zeichenkette »Willi Wuzel« enthält, ordnet Gnus die Mail in den Folder »mail .willi-wuzel« ein. Der zweite Eintrag zeigt in zarten Ansätzen, was die Emacser unter einem “verstreuten Zahnstocher” verstehen.

Der Anfang des regulären Ausdrucks entspricht dem der ersten Regel, nur bezieht er sich dieses Mal auf die »Subject«- statt auf die »From«-Zeile. Wenn der Mailheader ein »legal«, »money«, »fast« oder »buy« enthält, wird diese Mail nach »mail.junk« entsorgt.

Das Zahnstocher-Syndrom folgt aus der Bedeutung des Backslashs und dessen Behandlung in Zeichenketten. Mit »« wird ein folgendes Sonderzeichen seiner Sonderbedeutung enthoben (escaped). So steht »$« für das Dollar-Symbol, während »$« für sich alleine auf das Ende einer Zeile passt. Andere Zeichen bekommen durch ein vorangestelltes »« eine Sonderbedeutung. So steht »|« für eine alternative Auswahl.

Wer in einer Zeichenkette ein »« einsetzen will, muss »« eingeben. Dabei hebt das erste »« die Sonderbedeutung des folgenden »« auf. Somit trennt »|« Alternativen in einer Zeichenkette. Die dritte Regel passt auf alles, was vorher noch nicht aussortiert wurde, und sollte in dieser Form immer der letzte »nnmail-split-methods«-Eintrag sein.

Der Punkt trennt Verzeichnisse und Dateien voneinander. »mail.misc« bedeutet also: speichere in der Datei »misc« im »mail«-Verzeichnis. Mails legt Emacs im Verzeichnis »message-directory« ab, einer Variablen mit dem Standardwert »~/Mail«. Heißt Ihr Home-Verzeichnis »/home/my-home«, landen alle nicht gesondert gefilterten Mails in »/home /my-home/Mail/mail/misc«.

Darüber hinaus gehende Filtermöglichkeiten bietet das so genannte Fancy Splitting. Um davon Gebrauch zu machen, setzen Sie die Variable »nnmail-split-methods« auf »nnmail-split-fancy« und passen »nnmail-split-fancy« entsprechend an:

(setq nnmail-split-methods 'nnmail-split- U <$>fancy)
(setq nnmail-split-fancy ...)

Die entsprechenden Dokumentation rufen Sie zum Beispiel mit »C-h C-i gnus [Return] m In[Tab] m Fan[Tab]« auf. Erwarten Sie regelmäßig Mails von einer bestimmten Adresse, die aber nicht unbedingt in der »From«-Zeile zu finden ist (etwa die Postings auf der »erlang«-Mailingliste), sammeln Sie diese in der Datei »~/Mail/list/Erlang« mit:

(setq nnmail-split-fancy
  '((to "erlang" "list.Erlang")))

Das »to« steht für die Mail-Header »to |cc|apparently-to|resent-to|resent-cc«. Wie Sie Mails anhand ihres Inhalts einordnen, zeigt Listing 3.

Dieser Lisp-Code speichert den aktuellen Zustand des Emacs (»save-excursion«), wechselt zum Buffer mit dem Namen »*nnmail incoming*«, geht an den Anfang der Nachricht (»goto-char (point-min)«) und sucht den regulären Ausdruck »Some.*string«. Wird er gefunden, gibt die Funktion den Namen der Gruppe zurück, in die die Mail einsortiert werden soll. In der Liste aller vorhandenen Buffer taucht »*nnmail incoming*« wegen des Leerzeichens vor dem Namen übrigens nicht auf.

Listing 2: Mails filtern

(setq nnmail-split-methods
    '(("mail.willi-wuzel" "^From:.*Willi Wuzel")
      ("mail.junk"  "^Subject:.*legal|money|fast|buy")
      ("mail.misc" ""))) ;; catch all

Listing 3: Filtern anhand des Bodys einer Mail

(setq nnmail-split-fancy
      '((: split-on-body)))

(defun split-on-body ()
  (save-excursion
    (set-buffer " *nnmail incoming*")
    (goto-char (point-min))
    (when (re-search-forward "Some.*string" nil t)
      "string.group")))

Teilnahme an Newsgruppen

Wenn Sie News bislang mit einem anderen Newsreader gelesen haben, finden Sie wahrscheinlich eine Datei ».newsrc« in Ihrem Home-Verzeichnis. Beim ersten Aufruf abonniert Gnus – ohne besondere Vorkehrungen Ihrerseits – die dort aufgeführten Gruppen. Wenn Sie völlig neu im Usenet sind, versucht Gnus Sie automatisch zum Lesen einiger Gruppen zu zwingen, beispielsweise von solchen, die den Umgang im Usenet beschreiben, und natürlich der Gnus-Newsgruppe »gnu.emacs.gnus«.

Wie allgemein im Emacs lassen sich alle interaktiven News-Funktionen in der Langform »M-x Funktionsname« aufrufen, jedoch sind die wichtigsten auch über Menü-Einträge oder Tastaturfolgen erreichbar. Es steht Ihnen frei, weitere Funktionen oder gar neue Menüs ins Hauptmenü aufzunehmen.

Starten Sie Gnus mit »M-x gnus« oder über entsprechende Menüs, landen Sie zunächst in der Gruppen-Sicht (Abbildung 2). Dabei werden der Standardeinstellung drei neue Menüs, die etwa hundert Gnus-Befehle abdecken, hinzugefügt, sie sind per rechter Maustaste auch über das Kontextmenü erreichbar.

Wollen Sie weitere Newsgruppen abonnieren, starten Sie die Suche nach dem entsprechenden Befehl mit »C-h (alternativ [F1]) a Suchbegriff«. Wollen Sie umfangreichere Informationen zu den Fundstellen haben, greifen Sie auf »M-x apropos [Return] was_ich_ungefähr suche« zurück.

Die gesuchte Funktion gehört zu Gnus und trägt daher einen Namen, der mit »gnus« beginnt. Da sie Gruppen auflisten soll, kommt sicher auch der String »list« darin vor. »C-h a gnus.*list« findet eine Reihe von Treffern. Sehr weit oben steht:

- gnus-group-list-all-groups     List all U <$>newsgroups with level ARG or lower

Dass diese Funktion, die auch per Tastatureingabe »L« zu erreichen ist, der gesuchten entspricht, erfahren Sie in der zugehörigen Dokumentation, die Sie mit »C-h ([F1]) f gnus-group-list-all-groups« aufrufen. Mit »C-h C-h« erhalten Sie eine Übersicht der von Emacs angebotenen Hilfsmöglichkeiten. »gnus-group-list-all-groups« zeigt alle auf dem Newsserver verfügbaren Newsgruppen in einem Buffer an, der sich dann mit den Emacs-Suchfunktionen – am besten mit »C-s Stichwort« – durchstöbern lässt.

Bewegen Sie den Cursor jetzt auf eine interessante Gruppe und geben »U« ein, wird noch der Subscription-Status umgeschaltet. Kennen Sie nur Teile des Grup-pennamens, können Sie sich mit »S s« der gewünschten Gruppe nähern. In der Meldungszeile sind Eingaben mit der [Tab]-Taste expandierbar. »S s comp.lang[Tab][Tab]« etwa sorgt für eine Gruppen-Liste unterhalb der »comp.lang«-Hierarchie.

Sofern Sie von Anfang an bereits wissen, welche Gruppen Sie lesen wollen, geht es oft schneller, die Variable »gnus-default-subscribed-newsgroups« anzupassen, bevor Sie Gnus überhaupt starten:

(setq gnus-default-subscribed-newsgroups
'("comp.lang.eiffel" "comp.lang.scheme"
  "comp.lang.misc" "comp.emacs"
  "comp.emacs.xemacs"))

Melden Sie sich nun bei Ihrem Provider an und rufen »M-x gnus« auf, werden die entsprechenden Newsgruppen heruntergeladen.

Der Gruppen-Buffer enthält übrigens sowohl News- als auch Mail-Gruppen. Zum Lesen einer Gruppe setzen Sie den Cursor drauf und drücken die Leertaste. Gnus liest dann entweder alle neuen Meldungen in der Gruppe ein oder nur so viele, wie Sie auf einmal sehen möchten. Mit »j« springen Sie direkt zu einer Gruppe, die Sie am Prompt eingeben, »j comp.la[Tab].ei[Tab]« etwa öffnet die Gruppe »comp.lang.eiffel«.

Abbildung 2: Newsgruppen im Gnus Group Buffer.

Abbildung 2: Newsgruppen im Gnus Group Buffer.

Gruppen-Ebenen

Gruppen lassen sich nach mehreren Kriterien sortieren und mit »S l nr. [Return]« in verschiedene Ebenen einstufen, wobei man sich alle Gruppen oder nur Gruppen eines bestimmten Levels anzeigen lassen kann. Gruppen mit höherer Nummer ordnet Gnus dabei als interessanter ein. Zum Sortieren nach Ebenen geben Sie »G S l« ein. Aus dem Gruppen-Buffer können Sie selbstverständlich auch Mails (mit »m«) oder News (mit »a«) verschicken.

Nach Auswahl einer Gruppe werden die darin versammelten Meldungen in einem Übersichtsmodus angezeigt. Zum Lesen einer Mail oder eines Artikels reicht ein Druck auf die Leertaste. Das Fenster des Übersichtsmodus teilt sich; in der Default-Einstellung steht die Nachricht unten. Das Kontextmenü (Abbildung 3) bietet dieselbe Befehlsauswahl wie die Hauptmenüs »Misc« bis »Post«.

Gnus ab Version 5.8 ist MIME-fähig, so dass sich Attachements verschicken, abspeichern oder direkt öffnen lassen. Sollten Sie W3 installiert haben (das dürfte bei jedem Emacs der Fall sein), kann Emacs auch HTML-Mails entsprechend anzeigen. Sie müssen sich dabei meist etwas gedulden, da W3 nur bei Bedarf geladen wird und das Laden des umfangreichen Pakets ein wenig dauert.

Zum Beantworten von Mails stehen die Shortcuts »r« oder »R« bereit. Bei einem großen R wird die Mail, auf die man antwortet, als Zitat eingebunden, bei Kleinschreibung nicht. Wollen Sie auf einen Newsartikel antworten, benutzen Sie »f« oder »F«. »S o m« leitet Mails als Mail weiter, »S o p« als Posting. Nähere Informationen erhalten Sie in den Info-Dateien (»C-h C-i gnus [Return] m The Sum[Tab]«). Zum Löschen (expiren) eines Artikels geben Sie »E« ein.

Abbildung 3: Lesen von Nachrichten.

Abbildung 3: Lesen von Nachrichten.

Threads, Scoring, Killfiles

Ohne erkennbaren roten Faden ist Mail- und News-Lesen ein ziemlich frustrierendes Erlebnis. Besonders wenn sich ein Thema lange hinzieht, wird es ohne Threads schwierig, den Faden nicht zu verlieren. Bei Gnus können Sie an die Threads sogar Punkte vergeben: je mehr, desto interessanter. Wenn Sie es wünschen, zeigt Gnus nur noch Mails ab einer bestimmten Punktezahl an. Sie dürfen auch Punkte an einzelne Personen verteilen: Je mehr Punkte, desto höher schätzen Sie die Meinung der entsprechenden Person ein.

Für schlechte Artikel oder gar Flames stehen Killfiles zur Verfügung, so dass sich Mails unangenehmer Zeitgenossen problemlos ignorieren lassen. Gnus unterscheidet dabei lokale (auf eine Gruppe bezogene) Killfiles und ein globales. Welche Möglichkeiten Ihnen Scoring sonst noch bietet, lesen Sie am besten in den entsprechenden Info-Seiten nach: »C-h C-i gnus [Return] m Scoring«, (siehe Abbildung 4).

Abbildung 4: Warum Gnus nicht von Killfiles, sondern von Scoring spricht.

Abbildung 4: Warum Gnus nicht von Killfiles, sondern von Scoring spricht.

Werden und Vergehen von Nachrichten

Gnus behandelt Mails wie News, und das hat Konsequenzen: News haben nämlich eine Art Verfallsdatum. Je nach Plattenkapazität und Politik Ihres News-Anbieters werden nicht alle Gruppen auf einem Server vorgehalten, sondern die Artikel einer Gruppe nach einer gewissen Zeit aussortiert (expired).

Auch gelesene Mails können in Gnus als expirable markiert werden. Gnus räumt so markierte Mails allerdings nur auf, wenn Sie es explizit festlegen. Das ist selbstverständlich konfigurierbar.

Mail-Sammlung

Mit der ersten Anpassung teilt Listing 4 Gnus mit, welche Mailinglisten das Programm automatisch aufräumen soll: im Beispiel alle Listen unterhalb von »list«. Nicht alle Artikel sollen sofort verworfen werden, sondern erst nach einer gewissen Haltedauer. Die Zeitspanne legt »nnmail-expiry-wait-function« fest. Diese Funktion hat einen Parameter, den Namen der Gruppe. Wird etwa die Mailingliste Python-de angegeben, dann erhält »group« den Wert »list.Python-de«.

In der folgenden Fallunterscheidung mit »cond« wird der Namens-String durchsucht. Findet sich im ersten Fall ein »Python-de« im Parameter, soll diese Mail niemals gelöscht werden. Entsprechend gilt im zweiten Fall eine Mindestlebensdauer von 30 Tagen. Bei anderen Gruppen sind die Artikel schon nach 14 Tagen fällig. Ein »never« ist wörtlich gemeint: Gnus fasst diese Mails nicht an. Das manuelle Entfernen ist auch nicht wirklich kompliziert. Wenn Sie eine Mail als expirable kennzeichnen, lässt sich eine Gruppe mit solchen Mails im Übersichtsmodus mit »B C e« aufräumen.

Oft dürften Sie wenig erfreut sein, wenn Sie keine Kopie der von Ihnen verschickten Mails finden. Auch hier bietet Gnus eine Reihe von Konfigurationsmöglichkeiten. Mit Listing 5 landen alle gesendeten Mails im Verzeichnis »Send« im Home-Verzeichnis. Die Buchführung über die versendeten Mails erfolgt in der Datei »~/Send/active«.

Auch beim Verschicken von Mails können Filter aktiv sein. Antworten aus einer Mailingliste, in deren Namen »Eiffel« vorkommt, legt Gnus in der Datei »~/Send/Eiffel« ab. Postings an »Debian«-Gruppen landen entsprechend in »~/Send/Debian«.

Interessant ist auch der letzte Abschnitt, der mit Zeile 13 beginnt. Immer wenn Sie eine Newsgruppe lesen, werden die (egal ob als News-Artikel oder normale Mail) verschickten Antworten in der Datei »News« abgelegt. Befinden Sie sich weder in einer Eiffel- noch in einer Debian-Gruppe oder in einer anderen Newsgruppe, wird die versendete Datei an »Misc« angehängt.

Listing 4: Mails auslaufen lassen

(setq gnus-auto-expirable-newsgroups "list.*")
(setq nnmail-expiry-wait-function
      (lambda (group)
        (cond ((string-match "Python-de" group )
               'never)
               ((string-match  "Ruby|Erlang|Guile"
                               group)
               30)
              (t 14))))

Listing 5: Kopien gesendeter Mails konfigurieren

01 ;;; Wo sollen ausgehende Meldungen gespeichert werden?
02 (setq gnus-message-archive-method
03       '(nnfolder "archive"
04                 (nnfolder-directory   "~/Send/")
05                 (nnfolder-active-file "~/Send/active")
06                 (nnfolder-get-new-mail nil)
07                 (nnfolder-inhibit-expiry t)))
08 
09 (setq gnus-message-archive-group
10           '(
11             (".*list.*Eiffel.*" "Eiffel")
12                 ("Debian" "Debian")
13                 (if (message-news-p)
14             "News"
15         "Misc")))

Verschlüsselt

Für die Verschlüsselung mit PGP oder GPG kann man in den Emacs-Implementierungen auf das meist bereits vorinstallierte »mailcrypt«-Paket zurückgreifen. Die neueste Version finden Sie unter [http://mailcrypt.sourceforge.net/]. In Listing 6 finden Sie die erforderlichen Anpassungen in der Gnus-Initialisierungsdatei. Wenn Sie nun eine Mail schreiben, bekommen Sie über einen zusätzlichen Menüpunkt Mailcrypt angeboten sowie einen Extraeintrag im Kontextmenü (Abbildung 5).

Der Adaptierbarkeit der Emacse durch Emacs-Lisp sind praktisch keine Grenzen gesetzt. Da Gnus außerdem einfach anzupassen ist, dürfte es kaum zwei identische Gnus-Konfigurationen geben. Das WWW ist voll entsprechender Beispiele – wer will, muss sich nur noch bedienen. (pju)

Listing 6: Ver- und Entschlüsselung von Mail

01 ;; Mail-Verschlüsselung
02 (load-library "mailcrypt")
03 ;; gpg als Verschlüsselungstool nutzen
04 (mc-setversion "gpg")
05 ;; Hooks, mit denen ein Menü für die Verschlüsselungstools eingebaut wird
06 (add-hook 'message-mode-hook 'mc-install-write-mode)
07 (add-hook 'gnus-article-edit-mode-hook 'mc-install-read-mode)
08 (add-hook 'news-reply-mode-hook 'mc-install-write-mode)
Abbildung 5: Mails verschlüsseln mit Mailcrypt.

Abbildung 5: Mails verschlüsseln mit Mailcrypt.

Infos

[1] Debra Cameron and Bill Rosenblatt: “Learning GNU Emacs”, O’Reilly 1992

[2] Michael A. Schoonover et al.: “GNU Emacs UNIX Text Editing and Programming”, Addison-Wesley Publishing 1992

[3] Bob Glickstein: “Writing GNU Emacs Extensions”, O’Reilly 1997

[4] [http://www.gnus.org/]

[5] [news:comp.emacs.gnus]

[6] [news:de.comp.gnu]

[7] [http://my.gnus.org/]

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben