forwardemail / forwardemail/forwardemail.net

No allowlist for links referenced inside outbound message bodies

Open
#587 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
JavaScript
Stars
1.7k
Forks
203
PR merge metrics
No merged PRs in 30d

Description

Domains.allowlist / Domains.denylist (app/models/domains.js, lines 352 to 353) are only consulted in helpers/get-recipients.js, and only against inbound connection metadata (remoteAddress, resolvedClientHostname, resolvedRootClientHostname, originalFromAddress). There's no equivalent way to allowlist a specific hostname referenced inside an outbound message body against the Cloudflare Family/Security DNS check in Emails.queue().

Impact: a customer whose legitimate outbound content links to a domain Cloudflare's Family DNS miscategorizes (e.g. erowid.org, a harm-reduction resource, bundled in with adult
content) has no way to send that mail even knowingly, short of removing the link entirely.

Suggested fix: add a domain-scoped or account-scoped link-hostname allowlist, checked before the throw in Emails.queue()'s outbound phishing/malware/adult-content block.

Contributor guide

Open the contributing guide

Research direction

Read app/models/domains.js lines 352-353 and helpers/get-recipients.js to understand the existing allowlist and denylist behavior, then trace Emails.queue() to the outbound phishing/malware/adult-content check. Done means a domain-scoped or account-scoped hostname allowlist can be applied to links in outbound message bodies before that check rejects the message.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
backend, security
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.