无法使用GnuPG通过mutt回复电子邮件 - 请求“keyID”

时间:2018-03-17 03:37:24

标签: gnupg mutt

我在Ubuntu上使用mutt和GnuPG。我有GnuPG的这些常规设置:

set pgp_decode_command         = "gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f"
set pgp_verify_command         = "gpg --no-verbose --batch --output - --verify %s %f"
set pgp_decrypt_command        = "gpg --passphrase-fd 0 --no-verbose --batch --output - %f"
set pgp_sign_command           = "gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f"
set pgp_clearsign_command      = "gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"
set pgp_import_command         = "gpg --no-verbose --import -v %f"
set pgp_export_command         = "gpg --no-verbose --export --armor %r"
set pgp_verify_key_command     = "gpg --no-verbose --batch --fingerprint --check-sigs %r"
set pgp_list_pubring_command   = "gpg --no-verbose --batch --with-colons --list-keys %r"
set pgp_list_secring_command   = "gpg --no-verbose --batch --with-colons --list-secret-keys %r"

unset pgp_retainable_sigs

# set pgp_ignore_subkeys
# set pgp_verify_sig=yes
# set pgp_create_traditional     = no
# set pgp_autosign               = no
# set pgp_autoencrypt            = no
# set pgp_replysignencrypted
# set pgp_replyencrypt           = yes
# set pgp_replysign              = yes

set crypt_autosign                     # automatically sign all outgoing messages
# set crypt_replysign                  # sign only replies to signed messages
# set crypt_autoencrypt=yes            # automatically encrypt outgoing msgs
# set crypt_replyencrypt=yes           # encryp only replies to signed messages
# set crypt_replysignencrypted=yes       # encrypt & sign replies to encrypted msgs
set crypt_verify_sig=yes               # auto verify msg signature when opened
set pgp_create_traditional = yes       # http://www.rdrop.com/docs/mutt/manual236.html#pgp_create_traditional

set pgp_timeout                = 3600
set pgp_good_sign              = "^gpg: Good signature from"

我对相关特定帐户有这些设置:

send-hook mark.nichols@gmial.com 'set pgp_autosign'
pgp-hook mark.nichols@gmail.com 53445200

set pgp_encrypt_only_command="/usr/lb/mutt/pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 53445200 -- -r %r -- %f"
set pgp_encrypt_sign_command="/usr/lib/mutt/pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 53445200 -- -r %r -- %f"
set pgp_sign_as=53445200

如果我向没有GPG密钥的人发送电子邮件,则使用我的密钥对发送的电子邮件进行数字签名并发送。当我得到对该电子邮件的回复,然后依次回复时,我不能像我问的那样:

Enter keyID for <recipient email>

我可以使用Ctrl-G退出该对话框,但我无法通过它。起初我认为这是这两个环境中的一个:

# set crypt_replyencrypt=yes           # encryp only replies to signed messages
# set crypt_replysignencrypted=yes       # encrypt & sign replies to encrypted msgs

但即使有他们注释,我也被要求提供一个不存在的密钥。我错过的设置在哪里要求我在回复时为接收者指定密钥?

由于

1 个答案:

答案 0 :(得分:2)

答案是使用GPGME。 GPGME库封装了大多数(如果不是全部)常用的GnuPG功能。只需几条配置线,GnuPG的相关内容就“正常工作”。这篇帖子很好:https://sanctum.geek.nz/arabesque/gnu-linux-crypto-email/

最后,我的设置现在看起来像:

# Use GPGME
set crypt_use_gpgme = yes

# Sign replies to signed emails
set crypt_replysign = yes

# Encrypt replies to encrypted emails
set crypt_replyencrypt = yes

# Encrypt and sign replies to encrypted and signed email
set crypt_replysignencrypted = yes

# Attempt to verify signatures automatically
set crypt_verify_sig = yes

# Use my key for signing and encrypting
set pgp_sign_as = 0x53445200

# Automatically sign all out-going email
set crypt_autosign = yes

更简单,而且有效。