1. 实验环境:
Linux rhel6.5作为邮件服务器,IP:192.168.20.20
Windows server 2008上安装Foxmail,作为邮件测试的客户端,IP:192.168.20.130
Postfix邮件系统(一)
2. 实验步骤:
(1)前期准备
1.1> 配置邮件服务器端的IP地址,并重新启动网络服务;
1.2> 清除防火墙规则,禁用seLinux服务;
注:一般情况下,系统会自带sendmail服务,由于Postfix系统兼容并沿用了sendmail的部分设置,为了避免发生端口冲突、程序冲突等现象,应将系统自带的sendmail服务停用,并将默认启动状态设为关闭;
1.3> 如下所示,可以发现系统并没有安装sendmail服务,所以应该先安装sendmail服务;
1.4> 将sendmail服务停用,并将默认启动状态设为关闭;
1.5> 因为需要Postfix支持SASL认证(通过软件包cyrus-sasl),所以应确认是否将需要的相关软件包已安装好。
1.6> 查看之后,发现缺少cyrus-sasl-devel软件包,所以,需要安装缺少的软件包;
(2)Postfix
2.1> 由于我们需要安装postfix的源码包,所以需要先卸载postfox RPM包;
2.2> 源码编译及安装;
1)为了加强邮件服务的权限控制,需要创建专门的运行组账号postfix和postdrop,以及用户账号postfix。运行用户不需要直接登录到系统,也无需创建宿主文件夹。如下所示:系统中已经存在组账号postfix和postdrop;只需要将用户账户postfix加入到运行组账户postdrop中;
2)解包
将下载的postfix源码包解压,放到/usr/src/目录下, 并查看解压后的内容;
3)在配置Postfix软件包时,需要db*-devel包的支持,所以,首先查看系统是否安装了db*-devel包,如果没有,则需要进行安装;
4)配置
Postfix软件包的配置步骤使用“make makefiles”进行,具体配置选项可以参考源码目录中README_FILES/文件下的说明文件。例如,若要使Postfix支持发信认证,可参考文件SASL_README中的相关信息。
其中,编译参数CCARGS和AUXLIBS的作用如下:
注:1. 如果配置写错误,需要重新配置,首先输入“make makefies clean”命令清除。
2.如果配置失败,可能是缺少db*-devel包。
5)编译并安装;
注:如果编译失败,除了缺少ncurses-devel包之外,可能还缺少cyrus-sasl*包。
执行make install命令以后,最后阶段会需要设置一些安装参数,一般直接按回车键接受默认或自动识别的配置即可。完成安装以后,应执行postconf –a命令检查所支持的认证方式,若输出结果中未包含“cyrus”,则应检查配置步骤,纠正错误后重新进行配置、编译并安装
6)如下图所示:输出结果中包含“cyrus”和“dovecot”
2.3> Postfix服务控制;
1)Postfix邮件系统的控制主要通过/usr/sbin/postfix命令进行,结合start、stop、check、reload选项分别实现启动、停止、检查、重载服务的操作。
需要注意的是,实际监听服务的进程名并不是postfix,而是master
2)当重新调整邮件服务配置以后,可以通过check选项进行基本的语法检查,检查无误后再通过reload选项来重载服务。
主要目录和配置文件
主要目录
主要配置文件
为了避免配置参数过多带来的干扰,提高易读性,建议对main.cf配置文件进行适当的简化,只保留与默认配置不同的参数。
2.4> 配置SMTP发信服务;
在整个电子邮件系统中,postfix基于SMTP协议提供邮件传递服务,并负责将邮件分发到用户的邮箱空间。对postfix服务的配置主要通过修改主配置文件/etc/postfix/main.cf来进行。
在main.cf文件中,以“#”号开头的行表示注释信息,其他行表示有效设置。设置行的格式与为shell变量赋值的形式非常类似,采用“配置参数=值”的形式,其中等号两边的空格可有可无。当某个配置参数包含多个值时,使用逗号或空格进行分隔,也允许换行进行分隔,但行首至少应有一个空格。
1)设置main.cf,并启动服务
在上述配置中,将mydestination的值设置为“$mydomain,$myhostname”,表示将@topsecedu.com和@mail.topsecedu.com域作为本地目标域,允许投递到本地邮箱空间。各用户的邮件将被保存到宿主目录下的Maildir/文件夹中。
邮箱空间用来存放每个用户的电子邮件内容。在postfix服务器中,支持两种最常见的邮箱存储方式:Mailbox、Maildir(当指定的存储位置最后一个字符为“/”时,自动使用Maildir存储方式)。
2)添加邮箱账号
Postfix服务器默认使用本机中的系统用户作为邮件账号,因此使用时只需要添加Linux用户账号即可。测试时,可以添加两个邮件账号yxz和cqq,并为其设置密码。
3)SMTP发送邮件测试
将postfix服务器交付使用之前,最好先在本机测试一下发信功能是否正常。命令行中的测试工作可以通过telnet命令进行。如果没有安装telnet服务,则需要进行安装;
4)因为需要telnet mail.topsecedu.com,所以需要将IP与域名的对应关系写入到hosts文件中;
5)在本机测试一下发信功能是否正常。命令行中的测试工作可以通过telnet命令进行。例如:可以连接到邮件服务器的25端口,并输入相关的SMTP命令,以邮件账户[email protected]作为发件人,给[email protected]发送一封测试邮件
6)邮件发送并投递成功以后,可以到服务器中cqq用户的宿主目录下进行查看,新接收到的邮件保存在Maildir/new/目录中。
通过以上测试结果,不难发现已经能够通过postfix服务器发送并投递邮件了,但是还只能在服务器本机查看收到的邮件。若要使收件人能够从其他主机查收邮件,还需要进一步安装POP3或IMAP服务器,以提供邮件的下载服务。
(3)配置POP/IMAP收信服务
Dovecot是一个安全性较好的POP3/IMAP服务器软件,响应速度快而且扩展性好。Dovecot默认也使用Linux的系统用户,并通过PAM(Pluggable Authentication Module,可插拔认证模块)机制进行身份认证,只有通过认证后才允许用户收取邮件。
3.1> 预先创建运行用户;
3.2> 编译安装Dovecot软件包;
1)将dovecot的压缩包进行解压;
2)在编译安装之前,先确认pam-devel包是否安装。如果没有安装,必须先安装成功后,然后再配置;
3)进行配置,并指定配置文档的父目录;
4)编译并安装
5)将dovecot添加为系统服务;
3.3> 建立配置文件,并启动服务;
1)建立配置文档
Dovecot的配置文件位于/etc/dovecot/目录下,主配置文件为dovecot.conf,默认并没有此文件,需要参考样例目录重新创建。为了方便以后的扩展配置,建议将各种样例配置文件都复制到/etc/dovecot/目录下。
若要支持系统用户认证,还应建立相应的PAM认证文件/etc/pam.d/dovecot,具体内容请参考/etc/pam.d/目录下的其他文件
2)调整主配置文件
为了降低初学难度,这里只使用系统用户认证,而并不使用SSL等安全机制。因此需要修改主配置文件dovecot.conf,将“!include conf.d/*.conf”行改为“!include conf.d/10-auth.conf”,并禁用SSL机制,允许在验证时使用明文的用户名和密码。除此之外,还需要指定邮箱格式及存储位置。
3)启动dovecot服务,并确认监听状态
Dovecot默认已配置为监听POP3/IMAP邮件协议,因此启动dovecot服务后,可以查看对TCP端口143、110的监听。
3.4> POP3接收邮件测试;
使用telnet连接到Dovecot邮件服务器的110端口,输入POP3操作命令,以邮箱账户[email protected]的身份查收邮件内容。测试过程如下所述:
通过以上测试结果,不难发现用户已经能够通过Dovecot服务器收取邮件。该服务器具备了SMTP发信功能、POP3/IMAP收信功能,一台简单的邮件服务器的设置就基本上大功告成了。
(4)测试发信、收信功能
4.1> 在Windows server2008上安装了Foxmail,将Windows中的hosts文件进行更改;添加如下信息;
4.2> 添加邮箱账户;
4.3> 发送测试邮件;
4.4> 接收测试邮件;
4.5> 在测试收信、发信的过程中,若出现失败的情况,应及时查看/var/og/maillog邮件进出日志,并根据相关信息分析、排查故障。
邮件系统的角色
邮件通信协议
Postfix邮件系统(二)
具体步骤:
(1)更改配置文件,添加SMTP认证配置
1.1> 设置Cyrus SASL函数库,并启动saslauthd服务;
建立SMTP认证配置文件/usr/lib64/sasl2/smtpd.conf(注意不要将文件名smtpd.conf误写为smtp.conf)。在该配置文件中设置了使用saslauthd服务作为认证方式,配置内容可参考/usr/lib/sasl2/Sendmail.conf文件。
1.2> 修改main.cf配置文件,添加SMTP认证配置,并重载服务;
添加如下信息:
smtpd_sasl_auth_enable=yes //启用SMTP认证
smtpd_sasl_security_options=noanonymous //禁止匿名使用SMTP服务
mynetworks=127.0.0.1
smtpd_recipient_restrictions= //启用接收地址过滤
permit_mynetworks,
permit_sasl_authenticated, //允许通过验证的用户
reject_unauth_destination //禁止未授权的目标地址
在上述配置参数中,SMTP认证相关的几行设置含义如下:
启用上述SMTP认证配置以后,只有通过认证的用户才允许向外域发送邮件,否则只能够给本域内的其他用户发送邮件。
(2)验证SMTP发信认证
2.1> 测试SMTP发信认证——telnet方式;
1)验证不使用SMTP认证的情况
使用telnet命令做发信测试时,并未提供用户名、密码等认证信息,这种方式表示不使用SMTP认证。若服务器要求进行SMTP认证,但客户端未使用认证,则发信时将会受到限制。例如,尝试[email protected]给外部邮箱[email protected]发送邮件时,将会受到“Relay access denied”的拒绝发送反馈。
2)验证使用SMTP认证的情况
若要使用SMTP发信认证,在telnet命令中应改用“EHLO”(而不是HELO)来宣告本机地址,并通过“AUTH LOGIN”进行登录认证,然后才能够正常发送邮件。用户名、密码字串默认使用BASE64编码的加密格式,使用openssl工具可以生成。
3)测试过程中,建议直接复制上述加密字串进行使用,避免出现输入错误的情况。当通过SMTP认证以后,用户再次从[email protected]给外部邮箱[email protected]发送邮件时,将会成功提交给Postfix服务器。
2.2> 测试SMTP发信认证
由于Foxmail不支持SMTP发信认证,所以这里就不做测试,如上所示:用telnet的方式已经成功验证
(3)部署并配置Squirrelmail
Squirrelmail是使用PHP开发的一套网页程序,可以与Postfix、Dovecot很好的协作,通过Web界面提供邮件发送、接收和管理操作。
3.1> 将SquirrelMail部署到网站目录;
将程序源码包、语言包释放后复制到网站目录中,其部署位置取决以访问路径,应根据实际情况确定。这里以httpd服务器为例,网站根目录对应为/var/www/html/,访问SquirrelMail系统的URL为http://mail.bebent.com/webmail/。
3.2> 创建数据目录、附件目录
通过浏览器访问Web邮箱时需要提交邮件内容、上传附件等相关操作,因此需要创建相应的数据目录、附件目录,并确保网站运行用户对上述目录有写入权限。
3.3> 创建主配置文件config.php;
SquirrelMail的主配置文件为config.php,位于子目录config/中。主配置文件通常并不存在,需要参考默认配置手动创建。适当修改配置文件,设置界面语言、收发信服务器地址、数据目录和附件目录等相关信息。
$domain = ‘topsecedu.com’;
$smtpServerAddress = ‘localhost’; //SMTP服务器地址
$smtpPort = 25; //SMTP服务端口
$imap_server_type = ‘dovecot’; //IMAP服务器类型
$imapPort = 143; //IMAP服务端口
$data_dir = ‘/var/www/html/webmail/data/’; //数据目录的位置
$attachment_dir = ‘/var/www/html/webmail/attach/’; //附件目录的位置
上述配置内容中,收发信服务器的地址、端口号一般为默认,不需要修改。但数据目录、附件目录、界面语言等应根据需要进行调整。
3.4> 访问Web邮箱系统;
确认Web服务应经运行,通过浏览器访问http://mail.topsecedu.com/webmail/,可以看到SquirrelMail提供的Web邮箱登录界面,如图所示。使用正确的用户名、密码进行登录,即可使用Web邮件系统。
3.5> 使用Squirrelmail收发邮件;
成功登录Squirrelmail以后,可以看到一个典型的Web邮件系统操作界面,如图所示。通过此Web邮件系统,用户可以完成收信、发信等各种操作。