feat: privacy mode

Adds support for hiding IP addresses & hostnames associated with clients sending
authenticated mail in to Postal over SMTP and HTTP
This commit is contained in:
Adam Cooke
2024-02-07 09:45:09 +00:00
parent f05c2e4503
commit 15f9671b66
9 changed files with 141 additions and 59 deletions
+48
View File
@@ -0,0 +1,48 @@
# frozen_string_literal: true
require "rails_helper"
describe Postal::ReceivedHeader do
before do
allow(Resolv::DNS).to receive(:open).and_return("hostname.com")
end
describe ".generate" do
context "when server is nil" do
it "returns the correct string" do
result = described_class.generate(nil, "testhelo", "1.1.1.1", :smtp)
expect(result).to eq "from testhelo (hostname.com [1.1.1.1]) " \
"by #{Postal.config.dns.smtp_server_hostname} " \
"with SMTP; #{Time.now.utc.rfc2822}"
end
end
context "when server is provided with privacy_mode=true" do
it "returns the correct string" do
server = Server.new(privacy_mode: true)
result = described_class.generate(server, "testhelo", "1.1.1.1", :smtp)
expect(result).to eq "by #{Postal.config.dns.smtp_server_hostname} " \
"with SMTP; #{Time.now.utc.rfc2822}"
end
end
context "when server is provided with privacy_mode=false" do
it "returns the correct string" do
server = Server.new(privacy_mode: false)
result = described_class.generate(server, "testhelo", "1.1.1.1", :smtp)
expect(result).to eq "from testhelo (hostname.com [1.1.1.1]) " \
"by #{Postal.config.dns.smtp_server_hostname} " \
"with SMTP; #{Time.now.utc.rfc2822}"
end
end
context "when type is http" do
it "returns the correct string" do
result = described_class.generate(nil, "web-ui", "1.1.1.1", :http)
expect(result).to eq "from web-ui (hostname.com [1.1.1.1]) " \
"by #{Postal.config.web.host} " \
"with HTTP; #{Time.now.utc.rfc2822}"
end
end
end
end