RubyのIMAPライブラリを使用して、Gmailで迷惑メールに分類されたrootあてメールを救済するやっつけスクリプトを書いてみました。
動機
スマートフォンでFreeBSDのレポートメール(Charlie Rootからのメール)を読みたいので、aliasesでGmailあてに設定し運用しています。
...が、迷惑メールに分類されてしまい、その度に「迷惑メールではないことを報告」を実行するのは非常にめんどくさい。
なんとかしたい。
やったこと
IMAP4のクライアントで迷惑メールフォルダに分類されてしまったレポートメールをINBOXに移動するスクリプトをrubyで書き、cronで一日一回実行するように設定してみた。
imap4.rb
# !/usr/local/bin/ruby
# -*- encoding: utf-8 -*-
require 'net/imap'
host = 'imap.gmail.com'
user = 'gmailのメールアドレス'
password = 'gmailのパスワード'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
imap = Net::IMAP.new(host, 993, true)
imap.login(user, password)
# 迷惑メールフォルダを選択
mailbox = Net::IMAP.encode_utf7('[Gmail]/迷惑メール')
imap.select(mailbox)
rule = ['TO', 'root@', 'UNSEEN']
message_ids = []
imap.search(rule).each do |message_id|
message_ids << message_id
end
imap.copy(message_ids, "INBOX")
imap.disconnect
やっていることは単純で、
- GmailにIMAP4で接続
- 迷惑メールフォルダを選択
- 宛先が'root@'で未読なメールを検索しメッセージIDのリスト作成
- リストアップしたメールをINBOXフォルダへコピー
だけです。
GmailではINBOXへコピーした段階で迷惑メールフォルダから削除されるようです。