Sendmail DomainKeys Identified Mail (DKIM) Library

Introduction

DomainKeys Identified Mail ("DKIM") is a specification for signing messages at the domain level using simple cryptographic methods to prevent the falsification of sender domains. While the most obvious application of this is to defense against spam, other applications can make use of this capability.

DKIM is an amalgamation of DomainKeys, created by Yahoo!, Inc., and Internet Identified Mail (IIM) created by Cisco, Inc. Both can be found as Internet Draft documents via the IETF web sites. More information about DomainKeys can be found here.

This API (libdkim) allows an application to sign or verify messages according to the DKIM proposed standard. Also provided is an implementation of a filter, using Sendmail's milter package, that uses libdkim to implement this facility.

Data Types

Data Type Description
DKIM A signing/verifying context for a message.
dkim_alg_t A signature generation/verification method.
dkim_canon_t A canonicalization method.
DKIM_LIB An instance of the libdkim service.
dkim_sigkey_t Private key data.
DKIM_STAT Return value/status.

Functions

Function Description
Administration
dkim_init() Initialize an instance of the DKIM service.
Signing
dkim_sign() Allocate a new DKIM handle for signing a message.
dkim_getsighdr() Generate and return a signature header.
dkim_getidentity() Retrieve sender identity information extracted from headers.
Verifying
dkim_verify() Allocate a new DKIM handle for verifying a message.
dkim_policy() Retrieve signer policy information.
dkim_reportinfo() Retrieve information required to generate a verification failure report.
dkim_getcanonlen() Retrieve information regarding total canonicalized body length, and the size of what was actually signed.
dkim_getsignalg() Retrieve the signature algorithm used to sign a message.
dkim_getsigntime() Retrieve the timestamp on the signature of a message.
dkim_getkeysize() Retrieve the size in bits of the key used to verify a message.
Processing
dkim_header() Process a header.
dkim_eoh() Identify end of headers.
dkim_body() Process a body chunk.
dkim_eom() Identify end of message.
Utility
dkim_options() Get or set library options.
rfc2822_mailbox_split() Parse an RFC2822 header, e.g. From:, to get user and domain.
Cleanup
dkim_free() Destroy a per-message handle of the DKIM service.

An overview of the general use of this API is available here.