基础介绍
Linux上配置邮件服务器是再简单不过的事情,配置之前请不要把事情想的复杂。无非就是一个发送一个接收。本文我们将介绍如何使用linux自带的软件组完成邮件服务器的配置与安装,我们使用的是sendmail和dovecot。 Sendmail是具有较长历史并不断发展的邮件服务器软件,通过对Sendmail服务器的配置管理,可以实现基本的邮件发送功能;dovecot服务器实现了POP3协议,可以与Sendmail服务器配合工作,实现用户对邮件的收取功能。
准备工作
如果作为简单的练习使用此步骤可以略过,若为架设商业的邮件服务器请一一按照步骤核对。
1、准备域名:
域名的注册和解析的知识不懂的请Google。 假定域名为 jszhan.com 邮件使用的域名为mail.jszhan.com。
2、域名解析:
3、反向解析:
为了防止你的邮件被误认为是垃圾邮件反向解析是必须的。
反向解析的知识请参阅:反向解析
4、设置主机域名
- [root@jszhan ~]hostname jszhan.com
安装步骤
邮件发送(sendmail):
Sendmail服务器在RHEL系列的linux系统中是默认安装的,完整的安装应包括四个软件包。如果没安装或是重新安装,可以使用yum或者rpm命令进行手动安装。如下:
1、sendmail //是sendmail服务器程序的安装包,是最重要的软件包
2、m4 //包括了配置sendmail服务器的必要工具
3、sendmail-cf //包括了重新配置sendmail服务器的必要配置文件
4、sendmail-doc //包括了sendmail服务器的说明文档
检查是否安装:
- [root@jszhan ~]# rpm -qa | grep m4
- m4-1.4.5-3.el5.1
- [root@jszhan ~]# 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@jszhan ~]yum install sendmail
查看并设置sendmail服务自启动的状态:
- [root@jszhan ~]chkconfig --list sendmail
- [root@jszhan ~]chkconfig --level 35 sendmail on
配置说明
在sendmail服务器的配置目录下,local-host-names文件用于设置邮件服务器提供邮件服务的域名:
- #直接添加主域名即可
- [root@jszhan ~]# cat /etc/mail/local-host-names
- # local-host-names - include all aliases for your machine here.
- jszhan.com
sendmail服务器的主配置文件是sendmail.cf。它比较复杂,所以通常我们不会直接去编辑它,而是编辑sendmail.mc文件然后使用m4命令由sendmail.mc文件生成sendmail.cf文件
Sendmail服务器出于安全考虑,默认只对lo网络接口(127.0.0.1)提供服务,为了使服务器能够为主机的所有网络接口(地址为0.0.0.0)提供服务,需要在sendmail.mc文件中进行配置的修改
- [root@jszhan ~]# 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@jszhan ~]# 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@jszhan ~]# cat /usr/lib/sasl2/Sendmail.conf
- pwcheck_method:saslauthd
检查sasl安装包的完整性:
- [root@jszhan mail]# rpm -qa | grep sasl
- [root@jszhan 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@jszhan ~]# groupadd group-mail
- #建组内用户
- [root@jszhan ~]# adduser -g group-mail -s /sbin/nologin zpp001
- [root@jszhan ~]# adduser -g group-mail -s /sbin/nologin zpp002
- #设定用户密码
- [root@jszhan ~]# passwd zpp001
- Changing password for user zpp001.
- New UNIX password:
- BAD PASSWORD: it is too simplistic/systematic
- Retypenew UNIX password:
- passwd: all authentication tokens updated successfully.
- [root@jszhan ~]# passwd zpp002
- Changing password for user zpp002.
- New UNIX password:
- BAD PASSWORD: it is too simplistic/systematic
- Retypenew UNIX password:
- passwd: all authentication tokens updated successfully.
说明:建立邮件用户组是为了便于邮件用户的管理。使用"-s”选项指定用户的shell为"/sbin/nologin”,即不允许用户登录Linux系统,从而起到安全的作用。
最后生成sendmail.cf配置文件文件:
- [root@jszhan ~]# cd /etc/mail
- [root@jszhan mail]# m4 sendmail.mc > sendmail.cf
访问控制的设置:
Sendmail服务器中使用access.db数据库进行基于主机地址的访问控制
- [root@jszhan ~]# cat /etc/mail/access
- Connect:localhost.localdomain RELAY
- Connect:localhost RELAY
- Connect:127.0.0.1 RELAY
如需单独配置请改动这个文件,改动后请重新执行下面语句生成access.db文件
- [root@jszhan ~]# cd /etc/mail
- [root@jszhan mail]# makemap hash access.db < access
说明:此处我们保持默认设置即可,以此让sendmail服务器所在主机中的用户任意发送邮件,而 不需要身份验证。
重启服务:
- [root@jszhan]# service saslauthd restart
- Stopping saslauthd:[ OK ]
- Starting saslauthd:[ OK ]
- [root@jszhan]# service sendmail restart
- Shutting down sendmail:[ OK ]
- Shutting down sm-client:[ OK ]
- Starting sendmail:[ OK ]
- Starting sm-client:[ OK ]
sendmail的认证信息校验:
- [root@jszhan]# telnet localhost 25
- Trying127.0.0.1...
- Connected to localhost.
- Escape character is'^]'.
- 220 test.adsldns.org ESMTP Sendmail8.11.6/8.11.6;Mon,24Feb200311: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@jszhan mail]# vi /etc/dovecot.conf
- //找到下面的一行
- #protocols = imap imaps pop3 pop3s
- //将#注释去掉
- protocols = imap imaps pop3 pop3s
查看并设置自启动状态
- [root@jszhan]# chkconfig --list dovecot
- [root@jszhan]# chkconfig --level 35 dovecot on
- [root@jszhan]# /usr/sbin/dovecot
- 若出错,Dovecot是试图绑定到IPv6接口,但您的系统不支持IPv6。解决的办法是告诉达夫科特只监听IPv4接口。
- 修改配置项 vi /etc/dovecot/dovecot.conf (listen = *, :: 改为 listen = *)
查看110端口
- [root@jszhan mail]# netstat -ntpl | grep 110
- tcp 00:::110:::* LISTEN 6509/dovecot
这样,邮件服务器就顺利搭建完成了,你可以采用邮件客户端访问此服务器进行邮件收发了。 如果想使用网页版的邮件服务器可以自行下载网页邮箱源码安装在服务器上即可。
mail -s 'Test mail' xxx@163.com < body.txt
echo "this is content" | mail -s "this is a title" xxx@163.com
pop3:客户端接收邮件,可以删除移动,不会反馈到服务端
imap:
1、rpm -ql sendmail |more
2、vim local-host-names
# local-host-names - include all aliases for your machine here.
taimu-mail.000111.cn
3、
4\
yum -y install cyrus-sasl*