| 內 容: |
12月的 13 號星期五 的 Domino Server
這次 Notes/Domino 在12月的 13 號星期五發現了一個問題,這是由於 Domino 伺服器早期開發時產生的錯誤,當時沒有人認為 幾十年後的任何事情都是潛在的問題。猜測應該是 紀元日期的計算公式中的限制造成了這個問題,如果您的 Domino郵件資料庫分在兩個 Domino 伺服器以上,透過 Route 路由的動作會使Domino的郵件路由停止工作(Domino郵件分兩種 Notes Mail 路由與 SMTP Mail路由)。依此,Notes mail 要由 Domino Server A 寄給 Domino Server B 的 User B,或者 Domino Mail server 有再透過 另一台 Domino SMTP Server作為 SMTP 信件轉發,這兩種情形都會因為這次 Router 的問題,造成錯誤訊息,信件無法正確寄送。
參考原廠說明,原廠也在不斷地做內容更新 https://support.hcl-software.com/csm?id=kb_article&sysparm_article=KB0118192
已 EOS 版本9 或10請參考 9, 10 版本的擴展支持計劃 https://support.hcl-software.com/csm?id=kb_article&sysparm_article=KB0118252
初步發現是 - 如果您只有一台伺服器,且一個 mail.box 沒有郵件規則,這樣您的Domino Server環境不會受到 郵件傳遞問題的影響,除了郵件規則之外,可能還有其他東西停止工作,因為該問題導致設定無法從配置。
目前的 Workaround 不少,如果需要更清楚的處理方式,請與你的協助廠商詢問。
可以找個資料庫寫一個定期的代理程式,定期檢查 mail.box 中特定屬性的欄位 $hops ,將其設定為 0。
備註 : 這並沒有解決郵件規則的問題,所以 Mail.box 還是不能有 mail rule。mail.box 維持一個。
附上須配合的 Server names.nsf 設定
12, 14 版 Server 的 names.nsf

9 版的 Server names.nsf

附上資料庫的代理程式 (不可以將此代理程式放在 mail.box 中)
Dim session As New NotesSession
Dim mailboxdb As New NotesDatabase(session.Currentdatabase.server,"mail.box")
Dim v As NotesView
Dim doc As notesdocument
If mailboxdb.Isopen Then
Set v=mailboxdb.Getview("mail")
Call v.Refresh()
v.Autoupdate=false
Set doc=v.Getfirstdocument()
Do While Not doc Is Nothing
If Not doc.hasitem("hopsretry") Then
If doc.Getitemvalue("RoutingState")(0)="HOLD" Then
If CStr(doc.Getitemvalue("$hops")(0))="0" then
Call doc.Replaceitemvalue("RoutingState","")
Call doc.Removeitem("SaveOptions")
If doc.Hasitem("RoutingState") And
Not doc.getitemvalue("RoutingState")(0)="" Then
'Keep Form
Else
If doc.Hasitem("MailSavedForm") And
Not doc.getitemvalue("MailSavedForm")(0)="" Then
Call doc.Replaceitemvalue("Form",doc.Getitemvalue("MailSavedForm"))
ElseIf doc.Hasitem("AppointmentType") Then
Call doc.Replaceitemvalue("Form","Notice")
Else
Call doc.Replaceitemvalue("Form","Memo")
End If
End If
Call doc.Replaceitemvalue("$Hops",25)
Call doc.Removeitem("RoutingStateBy")
Call doc.Replaceitemvalue("hopsretry",1)
Call doc.save(True,False)
End if
End If
End If
Set doc=v.Getnextdocument(doc)
Loop
End if |