I was trying to verify a DomainKeys message from gmail with the Perl Mail::DomainKeys module and it wouldn’t verify for some reason. After digging into the module a bit, I found that gmail doesn’t send the ‘q=’ parameter to specify the method to look up the public key. Obviously this should default to ‘dns’ since it is the only currently supported method.
I modified Signature.pm and added this to line 56:
$self->{‘PROT’} = $self->{‘PROT’} || ‘dns’;
And now the messages are verified properly. I’ve emailed the module’s author about it, but am not sure if he’ll bother with releasing a fix. DomainKeys is being dropped in favor of DKIM.