Monthly Pic 2016 12


2016年这最后一个月,家附近的小吃摊被拆除了,没地方吃煎饼鸡腿苞米了,对我的饮食影响很大……


年底跳了一个大坑,而且比想象的要大的多。

杂记mutt, GPG和邮件签名

最近由于工作需要,折腾了一阵mutt的多帐号支持和GPG key的签名,和给邮件签名。比较乱,随便记一下吧。

1. mutt的多帐号支持。
这个其实以前一直也在用,只不过是用起两个mutt实例,通过不同配置文件来区分的,比如默认的工作邮箱就直接 mutt 启动,个人的gmail邮箱就做了一个alias

alias mutt-gmail="mutt -y -F ~/.mutt/muttrc.gmail

在 ~/.mutt/muttrc.gmail 中配置好gmail的信息就可以了。

但是这次的情况不太一样,申请了一个 kernel.org 的邮箱,发往这个邮箱的邮件会转发给工作邮箱,所以我想最好能在回复的时候自动判断是发给哪个帐号的,自动用正确的帐号回复。不行的话能方便的用快捷键切换帐号也可以。搜索了一下”mutt multiple account”之类的,找到一些文章,但最后发现还是这篇文章最符合我的口味。大意就是用esc-1, esc-2快捷键,通过设置 “from=<user@domain>” 来选择帐号,同时因为用的是msmtp发送邮件,所以msmtp会自动根据这个域来判断该用哪个帐号发送邮件。同时设置不同的 status_line,来显示不同的帐号信息用来做区分。最后我的设置就是

macro generic "\e1" ":set from=account@company.com\n:set status_format=\"-%r-Company: %f [Msgs:%?M?%M/?%m%?n? New:%n?%?o? Old:%o?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p?Post:%p?%?b? Inc:%b?%?l? %l?]---(%s/%S)-%>-(%P)---\"\n" "Switch to Company account"
macro generic "\e2" ":set from=account@kernel.org\n:set status_format=\"-%r-Kernel.org: %f [Msgs:%?M?%M/?%m%?n? New:%n?%?o? Old:%o?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b?%?l? %l?]---(%s/%S)-%>-(%P)---\"\n" "Switch to kernel.org account"

这样就方便多了,虽然kernel.org的邮箱可能会很少机会用到……

2. GPG签名
折腾这个也是为了申请kernel.org的帐号,要找一些牛来来背书。如何生成自己的公私钥对等等网上信息很多,就不说了。这里就记一下怎么把别人给你签名过的公钥里的签名和其他签名合并到一起。事情是这样的,我分别找了Dave和Eric给我签名,但他们都是下载的我在keyserver上的公钥,因为是远程认证的,所以他们分别签名&加密之后发给我,我需要把他俩的签名和之前的签名都合并到一起,然后上传到keyserver上,这样这两个新签名就增加上去了。看过了gpg的manpage之后发现其实挺简单的,就是用到一个 import-options 参数

gpg --import --import-options merge-only signature.asc
gpg --send-keys <KEYID>

3. mutt中发送签名的邮件
其实这个相对简单,正常写完邮件之后,在发送之前确认按“y”之前,先按“p”,开启 “pgp-menu”,里边会有选项和提示,是签名还是去掉签名,用哪个key签名等,签好了正常发送就可以了。

4. msmtp中发送签名的邮件
因为我有一个利用msmtp的脚本,用来在命令行下发送邮件。发普通txt邮件没什么问题,只是想给邮件签名再发送的话就得好好研究下这个邮件文件该怎么写了。

正常情况下,发送一个txt邮件,需要先写好一个邮件,包括From/To/Cc等信息,比如

$ cat >email.txt <<EOF
From: someone@somewhere
To: someoneelse@somewhere

This is a test email
EOF
$ msmtp -t <email.txt

这样在配置好msmtp的情况下,用 -t 参数告诉msmtp从stdin里读取收件人信息,直接就这么发出去了。

经过查看用mutt发给自己的带签名的邮件发现,签名信息其实就是一个附件,附在正文之后,只不过类型是”multipart/signed”和”multipart/pgp-signature”。不过仿造了几次带附件的邮件正文之后,发出去的邮件都报签名无法验证,也就是签错了……网上搜了好半天也没找到怎么把一个gpg签名附在一个邮件正文之后,最后还是去查标准吧,也就是RFC3156。里边对邮件哪部分是签名的信息,哪部分是后添加的header信息都做了说明,而且更主要的一点是,被签名的部分必须是 “CRLF” 结尾的,不能是单纯的 “LF” (也就是 \n)结尾,所以需要对正文进行一次 unix2dos 的转换……折腾了10次之后,终于发出了签名正常的邮件。

基本思路是,先把需要签名的正文写到一个临时文件里,然后用 unix2dos 转换格式,然后签名,得到签名信息。然后组装邮件头,模仿正常的签名邮件的格式就好,最后附上签名信息就可以了。把最后组装好的邮件文件写到指定的文件里。一个组装好的邮件文件的例子(里边的^M表示 \r\n,也就是需要签名的正文部分)

From: <from>
To: <to>
Subject: <subject>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha1;
        protocol="application/pgp-signature"; boundary="x8WrEFNkdXnc"
Content-Disposition: inline


--x8WrEFNkdXnc
Content-Type: text/plain; charset=us-ascii^M
Content-Disposition: inline^M
^M
This is a test^M

--x8WrEFNkdXnc
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIcBAABAgAGBQJYQ+hsAAoJECZSqilcj+djEUMQAJoDOM6lWX0sebjEZ/fgREAh
va/xKtYl3arD6BGrzuro2OdLrfWH0W+FM+/iNlOcGxmrECGv7QCQAD2okW+jbAes
hpeAlvGYQmS4l67y31nhY6lK5F2Uc2rzOqFOGOWiU4o/XKyueOYWJAdQzBm8hYG4
G042drLfE4Vvf81lReky9ElBoDpLzz+c7ExG2GVOs/4Ry8KabxyjtIPZelfOTNh+
8rZ+RWYHzBO9VLlImVK/z4p8+jutn9Dko6l2YkYnOcoZypChUA+/uFBLtxZe8cup
BJVrPkUaxrq+wik1abRCi97UAPw420EaiY9AjDZXZR7sy1cT9QLQ69BjOS1T4icb
RiEhoIvN4ctBxaN/Jq4mA7J2O2aYto9Kq2fRwLaNtWJwZpOmUFr8fQ9q4hcY/6K/
kiYAjp+L4A8DHXk4mhzaXJP1rJVhDITnnowel1FWirG7gPUCGe1ThGFoaqmrDF3o
PUJ6rmpcHn+sH6ppG5JjeHj3PantLIhzCA0VqQ+HxrlJ/E94G+BmrVo7Rvoj5p0v
omhSNiE7FTrvw6tKeDlyM8G59qCrsJ7ITTSL6oiHbCK8IFw938Jns/QaRnrDaFIo
C3l7zjZXrMqQQqbTeO1+LjeNntD2ggY9YmR83H3g3U5YFAfHdTtON7QUY/XtMQhG
LVKbouYC9D1r3/EULPnm
=fwZa
-----END PGP SIGNATURE-----

--x8WrEFNkdXnc--

Monthly Pic 2016 11

11月相对比较平静,就一直努力工作来着……就上传两张办公室外的风景吧。

IMG_20161107_150121
11月天气开始剧烈变化,上旬的时候还是温暖阳光

IMG_20161121_200526
下旬的时候开始降温,一夜之间树叶就都掉了

Monthly Pic 2016 10

十月感觉过的很快,先是放假,然后上海厦门走了一圈,回来没几天一个月就过去了。

IMG_20161005_194543十一之前给爸妈买了个小米扫地机器人,感觉还不错,基本不用弯腰扫地了。

IMG_20161016_090842厦门的天气很好,比北京雾霾天强多了。

IMG_20161016_105413厦门大学也是很好看。

IMG_20161017_151341厦门海边的骑行道,就是坡有点儿大。

IMG_20161020_083957然后赶到上海,在复旦的一个nb的会议室参加CLSF,当然今年还是有30+rmb的nb的水。

IMG_20161022_103750CLSF之后是CLK,不知道明年在哪呢。

Monthly Pic 2016 08

IMG_20160819_194645
八月的记忆就是看奥运,奥运上最后一次林李大战,林丹最后脚下不滑的话结果还不一定怎么样呢。

IMG_20160820_013014
男双有点儿黑马,付海峰太NB了,后场重杀和网前抢网全是他啊。

Monthly Pic 2016 07

IMG_20160701_190104
一直想撸串,找不到人,只好自己去了,只是自己吃的不多。

IMG_20160728_112255
月底的时候去了威海,又去逛了逛蓬莱阁。

IMG_20160731_133522
家具一点点儿添置,赶在奥运之前买了电视。