How to use DomainKeys Signature


DomainKeys is a technology proposal that can bring black and white back to this decision process by giving email providers a mechanism for verifying both the domain of each email sender and the integrity of the messages sent. To learn more detail about DomainKeys, please refer to http://antispam.yahoo.com/domainkeys

DKIM is a similar technology as Domainkeys. To learn more detail about DKIM, please refer to RFC4871.

Now, EASendMail provides a way to add DomainKeys and DKIM signature to your email.

Make key-pair certificate

First of all, we need to generate a certificate which contains public key/private key. We can use MakeCert.exe (.NET Framework Tools) to generate certificate like this:

makecert -pe -n "CN=mydomainkeys" -ss my -sr LocalMachine -a sha1 -sky signature -r
Then you can check the certficate like this:
Windows Start Menu->input:
MMC

press enter.

MMC->File Menu->Add/Remove Span-in
Add->Choose "Certificates"-> Computer Account->Local Machine->Finish->Close.

Then you should find the certificate at 
"Certificates(Local Computer)->Personal->Certificates"

Another way to get certificate

If you don't have MakeCert.exe tool,You can use this online tool to generate the certificate
http://mail.adminsystem.com/getpfx/getpfx.aspx

Create X-DK-File

To sign the DomainKeys with EASendMail, we need to create a text file with notepad. and save it.

If you get certificate by MakeCert.exe, please use the following syntax

For example:
We create a adminsystemdomainkeys.txt and contains the following content.

dk_d: adminsystem.com
dk_s: s1024
CertStore: machine
CertStoreName: my
CertSubjectName: mydomainkeys

dk_d is the email sender domain,
dk_s is the domain public key  selector.
CertSubjectName is the keyword in certificate subject.

If you get certificate by online tool, please use the following syntax

then the adminsystemdomainkeys.txt should contain the following content

dk_d: adminsystem.com
dk_s: s1024
PFXPath: c:\my cert\adminsystem.pfx
PFXPassword: mypassword

dk_d is the email sender domain,
dk_s is the domain public key  selector.
PFXPath is the PFX file full path.
PFXPassword is the PFX file password.

Finally, we just need to add this line in your code:

oSmtp.AddHeader "X-DK-File", "c:\adminsystemdomainkeys.txt"

EASendMail will generate the DomainKeys signature automatically.

Deploy Public Key

We also need to deploy the certificate Public Key to your domain DNS server. You can export the public key by the online tool:
http://emailarchitect.com/live/getpublickey.aspx

You can also use the following code gets the public key of the certificate.

oSmtp.AddHeader "X-DK-File", "c:\adminsystemdomainkeys.txt"
oSmtp.GetEmailContent
MsgBox oSmtp.DK_PublicKey
Once you get the public key, you should set a TXT record in your domain DNS server. For example: your selector is s1024, your domain is adminsystem.com, then you should create a TXT record for s1024._domainkey.adminsystem.com and set the following content in the record.
s1024._domainkey.adminsystem.com       text =

        "t=y; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCmKsozkVJqlNAGsvn1LoJPmoZl8nizv6pIuOV5P
44E8C6Vbl4DW8p0Bb5Zg8EgpYRgsEiJX5pYDj67YzzXNIhViziHwQ3jbUedxNkw/6GV4ZX8aRJKJnwnYqGWIQ8tQESwQtywfduQ2
TjsS1aG3XeOgxxEeuhBNaZHQWVThSinuQIDAQAB"
To learn more detail about Public Key deployment, please refer to http://antispam.yahoo.com/domainkeys

Test DomainKeys and DKIM

Please go to http://www.appmaildev.com/en/dkim to test your DKIM and DomainKeys signature.

See Also

Using EASendMail ActiveX Object
Work with EASendMail Service(Mail Queuing)
Send email without SMTP server(DNS lookup)
Error with sending recipient(Relay denied)
Mail vs. FastSender
Programming with Asynchronous Mode
Digital Signature and Email Encryption
Work with RTF and Word
Programming with FastSender
EASendMail ActiveX Object References
EASendMail SMTP Component Samples