RHEL5下Sendmail服务全攻略之常规配置
1.Sendmail服务软件包
sendmail-8.13.8-2.el5.i386.rpm:sendmail服务的主程序包,服务器端必须安装该软件包。
sendmail-cf-8.13.8-2.el5.i386.rpm:sendmail宏文件包
sendmail-devel-8.13.8-2.el5.i386.rpm:sendmail服务器开发工具软件包
sendmail-doc-8.13.8-2.el5.i386.rpm:sendmail服务器的说明文档
m4-1.4.5-3.el5.1.i386.rpm:宏处理过虑软件包
dovecot-1.0-1.2.rc15.el5.i386.rpm:接收邮件软件包,安装时需要注意安装顺序
2.Sendmail相关配置文档
sendmail.cf:sendmail核心配置文件,位于/etc/mail/sendmail/sendmail.cf
sendmail.mc:sendmail提供sendmail文件模板,通过编辑此文件后再使用m4工具将结果导入sendmail.cf完成配置sendmail核心配置文件,降低配置复杂度,位于/etc/mail/sendmail.mc
local-host-names:定义收发邮件服务器的域名和主机别名,位于/etc/mail/local-host-name
access.db:用来设置sendmail服务器为哪些主机进行转发邮件,位于/etc/mail/access.db
aliases.db:用来定义邮箱别名,位于/etc/mail/aliases.db
virtusertable.db:用来设置虚拟账户,位于/etc/mail/virtusertable.db
3.邮件功能组件
MUA:邮件用户代理(Mail User Agent)
MTA:邮件传输代理(Mail Transfer Agent)
MDA:邮件递送代理(Mail Delivery Agent)
4.Sendmail常规服务器配置
搭建Sendmail服务器流程:
(1)配置sendmail.mc文件
(2)使用m4工具将sendmail.mc文件导入sendmail.cf文件
(3)配置local-host-names文件
(4)建立用户帐号
(5)重新启动服务使配置生效
Sendmail应用案例1:
局域网网段:192.168.8.0/24
企业域名:redking.com
DNS及Sendmail服务器地址:192.168.8.1
sendmail服务是和DNS服务结合相当紧密的一个服务,所以我们在配置sendmail之前,需要设置并调试好DNS服务器(DNS配置请参考上季[RHEL5企业级Linux服务攻略]--第4季 DNS服务全攻略),DNS配置中设置MX资源记录指定邮件服务器地址。
2.配置DNS服务器
1)#rpm –qa | grep bind #检查bind
2)#vi/etc/named.conf #修改named 、添加正向、反向区域
(1)配置DNS主配置文件named.conf
options {
directory "/var/named";
version "9.2.1-16";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
//
// a caching only nameserver config
//
controls {
inet 127.0.0.1 allow { localhost;} keys { rndckey; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "oni.com" IN {
type master;
file "oni.com.zone";
allow-update { none; };
};
zone "68.166.192.in-addr.arpa" IN {
type master;
file "192.166.68.rev";
allow-update { none; };
};
//提示:redking.com.zone为正向解析文件
//提示:8.168.192.in-addr.arpa.zon为反向解析文件
(2)配置redking.com区域文件
使用MX记录设置邮件服务器,这条记录一定要有,否则Sendmail无法正常工作。
#cp /var/named/localhost.zone /var/named/redking.com.zone
因为重新编写麻烦,所以复制本地的文件,进行重新修改
#vi /var/named/redking.com.zone 进行修改
(3)配置redking.com反向区域文件
#cp /var/named/named.local /var/named/8.168.192.in-addr.arpa.zon
5)测试配置文件
1)#named-checkconf [无提示则正确]
2)#named-checkzone redking.com /var/named/redking.com.zone[正确提示OK]
3)#named-checkzone named-checkzone 68.166.192.in-addr.arpa 192.166.68.rev [正确提示OK]
6)#vi /etc/resolv.conf #修改/添加
#Domain nds.redking.com
#nameserver 192.168.0.2
#search localhost
7)#vi /etc/host.conf #修改/添加
Orderbind,hosts
8)#vi /etc/hosts #修改/添加
#192.168.137.2 www.nicai.com www
(4)改DNS域名解析的配置文件
vim /etc/resolv.conf
(5)重启named服务使配置生效
检查:
[root@webser0 email]#nslookup
> server
Default server:192.166.68.50
Address:192.166.68.50#53
> dns.oni.com
Server: 192.166.68.50
Address: 192.166.68.50#53
Name: dns.oni.com
Address: 192.166.68.50
(6)安装Sendmail软件包
RHEL5默认安装sendmail-8.13.8-2.el5及m4-1.4.5-3.el5.1软件包,我们只需要安装sendmail-cf-8.13.8-2.el5宏文件包就可以了。
(7)编辑sendmail.mc修改SMTP侦听网段范围
配置邮件服务器需要更改IP地址为公司内部网段或者0.0.0.0,这样可以扩大侦听范围(通常都设置成0.0.0.0),否则邮件服务器无法正常发送邮件。
vim /etc/mail/sendmail.mc
第116行将smtp侦听范围从127.0.0.1改为0.0.0.0
第155行修改成自己域:LOCAL_DOMAIN(`redking.com')dnl
使用m4命令生成sendmail.cf文件,其实sendmail.mc即是一个模板文件哈~
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
(8)修改local-host-names文件添加域名及主机名
vim /etc/mail/local-host-names
(9)安装Dovecot软件包(POP3和IMAP)
到这里sendmail服务器基本配置完成后,MailServer就可以完成邮件发送工作,如果需要使用POP3和IMAP协议接收邮件还需要安装dovecot软件包。在rhel5里dovecot整合了IMAP。
安装dovecot软件包要解决其依赖性,安装
per-DBI-1.52-1.fc6.i386.rpm和
mysql-5.0.22-2.1.0.1.i386.rpm
postgresql-libs-8.1.18-2.el5_4.1.i386.rpm
dovecot-auth: error while loading shared libraries: libpq.so.4: cannot openshared object file: No such file or directory
libpq.so.4 不存在
(10)启动Sendmail服务
service sendmail restart和service dovecot restart命令启动sendmail和dovecot服务,如果每次开机启动,可以使用chkconfig命令修改。
(11)测试端口
使用netstat命令测试是否开启SMTP的25端口、POP3的110端口及IMAP的143端口。
也可以使用netstat -ntla
(12)验证Sendmail的SMTP认证功能
telnet localhost 25 后输入ehlo localhost验证Sendmail的SMTP认证功能
telnet localhost 110
telnet mail.redking.com 25
telnet mail.redking.com 110
(13)建立用户
(14)客户端测试
Sendmail应用案例2:
公司采用两个网段和两个域来分别管理内部员工
team1.redking.com域采用192.168.10.0/24网段
team2.redking.com域采用192.168.20.0/24网段
DNS及Sendmail服务器地址:192.168.8.1
要求:
(1)员工可以自由收发内部邮件并且能够通过邮件服务器往外网发信。
(2)设置两个邮件群组team1和team2,确保发送给team1的邮件“team1.redking.com”域成员都可以收到,同理哈,发送给team2的邮件“team2.redking.com”域成员都可以收到。
(3)禁止待客室的主机192.168.10.88使用Sendmail服务器。
需求分析:
要求(1)中设置员工自由收发内部邮件可以参考Sendmail应用案例1去设置哈,如果需要邮件服务器把邮件发到外网需要设置access文件。
要求(2)需要别名设置来实现群发功能。
要求(3)需要在access文件中拒绝(REJECT)192.168.10.88
因实验原因:由senmail邮件服务器代替路由器功能哈~
配置实战:
(1)配置DNS服务
配置DNS主配置文件named.conf
配置redking.com.zone区域文件
配置8.168.192.in-addr.arpa.zone反向区域文件
配置team1.redking.com.zone区域文件
配置10.168.192.in-addr.arpa.zone反向区域文件
配置team2.redking.com.zone区域文件
配置20.168.192.in-addr.arpa.zone反向区域文件
(2)修改DNS域名解析的配置文件
vim /etc/resolv.conf
(3)重启named服务使配置生效
(4)安装Sendmail软件包
RHEL5默认安装sendmail-8.13.8-2.el5及m4-1.4.5-3.el5.1软件包,我们只需要安装sendmail-cf-8.13.8-2.el5宏文件包就可以了。
(5)编辑sendmail.mc修改SMTP侦听网段范围
配置邮件服务器需要更改IP地址为公司内部网段或者0.0.0.0,这样可以扩大侦听范围(通常都设置成0.0.0.0),否则邮件服务器无法正常发送邮件。
vim /etc/mail/sendmail.mc
第116行将smtp侦听范围从127.0.0.1改为0.0.0.0
第155行修改成自己域:LOCAL_DOMAIN(`redking.com')dnl
使用m4命令生成sendmail.cf文件,其实sendmail.mc即是一个模板文件哈~
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
(6)修改local-host-names文件添加域名及主机名
vim /etc/mail/local-host-names
(7)群发邮件设置
vim /etc/aliases
aliases文件语法格式:
真实用户帐号:别名1,别名2
使用newaliases命令生成aliases.db数据库文件
(8)配置访问控制的access文件
在RHEL5中,默认Sendmail服务器所在的主机的用户可以任意发送邮件,而不需要任何身份验证,即注意/etc/mail/access文件中有一行Connect: 127.0.0.1RELAY
生成access数据库文件
makemap hash access.db < access
(9)安装Dovecot软件包(POP3和IMAP)
到这里sendmail服务器基本配置完成后,MailServer就可以完成邮件发送工作,如果需要使用POP3和IMAP协议接收邮件还需要安装dovecot软件包。在rhel5里dovecot整合了IMAP。
安装dovecot软件包要解决其依赖性,安装per-DBI-1.52-1.fc6.i386.rpm和mysql-5.0.22-2.1.0.1.i386.rpm
(10)启动Sendmail服务
service sendmail restart和service dovecot restart命令启动sendmail和dovecot服务,如果每次开机启动,可以使用chkconfig命令修改。
(11)测试端口
使用netstat -ntla命令测试是否开启SMTP的25端口、POP3的110端口及IMAP的143端口。
(12)建立用户
(13)客户端测试
192.168.8.0/24网段测试
群发测试
192.168.10.0/24网段测试
在服务器端可以看到team1组成员邮箱已经收到192.168.8.0/24网段中michael用户发的邮件。下面我们在192.168.10.0/24网段接收测试下~~~
正常接收群发邮件
下面由team1.redking.com区域向team2.redking.com用户成员群发邮件~~~
成功发送~~
下面team2成员用户应该收到两个封邮件
192.168.20.0/24网段测试
服务器端状态:
客户端状态:
待客室主机192.168.10.88测试
最后我们测试禁止待客室的主机192.168.10.88使用Sendmail服务器
192.168.10.88主机不能使用Sendmail邮件功能
将受限的IP地址192.168.10.88换成其他不受限制的IP地址就可以将这原本不能发送的邮件发送出去了~~~
RHEL5下Sendmail服务器全攻略之高级配置:
企业环境
公司邮件服务器,统一为员工设置企业邮箱,公司业务以销售为主,员工数量为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(`EXTERNALDIGEST-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 clientbclientc
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 exceededwhile writing "/var/mail/client3"
这时,收件人必须接收完邮件服务器上的邮件或由管理员增加到使用空间的限额后才能正常接收邮件哈~
一台solaris机器A上安装有sendmail作为mail server,但这台机器不能连外网,只能通过机器B的Http proxy出去。
请问怎样配置A的sendmail,使其能将邮件发送给外部地址(如xxx@yahoo.com)?
proxy 有做 smtp 的代理嗎 ?
若有,將 sendmail 的 smart host 指向 proxyserver
在 sendmail 資料中找找看 smart host
我用Red hat 9自带的sendmail发信。由于我的机器没有合法域名,我准备通过学校的邮件服务器转发。因此我在/etc/mail/sendmail.mc中将
dnl define(`SMART_HOST',`smtp.your.provider ')
改成了
dnl define(`SMART_HOST ',`smtp.polyu.edu.hk')
然后用了($表示bash提示符):
$ m4 sendmail.mc > sendmail.cf
重新生成sendmail配置文件。并且用/etc/init.d/sendmail restart重新启动的sendmail。但是现在我用mail发信时还是不会用smtp.polyu.edu.hk还转发。比如我用以下命令:
$ mail wangyuan791@sina.com
Subject: test
test
.
Cc:
然后用mailq去看,上述邮件总是在队列中没有发出去。这是怎么回事?
BTW:我只想建一个发邮件的服务器,我的机器没有合法域名,怎么做比较方便。
你的sendmail.cf拷到 /etc 和 /etc/mail 目录下了么。
而且你的sendmail确定SMTP端口打开了么。
可以telnet试试。
telnet localhost 25
还有,你的sendmail的DamonPortOption的设置改过了没有。接收地址可以改为0.0.0.0,试试可不可以发信。
还可以用sendmail -d -v user@host.domain命令来测试跟踪一下你的邮件到底在发送过程中是怎么走的,在哪一步出现了问题。
还可以查看/var/log/maillog 和 /var/log/message文档看看系统记录发生的问题。
自己解决了。后来我去看了看sendmail.cf,竟然发现我的sendmail.mc中定义的SMART_HOST没有起作用,不知道转化过程中出了什么问题。只好在sendmail.cf中加入
DS smtp.polyu.edu.hk
重启sendmail,一切搞定