在修改配置文件main.cf和virtual后,要使更改立即生效,应分别执行/usr/sbin目录下以下的两条命令。
postmap /etc/postfix/virtual postfix reload 其中,第1条命令用来将文件/etc/postfix/virtual生成Postfix可以读取的数据库文件/etc/postfix/virtual.db;第2条命令用于重新加载Postfix主配置文件main.cf文件。这两条命令的执行情况如图9-5所示。
图9-5 使虚拟别名域设置生效
用户别名的配置
使用用户别名最重要的功能是实现群组邮递(也称邮件列表)的功能,通过它可以将发送给某个别名邮件地址的邮件转发到多个真实用户的邮箱中。与虚拟别名域不同的是,用户别名机制是通过别名表(aliases)在系统范围内实现别名邮件地址到真实用户邮件地址的重定向的。
下面通过一些例子来说明用户别名的设置方法。
【例1】假设一个班级中的每位同学都在本地Linux系统中拥有真实的电子邮件账户,现在要发信给班上的每一位同学,那么可以在别名表中进行如下定义:
st0322: st0322001,st0322002,st0322003,st0322004 这里的st0322是用户别名,它并不是一个Linux系统中的真正用户或组。当发信给st0322@gdvcp.net这个邮件地址时,这封邮件就会自动发送给st0322001@gdvcp.net、st0322002@gdvcp.net、st0322003@gdvcp.net和st0322001@gdvcp.net。
此外,当真正用户人数比较多时,还可以将这些用户定义到一个文件中,然后用include参数来引用该文件。例如,先用vi编辑器生成一个/etc/mail/st0323文件,其内容为:
st0323001,\\ st0323002,\\ st0323003,\\ ? st0323050 然后,在别名表中进行如下定义:
st0323: :include: /etc/mail/st0323 如果Linux系统中的用户账户名太长或者不希望让外人知道它,那么可以为它设置一个或多个用户别名,平时发邮件时只需使用别名邮件地址,邮件服务器就会自动将邮件转发给真实用户,甚至还可以将邮件转发到该用户在Internet中的邮件信箱中。
【例2】某用户在本地Linux系统中的用户账户名为jczliuming,并且他在Internet中拥有一个电子邮件地址为liuming86@163.com。如果为它设置多个用户别名(如jcz01、lm01等),那么在别名表中可进行如下定义。
jcz01: jczliuming lm01: jczliuming,liuming86@163.com 在实际应用中,要实现上述用户别名,还必须按以下步骤进行。
打开Postfix主配置文件/etc/postfix/main.cf,应确认文件中包含以下两条默认语句。
alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases 这里,参数alias_maps用来指定含有用户别名定义的文件路径,alias_database用来指定别名表数据库文件路径。
编辑配置文件/etc/aliases,进行如下定义。
st0322: st0322001,st0322002,st0322003,st0322004 st0323: :include: /etc/mail/st0323 jcz01: jczliuming lm01: jczliuming,liuming86@163.com 注意,别忘了要编辑生成文件/etc/mail/st0323。
在修改配置文件main.cf和aliases后,要使更改立即生效,应分别执行/usr/sbin目录中的以下两条命令。
postalias /etc/aliases postfix reload 其中,第1条语句用来将文件/etc/aliases生成Postfix可以读取的数据库文件/etc/aliases.db。这两条命令的执行情况如图9-6所示。
图9-6 使用户别名设置生效
注记:用户别名可以实现邮件列表的功能,但是只有root用户才能修改aliases文件, 那么普通用户能否实现自己的邮件列表功能呢?可以,这需要通过在该用户账户的主目录 下建立.forward文件来实现,具体实现方法请参考有关书籍。
SMTP认证的配置
如果任何人都可以通过一台邮件服务器来转发邮件,会有什么后果呢?很可能这台邮件服务器就成为了各类广告与垃圾信件的集结地或中转站,网络带宽也会很快被耗尽。为了避免这种情况的出现,Postfix默认不会对外开放转发功能,而仅对本机(localhost)开放转发功能。但是,在实际应用中,必须在Postfix主配置文件中通过设置mynetworks、relay_domains参数来开放一些所信任的网段或网域,否则该邮件服务器几乎没有什么用处。在开放了这些所信任的网段或网域后,还可以通过设置SMTP认证,对要求转发邮件的客户端进行用户身份(用户账户名与密码)验证。只有通过了验证,才能接收该用户寄来的邮件并帮助转发。
目前,比较常用的SMTP认证机制是通过Cyrus SASL包来实现的。
在默认情况下,Postfix邮件主机可以接收和转发来自什么地方的邮件呢?
注记: (1)默认情况下,Postfix接收符合以下条件的邮件: 目的地为$inet_interfaces的邮件; 目的地为$mydestination的邮件; 目的地为$ virtual_alias_maps的邮件。 (2)默认情况下,Postfix转发符合以下条件的邮件: 来自客户端IP地址符合$mynetworks的邮件; 来自客户端主机名称符合$relay_domains及其子域的邮件; 目的地为$relay_domains及其子域的邮件。 此外,还可以通过其他方式来实现更强大的控制,如STMP认证就是其中的一种方式。 Cyrus SASL是Cyrus Simple Authentication and Security Layer的简写,它最大的功能是为应用程序提供了认证函数库。应用程序可以通过函数库所提供的功能定义认证方式,并让SASL通过与邮件服务器主机的沟通从而提供认证的功能。
下面介绍使用Cyrus SASL包实现SMTP认证的具体方法。
1.Cyrus-SASL认证包的安装
默认情况下,Red Hat Enterprise Linux安装程序会自动安装Cyrus-SASL认证包。读者可使用下面的命令检查系统是否已经安装了Cyrus-SASL认证包或查看已经安装了何种版本。
rpm -qa | grep sasl 命令执行结果如图9-7所示,这表示Cyrus-SASL已安装,它的版本为2.1.22-4(V2版),但它的相关程序还没有安装完全。
图9-7 检查系统是否已经安装了Cyrus-SASL