可以本地化传送状态通知邮件,以便将邮件以不同的语言返回给不同用户。例如,可以将法语通知返回给首选使用法语的用户。
本地化或自定义状态通知邮件包括两个步骤:
创建一组本地化/自定义的 return_*.txt 邮件文件,并将每组文件存储在单独的目录中。构造和修改状态通知中说明了此操作
设置 NOTIFICATION_LANGUAGE 映射表。
NOTIFICATION_LANGUAGE 映射表(位于 msg_svr_base/config/mappings 中)根据原始邮件(导致系统发出通知的邮件)的属性(例如,语言、国家/地区、域或地址),指定要使用的一组本地化或自定义的通知邮件文件。
原始发件人的邮件将被解析以确定状态通知类型、源通道、首选语言、返回地址及第一收件人。根据该表的构造方式,将根据以上的一个或多个属性来选择一组通知文件。
NOTIFICATION_LANGUAGE 映射表的格式如下所示。由于印刷原因,该样例条目行经过了换行。实际条目应显示在一行中。
NOTIFICATION_LANGUAGE dsn-type-list|source-channel|preferred-language|return-address \ |first-recipient $Idirectory-spec |
dsn-type-list 是以逗号分隔的传送状态通知类型列表。如果指定了多种类型,则这些类型必须由逗号分隔,中间不能包含空格(空格将终止映射表条目的模式)。这些类型如下:
failed—通用的永久性错误消息(例如,无此用户)。使用 return_failed.txt 文件。
bounced—与手动“退回”结合使用的通知邮件。由邮寄主管完成。使用 return_bounced.txt 文件。
timedout—MTA 无法在允许的传送时间内传送邮件。邮件将被返回。使用 return_timedout.txt 文件。
delayed—MTA 一直无法传送邮件,但将继续尝试传送。使用 return_delayed.txt 文件。
deferred—与 "delayed" 类似的未传送通知,但没有指示 MTA 将继续尝试传送的时间。使用 return_deferred.txt 文件。
forwarded—为此邮件请求了传送回执,但是该邮件现已被转发给不支持此类回执的系统。使用 return_forwarded.txt 文件。
source-channel 是生成通知邮件的通道,即邮件当前排队的通道。例如,ims-ms 对应于邮件存储的传送队列,tcp_local 对应于出站 SMTP 队列,等等。
preferred-language 是正在处理的邮件(为其生成通知的邮件)中所使用的语言。此信息的源最初是 accept_language 字段。如果该字段不存在,则使用 Preferred-language: 标题字段和 X-Accept-Language: 标题字段。有关标准语言代码值的列表,请参阅文件 msg_svr_base/config/languages.txt。
如果此字段不为空,则它将成为对 Preferred-language: 或 X-Accept-language: 标题行指定的邮件创始者。因此,您可以在此字段中找到无意义的字符。
return-address 是原始邮件的信封的 From: 地址。它是要向其发送通知邮件的信封地址,因此也是要使用的语言的指示符。
first-recipient 是原始邮件发往的信封的 To: 地址(如果邮件无法到达多个收件人处则为第一个地址)。例如,在通知“无法将您的邮件传送至 dan@siroe.com 中”的情况下,dan@siroe.com 即为报告的信封 To: 地址。
directory-spec 是是包含要使用的 return_*.txt 文件的目录(如果映射表探测匹配)。请注意,$I 必须位于目录规范之前。
例如,在 /lc_messages/table/notify_french/ 目录中存储法语通知文件 (return_*.txt) 以及在 /lc_messages/table/notify_spanish/ 目录下的 return_*.txt 文件中存储西班牙语通知文件的站点可能使用如下所示的表。注意,每个条目的开始处都必须有一个或多个空格,并且条目之间可以不含空行。
NOTIFICATION_LANGUAGE ! Preferred-language: header value specified ! *|*|fr|*|* $I/lc_messages/table/notify_french/ *|*|es|*|* $IIMTA_TABLE/notify_spanish/ *|*|en|*|* $I/imta/lang/ ! ! If no Preferred-language value, then select notification based on the ! country code in the domain name. EX: PF=French Polynesia; BO=Bolivia ! *|*|*|*.fr|* $I/imta/table/notify_french/ *|*|*|*.fx|* $I/imta/table/notify_french/ *|*|*|*.pf|* $I/imta/table/notify_french/ *|*|*|*.tf|* $I/imta/table/notify_french/ *|*|*|*.ar|* $I/imta/table/notify_spanish/ *|*|*|*.bo|* $I/imta/table/notify_spanish/ *|*|*|*.cl|* $I/imta/table/notify_spanish/ *|*|*|*.co|* $I/imta/table/notify_spanish/ *|*|*|*.cr|* $I/imta/table/notify_spanish/ *|*|*|*.cu|* $I/imta/table/notify_spanish/ *|*|*|*.ec|* $I/imta/table/notify_spanish/ *|*|*|*.es|* $I/imta/table/notify_spanish/ *|*|*|*.gp|* $I/imta/table/notify_spanish/ *|*|*|*.gt|* $I/imta/table/notify_spanish/ *|*|*|*.gy|* $I/imta/table/notify_spanish/ *|*|*|*.mx|* $I/imta/table/notify_spanish/ *|*|*|*.ni|* $I/imta/table/notify_spanish/ *|*|*|*.pa|* $I/imta/table/notify_spanish/ *|*|*|*.ve|* $I/imta/table/notify_spanish/ |
安装时将提供默认的 mappings.locale 文件,并将其包含在启用通知语言映射的 mappings 文件中。要禁用通知语言映射,请注释以下包含行:
! <IMTA_TABLE:mappings.locale
(请阅读该文件中的注释并根据您的需要进行修改。)