您的位置:首页 > 运维架构 > Linux

[RHEL5企业级Linux服务攻略]--第5季 Sendmail服务全攻略之高级配置 推荐

2009-03-11 14:20 501 查看
企业环境
公司邮件服务器,统一为员工设置企业邮箱,公司业务以销售为主,员工数量为300人并办公地点不固定。员工收发邮件一般较小,大部分为产品信息及销售报表。为了减少邮件服务器负荷,提高邮件传输效率,需要有效拒绝垃圾邮件。
邮件服务器域名:mail.redking.com
邮件服务器IP地址:192.168.8.1
需求分析
根据企业情况,搭建邮件服务器的需求有以下两点:
1.减少成本
公司员工数量较多,会占用邮件服务器大量的磁盘空间,如果不对用户邮箱容量加以解决限制,可能会随着邮件数量的增加,导致服务器存储空间不足而扩展磁盘容量,所以我们需要对邮箱进行磁盘配额限制哈~
2.拒绝垃圾邮件
处理垃圾邮件会增加服务器的负担,占用邮件服务器的硬件资源,造成正常响应的延迟。而企业员工会经常出差,办公地点不固定,无法使用access数据库做相应的筛选,只能通过邮件的认证机制防止垃圾邮件滥用服务器资源。
解决方案
1.配置DNS服务器
(1)配置DNS主配置文件named.conf
vim /etc/named.conf



(2)配置redking.com.zone区域正向解析文件



(3)配置8.168.192.in-addr.arpa.zone区域反向解析文件



(4)重启named服务使配置生效



2.修改local-host-names文件
vim /etc/mail/local-host-names



3.配置sendmail.cf
确保sasl库已经安装



编辑sendmail.mc配置文件
(1)开启sendmai认证
互联网上运行的邮件服务器,必须开启中继功能才能完成外部邮件的转发哈~,但是如果不加以限制,则会使非法用户有机会执行各种操作,如使用服务器发送垃圾邮件,甚至会被其他邮件服务器屏蔽哈,这样偶们滴邮件服务器就无法向外部转发邮件,我们可以添加邮件的认证机制,通过验证邮件使用者的帐号和密码,能够有效拒绝非法用户使用邮件服务器中继功能哈~~~
去掉以下三行的dnl字段开启sendmail认证功能
52行 TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
53行 define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
123行 DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl



TRUST_AUTH_MECH的作用是使sendmail不管access文件中如何设置都能relay那些通过LOGIN、PLAIN或DIGEST-MD5方式验证的邮件。
`confAUTH_MECHANISMS'的作用是确定系统的认证方式。
`Port=submission, Name=MSA, M=Ea'的作用是开启认证,并以子进程运行MSA实现邮件的账户和密码的验证。



注意:FEATURE要加在MAILER语句前面,否则可能造成邮件服务器运行错误哈~~~



(2)设置用户用户邮件的大小限制
在sendmail.mc中没有这个选项,这个要在sendmail.cf中设置哈~
vim /etc/mail/sendmail.cf



默认不限制:
# maximum message size
#O MaxMessageSize=0
我们可以设置成邮件最大不超过20MB
# maximum message size
O MaxMessageSize=20971520
意思为每次收发邮件最大为20MB,任何超过这个值的邮件将被拒绝。



(3)设置本地邮箱的域名
LOCAL_DOMAIN(`redking.com')dnl



(4)使用m4生成新的sendmail.cf文件



4.配置磁盘配额
(1)修改fstab文件
为了方便管理哈,将用户的邮件信息存放在/var/mail目录中,建议将/var划分到独立的分区,这样我们才能对/var文件系统添加磁盘配额功能,参考[RHEL5企业级Linux服务攻略]--第1季 Linux服务器的搭建与测试
vim /etc/fstab
添加/var文件系统参数
LABEL=/var /var ext3 defaults,usrquota,grpquota 1 2
usrquota为用户的配额参数,grpquota为组的配额参数



修改/etc/fstab文件后保存退出,重启系统,使系统按照新的参数挂载文件系统。
参考RHCE课程-RH131Linux管理笔记六-Linux文件系统管理、挂载及sudo设置与使用



重启过程中,因为缺失配额文件,所以操作系统在装载文件系统时会报错,通过下面创建配额文件工作后将会消除错误。
(2)创建配额文件
因为存放邮件信息的/var目录在独立的分区哈~所以我们使用quotachek命令在/var目录下分别为用户和组创建配额文件
quotacheck -cugm /var



(3)设置磁盘配额
为用户和组设置详细的配额限制,我们可以使用edquota命令进行磁盘配额的设置哈~
edquota命令格式:
edquota -u 用户名
edquota -g 组名
比如为用户michael配置磁盘配额限制,执行edquota命令,打开用户配额配置文件
edquota -u michael



Filesystem:文件系统的名称
blocks:用户当前使用的块数(磁盘空间),单位为KB
soft:可以使用的最大磁盘空间,可以在一段时期内被超过软限制规定
hard:可以使用的磁盘空间的绝对最大值,达到了该限制后,操作系统将不再为用户或组分配磁盘空间
inodes:用户当前使用的inode节点数量(文件数)
soft:可以使用的最大文件数。可以在一段时期内被超过软限制规定
hard:可以使用的文件数的绝对最大值。达到该限制后,用户或组将不能再建立文件
设置磁盘空间或者文件数限制,需要修改对应的soft、hard值,而不要修改blocks和inodes值哈~根据当前磁盘的使用状态,操作系统会自动设置这两个字段的值。
注意:如果soft或者hard值被设置为0则表示没有限制哈~
比如对用户michael将磁盘空间硬限制设置为200MB



(4)使磁盘配额生效
命令:quotaon -augv 目录名
参数:
-a 开启在/ect/fstab文件里,有加入quota设置的分区的空间限制。
-g 开启群组的磁盘空间限制。
-u 开启用户的磁盘空间限制。
-v 显示指令指令执行过程。
quotaon -av



注意:磁盘配额对root用户没有效果,并且磁盘配额设置的参数要比现有的数量要大,如分区大小要比现使用空间要大,文件数要比现有文件数要大。
(5)查看磁盘配额状态
repquota -a



注意:
OK,如果企业员工较多,那么像这样一个个为每个员工单独配置磁盘配额将会增加我们管理的难度哈~这里我们可以建立一个样简单的脚本,将所有用户的磁盘空间科学硬限制为200MB哈~
在/etc/mail/目录下创建一个quota.sh磁盘配额脚本文件
vim /etc/mail/quota.sh



quota.sh脚本内容:

#!/bin/bash
for i in michael redhat michaelwang client1 client2 client3 clienta clientb clientc
do
setquota -u $i 0 200000 0 0 /var
done
for循环语句in后面跟需要进行磁盘配额的用户名
setquota能够在命令行下直接进行磁盘配额限制,格式如下哈~
setquota -u 用户 block软限制 block硬限制 inode软限制 inode硬限制
因为需要将用户使用的磁盘空间限制为200MB,所以只需要更改block硬限制就可以了哈~
我们可以使用 . /etc/mail/quota.sh执行此脚本哈~



执行quotaoff -av后执行quotaon -av使设置的磁盘配额生效



5.配置dovecot
确认已经安装了dovecot RPM包哈~安装完dovecot软件包后,默认情况下,POP3和IMAP就可以正常工作,能够接收客户端的接受邮件请求哈~,但是为了保证客户端能够使用加密的形式接受邮件,还需要为dovecot添加相应的密钥和证书,启动POP3S或者IMAPS的支持哈~这时Mail服务器必须生成相应的密钥和证书才能正常工作哈~
(1)生成私钥和自签名证书
Mail服务器会使用私钥加密邮件,客户端在收取邮件时,则使用Mail服务器证书中的公钥对邮件进行解密,这样才能正常读取邮件哈~,/etc/pki/tls/certs/Makefile文件保存着生成密钥和证书的脚本设置,这里使用make命令制作dovecot.pem文件,其保存邮件服务器的私钥和公钥信息。
make -C /etc/pki/tls/certs/ dovecot.pem
生成证书时,按要求依次填写国家、省份、城市等等信息哈~



(2)修改dovecot.conf配置文件
vim /etc/dovecot.conf
查询dovecot使用的密钥和证书的位置



修改dovecot.conf配置信息中密钥和证书的位置指向我们刚刚生成的dovecot.pem



(3)重启sendmail、dovecot、saslauthd服务



(4)查看端口状态
netstat -tupln



6.测试
(1)服务器状态
eth1网卡192.168.5.110当路由器用哈~我不知道在vmware中怎么模拟路由器,汗~~哪位大哥如果会的话,教一下偶哈~



(2)客户端测试
网段:192.168.5.0/24



发个邮件测试下哈~



接收测试邮件~



测试发送20MB邮件



20MB邮件发送成功



client3邮箱状态



测试发送超出20MB限制的邮件



提示超出邮件限制大小,OK,成功~



最后我们测试邮箱用户的磁盘配额设置哈,现在client3用户的邮件中差不多有196MB邮件容量,限额是200MB哈~



下面我们测试如果再发个10MB的邮件,这样就超出200MB限额了,看下能否发送成功哈~



在michael用户端显示成功发送哈~



如果所发邮件超出收件人磁盘配额限额哈~,发件人会收到一封系统退信哈~
提示:procmail: Quota exceeded while writing "/var/mail/client3"



这时,收件人必须接收完邮件服务器上的邮件或由管理员增加到使用空间的限额后才能正常接收邮件哈~
########################Michael分割线########################
谨以此博文庆祝blog成为blog star,献给关注、支持本blog的网友哈~谢谢大家的支持、留言及回复,大家也可以将自己研究及配置的实验方案提供一下,大家一起研究交流一下,共同进步哈~~~下季内容[RHEL5企业级Linux服务攻略]--第6季 vsftpd服务全攻略之常规配置,敬请期待~~~
########################Michael分割线########################
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息