Решил запостить сюда свой "велосипед" для работы с общими ключами в mutt.
В расчете на то, что кому-нибудь пригодится или просто привлечет к
обсуждению этой темы. См. аттачмент.

-- 
Stanislav
set pgp_decode_command="gpg --status-fd=2 %?p?--passphrase-fd 0? --keyring 
tmpring.gpg --no-verbose --quiet --batch --output - %f"
set pgp_verify_command="gpg-automate %s %f"
set pgp_decrypt_command="gpg --status-fd=2 %?p?--passphrase-fd 0? --keyring 
tmpring.gpg --no-verbose --quiet --batch --output - %f"
set pgp_sign_command="gpg --keyring tmpring.gpg --no-verbose --batch --quiet 
--output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? 
%f"
set pgp_clearsign_command="gpg --keyring tmpring.gpg --no-verbose --batch 
--quiet --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u 
%a? %f"
set pgp_encrypt_only_command="/usr/lib/mutt/pgpewrap gpg --keyring tmpring.gpg 
--batch --quiet --no-verbose --output - --encrypt --textmode --armor 
--always-trust -- -r %r -- %f"
set pgp_encrypt_sign_command="/usr/lib/mutt/pgpewrap gpg %?p?--passphrase-fd 0? 
--keyring tmpring.gpg --batch --quiet --no-verbose --textmode --output - 
--encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
set pgp_import_command="gpg --keyring tmpring.gpg --no-verbose --import %f"
set pgp_export_command="gpg --keyring tmpring.gpg --no-verbose --export --armor 
%r"
set pgp_verify_key_command="gpg --keyring tmpring.gpg --verbose --batch 
--fingerprint --check-sigs %r"
set pgp_list_pubring_command="gpg --keyring tmpring.gpg --no-verbose --batch 
--quiet --with-colons --list-keys %r" 
set pgp_list_secring_command="gpg --keyring tmpring.gpg --no-verbose --batch 
--quiet --with-colons --list-secret-keys %r" 
set pgp_good_sign="^\\[GNUPG:\\] GOODSIG"
#!/bin/sh
# gpg-automate: A script that automagically requests public keys from a key 
server
# and maintains a separate keyring and a little database of KEYIDs with 
timestamps.
# To be used with mutt and gpg.
# 
# Author: Stanislav Maslovski <[EMAIL PROTECTED]>
# This software is in public domain, use freely.

umask 077

# How long is the database (checked before adding a new key)
MAXLINES=50
# For how long old keys should be kept. This is in seconds :)
KEEP=2592000

TIMESTAMP=$HOME/.gnupg/timestamps
LOCKFILE=$TIMESTAMP.lock

STATUS=`tempfile`
OUTPUT=`tempfile`
IMPORT=`tempfile`

TIME=`date +%s`
gpg --no-verbose --quiet --batch \
        --no-default-keyring --primary-keyring tmpring.gpg --keyring 
pubring.gpg \
        --keyserver-options auto-key-retrieve \
        --status-file=$STATUS --output $OUTPUT --verify $@
EXITCODE=$?

sed -nr "s/^\[GNUPG:\] IMPORTED ([0-9A-F]+)/$TIME \\1/p" $STATUS > $IMPORT

delkey()
{
    gpg --no-verbose --quiet --batch --yes \
        --no-default-keyring --primary-keyring tmpring.gpg \
        --delete-key $1 >/dev/null 2>&1
}

# The database is updated only if there has been a successful import of a new 
key. 
if [ -s $IMPORT ]
then
    lockfile -1 $LOCKFILE
    if [ -e $TIMESTAMP ]
    then
        head -n -$MAXLINES $TIMESTAMP |
            while read STAMP KEYID INFO
            do
                delkey $KEYID
            done
        mv $TIMESTAMP $TIMESTAMP.old
        tail -n $MAXLINES $TIMESTAMP.old |
            while read STAMP KEYID INFO
            do
                if [ $(($TIME - $STAMP)) -gt $KEEP ]
                then
                    delkey $KEYID
                else
                    echo $STAMP $KEYID $INFO
                fi
            done > $TIMESTAMP
        rm -f $TIMESTAMP.old
    fi
    cat $IMPORT >> $TIMESTAMP
    rm -f $LOCKFILE
fi

# Push output to stderr and stdout (mutt will intercept them)
cat $STATUS 1>&2 && cat $OUTPUT
rm -f $STATUS $OUTPUT $IMPORT

exit $EXITCODE

Ответить