TCP 包装提供了一种实现访问权控制的方法,即根据访问控制列表 (access control list, ACL) 检查请求特定网络服务的主机的地址。请求将相应地被授权或拒绝。除了提供此项访问控制机制外,TCP 包装还会记录对网络服务的主机请求,这是一项有用的监视功能。可能受到访问控制的网络服务示例包括 rlogind、telnetd 和 ftpd。
从版本 8.12 开始,sendmail 将允许使用 TCP 包装。此项检查不会忽略其他安全标准。通过在 sendmail 中启用 TCP 包装,在准许请求之前将进行检查,以验证网络请求的来源。请参见 hosts_access(4) 手册页。
从 Solaris 9 发行版开始,inetd(1M) 和 sshd(1M) 中将支持 TCP 包装。
有关 ACL 的信息,请参见《系统管理指南:安全性服务》中的“使用访问控制列表保护文件”。
从版本 8.12 开始,sendmail 包括一个附加配置文件 /etc/mail/submit.cf。此submit.cf 文件用于在邮件提交程序模式而非守护进程模式下运行 sendmail。与守护进程模式不同,邮件提交程序模式不要求 root 权限,因此这一新模式可以提供更好的安全性。
请参见以下列出的 submit.cf 功能:
sendmail 使用 submit.cf 在邮件提交程序 (mail-submission program, MSP) 模式下运行,该模式可提交电子邮件并可由程序(如 mailx)以及用户启动。请参阅 sendmail(1M) 手册页中有关 -Ac 选项和 -Am 选项的说明。
submit.cf 可用于以下操作模式中:
-bm,此为缺省操作模式
-bs,它使用标准输入来运行 SMTP
-bt,此为用于解析地址的测试模式
sendmail 在使用 submit.cf 时不会作为 SMTP 守护进程运行。
sendmail,它使用 submit.cf 时将使用仅客户机邮件队列 /var/spool/clientmqueue,该队列中保存未传送至 sendmail 守护进程的邮件。仅客户机队列中的邮件由客户机“守护进程”来传送,该守护进程实际用作客户机队列运行程序。
缺省情况下,sendmail 会定期使用 submit.cf 来运行 MSP 队列(也称为仅客户机队列)/var/spool/clientmqueue。
/usr/lib/sendmail -Ac -q15m |
请注意以下情况:
从 Solaris 9 发行版开始,将自动提供 submit.cf。
安装 Solaris 9 发行版或更新发行版之前,submit.cf 不要求执行任何规划或预备过程。
除非指定配置文件,否则 sendmail 将根据需要自动使用 submit.cf。基本上,sendmail 知道哪些任务适合 submit.cf,哪些任务适合 sendmail.cf。
submit.cf 将不会进行修改。
sendmail.cf 配置文件用于守护进程模式。使用此文件时,sendmail 用作邮件传输代理 (mail transfer agent, MTA),该代理由 root 启动。
/usr/lib/sendmail -L sm-mta -bd -q1h |
请参见以下列出的 sendmail.cf 的其他特性:
除添加 submit.cf 之外,在功能方面还有以下更改:
从 sendmail 版本 8.12 开始,仅有 root 可以运行邮件队列。有关更多详细信息,请参阅 mailq(1) 手册页中介绍的更改。有关新任务的信息,请参阅管理队列目录(任务列表)。
邮件提交程序模式运行时无需 root 权限,这可能会导致 sendmail 无法访问某些文件(例如 .forward 文件)。因此,sendmail 的 -bv 选项为用户提供的输出可能具有误导性。没有切实可行的解决方法。
在 sendmail 版本 8.12 之前,如果不在守护进程模式下运行 sendmail,则只会阻止传入邮件的传送。从 sendmail 版本 8.12 开始,如果不使用缺省配置运行 sendmail 守护进程,则还会阻止外发邮件的传送。客户机队列运行程序(又称为邮件提交程序)必须能够将邮件提交至本地 SMTP 端口上的守护进程。如果客户机队列运行程序尝试打开与本地主机的 SMTP 会话,并且守护进程未侦听 SMTP 端口,则邮件将保留在队列中。缺省配置确实会运行守护进程,因此使用缺省配置时不会出现此问题。但是,如果已禁用守护进程,请参阅使用备用配置管理邮件传送以寻找解决此问题的方法。
下表介绍了 sendmail 的新增或过时的命令行选项。sendmail(1M) 手册页介绍了其他命令行选项。
表 14–19 sendmail 版本 8.12 中新增或过时的命令行选项
选项 |
说明 |
---|---|
表示即使操作模式未指明初始邮件提交,仍希望使用配置文件 submit.cf。有关 submit.cf 的更多信息,请参阅sendmail 版本 8.12 中的配置文件 submit.cf。 |
|
表示即使操作模式指明初始邮件提交,仍希望使用配置文件 sendmail.cf。有关更多信息,请参阅sendmail 版本 8.12 中的配置文件 submit.cf。 |
|
表示要列显每个队列中的项数。 |
|
表示通过命令行提交的邮件将用于中继,而不用于初始提交。如果地址不是全限定地址,则会拒绝该邮件。不会进行公理化。 如 ftp://ftp.sendmail.org 上的 sendmail 分发所包含的发行说明所述,将来的发行版中可能会拒绝形式不正确的邮件。 |
|
将用于系统日志消息的标识符设置为所提供的 tag。 |
|
仅处理其中一个收件人包含此 substring 的作业。添加 ! 之后,该选项仅处理其中一个收件人不包含此 substring 的作业。 |
|
仅处理队列 ID 中包含此 substring 的作业。添加 ! 之后,该选项仅处理队列 ID 中不包含此 substring 的作业。 |
|
仅处理发件人包含此 substring 的作业。添加 ! 之后,该选项仅处理发件人不包含此 substring 的作业。 |
|
一次处理队列中保存的邮件而不使用 fork 系统调用,并在前台运行该进程。请参阅 fork(2) 手册页。 |
|
仅处理 name 队列组中的邮件。 |
|
使用为每个队列派生的单个子项并以特定时间间隔来处理队列中保存的邮件。该子项在队列的每两次运行之间处于休眠状态。这一新选项与 -qtime 类似,后者会定期派生一个子项来处理队列。 |
|
如 ftp://ftp.sendmail.org 上的 sendmail 分发所包含的发行说明所述,在版本 8.12 之前不提供此选项。邮件用户代理应使用 -G 参数。 |
下表介绍了新增的用于 PidFile 和 ProcessTitlePrefix 选项的宏处理参数。有关这些选项的更多信息,请参见 sendmail(1M) 手册页。
表 14–20 用于PidFile 和 ProcessTitlePrefix 选项的参数
宏 |
说明 |
---|---|
${daemon_addr} |
用于提供守护进程地址(例如 0.0.0.0) |
${daemon_family} |
用于提供守护进程系列(例如 inet 和 inet6) |
${daemon_info} |
用于提供守护进程信息(例如 SMTP+queueing@00:30:00) |
${daemon_name} |
用于提供守护进程名称(例如 MSA) |
${daemon_port} |
用于提供守护进程端口(例如 25) |
${queue_interval} |
用于提供队列运行间隔(例如 00:30:00) |
下表介绍了新增的、保留以供 sendmail 程序使用的宏。这些宏的值在内部指定。有关更多信息,请参见 sendmail(1M) 手册页。
表 14–21 sendmail 新增的已定义宏
宏 |
说明 |
---|---|
${addr_type} |
用于将当前地址标识为信封发件人地址或收件人地址。 |
${client_resolve} |
用于保存 ${client_name} 的解析调用结果:OK、FAIL、FORGED 或 TEMP。 |
${deliveryMode} |
用于指定 sendmail 正在使用的当前传送模式,而不是 DeliveryMode 选项的值。 |
${dsn_notify}、${dsn_envid}、${dsn_ret} |
用于保存对应的 DSN 参数值。 |
${if_addr} |
用于为传入连接提供接口的地址,前提是该接口不属于回送网络。此宏对于虚拟驻留特别有用。 |
${if_addr_out}、${if_name_out}、${if_family_out} |
用于避免重用 ${if_addr}。可分别保存以下值。 用于传出连接的接口地址。 用于传出连接的接口主机名。 用于传出连接的接口系列。 |
${if_name} |
用于为传入连接提供接口的主机名,对于虚拟驻留特别有用。 |
${load_avg} |
用于检查并报告运行队列中当前的平均作业数。 |
${msg_size} |
用于在收集邮件之前,在 ESMTP 对话框中保存邮件大小 (SIZE=parameter) 的值。此后,此宏将保存 sendmail 计算的邮件大小并将其用于 check_compat 中。有关 check_compat 的信息,请参阅表 14–25。 |
${nrcpts} |
用于保存经过验证的收件人数。 |
${ntries} |
用于保存尝试传送的次数。 |
${rcpt_mailer}、${rcpt_host}、${rcpt_addr}、${mail_mailer}、${mail_host}、${mail_addr} |
用于保存 RCPT 和 MAIL 参数的分析结果,这是从邮件传送代理 ($#mailer)、主机 ($@host) 和用户 ($:addr) 中解析出的右侧 (right-hand side, RHS) 三重参数。 |
本节中的表介绍了新增的用于生成 sendmail 配置文件的宏。
表 14–22 新增的用于生成 sendmail 配置文件的宏
宏 |
说明 |
---|---|
LOCAL_MAILER_EOL |
用于覆盖本地邮件程序缺省的行结束字符串。 |
LOCAL_MAILER_FLAGS |
用于在缺省情况下添加 Return-Path: 头。 |
MAIL_SETTINGS_DIR |
用于包含邮件设置目录的路径(包括结尾斜杠)。 |
MODIFY_MAILER_FLAGS |
用于改进 *_MAILER_FLAGS。此宏可以设置、添加或删除标志。 |
RELAY_MAILER_FLAGS |
用于为中继邮件程序定义新增标志。 |
使用以下宏可以配置在 sendmail 降低传送速度之前可以接收的命令的最大数目。可在编译时设置这些 MAX 宏。下表中的最大值也表示当前的缺省值。
表 14–23 新增的 MAX 宏
宏 |
最大值 |
每个宏检查的命令 |
---|---|---|
25 |
未知命令 |
|
20 |
NOOP、VERB、ONEX、 XUSR |
|
3 |
HELO、EHLO |
|
6 |
VRFY、EXPN |
|
8 |
ETRN |
通过将宏的值设置为零可以禁用宏检查。
本节中的表介绍了 sendmail 中新增和修订的 m4 配置宏。可使用以下语法来声明这些宏。
symbolic_name(`value') |
如果需要生成新的 sendmail.cf 文件,请参阅第 13 章,邮件服务(任务)中的生成 sendmail.cf 配置文件。
表 14–24 sendmail 中新增和修订的 m4 配置宏
m4 宏 |
说明 |
---|---|
FEATURE() |
有关详细信息,请参阅sendmail 版本 8.12 中对 FEATURE() 声明的更改。 |
此宏可向类 w ($=w) 中添加项。 |
|
用于定义不能伪装的主机或子域的新宏。 |
|
现在,此宏可用于用括号括起来的地址,如 user@[host]。 |
|
使用这些宏时,请在 $=R 中包括 $={VirtHost}。请记住,$=R 是可以中继的主机名集合。 |
有关对 FEATURE() 声明的特定更改信息,请参阅下表。
要使用新增和修订的 FEATURE 名称,请使用以下语法。
FEATURE(`name', `argument') |
如果需要生成新的 sendmail.cf 文件,请参阅第 13 章,邮件服务(任务)中的生成 sendmail.cf 配置文件。
表 14–25 新增和修订的 FEATURE() 声明
FEATURE() 的名称 |
说明 |
---|---|
参数:请参阅以下段落中的示例。 使用此新增的 FEATURE(),可以在由发件人地址和收件人地址组成的访问映射中查找关键字。此 FEATURE() 由字符串 <@> 来分隔。例如 sender@sdomain<@>recipient@rdomain。 |
|
参数:friend(用于启用垃圾邮件-朋友测试)或 hater(用于启用垃圾邮件-攻击者测试)。 可延迟所有检查的新增 FEATURE()。通过使用 FEATURE(`delay_checks'),在客户机分别连接或发出 MAIL 命令时,将不调用规则集 check_mail 和 check_relay, 而是由 check_rcpt 规则集调用上述规则集。有关详细信息,请参阅 /etc/mail/cf/README 文件。 |
|
参数:此 FEATURE() 最多可以接受两个参数:
新增的 FEATURE(),可以多次使用以检查 DNS 查找的返回值。请注意,通过此 FEATURE() 可以指定临时查找失败时的行为。 |
|
参数:域名。 新增的 FEATURE(),它是 dnsbl 的增强版本,可用于检查 DNS 查找的返回值。有关更多信息,请参阅 /etc/mail/cf/README。 |
|
参数:None。 新增的 FEATURE(),使用它还可以将 genericstable 应用于 $=G 的子域。 |
|
参数:有关详细信息,请参阅 http://www.sendmail.org 中的 “Release Notes”。 可实现 LDAP 地址路由的新增 FEATURE()。 |
|
参数:具有 LMTP 功能的邮件程序的路径名。缺省为 mail.local,它在此 Solaris 发行版中具有 LMTP 功能。 该 FEATURE() 现在可将本地邮件程序的传送状态通知 (delivery status notification, DSN) 诊断代码类型设置为正确的值 SMTP。 |
|
参数:无。 可用于避免伪装本地邮件程序的新增 FEATURE()。 |
|
参数:无。 也可用于在访问映射中查找 .domain 的新增 FEATURE()。 |
|
参数:canonify_hosts 或无参数。 该 FEATURE() 现在包括以下功能。 将 CANONIFY_DOMAIN 或 CANONIFY_DOMAIN_FILE 指定的一系列域传递给 $[ 和 $] 运算符进行公理化。 如果将 canonify_hosts 指定为其参数,则可以对仅包含主机名的地址(如 <user@host>)进行公理化。 向包含多个组成部分的地址添加尾随句点。 |
|
参数:无。 这一新增的 FEATURE() 可禁用 m4 生成的配置文件中 sendmail 的缺省设置,以“侦听”多个不同端口,这是 RFC 2476 的实现。 |
|
参数:reject(不允许使用 ! 标记)或 nospecial(允许使用 ! 标记)。 该 FEATURE() 可确定是否允许在地址的本地部分中使用 ! 标记。 |
|
参数:无。 该 FEATURE() 现在可提供标准配置的完整规则集,从而允许执行防垃圾邮件检查。 |
|
参数:无。 通过这一新增的 FEATURE(),可在 sendmail 将地址传递给本地传送代理时保留地址中的 +detail 部分。 |
|
参数:无。 如果使用 LUSER_RELAY,则通过这一新增的 FEATURE() 可以保留收件人主机的名称。 |
|
参数:无。 通过这一新增的 FEATURE(),可以选择基于完整电子邮件地址或基于收件人的域的队列组。 |
|
参数:domain 是一个可选参数。 如果邮件发件人在访问映射中列为 RELAY 并使用 From: 头行来标记,则通过这一新增的 FEATURE() 可进行中继。如果给定可选的 domain 参数,则还会检查邮件发件人的域部分。 |
|
参数:无。 现在,可以使用该 FEATURE() 来应用 $={VirtHost},这是一个新类,用于匹配可由 VIRTUSER_DOMAIN 或 VIRTUSER_DOMAIN_FILE 填充的 virtusertable 项。 FEATURE(`virtuser_entire_domain') 还可以将类 $={VirtHost} 应用于整个子域。 |
表 14–26 不支持的 FEATURE() 声明
FEATURE() 的名称 |
替代 |
---|---|
MASQUERADE_AS(`$S') 将替代 /etc/mail/cf/subsidiary.mc 中的FEATURE(`remote_mode')。$S 是 sendmail.cf 中的 SMART_HOST 值。 |
|
FEATURE(`genericstable')。 |
|
FEATURE(`genericstable')。 |
MAILER() 声明可指定对传送代理的支持。要声明传送代理,请使用以下语法。
MAILER(`symbolic_name') |
请注意以下更改。
在此新版本的 sendmail 中,MAILER(`smtp') 声明现在包括一个附加邮件程序 dsmtp,该邮件程序通过使用 F=% 邮件程序标志可提供即时传送。 dsmtp 邮件程序定义使用新增的 DSMTP_MAILER_ARGS,后者缺省为 IPC $h。
MAILER 使用的规则集的数量已删除。 现在无需按顺序列出 MAILER,但 MAILER(`uucp') 除外。如果使用了 uucp-dom 和 uucp-uudom,则它必须在 MAILER(`smtp') 之后。
有关邮件程序的更多信息,请参阅邮件程序与 sendmail。如果需要生成新的 sendmail.cf 文件,请参阅第 13 章,邮件服务(任务)中的生成 sendmail.cf 配置文件。
下表介绍了新增的传送代理标志,缺省情况下不会设置这些标志。这些单字符标志是布尔型的。通过在配置文件的 F= 语句中包括或排除标志,可以设置或取消设置标志,如以下示例所示。
Mlocal, P=/usr/lib/mail.local, F=lsDFMAw5:/|@qSXfmnz9, S=10/30, R=20/40, Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/, Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990, Mesmtp, P=[IPC], F=mDFMuXa, S=11/31, R=21, E=\r\n, L=990, Msmtp8, P=[IPC], F=mDFMuX8, S=11/31, R=21, E=\r\n, L=990, Mrelay, P=[IPC], F=mDFMuXa8, S=11/31, R=61, E=\r\n, L=2040, |
标志 |
说明 |
---|---|
% |
除非使用 ETRN 请求或以下队列选项之一选择排队的邮件,否则使用此标志的邮件程序不会尝试向邮件的初始收件人或队列运行中传送邮件:-qI、-qR 或 -qS。 |
1 |
此标志可禁用邮件程序发送空字符的功能(例如 \0)。 |
2 |
此标志可禁用 ESMTP 并要求改用 SMTP。 |
6 |
此标志可使邮件程序将头缩减至 7 位。 |
下表介绍了新增的可用于 M 传送代理定义命令的等式。以下语法说明如何在配置文件中已存在的等式后附加新的等式或参数。
Magent_name, equate, equate, ... |
以下示例中包括新的 W= 等式。此等式可指定在发送所有数据后等待邮件程序返回的最长时间。
Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990, W=2m |
在为 m4 配置修改值的定义时,请使用以下示例中提供的语法。
define(`SMTP_MAILER_MAXMSGS', `1000') |
上一示例将 smtp 邮件程序每次连接时传送的邮件数量限制为 1000。
如果需要生成新的 sendmail.cf 文件,请参阅第 13 章,邮件服务(任务)中的生成 sendmail.cf 配置文件。
通常,仅当进行微调时,才会修改 mailer 目录中的等式定义。
此发行版可支持多个队列目录。要使用多个队列,请在配置文件中提供以星号 (*) 结尾的 QueueDirectory 选项值,如以下示例所示。
O QueueDirectory=/var/spool/mqueue/q* |
选项值 /var/spool/mqueue/q* 使用以 “q” 开头的所有目录(或指向这些目录的符号链接)作为队列目录。 请勿在 sendmail 运行时更改队列目录结构。 除非在非守护进程队列运行中使用冗余标志 (-v),否则队列运行会创建一个单独进程来运行每个队列。新项将随机指定给队列。
新增的队列文件命名系统使用的文件名保证在 60 年内唯一。使用此系统,可在不使用复杂的文件系统锁定的情况下指定队列 ID,并简化排队的项在队列之间的移动。
从版本 8.12 开始,仅有 root 才能运行邮件队列。有关更多详细信息,请参阅 mailq(1) 手册页中介绍的更改。有关新任务的信息,请参阅管理队列目录(任务列表)。
为适应信封拆分,现在队列文件名长度为 15 个字符,而不是 14 个字符。将不再支持名称限制为 14 个字符的文件系统。
有关任务信息,请参阅管理队列目录(任务列表)。
以下列表介绍了在将轻量目录访问协议 (Lightweight Directory Access Protocol, LDAP) 用于 sendmail 时的一些更改。
LDAPROUTE_EQUIVALENT() 和 LDAPROUTE_EQUIVALENT_FILE() 允许指定等效的主机名,这些主机名将替换为用于 LDAP 路由查找的伪装域名。有关更多信息,请参阅 /etc/mail/cf/README。
如 ftp://ftp.sendmail.org 上的分发所包含的发行说明所述,LDAPX 映射已重命名为 LDAP。请针对 LDAP 使用以下语法。
Kldap ldap options |
此发行版支持一次 LDAP 查找返回多个值。 请使用 -v 选项将要返回的值放入用逗号分隔的字符串中,如下所示。
Kldap ldap -v"mail,more_mail" |
如果 LDAP 映射声明中未指定任何 LDAP 属性,则会返回找到的所有匹配属性。
此版本的 sendmail 可防止使用 LDAP 别名文件规范中带引号的关键字和值字符串内的逗号来将单个项划分为多个项。
此版本的 sendmail 为 LDAP 映射提供了一个新选项。使用选项 -Vseparator,可指定一个分隔符,这样查找便可返回由相关的 separator 分隔的属性和值。
除了使用 %s 标记分析 LDAP 过滤器规范外,还可以使用新标记 %0 对关键字缓冲区进行编码。%0 标记会对 LDAP 特殊字符应用字面含义。
以下示例显示了这些标记在用于 “*” 查找时的差异。
表 14–29 标记的比较
LDAP 映射规范 |
规范等效形式 |
结果 |
---|---|---|
-k"uid=%s" |
-k"uid=*" |
匹配具有用户属性的任何记录 |
-k"uid=%0" |
-k"uid=\2A" |
匹配具有名称 “*” 的用户 |
下表介绍了新增的 LDAP 映射标志。
表 14–30 新增的 LDAP 映射标志
标志 |
说明 |
---|---|
-1 |
要求返回单个匹配项。如果返回多个匹配项,则结果与未找到任何记录等效。 |
-r never|always|search|find |
设置 LDAP 别名取消引用选项。 |
-Z size |
限制要返回的匹配项数。 |
原有的 [TCP] 内置邮件程序不可用。请改用 P=[IPC] 内置邮件程序。进程间通信 ([IPC]) 内置邮件程序现在可向支持它的系统中的 UNIX 域套接字进行传送。可将此邮件程序与侦听指定套接字的 LMTP 传送代理结合使用。示例邮件程序可能如下所示。
Mexecmail, P=[IPC], F=lsDFMmnqSXzA5@/:|, E=\r\n, S=10, R=20/40, T=DNS/RFC822/X-Unix, A=FILE /var/run/lmtpd |
现在,系统将检查 [IPC] 邮件程序中的第一个邮件程序参数是否具有合法值。下表提供了第一个邮件程序参数的可能值。
表 14–31 第一个邮件程序参数的可能值
值 |
说明 |
---|---|
A=FILE |
用于 UNIX 域套接字传送 |
A=TCP |
用于 TCP/IP 连接 |
A=IPC |
不再用作第一个邮件程序参数 |
集 |
说明 |
---|---|
将在头之间收集的信息关联并检查是否缺少头。此规则集用于宏存储映射,并在收集所有头后调用。 |
|
使用 ETRN 命令(与 check_rcpt 使用 RCPT 类似)。 |
|
使用 EXPN 命令(与 check_rcpt 使用 RCPT 类似)。 |
|
使用 VRFY 命令(与 check_rcpt 使用 RCPT 类似)。 |
以下列表介绍了新增的规则集功能。
编号的规则集也已命名,但仍然可以按编号访问相应的规则集。
H 头配置文件命令允许为头检查指定缺省的规则集。仅当未对个别头指定各自的规则集时,才会调用此规则集。
如果配置文件的版本为 9 或更高版本,则不删除规则集中的注释(即括号内的文本)。 例如,以下规则可匹配输入 token (1),但不匹配输入 token。
R$+ (1) $@ 1 |
sendmail 即使由于 TCP 包装或 check_relay 规则集而拒绝命令,也会接受 SMTP RSET 命令。
如果多次设置 OperatorChars 选项,则会收到警告。 另外,请勿在定义规则集之后设置 OperatorChars。
如果声明的规则集无效,则会忽略该规则集的名称以及其中的各行。该规则集行不会添加至 S0。
从 Solaris 10 发行版开始,为了支持只读的 /usr 文件系统,/usr/lib/mail 目录的内容已移至 /etc/mail/cf 目录。有关详细信息,请参阅/etc/mail/cf 目录的内容。但请注意,shell 脚本 /usr/lib/mail/sh/check-hostname 和 /usr/lib/mail/sh/check-permissions 现在位于 /usr/sbin 目录中。请参见用于邮件服务的其他文件。为了实现向下兼容,符号链接指向每个文件的新位置。
/usr/lib/mail/cf/main-v7sun.mc 的新名称是 /etc/mail/cf/cf/main.mc。
/usr/lib/mail/cf/subsidiary-v7sun.mc 的新名称是 /etc/mail/cf/cf/subsidiary.mc。
helpfile 现在位于 /etc/mail/helpfile 中。旧名称 (/etc/mail/sendmail.hf) 具有指向新名称的符号链接。
trusted-users 文件现在位于 /etc/mail/trusted-users 中。在升级过程中,如果检测到旧名称 (/etc/mail/sendmail.ct) 而未检测到新名称,则会创建从旧名称到新名称的硬链接。否则,不会进行任何更改。缺省内容为 root。
local-host-names 文件现在位于 /etc/mail/local-host-names 中。在升级过程中,如果检测到旧名称 (/etc/mail/sendmail.cw) 而未检测到新名称,则会创建从旧名称到新名称的硬链接。否则,不会进行任何更改。缺省内容的长度为零。
从 8.12 版本的 sendmail 开始,在配置中使用的 IPv6 地址应以 IPv6: 标记作为前缀,以正确标识地址。如果不标识 IPv6 地址,则不会使用前缀标记。