• このエントリーをはてなブックマークに追加

mu というタグメールシステムを導入したので、導入手順をまとめます。

スポンサードリンク

mu4e とは

notmuch とは、タグベースの高速検索メールシステムだ。

タグベースというところが気にいって、今回試してみた。

これまで、ファイルベースのメーラが世を席巻してきた。

しかし、21 世紀はタグでデータを管理する時代なのだ!

そのことは、この本にかかれていた。

ファイラだと、FenrirFS というファイラが気に入っている。

メールだと、Gmail がある。じゃあ Gmail でいいじゃないかということになるが、 Gmail は Web ベースだ。 Emacs 好きとしては、Emacs から、メールを操作したい、というのが主な動機だ。

ちなみに、Mutt と Wanderlust は経験している。

環境と各ツールの役割

  • Ubuntu 16.04 LTS
  • mu 0.9.18… タグづけ検索メールシステム
  • mu4e 0.9.18… mu の フロントエンド I/F
  • Offlineimap 6.6.1 … ローカルディレクトリとリモートフォルダを同期するツール
  • msmtp 1.6.6… smtpmail を軽量化したメール送信用ツール

インストール方法

事前の依存ライブラリのインストール

# must
$ sudo apt-get install libgmime-2.6-dev libxapian-dev gnutls-bin

# optional
$ sudo apt-get install guile-2.0-dev html2text xdg-utils

mu のインストール

github から最新版の mu ををインストール。

./configure && make
sudo make install

mu4e(Emacs Frontend Interface) の導入

mu をインストールすると、サブディレクトリに mu4e というものがあり その中に elisp が入っている。

(require 'mu4e)
(setq user-mail-address "fox10225fox@gmail.com"
      user-full-name  "Tsunemichi Harada")

(setq mu4e-maildir "~/Maildir")
(setq mu4e-drafts-folder "/[Gmail].Drafts")
(setq mu4e-sent-folder   "/[Gmail].Sent Mail")
(setq mu4e-trash-folder  "/[Gmail].Trash")
  ;; U で 更新するときに使うプログラム
(setq mu4e-get-mail-command "offlineimap")

メールを受信する

2つのツールがある。

mbsync のほうがいい??

今回は、日本語情報の多い Offlineimap を使う。

Offlineimap

IMAP サーバーからメールを同期する Python ユーティリティ.

sudo apt-get -y install offlineimap

~/.offlineimaprc を作成する。 ここでは、Inbox と Notes と Drafts を同期するように設定している。

[general]
accounts = Gmail

[Account Gmail]
localrepository = Local
remoterepository = Remote

[Repository Local]
type = Maildir
localfolders = ~/Maildir

[Repository Remote]
type = Gmail
folderfilter = lambda foldername: foldername in ["INBOX", "Notes", "[Gmail]/Drafts"]
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
maxconnections = 1
realdelete = no

ターミナルより、offlineimap を入力することで、メールボックスを同期できる。

パスワードをかくす

設定ファイルは github で管理したいのだが、パスワードを晒すわけにはいかない。 netrc が使える。

touch ~/.netrc
chmod 600 ~/.netrc

.netrc の中身は次の通り。

machine imap.gmail.com
  login fox10225fox@gmail.com
  password <your password here>
machine smtp.gmail.com
  login fox10225fox@gmail.com
  password <your password here>

定期的に動作させる

できれば定期的に動作させたい。 以下で、5 分ごとにバックグラウンドでポーリングできる。

(setq mu4e-update-interval 300)

メール受信通知を受けたい

mu4e-alert という elisp がある。

(require 'mu4e-alert)
;; デスクトップ通知
(when linux-p
  ;; デスクトップ通知
  (mu4e-alert-set-default-style 'libnotify))
(add-hook 'after-init-hook #'mu4e-alert-enable-notifications)
;; モードライン通知
(add-hook 'after-init-hook #'mu4e-alert-enable-mode-line-display)

メールを検索する

mu4e を開いて、更新 U を押すと、Offlineimap が走ってメールを受信し、 mu が走ってタグ付けされる。

helm-mu

helm I/F で検索できる。

(require 'helm-mu)
(setq helm-mu-default-search-string "(maildir:/INBOX OR maildir:/Sent)")
(define-key mu4e-main-mode-map "s" 'helm-mu)
(define-key mu4e-headers-mode-map "s" 'helm-mu)
(define-key mu4e-view-mode-map "s" 'helm-mu)

メールを送信する

sendmail ライブラリが Emacs にデフォルトで搭載されていたけれども、 動かなかった。。。 msmtp を使う。

$ git clone git://git.code.sf.net/p/msmtp/code msmtp
$ cd msmtp
$ autoreconf -i
$ ./configure; make; make install

.emacs の設定は以下の通り。

;; use msmtp
(setq message-send-mail-function 'message-send-mail-with-sendmail)
(setq sendmail-program "msmtp")
;; tell msmtp to choose the SMTP server according to the from field in the outgoing email
(setq message-sendmail-extra-arguments '("--read-envelope-from"))
(setq message-sendmail-f-is-evil 't)

;; don't keep message buffers around
(setq message-kill-buffer-on-exit t)