В настоящее время у меня есть работающий сервер Postfix, который доставляет входящую почту через procmail. Это нормально работает, но теперь я хочу расшифровать любую входящую почту, которая автоматически зашифрована с помощью pgp. Итак, я создал правило procmail для запуска gnupg.
Это мой текущий .procmailrc:
:0 fw
* ^Subject: encryptme
| /usr/bin/gpg --decrypt | mail -s "ENCRYPTED: $subject" my@email.com
Теперь письмо успешно расшифровывается и отправляется на my@email.com, но с пустой темой (в письме отображается только «ЗАШИФРОВАНО:») и с адресом электронной почты сервера в качестве отправителя. И, конечно же, расшифрованное письмо содержит части заголовка электронного письма.
Content-Type: multipart/mixed; boundary="713bkotRlnRGA7FAhJANoI0IsDpX3ws8N"
--713bkotRlnRGA7FAhJANoI0IsDpX3ws8N
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: quoted-printable
Just a test.
--713bkotRlnRGA7FAhJANoI0IsDpX3ws8N--
Есть ли возможность расшифровать входящую почту таким образом автоматически и «очистить» (просто расшифрованное сообщение) без дополнительного программного обеспечения, такого как GNU Anubis? И какое хорошее правило для procmail запускает программу (в зависимости от темы)?
Надеюсь, этой информации будет достаточно, чтобы кто-нибудь мне помог.
В стольких словах gpg --decrypt
хочет файл, а не сообщение электронной почты. Сообщение электронной почты обычно состоит из нескольких частей MIME (в вашем примере показан multipart/mixed
с единственной частью тела, но концепция все еще сохраняется), которые не являются файлами. Вам нужно передать только зашифрованную полезную нагрузку, а не контейнер MIME, в gpg
, или найдите оболочку или вариант, который поможет gpg
проанализировать оболочку MIME.
Быстрый поиск в Google дал простую оболочку Perl MIME, которая делает следующее:
В случае, если связь испортится, заново изобрести то же колесо не составит особого труда; вам в основном нужно идентифицировать часть MIME, которая содержит зашифрованную полезную нагрузку, декодировать ее (вероятно, base64
закодирован, если он не использует gpg
"ASCII armor") и передать его gpg
. Наличие зашифрованной полезной нагрузки, вероятно, является хорошим триггером, но, возможно, оболочка должна просто проходить через все, что не содержит зашифрованной полезной нагрузки, и вы должны передать все оболочке.
По касательной нет ничего, что определяло бы $subject
в Procmail или в ваших правилах. Вы можете сделать что-то вроде этого:
:0
* ^Subject:[ ]\/[^ ].*
{ subject=$MATCH }
... где пробел между квадратными скобками должен быть пробелом и табуляцией.