我的Email工作流

2023-01-25

需要安装的软件

  • Maildrop
  • Fetchmail
  • Msmtp
  • Mutt

上述软件在几乎所有的Linux发行版中都有提供。

sudo yum install maildrop fetchmail msmtp mutt

收信

收信要用到两个软件,首先是fetchmail,利用IMAP协议或者POP3协议从服务端下载邮件,然后交给maildrop处理。Unix-like操作系统下用户的邮件默认会存放在/var/spool/mail/username。这也是maildrop默认会保存邮件的地方。如果邮件不多,没有特殊的邮件过滤需求,可以不用配置maildrop,用默认设置就好。

至于fetchmail,则配置成从INBOX和JUNK两个目录下用IMAP协议下载未读邮件。同时不删除邮件,只是将邮件设置为已读:

poll smtp.example.org proto imap
    username "user@example.org"
    password "xxxxxxxx"
    options ssl keep
    mda "/usr/bin/maildrop";

poll smtp.example.org proto imap
    username "user@example.org"
    password "xxxxxxxx"
    options ssl keep
    folder JUNK
    mda "/usr/bin/maildrop";

然后定时运行fetchmail即可检查电子邮件。

阅读邮件

阅读邮件的话可以使用mutt,mutt默认会检视/var/spool/mail/username文件。为了让邮件按照会话和时间倒序显示,可以设置mutt的邮件排序方式,在~/.muttrc中加入:

set folder=~/mail
set sort_aux=last-date-received       
set sort=threads
set sort_re

对于不要的邮件,可以按d键标记删除;如果要批量移动邮件到其他邮箱文件,可以按t键给邮件打标,然后按一下“;”键,最后按下“s”键移动邮件。

对于含有html邮件或者其他附件的邮件,可以用管道功能交给相应的应用程序显示。

例如,对于HTML邮件,可以按v键进入附件界面,选中text/html附件,按下“|”键,然后用一个自定义脚本让firefox可以显示该邮件:

#!/bin/bash

cat > /tmp/hmail.html
firefox /tmp/hmail.html

至于图片,则可以让Eye of Gnome,或者其他图片浏览器显示:

#!/bin/bash

cat > /tmp/img
eog /tmp/img

或者直接保存下来:

cat > [filename]

发信

类Unix系统下面默认使用sendmail命令发送邮件,msmtp也提供sendmail兼容的使用方式。首先配置~/.msmtprc:

account mymail
tls on
auth on
host smtp.exmaple.org
port 587
user user@example.org
from user@example.org
password xxxxxxxx
logfile /home/user/.msmtp.log

account default : mymail

然后配置自己的名字,在~/.muttrc中加入:

set from="Your Fullname Here <user@example.org>"

随后,用

mutt target@example.org

即可开始编辑邮件,最后按y键发送。

Git邮件工作流

如果要给使用邮件列表的开源项目贡献补丁,就要使用git send-email功能。Git默认会使用sendmail发送邮件,如果msmtp配置好了的话,只要直接使用就可以了。

假如要把最近两次commit的内容发送到某个邮件列表,只需要:

git send-email --to target@example.org HEAD~2..HEAD

地址簿

Linux发行版中一般会提供一个命令行的地址簿应用:“abook”。Abook可以和mutt互操作。但是个人觉得并不好用,不如直接用文本文件,用grep检索。所以这里就不再赘述了。

为什么要弄得这么麻烦

最后说一下为什么要在终端里面收发邮件。

首先,Email并不是一个复杂的东西,大部分情况下只是纯文本而已。为了这么简单的信息,使用笨重缓慢的客户端,有点大材小用。

其次,在终端里面,用来收发邮件的都是一些传统的Unix工具及其继承者,hack起来很方便,很容易定制需求,例如:自定义一套邮件过滤规则,又或者用脚本给自己发邮件等等。如果是电子邮件的重度用户的话这套工作流会很方便。



Email: i (at) mistivia (dot) com