SMS 閘道伺服器可透過將行動電話發出的 SMS 郵件匹配至正確電子郵件位址的機制來實現雙向 SMS。本節包含以下 SMS 閘道伺服器主題:
SMS 閘道伺服器同時充當 SMPP 轉送器與伺服器。可以將其配置為具有每項功能的多個「創設」。例如,它可被配置為具有三個不同的 SMPP 轉送器,每個都偵聽不同的 TCP 連接埠或網路介面,並轉送至不同的遠端 SMPP 伺服器。同樣,它也可被配置為具有四個不同的 SMPP 伺服器,每個都偵聽 TCP 連接埠與網路介面的不同組合。
SMS 閘道伺服器若要配置為將 SMS 郵件傳送至電子郵件,可以不使用閘道設定檔也可以使用多個閘道設定檔。每個閘道設定檔都說明哪個目標 SMS 位址符合該設定檔、如何從 SMS 郵件擷取目標電子郵件位址,以及 SMS 至電子郵件轉換程序的各種特徵。透過 SMPP 轉送器或伺服器提交給 SMS 閘道伺服器的每封 SMS 郵件都會與每個設定檔進行比對。如果找到相符項目,則此郵件會路由至電子郵件。
最後,閘道設定檔還說明如何處理遠端 SMSC 為回應先前的電子郵件至行動電話郵件而傳回的通知郵件。
充當 SMPP 轉送器時,SMS 閘道伺服器會儘可能嘗試透明化,將來自本機 SMPP 用戶端的所有請求轉送至遠端 SMPP 伺服器,然後再轉送回遠端伺服器的回應。存在兩種異常:
當本機 SMPP 用戶端提交郵件時,如果郵件的 SMS 目標位址符合配置的閘道設定檔之一,則已提交的 SMS 郵件會直接傳回至電子郵件;該 SMS 郵件不會轉送至遠端 SMPP 伺服器。
當本機或遠端 SMPP 用戶端提交郵件時,如果郵件的 SMS 目標位址符合轉送器先前產生的唯一 SMS 來源位址,則 SMS 郵件會被作為對先前轉送之郵件的回覆。此回覆會被導向回原始郵件的創建者。
請注意,SMS 閘道伺服器通常會配置為:其產生的唯一 SMS 來源位址符合閘道設定檔之一。
SMS 閘道伺服器的 SMPP 轉送僅適合與合格的 Sun Java System SMPP 用戶端 (亦即 Sun Java System Messaging Server 的 SMS 通道) 配合使用。而不適合與任意 SMPP 用戶端配合使用。
充當 SMPP 伺服器時,在以下三種情況下 SMS 閘道伺服器會將 SMS 郵件導向至電子郵件
SMS 郵件是由行動電話發出的並且符合閘道設定檔。
SMS 郵件是行動電話發出的並且 SMS 目標位址符合先前產生的唯一 SMS 來源位址。
SMS 郵件是 SMS 通知,對應於之前由 SMS 閘道伺服器的 SMPP 轉送器轉送的電子郵件至行動電話郵件。
所有其他 SMS 郵件將被 SMPP 伺服器拒絕。
遠端 SMPP 用戶端透過協定資料單元 (PDU) 與閘道 SMPP 伺服器通訊。遠端 SMPP 用戶端會傳送請求 PDU,閘道 SMPP 伺服器會對其作出回應。閘道 SMPP 伺服器同步運作。它會先完成對請求 PDU 的回應,然後再處理下一個來自所連線的遠端 SMPP 用戶端的請求 PDU。
以下表 D–19 列出閘道 SMPP 伺服器處理的請求 PDU,並指定閘道 SMPP 伺服器的回應。
表 D–19 SMPP 伺服器協定資料單元
請求 PDU |
SMPP 伺服器回應 |
---|---|
BIND_TRANSMITTERBIND _TRANSCEIVERUNBIND |
使用適當的回應 PDU 進行回應。認證憑證會被忽略。 |
OUTBIND |
閘道 SMPP 伺服器傳回 BIND_RECEIVER PDU。提交的認證憑證會被忽略。 |
SUBMIT_SMDATA_SM |
嘗試使用唯一的 SMS 來源位址或閘道設定檔的 SELECT_RE 設定來比對目標 SMS 位址。如果均不相符,則會拒絕 PDU,並顯示 ESME_RINVDSTADR 錯誤。 |
DELIVER_SM |
嘗試在歷程記錄中找到目標 SMS 位址或接收的郵件 ID。如果均不相符,會傳回錯誤 ESME_RINVMSGID。 |
BIND_RECEIVER |
不支援。傳回 GENERIC_NAK PDU,並顯示 ESME_RINVCMDID 錯誤。 |
SUBMIT_MULTI |
不支援。傳回 GENERIC_NAK PDU,並顯示 ESME_RINVCMDID 錯誤。 |
REPLACE_SM |
不支援。傳回 GENERIC_NAK PDU,並顯示 ESME_RINVCMDID 錯誤。 |
CANCEL_SM |
不支援。傳回 GENERIC_NAK PDU,並顯示 ESME_RINVCMDID 錯誤。 |
QUERY_SM |
不支援。傳回 GENERIC_NAK PDU,並顯示 ESME_RINVCMDID 錯誤。 |
QUERY_LAST_MSGS |
不支援。傳回 GENERIC_NAK PDU,並顯示 ESME_RINVCMDID 錯誤。 |
QUERY_MSG_DETAILS |
不支援。傳回 GENERIC_NAK PDU,並顯示 ESME_RINVCMDID 錯誤。 |
ENQUIRE_LINK |
傳回 ENQUIRE_LINK_RESP PDU。 |
ALERT_NOTIFICATION |
接受但忽略。 |
SMS 閘道伺服器可維護透過其 SMPP 伺服器轉送的每封 SMS 郵件的歷程記錄。需要使用歷程資料是基於以下事實:提交一封電子郵件至 SMS 時,通常不可能將郵件創建者的電子郵件位址轉換成 SMS 來源位址。由於任何 SMS 回覆和通知都會導向至此 SMS 來源位址,這樣就會出現問題。這個問題可以透過使用轉送郵件中自動產生的唯一 SMS 來源位址解決。因此,遠端 SMSC 會被配置為可將這些 SMS 來源位址路由回閘道 SMPP 伺服器。
歷程資料是指記憶體內雜湊表,其中包含 ID 郵件和產生的唯一 SMS 來源位址。這些資料以及關聯的電子郵件源資料也會儲存在磁碟上。基於磁碟的儲存為一系列檔案,每個檔案代表 HASH_FILE_ROLLOVER_PERIOD 秒的作業事件 (預設為 30 分鐘)。每個檔案會保留 RECORD_LIFETIME 秒 (預設為 3 天)。請參閱「Sun Java System Communications Services 6 2005Q4 Deployment Planning Guide」,以取得歷程資料的記憶體內和磁碟上資源需求的論述。
每個記錄都有三個元件:
電子郵件源資料 (例如訊息封的 From: 和 To: 位址)。當 MTA SMS 通道提交郵件時,將會提供該資料。
唯一的 SMS 來源位址由 SMPP 轉送器產生並插入轉送的 SMS 郵件中。
當遠端 SMSC 的 SMPP 伺服器接受提交時,會傳回結果接收郵件 ID。
閘道 SMPP 轉送器與伺服器使用歷程記錄來處理 SMS 回覆、通知與行動電話發出的郵件。當 SMS 郵件提交至 SMPP 轉送器或伺服器時,以下路由程序就會發生:
SMS 目標位址會與歷程記錄進行比對,查看是否有 SMPP 轉送器先前產生的相符且唯一的 SMS 來源位址。如果找到相符項目,請參閱步驟 6。
如果沒有相符項目,但郵件為 SMS 通知 (SMPP DELIVER_SM PDU),則接收郵件 ID (如果有) 會與歷程記錄進行比較。如果找到相符項目,請至步驟 8。[SMS 閘道伺服器實際允許這些項目存在於 SMPP 轉送或 SMPP 伺服器中。]
如果沒有相符項目,則目標 SMS 位址會與每個已配置的閘道設定檔的 SELECT_RE 選項表示式進行比較。如果找到相符項目,則至步驟 9。
如果沒有相符項目且 SMS 郵件已提交給閘道 SMPP 轉送器,則郵件會轉送至遠端 SMPP 伺服器。
如果沒有相符項目且 SMS 郵件已提交給閘道 SMPP 伺服器,則郵件被確定為無效郵件並會在 SMPP 回應 PDU 中傳回錯誤回應。對於電子郵件至 SMS,最終會產生未遞送通知 (NDN)。
如果找到相符的唯一 SMS 來源位址,則 SMS 郵件會接收進一步檢查,查看是回覆還是通知郵件。若要成為通知郵件,其必須為具有接收郵件 ID 的 SUBMIT_SM PDU。否則,將其視為一個回覆。
如果是回覆,則 SMS 郵件會使用歷程記錄中的源電子郵件資訊轉換成電子郵件。
如果是通知郵件,則 SMS 郵件會依照 RFC 1892-1894 轉換成電子郵件傳送狀態通知 (DSN)。請注意,將遵循原始電子郵件的 ESMTP NOTIFY 旗標 (RFC 1891) (例如,如果 SMS 郵件是「成功」DSN,但原始電子郵件僅請求「失敗」通知,則 SMS 通知會被捨棄)。
如果目標 SMS 位址與已配置的閘道設定檔中的 SELECT_RE 選項相符,則 SMS 郵件會被視為行動電話發出的郵件,並依照閘道設定檔的 PARSE_RE_n 規則轉換回電子郵件。如果轉換失敗,則 SMS 郵件無效且傳回錯誤回應。