mutt has excellent OpenPGP and GPG support. However different clients send GnuPG encrypted/signed data in different ways. Lots of people seem to be using FireGPG these days so that they can use GnuPG within the GMail/Hotmail/Yahoo! web clients.

Here's the procmail rule I used to convert almost all incoming emails to the OpenPGP/MIME format:

:0  
* !^Content-Type: multipart/  
* !^Content-Type: application/pgp  
{  
 :0 fBw  
 * ^-----BEGIN PGP MESSAGE-----  
 * ^-----END PGP MESSAGE-----  
 | formail \  
     -i "Content-Type: application/pgp; format=text; x-action=encrypt"  

 :0 fBw  
 * ^-----BEGIN PGP SIGNED MESSAGE-----  
 * ^-----BEGIN PGP SIGNATURE-----  
 * ^-----END PGP SIGNATURE-----  
 | formail \  
     -i "Content-Type: application/pgp; format=text; x-action=sign"  
}

However, this didn't actually work with FireGPG and the way that it puts encrypted messages inline. I eventually found out that putting this in my ~/.muttrc would fix it:

set pgp_auto_decode=yes