diff --git a/src/mail.js b/src/mail.js index c3a2bfafc..1e16fbef9 100644 --- a/src/mail.js +++ b/src/mail.js @@ -325,6 +325,7 @@ function checkPtr(mailFqdn, callback) { var ptr = { domain: null, + name: null, type: 'PTR', value: null, expected: mailFqdn, // any trailing '.' is added by client software (https://lists.gt.net/spf/devel/7918) @@ -335,6 +336,7 @@ function checkPtr(mailFqdn, callback) { if (error) return callback(error, ptr); ptr.domain = ip.split('.').reverse().join('.') + '.in-addr.arpa'; + ptr.name = ip; dns.resolve(ptr.domain, 'PTR', DNS_OPTIONS, function (error, ptrRecords) { if (error) return callback(error, ptr); @@ -451,7 +453,7 @@ function getStatus(domain, callback) { // ensure we always have a valid toplevel properties for the api var results = { - dns: {}, // { mx: { expected, value }, dmarc: { expected, value }, dkim: { expected, value }, spf: { expected, value }, ptr: { expected, value } } + dns: {}, // { mx/dmar/dkim/spf/ptr: { expected, value, name, domain, type } } rbl: {}, // { status, ip, servers: [{name,site,dns}]} optional. only for cloudron-smtp relay: {} // { status, value } always checked }; @@ -516,7 +518,7 @@ function checkConfiguration(callback) { Object.keys(result.dns).forEach((type) => { const record = result.dns[type]; - if (!record.status) message.push(`${type.toUpperCase()} DNS record did not match. Expected: \`${record.expected}\`. Actual: \`${record.value}\``); + if (!record.status) message.push(`${type.toUpperCase()} DNS record (${record.type}) did not match.\n * Hostname: \`${record.name}\`\n * Expected: \`${record.expected}\`\n * Actual: \`${record.value}\``); }); if (result.relay && result.relay.status === false) message.push(`Relay error: ${result.relay.value}`); if (result.rbl && result.rbl.status === false) { // rbl field contents is optional