Назад | Перейти на главную страницу

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

В настоящее время у меня есть работающий сервер 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 }

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