mail: move dkim keys into the database

This commit is contained in:
Girish Ramakrishnan
2021-10-11 19:51:29 -07:00
parent a63e04359c
commit dc8ec9dcd8
7 changed files with 108 additions and 85 deletions

View File

@@ -15,7 +15,13 @@ const common = require('./common.js'),
describe('Mail API', function () {
const { setup, cleanup, serverUrl, owner, dashboardDomain } = common;
before(setup);
let publicKey;
before(async () => {
await setup();
const d = await mail.getDomain(dashboardDomain);
publicKey = d.dkimKey.publicKey.split('\n').slice(1, -2).join(''); // remove header, footer and new lines
});
after(cleanup);
describe('crud', function () {
@@ -111,7 +117,7 @@ describe('Mail API', function () {
expect(response.body.dns.dkim.domain).to.eql(dkimDomain);
expect(response.body.dns.dkim.type).to.eql('TXT');
expect(response.body.dns.dkim.value).to.eql(null);
expect(response.body.dns.dkim.expected).to.eql('v=DKIM1; t=s; p=' + mail._readDkimPublicKeySync(dashboardDomain));
expect(response.body.dns.dkim.expected).to.eql('v=DKIM1; t=s; p=' + publicKey);
expect(response.body.dns.dkim.status).to.eql(false);
expect(response.body.dns.spf).to.be.an('object');
@@ -159,7 +165,7 @@ describe('Mail API', function () {
expect(response.body.dns.spf.value).to.eql(null);
expect(response.body.dns.dkim).to.be.an('object');
expect(response.body.dns.dkim.expected).to.eql('v=DKIM1; t=s; p=' + mail._readDkimPublicKeySync(dashboardDomain));
expect(response.body.dns.dkim.expected).to.eql('v=DKIM1; t=s; p=' + publicKey);
expect(response.body.dns.dkim.status).to.eql(false);
expect(response.body.dns.dkim.value).to.eql(null);
@@ -184,7 +190,7 @@ describe('Mail API', function () {
dnsAnswerQueue[mxDomain].MX = [ { priority: '20', exchange: settings.mailFqdn() }, { priority: '10', exchange: 'some.other.server' } ];
dnsAnswerQueue[dmarcDomain].TXT = [['v=DMARC2; p=reject; pct=100']];
dnsAnswerQueue[dkimDomain].TXT = [['v=DKIM2; t=s; p=' + mail._readDkimPublicKeySync(dashboardDomain)]];
dnsAnswerQueue[dkimDomain].TXT = [['v=DKIM2; t=s; p=' + publicKey]];
dnsAnswerQueue[spfDomain].TXT = [['v=spf1 a:random.com ~all']];
const response = await superagent.get(`${serverUrl}/api/v1/mail/${dashboardDomain}` + '/status')
@@ -198,9 +204,9 @@ describe('Mail API', function () {
expect(response.body.dns.spf.value).to.eql('v=spf1 a:random.com ~all');
expect(response.body.dns.dkim).to.be.an('object');
expect(response.body.dns.dkim.expected).to.eql('v=DKIM1; t=s; p=' + mail._readDkimPublicKeySync(dashboardDomain));
expect(response.body.dns.dkim.expected).to.eql('v=DKIM1; t=s; p=' + publicKey);
expect(response.body.dns.dkim.status).to.eql(true); // as long as p= matches we are good
expect(response.body.dns.dkim.value).to.eql('v=DKIM2; t=s; p=' + mail._readDkimPublicKeySync(dashboardDomain));
expect(response.body.dns.dkim.value).to.eql('v=DKIM2; t=s; p=' + publicKey);
expect(response.body.dns.dmarc).to.be.an('object');
expect(response.body.dns.dmarc.expected).to.eql('v=DMARC1; p=reject; pct=100');
@@ -259,7 +265,7 @@ describe('Mail API', function () {
dnsAnswerQueue[mxDomain].MX = [ { priority: '10', exchange: settings.mailFqdn() } ];
dnsAnswerQueue[dmarcDomain].TXT = [['v=DMARC1; p=reject; pct=100']];
dnsAnswerQueue[dkimDomain].TXT = [['v=DKIM1; t=s; p=', mail._readDkimPublicKeySync(dashboardDomain) ]];
dnsAnswerQueue[dkimDomain].TXT = [['v=DKIM1; t=s; p=', publicKey ]];
dnsAnswerQueue[spfDomain].TXT = [['v=spf1 a:' + settings.dashboardFqdn() + ' ~all']];
const response = await superagent.get(`${serverUrl}/api/v1/mail/${dashboardDomain}` + '/status')
@@ -270,8 +276,8 @@ describe('Mail API', function () {
expect(response.body.dns.dkim).to.be.an('object');
expect(response.body.dns.dkim.domain).to.eql(dkimDomain);
expect(response.body.dns.dkim.type).to.eql('TXT');
expect(response.body.dns.dkim.value).to.eql('v=DKIM1; t=s; p=' + mail._readDkimPublicKeySync(dashboardDomain));
expect(response.body.dns.dkim.expected).to.eql('v=DKIM1; t=s; p=' + mail._readDkimPublicKeySync(dashboardDomain));
expect(response.body.dns.dkim.value).to.eql('v=DKIM1; t=s; p=' + publicKey);
expect(response.body.dns.dkim.expected).to.eql('v=DKIM1; t=s; p=' + publicKey);
expect(response.body.dns.dkim.status).to.eql(true);
expect(response.body.dns.spf).to.be.an('object');