简单的邮件服务器搭建

目录

基础介绍

Linux上配置邮件服务器是再简单不过的事情,配置之前请不要把事情想的复杂。无非就是一个发送一个接收。本文我们将介绍如何使用linux自带的软件组完成邮件服务器的配置与安装,我们使用的是sendmail和dovecot。 Sendmail是具有较长历史并不断发展的邮件服务器软件,通过对Sendmail服务器的配置管理,可以实现基本的邮件发送功能;dovecot服务器实现了POP3协议,可以与Sendmail服务器配合工作,实现用户对邮件的收取功能。

准备工作

如果作为简单的练习使用此步骤可以略过,若为架设商业的邮件服务器请一一按照步骤核对。

1、准备域名:

域名的注册和解析的知识不懂的请Google。 假定域名为 yyuc.net 邮件使用的域名为mail.yyuc.net。

2、域名解析:

新建mx记录指向mail.yyuc.net:

#设置MX记录之后才可以实现与其它邮件服务器通邮    
@       IN      MX  5   mail.yyuc.net.    

新建mail的A记录指向服务器IP:

#把122.166.33.22改为你实际的服务器IP
mail    IN      A       122.166.33.22

3、反向解析:

为了防止你的邮件被误认为是垃圾邮件反向解析是必须的。

反向解析的知识请参阅:反向解析

4、设置主机域名

[root@yyuc ~]hostname yyuc.net

安装步骤

邮件发送(sendmail):

Sendmail服务器在RHEL系列的linux系统中是默认安装的,完整的安装应包括四个软件包。如果没安装或是重新安装,可以使用yum或者rpm命令进行手动安装。如下:

1、sendmail //是sendmail服务器程序的安装包,是最重要的软件包

2、m4 //包括了配置sendmail服务器的必要工具

3、sendmail-cf //包括了重新配置sendmail服务器的必要配置文件

4、sendmail-doc //包括了sendmail服务器的说明文档

检查是否安装:

[root@yyuc ~]# rpm -qa | grep m4
m4-1.4.5-3.el5.1
[root@yyuc ~]# rpm -qa | grep sendmail
sendmail-8.13.8-8.el5
sendmail-doc-8.13.8-8.el5
sendmail-cf-8.13.8-8.el5

没有安装请执行:

[root@yyuc ~]yum install sendmail

查看并设置sendmail服务自启动的状态:

[root@yyuc ~]chkconfig --list sendmail
[root@yyuc ~]chkconfig --level 35 sendmail on

配置说明

在sendmail服务器的配置目录下,local-host-names文件用于设置邮件服务器提供邮件服务的域名:

#直接添加主域名即可
[root@yyuc ~]# cat /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
yyuc.net

sendmail服务器的主配置文件是sendmail.cf。它比较复杂,所以通常我们不会直接去编辑它,而是编辑sendmail.mc文件然后使用m4命令由sendmail.mc文件生成sendmail.cf文件

Sendmail服务器出于安全考虑,默认只对lo网络接口(127.0.0.1)提供服务,为了使服务器能够为主机的所有网络接口(地址为0.0.0.0)提供服务,需要在sendmail.mc文件中进行配置的修改

[root@yyuc ~]# vi /etc/mail/sendmail.mc
//查找此行
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
//改为
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

在sendmail服务器中需要设置发送邮件的用户认证,RHEL系统中提供的Sendmail服务器提供了SMTP的用户认证功能,默认没有启用,因此需要在sendmail.mc文件中进行如下配置:

[root@yyuc ~]# vi /etc/mail/sendmail.mc
//查找此行
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
//改为
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

提示: 在sendmail.mc文件中,行首的dnl表示该行为注释行,是无效的,因此通过去除行首的dnl字符串可以开启相应的设置行。

在sendmail服务器中,使用了sasl的第2版(sasl2)作为SMTP的认证方式:

#查看是否采用saslauthd验证
[root@yyuc ~]# cat /usr/lib/sasl2/Sendmail.conf
pwcheck_method:saslauthd

检查sasl安装包的完整性:

[root@yyuc mail]# rpm -qa | grep sasl
[root@yyuc mail]# rpm -qa | grep sasl
cyrus-sasl-lib-2.1.22-7.el5_8.1
cyrus-sasl-plain-2.1.22-7.el5_8.1
cyrus-sasl-2.1.22-7.el5_8.1

#如果sasl安装不完整,执行下面代码安装
yum install cyrus-sasl
yum install cyrus-sasl-plain

#下面的命令可查看当前系统中的Cyrus-SASL V2所支持的密码验证机制
saslauthd -v
#在配置文件/etc/sysconfig/saslauthd中可以更改密码的验证机制

#设为自启动
chkconfig --list saslauthd
chkconfig --level 35 saslauthd on

建立用户帐号:

#建立组
[root@yyuc ~]# groupadd group-mail
#建组内用户
[root@yyuc ~]# adduser -g group-mail -s /sbin/nologin zpp001
[root@yyuc ~]# adduser -g group-mail -s /sbin/nologin zpp002
#设定用户密码
[root@yyuc ~]# passwd zpp001
Changing password for user zpp001.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@yyuc ~]# passwd zpp002
Changing password for user zpp002.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

说明:建立邮件用户组是为了便于邮件用户的管理。使用"-s”选项指定用户的shell为"/sbin/nologin”,即不允许用户登录Linux系统,从而起到安全的作用。

最后生成sendmail.cf配置文件文件:

[root@yyuc ~]# cd /etc/mail
[root@yyuc mail]# m4 sendmail.mc > sendmail.cf

访问控制的设置:

Sendmail服务器中使用access.db数据库进行基于主机地址的访问控制

[root@yyuc ~]# cat /etc/mail/access
Connect:localhost.localdomain           RELAY
Connect:localhost                       RELAY
Connect:127.0.0.1                       RELAY

如需单独配置请改动这个文件,改动后请重新执行下面语句生成access.db文件

[root@yyuc ~]# cd /etc/mail
[root@yyuc mail]# makemap hash access.db < access   

说明:此处我们保持默认设置即可,以此让sendmail服务器所在主机中的用户任意发送邮件,而 不需要身份验证。

重启服务:

[root@yyuc mail]# service saslauthd restart
Stopping saslauthd:                                        [  OK  ]
Starting saslauthd:                                        [  OK  ]

[root@yyuc mail]# service sendmail restart
Shutting down sendmail:                                      [ OK ]
Shutting down sm-client:                                      [ OK ]
Starting sendmail:                                            [ OK ]
Starting sm-client:                                            [ OK ]

sendmail的认证信息校验:

[root@yyuc mail]# telnet localhost 25 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
220 test.adsldns.org ESMTP Sendmail 8.11.6/8.11.6; Mon, 24 Feb 2003 11:51:04 +0800 
#输入这行进行本机状态测试
ehlo localhost
250-test.adsldns.org Hello tsai.adsldns.org [127.0.0.1], pleased to meet you 
250-ENHANCEDSTATUSCODES 
250-8BITMIME 
250-SIZE 
250-DSN 
250-ONEX 
250-ETRN 
250-XUSR 
250-AUTH LOGIN PLAIN  #出现这个说明配置成功了! 
250 HELP 
#输入quit 退出
quit

邮件接收(dovecot):

sendmail服务器实现了SMTP功能,只实现了邮件的发送功能,收取则需要使用POP3或IMAP,下面是邮局基本配置:

系统中自带了名为dovecot的RPM安装包,用于安装dovecot服务器:

yum install dovecot

设置dovecot软件包

[root@yyuc mail]# vi /etc/dovecot.conf
//找到下面的一行
#protocols = imap imaps pop3 pop3s
//将#注释去掉
protocols = imap imaps pop3 pop3s

查看并设置自启动状态

[root@yyuc mail]# chkconfig --list dovecot
[root@yyuc mail]# chkconfig --level 35 dovecot on

查看110端口

[root@yyuc mail]# netstat -ntpl | grep 110
tcp        0      0 :::110                      :::*                        LISTEN      6509/dovecot

这样,邮件服务器就顺利搭建完成了,你可以采用邮件客户端访问此服务器进行邮件收发了。 如果想使用网页版的邮件服务器可以自行下载网页邮箱源码安装在服务器上即可。