Postfix邮件系统(二)

具体步骤:

1. 设置Cyrus SASL函数库,并启动saslauthd服务

建立SMTP认证配置文件/usr/lib/sasl2/smtpd.conf(注意不要将文件名smtpd.conf误写为smtp.conf)。在该配置文件中设置了使用saslauthd服务作为认证方式,配置内容可参考/usr/lib/sasl2/Sendmail.conf文件。

clip_image002clip_image004clip_image006

2. 修改main.cf配置文件,添加SMTP认证配置,并重载服务

clip_image008clip_image010clip_image012

在上述配置参数中,SMTP认证相关的几行设置含义如下:

? mynetworks用来控制可以通过本服务器外发邮件的网络地址或IP地址,设置为127.0.0.1是为了确保后面的Web邮箱系统可以正常发送邮件。

? smtp_recipient_restrictions:设置收件人地址过滤规则,其匹配策略是“从上至下逐条检测,有匹配即停止”。其中,常用的几个值如下所述:

u permit_mynetworks允许IP为mynetworks的客户使用本邮件系统发送邮件。

u permit_sasl_authenticated允许通过SMTP认证的用户向外发送邮件。

u reject_unauth_destination当收件人地址不包括在Postfix的授权网络时,将拒绝发送该邮件。授权网络包括由inet_interfaces、mydestination、relay_domain等配置参数指定的域及其子域。

启用上述SMTP认证配置以后,只有通过认证的用户才允许向外域发送邮件,否则只能够给本域内的其他用户发送邮件。

n 验证SMTP发信认证

1. 测试SMTP发信认证——telnet方式

1) 验证不使用SMTP认证的情况

第10章使用telnet命令做发信测试时,并未提供用户名、密码等认证信息,这种方式表示不使用SMTP认证。若服务器要求进行SMTP认证,但客户端未使用认证,则发信时将会受到限制。例如,尝试xiaoqi@benet.com给外部邮箱zhaoliu@accp.com发送邮件时,将会受到“Relay access denied”的拒绝发送反馈。

clip_image014

2) 验证使用SMTP认证的情况

若要使用SMTP发信认证,在telnet命令中应改用“EHLO”(而不是HELO)来宣告本机地址,并通过“AUTH LOGIN”进行登录认证,然后才能够正常发送邮件。用户名、密码字串默认使用BASE64编码的加密格式,使用openssl工具可以生成。

clip_image016

测试过程中,建议直接复制上述加密字串进行使用,避免出现输入错误的情况。当通过SMTP认证以后,用户再次从xiaoqi@benet.com给外部邮箱zhaoliu@accp.com发送邮件时,将会成功提交给Postfix服务器。

clip_image018clip_image020

2. 测试SMTP发信认证——Outlook

1) 验证不使用SMTP认证的情况

使用Office Outlook用lisi@benet.com给zhaoliu@accp.com发送一封外网邮件。如图所示:

clip_image022

点击发送后,会立马收到一封邮件服务器反馈的无法到达收件人的“未传递:……”的退信邮件。

clip_image024

2)验证使用SMTP认证的情况

在Outlook中,若SMTP邮箱服务器要进行认证,则应该修改邮箱属性。通过菜单“工具”→“账户设置”,找到并打开邮箱账户lisi@benet.com的属性窗口,然后点击“其他设置”。如图所示:

clip_image026

在“Internet电子邮件设置”窗口中,选择“发送服务器”选项卡,选中“我的发送服务器(SMTP)要求验证”,然后点击“确定”。如图所示:

clip_image027

至于登录设置,一般保持默认的“使用与接收邮件服务器相同的设置”即可;或者也可以选中“登录使用”,然后填写用于验证的用户名、密码。

再次以lisi@benet.com给外部邮箱zhaoliu@accp.com发送邮件,将成功通过认证并将邮件内容提交给Postfix服务器。

n 部署并配置Squirrelmail

Squirrelmail是使用PHP开发的一套网页程序,可以与Postfix、Dovecot很好的协作,通过Web界面提供邮件发送、接收和管理操作。

1. 将SquirrelMail部署到网站目录

将程序源码包、语言包释放后复制到网站目录中,其部署位置取决以访问路径,应根据实际情况确定。这里以httpd服务器为例,网站根目录对应为/var/www/html/,访问SquirrelMail系统的URL为http://mail.bebent.com/webmail/

clip_image029

2. 创建数据目录、附件目录

通过浏览器访问Web邮箱时需要提交邮件内容、上传附件等相关操作,因此需要创建相应的数据目录、附件目录,并确保网站运行用户(如daemon)对上述目录有写入权限。

clip_image031

3. 创建主配置文件config.php

SquirrelMail的主配置文件为config.php,位于子目录config/中。主配置文件通常并不存在,需要参考默认配置手动创建。适当修改配置文件,设置界面语言、收发信服务器地址、数据目录和附件目录等相关信息。

clip_image033clip_image035

上述配置内容中,收发信服务器的地址、端口号一般为默认,不需要修改。但数据目录、附件目录、界面语言等应根据需要进行调整。

4. 访问Web邮箱系统

确认Web服务应经运行,通过浏览器访问http://mail.benet.com/webmail/,可以看到SquirrelMail提供的Web邮箱登录界面,如图所示。使用正确的用户名、密码进行登录,即可使用Web邮件系统。

clip_image037

5. 使用Squirrelmail收发邮件

成功登录Squirrelmail以后,可以看到一个典型的Web邮件系统操作界面,如图所示。通过此Web邮件系统,用户可以完成收信、发信等各种操作。

clip_image039

注意:SquirrelMail的中文界面使用的是汉化语言包,个别细节处的汉化并不十分完善。另外,在Web界面操作过程中偶尔会出现一些PHP警告信息,一般直接刷新页面后,警告信息即会自动消失。

n 通过别名设置邮件组

1. Postfix的查询表

Postfix服务器在操作过程中经常需要做各式各样的转换与查询,如判断客户机是否来自授权网络、设置群发邮件的用户成员等,这种包含了某种对应关系的数据集合称为查询表。

由于main.cf文件的配置格式限制,逐一描述类似的所有映射记录将会导致配置文件的易读性非常差。在实际应用中,通常把这些对应关系都写入到另外一个文件——查询表中,查询表保存了关键字(key)和一组值(value)之间的对应关系。

对于邮件组来说,可以通过配置参数“alias_maps”来指定别名查询表的存放位置,如/etc/aliases的hash数据文件。

clip_image041clip_image043clip_image045

2. 设置邮件组——别名查询表

别名查询表文件一般位于/etc/aliases,需要与Postfix服务器的“alias_map”配置参数相对应。在该文件中,每一行对应一条邮件组记录,格式为“别名:地址1,地址2,地址3,……”

clip_image047clip_image049

需要注意的是,在上述别名记录中,邮件组的成员要求是服务器中实际存在的系统用户账号,而邮件组本身只作为一个映射的别名,并不需要建立同名的系统用户。

修改/etc/aliases查询表的内容以后,必须使用newaliases命令更新数据库,以便重新生成/etc/aliases.db数据文件,Postfix系统将识别并使用/etc/aliases.db文件中的邮件组。

clip_image051

3. 测试群发邮件

通过前两个步骤的设置以后,就可以通过邮件组地址群发邮件了。

n 邮件大小及邮箱空间限制

1. 限制用户可发送的邮件大小

Postfix系统默认仅支持投递10MB大小的邮件,此大小指的是经过BASE64编码后的邮件大小,因此用户所提交邮件的实际限制还要更小一些。若要更改此限制,应在main.cf主配置文件中添加配置参数“message_size_limit”。例如:执行以下操作可以将可发送的邮件大小限制为50MB。

clip_image053clip_image055clip_image057clip_image059

当用户提交的邮件大小超过限制时,Postfix服务器将会拒绝发送。

n 限制用户的邮箱空间大小

在Postfix邮件系统中,根据邮件用户的类型、邮件存储的方式不同,可以分别采取不同的方法来限制用户的邮箱空间大小。需要注意的是,所设置的邮箱空间限制应大于邮件大小限制。

? 使用quota磁盘配额:适用于Mailbox或Maildir两种存储方式。针对使用Linux系统用户作为邮件账户的情况,建议采用这种方式。如限制xiaoqi、lisi等邮件用户在/home分区最多只能使用500MB磁盘空间。

? 配置参数mailbox_size_limit:仅适用于Mailbox存储方式,默认的限制为50MB。由于Mailbox存储方式使用的不同,此配置参数也较少使用。

? 配置参数virtual_mailbox_limit:适用于Mailbox或Maildir两种存储方式,但只针对虚拟用户(非系统用户)。此配置参数需要对Postfix安装VDA补丁以后才能发挥作用。

当用户的邮箱空间已满时,客户端将无法再向该邮箱发送、投递新的邮件。

n SMTP认证机制取决于三个组件:Cyrus-SASL函数库、saslauthd服务、Postfix服务。