在发送外发消息时要执行的操作(签名、加密或两者都执行)是在按下“y
”发送消息之前,在通过“p
”选项可见的选项菜单中选择的。 一旦您选择了要执行的操作,只有屏幕上显示的消息头中的PGP行会更改,但是直到您使用“y
”发送消息,系统才会要求您插入口令短语以激活消息签名,或者在公钥环中找不到接收者的情况下,系统也不会要求您插入用于加密的公钥。
注意: 如果在请求时口令短语输入错误,Mutt 似乎“卡住”了,但事实并非如此,它正在等待重新输入。 要执行此操作,请按下 <Enter>
键,然后使用 <Ctrl>F
从内存中删除口令短语。 接下来,我们使用(“y
”)重复消息发送并重新输入口令短语。
通过此过程,Mutt 将使用 PGP/MIME 发送消息,并且在要发送的文件列表中将出现一个额外的文件(如果我们仅选择签名)。或者,它将加密完整消息(所有 MIME 部分),并且只会留下两个 MIME 部分,第一个是 PGP/MIME 版本,第二个是加密的消息(其中包含所有 MIME 部分)并已签名(如果我们选择这样做)。
注意: 由于某些原因,如果接收方邮件用户代理无法使用 MIME,我们可能需要将签名包含在消息正文中。 请参阅关于 application/pgp 的章节,其中包含 PGP5 和 GnuPG 的信息。
Mutt 将尝试自动验证使用 PGP/MIME 的传入消息的签名或解密。 请参阅 Procmail 笔记和技巧 章节,其中评论了如何自动更改未正确设置 MIME 类型的传入消息的 MIME 类型。
在接下来的章节中,您可以找到对 Mutt 配置文件的修改,以便轻松使用 PGP2、PGP5 和 GnuPG。
为此,需要创建一个新的配置文件,我们将其命名为 .gnupgp.mutt
(这是我们的名称,您可以将其命名为任何其他名称,并在主配置文件 ~/.muttrc
中设置此文件的名称)。
这可以通过在 ~/.muttrc
文件的末尾行中包含配置文件 .gnupgp.mutt
的完整路径(其位置)来完成。 我们放置此文件和其他可选配置文件的目录可以是任何位置,只要我们具有正确的权限(在上一节中,我们将其包含在 ~/Mail/
目录中),或者我们主目录中的任何其他目录,可以使用任何名称
~$ mkdir mutt.varios
在其中,我们复制(或创建)可选配置文件 .gnupgp.mutt
,然后我们在 .muttrc
文件中使用 source
命令设置此文件的来源,如下所示
source ~/mutt.varios/.gnupgp.mutt
现在,Mutt 将接受 .gnupgp.mutt
中的配置变量,就像它们直接在 .muttrc
中一样。
这种方法是避免拥有非常大、未排序的配置文件的良好方法,并且可以用于在其他单独的文件中设置任何其他组的配置变量。 例如,与之前一样,如果我们在 Mutt 中使用 vim 作为默认编辑器,我们可以告诉 .muttrc
使用不同的配置文件 .vimrc
,该文件是我们在从命令行使用 vim 时使用的。 首先,将 ~/.vimrc
复制到我们的可选配置文件目录 ~/mutt.varios/
并将其设置为其他名称(例如 vim.mutt
)
$ cd /home/user ~$ cp .vimrc mutt.varios/vim.mutt
接下来,更改我们希望在 vim 作为 Mutt 编辑器时有所不同的配置变量,最后修改 .muttrc
以反映此更改
set editor="/usr/bin/vim -u ~/mutt.varios/vim.mutt"
使用最后一行,我们将 Mutt
设置为使用外部编辑器 Vim,并带有需要的配置选项。
有一些变量我们将与 Mutt 的三个公钥加密程序一起全局使用。 这些变量是布尔值,可以 set(激活)或 unset(停用)。
在配置文件(~/.muttrc
,或 ~/mutt.varios/.gnupgp.mutt
,或您使用的任何文件)中,符号(#)是注释,将被忽略。 因此,从现在开始,我们将使用它来注释每个变量
# 如果设置了此变量,Mutt 将询问是否签名所有
# 外发消息。 (1)
# 如果设置了此变量,Mutt 将询问是否加密所有
# 外发消息。 (1)
# 保存我们想要加密的所有已发送消息的加密副本
# (需要通用配置变量 set copy=yes
)。
# 当您回复已签名的消息时,回复消息也将被
# 签名。
# 当您回复加密的消息时,回复消息
# 也将被加密。
# 您是否要自动验证传入的已签名消息?
# 当然!
# 在输入口令短语 <n> 秒后,从内存缓存中删除口令短语
# 。 (2)
# 您要使用哪个密钥来签名外发消息?
# 注意: 可以将其设置为用户 ID,但是
# 如果您使用不同的密钥拥有相同的用户 ID,这可能会造成混淆。
# 当 PGP 需要时,使用 “quoted-printable”。
# 不要使用 64 位密钥 ID,使用 32 位密钥 ID。
# 消息完整性检查算法,其中
# <some> 是以下内容之一: (3)
在接下来的三个章节中,将解释每个 PGP 版本的配置变量。 第四节将解释如果您使用多个 PGP 版本,如何修改变量。
(1) 由于 Mutt 要求您每次想要签名或在想要加密时选择收据时都输入口令,因此设置此变量可能不方便。 您可能想要取消设置此变量。 对于加密消息尤其如此,因为您没有消息收据的所有公钥。
(2) 根据我们签名或解密的消息数量,我们可能希望在缓存中保留口令短语的时间或长或短。 此选项可避免您在每次签名新消息或解密传入消息时都输入口令短语。 警告: 将口令短语保存在缓存中是不安全的,尤其是在网络连接的系统中。
(3) 这仅在使用我们用于签名的密钥时才是必要的。 当从撰写菜单中选择密钥时,Mutt 将计算算法。
要将 PGP2 与 Mutt-i 一起使用,您需要将以下行添加到 ~/mutt.varios/.gnupgp.mutt
文件中
set pgp_default_version=pgp2
set pgp_key_version=default
set pgp_receive_version=default
set pgp_send_version=default
set pgp_sign_micalg=pgp-md5
set pgp_v2=/usr/bin/pgp
set pgp_v2_pubring=~/.pgp/pubring.pgp
set pgp_v2_secring=~/.pgp/secring.pgp
如您所知,~/.pgp/pubring.pgp
和 secring.pgp
文件必须存在。 有关 PGP2 的更多信息,请使用 man pgp
命令。
要将 PGP5 与 Mutt-i 一起使用,您需要将以下行添加到 ~/mutt.varios/.gnupgp.mutt
文件中
set pgp_default_version=pgp5
set pgp_key_version=default
set pgp_receive_version=default
set pgp_send_version=default
set pgp_sign_micalg=pgp-sha1
set pgp_v5=/usr/bin/pgp
set pgp_v5_pubring=~/.pgp/pubring.pkr
set pgp_v5_secring=~/.pgp/secring.skr
如您所知,~/.pgp/pubring.pkr
和 secring.pkr
文件必须存在。 有关 PGP 5 的更多信息,请使用 man pgp5
命令。
要将 GnuPG 与 Mutt-i 一起使用,您需要将以下行添加到 ~/mutt.varios/.gnupgp.mutt
文件中
set pgp_default_version=gpg
set pgp_key_version=default
set pgp_receive_version=default
set pgp_send_version=default
set pgp_sign_micalg=pgp-sha1
set pgp_gpg=/usr/bin/gpg
set pgp_gpg_pubring=~/.gnupg/pubring.gpg
set pgp_gpg_secring=~/.gnupg/secring.gpg
如您所知,~/.gnupg/pubring.gpg
和 secring.gpg
文件必须存在。 有关 GnuPG 的更多信息,请使用 man gpg.gnupg
、man gpgm
和 man gpg
命令。
如果您想使用多个 PGP 软件,您需要修改一些我们之前注释的变量。 实际上,这只是为了删除冗余的版本变量。
例如,如果您想使用 GnuPG 作为默认签名工具,则 Mutt 中所有使用 GnuPG/PGP 的菜单命令都将调用此程序来执行签名、解密、加密、验证等操作
为此,您必须 一次 设置配置变量 $set_pgp_default
,因此
set pgp_default_version=gpg
现在,要使用所有三个程序,~/mutt.varios/.gnupgp.mutt
文件可以像这样
set pgp_default_version=gpg # default version to use
set pgp_key_version=default # default key to use
# in this case, gnupg defines it
set pgp_receive_version=default # default version to decrypt will be the default
set pgp_send_version=default # version defined in the first line (gpg)
set pgp_gpg=/usr/bin/gpg # where to find the GnuPG binary
set pgp_gpg_pubring=~/.gnupg/pubring.gpg # public key file to GnuPG
set pgp_gpg_secring=~/.gnupg/secring.gpg # secret key file to GnuPG
set pgp_v2=/usr/bin/pgp # where to find the PGP2 binary
set pgp_v2_pubring=~/.pgp/pubring.pgp # public key file to PGP2
set pgp_v2_secring=~/.pgp/secring.pgp # secret key file to PGP2
set pgp_v5=/usr/bin/pgp # where to find the PGP5 binary
set pgp_v5_pubring=~/.pgp/pubring.pkr # public key file to PGP5
set pgp_v5_secring=~/.pgp/secring.skr # secret key file to PGP5