Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CONTRIBUTORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

This handcrafted artisanal software is brought to you by:

| <img height="80" src="https://avatars.githubusercontent.com/u/261635?v=4"><br><a href="https://github.com/msimerson">msimerson</a> (<a href="https://github.com/haraka/Haraka/commits?author=msimerson">1643</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/662371?v=4"><br><a href="https://github.com/baudehlo">baudehlo</a> (<a href="https://github.com/haraka/Haraka/commits?author=baudehlo">969</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/550490?v=4"><br><a href="https://github.com/smfreegard">smfreegard</a> (<a href="https://github.com/haraka/Haraka/commits?author=smfreegard">794</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/959600?v=4"><br><a href="https://github.com/godsflaw">godsflaw</a> (<a href="https://github.com/haraka/Haraka/commits?author=godsflaw">171</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/934254?v=4"><br><a href="https://github.com/analogic">analogic</a> (<a href="https://github.com/haraka/Haraka/commits?author=analogic">42</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1674289?v=4"><br><a href="https://github.com/Dexus">Dexus</a> (<a href="https://github.com/haraka/Haraka/commits?author=Dexus">42</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/82041?v=4"><br><a href="https://github.com/gramakri">gramakri</a> (<a href="https://github.com/haraka/Haraka/commits?author=gramakri">39</a>)|
| <img height="80" src="https://avatars.githubusercontent.com/u/261635?v=4"><br><a href="https://github.com/msimerson">msimerson</a> (<a href="https://github.com/haraka/Haraka/commits?author=msimerson">1643</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/662371?v=4"><br><a href="https://github.com/baudehlo">baudehlo</a> (<a href="https://github.com/haraka/Haraka/commits?author=baudehlo">969</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/550490?v=4"><br><a href="https://github.com/smfreegard">smfreegard</a> (<a href="https://github.com/haraka/Haraka/commits?author=smfreegard">794</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/959600?v=4"><br><a href="https://github.com/godsflaw">godsflaw</a> (<a href="https://github.com/haraka/Haraka/commits?author=godsflaw">171</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/934254?v=4"><br><a href="https://github.com/analogic">analogic</a> (<a href="https://github.com/haraka/Haraka/commits?author=analogic">42</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1674289?v=4"><br><a href="https://github.com/Dexus">Dexus</a> (<a href="https://github.com/haraka/Haraka/commits?author=Dexus">42</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/82041?v=4"><br><a href="https://github.com/gramakri">gramakri</a> (<a href="https://github.com/haraka/Haraka/commits?author=gramakri">40</a>)|
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| <img height="80" src="https://avatars.githubusercontent.com/u/203240?v=4"><br><a href="https://github.com/lnedry">lnedry</a> (<a href="https://github.com/haraka/Haraka/commits?author=lnedry">26</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/748075?v=4"><br><a href="https://github.com/celesteking">celesteking</a> (<a href="https://github.com/haraka/Haraka/commits?author=celesteking">21</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/791972?v=4"><br><a href="https://github.com/lpatters">lpatters</a> (<a href="https://github.com/haraka/Haraka/commits?author=lpatters">20</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/366268?v=4"><br><a href="https://github.com/chazomaticus">chazomaticus</a> (<a href="https://github.com/haraka/Haraka/commits?author=chazomaticus">19</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/123708?v=4"><br><a href="https://github.com/arlolra">arlolra</a> (<a href="https://github.com/haraka/Haraka/commits?author=arlolra">16</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/271024?v=4"><br><a href="https://github.com/hayesgm">hayesgm</a> (<a href="https://github.com/haraka/Haraka/commits?author=hayesgm">16</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1573133?v=4"><br><a href="https://github.com/gauravaror">gauravaror</a> (<a href="https://github.com/haraka/Haraka/commits?author=gauravaror">14</a>)|
| <img height="80" src="https://avatars.githubusercontent.com/u/260607?v=4"><br><a href="https://github.com/typingArtist">typingArtist</a> (<a href="https://github.com/haraka/Haraka/commits?author=typingArtist">14</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/11343494?v=4"><br><a href="https://github.com/superman20">superman20</a> (<a href="https://github.com/haraka/Haraka/commits?author=superman20">13</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/158380?v=4"><br><a href="https://github.com/darkpixel">darkpixel</a> (<a href="https://github.com/haraka/Haraka/commits?author=darkpixel">12</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/9887966?v=4"><br><a href="https://github.com/KingNoosh">KingNoosh</a> (<a href="https://github.com/haraka/Haraka/commits?author=KingNoosh">11</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/5229495?v=4"><br><a href="https://github.com/tstonis">tstonis</a> (<a href="https://github.com/haraka/Haraka/commits?author=tstonis">10</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/1746394?v=4"><br><a href="https://github.com/wltsmrz">wltsmrz</a> (<a href="https://github.com/haraka/Haraka/commits?author=wltsmrz">9</a>)| <img height="80" src="https://avatars.githubusercontent.com/u/218741413?v=4"><br><a href="https://github.com/SamuelGrave">SamuelGrave</a> (<a href="https://github.com/haraka/Haraka/commits?author=SamuelGrave">9</a>)|
Expand Down
21 changes: 15 additions & 6 deletions Changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).

### Unreleased

- change: finish renaming dot_stuffing to dot_stuffed
### [3.1.2] - 2026-01-02

- smtp_forward: [domain selector] : user + domain #3501
- rspamd: revert to older plugin version #3493
- feat: push to a 'release' branch with package-lock.json #3474
- change: finish renaming dot_stuffing to dot_stuffed #3473
- deps: require node 20+
- deps: bump all deps to latest
- deps: bump message-stream to 1.3.0, add some missing ^ chars
- dep(tmp): deleted, only used in attachment plugin
- feat(outbound): configurable outbound IPv4/IPv6 preference using `inet_prefer`
- feat(outbound): deferred hook is now passed the failed recips and mx #3505
- feat(rabbitmq_amqplib): configurable optional exchange arguments #3472
- feat(rabbitmq_amqplib): configurable message priority #3472
- feat(outbound): configurable outbound IPv4/IPv6 preference using `inet_prefer`
- fix: auth_proxy TLS upgrade fix #3514
- doc(Plugins): add save-sent
- outbound: deferred hook is now passed the failed recips and mx #3505
- style: run prettier in repo
- fix: auth_proxy TLS upgrade works again #3514
- doc(Plugins): add save-sent #3497
- doc(README): update DKIM plugin link, #3490
- style: run prettier in repo #3504

### [3.1.1] - 2025-05-19

Expand Down Expand Up @@ -1740,3 +1748,4 @@ config files.
[0.2]: https://github.com/haraka/Haraka/releases/tag/v0.2
[3.1.1]: https://github.com/haraka/Haraka/releases/tag/v3.1.1
[3.1.0]: https://github.com/haraka/Haraka/releases/tag/v3.1.0
[3.1.2]: https://github.com/haraka/Haraka/releases/tag/v3.1.2
6 changes: 3 additions & 3 deletions outbound/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ function load_config() {
},
).main)

if (!cfg.inet_prefer) cfg.inet_prefer = 'default';
if (!cfg.inet_prefer) cfg.inet_prefer = 'default'
if (!cfg.inet_prefer.match(/^(v4|v6|default)$/)) {
logger.warn(exports, `inet_prefer is set to an invalid value: ${cfg.inet_prefer}`);
cfg.inet_prefer = 'default';
logger.warn(exports, `inet_prefer is set to an invalid value: ${cfg.inet_prefer}`)
cfg.inet_prefer = 'default'
}

// legacy config file support. Remove in Haraka 4.0
Expand Down
16 changes: 8 additions & 8 deletions outbound/hmail.js
Original file line number Diff line number Diff line change
Expand Up @@ -287,16 +287,16 @@ class HMailItem extends events.EventEmitter {
switch (obc.cfg.inet_prefer) {
case 'v4':
this.mxlist = [
...this.mxlist.filter(mx => !net.isIP(mx.exchange) || net.isIPv4(mx.exchange)),
...this.mxlist.filter(mx => net.isIPv6(mx.exchange))
];
break;
...this.mxlist.filter((mx) => !net.isIP(mx.exchange) || net.isIPv4(mx.exchange)),
...this.mxlist.filter((mx) => net.isIPv6(mx.exchange)),
]
break
case 'v6':
this.mxlist = [
...this.mxlist.filter(mx => !net.isIP(mx.exchange) || net.isIPv6(mx.exchange)),
...this.mxlist.filter(mx => net.isIPv4(mx.exchange))
];
break;
...this.mxlist.filter((mx) => !net.isIP(mx.exchange) || net.isIPv6(mx.exchange)),
...this.mxlist.filter((mx) => net.isIPv4(mx.exchange)),
]
break
}

this.try_deliver()
Expand Down
39 changes: 19 additions & 20 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@
"server",
"email"
],
"version": "3.1.1",
"version": "3.1.2",
"homepage": "http://haraka.github.io",
"repository": {
"type": "git",
"url": "git://github.com/haraka/Haraka.git"
},
"main": "haraka.js",
"engines": {
"node": ">=18"
"node": ">=20"
},
"dependencies": {
"address-rfc2821": "^2.1.3",
Expand All @@ -27,19 +27,19 @@
"haraka-config": "^1.4.2",
"haraka-constants": "^1.0.7",
"haraka-dsn": "^1.1.0",
"haraka-email-message": "^1.2.5",
"haraka-message-stream": "^1.3.1",
"haraka-email-message": "^1.2.6",
"haraka-message-stream": "^1.3.2",
"haraka-net-utils": "^1.7.2",
"haraka-notes": "^1.1.1",
"haraka-plugin-redis": "^2.0.10",
"haraka-plugin-redis": "^2.0.11",
"haraka-results": "^2.2.6",
"haraka-tld": "^1.2.4",
"haraka-utils": "^1.1.4",
"ipaddr.js": "~2.2.0",
"node-gyp": "^11.5.0",
"nopt": "^8.1.0",
"ipaddr.js": "~2.3.0",
"node-gyp": "^12.1.0",
"nopt": "^9.0.0",
"npid": "~0.4.0",
"redis": "~5.9.0",
"redis": "~5.10.0",
"semver": "^7.7.3",
"sockaddr": "^1.0.1",
"sprintf-js": "~1.1.3"
Expand All @@ -50,44 +50,43 @@
"haraka-plugin-asn": "^2.0.5",
"haraka-plugin-attachment": "^1.1.5",
"haraka-plugin-avg": "^1.1.0",
"haraka-plugin-bounce": "^2.0.1",
"haraka-plugin-bounce": "^2.1.1",
"haraka-plugin-clamd": "^1.0.2",
"haraka-plugin-dcc": "^1.0.3",
"haraka-plugin-dkim": "^1.0.11",
"haraka-plugin-dns-list": "^1.2.4",
"haraka-plugin-early_talker": "^1.0.2",
"haraka-plugin-elasticsearch": "^8.1.5",
"haraka-plugin-esets": "^1.0.1",
"haraka-plugin-fcrdns": "^1.1.1",
"haraka-plugin-fcrdns": "^1.1.2",
"haraka-plugin-geoip": "^1.1.1",
"haraka-plugin-graph": "^1.0.5",
"haraka-plugin-greylist": "^1.0.1",
"haraka-plugin-headers": "^1.0.6",
"haraka-plugin-helo.checks": "^1.0.3",
"haraka-plugin-karma": "^2.1.7",
"haraka-plugin-known-senders": "^1.1.2",
"haraka-plugin-helo.checks": "^1.1.0",
"haraka-plugin-karma": "^2.1.8",
"haraka-plugin-known-senders": "^1.1.3",
"haraka-plugin-limit": "^1.2.7",
"haraka-plugin-mail_from.is_resolvable": "^1.1.0",
"haraka-plugin-messagesniffer": "^1.0.1",
"haraka-plugin-p0f": "^1.0.11",
"haraka-plugin-qmail-deliverable": "^1.2.5",
"haraka-plugin-recipient-routes": "^1.3.1",
"haraka-plugin-relay": "^1.0.1",
"haraka-plugin-rspamd": "^1.3.3",
"haraka-plugin-rspamd": "^1.4.2",
"haraka-plugin-spamassassin": "^1.0.3",
"haraka-plugin-spf": "^1.2.10",
"haraka-plugin-syslog": "^1.0.7",
"haraka-plugin-uribl": "^1.0.10",
"haraka-plugin-watch": "^2.0.8",
"@techteamer/ocsp": "^1.0.1",
"tmp": "~0.2.5"
"@techteamer/ocsp": "^1.0.1"
},
"devDependencies": {
"@haraka/eslint-config": "^2.0.3",
"haraka-test-fixtures": "^1.3.10",
"mocha": "^11.7.4",
"mocha": "^11.7.5",
"mock-require": "^3.0.3",
"nodemailer": "^7.0.9"
"nodemailer": "^7.0.12"
},
"bugs": {
"mail": "[email protected]",
Expand All @@ -113,4 +112,4 @@
"printWidth": 120,
"semi": false
}
}
}
Loading