スクリプトのお勉強

Thunderbird プラグインの開発(プラグインでの実現方法)

投稿日:

前回 Thunderbird プラグインの WebExtension版開発方法を調べたので、
開発したいプラグインと、WebExtension版プラグインでの実現方法について書いていきます。

開発するプラグイン

SPAMチェックプラグイン for OCN プロバイダとは

以下の機能を持ったThunderbirdのプラグインを開発しようと思います。

  • メールのヘッダを見て、「迷惑メール」マークを付与するプラグインです。
    • メールのヘッダ(X-OCN-SPAM-CHECK)が100%となっている場合「迷惑メール」マークがつきます。
    • よってメールプロバイダが、OCN以外は意味がありません。
    • ただし、Received-SPF: passになっていたら、「迷惑メール」マークを設定しません。
    • 送信ドメイン認証(SPF)で成功しているということは偽装していないからです。
  • メールを選択したらヘッダチェックを行い、上記条件に合致すれば「迷惑メール」マークを自動的に付与します。
  • オプションで以下の機能があります。
    • 新規「受信」したメールのチェックを行います。(デフォルトOFF)
    • フォルダ選択時に、フォルダ全体にメールチェックを行う(デフォルトOFF)

Thunderbird プラグイン (WebExtension版) 概念図

Thunderbirdのプラグインの概念として、一番わかりやすい図が以下に書かれています。

https://developer.thunderbird.net/add-ons/mailextensions

ほぼこの図だけで全部を説明しきってると言ってもいいぐらいです。これを先に見たかった。。

manifest.json

manifest.jsonとして記述できるキーは以下にあります。

https://developer.thunderbird.net/add-ons/mailextensions/supported-manifest-keys

今回manifest.jsonで使用するキー

今回使用するキーは以下の通りです。主なものだけ書いておきます。

API概要
backgroundJavaScriptファイルを記述すると、処理が開始します。
manifest_versionmanifest.jsonのスキーマバージョンを記述します。今(2021/03/06時点)は2です。
options_uiThunderbirdのアドオン部分に設定用UIを設置します。
permissions使用しているAPIにより必要な権限が決まっています。ここで指定します。
version自プラグインのバージョンを指定します。
applicationsThunderbirdプラグインとしての書き方が決まっています。前回の記事参照。
name自プラグインの名称を書きます。拡張機能の名称として表示されます。

Thunderbird で使用できるAPI

プラグインを開発しようとした当初、ThunderbirdのAPIとして何がどう使えるか分かりませんでした。

Thunderbirdでは、Thunderbird WebExtension API Documentation
に記述されているAPIを使用することが出来ます。

ここに記述されている内容で「Thunderbird API」と書いてあるのは、正確には”browser”オブジェクト内に配置されています。
呼び出す場合は”browser.messages”とすれば使用できます。

ちなみに、「Firefox WebExtension APIs」も使用することが出来ます。storage API等はThunderbirdでも使用できます。

ただし、APIを使用する場合、権限が必要です。manifest.jsonのpermissionsに必要な権限を記述する必要があります。

*Action系APIについて

BrouserAction等の*Actionを使うとどうなるかなどは、以下に書いてあります。

https://developer.thunderbird.net/add-ons/mailextensions/supported-ui-elements

ただし、*Action系は今回は使用しません。

今回使用するAPIについて

今回使用するWebExtensions APIは以下の通りです。

API使用方法
mailTabsメール一覧表示部分に関連するAPIです。メール一覧表示時にメールを選択したり、メール一覧自体を選択した場合のトリガとして使用しています。
messages新規メール受信時のイベントトリガーに使用します。
storage設定取得に使用します。オプション表示で使用しています。

おわりに

今のところのThunderbird WebExtensions版プラグインのとっかかり部分について、記述してみました。


分かってみると、一通りドキュメントは書いてあります。サンプルが少ないですが、、そこらへんは動作させながら確認してみるしかないかもしれません。

次回は実際にプラグインを作成して、公開するところまで行いたいと思います。

-スクリプトのお勉強

執筆者:

関連記事

Certbot(snap版)の起動が失敗した件

certbotの起動が失敗した 小ネタです。 なぜかSSL証明書が更新されず、Let’s Encrypt Expiry Botからたくさんメールが来るなーと思ったらcertbotの起動が失 …

MySQL for windowsでwordpress DBを再現する

はじめに 本当は、今はやりの生成AIとして、LLM(ローカルAPI)とMySQLのMCP Serverを使用してチャットシステムを作ろうと思ってました。 でも、その前に、そもそもLLMの対象となるMy …

Nuxt.js – CRUDアプリケーションのフォーム/一覧を作成する

前回で作ったAPIのフロントエンドアプリケーションを作ろうと思います。 どういうアプリ? サンプルとして作ったAPIが住所録的だったので、住所録を作りました。 以下の機能があります。 登録(確認付き) …

IPS/IDS(Suricata)のインストール

とても遅まきながら、暇なのでIPS/IDSをこのサイトに組み込んでみます。 Suricata SuricataというOSSのIPSがあるそうなのでインストールしてみます。 環境 CentOS7(7.9 …

pysnmp v6 から v7 への移行

はじめに 前回の記事でPythonによるSNMPTrapの送信について記事を書きました。 その後、PythonからのSNMPTrap送信する方法を調査したら、方法が変わっていることに気づきしました。 …

    google オプトアウト Click here to opt-out.