Node.js wrapper around the Python pip package dkimpy exposing DKIM and ARC signing and verification functions
-
Ensure that you have a Python version of >= 3.5 installed per dkimpy requirements (note that Python v3 is required because of a bug with DNS recursive CNAME lookups on v2.7):
python3 --version
-
Install the package dkimpy and authres (
authres
is optional and used for ARC):pip3 install dkimpy authres
npm:
npm install dkimpy
yarn:
yarn add dkimpy
const fs = require('fs');
const { dkimVerify } = require('dkimpy');
const message = fs.readFileSync('/path/to/example.eml');
// then/catch usage
dkimVerify(message)
.then(console.log)
.catch(console.error);
// async/await usage
(async () => {
try {
const result = await dkimVerify(message)
console.log(result);
} catch (err) {
console.error(err);
}
})();
The value of result
is a Boolean which indicates if DKIM verification was successful for the first DKIM-Signature
header found on the email.
You can pass a second argument of index
(defaults to 0
, which means it looks for the first DKIM-Signature found).
const fs = require('fs');
const { arcVerify } = require('dkimpy');
const message = fs.readFileSync('/path/to/example.eml');
// then/catch usage
arcVerify(message)
.then(console.log)
.catch(console.error);
// async/await usage
(async () => {
try {
const result = await arcVerify(message)
console.log(result);
} catch (err) {
console.error(err);
}
})();
The value of result
is an enumerable String which is one of:
"none"
indicates it does not have an ARC signature"pass"
indicates its ARC signature was verified successfully"fail"
indicates it had an ARC signature and it failed verification
const fs = require('fs');
const { arcSign } = require('dkimpy');
const message = fs.readFileSync('/path/to/example.eml');
const selector = 'default'; // default._domainkey
const domain = 'example.com';
const srvId = 'mx.example.com';
const privateKeyFile = '/path/to/private.key';
// then/catch usage
arcSign(message, selector, domain, privateKeyFile, srvId)
.then(console.log)
.catch(console.error);
// async/await usage
(async () => {
try {
const result = await arcSign(message, selector, domain, privateKeyFile, srvId)
console.log(result);
} catch (err) {
console.error(err);
}
})();
The value of result
is a String with the new ARC headers to add to the top of the message (if any).
Name | Website |
---|---|
Nick Baugh | http://niftylettuce.com/ |