Linux
 Computer >> コンピューター >  >> システム >> Linux

Emacs内でEメールを使用する方法

Emacs内でEメールを使用する方法

GmailなどのWebメールインターフェイスは、多くの場合、非効率的で安全ではありません。それらはすべて、常にインターネットに接続している必要があり、一括タグ付けやフィルタリングなどの機能をサポートしていません。ただし、すでにEmacsを使用してテキストを編集している場合は、Emacsを使用してメールを管理することもできます。

最新の電子メールクライアントとEmacs

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

Emacs内でEメールを使用する方法

たとえば、Evolutionはメールとカレンダーを受け入れることができますが、ドキュメント処理、ニュースグループ、やることリストは扱いません。これにより、まとまりのないユーザーエクスペリエンスが作成され、将来的にさらに多くの問題が発生する可能性があります。

一方、Emacsは相互運用性の概念で動作します。 Emacs内では、すべてが同じ設計言語を介してアクセスおよび操作できます。基本的なアクションを実行するためのキーバインドは同じです。さらに、これらのパッケージは、他のパッケージで入力として使用できるテキストを厳密に作成して出力します。

Emacs内でEメールを使用する方法

たとえば、gnusを使用してニュースグループを読み取り、Orgモードを使用してメモを管理している場合、ニュースグループの記事をOrgバッファに転送して、注釈を付けたり、インスピレーションとして保存したりできます。

Emacs内でEメールを使用する方法

さらに、EMMSを使用して音楽を管理している場合は、現在の曲のタイトルがテキストとして出力されます。これをブログ投稿にリンクして、執筆中に聞いていることを強調することができます。

Emacs内でEメールを使用する方法 メールクライアントとしてのEmacs

Emacsを使用すると、電子メールを統合してOrgバッファーに保存し、注釈を付けたり、カレンダーのToDoアイテムとして保存したりできます。

逆のこともできます。Orgバッファに記事を書いて、Emacs内で誰かにメールとして送信します。

これは、2つのプログラムの助けを借りて可能です:オフラインマップ およびあまり

  • Offlineimapは、リモートサーバーから電子メールを取得してディスクに保存するヘルパープログラムです。サーバーは、セルフホストサーバーか、GmailやProtonmailなどのメールサービスのいずれかです。
  • 一方、メールにタグを付けて表示する非常にシンプルなアプリケーションはそれほど多くありません。受信したすべてのメールのデータベースを維持し、設定内容に従ってタグを付け、それらのタグに基づいてEmacsにこれらのメールを表示します。

Offlineimapのインストールとnotmuch

これら2つのアプリケーションをDebianとUbuntuにインストールするには:

sudo apt install offlineimap notmuch

Arch Linuxの場合:

sudo pacman -Syu offlineimap notmuch

Fedoraの場合:

sudo dnf install offlineimap notmuch
Emacs内でEメールを使用する方法

その後、付属のnotmuchパッケージをEmacsにインストールします。現在、MELPAリポジトリで利用できます。 Emacs構成で最初に有効にする必要があるかもしれません。

これを行うには、次のlisp行をinit.elファイルに追加します。

(require 'package)
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(package-initialize)

notmuchパッケージをインストールするには、 Altを押します。 + X package-installと入力します 。 Emacsはあなたがインストールしたいパッケージの名前を尋ねます。 「あまりない」と入力します。

インストールすると、このパッケージはそれほど多くないタグ付けプログラムのフロントエンドとして機能します。

Emacs内でEメールを使用する方法 Offlineimapの設定

これで、Offlineimapを構成できます。これは、主に単一のファイル「.offlineimaprc」を含む単純なプロセスです。

デフォルトでは、この構成ファイルはホームディレクトリから読み取られます。作成するには、次のコマンドを実行します。

touch /home/$USER/.offlineimaprc

完了したら、お気に入りのテキストエディタを使用してこのファイルを開きます。

Emacs内でEメールを使用する方法

offlineimapの構成はINI形式で記述されています。たとえば、単一のIMAPアカウントの.offlineimaprcは、次のようになります。

[general]
accounts = imapaccount
 
[Account imapaccount]
localrepository = thismachine
remoterepository = thatimap
 
[Repository thismachine]
type = Maildir
localfolders = /home/$USER/mail/youremail@domain.com
 
[Repository thatimap]
type = IMAP
remotehost = imap.domain.com
remoteuser = youremail@domain.com
remotepass = your_password_goes_here
ssl = yes
sslcacertfile = /your/ca/cert/path/here
  • 一般 カテゴリは、このインストールに単一のアカウントを設定していることをOfflineimapに通知します。
  • アカウント カテゴリは、その特定のアカウントがメールを受信するソースと、Offlineimapがメールをフェッチするときに実行するスクリプトを指定します。
  • リポジトリ カテゴリは、Offlineimapに設定しようとしているアカウントの構成を通知します。ここでの設定は、Gmailを使用しているかどうかによって大きく異なります。
メールリポジトリ

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

Emacs内でEメールを使用する方法

リポジトリカテゴリは、ローカルメールボックスとリモートメールボックスのどちらを設定するかによって異なります。ローカルメールボックスを作成するには、そのタイプを「Maildir」として設定するだけです。これにより、Offlineimapは、このリポジトリがローカルマシン内の場所を指していることを通知します。

[Repository thismachine]
type = Maildir
localfolders = /home/$USER/mail/youremail@domain.com
Emacs内でEメールを使用する方法

対照的に、リモートリポジトリの設定は少し複雑になる可能性があります。ただし、構成ファイルの各値の意味を理解すれば、リモートセットアップは非常に簡単になります。

リポジトリブロックの例をもう一度見てみましょう:

[Repository thatimap]
type = IMAP
remotehost = imap.domain.com
remoteuser = youremail@domain.com
remotepass = your_password_goes_here
ssl = yes
sslcacertfile = /your/ca/cert/path/here
  • タイプ 設定は、Offlineimapが接続するサーバーの種類を示します。これには、Googleメール用のGmailとGoogle以外のアカウント用のIMAPの2つのオプションしかありません。
  • リモートホスト 設定により、Offlineimapが接続するIMAPサーバーのアドレスが設定されます。
  • リモートユーザー およびリモートパス ここで、ユーザーの資格情報を提供する必要があります。
  • sslの設定 「はい」にすると、OfflineimapにIMAPサーバーへの暗号化された接続を確立するように指示されます。
  • sslcacertfile 次に、オプションでローカルSSL証明書を指定します。 offlineimapはこれを使用して、IMAPサーバーとの接続を確認します。
Gmailへの接続

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

Emacs内でEメールを使用する方法

offlineimapを使用してGmailに接続するには、ローカルリポジトリとリモートリポジトリのタイプを変更するだけです。ローカルリポジトリを「GmailMaildir」に設定し、リモートを「Gmail」に設定する必要があります。

たとえば、Gmailサービスに接続する.offlineimaprcファイルは次のようになります。

[general]
accounts = gmailaccount
 
[Account gmailaccount]
localrepository = localgmail
remoterepository = remotegmail
 
[Repository localgmail]
type = GmailMaildir
localfolders = /home/$USER/mail/youremail@gmail.com
 
[Repository remotegmail]
type = Gmail
maxconnections=1
remotehost = imap.gmail.com
remoteuser = youremail@gmail.com
remotepass = your_password_goes_here
ssl = yes
sslcacertfile = /your/ca/cert/path/here
SSL接続の確立

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

SSL証明書の場所は、実行しているシステムによって異なります。ただし、DebianとUbuntuでは、次のパスにあります:

ls /etc/ssl/certs/ca-certificates.crt
Emacs内でEメールを使用する方法

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

あまり設定しない

そこから、あまりセットアップに進みません。その名前に続いて、それを使用して構成することはあまりありません。

IMAPディレクトリを取得したら、コマンドラインであまり実行できません。これにより、特定の電子メール設定について尋ねる構成スクリプトが開始されます。

Emacs内でEメールを使用する方法

これにより、ホームディレクトリに構成ファイルが作成されることはほとんどありません。次のコマンドを実行して確認できます:

less /home/$USER/.notmuch-config
Emacs内でEメールを使用する方法

新着メールの場所をあまり教えてくれないオプションをいくつか設定します。データベースを検索していることがあまりない場合は、インデックスを作成したくないタグを設定することもできます。

たとえば、ジャンクとしてタグ付けされたメールをほとんど検索しないように設定できます:

[search]
exclude_tags = junk

notmuchを使用したメールのタグ付け

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

これにより、あまり使用したくない方法に柔軟に対応できます。たとえば、cronジョブとして定期的に実行されるスクリプトにあまりタグ付けしないコマンドを含めることができます。

Emacs内でEメールを使用する方法

ただし、開始するには、最初に次のコマンドを実行して、notmuchのデータベースを初期化する必要があります。

notmuch new

これにより、構成ファイルが読み取られ、適切なデフォルトに基づいてデータベースが作成されます。そこから、notmuchのタグ付けコマンドを使用して、受信メールと既存のメールの両方にタグを付けることができるようになりました。

Notmuchのタグ付け構文

notmuchのタグ付け構文は非常に直感的であり、一般的な形式は次のようになります。

notmuch tag [+|-]label header:header-property (tag:current-tag)
  • タグ コマンドは、メールボックスにタグ付けルールを作成するために次の引数が使用されることをあまり伝えません。
  • ラベル オプションは、ラベルを追加するか(+)、現在存在するラベルを削除するか(-)を指定します。たとえば、すべての受信メールはデフォルトで「未読」のタグが付けられています。したがって、このコマンドを-unreadに設定して、未読タグを削除できます。
  • ヘッダー オプションは、設定した電子メールヘッダーに基づいてのみラベルを適用するように指示します。たとえば、「From:」ヘッダーを使用して、送信元に基づいてメールをフィルタリングできます。
  • タグ optionは、タグ付けルールの適用を特定のタグに制限するオプションの引数です。たとえば、特定のメールに未読のタグがある場合にのみラベルが適用されるように設定できます。
Emacs内でEメールを使用する方法 Emacsでのメールの表示

Emacs内でメールを表示できます。これを行うには、 Altを押します。 + X notmuchと入力します 。これにより、Emacsではほとんどフロントエンドパッケージがロードされません。

Emacs内でEメールを使用する方法

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

Emacs内でEメールを使用する方法

標準のEmacsの移動キーと編集キーもそれほど多くは機能しません。さらに、メールをより適切にフィルタリングするための追加機能がたくさんあります。

たとえば、 Shift を押して、「ツリースタイル」のビューをトリガーします。 + Z 特定のタグを見ながら。これは、メールをわかりやすいスレッドで表示するため、メーリングリストに登録している場合に便利です。

Emacs内でEメールを使用する方法 メールを送信するためのEmacsの設定

これで、Emacs内で読み取ることができる作業用の電子メールディレクトリができました。ただし、メールを送信する手段を設定する必要があります。幸いなことに、これはEmacs内で驚くほど簡単に実行できます。

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

(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)
  • mail-user-agent Emacsのmessage-user-agentを使用するようにuser-agent変数を設定します。これにより、送信メールがEmacsから送信されていることが識別され、他のメールサーバーと通信できるようになります。
  • message-send-mail-function 組み込みのsmtpmailを使用するようにEmacsに指示します メールを適切に送信するためのパッケージ。
  • そこで、 smtpmail-stream-type リモートメールサーバーに接続するときにEmacsが使用する接続の種類を示します。現在、ほとんどのメールサーバーはSSL/TLSまたはSTARTTLSのいずれかを使用しています。
  • smtpmail-smtp-server 接続するSMTPサーバーのアドレスを設定します。
  • smtpmail-smtp-service EmacsがSMTPパケットを送信するために使用するポートを設定します。 SSL / TLSを使用している場合は、SMTPポートとして465を書き込みます。 STARTTLSを使用する場合は、587と記述します。

.authinfoを使用した電子メール認証の設定

Emacsがメールアカウントを介してメールを送信できるようにする必要があります。これを行うには、メールのクレデンシャルを.authinfoに追加します。

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

touch /home/$USER/.authinfo

注意すべき重要な点の1つは、このファイルにはユーザー名やパスワードなどの機密情報が含まれていることです。したがって、アクセス許可を保護して、自分だけが読み取りと書き込みを行えるようにする必要があります。これを行うには、次のコマンドを実行します。

chmod 600 /home/$USER/.authinfo

そこから、.authinfoファイルを編集して、メールアカウントの資格情報を含めます。 .authinfoファイルの一般的な構文は次のようになります。

machine mail.domain.com login username@domain.com port 587 password mypasswordis123
  • マシン 変数は、別のマシンまたはサーバーに接続していることをEmacsに通知します。
  • ドメイン名 これが接続するマシンのアドレスであることを示します。
  • ログイン フィールドは、メールアドレスを設定する場所です。
  • ポート オプションは、Emacsが接続する特定のポートを設定します。これは、init.elファイルで設定したポート番号と同じである必要があります。
  • パスワード 変数には、メールアカウントのパスワードが含まれています。
Emacs内でEメールを使用する方法

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

Emacsで最初のメールを送信する

これにより、Emacsからのメール送信は非常に簡単になります。 Ctrlを押してこれを行います + X M またはMを押します あまりバッファにいない間。

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

Emacs内でEメールを使用する方法

完了したら、 Ctrlを押します。 + C Ctrl + C Emacsから最初のメールを送信します。

おめでとう!これで、Emacsを電子メールクライアントとして正常にセットアップできました。さらに、IMAPサーバーとSMTPサーバーがどのように機能するか、および電子メールタグ付けシステムのセットアップの基本についても理解できました。

このすべての話で、Emacsで他に何ができるかに興味を持った場合は、この拡張可能なテキストエディター用のこれら5つの便利なパッケージを確認してください。

よくある質問

1。 offlineimapを実行した後、メールに自動的にタグを付けることはできますか?

これを行うには、Offlineimapにあまり同期後のフックを作成します。 「postsynchook」というアカウントカテゴリの下に変数を挿入します:

...
 
[Account imapaccount]
localrepository = thismachine
remoterepository = thatimap
 
postsynchook = /path/to/your/script.sh
...

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

たとえば、これは単純な同期後のスクリプトであり、受信メーリングリストの電子メールから未読のタグを削除し、適切にタグ付けします。

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

2。メールを書きましたが、送信したくないと思いました。 Emacsでメールを破棄するにはどうすればよいですか?

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

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

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


  1. Gmail の「機密モード」の使い方

    Gmail が刷新され、新機能と新しいインターフェースが追加されました。 Google では、再設計された Gmail の使用をオプトインまたはオプトアウトするオプションを提供しています。オプトインしている場合は、新しい機密モードを使用できます。この投稿では、Gmail の情報保護モードとその有用性について説明します。 Gmail の機密モード: 機密モードを使用すると、Gmail ユーザーは自己破壊メール (一定期間後に有効期限が切れるメール) を Gmail やサードパーティのメール サービス ユーザーに送信できます。これは、機密モードをオンにしてメールを送信した場合、一定期間が経過する

  2. Gmail でメール テンプレートを有効にして使用する方法

    ワークスペースでは、電子メールがコミュニケーションと作業レポートの共有の一般的な媒体になります。多くの場合、同僚に渡される電子メールは、添付ファイルが異なるだけで、メール本文に同じ内容が書かれています。 これらは、お祝いのメール、挨拶メール、またはユーザーが同じ内容のレポートやドキュメントを送信するメールである可能性があります – 「このメールに添付されたファイルを見つけてください。 しばらくすると、同じメールを繰り返し書いたり、新しいメールを作成するたびにコピーしたりするのが面倒になります. 電子メール テンプレートを使用すると、さまざまなユーザーに何度も何度も送信できる電子メールのテ