Sun Java System Messaging Server 6.3 管理指南

C.2.4 站点定义的地址有效性检查和转换

站点可能想要将有效性检查和转换应用于收件人电子邮件地址(如C.2.1 将电子邮件定向到通道中所述)中已编码的 SMS 目标地址。

前两项任务可专门使用 DESTINATION_ADDRESS_NUMERICDESTINATION_ADDRESS_PREFIX 通道选项来完成。一般情况下,所有这三项任务和其他任务都可使用映射表实现:使用重写规则中的映射表调用,或者使用 FORWARD 映射表。使用重写规则中的映射表调用具有很强的灵活性,包括能够拒绝带有站点定义的错误响应的地址。本节其余部分将只集中介绍这种方法 - 使用重写规则中的映射表调用的方法。

假设目标地址必须仅为数字格式,长度为 10 或 11 位且以字符串 "+1" 为前缀。则其可使用以下重写规则实现

sms.siroe.com      ${X-REWRITE-SMS-ADDRESS,$U}@sms.siroe.com
sms.siroe.com       $?Invalid SMS address

上述第一条重写规则将调用名为 X-REWRITE-SMS-ADDRESS 的站点定义的映射表。该映射表传递电子邮件地址的本地部分,以便进行检查。如果映射进程确定本地部分可接受,则该地址将被接收并重写到 SMS 通道中。如果映射进程不接受本地部分,将应用下一条重写规则。由于是一条 $? 重写规则,所以该地址将被拒绝,并发送错误文本“无效的 SMS 地址”。

X-REWRITE-SMS-ADDRESS 映射表如下所示:它以属性-值对列表格式或仅按原始 SMS 目标地址执行必要的本地部分验证步骤。

X-VALIDATE-SMS-ADDRESS

! Iteratively strip any non-numeric characters 
   $_*$[$ -/:-~]%*  $0$2$R
! Accept the address if it is of the form 1nnnnnnnnnn or nnnnnnnnnn
! In accepting it, ensure that we output +1nnnnnnnnnn
   1%%%%%%%%%%      +1$0$1$2$3$4$5$6$7$8$9$Y
   %%%%%%%%%%       +1$0$1$2$3$4$5$6$7$8$9$Y
! We didn’t accept it and consequently it’s invalid
   *                $N

X-REWRITE-SMS-ADDRESS
    */id=$_*/*       $C$0/id=$|X-VALIDATE-SMS-ADDRESS;$1|/$2$Y$E
    */id=$_*/*       $N
    *                $C$|X-VALIDATE-SMS-ADDRESS;$0|$Y$E
    *                $N

如果使用上述设置,请确保 DESTINATION_ADDRESS_NUMERIC 选项的值为 0(默认值)。否则,"+" 将从 SMS 目标地址中删除。