Hi there, I have successfully implemented DKIM on my server.
One thing: DKIM is different from DomainKeys. DomainKeys was created by Yahoo!, and since then a successor has been developed which is very similar, but not identical, to DomainKeys; it is called Domain Keys Identified Mail (DKIM).
To have this done within Swift Mailer would be quite difficult. Some background on how this works:
1) The domain owner generates a DNS record which includes an RSA public key, as well as some other config settings. This is put in a TXT record for the domain.
2) When an email is sent, the properly-configured MTA will determine if the email is being sent from an address with a valid DKIM key.
3) The DKIM headers are created by generating a hash of certain fields of the email address, like 'from, subject, date, body', etc. This hash is then encrypted using the private key (which was used to generate the public key in the DNS record), and added as a separate mail header
4) If the email is received by an MTA or spam-checker that supports DKIM (the latest version of SpamAssassin does), the header will be decoded using the public key that is accessible via a simple DNS query to the originating domain (the "Sender:" header field is used to determine which domain's DNS to query). Then, the receiving program checks that the decoded hash matches the hash it sees for the original fields. In this way, if any of the fields that were used to generate the original hash (subject, date, from, reply-to, etc etc) have been changed, then the process fails and the email is discarded or marked as spam. If it succeeds, then it is known strongly that the email was sent from the same domain it was claimed to be sent by, and the email as received is the same as the email as sent.
To do this in Swift would not be impossible, but would require encryption, managing keys, computing hashes of certain headers, and being very sure that the fields that the hash is computed on do not change when they are received by the server.
One thing that I'm not sure about is that if a server discarded 8bitmime data and converted a header field into 7bit quoted printable, the hash would change and message authentication would fail. DKIM would require all messages to be outputted as 7bit QP.
Currenlty, my server runs a filter that is called by Postfix (the MTA) on all outgoing messages, which then automatically signs the messages with DKIM headers if it is coming from a domain that has been set up with DKIM. It DOES convert everything into 7BIT, by the way.
Hope this was enlightening

Dave