2008年2月17日星期日

mutt 与 gpg 数字签名邮件

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (OpenBSD)

iQEcBAEBAgAGBQJHt89uAAoJEAQBqiBG05f/gjoH/jG6ZABGYnGCWXPhIYQyrQJU
pkHJlBCExxg1kYw9Ig04wfx05secy28mcSQjSEds/TTBqhh0VGC04ZGg0j8N9aBn
NWYtV+gIRDgrqtcUPyQVcTh/3lWwl+/IFVGVnsga+R8pSpnXyxgO4i/eGZXMcG5l
tU3hHp4L7G6u8I1NkB8DtQEc0SVzgWvutaxrktGKTpHhS7izmZRIUsbPdyF16Z3a
DazpAzYYMwaJk4hjNYNyeKm9T3TUfNlG/i9h6vecvQ12iBZ5n+SpOnU2yktgdoxx
3O6ESM5WFmN8Z9AZmZcQ8sWUjEyqV94fSAHYXDwcZArqwkWmWY3NEESlwg7V4d4=
=9iyr
-----END PGP SIGNATURE-----
默认的 mutt 数字签名邮件,在 gmail 中显示为附件 noname,在 live/hotmail
中显示为附件 ATT*.DAT。这个非常不直观/美观,如果能象 Enigmail 等显示为
附件 signature.asc 就好了。下面是我基于
Sertaç Ö. Yıldız <sertac.liste@gmail.com> 的补丁给出的解决方案:

http://marc.info/?l=mutt-users&m=120315252214068&w=3

$OpenBSD$
--- pgp.c.orig Wed Apr 25 04:12:16 2007
+++ pgp.c Sat Feb 16 16:15:36 2008
@@ -35,6 +35,7 @@
#include "pgp.h"
#include "mime.h"
#include "copy.h"
+#include "rfc2047.h" /* for content-description */

#include <sys/wait.h>
#include <string.h>
@@ -1104,9 +1105,13 @@ BODY *pgp_sign_message (BODY *a)
t->type = TYPEAPPLICATION;
t->subtype = safe_strdup ("pgp-signature");
t->filename = safe_strdup (sigfile);
- t->use_disp = 0;
- t->disposition = DISPINLINE;
+ t->use_disp = 1;
+ t->disposition = DISPATTACH;
t->encoding = ENC7BIT;
+ t->d_filename = safe_strdup ("signature.asc");
+ t->description = safe_strdup (_("Digital Signature"));
+ rfc2047_encode_string (&t->description);
+ mutt_set_parameter ("name", "signature.asc", &t->parameter);
t->unlink = 1; /* ok to remove this file after sending. */

return (a);


$OpenBSD$
--- crypt-gpgme.c.orig Fri Jul 27 03:43:39 2007
+++ crypt-gpgme.c Sat Feb 16 16:15:14 2008
@@ -34,6 +34,7 @@
#include "copy.h"
#include "pager.h"
#include "sort.h"
+#include "rfc2047.h" /* for content-description */

#include <sys/wait.h>
#include <string.h>
@@ -893,13 +894,19 @@ static BODY *sign_message (BODY *a, int use_smime)
t->use_disp = 1;
t->disposition = DISPATTACH;
t->d_filename = safe_strdup ("smime.p7s");
+ t->description = safe_strdup (_("Digital Signature"));
+ rfc2047_encode_string (&t->description);
}
else
{
t->subtype = safe_strdup ("pgp-signature");
- t->use_disp = 0;
- t->disposition = DISPINLINE;
+ mutt_set_parameter ("name", "signature.asc", &t->parameter);
+ t->use_disp = 1;
+ t->disposition = DISPATTACH;
t->encoding = ENC7BIT;
+ t->d_filename = safe_strdup ("signature.asc");
+ t->description = safe_strdup (_("Digital Signature"));
+ rfc2047_encode_string (&t->description);
}
t->filename = sigfile;
t->unlink = 1; /* ok to remove this file after sending. */

没有评论: