※自己責任でお願いします
AmazonとPayPayを騙るSPAMメールの数が半端ない…。1日で100近く。
GmailのSPAM判定精度はかなり高いけど、AmazonとPayPay銀行は利用しているので、万が一正規のものがまざっていると困るので目視チェックに時間をとられる。
Gmailの自動振り分けルールだと細かい設定ができないので、どうしようかと思ってChatGPTに聞いたらGAS(Google Apps Script)でできることを教えてもらった。
コード
以下はAmazonをかたるSPAMメールを迷惑メールボックスから削除するコード。
これを GAS(https://script.google.com)で、新規プロジェクトとして作成してコピペする。
その後、保存
> 実行
> 実行権限
を付与して、動作確認。
※実行権限付与には、数STEP必要です。スクショを後述
動作確認(=意図せぬものまで削除されていないか)できたら、以下のコメントを外す。これでゴミ箱移動が有効になる。
// threads[i].moveToTrash(); // ゴミ箱に移動
さらにトリガ
を使って定期実行(1時間ごとの例を後述)させる。
すっきり!!
function deleteAmazonDKIMErrorEmailsFromSpam() {
var target = 'in:spam from:amazon*';
var threads = GmailApp.search(target); // 迷惑メールフォルダ内のAmazonメールを検索
Logger.log("target:" + target + " 件数: " + threads.length);
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
var headers = message.getRawContent(); // メールのヘッダー情報を取得
if ((!headers.includes("dkim") || headers.includes("dkim=fail") || headers.includes("dkim=none")) &&
!headers.includes("Return-Path: <*@amazon.com>") &&
!headers.includes("From: .*@amazon.com")) {
// DKIMがエラー(fail)または署名なし(none)のメールを判定
// threads[i].moveToTrash(); // ゴミ箱に移動
Logger.log("削除: " + message.getSubject());
}
}
}
}
参考情報
ゴミ箱行きの条件の解説
以下の両方が成立した場合にゴミ箱に移動させる。
- DKIMがパスしていること
- 送信元ドメインが
amazon.com
でないこと
AWSイベントの受付メール等はamazon.com
ではない(例えば以下の場合はawsevents.com
)けど、DKIMはパスしてくるので、迷惑メールに振り分けられていても削除されない。
トリガ設定例/1時間おきに定期実行
実行権限付与手順
スクリプトの実行
を行った場合、当方の場合は以下のような流れでした。
続行
で権限付与完了
Gmailのセキュリティ通知