مراية لـ
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,7 +366,7 @@ module SMTPServer
|
||||
@headers = {}
|
||||
@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")
|
||||
|
||||
@data << "Received: #{received_header}\r\n"
|
||||
|
||||
@@ -95,7 +95,7 @@ class IncomingMessagePrototype
|
||||
content: attachment[:data]
|
||||
}
|
||||
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
|
||||
end
|
||||
end
|
||||
|
||||
@@ -177,7 +177,7 @@ class OutgoingMessagePrototype
|
||||
content: attachment[:data]
|
||||
}
|
||||
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.to_s
|
||||
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"
|
||||
|
||||
describe Postal::ReceivedHeader do
|
||||
describe ReceivedHeader do
|
||||
before do
|
||||
allow(DNSResolver.local).to receive(:ip_to_hostname).and_return("hostname.com")
|
||||
end
|
||||
المرجع في مشكلة جديدة
حظر مستخدم