Linux下如何利用Sendmail构建安全可靠的邮件服务器(在家实验成功)
实验原理:
Sendmail是UNIX/Linux环境中稳定性较好的一款邮件服务器软件,通过对Sendmail服务器的配置可以实现基本的邮件转发功能;dovecot服务器实现了POP3协议,可以与Sendmail服务器配合工作,实现用户对邮件的收取功能;OpenWebmail是网页形式的邮件应用系统,可实现用户对邮件的发送、收取和管理功能。通过对Sendmail、dovecot和OpenWebmail的综合管理,系统管理员可以构建出功能完善的邮件应用系统。
实验步骤:
一、 搭建DNS环境,并设置sendmain的主机域名
可以通过修改“/etc/hosts”和“/etc/sysconfig/network”两个文件更改主机域名。并在DNS服务器中添加对应的MX记录。
1: vi /etc/hosts
192.168.11.128 mail.sheng.com
注明: 192.168.11.128 是本机的ip,修改后,reboot重启:
[root@mail ~]# hostname
mail.sheng.com
2: 最好把/etc/sysconfig/network 下的hostname 也改掉:
[root@mail ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mail.sheng.com
3: 修改named.conf 文件:
[root@mail ~]# tail -12 /etc/named.conf
# the follow is added for the sendmail test : 2010/12/18 at home
zone "sheng.com" {
type master;
file "sheng.com.zone";
};
zone "11.168.192.in-addr.arpa" {
type master;
file "192.168.11.rev";
};
include "/etc/rndc.key";
4: 按下面的内容添加如下文件:
[root@mail ~]# tail -5 /var/named/sheng.com.zone
1W ; expiry
1D ) ; minimum
@ IN NS mail.sheng.com.
mail IN A 192.168.11.128
@ IN MX 10 mail.sheng.com.
[root@mail ~]# tail -5 /var/named/192.168.11.rev
86400 ) ; Minimum
IN NS localhost.
@ IN NS mail.sheng.com.
8 IN PTR mail.sheng.com.
说明:看一下这些文件:
[root@mail ~]# cd /var/named
[root@mail named]# ls -l sheng.com.zone
lrwxrwxrwx 1 root root 42 Dec 18 17:18 sheng.com.zone -> /var/named/chroot/var/named/sheng.com.zone
你会发现这些文件是做了link 的:
ln -s /var/named/chroot/var/named/sheng.com.zone /var/named/sheng.com.zone
再去:/var/named/chroot/var/named/ 下看看:
[root@mail named]# cd /var/named/chroot/var/named/
[root@mail named]# ls -l sheng.com.zone
-rw-r--r-- 1 named named 238 Dec 18 19:12 sheng.com.zone
可以看到: user: group 是named (说明一定要是named, 不然编译有问题)
好,下面来测试一下 sheng.com.zone 的内容:
1:把: mail IN A 192.168.11.128 注释掉,然后:启动:sendmail
2:启动windows 的outlool express 收发邮件,同样可以测试另外一个文件:192.168.11.rev
二、 Sendmail的安装与配置
1: Sendmail服务器在RHEL4系统中是被默认安装的,软件包的名称是sendmail,m4软件包提供了配置Sendmail服务器必须的工具程序,与Sendmail软件包一同默认安装在系统中。Sendmain和m4两个软件都在RHEL4的第2张安装光盘中。
[root@mail named]# rpm -qa | grep sendmail
sendmail-devel-8.13.1-2
sendmail-8.13.1-2
sendmail-cf-8.13.1-2
sendmail-doc-8.13.1-2
[root@mail named]# rpm -qa | grep m4
m4-1.4.1-16
2:更改sendmail 服务器的启动级别:
chkconfig --level 2345 senmail on
修改完以后,看一下:
[root@mail named]# chkconfig --list sendmail
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
修改此目的是为了和下面的saslauthd 服务启动同步。
3:设置local-host-names 文件,用于邮件服务器提供邮件服务的域名:
[root@mail mail]# vi /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
sheng.com
同样可以测试一下:把local-host-names 中的内容改变,就发收不到邮件了。
4:编辑sendmail.mc文件
Sendmail服务器的主配置文件是sendmain.cf,该文件配置及其难,不过可以通过配置sendmail.mc然后生成sendmail.cf文件。
vi /etc/mail/sendmail.mc
开启Sendmail服务器的网络接口,Sendmail服务器出于安全考虑,默认只对lo网络接口(IP地址为127.0.0.1)提供服务,为了使服务器能够为主机的所有网络接口(地址为0.0.0.0)提供服务,需要在sendmail.mc文件中进行配置的修改。
...
dnl # The following causes sendmail to only listen on the IPv4 loopback address
dnl # 127.0.0.1 and not on any other network devices. Remove the loopback
dnl # address restriction to accept email from the internet or intranet.
dnl #
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
dnl #
...
开启SMTP的用户认证功能。将TRUST_AUTH_MECH(‘EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)前面的dnl以及空格去掉即可。开启之后,邮件服务器要求用户提供用户账户和口令进行身份认证,只有通过身份认证的用户才能通过邮件服务器向外部发送邮件。
...
dnl # The following causes sendmail to additionally listen to port 587 for
dnl # mail from MUAs that authenticate. Roaming users who can't reach their
dnl # preferred sendmail daemon due to port 25 being blocked or redirected find
dnl # this useful.
dnl #
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
dnl #
...
5:进入/etc/mail目录,然后使用m4 sendmail.mc > sendmail.cf生成sendmail.cf文件。
cd /etc/mail
m4 sendmail.mc > sendmail.cf
6: 启动sendmail 服务,使senamail.cf 生效:
[root@mail mail]# service network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Setting network parameters: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
7:开启了Sendmail服务器的认证功能之后,需要确保saslauthd服务程序正确运行。
chkconfig --level 35 saslauthd on
[root@mail mail]# service saslauthd restart
Stopping saslauthd: [ OK ]
Starting saslauthd: [ OK ]
三:邮件用户账户的设置
Sendmail服务器使用Linux系统中的用户账户作为邮件账户,因此为用户添加邮件账户只需要添加Linux账户即可。为了方便用户管理可以将具有同种性质的用户加入某一个组中。
1:添加账户:
groupadd uk
useradd -g uk -s /sbin/nologin uk01
passwd uk01 (为用户uk01 设置password)
2:设置邮件别名和邮件群发功能
在Sendmail服务器中使用aliases机制实现邮件别名和邮件群发功能。在/etc目录下同时存在名为aliases和aliases.db的两个文件。aliases文件是文本文件,其内容是可阅读和编辑的,aliases.db是数据库文件,是由aliases文件生成而来的。
[root@mail mail]# ls /etc/alia*
/etc/aliases /etc/aliases.db
3:编辑aliases文件,在文件末尾添加“uk: uk01”,意思是通过给uk@sheng.com发邮件,群发到uk01@sheng.com中
vi /etc/aliases
#root: marc
uk: uk01
4:设置完成之后,通过newaliases生成aliases.db文件。
[root@mail mail]# newaliases
/etc/aliases: 80 aliases, longest 10 bytes, 816 bytes total
5:如果想让一个用户通过匿名的方式向外发送邮件,可以通过修改access文件,然后通过“makemap hash access.db < access”生成数据库文件。
vi /etc/mail/access
# by default we allow relaying from localhost...
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
192.168.11.128 RELAY
在通过:makemap hash access.db < access
四:devecot的安装与配置
Sendmail服务器并不为MUA软件提供收取邮件的功能,因此系统中需要单独安装实现POP3或IMAP4功能的服务器程序。
系统默认安装了devecot软件,由于devecot服务器以来的软件包比较多,因此建议使用RHEL4系统中提供的软件包管理程序来安装dovecot软件包
1:安装好dovecot软件包之后,需要设置其配置文件dovecot.conf文件.
vi /etc/dovecot.conf
dovecot服务器默认只提供imap服务,需要修改“#protocols = imap impas”这一行为“protocols = imap imaps pop3 pop3s”
2:重启启动dovecot服务,使dovecot.conf的设置生效。
[root@mail mail]# service dovecot restart
Stopping Dovecot Imap: [ OK ]
Starting Dovecot Imap: [ OK ]
五:邮件客户端Outlook Express的配置
使用Windows自带的Outlook Express软件连接sendmail服务器。注意设置完成之后,需要将服务器的“我的服务器要求身份验证”打上勾
1:Outlook 打开后,配置smtp, mop3 服务器可填:服务器的ip:192.168.11.128
2:用户可以填刚才建的:uk01 ,密码也要填:uk01
3:完成Outlook 的配置后,打开工具栏中的"工具"--->"账户"--->"全部"--->"mail.sheng.com"--->"服务器"---> 最下面的“我的服务器要求身份验证” 打钩。
4:配好后,就可以收发邮件啦: ^ _ ^.
跟多的内容,可以参考:http://dreamfire.blog.51cto.com/418026/167192
可以深入了解 openmail 的设置。
深入:根据监控原理:可以在root 的组里加上自己的邮箱:
修改 /etc/mail/aliases:
root: uk01
写监控shell 的时候: mail -s " 发送内容" root@localhost < /var/spool/root
也可一写成:mail -s " 发送内容" root@localhost < /var/spool/uk01
则发送到root 的信就可以发送到uk01@sheng.com