
Domino 郵件規則異常修復技術手冊
適用對象:IT 管理者 / Domino 系統維運人員
適用版本:Notes/Domino 5.x、6.0–6.5.3、7.0(含部分 8.x 遺留模板)
1. 問題背景與現象
(請注意若為2024/12/13 後全部失效,並非此問題而是bug.請參閱 IBM Domino 2024 12/13 Bug舊版本緊急修復指南(含HCL domino 新版本)
在舊版 Notes/Domino 郵件系統中,常見的郵件規則(Mail Rules)異常包含:
| 異常現象 | 說明 |
|---|---|
| 已停用的規則仍然觸發 | Disable 後仍有 $FilterFormula_x 留在 Calendar Profile |
| 已刪除的規則仍在執行 | 刪除前未 Disable,導致內部 Formula 未被刪除 |
| 規則生效但未顯示在 Rules 資料夾 | 存在重複的 (Rules) Folder 或 Folder 設計毀損 |
| 新規則不會執行 | OrderNum 錯亂 / FilterFormulaCount 錯誤 |
| 只有部分規則運作 | Calendar Profile 中的序號中斷 |
2. 技術原理:規則如何被 Notes/Domino 執行?
當使用者「啟用 (Enable Rule)」一個規則時:
Notes 會在 CalendarProfile 中寫入:
$FilterFormula_0
$FilterFormula_1
$FilterFormula_2
...
內容即為規則條件(Formula)。
當郵件投遞至使用者信箱時,Domino Router 會依序讀取:
- $FilterFormulaCount (內含規則總數)
- 對應的 $FilterFormula_x
若使用者:
- 刪除規則前未先 Disable
- 刪除時 Preview Pane 開著
- 使用 Ctrl + 切換資料夾後按 Delete
- Template 版本含舊的 Enable/Disable 程式碼 Bug
→ Calendar Profile 會殘留舊的 Formula
→ Domino 仍會依此執行
因此造成「已刪除規則仍在執行」的錯誤。
3. 問題分析步驟
3.1 Step 1 — 檢查規則順序 (OrderNum)
- 於 Notes 開啟使用者信箱
- 右鍵一個規則 → Document Properties (文件屬性)(或alt+enter 新版client )
- 模板正常時 OrderNum 應為:
0
1
2
3
…
若:
- 出現跳號(如 0, 1, 5, 7)
- 或第一條不是 0 / 1
→ 規則順序已損壞。
3.2 Step 2 — 檢查 Calendar Profile
使用以下任一方式:
● LotusScript:
Dim session As New NotesSession
Dim db as NotesDatabase
Dim doc As NotesDocument
maildbinfo = Evaluate(|@MailDbName|)
Set db = session.getdatabase(maildbinfo(0), maildbinfo(1))
Set doc = db.getprofiledocument("CalendarProfile")
檢查:
$FilterFormulaCount$FilterFormula_0$FilterFormula_1$FilterFormula_2…
若:
- 比數不一致
- 存在已刪除規則的 Formula
- FilterFormulaCount 小於最大序號
→ Calendar Profile 損毀。
3.3 Step 3 — 檢查是否存在重複 Rules Folder
使用 Designer:
- 開啟 mail file
- 展開 Folders
- 若看到:
(Rules)
Rules
(Rules) <old version>
代表升級 Template 時殘留舊版本。
→ 導致規則無法正確顯示。
4. 修復方法(企業建議流程)
以下為官方推薦流程,由「安全」到「最有效」。
以代理程式重新排序規則 + 清除殘留 Formula
此代理程式來自 IBM Technote(經整理後版本),可:
- 重新生成 OrderNum
- 清除不正確的 $FilterFormula_x
- 重建 FilterFormulaCount
適用:
→ 規則無法執行
→ 停用的仍在跑
→ OrderNum 錯亂
▣ 建立 Run Once Agent(Notes client)
Agent Type: LotusScript
Run: Manually from Action Menu
Target: None
貼上以下程式碼:
Dim s As New NotesSession
Dim db As NotesDatabase
Dim rulesfolder As NotesView
Dim rules As NotesViewEntryCollection
Dim rule As NotesViewEntry
Dim ruledoc As NotesDocument
Dim profile As NotesDocument
Dim number As Integer
Set db = s.CurrentDatabase
Set rulesfolder = db.GetView("Rules")
Set rules = rulesfolder.AllEntries
Set profile = db.GetProfileDocument("CalendarProfile")
'--- Reset numbering ---
If profile.GetItemValue("Use_CalendarRule")(0) = "1" Then
number = 1
Else
number = 0
End If
Set rule = rules.GetFirstEntry
While Not rule Is Nothing
Set ruledoc = rule.Document
ruledoc.OrderNum = Cstr(number)
Call ruledoc.Save(True, True)
Set rule = rules.GetNextEntry(rule)
number = number + 1
Wend
'--- Optional: Clear old filter formulas ---
'Use with caution
'Forall ff in profile.Items
' If ff.Type = 1536 And Lcase(Left(ff.Name,15)) = "$filterformula_" Then
' Call ff.Remove
' End If
'End Forall
'Call profile.Save(True, True)
執行後:
- OrderNum 會修正
- 規則將重新對應正確的 FilterFormula_x
方法 B(最有效,用於嚴重損毀)
刪除 Calendar Profile(Notes 自動重建)
此方法最能徹底清除所有殘留規則。
⚠️ 缺點:會清除使用者偏好設定,例如:
- 郵件 Delegation
- 行事曆設定
- Free Time 偏好
- 提醒設定
代理程式:
Dim session As New NotesSession
Dim db as NotesDatabase
Dim doc As NotesDocument
maildbinfo = Evaluate(|@MailDbName|)
Set db = session.GetDatabase(maildbinfo(0), maildbinfo(1))
Set doc = db.GetProfileDocument("CalendarProfile")
Call doc.Remove(True)
刪除後,讓使用者重新開啟信箱即可自動重建。
方法 C(進階)
修補 Mail Template(避免後續再發生)
限有開發能力的管理者、或企業內部 template 開發者使用。
建議修改項目:
1. Rules Script Library → ButtonOKClient / ButtonOKWeb
加入正確的 FilterFormulaCount 處理
2. BlockUserRule → FindHighestRule
修正舊邏輯避免覆寫規則
3. (Rules) Folder 的 Enable/Disable 按鈕
修正 Enable/Disable 時的計數錯誤
4. 檢查是否存在多個 Rules folder
刪除舊版 Rules folder
(需暫時修改 QueryDragDrop 防止阻擋 drag&drop)
5. 預防措施(給使用者)
建議推行以下簡單政策,能避免 90% 的規則錯誤:
✔ 刪除規則前一定要先 Disable
✔ 刪除規則時不要打開 Preview Pane
✔ 不要 Ctrl + 切換資料夾後再刪除
✔ 建議企業升級至 6.5.4 / 6.0.5 或更高模板版本
✔ 規則過多(>50)時建議整理(5.x 限制最多 50 條)
6. 建議升級版本(官方修正完整)
IBM 官方已在以下版本修正大部分規則問題:
- Notes/Domino 6.5.4
- Notes/Domino 6.0.5
- Notes/Domino 6.5.5(修正禁用/刪除規則仍執行)
若郵件系統仍使用 5.x / 6.0–6.5.3 或老舊模板,建議立即升級。
domino 9/10/11/12 IBM Domino 2024 12/13 Bug舊版本緊急修復指南(含HCL domino 新版本)
🧠本文由 DreamJ AI 自動網路探索生成系統撰寫,內容經 AI 模型審核與自動優化,
僅供技術參考與研究用途










