許多 MTA 元件使用表查詢形式的資訊。此類表格用於將輸入字串變換 (亦即對映) 為輸出字串。此類表格稱為對映表,通常顯示為兩欄。第一欄 (左側) 提供要與之相符的可能輸入字串 (式樣),第二欄 (右側) 提供對映輸入字串的結果輸出字串 (範本)。如需有關哪些 MTA 程序使用哪些表格以及使用時機之詳細資訊,請參閱表 10–2。
大多數 MTA 資料庫 (包含不同類型的 MTA 資料,並且不應與對映表混淆) 是此類表格的實例。但是,MTA 資料庫檔案不提供萬用字元查詢功能,因為該功能本身效率較低,必須掃描整個資料庫以查詢與萬用字元相符的項目。
MTA mappings 檔案支援多個對映表。它提供萬用字元功能以及多步和反覆式對映方法。此方法的計算量比使用資料庫要大,特別是當項目很多時。但是,其靈活性帶來的好處是您不需要同等資料庫中的大多數項目,從而使整體消耗降低。
對映表保存在 MTA mappings 檔案中。該檔案使用 MTA tailor 檔案中 IMTA_MAPPING_FILE 選項指定的檔案;依預設,該檔案為 msg-svr-base/config/mappings。mappings 檔案的內容會做為可重新載入區段的一部分,併入已編譯的配置中 (請參閱10.1 編譯 MTA 配置)。如果無法讓所有人都能讀取該檔案將導致錯誤的運作方式。每次變更 mappings 檔案後,均必須重新編譯 MTA 配置。請參閱10.1 編譯 MTA 配置
表 10–2 列出了本書中所描述的對映表。
表 10–2 Messaging Server 對映表
對映表 |
頁數 |
說明 |
---|---|---|
AUTH_REWRITE |
與 authrewrite 關鍵字配合使用,以便使用從認證作業 (SASL) 中獲得的定址資訊修改標頭和訊息封位址。請參閱12.4.3 TCP/IP 連線和 DNS 查詢支援 |
|
CHARSET-CONVERSION |
用於指定應該執行哪種類型的通道至通道字元集轉換以及郵件重新格式化。請參閱13.6 字元集轉換與郵件重新格式化 |
|
COMMENT_STRINGS |
用於修改位址標頭註釋 (括號中的字串)。請參閱12.6.13 處理位址標頭行中的註釋 |
|
CONVERSIONS |
用於為轉換通道選取郵件通訊。請參閱13.5.2 選取通訊流以進行轉換處理 |
|
FORWARD |
用於執行轉寄與使用檔案或資料庫執行的轉寄類似。請參閱10.9.3 正向查詢表格和 FORWARD 位址對映 |
|
FROM_ACCESS |
用於根據訊息封 From 位址篩選郵件。如果 To 位址不適用,則使用此表格。請參閱18.2.1 存取控制對映表 — 作業 |
|
INTERNAL_IP |
用於識別內部系統和內部子網路。請參閱18.6 新增 SMTP 轉送 |
|
IP_ACCESS |
用以根據來源通道、遠端伺服器的 IP 位址計數、所嘗試的現有 IP 位址索引,封鎖內送連線。請參閱18.3.5 IP_ACCESS 對映表 |
|
MAIL_ACCESS |
用於根據 SEND_ACCESS 和 PORT_ACCESS 表格中找到的組合資訊,來封鎖內送的連線。請參閱18.2.1 存取控制對映表 — 作業 |
|
NOTIFICATION_LANGUAGE |
用於自訂或本土化通知郵件。請參閱10.10 控制遞送狀態通知郵件 |
|
ORIG_MAIL_ACCESS |
用於根據 ORIG_SEND_ACCESS 和 PORT_ACCESS 表格中找到的組合資訊,來封鎖內送的連線。請參閱18.2.1 存取控制對映表 — 作業 |
|
ORIG_SEND_ACCESS |
用於根據訊息封 From 位址、訊息封 To 位址、來源通道和目標通道來封鎖內送的連線。請參閱18.2.1 存取控制對映表 — 作業 |
|
PERSONAL_NAMES |
用於修改個人名稱 (尖括號分隔的位址之前的字串)。請參閱12.6.14 處理位址標頭行中的個人名稱 |
|
PORT_ACCESS |
用於根據 IP 編號封鎖內送的連線。請參閱18.2.1 存取控制對映表 — 作業 |
|
REVERSE |
用於將位址從內部形式轉換為公用的公開形式。10.9 將位址從內部格式轉換為公用格式 |
|
SEND_ACCESS |
用於根據訊息封 From 位址、訊息封 To 位址、來源通道和目標通道來封鎖內送的連線。請參閱18.2.1 存取控制對映表 — 作業 |
|
SMS_Channel_TEXT |
用於網站定義的文字轉換。請參閱C.2.5 網站定義的文字轉換 |
|
X-ATT-NAMES |
用於從對映表中擷取參數值。請參閱13.5.3.5 從轉換項目呼叫對映表 |
|
X-REWRITE-SMS-ADDRESS |
用於本地 SMS 位址的有效性檢查。請參閱C.2.4 網站定義的位址有效性檢查和轉換 |
mappings 檔案由一系列獨立表格組成。每個表格以其名稱開頭。名稱的第一欄始終為字母字元。表格名稱後面必須有一個空行,然後是表格中的項目。項目由零個或多個縮排行組成。每個項目行包含兩欄,由一個或多個空格或標籤分隔。項目中的所有空格均必須使用 $ 字元引用。每個對映表名稱之後和每個對映表之間均必須有空行;單一表格中的項目之間不能出現空行。註釋由第一欄中的驚嘆號 (!) 開頭。
結果格式與以下格式類似:
TABLE1_NAME pattern1-1 template1-1 pattern1-2 template1-2 pattern1-3 template1-3 . . . . . . pattern1-n template1-n TABLE2_NAME pattern2-1 template2-1 pattern2-2 template2-2 pattern2-3 template2-3 . . . . . . pattern2-n template2-n . . . TABLE3_NAME . . . |
使用對映表 TABLE2_NAME 的應用程式會將字串 pattern2-2 對映至由 template2-2 指定的任何內容。各模式或範本可個別包含多達 256 個字元和 1024 個字元。對映檔中一行的大小上限為 4096 個字元。對映中可以顯示的項目數不受限制 (儘管項目過多會消耗大量的 CPU 資源以及過多的記憶體)。較長的行 (超過 252 個字元) 可以使用反斜線 (\) 結束,以在下一行繼續。兩欄之間的空格以及第一欄之前的空格不能省略。
mappings 檔案中不允許出現重複的對映表名稱。
可以在 mappings 檔案中包含其他檔案。這可以使用以下格式的行來實現:
<file-spec |
它可以有效地將檔案 file-spec 的內容替換至 mappings 檔案中包含出現的位置。檔案規格應指定完整的檔案路徑 (目錄等)。以此方式包含的所有檔案必須可由所有人讀取。此類包含的 mappings 檔案中還可以包含註釋。包含最多可以嵌套三層。載入 mappings 檔案的同時會載入包含檔案 — 它們不是按需載入的,因此使用包含檔案不涉及效能或記憶體的節省。
mappings 檔案中的所有對映均以一致的方式套用。從一個對映到下一個對映的唯一變更就是輸入字串的源和對映輸出的用途。
對映作業始終以輸入字串和對映表開始。系統將按照項目在對映表中顯示的次序從頭到尾每次掃描一個項目。每個項目的左側均用作式樣,並且將輸入字串以不區分大小寫的方式與該式樣進行比較。如需有關哪些 MTA 程序使用哪些表格以及使用時機的詳細資訊,請參閱表 10–2。本節包含以下小節:
式樣可以包含萬用字元。特別是允許使用一般萬用字元︰星號 (*) 可以比對零個或多個字元,每個百分比符號 (%) 比對單一字元。可在星號、百分比符號、空格以及定位鍵的前面加一個美元符號 ($) 來引用它們。引用星號或百分比符號將使其失去所有特殊意義。必須引用空格和定位鍵,以防止它們提前結束式樣或範本。文字美元符號字元應採用雙寫形式 ($$),第一個美元符號引用第二個美元符號。
表 10–3 對映式樣萬用字元
萬用字元 |
說明 |
% |
僅比對一個字元。 |
* |
比對零個或多個字元,最長或「最多」可比對從左至右的全部字元 |
向後比對 |
說明 |
$ n* |
比對第 n 個萬用字元或全域符號。 |
修飾鍵 |
說明 |
$_ |
使用最小或「最短」的從左至右比對。 |
$@ |
關閉後續萬用字元或全域符號的「儲存」。 |
$^ |
開啟後續萬用字元或全域符號的「儲存」;此為預設。 |
全域萬用字元 |
說明 |
$A% |
比對一個字母字元 (A - Z 或 a - z)。 |
$A* |
比對零個或多個字母字元 (A - Z 或 a - z)。 |
$B% |
比對一個二進制數字 (0 或 1)。 |
$B* |
比對零個或多個二進制數字 (0 或 1)。 |
$D% |
比對一個十進制數字 (0 - 9)。 |
$D* |
比對零個或多個十進制數字 (0 - 9)。 |
$H% |
比對一個十六進制數字 (0 - 9 或 A - F)。 |
$H* |
比對零個或多個十六進制數字 (0 - 9 或 A - F)。 |
$O% |
比對一個八進制數字 (0 - 7)。 |
$O* |
比對零個或多個八進制數字 (0 - 7)。 |
$S% |
比對一個符號集字元 (例如,0 - 9、A - Z、a - z、_ 和 $)。 |
$S* |
比對零個或多個符號集字元 (即,0 - 9、A - Z、a - z、_ 和 $)。 |
$T% |
比對一個定位鍵、垂直定位鍵或空格字元。 |
$T* |
比對零個或多個定位鍵、垂直定位鍵或空格字元。 |
$X% |
$H% 的同義詞。 |
$X* |
$H* 的同義詞。 |
$[ c]% |
相符字元 c。 |
$[ c]* |
比對隨機出現的字元 c。 |
$[ c1 c2 ... cn ]% |
僅比對一個出現的字元 (c1、c 2 或 cn)。 |
$[ c1 c2 ... cn ]* |
比對任何字元出現在任意處 (c1、c 2 或 cn)。 |
$[ c1 -cn ]% |
比對 c1 至 cn 範圍中的任一字元。 |
$[ c1 -cn ]* |
比對 c1 至 cn 範圍中隨機出現的任何字元。 |
$< IPv4> |
比對 IPv4 位址,忽略位元。 |
$(IPv4) |
比對 IPv4 位址,保留字首位元。 |
${IPv6} |
比對 IPv6 位址。 |
在全域中,亦即在 $[...] 建構中,反斜線字元 (\) 為引用字元。若要表示文字連字符 - 或右括號 ],則全域內的連字符或右括號必須以反斜線引用。
式樣中的其他所有字元僅表示並比對自身。特別是,在對映式樣或範本中,單引用字元和雙引用字元以及括號均沒有特殊意義;它們只是一般字元。這樣便很容易寫入與非法位址或部分位址相符的項目。
若要指定多個修飾鍵,或指定修飾鍵和向後比對,則語法中僅可使用一個美中介字元。例如,若要向後比對初始萬用字元,而不儲存向後比對本身,則應使用 $@0,而不是 $@$0。
請注意,imsimta test -match 公用程式可用於測試對映式樣,特別是測試式樣中的萬用字元運作方式。
星號萬用字元可透過從左至右處理輸入字串,最大化它們比對的內容。例如,將輸入字串 a/b/c 與式樣 */* 進行比較時,左側星號將比對 a/b,右側星號將比對其餘字元 c。
$_ 修飾鍵會最小化萬用字元比對,將最小相符視為符合,從左至右處理式樣。例如,將字串 a/b/c 與式樣 $_*/$_* 進行比較時,左側 $_* 比對 a,而右側 $_* 比對 b/c。
使用 IPv4 字首比對時,應指定 IP 位址或子網路,後跟斜線和距離字首的位數 (可選擇),在比較比對時,位數很重要。例如,以下範例比對 123.45.67.0 子網路中的所有位址︰
$(123.45.67.0/24)
若 IPv4 忽略位元比對,應指定 IP 位址或子網路,後跟斜線和檢查比對時要忽略的位數 (選擇性的)。例如,以下範例比對 123.45.67.0 子網路中的所有位址︰
$<123.45.67.0/8>
以下範例比對 123.45.67.4 至 123.45.67.7 範圍內的所有位址:
$<123.45.67.4/2>
IPv6 比對將比對 IPv6 位址或子網路。
如果指定項目中的式樣比較失敗,則不採取任何動作;系統將繼續掃描下一個項目。如果比較成功,將使用項目的右側作為範本以產生輸出字串。該範本可將輸入字串有效地取代為根據範本給出的說明建構的輸出字串。
範本中幾乎所有的字元只需在輸出中產生自身。但美元符號 ($) 是個例外。
美元符號後跟美元符號、空格或定位鍵會在輸出字串中產生美元符號、空格或定位鍵。請注意,您必須引用所有這些字元,以便將其插入輸出字串。
美元符號後跟數字 n 代表替換;美元符號後跟字母字元稱為「中介字元」。中介字元本身不會顯示在範本產生的輸出字串中,但它們會產生一些特殊的替換或處理。請參閱表 10–4,以取得特殊替換和標準處理中介字元的清單。所有其他中介字元將保留用於對映特定的應用程式。
請注意,中介字元 $C` $E、$L 或 $R 中的任何一個出現在相符式樣的範本中時,均會影響對映程序並可控制該程序是終止還是繼續。也就是說,它可以設定反覆式對映表項目,其中一個項目的輸出會成為另一個項目的輸入。如果相符式樣的範本不包含中介字元 $C、$E、$L 或 $R 中的任何一個,則假設為 $E (立即終止對映程序)。
為防止無窮迴圈,將限制通過對映表的反覆次數。每次重新啟動一個傳送 (其式樣的長度等於或長於先前的傳送) 時,計數器就會遞增。如果該字串短於先前的字串,計數器將重設為零。計數器超過 10 之後,將不接受反覆對映的請求。
表 10–4 對映範本替換和中介字元
替換序列 |
替換 |
---|---|
$n |
從 0 開始從左至右計數的第 n 個萬用字元欄位。 |
$#...# |
序列號替換。 |
$]...[ |
URL 查詢;在結果中替換。 |
$|...| |
將指定的對映表套用至所提供的字串。 |
${...} |
一般資料庫替換。 |
$}domain,attribute{ |
增加存取每個網域屬性的能力。domain 是有問題的網域,而 attribute 是與該網域相關聯的屬性。如果網域存在且具有該屬性,則其初始值將替換為對映結果。如果屬性或網域不存在,則對映項目失敗。 attributes 可以為網域 LDAP 屬性或以下定義的特殊屬性︰ _base_dn_ - 網域中使用者項目的基底 DN _domain_dn_ - 網域項目自身的 DN _domain_name_ - 網域名稱 (與別名相對) _canonical_name_ - 與網域相關聯的標準名稱 |
$[...] |
呼叫網站提供的常式;在結果中替換。 |
中介字元 |
說明 |
$C |
從下一個表格項目開始繼續執行對映程序;使用此項目的輸出字串作為對映程序的新輸入字串。 |
$E |
立即結束對映程序;使用此項目的輸出字串作為對映程序的最終結果。$+1E 會立即結束,而不會解譯範本的剩餘部分。 |
$L |
從下一個表格項目開始繼續執行對映程序;使用此項目的輸出字串作為新的輸入字串;耗盡表格中的所有項目後,從第一個表格項目開始再執行一次對映程序。後續比對可以使用 $C、$E 或 $R 中介字元來覆寫此條件。 |
$R |
從對映表的第一個項目開始繼續執行對映程序;使用此項目的輸出字串作為對映程序的新輸入字串。 |
$nA |
插入從位置 0 開始的目前位址的左邊第 n 個字元。如果省略了 n,則插入整個位址。 |
$nX |
插入從 0 開始的郵件主機的左邊第 n 個元件。如果 n 省略,則插入整個郵件主機。 |
$?x? |
對映項目百分之 x 的時間成功。 |
$\ |
強制後續文字為小寫。 |
$^ |
強制後續文字為大寫。 |
$_ |
使後續文字保留其原有的大小寫形式。 |
$= |
強制後續替換的字元承擔適當的配額作業,以便插入與大寫有關的 LDAP 搜尋篩選器。 |
$:x |
僅在設定指定旗標後比對。 |
$;x |
僅在清除指定旗標後比對。 |
本節包含以下小節:
後跟數字 n 的美元符號將由式樣中符合第 n 個萬用字元的內容所取代。萬用字元從 0 開始編號。例如,以下項目將比對輸入字串 PSI%A::B,並產生結果輸出字串 b@a.psi.siroe.com︰
PSI$%*::* $1@$0.psi.siroe.com |
輸入字串 PSI%1234::USER 也相符,並產生 USER@1234.psi.siroe.com 做為輸出字串。輸入字串 PSIABC::DEF 不比對此項目中的式樣,且不會採取動作;亦即不會從此項目中產生輸出字串。
中介字元 $\ 強制後續文字採用小寫,$^ 強制後續文字採用大寫,$_ 使後續文字保留其原有的大小寫形式。例如,使用對映變換區分大小寫的位址時,這些中介字元將十分有用。
$C、$L、$R 和 $E 中介字元會影響對映程序,可控制對映程序是否終止以及何時終止。中介字元:
$C 使對映程序繼續處理下一個項目,並使用目前項目的輸出字串做為對映程序的新輸入字串。
$L 使對映程序繼續處理下一個項目,並使用目前項目的輸出字串做為對映程序的新輸入字串。如果未找到相符項目,則從第一個表格項目開始再次通過表格;帶有 $C、$E 或 $R 中介字元的後續相符項目將覆寫此條件。
$R 使對映程序從表格的第一個項目開始繼續執行,並使用目前項目的輸出字串做為對映程序的新輸入字串。
$E 使對映程序終止;此項目的輸出字串為最終輸出。$E 為預設。
對映表範本是從左至右掃描的。若要設定可能「成功」或「失敗」的項目 (例如,一般資料庫替換或隨機值控制的項目) 之 $C、$L 或 $R 旗標,請將 $C、$L 或 $R 中介字元至於可能成功或失敗的項目左側;否則,如果該項目的其餘部分失敗,將不顯示旗標。
某些對映探測已設定特殊旗標。這些旗標為可設定的旗標,使用 $: 和 $; 測試的一般對映表功能可測試其是否存在。$:x 導致項目僅在已設定旗標 x 的情況下比對。$;x 導致項目僅在已清除旗標 x 的情況下比對。請參閱特定的對映表描述,以取得可能適用於該表的所有特殊旗標。(請參閱表 18–2 中的 $A、$T、$S、$F 和 $D)。
如果希望在旗標檢查成功時項目成功並終止,但在旗標檢查失敗時對映程序繼續,則項目應將中介字元 $C 用於旗標檢查的左側,而將旗標 $E 用於旗標檢查的右側。
對映表項目中的中介字元 $?x? 使項目的「成功」時間達到百分之 x;在其餘時間,該項目會「失敗」,並且將對映項目輸入的輸出保持不變地用做輸出。(請注意,根據對映項目,失敗的影響不一定與第一個不相符的項目相同。) x 應是指定成功百分比的實際數字。
例如,假定 IP 位址為 123.45.6.78 的系統向您的站點傳送過多的 SMTP 電子郵件,您想要使其速度減慢;可以按以下方式使用 PORT_ACCESS 對映表。假定您只允許 25% 的連線嘗試,拒絕其餘 75% 的連線嘗試。以下 PORT_ACCESS 對映表使用 $?25? 使帶有 $Y (接受連線) 的項目僅在 25% 的時間內成功;在其餘 75% 的時間內,當項目失敗時,該項目上的初始 $C 將使 MTA 從下一個項目開始繼續對映,導致連線嘗試被拒絕,並顯示 SMTP 錯誤和訊息:請稍後重試。
PORT_ACCESS TCP|*|25|123.45.6.78|* $C$?25?$Y TCP|*|25|123.45.6.78|* $N45s$ 4.40$ Try$ again$ later |
$#...# 替換會遞增 MTA 序列檔案中儲存的值,並將該值替換至範本。當對映表輸出中需要有唯一的限定符時,這可用於產生唯一的遞增字串;例如,使用對映表產生檔案名稱時。
允許使用以下任何一種形式的語法:
$#seq-file-spec|radix|width|m# |
$#seq-file-spec|radix|width# |
$#seq-file-spec|radix# |
$#seq-file-spec# |
必要的 seq-file-spec 引數是現有 MTA 序列檔案的完整檔案規格。選擇性的 radix 和 width 引數分別指定用於輸出序列值的基數 (基準) 和要輸出的數位。預設基數為 10。從 -36 至 36 範圍內的基數均可用;例如,基數 36 給出由數字 0 至 9、A 至 Z。依預設,序列值按其原始寬度列印,但如果指定的寬度需要更多位數,則輸出的左側將使用0 填補,以獲得正確的位數。請注意,如果已明確指定寬度,則基數也必須明確指定。
選擇性的 m 引數為模數。如果已指定第四個引數,則插入的值是從檔案模數 m 中擷取的序列號。預設為不執行任何模數作業。
如上所述,對映中參考的 MTA 序列檔案必須已存在。若要建立 MTA 序列檔案,請使用以下 UNIX 指令:
touch seq-file-spec |
或
cat >seq-file-spec |
使用對映表存取的序列號檔案必須可由所有人讀取以便正確作業。您還必須有一個 MTA 使用者帳號 (在 imta_tailor 檔案中配置為 nobody),才能使用此類序列號檔案。
$]url [ 格式的替換是經過特殊處理的。url 可以是任何支援的 URL 類型,包括 file: 和 data:。也可以使用標準 LDAP URL,使用時會忽略主機和連接埠,而使用 LDAP_HOST 和 LDAP_PORT 選項指定的主機和連接埠。即,應將 LDAP URL 指定為:
ldap:///dn[?attributes[?scope?filter]]
其中,上面所示的方括號字元 [ 和 ] 表示 URL 的選擇性部分。dn 是必需的,並且是指定搜尋基底的辨別名稱。URL 的選擇性部分 attributes、scope 以及 filter 會進一步細加區別要傳回的資訊。亦即 attributes 指定要從符合該 LDAP 查詢的 LDAP 目錄項目傳回的屬性。該 scope 可能是任何 base (預設值)、one 或 sub。filter 說明相符項目的特性。
某些 LDAP URL 替換序列可在 LDAP 查詢 URL 中使用。URL 的長度可以是 1024 個字元。這也會套用到對映所建立的表示式,以及對其他對映的對映呼叫。
$|mapping ;argument| 格式的替換是經過特殊處理的。MTA 會在 MTA mappings 檔案中尋找名為 mapping 的輔助對映表,並使用 argument 做為已命名輔助對映表的輸入。已命名的輔助對映表必須存在,並且必須在其輸出中設定 $Y 旗標 (如果成功);如果已命名的輔助對映表不存在,或未設定 $Y 旗標,則該輔助對映表替換將失敗,並且原來的對映項目也被視為失敗:原始輸入字串將用作輸出字串。
請注意,若您要在執行對映表替換的對映表項目中使用處理控制中介字元 (如 $C、$R 或 $L),應將處理控制中介字元置於對映表範本中對映表替換的左側;否則,對映表替換的「失敗」將意味著不顯示處理控制中介字元。
格式 ${text} 的替換是經過特殊處理的。text 部分用作存取一般查詢表格或資料庫的金鑰 (請參閱10.9.1 MTA 文字資料庫以取得更多資訊)。如果在表格中找到 text,則將替換表格中相應的範本。如果 text 不比對表格中的項目,則輸入字串將保持不變地用做輸出字串。
如果要使用一般查詢表格,則需要設定 MTA 選項 use_text_databases 的低位位元。即,將其設定為奇數。需要使用 imsimta cnbuild 來編譯並使用 imsimta reload 來重新載入可重新載入的資料,從而將對 general.txt 所做的變更編譯至 MTA 配置中。
如果您要使用一般資料庫,該資料庫應可由所有人讀取以確保其正確作業。
若您要在執行一般表格替換的對映表項目中使用處理控制中介字元 (如 $C、$R 或 $L),應將處理控制中介字元置於對映表範本中一般表格替換的左側,否則一般表格替換的「失敗」將意味著不顯示處理控制中介字元。
格式 $[image ,routine,argument ] 的替換是經過特殊處理的。image, routine, argument 部分用於尋找並呼叫用戶提供的常式。在 UNIX 上運行時,MTA 使用 dlopen 和 dlsym 從共用程式庫 image 中動態地載入和呼叫常式 routine。然後,將使用以下引數清單以函數的方式呼叫常式 routine:
status = routine (argument, arglength, result, reslength) |
argument 和 result 是長度為 252 個位元組的字元字串緩衝區。argument 和 result 將做為指標傳送至字元字串 (例如,在 C 中做為 char*)。arglength 和 reslength 是由參照傳送的帶正負號的長整數。在輸入中,argument 包含來自對映表範本的 argument 字串,arglength 包含該字串的長度。在傳回中,結果字串應置於 result 中,其長度應置於 reslength 中。然後,結果字串會替代對映表範本中的 $[image,routine,argument]。如果對映表替換失敗,則 routine 常式應傳回 0;如果對映表替換成功,則該常式應傳回 -1。如果替換失敗,則正常情況下,原始輸入字串將保持不變地用作輸出字串。
如果您要在執行站點提供的常式替換的對映表項目中使用處理控制中介字元 (如 $C、$R 或 $L),應將處理控制中介字元置於對映表範本中網站提供的常式替換的左側;否則,對映表替換的「失敗」將意味著不顯示處理控制中介字元。
網站提供的常式圖例機制允許使用各種複雜的方式來延伸 MTA 的對映程序。例如,在 PORT_ACCESS 或 ORIG_SEND_ACCESS 對映表中,可以執行對某些類型的載入監視服務的呼叫,其結果用於決定是否接受連線或郵件。
站點提供的共用程式庫影像 image 應可由所有人讀取。
您可以從一般對映表功能中的 Unicode 字元值中產生 UTF-8 字串。表單的 Unicode 中介字元序列︰
$&A0A0,20,A1A1&
會產生在 A0A0、20 和 A1A1 位置包含字元的 UTF-8 字串。