Mutt

我如何才能僅對 mutt 中的唯一特定收件人進行 GPG 加密?

  • January 7, 2017

我正在嘗試設置一個發送掛鉤,以便在我發送給特定收件人時啟用 gpg 加密,但如果它也發送給其他收件人,則禁用加密。但是,當特定收件人位於收件人列表中的任何位置時,無論其他人在場,發送掛鉤似乎都會觸發。

理想情況下,如果轉到 ,我會加密foo@bar.com,但如果轉到 ,我不會加密foo@bar.com, not@this.com, or@whatever.com。笨蛋手冊

當出現多個匹配時,

$$ send-hook $$命令按照 muttrc 中指定的順序執行。

因此,我將以下內容放入我的 muttrc 中。如果郵件發送到foo@bar.com,則啟用自動加密。但是,如果有一個不是 的收件人foo@bar.com,則取消設置自動加密。

send-hook . unset crypt_autoencrypt
send-hook "!~l ~t ^foo@bar\\.com$" "set crypt_autoencrypt"
send-hook "!~l !~t ^foo@bar\\.com$" "unset crypt_autoencrypt"

但是,它似乎不起作用。似乎 send-hooks 似乎並沒有單獨解析每個單獨的收件人。即使我將郵件發送至foo@bar.com, not@this.com, mutt 也會嘗試對其進行加密。

解決方法

我可以用一個非常醜陋的黑客來解決這個問題。

send-hook . unset crypt_autoencrypt
send-hook "!~l ~t ^foo@bar\\.com$" "set crypt_autoencrypt"
send-hook "!~l ~t [^r]\\.com$" "unset crypt_autoencrypt"

.com如果我向前面有非字元的地址發送電子郵件r,則它不會加密。顯然有很多…r.com地址不是foo@bar.com,所以我必須將第三行擴展如下。

send-hook "!~l ~t '([^r]\\.com|[^a]r\\.com)$" "unset crypt_autoencrypt"

這也排除了前面…r.com帶有非字元的地址。a我只是重複這個序列幾次。

這樣做的主要問題是 send-hooks 似乎不會為 cc: 地址觸發,如果電子郵件是 cc:ed to ,則整個第三行沒有意義not@this.com

在 muttrc 中,使用

set crypt_opportunistic_encrypt = yes

$ man 5 muttrc

crypt_opportunistic_encrypt
     Type: boolean
     Default: no

     Setting this variable will cause Mutt to automatically enable
     and disable encryption, based on whether all message recipient
     keys can be located by mutt.

     When this option is enabled, mutt will determine the encryption
     setting each time the TO, CC, and BCC lists are edited.  If
     $edit_headers is set, mutt will also do so each time the
     message is edited.

     While this is set, encryption settings can't be manually
     changed.  The pgp or smime menus provide an option to disable
     the option for a particular message.

     If $crypt_autoencrypt or $crypt_replyencrypt enable encryption
     for a message, this option will be disabled for the message.  It
     can be manually re-enabled in the pgp or smime menus.  (Crypto
     only)

這也檢查 cc:ed 地址的有效性。不幸的是,根據倒數第二段,這會覆蓋許多有用的設置。例如,我有set pgp_autoinline = yes,它已被棄用,但對於發送給不支持 PGP/MIME的舊客戶端1是必需的。

1例如,Android 的 K-9 + APG。AFAIK 這是唯一一個完全讀取 PGP 加密電子郵件的 FOSS Android 電子郵件客戶端,但僅限於有限的方式。(編輯:K-9 + openkeychain 現在支持 PGP/MIME。)

引用自:https://unix.stackexchange.com/questions/235328