Расшифровать входящую почту pgp с помощью procmail

Расшифровать входящую почту pgp с помощью procmail

В настоящее время у меня запущен сервер Postfix, который доставляет входящую почту через procmail. Он работает нормально, но теперь я хочу автоматически расшифровывать любую входящую почту, зашифрованную с помощью pgp. Поэтому я создал правило procmail для запуска gnupg.

Вот мой текущий .procmailrc:

:0 fw
* ^Subject: encryptme
| /usr/bin/gpg --decrypt | mail -s "ENCRYPTED: $subject" [email protected]

Теперь письмо успешно расшифровано и отправлено[email protected]но с пустой темой (в письме указано только "ENCRYPTED:") и с адресом электронной почты сервера в качестве отправителя. И, конечно, расшифрованное письмо содержит части заголовка письма.

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, чтобы программа запускалась (вместо темы)?

Надеюсь, этой информации будет достаточно, чтобы кто-то мне помог.

решение1

Проще говоря, gpg --decryptхочет файл, а не сообщение электронной почты. Сообщение электронной почты обычно состоит из нескольких частей MIME (ваш пример показывает multipart/mixedтолько с одной частью тела, но концепция все еще сохраняется), которые не являются файлами. Вам нужно передать только зашифрованную полезную нагрузку, а не контейнер MIME, в gpgили найти оболочку или опцию, которая помогает gpgразобрать оболочку MIME.

Быстрое гугление нашло простую оболочку Perl MIME, которая делает следующее:

В случае, если ссылка испортится, повторное изобретение того же велосипеда не должно стать серьезной проблемой; вам в основном нужно определить часть MIME, которая содержит зашифрованную полезную нагрузку, расшифровать ее (она, вероятно, base64закодирована, если только она не использует gpgсобственную "броню ASCII") и передать ее в gpg. Наличие зашифрованной полезной нагрузки, вероятно, является хорошим триггером, но, возможно, оболочка должна просто пропускать все, что не содержит зашифрованной полезной нагрузки, и вы бы скармливали все обертке.

По касательной, нет ничего, что определяет $subjectв Procmail или в ваших правилах. Вы можете сделать что-то вроде этого:

:0
* ^Subject:[    ]\/[^   ].*
{ subject=$MATCH }

... где пробел между квадратными скобками должен быть пробелом и табуляцией.

Связанный контент