مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2025-12-01 05:43:04 +00:00
refactor: move lib/postal/received_header to app/lib/received_header
هذا الالتزام موجود في:
30
app/lib/received_header.rb
Normal file
30
app/lib/received_header.rb
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class ReceivedHeader
|
||||||
|
|
||||||
|
OUR_HOSTNAMES = {
|
||||||
|
smtp: Postal.config.dns.smtp_server_hostname,
|
||||||
|
http: Postal.config.web.host
|
||||||
|
}.freeze
|
||||||
|
|
||||||
|
class << self
|
||||||
|
|
||||||
|
def generate(server, helo, ip_address, method)
|
||||||
|
our_hostname = OUR_HOSTNAMES[method]
|
||||||
|
if our_hostname.nil?
|
||||||
|
raise Error, "`method` is invalid (must be one of #{OUR_HOSTNAMES.join(', ')})"
|
||||||
|
end
|
||||||
|
|
||||||
|
header = "by #{our_hostname} with #{method.to_s.upcase}; #{Time.now.utc.rfc2822}"
|
||||||
|
|
||||||
|
if server.nil? || server.privacy_mode == false
|
||||||
|
hostname = DNSResolver.local.ip_to_hostname(ip_address)
|
||||||
|
header = "from #{helo} (#{hostname} [#{ip_address}]) #{header}"
|
||||||
|
end
|
||||||
|
|
||||||
|
header
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -366,8 +366,8 @@ module SMTPServer
|
|||||||
@headers = {}
|
@headers = {}
|
||||||
@receiving_headers = true
|
@receiving_headers = true
|
||||||
|
|
||||||
received_header = Postal::ReceivedHeader.generate(@credential&.server, @helo_name, @ip_address, :smtp)
|
received_header = ReceivedHeader.generate(@credential&.server, @helo_name, @ip_address, :smtp)
|
||||||
.force_encoding("BINARY")
|
.force_encoding("BINARY")
|
||||||
|
|
||||||
@data << "Received: #{received_header}\r\n"
|
@data << "Received: #{received_header}\r\n"
|
||||||
@headers["received"] = [received_header]
|
@headers["received"] = [received_header]
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ class IncomingMessagePrototype
|
|||||||
content: attachment[:data]
|
content: attachment[:data]
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
mail.header["Received"] = Postal::ReceivedHeader.generate(@server, @source_type, @ip, :http)
|
mail.header["Received"] = ReceivedHeader.generate(@server, @source_type, @ip, :http)
|
||||||
mail.to_s
|
mail.to_s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ class OutgoingMessagePrototype
|
|||||||
content: attachment[:data]
|
content: attachment[:data]
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
mail.header["Received"] = Postal::ReceivedHeader.generate(@server, @source_type, @ip, :http)
|
mail.header["Received"] = ReceivedHeader.generate(@server, @source_type, @ip, :http)
|
||||||
mail.message_id = "<#{@message_id}>"
|
mail.message_id = "<#{@message_id}>"
|
||||||
mail.to_s
|
mail.to_s
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
module Postal
|
|
||||||
class ReceivedHeader
|
|
||||||
|
|
||||||
OUR_HOSTNAMES = {
|
|
||||||
smtp: Postal.config.dns.smtp_server_hostname,
|
|
||||||
http: Postal.config.web.host
|
|
||||||
}.freeze
|
|
||||||
|
|
||||||
class << self
|
|
||||||
|
|
||||||
def generate(server, helo, ip_address, method)
|
|
||||||
our_hostname = OUR_HOSTNAMES[method]
|
|
||||||
if our_hostname.nil?
|
|
||||||
raise Error, "`method` is invalid (must be one of #{OUR_HOSTNAMES.join(', ')})"
|
|
||||||
end
|
|
||||||
|
|
||||||
header = "by #{our_hostname} with #{method.to_s.upcase}; #{Time.now.utc.rfc2822}"
|
|
||||||
|
|
||||||
if server.nil? || server.privacy_mode == false
|
|
||||||
hostname = DNSResolver.local.ip_to_hostname(ip_address)
|
|
||||||
header = "from #{helo} (#{hostname} [#{ip_address}]) #{header}"
|
|
||||||
end
|
|
||||||
|
|
||||||
header
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
require "rails_helper"
|
require "rails_helper"
|
||||||
|
|
||||||
describe Postal::ReceivedHeader do
|
describe ReceivedHeader do
|
||||||
before do
|
before do
|
||||||
allow(DNSResolver.local).to receive(:ip_to_hostname).and_return("hostname.com")
|
allow(DNSResolver.local).to receive(:ip_to_hostname).and_return("hostname.com")
|
||||||
end
|
end
|
||||||
المرجع في مشكلة جديدة
حظر مستخدم