replace debug() with our custom logger
mostly we want trace() and log(). trace() can be enabled whenever we want by flipping a flag and restarting box
This commit is contained in:
36
src/mail.js
36
src/mail.js
@@ -2,7 +2,7 @@ import assert from 'node:assert';
|
||||
import BoxError from './boxerror.js';
|
||||
import constants from './constants.js';
|
||||
import database from './database.js';
|
||||
import debugModule from 'debug';
|
||||
import logger from './logger.js';
|
||||
import dig from './dig.js';
|
||||
import dns from './dns.js';
|
||||
import eventlog from './eventlog.js';
|
||||
@@ -22,7 +22,7 @@ import superagent from '@cloudron/superagent';
|
||||
import validator from './validator.js';
|
||||
import _ from './underscore.js';
|
||||
|
||||
const debug = debugModule('box:mail');
|
||||
const { log, trace } = logger('mail');
|
||||
const shell = shellModule('mail');
|
||||
|
||||
const OWNERTYPE_USER = 'user';
|
||||
@@ -524,14 +524,14 @@ async function checkRbl(type, mailDomain) {
|
||||
const [rblError, records] = await safe(dig.resolve(`${flippedIp}.${rblServer.dns}`, 'A', DNS_OPTIONS));
|
||||
if (rblError || records.length === 0) continue; // not listed
|
||||
|
||||
debug(`checkRbl (${domain}) flippedIp: ${flippedIp} is in the blocklist of ${rblServer.dns}: ${JSON.stringify(records)}`);
|
||||
log(`checkRbl (${domain}) flippedIp: ${flippedIp} is in the blocklist of ${rblServer.dns}: ${JSON.stringify(records)}`);
|
||||
|
||||
const result = Object.assign({}, rblServer);
|
||||
|
||||
const [error2, txtRecords] = await safe(dig.resolve(`${flippedIp}.${rblServer.dns}`, 'TXT', DNS_OPTIONS));
|
||||
result.txtRecords = error2 || !txtRecords ? [] : txtRecords.map(x => x.join(''));
|
||||
|
||||
debug(`checkRbl (${domain}) error: ${error2?.message || null} txtRecords: ${JSON.stringify(txtRecords)}`);
|
||||
log(`checkRbl (${domain}) error: ${error2?.message || null} txtRecords: ${JSON.stringify(txtRecords)}`);
|
||||
|
||||
blockedServers.push(result);
|
||||
}
|
||||
@@ -573,11 +573,11 @@ async function getStatus(domain) {
|
||||
for (let i = 0; i < checks.length; i++) {
|
||||
const response = responses[i], check = checks[i];
|
||||
if (response.status !== 'fulfilled') {
|
||||
debug(`check ${check.what} was rejected. This is not expected. reason: ${response.reason}`);
|
||||
log(`check ${check.what} was rejected. This is not expected. reason: ${response.reason}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (response.value.message) debug(`${check.what} (${domain}): ${response.value.message}`);
|
||||
if (response.value.message) log(`${check.what} (${domain}): ${response.value.message}`);
|
||||
safe.set(results, checks[i].what, response.value || {});
|
||||
}
|
||||
|
||||
@@ -627,7 +627,7 @@ async function txtRecordsWithSpf(domain, mailFqdn) {
|
||||
|
||||
const txtRecords = await dns.getDnsRecords('', domain, 'TXT');
|
||||
|
||||
debug('txtRecordsWithSpf: current txt records - %j', txtRecords);
|
||||
log('txtRecordsWithSpf: current txt records - %j', txtRecords);
|
||||
|
||||
let i, matches, validSpf;
|
||||
|
||||
@@ -644,10 +644,10 @@ async function txtRecordsWithSpf(domain, mailFqdn) {
|
||||
|
||||
if (!matches) { // no spf record was found, create one
|
||||
txtRecords.push('"v=spf1 a:' + mailFqdn + ' ~all"');
|
||||
debug('txtRecordsWithSpf: adding txt record');
|
||||
log('txtRecordsWithSpf: adding txt record');
|
||||
} else { // just add ourself
|
||||
txtRecords[i] = matches[1] + ' a:' + mailFqdn + txtRecords[i].slice(matches[1].length);
|
||||
debug('txtRecordsWithSpf: inserting txt record');
|
||||
log('txtRecordsWithSpf: inserting txt record');
|
||||
}
|
||||
|
||||
return txtRecords;
|
||||
@@ -657,7 +657,7 @@ async function upsertDnsRecords(domain, mailFqdn) {
|
||||
assert.strictEqual(typeof domain, 'string');
|
||||
assert.strictEqual(typeof mailFqdn, 'string');
|
||||
|
||||
debug(`upsertDnsRecords: updating mail dns records domain:${domain} mailFqdn:${mailFqdn}`);
|
||||
log(`upsertDnsRecords: updating mail dns records domain:${domain} mailFqdn:${mailFqdn}`);
|
||||
|
||||
const mailDomain = await getDomain(domain);
|
||||
if (!mailDomain) throw new BoxError(BoxError.NOT_FOUND, 'mail domain not found');
|
||||
@@ -679,13 +679,13 @@ async function upsertDnsRecords(domain, mailFqdn) {
|
||||
const dmarcRecords = await dns.getDnsRecords('_dmarc', domain, 'TXT'); // only update dmarc if absent. this allows user to set email for reporting
|
||||
if (dmarcRecords.length === 0) records.push({ subdomain: '_dmarc', domain, type: 'TXT', values: [ '"v=DMARC1; p=reject; pct=100"' ] });
|
||||
|
||||
debug(`upsertDnsRecords: updating ${domain} with ${records.length} records: ${JSON.stringify(records)}`);
|
||||
log(`upsertDnsRecords: updating ${domain} with ${records.length} records: ${JSON.stringify(records)}`);
|
||||
|
||||
for (const record of records) {
|
||||
await dns.upsertDnsRecords(record.subdomain, record.domain, record.type, record.values);
|
||||
}
|
||||
|
||||
debug(`upsertDnsRecords: records of ${domain} added`);
|
||||
log(`upsertDnsRecords: records of ${domain} added`);
|
||||
}
|
||||
|
||||
async function setDnsRecords(domain) {
|
||||
@@ -714,7 +714,7 @@ async function setMailFromValidation(domain, enabled) {
|
||||
|
||||
await updateDomain(domain, { mailFromValidation: enabled });
|
||||
|
||||
safe(mailServer.restart(), { debug }); // have to restart mail container since haraka cannot watch symlinked config files (mail.ini)
|
||||
safe(mailServer.restart(), { debug: log }); // have to restart mail container since haraka cannot watch symlinked config files (mail.ini)
|
||||
}
|
||||
|
||||
async function setBanner(domain, banner) {
|
||||
@@ -723,7 +723,7 @@ async function setBanner(domain, banner) {
|
||||
|
||||
await updateDomain(domain, { banner });
|
||||
|
||||
safe(mailServer.restart(), { debug });
|
||||
safe(mailServer.restart(), { debug: log });
|
||||
}
|
||||
|
||||
async function setCatchAllAddress(domain, addresses) {
|
||||
@@ -736,7 +736,7 @@ async function setCatchAllAddress(domain, addresses) {
|
||||
|
||||
await updateDomain(domain, { catchAll: addresses });
|
||||
|
||||
safe(mailServer.restart(), { debug }); // have to restart mail container since haraka cannot watch symlinked config files (mail.ini)
|
||||
safe(mailServer.restart(), { debug: log }); // have to restart mail container since haraka cannot watch symlinked config files (mail.ini)
|
||||
}
|
||||
|
||||
async function setMailRelay(domain, relay, options) {
|
||||
@@ -760,7 +760,7 @@ async function setMailRelay(domain, relay, options) {
|
||||
|
||||
await updateDomain(domain, { relay });
|
||||
|
||||
safe(mailServer.restart(), { debug });
|
||||
safe(mailServer.restart(), { debug: log });
|
||||
}
|
||||
|
||||
async function setMailEnabled(domain, enabled, auditSource) {
|
||||
@@ -977,7 +977,7 @@ async function delMailbox(name, domain, options, auditSource) {
|
||||
if (result.affectedRows === 0) throw new BoxError(BoxError.NOT_FOUND, 'Mailbox not found');
|
||||
|
||||
const [error] = await safe(removeSolrIndex(mailbox));
|
||||
if (error) debug(`delMailbox: failed to remove solr index: ${error.message}`);
|
||||
if (error) log(`delMailbox: failed to remove solr index: ${error.message}`);
|
||||
|
||||
await eventlog.add(eventlog.ACTION_MAIL_MAILBOX_REMOVE, auditSource, { name, domain });
|
||||
}
|
||||
@@ -1190,7 +1190,7 @@ async function resolveMailingList(listName, listDomain) {
|
||||
|
||||
const member =`${memberName}@${memberDomain}`; // cleaned up without any '+' subaddress
|
||||
if (visited.includes(member)) {
|
||||
debug(`resolveMailingList: list ${listName}@${listDomain} has a recursion at member ${member}`);
|
||||
log(`resolveMailingList: list ${listName}@${listDomain} has a recursion at member ${member}`);
|
||||
continue;
|
||||
}
|
||||
visited.push(member);
|
||||
|
||||
Reference in New Issue
Block a user