hMailServer 管理員設置使用總結


<!doctype html>hMailServer 使用總結

hMailServer管理員設置使用總結

背景

由於公司企業郵箱需要監視到與外部郵箱的往來情況,以及對用戶郵箱空間的爆滿預警,經研究需要通過設置郵箱規則和腳本事件來實現這些需求。本文主要介紹了在hMailServer規則設置,腳本事件編寫。

目錄

  1. 服務器規則設置
  2. 腳本事件編寫

服務器規則設置

官方幫助文檔:https://www.hmailserver.com/documentation/latest/?page=reference_rule

設置步驟如動圖:

觸發

觸發條件可以設置多個,多個條件之間可以用and 或or 預定義的字段 包含:郵件內容、抄送、來自、郵件大小、SMTP 命名中的收件人、主題、發送到、發送嘗試

查找類型包含:包含、匹配、大於、少於、不包含、不匹配、正則表達式、通配符。

數值:要查找的條件。

操作

操作包含的事件:刪除郵件、轉發郵件、移動到 IMAP 文件夾、回復、 運行功能腳本、設置郵件頭值、停用處理規則、新建並發送一份副本、綁定到本地IP地址、通過路由發送。

運行功能腳本

啟動hMailServer管理員 在菜單--設置--高級--腳本中點擊查看腳本,跳轉到目錄有文件VBS文件 EventHandlers.vbs ,打開編輯,在預先定義的事件后增加你需要的操作,編寫完成后回到腳本頁面,點擊【重新載入腳本】,勾選已啟用點擊【保存】,若腳本原來就是已啟用狀態可以先取消已啟用,點保存,再勾選已啟用,點保存(這樣操作時為了避免腳本沒有重新加載)。

點擊【檢查腳本語法】可以幫助開發者校測腳本是否存在語法問題。

官方說明:無論何時修改腳本文件,都必須單擊刷新腳本以便hMailServer刷新,記錄更改。hMailServer將整個腳本的副本保留在內存中,這可以提高性能。

 

腳本事件編寫

官方文檔:https://www.hmailserver.com/documentation/latest/?page=reference_scripts

VBS教程:https://www.cnblogs.com/veggiegfei/p/5943260.html

hMailserver功能擴展:COM API http://blog.sina.com.cn/s/blog_4cf05f9a010139cv.html

批量刪除超過X天的郵件 https://www.hmailserver.org/viewtopic.php?f=15&t=98

所有hMailServer腳本都應放置在名為EventHandlers.vbs的文件中。該文件位於hMailServer Events目錄中,

事件 目的 實現版本
OnBackupCompleted 備份完成時執行。 4.2
OnBackupFailed 當備份失敗時執行。 4.2
OnClientConnect 當客戶端連接時執行。 4
OnAcceptMessage 使用SMTP協議將電子郵件發送到服務器時執行。 4
OnDeliveryStart 在任何規則執行之前,郵件發送已經開始直接執行。 4.4
OnDeliverMessage 當電子郵件正在交付時執行。執行全局規則后執行,但在帳戶級規則之前執行。 4
OnDeliveryFailed 如果郵件傳遞失敗時執行 5
OnExternalAccountDownload 從遠程POP3帳戶下載郵件時執行。 5.3
OnError 如果hMailServer中發生錯誤,則執行此操作。 5
OnSMTPData 收到SMTP數據時執行 5.4

執行順序

設置

按照以下步驟啟用腳本:

  • 啟動hMailServer管理員

  • 導航至設置 - >高級 - >腳本

  • 選擇已啟用

  • 點擊保存以保存您的更改

  • 無論何時修改腳本文件,都必須單擊刷新腳本以便hMailServer刷新,記錄更改。

    hMailServer將整個腳本的副本保留在內存中,這可以提高性能。

示例

在發送郵件時檢查發件人郵箱空間是否達到預警值80%,若達到則發送郵件通知發件人。

注意:下面兩行代碼用於處理郵件中 中文字符亂碼問題。

oMsg.Charset = "GB2312" 
oMsg.EncodeFields = False

Sub OnAcceptMessage(oClient, oMessage)
  If oClient.Username = "" Then Exit Sub  '如果是不是本服務器內的用戶,oClient.Username將為空便不需要后續處理
  Dim obApp
  Set obApp = CreateObject("hMailServer.Application")
  ' Authenticate. Without doing this, we won't have permission
  ' to change any server settings or add any objects to the
  ' installation.
  Call obApp.Authenticate("Administrator", "你的管理員密碼")  '獲得操作權限
  ' Locate the domain we want to add the account to
  Dim obDomain
  Set obDomain = obApp.Domains.ItemByName("你的域名")  '本地域名
  Dim obAccount
  Set obAccount = obDomain.Accounts.ItemByAddress(oClient.UserName)
  Dim oMsg
  Set oMsg = CreateObject("hMailServer.Message")
  oMsg.Charset = "GB2312" 
  oMsg.EncodeFields = False
  If obAccount.QuotaUsed > 80 Then '已使用容量大於80%警告
    oMsg.From = "發件人"  '發件人
    oMsg.FromAddress = "發件人地址"   '發件人地址
    oMsg.Subject = "您的郵箱已使用: " & obAccount.QuotaUsed & "%"
    oMsg.AddRecipient "Dear User", obAccount.Address
    '警告信內容,此處包含了被警告賬戶的最大容量和已用容量等信息
    oMsg.Body = "最大容量: " & obAccount.MaxSize & "MB" & vbCrLf
    oMsg.Body = oMsg.Body & "已使用容量: " & obAccount.Size & "MB" & vbCrLf
    oMsg.Body = oMsg.Body & "當郵箱爆滿后將收不到任何郵件,請及時清理郵箱。"
    oMsg.Save
    EventLog.Write ("Quota warning: " & obAccount.QuotaUsed & "% for " & obAccount.Address) '日志
  End If
End Sub

當電子郵件正在交付時執行檢測收件人郵箱空間是否達到預警

Sub OnDeliverMessage(oMessage)
  If oMessage.FromAddress = "系統賬戶" Then '避免一直重復發送郵件
	wscript.quit '退出當前函數
  End If
  For i = 0 To oMessage.Recipients.Count - 1
	Dim account
    Set account = oMessage.Recipients.Item(i)
	Dim address, obApp
	Set obApp = CreateObject("hMailServer.Application")
    Call obApp.Authenticate("Administrator", "你的管理員密碼")
	Dim obDomain
    Set obDomain = obApp.Domains.ItemByName("你的域名")  '本地域名
	If InStr(account.Address, "@你的域名")>0 Then
	  Dim obAccount
	  address = address & account.Address	 
      Set obAccount = obDomain.Accounts.ItemByAddress(account.Address)
	  If obAccount.QuotaUsed > 80 Then '已使用容量大於80%警告
	    Dim oMsg
		Set oMsg = CreateObject("hMailServer.Message")
		oMsg.Charset = "GB2312" 
		oMsg.EncodeFields = False
		oMsg.From = "clouddata<系統賬戶>"  '發件人
		oMsg.FromAddress = "系統賬戶"   '發件人地址
		oMsg.Subject = "您的郵箱已使用: " & obAccount.QuotaUsed & "%"
		oMsg.AddRecipient "Dear User", obAccount.Address
		'警告信內容,此處包含了被警告賬戶的最大容量和已用容量等信息
		oMsg.Body = "最大容量: " & obAccount.MaxSize & "MB" & vbCrLf
		oMsg.Body = oMsg.Body & "已使用容量: " & obAccount.Size & "MB" & vbCrLf
		oMsg.Body = oMsg.Body & "當郵箱爆滿后將收不到任何郵件,請及時清理郵箱。"
		oMsg.Save
		EventLog.Write ("Quota warning: " & obAccount.QuotaUsed & "% for " & obAccount.Address) & "  From:" & oMessage.FromAddress'日志
	  End If
	End If
	Next
End Sub

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM