對郵件內文部分作業時,環境變數通常用於將 MIME 標頭行資訊或整個內文部分傳送至站點提供的程式或從站點提供的程式傳送 MIME 標頭行資訊或整個內文部分。例如,程式可能需要 Content-type 與 Content-disposition 標頭行資訊以及郵件內文部分。站點提供的程式之主要輸入內容,通常是從檔案中讀取的郵件內文部分。處理完內文部分後,程式需要將其寫入檔案,以供轉換通道讀取。此種資訊傳送方式就透過轉換通道環境變數來實現。
使用 parameter-symbol-* 參數或一組預先定義的 conversion 通道環境變數 (請參閱13.5.3.3 使用轉換通道輸出選項),即可在 conversions 檔案中建立環境變數。
以下 conversions 檔案項目和內送標頭顯示如何使用環境變數將 MIME 資訊傳送至站點提供的程式。
conversions 檔案項目:
in-channel=*; in-type=application; in-subtype=*; parameter-symbol-0=NAME; parameter-copy-0=*; dparameter-symbol-0=FILENAME; dparameter-copy-0=*; message-header-file=2; original-header-file=1; override-header-file=1; override-option-file=1; command="/bin/viro-scan500.sh ”INPUT_FILE’ ”OUTPUT_FILE’" |
內送的標頭:
Content-type: APPLICATION/msword; name=Draft1.doc Content-transfer-encoding: BASE64 Content-disposition: attachment; filename=Draft1.doc Content-description: "Project documentation Draft1 msword format" |
in-channel=*; in-type=application; in-subtype=* 指定將會處理來自任何 application 類型的輸入通道之郵件內文部分。
parameter-symbol-0=NAME 指定第一個 Content-type 參數值 (在範例中為 Draft1.doc) 儲存在名為 NAME 的環境變數中。
parameter-copy-0=* 指定輸入內文部分的所有 Content-type 參數均複製到輸出內文部分。
dparameter-symbol-0=FILENAME 指定第一個 Content-disposition 參數值 (範例中為 Draft1.doc) 儲存在名為 FILENAME 的環境變數中。
dparameter-copy-0=* 指定輸入內文部分的所有 Content-disposition 參數均複製到輸出內文部分。
message-header-file=2 指定將郵件的原始標頭作為一個整體 (最外層的郵件標頭) 寫入由環境變數 MESSAGE_HEADERS 指定的檔案中。
original-header-file=1 指定將含括 MESSAGE/RFC822 的部分之原始標頭寫入由環境變數 ORIGINAL_HEADERS 指定的檔案中。
override-header-file=1 會指定從環境變數 OUTPUT_HEADERS 所指定的檔案中讀取 MIME 標頭,以覆寫含括 MIME 部分中的原始 MIME 標頭行。$OUTPUT_HEADERS 是執行轉換時所建立的即時暫存檔。站點提供的程式會使用此檔案在轉換過程中儲存變更的 MIME 標頭行。而轉換通道會在重新組合內文部分時,從此檔案中讀取 MIME 標頭行。請注意,只有 MIME 標頭行可以修改。其他一般的非 MIME 標頭行無法由轉換通道變更。
override-option-file=1 指定轉換通道將會從 OUTPUT_OPTIONS 環境變數命名的檔案中讀取轉換通道選項。請參閱13.5.3.3 使用轉換通道輸出選項。
command="msg-svr-base/bin/viro-scan500.sh" 指定要對郵件內文部分執行的指令。
表 13–3 轉換通道環境變數
環境變數 |
說明 |
---|---|
ATTACHMENT_NUMBER |
目前部分的附件編號。其格式與 ATTACHMENT-NUMBER 轉換比對參數的格式相同。 |
CONVERSION_TAG |
目前使用中的轉換標記之清單。對應於TAG 轉換比對參數。 |
INPUT_CHANNEL |
使郵件在轉換通道上排入佇列的通道。對應於 IN-CHANNEL 轉換比對參數。 |
INPUT_ENCODING |
內文部分原始具備的編碼。 |
INPUT_FILE |
包含原始內文部分的檔案之名稱。站點提供的程式應讀取此檔案。 |
INPUT_HEADERS |
包含內文部分原始標頭行的檔案之名稱。站點提供的程式應讀取此檔案。 |
INPUT_TYPE |
輸入郵件部分的 MIME Content-type。 |
INPUT_SUBTYPE |
輸入郵件部分的 MIME 內容子類型。 |
INPUT_DESCRIPTION |
輸入郵件部分的 MIME content-description。 |
INPUT_DISPOSITION |
輸入郵件部分的 MIME content-disposition。 |
MESSAGE_HEADERS |
檔案名稱,該檔案包含含括郵件 (不只是內文部分) 最外層的原始標頭或是最直接含括 MESSAGE/RFC822 部分的內文部分之標頭。站點提供的程式應讀取此檔案。 |
OUTPUT_CHANNEL |
郵件輸出的通道。對應於 OUT-CHANNEL 轉換比對參數。 |
OUTPUT_FILE |
站點提供的程式用於儲存其輸出的檔案之名稱。站點提供的程式應建立並寫入此檔案。 |
OUTPUT_HEADERS |
站點提供的程式用於儲存含括部分的 MIME 標頭行的檔案之名稱。站點提供的程式應建立並寫入此檔案。請注意,檔案應包含實際 MIME 標頭行 (而非 option=value 行),後接一空行做為最後一行。另請注意,只有 MIME 標頭行可以修改。其他一般的非 MIME 標頭行無法由轉換通道變更。 |
OUTPUT_OPTIONS |
站點提供的程式讀取轉換通道選項時所用的檔案之名稱。請參閱13.5.3.3 使用轉換通道輸出選項。 |
PART_NUMBER |
目前部分的部分編號。其格式與 PART-NUMBER 轉換比對參數的格式相同。 |
PART_SIZE |
正在處理的部分之大小以位元組為單位。 |
郵件轉換標記是與特定收件者或寄件者相關的特殊標記。投遞郵件時,標記對轉換通道程式可見,後者可利用此標記進行特殊處理。轉換標記儲存在 LDAP 目錄中。
可按如下方法使用郵件轉換標記:管理員可使用 harmonica 的郵件轉換標記值設置選取的使用者。如此,管理員就擁有了一個轉換通道設置,它將在處理郵件時偵測標記是否存在,並偵測 harmonica 的值。上述情況發生時,該程式會執行某一任意功能。
郵件轉換標記可根據使用者或網域進行設定。網域層級的收件者 LDAP 屬性為 MailDomainConversionTag (可使用 MTA 選項 LDAP_DOMAIN_ATTR_CONVERSION_TAG 進行修改)。使用者層級的收件者 LDAP 屬性為 MailConversionTag (可使用 MTA 選項 LDAP_CONVERSION_TAG 進行修改)。兩個屬性均可以有多個值,且每個值均指定一個不同的標記。與指定收件者相關的標記組是可累積的,即在網域層級設置的標記可與在使用者層級設置的標記進行合併。
基於寄件者的轉換標記可使用 MTA 選項 LDAP_SOURCE_CONVERSION_TAG 和 LDAP_DOMAIN_ATTR_SOURCE_CONVERSION_TAG 進行設定,這兩個選項可分別為這些來源位址的相關轉換標記,指定使用者層級和網域層級的 LDAP 屬性。這些選項均沒有預設屬性。
系統篩選提供兩項新的動作:addconversiontag 和 setconversiontag。二者都接受單一引數:字串或轉換標籤清單。addconversiontag 將轉換標籤增加至目前的標籤清單,而 setconversiontag 會在新增標籤之前,清空現有的清單。請注意,這些動作都是在作業相當後期執行,因此您可以使用 setconversiontag 復原所有其他的轉換標籤設定機制。這些可供您將轉換標籤放置在「篩選」篩選器中。
「篩選」訊息封測試可接受 conversiontag 作為訊息封欄位指定元值。測試會檢查目前的標籤清單 (每次一個)。請注意,若您指定了 :count 修飾鍵,則允許檢查使用中的轉換標籤數量。此類型的訊息封測試僅限於系統篩選。另請注意,這項測試只會「看見」在篩選程序之前出現的標籤組 — setconversiontag 和 addconversiontag 動作的效果是不可見的。
新增的 MTA 選項 INCLUDE_CONVERSIONTAG 可用來將轉換標籤資訊選擇性地包含在各種對映探測中。這是位元編碼的值。下表顯示指定的位元。在任何狀況下,目前的標籤組都會出現在探測中,成為逗號分隔清單。
位置 |
值 |
對映 |
---|---|---|
0 |
1 |
CHARSET_CONVERSION - 在 ;CONVERT 之前新增成為 ;TAG= 欄位。 |
1 |
2 |
CONVERSION - 在 ;CONVERT 之前新增成為 ;TAG= 欄位。 |
2 |
4 |
FORWARD - 緊接在目前位址之前新增 (| 分隔符) |
3 |
8 |
ORIG_SEND_ACCESS - 在探測末端新增 (| 分隔符) |
4 |
16 |
SEND_ACCESS - 在探測末端新增 (| 分隔符) |
5 |
32 |
ORIG_MAIL_ACCESS - 在探測末端新增 (| 分隔符) |
6 |
64 |
MAIL_ACCESS - 在探測末端新增 (| 分隔符) |