#!/usr/bin/perl
# John Homer H Alvero
# Oct 24, 2008

use Mail::QmailQueue;
use Mail::DomainKeys::Message;
use Mail::DomainKeys::Key::Private;

$FinalString = <<EOS;
From: user\@domain.com
MIME-Version: 1.0
Subject: Hello World
To: target\@gmail.com

Test Email! This mail should have valid domain keys.
EOS


open my $fh_message, '<', \ $FinalString;

my $mail = load Mail::DomainKeys::Message(File => $fh_message) or die "unable to load message";
my $priv = load Mail::DomainKeys::Key::Private(File => "/path/to/private/key/file") or die "unable to load key";
$mail->sign(Method => "nofws", Selector => "private", Private => $priv);

$signature = $mail->signature->as_string;


my $qmail = Mail::QmailQueue->new("/var/qmail/bin/qmail-queue");
$qmail->sender('[email protected]');
$qmail->recipient('[email protected]');
$qmail->data('DomainKey-Signature: ' . $signature .';' . "\r\n" . $FinalString);
$qmail->send;

close fh_message;

You can also view the script here.