Comment puis-je crypter GPG pour un seul destinataire spécifique dans Mutt?

J'essaie de mettre en place un hook d'envoi pour que le encryption gpg soit activé lorsque je l'envoie à un destinataire spécifique, mais s'il est également envoyé à d'autres destinataires, le encryption est désactivé. Cependant, les crochets d'envoi semblent se triggersr lorsqu'un destinataire particulier se trouve n'importe où dans la list des destinataires, indépendamment de la présence d'autres personnes.

Idéalement, je [email protected] s'il va à [email protected] , mais pas s'il va à [email protected], [email protected], [email protected] . Le manuel de Mutt dit

Lorsque plusieurs correspondances se produisent, les commands [send-hook] sont exécutées dans l'ordre spécifié dans le file muttrc.

Par conséquent, je mets ce qui suit dans mon muttrc. Si le courrier est envoyé à [email protected] , activez le encryption automatique. Cependant, s'il y a un destinataire qui n'est pas [email protected] , alors déselect autoencrypt.

 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" 

Cependant, cela ne semble pas fonctionner. Il semble que les crochets d'envoi ne semblent pas parsingr chaque destinataire séparément. Même si j'adresse un mail à [email protected], [email protected] , [email protected], [email protected] tente de le chiffrer.

Solution de contournement

Je peux contourner cela avec un hack très laide.

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

Si j'envoie un e-mail à une adresse .com dont le caractère non- r précédé, il ne sera pas chiffré. Il y a évidemment beaucoup d'adresses …r.com qui ne sont pas [email protected] , donc je dois prolonger la troisième ligne comme suit.

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

Cela exclut également les adresses …r.com avec un caractère non précédant aussi. Je répète cette séquence encore quelques fois.

Le problème majeur avec ceci est que les hooks d'envoi ne semblent pas tirer pour les adresses cc: ce qui rend cette troisième ligne discutable si l'email est cc: ed à [email protected] .

Dans muttrc, utilisez

 set crypt_opportunistic_encrypt = yes 

De $ 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) 

Cela vérifie également les adresses cc: ed pour la validité. Malheureusement, selon l'avant-dernier paragraphe, cela remplace de nombreux parameters utiles. Par exemple, j'ai set pgp_autoinline = yes , ce qui est déprécié, mais nécessaire pour l'envoi à des clients plus anciens 1 , qui ne prennent pas en charge PGP / MIME.

1 Par exemple, Android K-9 + APG. AFAIK c'est le seul client de messagerie Android FOSS qui lit les e-mails cryptés par PGP, mais seulement de manière limitée. (EDIT: K-9 + openkeychain prend maintenant en charge PGP / MIME.)