首页 > 代码库 > 邮件服务器

邮件服务器

邮件服务器

 

邮件服务器是大型公司必备的一项,因为公司内部都需要依靠邮件来传输信息,邮件一般都采用POP3和SMTP服务,搭建服务的程序有很多,比较出名的微软,IMB都有自己的邮件服务软件,我们这里是在LINUX下建立邮件服务器,使用的是开源的postfix和dovecot分别来做为发邮件和收邮件的服务。

邮件服务器需要域名的解析所以我们需要DNS服务,然后配置两个服务就可以通过邮件管理程序(MUT)来进行收发邮件了,如果需要也可以安装webmail系统,实现网页的mail访问,下面以squirrelmail为例,

实验拓扑:

                        DNS Server             主机A

                    Mail Server             主机B

                        Win7 Client              主机W

 

实验要求:

    在DNS Master上搭建DNS,能够解析mail.tarena.com

    在Mail Server上部署邮件服务器

    在Win7上安装Foxmail测试

 

 主机A的配置(配置DNS)

前面有文件专门说明DNS,这里只写入了需要添加的,来指定mail服务器的域名解析

 

[root@server1 named]# cat tarena.com.zone

$TTL    86400

@               IN SOA  tarena.com.      root.tarena.com. (

                                        2013122401  ; serial (d. adams)

                                        3H          ; refresh

                                        15M         ; retry

                                        1W          ; expiry

                                        1D )        ; minimum

        IN      NS        dns1.tarena.com.        

        IN      MX   5   mail.tarena.com.                //邮件服务器的域名

dns1    IN      A       192.168.10.253

mail     IN      A       192.168.10.252                                          //解析邮件服务器的域名

 

Mail Server配置(配置SMTP服务器)

1、前提条件(测试DNS)

[root@mail ~]# host -t mx tarena.com

tarena.com mail is handled by 5 mail.tarena.com.

[root@mail ~]# host mail.tarena.com

mail.tarena.com has address 192.168.10.252

2、设置邮件服务器的主机名

[root@mail ~]# grep HOSTNAME /etc/sysconfig/network

HOSTNAME=mail.tarena.com

[root@mail ~]# hostname mail.tarena.com

3、安装Postfix

postfix的端口是25,有可能会被sendmail占用,这时我们需要先关闭sendmail服务,可以先查看一下,

如果没有可跳过

 

[root@mail ~]# netstat -tulnp | grep :25                                               //查看25端口

tcp    0   0 127.0.0.1:25   0.0.0.0:*   LISTEN    4079/sendmail 

[root@mail ~]# service sendmail stop                                                 //关闭服务

[root@mail ~]# chkconfig sendmail off

[root@mail ~]# yum -y install postfix

[root@mail ~]# chkconfig --add postfix

[root@mail ~]# chkconfig --list postfix

postfix    0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

4、修改主配置文件

postfix的主配置文件内容很多,我们可以使用postconf -n命令导出非默认的设置,用此文件来替换原配置文件,这样配置文件就从600多行变成30多行了,方便我们查看更改。保留原文件做为备份

[root@mail ~]# cd /etc/postfix/

[root@mail postfix]# postconf -n >tmp.txt

[root@mail postfix]# mv main.cf main.cf.bak

[root@mail postfix]# mv tmp.txt main.cf

 

[root@mail postfix]# vim main.cf

...

  8 #inet_interfaces = localhost            //监听端口

 20 myhostnasme = mail.tarena.com     //邮件服务器主机名

 21 mydomain = tarena.com                //邮件服务器所在区域

 22 myorigin = $mydomain                 //发件人DNS后缀           

 23 mydestination = $mydomain         //指定Postfix允许处理的邮件

 24 home_mailbox = Maildir/          //邮箱类型

 25 mynetworks = 192.168.10.0/24      //设置允许哪些客户端直接将需要转发到外部区域的邮件提交给Postfix

4、检查语法启动服务

 

[root@mail postfix]# postfix check

[root@mail postfix]# postfix reload

[root@mail postfix]# netstat -tulnp | grep :25

tcp   0   0 0.0.0.0:25   0.0.0.0:*       LISTEN     6015/master   

测试:

先建立两个账号,用来邮件收发的测试

[root@mail ~]# useradd yg

[root@mail ~]# useradd xln

[root@mail ~]# echo 123456 | passwd --stdin yg

[root@mail ~]# echo 123456 | passwd --stdin xln

进入测试

[root@mail ~]# telnet mail.tarena.com 25                                        //连接服务器

Trying 192.168.10.10...

Connected to mail.tarena.com (192.168.10.10).

Escape character is ‘^]‘.

220 mail.tarena.com ESMTP Postfix

helo localhost                                             //宣告客户端

250 mail.tarena.com

mail from:yg@tarena.com                                     //邮件来自

250 2.1.0 Ok

rcpt to:xln@tarena.com                                                         //邮件发往

250 2.1.5 Ok

data                                                       //邮件正文

354 End data with <CR><LF>.<CR><LF>

subject Test mail!                                         //邮件主题

hello,byebye           

.                                                    //邮件结束

250 2.0.0 Ok: queued as A967D324DE8

quit                                                         //退出

221 2.0.0 Bye

Connection closed by foreign host.

查看Mail的日志,

[root@mail ~]# tail /var/log/maillog 

...

Dec 24 11:49:27 ser1 postfix/smtpd[14064]: connect from ser1.tarena.com[192.168.10.10]

Dec 24 11:50:20 ser1 postfix/smtpd[14064]: A967D324DE8: client=ser1.tarena.com[192.168.10.10]

Dec 24 11:51:09 ser1 postfix/cleanup[14083]: A967D324DE8: message-id=<20131224035020.A967D324DE8@mail.tarena.com>

Dec 24 11:51:09 ser1 postfix/qmgr[13913]: A967D324DE8: from=<yg@tarena.com>, size=367, nrcpt=1 (queue active)                                     

                                                   //上面是发件人,下面是收件人

Dec 24 11:51:09 ser1 postfix/local[14099]: A967D324DE8: to=<xln@tarena.com>, relay=local, delay=63, delays=63/0.01/0/0.05, dsn=2.0.0, status=sent(delivered to maildir)

// status=sent表示发送成功

Dec 24 11:51:09 ser1 postfix/qmgr[13913]: A967D324DE8: removed

Dec 24 11:51:14 ser1 postfix/smtpd[14064]: disconnect from ser1.tarena.com[192.168.10.10]

[root@mail ~]# ls ~xln/Maildir/new/

1387857069.V802I3ec114M561364.mail.tarena.com

//下面是查看刚刚发送的邮件

[root@mail ~]# cat ~xln/Maildir/new/1387857069.V802I3ec114M561364.mail.tarena.com

Return-Path: <yg@tarena.com>

X-Original-To: xln@tarena.com

Delivered-To: xln@tarena.com

Received: from localhost (ser1.tarena.com [192.168.10.10])

        by mail.tarena.com (Postfix) with SMTP id A967D324DE8

        for <xln@tarena.com>; Tue, 24 Dec 2013 11:50:06 +0800 (CST)

Message-Id: <20131224035020.A967D324DE8@mail.tarena.com>

Date: Tue, 24 Dec 2013 11:50:06 +0800 (CST)

From: yg@tarena.com

To: undisclosed-recipients:;

 

subject Test mail!

hello,byebye

 

 

Mail Server配置(配置POP服务器)

1、安装dovecot

dovecot默认配置就可以使用,安装完后启动服务,就可以使用了

[root@mail ~]# yum -y install dovecot

2、配置主配置文件

[root@mail ~]# vim /etc/dovecot.conf

...

205    mail_location = maildir:~/Maildir                     //设置邮箱路径

3、启动服务

[root@mail ~]# service dovecot restart

[root@mail ~]# chkconfig dovecot on

[root@mail ~]# netstat -tulnp | grep dovecot

tcp   0      0 :::110      :::*        LISTEN      16835/dovecot  

tcp   0      0 :::143      :::*        LISTEN      16835/dovecot 

 

 

 

测试:

 

[root@mail ~]# telnet mail.tarena.com 110               //连接服务器

Trying 192.168.10.10...

Connected to mail.tarena.com (192.168.10.10).

Escape character is ‘^]‘.

+OK Dovecot ready.

user xln                                                   //输入账户

+OK

pass 123456                                               //输入密码

+OK Logged in.

list                                                     //列出邮件

+OK 1 messages:

1 458

.

retr 1                                                 //查看邮件1

+OK 458 octets

Return-Path: <yg@tarena.com>

X-Original-To: xln@tarena.com

Delivered-To: xln@tarena.com

Received: from localhost (ser1.tarena.com [192.168.10.10])

        by mail.tarena.com (Postfix) with SMTP id A967D324DE8

      for <xln@tarena.com>; Tue, 24 Dec 2013 11:50:06 +0800 (CST)

Message-Id: <20131224035020.A967D324DE8@mail.tarena.com>

Date: Tue, 24 Dec 2013 11:50:06 +0800 (CST)

From: yg@tarena.com

To: undisclosed-recipients:;

 

subject Test mail!

hello,bybye

.

quit

+OK Logging out.

Connection closed by foreign host.

 

SMTP认证控制

1、安装,启动saslauthd服务

[root@mail ~]# rpm -q cyrus-sasl

cyrus-sasl-2.1.22-7.el5_8.1

[root@mail ~]# cat /etc/sasl2/smtpd.conf

pwcheck_method: saslauthd

[root@mail ~]# service saslauthd start

[root@mail ~]# chkconfig saslauthd on

[root@mail ~]# testsaslauthd -u yg -p 123456 -s smtp    //检查saslauthd服务

0: OK "Success."

 

2、调整postfix配置,启用认证

[root@localhost ~]# vim /etc/postfix/main.cf

...

 25 mynetworks = 127.0.0.1                       //设置本地网络

 26 smtpd_sasl_auth_enable = yes                  //启用SASL认证

 27 smtpd_sasl_security_options = noanonymous   //阻止匿名发信

 28 smtpd_recipient_restrictions =              //设置收件人过滤

 29  permit_mynetworks,                         //允许来自mynetworks的客户

 30  permit_sasl_authenticated,             //允许已通过sasl认证的用户

 31  reject_unauth_destination                 //拒绝向未授权的目标域发信

[root@localhost ~]# service postfix restart

 

3、测试

通过下面的命令算认证,下面测试会用到

[root@mail ~]# printf "yg"| openssl base64

eWc=

[root@mail ~]# printf "123456"| openssl base64

MTIzNDU2

 

[root@mail ~]# telnet mail.tarena.com 25              //连接服务器

 

Trying 192.168.10.10...

Connected to mail.tarena.com (192.168.10.10).

Escape character is ‘^]‘.

220 mail.tarena.com ESMTP Postfix

mail from:yg@tarena.com

250 2.1.0 Ok

rcpt to:john@ibm.com.cn

554 5.7.1 <john@ibm.com.cn>: Relay access denied

quit

221 2.0.0 Bye

Connection closed by foreign host.

 

 

[root@mail ~]# telnet mail.tarena.com 25             //连接服务器

telnet mail.tarena.com 25

Trying 192.168.10.10...

Connected to mail.tarena.com (192.168.10.10).

Escape character is ‘^]‘.

220 mail.tarena.com ESMTP Postfix

helo localhost

250 mail.tarena.com

auth login

334 VXNlcm5hbWU6

eWc=

334 UGFzc3dvcmQ6

MTIzNDU2

235 2.0.0 Authentication successful

mail from:yg@tarena.com 

250 2.1.0 Ok

rcpt to:john@ibm.com.cn

250 2.1.5 Ok

quit

221 2.0.0 Bye

Connection closed by foreign host.

 

 

 

邮件过滤

1、根据客户端地址过滤

 

[root@mail ~]# tail -n 2 /etc/postfix/access

192.168.10.53   REJECT

192.168.10.50   OK

[root@mail ~]# postmap /etc/postfix/access

[root@mail ~]# vim /etc/postfix/main.cf

...

 32 smtpd_client_restrictions = check_client_access hash:/etc/postfix/access

[root@localhost ~]# postfix reload

做完这个实验请将main.cf 32行注释

 

2、根据发信人地址过滤

34到38行前面是有一个空格的,表是接上一行的内容,可以把他们当成是一行,因为一行写不下才这样写的。

[root@mail ~]# cat /etc/postfix/sender_access

yg@tarena.com   REJECT

[root@mail ~]# postmap /etc/postfix/sender_access

[root@mail ~]# vim /etc/postfix/main.cf

...

 33 smtpd_sender_restrictions =

 34  permit_mynetworks,                      //若从mynetworks网络访问则允许

 35  reject_sender_login_mismatch,            //发件人与登录信息不符时拒绝

 36  reject_non_fqdn_sender,                    //拒绝不完整的发件域

 37  reject_unknown_sender_domain,               //拒绝未知的收件域

 38  check_sender_access hash:/etc/postfix/sender_access   //指定策略库

[root@localhost ~]# service postfix restart

做完这个实验请将main.cf 33-38行注释

 

 

 

搭建Webmail系统

需要HTTPD服务,只要启动就可以。

1、安装squirrelmail

[root@mail ~]# yum -y install squirrelmail

2、配置squirrelmail

[root@mail ~]# vim /etc/squirrelmail/config.php

...

 26 $squirrelmail_default_language = ‘zh_CN‘;          //默认语言改成中文

 28 $domain                 = ‘tarena.com‘;         //域名

 29 $imapServerAddress      = ‘192.168.10.10‘;       //收邮件地址

 32 $smtpServerAddress      = ‘192.168.10.10‘;       //发邮件地址

3、启动httpd服务

[root@mail ~]# service httpd restart

[root@mail ~]# chkconfig httpd on

测试:

在流览器上输入下面的地址,试试自已搭建的网页邮箱吧

http://mail.tarena.com/webmail