mu4e 救你出 Email 的苦海
mu4e 是什么?
mu4e 是一个基于 emacs 的电子邮件客户端。 它完全以搜索为基础,用户界面为速度进行了优化,对很多常用操作都分配了快捷键。电子邮件可以使用org-mode来与富文本进行整合。支持电子邮件地址自动补全。异步操作,因此繁重的操作不会阻塞emacs。
其基本思路是这样的:配置一个离线IMAP客户机来使远程电子邮件服务器与本地计算机同步。mbsync和offlineimap是两个最常用的IMAP同步工具。这篇文章基于mbsync。
配置 mbsync
安装 mbsyncSSL 身份验证所需的SSL开发文件。对于基于RPM的包管理器,使用 sudo yum install openssl-devel
如果使用 dnf
(例如Fedora 22+),则运行 sudo dnf install openssl-devel
. 对于debian机器, sudo apt-get install libssl-dev
.
安装 mbsync,可以通过 发布 tarball 安装,也可以通过 git 安装。
创建一个临时文件 .mbsyncpass
,并在其中存储纯文本密码。接下来运行 gpg2 --output .mbsyncpass.gpg --symmetric .mbsyncpass=
,移动 mysyncpass.gpg
到 ~/.emacs.d
并删除 .mbsyncpass
文件。
创建临时文件 ~/.authinfo
并在其中存储以下纯文本,需要替换设置的主机、用户名、密码和端口信息:
machine mail.example.com login myusername port 587 password mypassword
使用命令 gpg2 --output ~/.authinfo.gpg --symmetric ~/.authinfo
生成加密文件. 删除 ~/.authinfo
文件。
创建一个 .mbsyncrc
文件。我把它放在 ~/.emacs.d
目录中以纳入版本控制,这样我能轻松地跨机器使用它。在工作服务器上仔细检查您希望同步的目录名(例如,它是已发送还是已发送项?),选择本地存放邮件的目录地址。我选择的是 ~/email/mysyncmail
。将以下内容添加到 .mbsyncrc
文件中:
IMAPAccount uni
Host mail.example.com
User me@example.com
PassCmd "gpg2 -q --for-your-eyes-only --no-tty -d ~/.emacs.d/.mbsyncpass.gpg"
Port 993
SSLType IMAPS
AuthMechs Login
CertificateFile /etc/ssl/certs/ca-bundle.crt
IMAPStore uni-remote
Account uni
MaildirStore uni-local
Path ~/email/mbsyncmail/
Inbox ~/email/mbsyncmail/INBOX
Channel uni
Master :uni-remote:
Slave :uni-local:
Patterns "Sent Items" "INBOX" "Deleted Items"
Create Slave
Sync All
Expunge Both
SyncState *
运行 mbsync
命令来同步 IMAP 收件箱:mbsync -c ~/.emacs.d/.mbsyncrc work
配置 mu4e
安装mu4e,可以使用包管理器或者通过tarball或git安装。这里查看安装细节。
然后配置mu4e。查看有关变量的 mu4e 文档。确保以下内容存储在 emacs 加载的 .el
文件中,例如 ~.emacs
文件。
(add-to-list 'load-path "~/place/to/your/mu4e")
(require 'smtpmail)
; smtp
(setq message-send-mail-function 'smtpmail-send-it
smtpmail-starttls-credentials
'(("mail.example.com" 587 nil nil))
smtpmail-default-smtp-server "mail.example.com"
smtpmail-smtp-server "mail.example.com"
smtpmail-smtp-service 587
smtpmail-debug-info t)
(require 'mu4e)
(setq mu4e-maildir (expand-file-name "~/email/mbsyncmail"))
(setq mu4e-drafts-folder "/Drafts")
(setq mu4e-sent-folder "/Sent Items")
(setq mu4e-trash-folder "/Trash")
(setq message-signature-file "~/.emacs.d/.signature") ; put your signature in this file
; get mail
(setq mu4e-get-mail-command "mbsync -c ~/.emacs.d/.mbsyncrc work"
mu4e-html2text-command "w3m -T text/html"
mu4e-update-interval 120
mu4e-headers-auto-update t
mu4e-compose-signature-auto-include nil)
(setq mu4e-maildir-shortcuts
'( ("/INBOX" . ?i)
("/Sent Items" . ?s)
("/Trash" . ?t)
("/Drafts" . ?d)))
;; show images
(setq mu4e-show-images t)
;; use imagemagick, if available
(when (fboundp 'imagemagick-register-types)
(imagemagick-register-types))
;; general emacs mail settings; used when composing e-mail
;; the non-mu4e-* stuff is inherited from emacs/message-mode
(setq mu4e-reply-to-address "me@example.com"
user-mail-address "me@example.com"
user-full-name "Rob Stewart")
;; don't save message to Sent Messages, IMAP takes care of this
; (setq mu4e-sent-messages-behavior 'delete)
;; spell check
(add-hook 'mu4e-compose-mode-hook
(defun my-do-compose-stuff ()
"My settings for message composition."
(set-fill-column 72)
(flyspell-mode)))
然后,使用 mu
索引该目录,这一步必须做:
mu index --maildir=~/email/mbsyncmail/
现在是时候试试 mu4e 了。打开 emacs,输入 M-x mu4e
。
查看 mu4e 快捷键
n/p
转到下一个,前一个消息RET
在message视图中打开消息s
搜索j
跳转到邮件目录,例如ji
跳转到收件箱O
改变排序顺序P
切换threadingd
标记移动到垃圾文件夹的消息m
标记消息,用于移动到另一个邮件目录文件夹?,!
将消息标记为未读/已读R,F,C
回复/转发/组合
mu4e 键绑定的完整列表列在 此处。
选择 IMAP 离线客户端:Mbsync 对比 offlineimap
offlineimap 要更流行一些,我曾经试用了一周。 后来我尝试了 mbsync,对我来说它的效果更好。 人们选择offlineimap是因为它能够通过调用python文件提示用户输入密码,从而避免了纯文本密码存储在本地。
幸运的是,mbsync 现在 也实现了这个,也就是 .mbsyncrc
中 PassCmd
项的作用
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论