From 0918b0b0e2e2e00292c610e7d6e720b96284ea96 Mon Sep 17 00:00:00 2001 From: Matt Simerson Date: Mon, 7 Oct 2024 11:59:22 -0700 Subject: [PATCH] fix(outbound): hook_delivered may contain an IP, so.. (#3413) check mx.from_dns and if hostname is there, use that. --- Changes.md | 2 ++ outbound/hmail.js | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Changes.md b/Changes.md index 2baae6105..76f7b2cd0 100644 --- a/Changes.md +++ b/Changes.md @@ -4,6 +4,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/). ### Unreleased +- fix(outbound): in outbound hook_delivered, when mx.exchange contains + an IP, use mx.from_dns - fix(bin/haraka): fix for finding path to config/docs/Plugins.md ### [3.0.5] - 2024-09-27 diff --git a/outbound/hmail.js b/outbound/hmail.js index 62472e55f..65626da9e 100644 --- a/outbound/hmail.js +++ b/outbound/hmail.js @@ -3,6 +3,7 @@ const events = require('node:events'); const fs = require('node:fs'); const dns = require('node:dns'); +const net = require('node:net'); const path = require('node:path'); const { Address } = require('address-rfc2821'); @@ -596,7 +597,13 @@ class HMailItem extends events.EventEmitter { processing_mail = false; if (success) { const reason = response.join(' '); - self.delivered(host, port, (mx.using_lmtp ? 'LMTP' : 'SMTP'), mx.exchange, + + let hostname = mx.exchange + if (net.isIP(hostname) && mx.from_dns && !net.isIP(mx.from_dns)) { + hostname = mx.from_dns + } + + self.delivered(host, port, (mx.using_lmtp ? 'LMTP' : 'SMTP'), hostname, reason, ok_recips, fail_recips, bounce_recips, secured, authenticated); } else {