AWS Lambda為 Amazon 配置 WorkMail - Amazon WorkMail

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS Lambda為 Amazon 配置 WorkMail

在輸入和輸出電子郵件流程規則中使用「執行 Lambda」動作,將符合規則的電子郵件訊息傳遞至AWS Lambda函數以進行處理。

請從下列組態中進行選擇,以便在 Amazon 中執行 Lambda 動作 WorkMail。

同步執行 Lambda 組態

符合流程規則的電子郵件訊息會傳送至 Lambda 函數進行處理,然後再傳送或傳送。使用此設定可修改電子郵件內容。您也可以針對不同的使用案例控制輸入或輸出電子郵件流程。例如,傳遞至 Lambda 函數的規則可以封鎖敏感電子郵件訊息的傳遞、移除附件或新增免責聲明。

非同步執 Lambda 組態

符合流程規則的電子郵件訊息會傳送至 Lambda 函數,以便在傳送或交付時進行處理。此組態不會影響電子郵件傳遞,而且可用於收集傳入或傳出電子郵件訊息的指標等任務。

無論您選擇同步或非同步組態,傳遞至 Lambda 函數的事件物件都包含輸入或輸出電子郵件事件的中繼資料。您也可以使用中繼資料中的訊息 ID,以存取電子郵件訊息的完整內容。如需詳細資訊,請參閱 使用 AWS Lambda 擷取訊息內容。如需電子郵件事件的詳細資訊,請參閱 Lambda 事件資料

如需傳入和傳出電子郵件流程規則的詳細資訊,請參閱管理電子郵件流程。如需有關 Lambda 的詳細資訊,請參閱 AWS Lambda 開發人員指南

注意

目前,Lambda 電子郵件流程規則僅參考相同 AWS 區域和AWS 帳戶所設定之 Amazon WorkMail 組織中的 Lambda 函數。

開始使AWS Lambda用 Amazon WorkMail

若要開AWS Lambda始使用 Amazon WorkMail,我們建議您將 WorkMail Hello World Lambda 函數從您的帳戶部署AWS Serverless Application Repository到您的帳戶。該功能具有所有必要的資源,以及為您配置的權限。有關更多示例,請參閱(詳見)的amazon-workmail-lambda-templates存儲庫 GitHub。

如果您選擇建立自己的 Lambda 函數,則必須使用 AWS Command Line Interface (AWS CLI) 來設定許可。在下列範例命令中,執行下列動作:

  • MY_FUNCTION_NAME以 Lambda 函數的名稱取代。

  • 替換REGION為您的 Amazon WorkMail AWS 區域。可用的 Amazon WorkMail 區域包括 us-east-1 (美國東部 (維吉尼亞北部))、us-west-2 (美國西部 (奧勒岡)) 和 eu-west-1 (歐洲 (愛爾蘭))。

  • 替換為您AWS_ACCOUNT_ID的 12 位數 AWS 帳戶 ID。

  • 替換WORKMAIL_ORGANIZATION_ID為您的 Amazon WorkMail 組織 ID。您可以在組織的卡片上找到該組織的「組 Organ izations」頁面。

aws --region REGION lambda add-permission --function-name MY_FUNCTION_NAME --statement-id AllowWorkMail --action "lambda:InvokeFunction" --principal workmail.REGION.amazonaws.com --source-arn arn:aws:workmail:REGION:AWS_ACCOUNT_ID:organization/WORKMAIL_ORGANIZATION_ID

如需使用 AWS CLI 的詳細資訊,請參閱 AWS Command Line Interface 使用者指南

設定同步執行 Lambda 規則

若要設定同步執行 Lambda 規則,請使用「執行 L amb da」動作建立電子郵件流程規則,然後選取「同步執行」核取方塊。如需如何建立郵件流程規則的詳細資訊,請參閱建立電郵流程規則

若要完成同步規則的建立,請新增 Lambda Amazon 資源名稱 (ARN) 並設定下列選項。

Fallback action (備用動作)

如果 Lambda 函數無法運行,Amazon WorkMail 適用的操作。如果未設定所有收件者旗標,則此動作也適用於 Lambda 回應中省略的任何收件者後援動作不能是另一個 Lambda 動作。

Rule timeout (規則逾時) (以分鐘為單位)

如果 Amazon WorkMail 無法調用 Lambda 函數,則重試該函數的期間。系統會在此期間結束時套用 Fallback action (備用動作)

注意

同步執行 Lambda 規則僅支援*目標條件。

Lambda 事件資料

Lambda 函數會使用下列事件資料觸發。資料的呈現方式視 Lambda 函數所使用的程式設計語言而有所不同。

{ "summaryVersion": "2018-10-10", "envelope": { "mailFrom" : { "address" : "from@example.com" }, "recipients" : [ { "address" : "recipient1@example.com" }, { "address" : "recipient2@example.com" } ] }, "sender" : { "address" : "sender@example.com" }, "subject" : "Hello From Amazon WorkMail!", "messageId": "00000000-0000-0000-0000-000000000000", "invocationId": "00000000000000000000000000000000", "flowDirection": "INBOUND", "truncated": false }

事件 JSON 包括下列資料。

summaryVersion

的版本號碼LambdaEventData。這只會在您在中進行向後不相容的變更時更新LambdaEventData

envelope

電子郵件訊息的信封,其中包含下列:欄位。

mailFrom

From (寄件人) 地址通常是傳送電子郵件訊息的使用者電子郵件地址。若使用者以另一位使用者的身分或代表另一位使用者傳送了電子郵件訊息,則 mailFrom (寄件者地址) 欄位會傳回授權使用者傳送電子郵件的電子郵件地址,而非實際寄件者的電子郵件地址。

recipients

收件人電子郵件地址清單。Amazon WorkMail 沒有區分收件人送或密件抄送

注意

對於輸入電子郵件流程規則,此清單包括您在其中建立規則之 Amazon WorkMail 組織中所有網域中的收件者。Lambda 函數會針對來自寄件者的每個 SMTP 交談個別叫用,而收件者欄位會列出來自該 SMTP 交談的收件者。使用外部網域的收件人不包含在內。

寄件者

代表另一位使用者傳送電子郵件訊息的使用者的電子郵件地址。只有在代表其他使用者傳送電子郵件訊息時,才會設定此欄位。

subject

電子郵件主旨行。超過 256 個字元限制時就會遭到截斷。

messageId

使用 Amazon WorkMail 訊息流程開發套件時,用來存取電子郵件訊息完整內容的唯一 ID。

叫用識別碼

唯一 Lambda 叫用的識別碼。當 Lambda 函數被多次呼叫相同時,此 ID 會保持不變LambdaEventData。用於偵測重試次數並避免重複。

flowDirection

指出電子郵件流程的方向,即 INBOUND (傳入)OUTBOUND (傳出)

truncated

適用於承載大小,而不是主旨行長度。若此值為 true,則負載大小會超過 128 KB 的限制,因此會截斷收件人清單以符合限制。

同步執行 Lambda 回應架構

當具有同步執行 Lambda 動作的電子郵件流程規則與輸入或輸出電子郵件訊息相符時,Amazon 會 WorkMail 呼叫設定的 Lambda 函數並等待回應,然後再對電子郵件訊息採取動作。Lambda 函數會根據預先定義的結構描述傳回回應,該結構描述會列出適用動作的動作、動作類型、適用參數和收件者。

下列範例顯示同步執行 Lambda 回應。回應會根據 Lambda 函數所使用的程式設計語言而有所不同。

{ "actions": [ { "action" : { "type": "string", "parameters": { various } }, "recipients": [list of strings], "allRecipients": boolean } ] }

回應 JSON 包含下列資料。

動作

要為收件人採取的動作。

type

動作類型。非同步執行 Lambda 動作不會傳回動作類型。

傳入規則動作類型包含 BOUNCE (退信)DROP (捨棄)DEFAULT (預設)BYPASS_SPAM_CHECKMOVE_TO_JUNK。如需詳細資訊,請參閱 傳入電子郵件規則動作

輸出規則動作類型包含 BOUNCE (退信)DROP (捨棄)DEFAULT (預設)。如需詳細資訊,請參閱 傳出電子郵件規則動作

parameters

其他動作參數。支援 BOUN CE 動作類型做為 JSON 物件,且具有鍵值訊息和值字串。此退信訊息可用來建立退信電子郵件訊息。

recipients

應對其採取動作的電子郵件地址清單。即使原始收件人清單中未包含收件人,您仍可將收件人新增至回應中。如果某個動作的 allRecipients 為 true,此欄位則非必填。

注意

針對輸入電子郵件呼叫 Lambda 動作時,您只能新增來自組織的新收件者。新收件人會以 BCC (密件副本) 的形式新增至回應中。

allRecipients

當為 true 時,會將動作套用至不受 Lambda 回應中其他特定動作約束的所有收件者。

同步執行 Lambda 動作限制

當 Amazon 為同步執行 Lambda 動作 WorkMail 叫用 Lambda 函數時,會套用下列限制:

  • Lambda 函數必須在 15 秒內回應,或被視為失敗的叫用。

    注意

    系統會根據您指定的「規則」逾時間隔重試呼叫。

  • 允許最大 256 KB 的 Lambda 函數回應。

  • 回應中最多可允許 10 個唯一動作。10 個以上都動作會受到設定的 Fallback action (備用動作) 所約束。

  • 輸出 Lambda 函數最多允許 500 個收件者使用。

  • Rule timeout (規則逾時) 的最大值為 240 分鐘。如果設定的最小值為 0,則在 Amazon WorkMail 套用後援動作之前不會重試。

同步執行 Lambda 動作失敗

如果 Amazon 因為錯誤、無效回應或 Lambda 逾時而無法叫用 Lambda 函數,Amazon 會 WorkMail 以指數輪詢 WorkMail 重試呼叫,從而降低處理速率,直到規則逾時期間完成為止。接著,Fallback action (備用動作) 會套用至電子郵件訊息的所有收件人。如需詳細資訊,請參閱 設定同步執行 Lambda 規則

範例同步執行 Lambda 回應

下列範例示範常見同步執行 Lambda 回應的結構。

範例 :從電子郵件訊息中移除指定的收件人

下列範例示範從電子郵件訊息中移除收件者的同步執行 Lambda 回應的結構。

{ "actions": [ { "action": { "type": "DEFAULT" }, "allRecipients": true }, { "action": { "type": "DROP" }, "recipients": [ "drop-recipient@example.com" ] } ] }
範例 :自訂電子郵件訊息的退信

下列範例示範使用自訂電子郵件訊息彈回的同步執行 Lambda 回應的結構。

{ "actions" : [ { "action" : { "type": 'BOUNCE', "parameters": { "bounceMessage" : "Email in breach of company policy." } }, "allRecipients": true } ] }
範例 :將收件人新增至電子郵件訊息

下列範例示範將收件者新增至電子郵件訊息的同步執行 Lambda 回應的結構。這不會更新電子郵件訊息的 To (收件人)CC (副本) 欄位。

{ "actions": [ { "action": { "type": "DEFAULT" }, "recipients": [ "new-recipient@example.com" ] }, { "action": { "type": "DEFAULT" }, "allRecipients": true } ] }

如需建立 Lambda 函數以執行 Lambda 動作時使用的更多程式碼範例,請參閱 Amazon WorkMail Lambda 範本

有關在 Amazon 上使用 Lambda 的更多 WorkMail

您也可以存取觸發 Lambda 函數之電子郵件訊息的完整內容。如需詳細資訊,請參閱 使用 AWS Lambda 擷取訊息內容