- 论坛徽章:
- 0
|
Linux学习笔记——Mail综合实验
作者:Ajian
实验环境:
用虚拟机模拟互联网中的邮件服务器,是如何工作的,并进行相关的一样配置。实现不同的邮件服务器上通信,实现跨网段进行通信。
Linux sina.com为Sendmail邮件服务器,Linux sohu.com为Postfix邮件服务器。
说明:因为是用虚拟机来模拟整个环境,所以中间有些东西就用到虚拟机Vmware的一些特性,本来还要一台DNS服务器,现在为了实验就在Sina.com上做Linux的DNS服务器。
实验要求:在Windows客户端上用Outlook登录Sina.com的用户发信到sohu..com 看是否可以在sohu.com上收到信。
实验拓扑图:
![]()
实验配置:
一、环境的搭建
在真正的实际环境中是不要这一步的,但现在没办法是学习过程中,要把实验做出来就得有好的环境,同样还可以理解实际中整个系统是怎么运行的。
1、 Linux都用虚拟机并且网卡用连到物理上的。Windows客户机用本机的物理机就可以了。就省去了再开一个虚拟机(当然认为不好理解可以多开一台用同一个Vmnet,现在的Vmnet相当于一个集线器或者交换机的作用)。并配置好相应的如图IP(当然也可以不用图上的,自己定)。还有顺便把Nameserver DNS都指向10.0.0.254。但先不要设置网关。
2、 解决不同网段互通的问题:
1) 在两台Linux上开启路由功能
#echo 1 > /proc/sys/net/ipv4/ip_forward
2) 在Linux sina.com上设置静态路由:
#route add –net 20.0.0.0 netmask 255.0.0.0 dev eth0
记住现在下一跳不能再用gw 20.0.0.254因为已经不是同网段的了。是设置不了的,只有告诉路由从自己的Eth0出去。
在Linux sohu.com就配置相反的,一样。
#route add –net 10.0.0.0 netmask 255.0.0.0 dev eth0
3) 现在互Ping下看能否通,通了后,最好先把Linux的防火墙关闭,因为现在还没配置Iptables,关掉DNS才可以解析。(至于自己会配置Iptables的就自己配目的只有一个,让每一台都可以解析到。)
#iptales –F
#service iptables stop
二、配置DNS服务器
先要有DNS后面的实验才好做。
1、 在主配置文件中加入区域
#vi /etc/named.conf
zone “sina.com” IN {
type master;
file “sina.com.dns”;
allow-update { none; };
};
zone “sohu.com” IN {
type master;
file “sohu.com.dns”;
allow-update { none; };
};
2、在/var/named下加入相应区域文件,并对区域文件进行配置。
Sina.com.dns的配置文件:
@ IN SOA sina.com. root.sina.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS sina.com.
IN MX 5 sina.com. ##其中的5是优先级,在多台的情况下.
sina.com. IN A 10.0.0.254
mail IN A 10.0.0.254
www IN A 10.0.0.254
sohu.com.dns的配置文件略。
3、 开启服务#service named start 。
现在可以在每台机器上试下解析DNS看能否都成功,没有成功就再检查找问题。
三、在Linux sina.com上配置Sendmail
1、修改主配置文件
#cd /etc/mail (先进到这个目录,因为这个以后的操作常在这个目录里)
#vi sendmail.mc
修改第123行:LOCAL_DOMAIN(`Localhost.com')dnl
将Loclhost.com改为邮件服务器的域名
LOCAL_DOMAIN(`sina.com')dnl
生成Sendmail.cf
#m4 sendmail.mc > sendmail.cf
或者#make –C /etc/mail (注意:C是大写)
2、加入自己的主机名(sina.com)
#vi /etc/mail/local-host-names
#hostname sina.com
3、设置SMTP认证(如果设置了这个就不用设置Access,一般情况下Access也是用不到的,因为在实际中不可能自己去手动去打那么多的邮件域名)
#vi /etc/sendmail.mc
改:1)去掉43、44行的注释,一定要顶格,不能有空格。
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
2)85行加上注释dnl,格式和前面的一样。 加的dnl后有空格。。
Dnl DAEMON_OPTIONS(`Port=smtp,Addr=192.168.0.254, Name=MTA')dnl
3 )92行:DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
将submission改成25。
4)运行:#make –C /etc/mail
5)重启Sendmail服务.
记得在Windows客户机上用Outlook时要进行设置。
设置:工具——》帐户——》属性——》服务器。 选择“我的服务器需要认证”。
4、设置pop3/IMAP (作用:用于客户端存取远程服务器中信件的功能)
#vi /etc/xinetd.d/ipop3 将中间的disable=yes 的yes 改为no
#vi /etc/xinetd.d/imap 改的也是一样的。。。
#service xinetd restart 重启服务。。
5、建一个用户,待会验证时,让Windows的客户端用。
#useradd aa
#passwd aa
四、在Linux sohu.com上配置Postfix
准备工作:先杀掉Sendmail 或其它邮件服务。。(确保没有其它邮件服务)
1、安装 postfix
首先,下载postfix-20010228-pl04.tar.gz,然后解开源代码包:
[root@test /tmp]# tar xvzf postfix-20010228-pl04.tar.gz
命令执行完后,会生成postfix-20010228-pl04目录,然后进入该目录:
[root@test /tmp]# cd postfix-20010228-pl04
接下来,依次执行以下命令编译postfix:
[root@test postfix-20010228-pl04]# make tidy
[root@test postfix-20010228-pl04]#make makefiles CCARGS='-DUSE_SASL_AUTH -I/usr/include' AUXLIBS='-L/usr/lib -lsasl'
[root@test postfix-20010228-pl04]# make
建立一个新用户“postfix”,该用户必须具有唯一的用户id和组id号,同时应该让该用户不能登录到系统,也即不为该用户指定可执行的登录外壳程序和可用的用户宿主目录。我们可以先用adduser postfix 添加用户再编辑/etc/passwd文件中的相关条目如下所示:
postfix:*:12345:12345:postfix:/no/where:/no/shell
最后执行安装脚本安装postfix
[root@test postfix-20010228-pl04]# ./INSTALL.sh
对于安装脚本的问题,可以统统回车确定
2、配置基本的Postfix vi /etc/postfix/main.cf
A 改:69行 去掉# myhostnamed=abc.com
B 76行 去掉#号 mydomain = abc.com
C 88行 去掉#号 myorigin = $mydomain
D 97行 加上#号
98行 去掉#号 inet_interfaces
E 157行 去掉#号 mynetsorks_style=subnet 我的网络类型
F 172行 去掉#号 mynetworks =192.168.0.0/24 控制访问的网段。。
3、配置Postfix的SMTP认证:
首先要保证postfix版本是snapshot-20000507及其以上的版本,从而保证postfix对SASL的支持。可以从www.postfix.org下载postfix的源代码包,保证您的SASL的版本是1.5.5及其以上版本,可以从ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/下载SASL。
步骤:
1).检查系统中是否安装了cyrus-sasl-1.5.24
执行以下命令查看系统中是否安装了cyrus-sasl:
rpm –qa |grep cyurs
如果看到以下提示,则说明已经安装了
[root@test bye2000]# rpm -qa |grep sasl
cyrus-sasl-devel-1.5.24-17
cyrus-sasl-1.5.24-17
否则,请用rpm –ivh 命令先安装所需sasl-cyrus包。
2)、配置postfix
在/etc/postfix/main.cf文件的最后添加以下几行:
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated permit_auth_destination reject
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
说明如下:
smtpd_sasl_auth_enable:告诉SMTP客户,该SMTP服务器需要进行用户认证。
smtpd_recipient_restrictions = permit_sasl_authenticated permit_auth_destination
reject:仅仅中继通过SMTP认证的客户端邮件,以及接收本postfix为最后一站的邮件。
broken_sasl_auth_clients = yes:有一些Microsoft 的SMTP客户端,比如Outlook Express 4.X采用的是非标准的SMTP认证协议,将该选项设置为yes可以解决这类不兼容问题。
smtpd_sasl_security_options = noanonymous:控制本地SMTP认证所采用的机制,这里是允许任何非匿名认证方法。
3).配置SASL
进入/usr/lib/sasl/目录,用touch新建这样一个文件:
[root@test sasl]# touch smtpd.conf
在该文件中加入以下内容:
[root@test sasl]# more smtpd.conf
pwcheck_method:pam
也就是指定通过PAM来进行用户认证。
4).配置PAM
进入/etc/pam.d/目录,用touch新建这样一个文件:
[root@test pam.d]# touch smtp
在该文件中加入如下内容:
[root@test pam.d]# more smtp
#%PAM-1.0
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
也即和/etc/pam.d/pop文件的内容是一致的。
5).修改/etc/shadow文件权限
因为PAM最终要去读取/etc/shadow文件的内容来进行用户认证,但是/etc/shadow文件
权限是设置为只有root用户可以读写,而我们的postfix是运行在postfix用户权限之下,所以我们要合理的设置/etc/shadow文件权限,以便让pam可以读取其内容。
执行以下命令,让root组也可以读取shadow:
[root@test /etc]# chmod 640 /etc/shadow
然后再将postfix用户加入root组,采用以下命令:
[root@test /etc]# usermod -G root postfix
7.启动postfix
执行
[root@test /etc]# postfix start
3、安装POP3或者IMAP(方法同上就不写了)
五、测试:由于服务器都用了SMTP认证不能用一般的发信方法发信了,现服务器上用Openwebmail进行收信和发信。
详细操作:
1、软件的安装
必需的软件:
# rpm -ivh perl-5.8.5-12.1.i386.rpm
# rpm -ivh perl-CGI-SpeedyCGI-2.22-1.2.el4.rf.i386.rpm
# rpm -ivh perl-Compress-Zlib-1.34-1.2.el4.rf.i386.rpm
# rpm -ivh perl-suidperl-5.8.5-12.1.1.i386.rpm
# rpm -ivh perl-Text-Iconv-1.4-1.2.el4.rf.i386.rpm
OpenWebmail软件包详细安装过程:
# rpm -ivh openwebmail-2.52-1.i386.rpm (安装openwebmail软件包)
warning: openwebmail-2.52-1.i386.rpm: V3 DSA signature: NOKEY, key ID cfb164d8
Preparing... ########################################### [100%]
1:postfix ########################################### [100%]
You may login with non-root account from
http://mail.easy.com/cgi-bin/openwebmail/openwebmail.pl
2、使用openwebmail-tool.pl命令来改变/etc/目录中的dbm.conf文件内容,详细操作如下:
详细操作:
# cd /var/www/cgi-bin/openwebmail/ (进入openwebmail程序目录)
# ./openwebmail-tool.pl --init (使用命令来改变dbm.conf文件内容)
Please change './etc/dbm.conf' from
And execute './openwebmail-tool.pl --init' again!
ps: If you are running openwebmail in persistent mode,
don't forget to 'touch openwebmail*.pl', so speedycgi
will reload all scripts, modules and conf files in --init.
3、修改 /var/www/cgi-bin/openwebmail/etc/目录中的openwebmail.conf 文件,详细内容如下:
domainnames auto (更改为自己定义的域名)
更改为:
domainnames sohu.com
default_language en (更改为简体中文版介面)
更改为:
default_language zh_CN.GB2312
default_iconset Cool3D.Englist (更改为中文3D按键)
更改为:
default_iconset Cool3D.Chinese.Simplified
smtpserver 127.0.0.1 (更改smtp服务器的地址)
更改为:
smtpserver 20.0.0.254
authpop3_server localhost (更改pop3服务器的地址)
更改为:
authpop3_server 20.0.0.254
dbmopen_ext none
更改为:
dbmopen_ext %dbm_ext%
dbmopen_haslock no
更改为:
dbmopen_haslock yes
# ./openwebmail-tool.pl --init (使用命令来改变dbm.conf文件内容)
creating db /var/www/cgi-bin/openwebmail/etc/maps/b2g ...done.
creating db /var/www/cgi-bin/openwebmail/etc/maps/g2b ...done.
creating db /var/www/cgi-bin/openwebmail/etc/maps/lunar ...done.
Welcome to the Open WebMail!
This program is going to send a short message back to the developer,
so we could have the idea that who is installing and how many sites are
using this software, the content to be sent is:
OS: Linux 2.6.9-34.EL i686
Perl: 5.008005
WebMail: Open WebMail 2.52 20060502
Send the site report?(Y/n) y (输入y,然后按回车键)
sending report...
Thank you.
4、修改/etc/httpd/conf/目录中的httpd.conf文件,解决乱码问题
修改语言为GB2312 (大概在772行)
# service httpd start(启动http服务)
5、登录:在Internet Explorer或者Mozilla Firefox等浏览器中输入以下地址:
地址:
http://www.sohu.com
/cgi-bin/openwebmail/openwebmail.pl
就可以在上面写信和发信了。。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/26011/showart_252975.html |
|