Отървете се от PGP в пощенската кутия на mutt

Според моето параноично мнение, ако е възможно, цялата комуникация по пощата и IM трябва да бъде криптирана. (Не защото имам какво да крия, а просто защото не виждам причина да показвам съобщенията си на съседа на Петя, независимо къде работи - никъде, при ISP или в специална услуга.) За пощата това е PGP / GPG, за IM това е OTR. Но това криптиране е предназначено да защитава съобщенията по време на предаване по мрежата, а не на винта в пощенската кутия / IM регистрационните файлове. Няма полза от винта, само проблеми - бавно търсене в съобщения (ако търсенето работи в криптирани съобщения изобщо във вашия MUA), невъзможност за обработка на пощенската кутия с прости скриптове и т.н. Ако има нужда от криптиране на данни на вашия твърд диск, тогава има други, по-подходящи и универсални средства за това от PGP за някои букви.

Тъй като PGP се изисква само по време на предаване по мрежата, би било идеално съобщенията да се шифроват/декриптират по време на получаване/предаване, т.е. използвайки локален POP3/SMTP препредаващ сървър. В този случай всички пощенски клиенти (MUA) автоматично ще получат "PGP поддръжка", а в същото време самите те не знаят нищо за PGP и работят с некриптирани съобщения. Под Windows има такъв сървър - GPGrelay. Под * NIX не можах да намеря аналог. Има помощна програма kuvert, която може автоматично да криптира изходящата поща, но не намерих помощна програма за дешифриране на входяща поща.

Но мотото на mutt не е напразно „Всички мейл клиенти са гадни. Този просто е гаден по-малко." - Успях с помощта на неговата гъвкавост, малък помощен скрипт за qmail и такава и такава майка да реша този, на пръв поглед, банален проблем.

Изпращане на писма

/.muttrc: set fcc_clear=yes

Получаване на писма

h"Content-Type: multipart/encrypted"' 'push \cu^ ' Този подход има няколкохарактеристики/недостатъци:

  • Не можете да изтриете само едно шифровано съобщение, така че когато отворите шифровано съобщение, всички съобщения, маркирани за изтриване в тази пощенска кутия, се изтриват, което може да бъде неприятна изненада в някои ситуации.
  • Както обикновено в mutt, в момента, в който текущият имейл бъде маркиран за изтриване, той преминава към следващия имейл в тази пощенска кутия. Ако този криптиран имейл е единственият нов имейл, тогава всичко работи перфектно - следващият имейл ще бъде точно негово некриптирано копие, така че когато въведете този имейл, ще го видите. Ако в кутията имаше няколко нови букви и всички те бяха криптирани, тогава отваряйки първата от тях, вие ще предизвикате лавина от автоматични преходи към следващите букви с тяхното автоматично декриптиране, но външно всичко ще работи според очакванията - в резултат на това ще се отвори точно писмото, което сте отворили. Но ако сред новите букви има криптирани и некриптирани смесени, тогава, като въведете първата криптирана буква, вие внезапно ще отворите вместо нея първата некриптирана.
  • За разлика от Windows GPGrelay (който при декриптиране може по желание да добави информация към съобщението, че е шифровано/подписано), функцията за дешифриране-запазване не променя съобщението по никакъв начин. По този начин, след автоматичното декриптиране и изтриване на оригиналното писмо, няма да можем да разберем дали то е криптирано и правилно подписано.
За да реша последния проблем, написах малък скрипт addgpginfo. Получава писмо на STDIN, ако е било криптирано или криптирано и подписано, тогава добавя нестандартни GPG заглавки към писмото: с пълна информация за криптиране / подпис, след което стартира програмата, определена от неговите параметри, предоставяйки му модифицирана буква на STDIN. Разработих гоза използване в

/.qmail, но на теория този подход трябва да работи с всяка подобна програма като procmail. Например, ако имате

/.qmail: ./Maildir/ тогава пишете вместо това: addgpginfo qmail-local "$USER" "$HOME" "$LOCAL" "" "nodeliver" "$HOST" "$SENDER" ./Maildir/

От съображения за параноя също би било необходимо да се добави към него премахването на възможни GPG: заглавки от входящи писма (така че никой да не може да ви изпрати неподписано писмо от чуждо име, в заглавките на което пише, че уж е правилно подписано). И от съображения за съвместимост, преименувайте заглавката GPG: на X-GPG:. Но това са дреболии. За да работи addgpginfo, трябва да имате работещ gpg-agent с опцията --write-env-file и X да работи ($DISPLAY може да бъде подаден като параметър, ако нямате ":0").

Резултатът изглежда по следния начин:

отървете

И тук можете да получите грант за тестов период на Yandex.Cloud. Необходимо е само да въведете "Habr" в полето "секретна парола".