Class MailOutboundPolicy
java.lang.Object
io.leandev.appfuse.mail.MailOutboundPolicy
外寄郵件的安全政策——環境層、對所有 Mailer 一律生效
為何是單一落點
防火牆/白名單/debug/改寄/特殊訊息回答的都是「這個環境能不能把信寄到真實收件者」,
與「是誰在寄」無關。故它們是環境設定(參考接線為 app.mail.*),不是郵件設定資源的欄位。
曾經不是這樣,而那製造了一個安全漏洞:系統預設 Mailer 讀環境防火牆設定,但每個範圍 自己的 Mailer 走另一條路、防火牆值取自設定資源(預設關)——於是環境宣告的 「firewall 開 + 空白名單=全擋 fail-fast,不會默默全寄」保證對那些 Mailer 不成立。
現在政策是 DirectMailer 的建構參數——不給政策就建不出 Mailer,兩條路徑
(系統預設、RoutingMailer 依 spec 建立)不可能分岔。
建構即驗證(fail-fast)
MailOutboundPolicy.Builder.build() 驗證政策組合並回傳不可變實例。危險組合直接拋例外(見 MailOutboundPolicy.Builder.build()):
- firewall 開但白名單空(全擋)且部署已明確配置郵件 → 啟動失敗,迫使明確決策
- redirect 開卻沒填收件信箱 → 同上
「已明確配置郵件」由 MailOutboundPolicy.Builder.mailConfigured 宣告(參考接線為「app.mail.type 已設」)。
未明確配置時不擋啟動、以 WARN 留痕——政策仍然生效(漏設定的後果是寄不出去,不是誤寄)。
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class政策建構器;MailOutboundPolicy.Builder.build()驗證組合並回傳不可變政策 -
Method Summary
Modifier and TypeMethodDescriptionstatic MailOutboundPolicy.Builderbuilder()describe()供診斷/測試檢視當前政策特殊訊息主旨前綴的環境預設(範圍專屬設定可覆寫,見DirectMailer建構子)booleanbooleanfirewall 是否實際生效(redirect 全攔時短路為 false,見MailOutboundPolicy.Builder.build())boolean
-
Method Details
-
builder
-
isFirewallActive
public boolean isFirewallActive()firewall 是否實際生效(redirect 全攔時短路為 false,見MailOutboundPolicy.Builder.build()) -
getAllowedDomains
-
isDebugEnabled
public boolean isDebugEnabled() -
isRedirectActive
public boolean isRedirectActive() -
getRedirectTo
-
getNoticeSubjectPrefix
特殊訊息主旨前綴的環境預設(範圍專屬設定可覆寫,見DirectMailer建構子) -
getNoticeHeaders
-
describe
-