Haraka 3.0.3 → 3.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.yaml +4 -9
- package/CONTRIBUTORS.md +11 -0
- package/Changes.md +1397 -1213
- package/Plugins.md +117 -105
- package/README.md +4 -13
- package/bin/haraka +198 -298
- package/config/auth_flat_file.ini +1 -0
- package/config/dhparams.pem +8 -0
- package/config/mail_from.is_resolvable.ini +4 -2
- package/config/me +1 -0
- package/config/outbound.ini +0 -2
- package/config/plugins +35 -36
- package/config/smtp.ini +1 -1
- package/config/smtp.json +17 -0
- package/config/tls.ini +2 -0
- package/config/tls_cert.pem +23 -0
- package/config/tls_key.pem +28 -0
- package/connection.js +46 -73
- package/contrib/bsd-rc.d/haraka +3 -1
- package/contrib/plugin2npm.sh +6 -36
- package/docs/CoreConfig.md +2 -2
- package/docs/Logging.md +7 -21
- package/docs/Outbound.md +104 -201
- package/docs/Plugins.md +2 -2
- package/docs/Transaction.md +59 -82
- package/docs/plugins/queue/smtp_proxy.md +5 -10
- package/docs/plugins/tls.md +37 -9
- package/endpoint.js +16 -13
- package/haraka.js +10 -14
- package/host_pool.js +5 -5
- package/http/html/index.html +6 -5
- package/line_socket.js +3 -4
- package/logger.js +44 -28
- package/outbound/client_pool.js +27 -23
- package/outbound/config.js +4 -6
- package/outbound/fsync_writestream.js +1 -1
- package/outbound/hmail.js +178 -218
- package/outbound/index.js +86 -99
- package/outbound/qfile.js +1 -1
- package/outbound/queue.js +51 -44
- package/outbound/timer_queue.js +3 -2
- package/outbound/tls.js +19 -7
- package/package.json +60 -51
- package/plugins/.eslintrc.yaml +0 -6
- package/plugins/auth/auth_base.js +4 -2
- package/plugins/auth/auth_proxy.js +14 -12
- package/plugins/auth/auth_vpopmaild.js +1 -1
- package/plugins/block_me.js +1 -1
- package/plugins/data.signatures.js +2 -4
- package/plugins/early_talker.js +2 -1
- package/plugins/mail_from.is_resolvable.js +65 -135
- package/plugins/queue/deliver.js +4 -5
- package/plugins/queue/lmtp.js +11 -12
- package/plugins/queue/qmail-queue.js +2 -2
- package/plugins/queue/quarantine.js +2 -2
- package/plugins/queue/rabbitmq.js +16 -17
- package/plugins/queue/smtp_forward.js +3 -3
- package/plugins/queue/smtp_proxy.js +10 -1
- package/plugins/queue/test.js +2 -2
- package/plugins/rcpt_to.host_list_base.js +5 -5
- package/plugins/rcpt_to.in_host_list.js +2 -2
- package/plugins/relay.js +6 -7
- package/plugins/reseed_rng.js +1 -1
- package/plugins/status.js +37 -33
- package/plugins/tls.js +2 -2
- package/plugins/xclient.js +3 -2
- package/plugins.js +50 -54
- package/run_tests +3 -30
- package/server.js +190 -190
- package/smtp_client.js +30 -23
- package/{tests → test}/config/plugins +0 -2
- package/{tests → test}/config/smtp.ini +3 -1
- package/test/config/tls/example.com/_.example.com.key +28 -0
- package/test/config/tls/example.com/example.com.crt +25 -0
- package/{tests/loud → test}/config/tls.ini +4 -2
- package/test/connection.js +302 -0
- package/test/endpoint.js +94 -0
- package/{tests → test}/fixtures/line_socket.js +1 -1
- package/{tests → test}/fixtures/util_hmailitem.js +19 -25
- package/{tests → test}/host_pool.js +42 -57
- package/test/logger.js +258 -0
- package/test/outbound/hmail.js +141 -0
- package/test/outbound/index.js +220 -0
- package/test/outbound/qfile.js +126 -0
- package/test/outbound_bounce_net_errors.js +142 -0
- package/{tests → test}/outbound_bounce_rfc3464.js +110 -122
- package/test/plugins/auth/auth_base.js +484 -0
- package/test/plugins/auth/auth_vpopmaild.js +83 -0
- package/test/plugins/early_talker.js +104 -0
- package/test/plugins/mail_from.is_resolvable.js +35 -0
- package/test/plugins/queue/smtp_forward.js +206 -0
- package/test/plugins/rcpt_to.host_list_base.js +122 -0
- package/test/plugins/rcpt_to.in_host_list.js +193 -0
- package/test/plugins/relay.js +303 -0
- package/test/plugins/status.js +130 -0
- package/test/plugins/tls.js +70 -0
- package/test/plugins.js +228 -0
- package/test/rfc1869.js +73 -0
- package/test/server.js +491 -0
- package/test/smtp_client.js +299 -0
- package/test/tls_socket.js +277 -0
- package/test/transaction.js +270 -0
- package/tls_socket.js +202 -252
- package/transaction.js +8 -23
- package/CONTRIBUTING.md +0 -1
- package/bin/dkimverify +0 -40
- package/config/access.domains +0 -13
- package/config/attachment.ctype.regex +0 -2
- package/config/attachment.filename.regex +0 -1
- package/config/avg.ini +0 -5
- package/config/bounce.ini +0 -15
- package/config/data.headers.ini +0 -61
- package/config/dkim/dkim_key_gen.sh +0 -78
- package/config/dkim_sign.ini +0 -4
- package/config/dkim_verify.ini +0 -7
- package/config/dnsbl.ini +0 -23
- package/config/greylist.ini +0 -43
- package/config/helo.checks.ini +0 -52
- package/config/messagesniffer.ini +0 -18
- package/config/spamassassin.ini +0 -56
- package/dkim.js +0 -614
- package/docs/plugins/avg.md +0 -35
- package/docs/plugins/bounce.md +0 -69
- package/docs/plugins/clamd.md +0 -147
- package/docs/plugins/esets.md +0 -8
- package/docs/plugins/greylist.md +0 -90
- package/docs/plugins/helo.checks.md +0 -135
- package/docs/plugins/messagesniffer.md +0 -163
- package/docs/plugins/spamassassin.md +0 -180
- package/outbound/mx_lookup.js +0 -70
- package/plugins/auth/auth_ldap.js +0 -3
- package/plugins/avg.js +0 -162
- package/plugins/backscatterer.js +0 -25
- package/plugins/bounce.js +0 -381
- package/plugins/clamd.js +0 -382
- package/plugins/data.uribl.js +0 -4
- package/plugins/dkim_sign.js +0 -395
- package/plugins/dkim_verify.js +0 -62
- package/plugins/dns_list_base.js +0 -221
- package/plugins/dnsbl.js +0 -146
- package/plugins/dnswl.js +0 -58
- package/plugins/esets.js +0 -71
- package/plugins/graph.js +0 -5
- package/plugins/greylist.js +0 -645
- package/plugins/helo.checks.js +0 -533
- package/plugins/messagesniffer.js +0 -381
- package/plugins/rcpt_to.ldap.js +0 -3
- package/plugins/rcpt_to.max_count.js +0 -24
- package/plugins/spamassassin.js +0 -384
- package/tests/config/dkim/example.com/dns +0 -29
- package/tests/config/dkim/example.com/private +0 -6
- package/tests/config/dkim/example.com/public +0 -4
- package/tests/config/dkim/example.com/selector +0 -1
- package/tests/config/dkim.private.key +0 -6
- package/tests/config/dkim_sign.ini +0 -4
- package/tests/config/helo.checks.ini +0 -52
- package/tests/connection.js +0 -327
- package/tests/endpoint.js +0 -128
- package/tests/fixtures/vm_harness.js +0 -59
- package/tests/logger.js +0 -327
- package/tests/outbound/hmail.js +0 -112
- package/tests/outbound/index.js +0 -324
- package/tests/outbound/qfile.js +0 -67
- package/tests/outbound_bounce_net_errors.js +0 -173
- package/tests/plugins/auth/auth_base.js +0 -463
- package/tests/plugins/auth/auth_vpopmaild.js +0 -91
- package/tests/plugins/bounce.js +0 -307
- package/tests/plugins/clamd.js +0 -224
- package/tests/plugins/deprecated/relay_acl.js +0 -140
- package/tests/plugins/deprecated/relay_all.js +0 -59
- package/tests/plugins/dkim_sign.js +0 -315
- package/tests/plugins/dkim_signer.js +0 -108
- package/tests/plugins/dns_list_base.js +0 -259
- package/tests/plugins/dnsbl.js +0 -101
- package/tests/plugins/early_talker.js +0 -115
- package/tests/plugins/greylist.js +0 -58
- package/tests/plugins/helo.checks.js +0 -525
- package/tests/plugins/mail_from.is_resolvable.js +0 -116
- package/tests/plugins/queue/smtp_forward.js +0 -221
- package/tests/plugins/rcpt_to.host_list_base.js +0 -132
- package/tests/plugins/rcpt_to.in_host_list.js +0 -218
- package/tests/plugins/relay.js +0 -339
- package/tests/plugins/spamassassin.js +0 -171
- package/tests/plugins/status.js +0 -138
- package/tests/plugins/tls.js +0 -84
- package/tests/plugins.js +0 -247
- package/tests/rfc1869.js +0 -61
- package/tests/server.js +0 -510
- package/tests/smtp_client/auth.js +0 -105
- package/tests/smtp_client/basic.js +0 -101
- package/tests/smtp_client.js +0 -80
- package/tests/tls_socket.js +0 -333
- package/tests/transaction.js +0 -284
- /package/docs/{plugins → deprecated}/dkim_sign.md +0 -0
- /package/docs/{plugins → deprecated}/dkim_verify.md +0 -0
- /package/docs/{plugins → deprecated}/dnsbl.md +0 -0
- /package/docs/{plugins → deprecated}/dnswl.md +0 -0
- /package/{tests → test}/.eslintrc.yaml +0 -0
- /package/{tests → test}/config/auth_flat_file.ini +0 -0
- /package/{tests → test}/config/dhparams.pem +0 -0
- /package/{tests → test}/config/host_list +0 -0
- /package/{tests → test}/config/outbound_tls_cert.pem +0 -0
- /package/{tests → test}/config/outbound_tls_key.pem +0 -0
- /package/{tests → test}/config/smtp_forward.ini +0 -0
- /package/{tests → test}/config/tls/ec.pem +0 -0
- /package/{tests → test}/config/tls/haraka.local.pem +0 -0
- /package/{tests → test}/config/tls/mismatched.pem +0 -0
- /package/{tests → test}/config/tls_cert.pem +0 -0
- /package/{tests → test}/config/tls_key.pem +0 -0
- /package/{tests → test}/fixtures/todo_qfile.txt +0 -0
- /package/{tests → test}/installation/config/test-plugin-flat +0 -0
- /package/{tests → test}/installation/config/test-plugin.ini +0 -0
- /package/{tests → test}/installation/config/tls.ini +0 -0
- /package/{tests → test}/installation/node_modules/load_first/index.js +0 -0
- /package/{tests → test}/installation/node_modules/load_first/package.json +0 -0
- /package/{tests → test}/installation/node_modules/test-plugin/config/test-plugin-flat +0 -0
- /package/{tests → test}/installation/node_modules/test-plugin/config/test-plugin.ini +0 -0
- /package/{tests → test}/installation/node_modules/test-plugin/package.json +0 -0
- /package/{tests → test}/installation/node_modules/test-plugin/test-plugin.js +0 -0
- /package/{tests → test}/installation/plugins/base_plugin.js +0 -0
- /package/{tests → test}/installation/plugins/folder_plugin/index.js +0 -0
- /package/{tests → test}/installation/plugins/folder_plugin/package.json +0 -0
- /package/{tests → test}/installation/plugins/inherits.js +0 -0
- /package/{tests → test}/installation/plugins/load_first.js +0 -0
- /package/{tests → test}/installation/plugins/plugin.js +0 -0
- /package/{tests → test}/installation/plugins/tls.js +0 -0
- /package/{tests → test}/loud/config/dhparams.pem +0 -0
- /package/{tests → test}/loud/config/tls/goobered.pem +0 -0
- /package/{tests → test/loud}/config/tls.ini +0 -0
- /package/{tests → test}/mail_specimen/base64-root-part.txt +0 -0
- /package/{tests → test}/mail_specimen/varied-fold-lengths-preserve-data.txt +0 -0
- /package/{tests → test}/queue/1507509981169_1507509981169_0_61403_e0Y0Ym_1_fixed +0 -0
- /package/{tests → test}/queue/1507509981169_1507509981169_0_61403_e0Y0Ym_1_haraka +0 -0
- /package/{tests → test}/queue/1508269674999_1508269674999_0_34002_socVUF_1_haraka +0 -0
- /package/{tests → test}/queue/1508455115683_1508455115683_0_90253_9Q4o4V_1_haraka +0 -0
- /package/{tests → test}/queue/multibyte +0 -0
- /package/{tests → test}/queue/plain +0 -0
- /package/{tests → test}/queue/zero-length +0 -0
- /package/{tests → test}/test-queue/delete-me +0 -0
package/logger.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
// Log class
|
|
3
3
|
|
|
4
|
-
const util = require('util');
|
|
5
|
-
const tty = require('tty');
|
|
4
|
+
const util = require('node:util');
|
|
5
|
+
const tty = require('node:tty');
|
|
6
6
|
|
|
7
7
|
const config = require('haraka-config');
|
|
8
8
|
const constants = require('haraka-constants');
|
|
9
9
|
|
|
10
10
|
let plugins;
|
|
11
|
-
let connection;
|
|
12
|
-
let outbound;
|
|
13
11
|
|
|
14
12
|
const regex = /(^$|[ ="\\])/;
|
|
15
13
|
const escape_replace_regex = /["\\]/g;
|
|
@@ -48,6 +46,7 @@ logger.levels = {
|
|
|
48
46
|
ALERT: 1,
|
|
49
47
|
EMERG: 0,
|
|
50
48
|
}
|
|
49
|
+
const level_names = Object.keys(logger.levels)
|
|
51
50
|
|
|
52
51
|
for (const le in logger.levels) {
|
|
53
52
|
logger.levels[`LOG${le}`] = logger.levels[le];
|
|
@@ -64,6 +63,7 @@ logger.loglevel = logger.levels.WARN;
|
|
|
64
63
|
logger.format = logger.formats.DEFAULT;
|
|
65
64
|
logger.timestamps = false;
|
|
66
65
|
logger.deferred_logs = [];
|
|
66
|
+
logger.name = 'logger'
|
|
67
67
|
|
|
68
68
|
logger.colors = {
|
|
69
69
|
"DATA" : "green",
|
|
@@ -235,14 +235,16 @@ logger._init_timestamps = function () {
|
|
|
235
235
|
|
|
236
236
|
logger._init();
|
|
237
237
|
|
|
238
|
-
logger.log_if_level = (level, key,
|
|
239
|
-
if (logger.loglevel < logger[key])
|
|
238
|
+
logger.log_if_level = (level, key, origin) => function () {
|
|
239
|
+
if (logger.loglevel < logger[key]) return;
|
|
240
|
+
|
|
240
241
|
let logobj = {
|
|
241
242
|
level,
|
|
242
243
|
uuid: '-',
|
|
243
|
-
origin: (
|
|
244
|
+
origin: (origin || 'core'),
|
|
244
245
|
message: ''
|
|
245
246
|
};
|
|
247
|
+
|
|
246
248
|
for (const data of arguments) {
|
|
247
249
|
if (typeof data !== 'object') {
|
|
248
250
|
logobj.message += (data);
|
|
@@ -251,24 +253,17 @@ logger.log_if_level = (level, key, plugin) => function () {
|
|
|
251
253
|
if (!data) continue;
|
|
252
254
|
|
|
253
255
|
// if the object is a connection, add the connection id
|
|
254
|
-
if (data
|
|
256
|
+
if (data.constructor?.name === 'Connection') {
|
|
255
257
|
logobj.uuid = data.uuid;
|
|
256
258
|
if (data.tran_count > 0) logobj.uuid += `.${data.tran_count}`;
|
|
257
259
|
}
|
|
258
260
|
else if (data instanceof plugins.Plugin) {
|
|
259
261
|
logobj.origin = data.name;
|
|
260
262
|
}
|
|
261
|
-
else if (data
|
|
263
|
+
else if (Object.hasOwn(data, 'name')) { // outbound
|
|
262
264
|
logobj.origin = data.name;
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
logobj.origin = 'outbound';
|
|
266
|
-
if (data.todo) {
|
|
267
|
-
if (data.todo.uuid) logobj.uuid = data.todo.uuid;
|
|
268
|
-
if (data.todo.client_uuid) { // dirty hack
|
|
269
|
-
logobj.origin = `outbound] [${data.todo.client_uuid}`;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
265
|
+
if (Object.hasOwn(data, 'uuid')) logobj.uuid = data.uuid;
|
|
266
|
+
if (data.todo?.uuid) logobj.uuid = data.todo.uuid; // outbound/hmail
|
|
272
267
|
}
|
|
273
268
|
else if (
|
|
274
269
|
logger.format === logger.formats.LOGFMT && data.constructor === Object) {
|
|
@@ -278,7 +273,7 @@ logger.log_if_level = (level, key, plugin) => function () {
|
|
|
278
273
|
logger.format === logger.formats.JSON && data.constructor === Object) {
|
|
279
274
|
logobj = Object.assign(logobj, data);
|
|
280
275
|
}
|
|
281
|
-
else if (
|
|
276
|
+
else if (Object.hasOwn(data, 'uuid')) { // outbound/client_pool
|
|
282
277
|
logobj.uuid = data.uuid;
|
|
283
278
|
}
|
|
284
279
|
else if (data.constructor === Object) {
|
|
@@ -313,14 +308,37 @@ logger.log_if_level = (level, key, plugin) => function () {
|
|
|
313
308
|
return true;
|
|
314
309
|
}
|
|
315
310
|
|
|
316
|
-
logger.add_log_methods = (object,
|
|
317
|
-
if (!object) return
|
|
318
|
-
if (typeof(object) !== 'object') return;
|
|
311
|
+
logger.add_log_methods = (object, logName) => {
|
|
312
|
+
if (!object) return
|
|
319
313
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
314
|
+
if (typeof object === 'function') {
|
|
315
|
+
// add logging methods to class prototypes (Connection, Plugin, etc.)
|
|
316
|
+
|
|
317
|
+
for (const level of level_names.map(l => l.toLowerCase())) {
|
|
318
|
+
object.prototype[`log${level}`] = (function (level) {
|
|
319
|
+
return function () {
|
|
320
|
+
logger[level].apply(logger, [ this, ...arguments ]);
|
|
321
|
+
};
|
|
322
|
+
})(`log${level}`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
else if (typeof object === 'object') {
|
|
326
|
+
// add logging methods to objects
|
|
327
|
+
|
|
328
|
+
for (const level of level_names) {
|
|
329
|
+
// objects gets log function names: loginfo, logwarn, logdebug, ...
|
|
330
|
+
const fnNames = [`log${level.toLowerCase()}`]
|
|
331
|
+
|
|
332
|
+
// logger also gets short names
|
|
333
|
+
if (Object.hasOwn(object, 'name') && object.name === 'logger') {
|
|
334
|
+
fnNames.push(level.toLowerCase())
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
for (const fnName of fnNames) {
|
|
338
|
+
if (Object.hasOwn(object, fnName)) continue; // already added
|
|
339
|
+
object[fnName] = logger.log_if_level(level, `LOG${level}`, logName);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
324
342
|
}
|
|
325
343
|
}
|
|
326
344
|
|
|
@@ -328,5 +346,3 @@ logger.add_log_methods(logger);
|
|
|
328
346
|
|
|
329
347
|
// load these down here so it sees all the logger methods compiled above
|
|
330
348
|
plugins = require('./plugins');
|
|
331
|
-
connection = require('./connection');
|
|
332
|
-
outbound = require('./outbound');
|
package/outbound/client_pool.js
CHANGED
|
@@ -1,48 +1,52 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const utils
|
|
3
|
+
const utils = require('haraka-utils');
|
|
4
|
+
const net_utils = require('haraka-net-utils')
|
|
4
5
|
|
|
5
|
-
const
|
|
6
|
-
const logger
|
|
6
|
+
const tls_socket = require('../tls_socket');
|
|
7
|
+
const logger = require('../logger');
|
|
8
|
+
const obc = require('./config');
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
exports.name = 'outbound'
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
// Get a socket for the given attributes.
|
|
13
|
+
exports.get_client = function (mx, callback) {
|
|
14
|
+
const socketArgs = mx.path ? { path: mx.path } : { port: mx.port, host: mx.exchange, localAddress: mx.bind };
|
|
15
|
+
|
|
16
|
+
const socket = tls_socket.connect(socketArgs);
|
|
17
|
+
net_utils.add_line_processor(socket);
|
|
11
18
|
|
|
12
|
-
|
|
13
|
-
socket.name = name;
|
|
19
|
+
socket.name = `outbound::${JSON.stringify(socketArgs)}`;
|
|
14
20
|
socket.__uuid = utils.uuid();
|
|
15
21
|
socket.setTimeout(obc.cfg.connect_timeout * 1000);
|
|
16
|
-
|
|
22
|
+
|
|
23
|
+
logger.debug(exports, `created ${socket.name}`, { uuid: socket.__uuid });
|
|
24
|
+
|
|
17
25
|
socket.once('connect', () => {
|
|
18
26
|
socket.removeAllListeners('error'); // these get added after callback
|
|
19
27
|
socket.removeAllListeners('timeout');
|
|
20
28
|
callback(null, socket);
|
|
21
|
-
})
|
|
29
|
+
})
|
|
30
|
+
|
|
22
31
|
socket.once('error', err => {
|
|
23
32
|
socket.end();
|
|
24
33
|
socket.removeAllListeners();
|
|
25
34
|
socket.destroy();
|
|
26
|
-
callback(
|
|
27
|
-
})
|
|
35
|
+
callback(err.message, null);
|
|
36
|
+
})
|
|
37
|
+
|
|
28
38
|
socket.once('timeout', () => {
|
|
29
39
|
socket.end();
|
|
30
40
|
socket.removeAllListeners();
|
|
31
41
|
socket.destroy();
|
|
32
|
-
callback(`
|
|
33
|
-
})
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
// Get a socket for the given attributes.
|
|
38
|
-
exports.get_client = (port = 25, host = 'localhost', local_addr, is_unix_socket, callback) => {
|
|
39
|
-
const name = `outbound::${port}:${host}:${local_addr}`;
|
|
40
|
-
|
|
41
|
-
_create_socket(name, port, host, local_addr, is_unix_socket, callback)
|
|
42
|
+
callback(`connection timed out to ${socket.name}`, null);
|
|
43
|
+
})
|
|
42
44
|
}
|
|
43
45
|
|
|
44
|
-
exports.release_client = (socket,
|
|
45
|
-
|
|
46
|
+
exports.release_client = (socket, mx) => {
|
|
47
|
+
let logMsg = `release_client: ${socket.name}`
|
|
48
|
+
if (mx.bind) logMsg += ` from ${mx.bind}`
|
|
49
|
+
logger.debug(exports, logMsg);
|
|
46
50
|
socket.removeAllListeners();
|
|
47
51
|
socket.destroy();
|
|
48
52
|
}
|
package/outbound/config.js
CHANGED
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
const config = require('haraka-config');
|
|
4
4
|
const logger = require('../logger');
|
|
5
5
|
|
|
6
|
+
exports.name = 'outbound/config'
|
|
7
|
+
|
|
6
8
|
function load_config () {
|
|
7
9
|
const cfg = exports.cfg = config.get('outbound.ini', {
|
|
8
10
|
booleans: [
|
|
9
11
|
'-disabled',
|
|
10
12
|
'-always_split',
|
|
11
13
|
'+enable_tls',
|
|
12
|
-
'-ipv6_enabled',
|
|
13
14
|
'-local_mx_ok',
|
|
14
15
|
],
|
|
15
16
|
}, () => {
|
|
@@ -35,9 +36,6 @@ function load_config () {
|
|
|
35
36
|
if (!cfg.connect_timeout) {
|
|
36
37
|
cfg.connect_timeout = 30;
|
|
37
38
|
}
|
|
38
|
-
if (!cfg.ipv6_enabled && config.get('outbound.ipv6_enabled')) {
|
|
39
|
-
cfg.ipv6_enabled = true;
|
|
40
|
-
}
|
|
41
39
|
if (!cfg.received_header) {
|
|
42
40
|
cfg.received_header = config.get('outbound.received_header') || 'Haraka outbound';
|
|
43
41
|
}
|
|
@@ -64,8 +62,8 @@ exports.set_temp_fail_intervals = function () {
|
|
|
64
62
|
|
|
65
63
|
// Helpful error function in case of parsing failure
|
|
66
64
|
function error (i, msg) {
|
|
67
|
-
logger.
|
|
68
|
-
logger.
|
|
65
|
+
logger.error(exports, `temp_fail_intervals syntax error parsing element ${i}: ${msg}`);
|
|
66
|
+
logger.warn(exports, 'Setting outbound temp_fail_intervals to old defaults');
|
|
69
67
|
set_old_defaults();
|
|
70
68
|
}
|
|
71
69
|
|