imapfilter でメール振り分け

様々なサーバからメールが来てメールボックスが破滅してきたので、 imapfilter で整理するようにしました。 imapfilter を使うと、IMAPサーバをLuaスクリプトでメールの振り分け等できるようになります。

インストール

Ubuntu (KDE neon) で使う場合は Lua をインストールする必要があります。 私は lua5.3-dev を入れました。ただこれだとビルドエラーになるので、以下のようにインクルードパスとライブラリのパスを直す必要がありました。

INCDIRS = -I/usr/include/lua5.3
LIBLUA = -llua5.3

make && sudo make install/usr/local 以下にインストールされます。

imapfilter の設定

設定は ~/.imapfilter/config.lua に書きます。ソースの samples と man imapfilter_config を見れば雰囲気でわかると思います。 私は以下のような感じにしました。

---------------
--  Options  --
---------------

options.timeout = 120
options.subscribe = true


----------------
--  Accounts  --
----------------

myaccount = IMAP {
    server = 'mail.example.com',
    username = 'jsaito@example.com',
    password = 'password',
    ssl = 'auto',
}

-- Get a list of the available mailboxes and folders
mailboxes, folders = myaccount:list_all()

-----------------
--  Mailboxes  --
-----------------

-- Get the status of a mailbox
myaccount.INBOX:check_status()

---------------------
-- Filtering Rules --
---------------------

inbox = myaccount['INBOX']
pgsql = myaccount['INBOX/pgsql']
junk = myaccount['Junk']

-- To: に pgsql-general@lists.postgresql.org が含まれていたらINBOX/pgsql フォルダに移動
inbox:contain_to('pgsql-general@lists.postgresql.org'):move_messages(pgsql)
-- To: に pgsql-novice@lists.postgresql.org が含まれていたらINBOX/pgsql フォルダに移動
inbox:contain_to('pgsql-novice@lists.postgresql.org'):move_messages(pgsql)
-- From: に @spammer.example.com が含まれていたらINBOX/pgsql フォルダに移動
inbox:contains_from('@spammer.example.com'):move_messages(junk)

設定後、シェルから imapfilter -v と実行すれば、フィルタが実行されます。

mutt との連携

仕事のメールは mutt で読んでるのですが、imapfilter をキー入力一発で起動できると便利そうです。 以下のような設定を .mutt/muttrc に入れてみました。 F10キーを押すと imapfilter が実行されます。

macro index <f10> "!imapfilter -v<return>G"

social