文書の過去の版を表示しています。
mu4e
まくら
元々は家でゲームがしたい(小学生のことTAITOのSpace Invaderが大ブームになった)という理由で始めたコンピューターとの付き合いが、いつの間にか人とのCommunicationの手段になったのは、明らかにパソコン通信のせいで、参加していたBBSのChat roomに入り浸るようになってからだったように思う。
Unixを触るようになり、UUCPで自宅に居ながらにして電子メールが使えるようになって以来、数年前までは間違いなくE-Mailこそが他者とのCommunicationの中心にあった。 したがって、筆者の場合、E-Mailの読み書きを簡単にできるようなApplicationが最も重要なツールであった時代が長い。
そのため、メールクライアントは色々使ってきた。それなりの期間(最低でも半年以上)利用したツールは
- rmail (Emacs)
- Gnus (Emacs)
- mew (Emacs) おそらく、これが一番長い
- Bekky (Windows)
- WinBiff (Windows)
- Apple Mail (macOS)
- Thunderbird (macOS/Windows/FreeBSD)
- Shylpheed (macOS)
と、幾つもあった。しかし、個人的な要件を満たすMail Readerはあまりなかった。動作するPlatformが限られていたり、表示が望み通りにならなかったり、EoLになったり…
というわけで、Sylpheedを卒業して次のMail Readerに移行することにした。
準備
今回の選択はmu4eである。 mu4eはmuコマンドを利用したメールの検索機能を利用して、Emacs上でMailの読み書きを行うためのツールである。
mu4eを利用してMailを処理するためにはいくつかの方法があるが、今回は以下の構成で行くことにした。
- IMAPを利用して手元にメールを同期するsoftware
- mbsync(isync)
- smtpを利用してメールを送信するsoftware
- msmtp
- Emacs
- GNU Emacs 30
- メール処理
- mu, mu4e
mbsync
mbsyncは、RemoteのMDA(IMAP Server)からメールを手元に持ってくるツールである。 Mailboxの同期をEmacs上で行わないのでメールの取得とメールの処理を独立して行えるのがメリットである。
今回は、複数のアカウントをまとめて管理する前提で設定を行う。
なお、mu4eはメールボックスがありさえすれば良いので、mbsyncである必要はない。imapsyncなどいくつかのツールがあるので、好みのものを選べば良いだろう。
以下、mbsyncの設定を行う。 設定ファイルは以下の通りである。 なお、本記事においては、動作確認なども兼ねているためpasswordをrawで記載しているが、これはGPGなどを利用して暗号化するべきである。
# # .mbsyncrc - configuration for mbsync. # ##### General Configuration Create Both Expunge Both CopyArrivalDate yes Sync All SyncState * ##### sample@example.com ##### for Dovecot Server IMAPAccount sample_example Host dovecot.example.com Port 993 User sample@example.com Pass Ultra-Secret SSLType IMAPS ### IMAP Store configuration IMAPStore mls_seirios-remote Account mls_seirios ### Maildir Store configuration MaildirStore sample_example-local SubFolders Verbatim Path ~/Maildir/sample_example/ Inbox ~/Maildir/sample_example/Inbox ### Channel Configuration Channel sample_example-local Far :sample_example-remote: Near :sample_example-local: Patterns * ##### sample@icloud.com ##### for Apple Mail IMAPAccount sample_icloud Host imap.mail.me.com Port 993 User sample@icloud.com Pass Apple-Application-password-set-at-Apple SSLType IMAPS AuthMechs PLAIN ### IMAP Store configuration IMAPStore sample_icloud-remote Account sample_icloud ### Maildir Store configuration MaildirStore sample_icloud-local SubFolders Verbatim Path ~/Maildir/sample_icloud/ Inbox ~/Maildir/sample_icloud/Inbox ### Channel Configuration Channel sample_icloud-base Far :sample_icloud-remote: Near :sample_icloud-local: Patterns * !Sent !"Sent Messages" !Spam !"Junk" !Trash !"Deleted Messages" Channel sample_icloud-base-sent Far :sample_icloud-remote:"Sent Messages" Near :sample_icloud-local:Sent Channel sample_icloud-base-spam Far :sample_icloud-remote:"Junk" Near :sample_icloud-local:Spam Channel sample_icloud-base-trash Far :sample_icloud-remote:"Deleted Messages" Near :sample_icloud-local:Trash Group sample_icloud Channel sample_icloud-base Channel sample_icloud-sent Channel sample_icloud-spam Channel sample_icloud-trash ##### sample@gmail.com ##### GMail ##### もし、GmailのIMAP Folderが日本語だった場合、Gmailから表示を英語モードにしておくこと。日本語だとうまくいかないことがある IMAPAccount sample_gmail Host imap.gmail.com Port 993 User sample@gmail.com Pass Gmail-Application-password-set-at-Gmail SSLType IMAPS AuthMechs PLAIN ### IMAP Store configuration IMAPStore sample_gmail-remote Account sample_gmail ### Maildir Store configuration MaildirStore sample_gmail-local SubFolders Verbatim Path ~/Maildir/sample_gmail/ Inbox ~/Maildir/sample_gmail/Inbox ### Channel Configuration Channel sample_gmail-base Far :sample_gmail-remote: Near :sample_gmail-local: Patterns * !"[Gmail]*" !Sent !Spam !Trash Channel sample_gmail-sent Far :sample_gmail-remote:"[Gmail]/Sent Mail" Near :sample_gmail-local:Sent Channel sample_gmail-spam Far :sample_gmail-remote:"[Gmail]/Spam" Near :sample_gmail-local:Spam Channel sample_gmail-trash Far :sample_gmail-remote:"[Gmail]/Trash" Near :sample_gmail-local:Trash Group sample_gmail Channel sample_gmail-base Channel sample_gmail-sent Channel sample_gmail-spam Channel sample_gmail-trash ##### sheo0147@yahoo.co.jp ##### for Yahoo Japan IMAPAccount sample_yahoo Host imap.mail.yahoo.co.jp Port 993 User sample@yahoo.co.jp Pass Ultra-Secret SSLType IMAPS ### IMAP Store configuration IMAPStore sample_yahoo-remote Account sample_yahoo ### Maildir Store configuration MaildirStore sample_yahoo-local SubFolders Verbatim Path ~/Maildir/sample_yahoo/ Inbox ~/Maildir/sample_yahoo/Inbox ### Channel Configuration Channel sample_yahoo-base Far :sample_yahoo-remote: Near :sample_yahoo-local: Channel sample_yahoo-spam Far :sample_yahoo-remote:"Bulk Mail" Near :sample_yahoo-local:Spam Group sheo0147_yahoo Channel sample_yahoo-base Channel sample_yahoo-spam
ここまで設定したら、Directoryを作成し、mbsync -aを実行する
$ mkdir ~/Maildir $ mkdir ~/Maildir/sample_example ~/Maildir/sample_icloud ~/Maildir/sample_gmail ~/Maildir/sample_yahoo $ mbsync -a
これで、手元にMailが来たはず
- yahooの設定の際にPatternsを削除しているのは意図的である。
- 原因はよくわかっていないが、Yahooの場合だけ、Patternsを登録しているとInboxの同期に失敗する
- とりあえずPatternsを設定しなければうまく行くという不思議なことが起きているので、現時点では外す
muの初期化
Mailを取得したら、muでメールのIndexを作成する。 muはXapianを利用している。Xapianは原則としてヨーロッパ系言語の検索が主眼なので、日本語検索は厳しいかと思っていたが、FLAG_NGRAMS=“1”を設定することでそれなりに対応できることがわかったので、以下を設定してmuでDBを初期化する
$ export XAPIAN_CJK_NGRAM="t" $ export FLAG_NGRAMS="t" $ mbsync -a $ mu init --maildir=~/Maildir \ --my-address=sample@example.com \ --my-address=sample@icloud.com \ --my-address=sample@gmail.com \ --my-address=sample@yahoo.co.jp $ mu index $ mu info store ....
