スクリプトのお勉強 セキュリティ 技術

SPAMチェック for OCN の アップデート(v0.7.0)

投稿日:

以前、ここで書いたように、SPAMチェックのThunderbirdプラグインを作りました。

そして、Thunderbirdがアップデートしたので、Pluginもアップデートする必要があります。

正直放置していたのですが、本家から「アップデートしろ」メールが来たので新版のThuderbirdに対応しようと思いました。

まず思い出す

APIの仕様

https://webextension-api.thunderbird.net/en/stable

Thunderbird 128系変更点

https://developer.thunderbird.net/add-ons/updating/tb128

からすると、Manifest V2からManifest V3にする必要があります。

準備

正直すべて忘れた(+パソコンを買い替えた)ので最初からやってみます。

(1) ツールインストール

以下をインストールします。Thunderbirdは既に入ってるかもしれませんが、
バージョンを128以降にした方がいいと思います。

  • Windows 11 23H2 OSビルド 22631.4037
  • Thunderbird 128以降
  • nodejs v20.16.0 (LTS)
  • https://nodejs.org/ja/ からその時点の最新版をインストール
  • npm 10.8.2
  • VSCode
  • git 2.46.0.windows.1

以下でビルド用ツールをインストールしておきます。

> npm install -g web-ext

ついでにgitが入ってなかったので入れました。

(2) 開発環境構築

ここのように別プロファイルを生成します。
自分の環境に影響がないようにするためです。一応しておいた方がいいかと思います。

ただし、昔使ったPluginTestプロファイルがあったので

thunderbird.exe -ProfileManager

(以下のように開発プロファイル(PluginTest2)を作成しておきます。開発プロファイル名は何でも構いません。
昔は忘れましたが、間違った設定をすると)

以下のようなショートカットを「Thunderbird 開発用」として作っておきました。

"C:\Program Files\Mozilla Thunderbird\thunderbird.exe" -no-remote -P PluginTest

(3)ソース

ソースは ここ に置いてあります。

処理追加(“.cn”をSPAMにする)

はっきり言って、”.cn”からくるメールは全部SPAMなので、メールにjunkに分類します。

Authentication-Resultsを見て、以下ならSPAMと判定します。

  • sender-idでHeaderが”*.cn”
  • dkimのheader.iが”*.cn”

微妙なのが以下の感じのやつです。.comだけど明らかに怪しい。でもこれをそのままエラーにしてしまうと問題なのでとりあえずはスルーします。

Authentication-Results: XXXXXXX; spf=pass smtp.mailfrom=XXXXX@XXXXXXXX;
     sender-id=fail header.From=myjcb@ezv508.com; dkim=pass
     header.i=myjcb@ezv508.com; dkim-adsp=pass header.from=myjcb@ezv508.com

その他修正点

manifest.json

主に以下を修正しました。

  • applications -> browser_specific_settings
  • permissionsに messagesUpdate追加
  • options_uiにopen_in_tab削除

backgroud.js

  • messages.list APIの引数がmailfolderからidに変更されているので対応

ビルド

プラグインをビルドします。

### Windows 11でスクリプトを実行できるようにする
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser   
> web-ext build --overwrite-dest -s .\spamchecker\
Building web extension from .\spamchecker
Destination exists, overwriting: .\web-ext-artifacts\spam_check_for_ocn-0.7.0.zip
Your web extension is ready: .\web-ext-artifacts\spam_check_for_ocn-0.7.0.zip

動作確認

ここに書いたのと同じなので割愛します。

一通り動くことを確認しています。

アップロード

自分の文書を見ながらアップロードしました。なにしたかあまり覚えてない。。

https://addons.thunderbird.net/ja/thunderbird/addon/spam-check-for-ocn

にアップロードした時点では0.6.0になってました。私じゃなくても登録できるのね(苦笑)
でもそれはAPIの呼び方が違っていて、一部動かないのでそこらへんも修正してあります。

いつかはv0.7.0になるでしょう(多分

参考

https://webextension-api.thunderbird.net/en/128-esr-mv3/index.html

-スクリプトのお勉強, セキュリティ, 技術
-,

執筆者:

関連記事

poetry installでJSONDecodeError

小ネタです。OSをアップデートしたので、その他もいろいろアップデートしようとしたらエラーになったので、メモとして書いておきます。 WSL2のUbuntuを 22.04 LTSにアップデート は、さほど …

Ruby(Rails)で最小限にREST APIを立ち上げる

簡単にREST APIを立ち上げたいなーと思うときが仕事であります。別にRubyでなくてもいいのですが、一応前提がRubyであることにします。 仕事で必要になるには 現在の仕事を鑑みると、最低限以下の …

「Python3 メモ」 独自例外クラスからの値取得/変数の内容取得

忙しい。。 この時期でなぜか忙しく、ブログ書いてる暇ない。。のでメモ書き程度。そして、内容をよく忘れるやつ。。 python3の独自例外クラス 例外クラスからの値取得方法をいつも忘れます。ある関数or …

PyWebIOでform 入力+ REST API呼び出しを作ってみる

仕事柄、簡単なWebアプリを作りたいと思うことはよくあり、その場合はその場で直せるスクリプトで書きたいとよく思うものです。 すごーく簡単なフォームを非常に簡単に使いたいので、まずは簡単に作れるフレーム …

Djangoのurls.pyにはまった。。

けっこうハマった。。 Django 2.2.4の話。以下のエラーを修正するのに、とっても時間がかかった。 django.urls.exceptions.NoReverseMatch: Reverse …

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