ドコモメールをGmailのスパムフィルタでフィルタリングする

ドコモメールにおけるスパムメールフィルタは「迷惑メールおまかせブロック」というサービスによって提供されているが,月額200円というのが癪なので,Gmailスパムメールフィルタを使ってドコモメールをフィルタリングすることにした.

調べてみるとSPモードメールをGmailで受信している方がいた.

徒然覚書: ドコモのSPモードメール(@ docomo.ne.jp)がGmailやパソコンでも受信できるようになったゾ!!

この記事によると,SPモードメールはGmail側でPOPの設定をすれば,なんとかなるらしい.
ただ

"*Gmailでの受信はPOP3通信のみ対応。
SPモードメールはPOP3対応、ドコモメールはPOP3非対応なので
ドコモメール(IMAP)をGmailで受信することはできません。 "

ということ.
残念ながらドコモメールを利用しているのでこの方法は使えない.

いまいちいい方法が思いつかないので,
imapでドコモメールをダウンロードして,imapGmailに転送することにした.

PythonでIMAPを使ってみる | 流連荒亡

こちらを参考にさせてもらって,pythonで適当にスクリプトを書いた.
以下のスクリプトをcronとかで走らせれば,何分かおきにドコモの未読メールをGmailに送ってくれて,その都度Gmailのフィルタリングが機能するはず.

import imaplib
import time

maildatalist= []
imap_server = "imap.spmode.ne.jp"
imap_port = 993
imap_user = "自分のアドレス@docomo.ne.jp"
imap_pw = "自分のパスワード"
mailbox = "INBOX"

m = imaplib.IMAP4_SSL(imap_server, imap_port)
m.login(imap_user, imap_pw)
m.select(mailbox)

typ, data = m.search(None, 'UNSEEN')
if data[0] != "" :
    msg_ids = data[0].split()
    for msg_id in msg_ids:
        typ, data = m.fetch(msg_id, '(RFC822)')
        maildata = data[0][1]
        maildatalist.append(maildata)
        m.store(msg_id, '+FLAGS', '\\SEEN')
m.close()
m.logout()


imap_server = "imap.gmail.com"
imap_port = 993
imap_user = "自分のアドレス@gmail.com"
imap_pw = "自分のパスワード"
folder = 'inbox'
#folder = 'docomo'

m = imaplib.IMAP4_SSL(imap_server, imap_port)
m.login(imap_user, imap_pw)
m.select(mailbox)

for maildata in maildatalist:
    m.append(folder, '', imaplib.Time2Internaldate(time.time()),  maildata)


実行結果

f:id:ksknw:20141226180006p:plain

だめやん…

メールの転送はできてるけど,肝心のスパムフィルタが動作せず,迷惑メールが全部表示されている.

 

調べてみるとこんな記事があった. 

node.js - IMAP APPEND with gmail, treat as new incoming email - Stack Overflow

 どうやらimaplibのappend関数はフィルタリングとかの工程をすっ飛ばして,フォルダに追加するだけらしい.

 

さらに色々調べているとPOPでGmailに同期されたものはフィルタリングされるらしいということがわかった.

2つのGmailアカウント間はPOPで同期が可能なので,ドコモメールをimapでGmail1に転送→Gmail1をPOPでGmail2と同期で,なんとかなるはず.

 

GmailにおけるPOPの設定は割と簡単(不正アクセス扱いされて上手くいかないことが何度かあった).

Gmailの設定→アカウントとインポート→POP3を使用して他のアカウントのメッセージを確認 からドコモメールを転送したGmailアカウントを指定する.

f:id:ksknw:20141226222006p:plain

結果

f:id:ksknw:20141226222113p:plain

 無事,迷惑メール以外のメールを抽出することが出来た.

 

まとめ

ドコモメールを解約しよう.