Gmailのようなウェブメールインターフェイスは、しばしば非効率的で安全ではありません。いずれも常にインターネットに接続している必要があり、大量のタグ付けやフィルタリングといった機能には対応していません。しかし、すでにEmacsを使ってテキストを編集しているのであれば、Emacsを使ってメールを管理することも可能です。

**Emacs のキーボードショートカットのチートシートをダウンロードして、生産性を向上させましょう。

現代的な電子メールクライアントと Emacs

Thunderbird や Evolution のようなオフラインの電子メールクライアントもありますが、これらのプログラムはしばしば大きく、必要なものがすべて揃っているわけではありませんし、他のアプリケーションとうまく組み合わせられないこともあります。

例えば、Evolutionは電子メールとカレンダーは使えますが、文書処理、ニュースグループ、ToDoリストには対応していません。このため、バラバラなユーザー体験が生まれ、将来的にさらなる問題を引き起こす可能性があります。

一方、Emacsは相互運用性という概念で動いています。Emacsでは、すべてが同じデザイン言語でアクセス、操作できます。基本的な操作をするためのキーバインドも同じです。さらに、パッケージは他のパッケージの入力として使用できるテキストを厳密に作成し、出力することもできます。

例えば、ニュースグループを読むのにgnusを使い、メモを管理するのにOrg Modeを使っている場合、ニュースグループの記事をOrgバッファに指示して注釈を付けたり、インスピレーションとして保存したりすることができます。

さらに、EMMSで音楽を管理している場合、現在の曲のタイトルをテキストで出力します。これをブログの記事にリンクさせれば、何を聴きながら書いているのかを強調することができます。

電子メールクライアントとしてのEmacs

Emacsでは、メールをOrgバッファに統合して保存し、注釈を付けたり、カレンダーのToDo項目として保存したりすることができます。

また、その逆も可能です。Orgバッファに記事を書き、Emacsの中でそれを誰かにメールとして送ることができます。

これは2つのプログラムの助けを借りて可能です。Offlineimapnotmuchです。

Offlineimap と notmuch のインストール

この二つのアプリケーションをDebianとUbuntuにインストールするには,以下のようにします.

sudo apt install offlineimap notmuch

Arch Linux では

sudo pacman -Syu offlineimap notmuch

Fedora では

sudo dnf install offlineimap notmuch

その後、Emacsに付属のnotmuchパッケージをインストールします。現在、MELPAリポジトリで公開されています。まず、Emacsの設定でこれを有効にする必要があるかもしれません。

そのためには、init.elファイルに以下のlispの行を追加してください。

(require 'パッケージ)
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(package-initialize)

notmuchパッケージをインストールするには、Alt + X を押して package-install とタイプしてください。Emacsはインストールするパッケージの名前を聞いてきます。notmuch “と入力してください。

インストールされると、このパッケージはnotmuchタグ付けプログラムのフロントエンドとして機能します。

Offlineimap のセットアップ

これが終わったら、Offlineimapの設定を行います。これは主に1つのファイルで行う簡単な作業です。".offlineimaprc “です。

デフォルトでは、この設定ファイルはあなたのホームディレクトリから読み込まれます。このファイルを作成するには、以下のコマンドを実行します。

touch /home/$USER/.offlineimaprc

作成が完了したら、お気に入りのテキストエディタでこのファイルを開いてください。

Offlineimapの設定は、INI形式で書かれています。例えば、単一のIMAPアカウント用の.offlineimaprcは次のようなものになります。

[一般]
アカウント = imapaccount
 
[アカウント imapaccount]
ローカルレポジトリ = thismachine
リモートレポジトリ = thatimap
 
[リポジトリthismachine](thismachine)
タイプ = Maildir
ローカルフォルダ = /home/$USER/mail/youremail@domain.com
 
[リポジトリ thatimap]
タイプ = IMAP
リモートホスト = imap.domain.com
リモートユーザー = youremail@domain.com
remotepass = your_password_goes_here
ssl = yes
sslcacertfile = /your/ca/cert/path/here

メールリポジトリ

Offlineimapは、リモートの電子メールディレクトリの構造をローカルコンピュータに保存することで動作します。これにより、プログラムはリモートIMAPサーバーを模倣し、notmuchのようなメールクライアントがオンラインになる必要なくメールを読むことができるようになります。

リポジトリカテゴリは、ローカルまたはリモートのメールボックスをセットアップするかどうかで異なります。ローカルのメールボックスを作成する場合は、そのタイプを “Maildir” に設定するだけです。これにより、このリポジトリがローカルマシンの場所を指していることをOfflineimapに伝えます。

[リポジトリ thismachine]
タイプ = Maildir
localfolders = /home/$USER/mail/youremail@domain.com

これに対して、リモートリポジトリのセットアップは少し複雑です。しかし、一度設定ファイルの各値の意味を理解すれば、リモートの設定はとても簡単になるはずです。

Repository ブロックの例をもう一度見てみましょう。

[リポジトリ thatimap]
タイプ = IMAP
リモートホスト = imap.domain.com
remoteuser = youremail@domain.com
remotepass = your_password_goes_here
ssl = yes
sslcacertfile = /your/ca/cert/path/here

Gmailへの接続

上記のように、OfflineimapはGmailアカウントに接続するための特別な型も提供しています。これは、Googleがメールサービスに接続する際に追加情報を要求するためです。

Offlineimapを使用してGmailに接続するには、ローカルとリモートのリポジトリの種類を変更するだけです。ローカルリポジトリを “GmailMaildir” に、リモートリポジトリを “Gmail” に設定する必要があります。

例えば、Gmail サービスに接続する .offlineimaprc ファイルは以下のようなものになります。

[一般的な] アカウント
アカウント = gmailaccount
 
[アカウント gmailaccount]
ローカルレポジトリ = ローカルgmail
リモートレポジトリ = リモートgmail
 
[リポジトリ localgmail]
タイプ = GmailMaildir
ローカルフォルダ = /home/$USER/mail/youremail@gmail.com
 
[リポジトリ remotegmail]
タイプ = Gmail
maxconnections=1
リモートホスト = imap.gmail.com
リモートユーザー = youremail@gmail.com
remotepass = your }_password_goes_here
ssl = yes
sslcacertfile = /your/ca/cert/path/here

SSL接続の確立

次に行うことは、OfflineimapがSSLで接続するように設定することです。これを行うには、システム全体のSSL証明書へのパスを指定する必要があります。

SSL証明書の場所は、実行しているシステムに依存します。しかし、DebianとUbuntuでは、以下のパスにあります。

ls /etc/ssl/certs/ca-certificates.crt

これでターミナルで offlineimap を実行し、リモート IMAP サーバーからすべての メールを取得できるようになりました。

notmuch のセットアップ

ここから、notmuch のセットアップに進みます。その名の通り、特に設定することはありません。

IMAP ディレクトリを用意したら、コマンドラインで notmuch を実行します。これは、あなたの特定の電子メールセットアップについて尋ねる設定スクリプトを開始します。

これによって、notmuchはあなたのホームディレクトリに設定ファイルを作成します。以下のコマンドを実行することで確認できます。

less /home/$USER/.notmuch-config

新しいメールをどこで見つけるか notmuch に伝えるいくつかのオプションを設定します。また、notmuch がデータベースを検索するときにインデックスさせたくないタグを設定することもできます。

例えば、notmuch がジャンクとタグ付けされたメールを検索しないように設定する ことができます。

検索
exclude_tags = junk

Notmuch でメールにタグをつける

お気づきかもしれませんが、notmuchはコマンドラインから直接メールにタグ付けするため、notmuchの設定ファイル内ではメールタグを設定しませんでした。

これにより、notmuch をどのように使用したいかを柔軟に設定することができます。例えば、cronjobとして定期的に実行されるスクリプトにnotmuchタグ付けコマンドを含めることができます。

しかし、これを始めるには、まず以下のコマンドを実行して、notmuchのデータベースを初期化する必要があります。

notmuch new

このコマンドは設定ファイルを読み込み、適切なデフォルト値に基づいてデータベースを作成します。ここから、notmuchのタグ付けコマンドを使って、受信メールと既存のメールの両方にタグを付けることができます。

Notmuchのタグ付け構文

notmuchのタグ付け構文は非常に直感的で、一般的な形式は以下のような感じです。

notmuch tag [+|-]label header:header-property (tag:current-tag)

Emacsでメールを見る

Emacsでメールを見ることができます。そのためには Alt + X を押して notmuch とタイプしてください。これでEmacsにnotmuchのフロントエンドパッケージがロードされます。

ランディング画面には、デフォルトでいくつかの標準タグが表示されます。しかし、“All Tags” の横にある “[show]” ボタンをクリックすることで、カスタムタグを表示することができます。また、S を押してコマンドバッファに “is:tag_name” と入力することでも、自分のタグにアクセスすることができます。

Emacsの標準的な移動・編集キーもnotmuchの中で動作します。さらに、メールをよりよくフィルタリングするための機能がたくさん追加されています。

例えば、特定のタグを表示しているときに Shift + Z を押すと、“ツリースタイル “のビューをトリガーします。これは、メーリングリストを購読しているときに、メールをわかりやすくスレッドで表示するのに便利です。

Emacsでメールを送るためのセットアップ

これで、Emacsで読めるメールディレクトリができました。しかし、メールを送信するための手段を設定する必要があります。幸いなことに、これはEmacsの中で驚くほど簡単に行えます。

電子メールのサポートを有効にするには、init.elファイルに次のようなlispの行を追加します。

(setq mail-user-agent 'message-user-agent)
(setq message-send-mail-function 'smtpmail-send-it)
      smtpmail-stream-type(ストリームタイプ) 'starttls
      smtpmail-smtp-server「mail.domain.com」。
      smtpmail-smtp-service 587)

.authinfoを使ったメール認証の設定

Emacsがあなたのメールアカウントでメールを送信することを許可する必要があります。これを行うには、.authinfoにあなたの電子メール認証情報を追加します。

.authinfo ファイルは、リモート サービスにログインするときのユーザー資格情報を保存する隠しファイルです。ほとんどの場合、Linuxのインストールには、このファイルはデフォルトでは含まれていません。しかし、以下のコマンドを実行することで、このファイルを作成することができます。

touch /home/$USER/.authinfo

touch /home/$USER/.authinfo ``` 注意すべき重要な点は、このファイルにはあなたのユーザー名やパスワードなどの機密情報が含まれているということです。したがって、自分だけが読み書きができるように、アクセス権を保護する必要があります。そのためには、以下のコマンドを実行してください。

chmod 600 /home/$USER/.authinfo

そこから、あなたのメールアカウントの認証情報を含むように .authinfo ファイルを編集します。.authinfoファイルの一般的なシンタックスは以下のようなものです。

machine mail.domain.com login username@domain.com port 587 password mypasswordis123

Emacs をリロードして、新しい設定を適用します。

Emacsで初めてメールを送信する

これで、Emacsからメールを送るのは非常に簡単になりました。送信するには、Ctrl + X, M を押すか、notmuch バッファの中で M を押してください。

これらのキーバインドで composemail コマンドが実行され、空の見出しを持つメッセージバッファが作成され、そこにメールを入力することができます。

完了したら、Ctrl + C, Ctrl + C を押して、Emacsから最初のメールを送信してください。

おめでとうございます! Emacsをメールクライアントとして設定することに成功しました。さらに、IMAPやSMTPサーバの仕組みや、メールタギングシステムの基本的な設定も理解できたことでしょう。

このような話を聞いて、Emacs で他に何ができるのか興味を持たれたなら、 この拡張可能なテキストエディタのための 5 つの便利なパッケージをチェックしてみてください。

よくある質問

1. offlineimapを実行した後、自動的に電子メールにタグを付けることは可能ですか?

Offlineimapの中で、それほど多くないポストシンクフックを作成することによって、これを行うことができます。アカウントカテゴリの下に “postsynchook “という変数を挿入してください。

...
 
[アカウント imapaccount]
ローカルリポジトリ = thismachine
リモートレポジトリ = thatimap
 
ポストシンチューク = /path/to/your/script.sh
...

この変数には、タグを設定するための notmuch コマンドを含む実行可能なスクリプトのファイルパスが含まれている必要があります。

例えば、これは受信したメーリングリストのメールから未読タグを削除し、適切なタグを付けるシンプルなポストシンクスクリプトです。

#!/bin/sh
 
notmuch new
 
notmuch tag -inbox -unread +mailing-list from:mailing-list または to:mailing-list@domain.com tag:inbox
notmuch tag -inbox -unread +mailinglist-cmd from:mailing-list-cmd@domain.com tag:inbox

2. メールを書いたのですが、送らないことにしました。Emacsでメールを破棄するにはどうしたらいいですか。

Emacsでメールを破棄するには、メッセージバッファの中で Ctrl + C, Ctrl + D を押してください。この操作により、Emacsはメールを破棄した下書きとしてタグ付けし、一定期間後に削除します。

3. 3. Emacsのnotmuchの中でメールのタグを変更することは可能ですか?

はい! Notmuchバッファの中で、Shift + = を押してください。これは小さなコマンドバッファを開くので、そこで特定の電子メールに追加したり 削除したりしたいタグを指定することができます。

Akira
Akiraは情熱的なゲーマーであり、製品レビュアーです。ゲームをしていないときは、最新のゲーミングアクセサリーを試したり、製品のレビューをしていることが多い。彼の分かりやすいスタイルは、ゲーマーが自分のニーズに最も適した製品を簡単に判断できるようにするものです。また、技術的な問題にも精通しており、その解決方法も知っている。