/ 中存储网

Sendmail邮件服务器详细配置讲解

2016-05-03 21:15:42 来源:中存储网

sendmail邮件服务器详细配置讲解

Sendmail服务软件包: 

sendmail-8.13.8-2.el5.i386.rpm       //sendmail服务的主程序包

sendmail-cf-8.13.8-2.el5.i386.rpm     //sendmail宏文件包  

sendmail-devel-8.13.8-2.el5.i386.rpm  //sendmail服务器开发工具软件包 

sendmail-doc-8.13.8-2.el5.i386.rpm   //sendmail服务器的说明文档 

m4-1.4.5-3.el5.1.i386.rpm           //宏处理过虑软件包  

dovecot-1.0-1.2.rc15.el5.i386.rpm    //接收邮件软件包,安装时需要注意安装顺序

Sendmail相关配置文档: 

/etc/mail/sendmail.cf      //sendmail核心配置文件。 

/etc/mail/sendmail.mc     //模板文件,定义了操作系统类型、文件位置、请求特征及邮件发送工 具、用户列表等信息,通过编辑此文件后再使用m4工具将结果导入sendmail.cf完成配置sendmail核心配置文件,降低配置复杂度。 

/etc/mail/local-host-name   //本地主机名和域名的列表,决定收到的邮件是本地邮件,还是远 程邮件,然后决定是本地投送还是转发  

/etc/mail/access            //完成中继转发功能,即加入允许访问的域名

/etc/mail access.db         //是通过access文件生成的数据库 

/etc/aliases.db             //用来定义邮箱别名,位于/etc/mail/aliases.db  

virtusertable.db      //用来设置虚拟账户,位于/etc/mail/virtusertable.db /etc/mail/sendmail.cw    //当一个主机有多个域名时,在此加入这些域名    /var/spool/mqueue         //邮件队列临时存放的目录

/var/mail                 //存放所有收到的邮件

/var/log/maillog            //日志文件  

搭建Sendmail服务器流程: 

(*)配置好DNS下的邮件交换器记录   *邮件交换器记录必需要添加,不然不能发送邮件 

(1)配置sendmail.mc文件 

(2)使用m4工具将sendmail.mc文件导入sendmail.cf文件

(3)配置local-host-names文件

(4)建立用户帐号 

(5)重新启动服务使配置生效 

现在开始安装sendmail服务  

一、首先安装好DNS服务器 

[root@localhost ~]# vim /etc/resolv.conf        //编辑DNS地址 

nameserver 10.6.7.100 

[root@localhost ~]# vim /etc/named.conf        //编辑配置文件 

options {         

listen-on port 53 { any; };        

listen-on-v6 port 53 { any; };        

allow-query     { any; };

zone "." IN {        

type hint;        

file "named.ca";

}; 

zone "rgb.com" IN {

       type master;         

file "rgb.com.zone";

}; 

zone "7.6.10.in-addr.arpa" IN {

     type master;        

file "10.6.7.arpa"; 

查看DNS正向反向区域里面是否添加了MX邮件交换记录:

[root@localhost ~]# vim /var/named/rgb.com.zone

 $TTL 1D

 @       IN SOA  ns.rgb.com.  root.rgb.com. (                                         

0                                 serial

1D       refresh   

1H       retry     

1W       expire    

3H )     minimum        

NS      ns.rgb.com.

ns        A       10.6.7.100

www     A       10.6.7.100

@  MX  10       mail.rgb.com.

mail      A       10.6.7.100  

[root@localhost ~]# vim /var/named/10.6.7.arpa

$TTL 1D 

@       IN SOA  ns.rgb.com.  root.rgb.com (

0        serial                                         1D       refresh                                         1H       retry                                         1W       expire                                         3H )    minimum       

NS      ns.rgb.com.

100     PTR     ns.rgb.com.

100     PTR     www.rgb.com.

@  MX  10     mail.rgb.com.

100     PTR     mail.rgb.com.

改 正、反区域文件的权限: 

[root@localhost named]# chgrp named rgb.com.zone 10.6.7.arpa    

重启named 服务,现在来测试MX记录:

[root@localhost named]# nslookup

> set q=mx        //测试MX记录 

> rgb.com         //检测MX记录时这里一定要输入这个区域名,而不是主机名+区域名

Server:         10.6.7.100 

Address:        10.6.7.100#53        

rgb.com mail exchanger = 10 mail.rgb.com.      //这里显示已成功

二、接下来就是安装sendmail包了:  默认已安装sendmail-8.13.8-2.el5及m4-1.4.5-3.el5.1包,我们只需要安装sendmail-cf-8.13.8-2.el5宏文件包和dovecot-1.0.5-1.fc8.i386.rpm接收邮件软件包就可以了。 

[root@localhost Packages]# rpm -ivh sendmail-cf-8.14.1-4.2.fc8.i386.rpm

warning: sendmail-cf-8.14.1-4.2.fc8.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2  Preparing...    ########################################### [100%]    1:sendmail-cf           ########################################### [100%]

[root@localhost Packages]# rpm -ivh dovecot-1.0.5-1.fc8.i386.rpm 

warning: dovecot-1.0.5-1.fc8.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing...              ########################################### [100%]    1:dovecot               ########################################### [100%]

此时需要安装的rpm包已装完,现在就差配置了,在配置之前,最好是对/etc/mail下面这几个文件备个份: sendmail.mc    sendmail.cf  

[root@localhost mail]# cp sendmail.mc sendmail.mc.bak

[root@localhost mail]# cp sendmail.cf sendmail.cf.bak

 

三、开启sendmail认证功能 

接下来就开始编辑sendmail.mc发信认证这个文件了,打开这个文件编辑如下: [root@localhost ~]#vim /etc/mail/sendmail.mc  

将52-53两行配置文件前面的dnl去掉: 

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl  define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN  PLAIN')dnl

#注意:TRUST_AUTH_METH   define 前面不要留有空格 

第116行将smtp侦听范围从127.0.0.1改为0.0.0.0或将这行前面加dnl注释掉。

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl  或     DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl  

第155行:LOCAL_DOMAIN(``localhost.localdomain ')dnl  修改成如下自己域:  LOCAL_DOMAIN(`rgb.com')dnl           //这里的是本地邮箱的域名

四、更改访问数据库文件,再来修改access配置文件,把想要接收和发送的网段添加到最后面,如下: 

[root@localhost ~]#vim /etc/mail/access

# By default we allow relaying from localhost...

Connect:localhost.localdomain           RELAY

Connect:localhost                       RELAY

Connect:127.0.0.1                       RELAY 

Connect:10.6.7.0                        RELAY      //这是你要接收和发送的网段

或者 

Connect:rgb.com                       RELAY      //这是你接收和发送的域名

五、现在再来添加sendmail服务器邮箱的域名

[root@localhost mail]# vim local-host-names  

在里面添加邮箱域名, 

rgb.com       /例:用户名@域名    qqq@rgb.com  

如果想用IP地址接收邮件,则需要在该文件中写入IP 

六、再来修改接收邮件服务的这个配置文件,如下:

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

将第20行前面的#号去掉 

protocols = imap imaps pop3 pop3s       //没有这行utlookExpress只能发送不能接收邮件

到这一步所有的配置文件都修改好了。

七、现在就要开始用运行M4程序,重新生成sendmail.cf文件,如下:

[root@localhost mail]# m4 sendmail.mc > sendmail.cf

八、再用makemap命令进行数据库更新,如下: 

[root@localhost mail]# makemap hash access.db < access

到了现在基本上都配置完成了,现在就要添加用户了

#useradd qqq

#useradd www

#passwd qqq

#passwd www

【修改/etc/dovecot.conf pop3服务文件

#vi  /etc/dovecot.conf

把#protocols=IMAP IMAPS POP3 POP3S这行改成

    去掉“ #”注释符号

   protocols=POP3

这行就配置了POP3服务的功能】

九、用户添加了现在就可以启动邮件服务了,默认sendmail服务已启动,dovecot服务没有启动,启动如下 

#service sendmail restart

#service dovecot restart   

【邮件测试。重启所有的服务(目的是确保服务都启动了)

 #service named restart (DNS启动)

#service dovecot restart (pop3服务启动)

#service sendmail restart (邮件服务启动)】

十、可以通过telnet本机IP 25来验证sendmail服务是否已经正常启动,若登陆成功,则说明sendmail服务已经成功启动。 

[root@localhost mail]# telnet localhost 25       

【开始测试端口   #telnet localhost 25】

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'. 

220 localhost.localdomain ESMTP Sendmail 8.14.1/8.14.1; Wed, 2 Nov 2011 01:22:44 +0800  ehlo localhost      //这是要输入的命令 

250-localhost.localdomain Hello localhost.localdomain [127.0.0.1], pleased to meet you

250-ENHANCEDSTATUSCODES

250-PIPELINING 

250-8BITMIME

250-SIZE

250-DSN

250-ETRN 

250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN     //在AUTH后面有LOGIN就基本上可以在

250-DELIVERBY                                  OutlookExpress上认证了   

250 HELP 

quit        //这是退出界面的意思  

注:DNS中邮件交换器记录必需要添加,不然不能接收邮件 

在客户端打开outlook,配置时要注意下面这一对话框: 

常用知识:

创建邮件列表别名:

# vim /etc/aliases

最后一行加入: 

Laoban:  qqq,www              给laoban发邮件,qqq,www这两个用户可以收到邮件 ltocc:   qqq                           给ltocc发邮件,qqq可以收到邮件 

#newaliases 使别名生效,或者重启动service sendmail restart服务使别名生效 通过这种方法可以达到邮件群发的目的 Relay转发 

#vim /etc/mail/access  

通常情况下,Sendmail不会为邮件服务Relay信息,这样可以防止一些有恶意的人利用别人的邮件服务器乱发邮件。缺省情况下,Sendmail关闭了Relay功能。如果你要为别的服务器邮件,可以进行如下设置——在access文件中加入要为其Relay信件的机器,格式为:

hostname RELAY

ipaddress RELAY  

如果要为一个域内多个机器Relay信件,则可以在/etc/mail/access文件中直接加入其子网IP或域名,如下所示:  

access文件内容:   

domainname.com RELAY(允许为域domainname的所有计算机relay邮件)  

localhost RELAY   

192.168.1.0 RELAY (为192.168.1.0此网内所有机器relay邮件) 

此文件惟一决定了哪些机器、哪个域可以使用邮件服务器转发邮件。

根据自己需要修改完成后,生成数据库文件:   

#makemap hash access.db <access       //生成access.db文件

service sendmail restart 建立邮箱 

例如:将邮箱目录放在/boot下的mail1,mail2目录

useradd mail1 -d /boot/mail1

useradd mail2 -d /boot/mail2

passwd mail1

passwd mail2  

修改转发和返回时间,最大邮件kb,连接的最长时间, 

修改sendmail.cf(/etc/mail/sendmail.cf) 

前提用M4重新生成sendmail.cf文件后再改

修改如下: 

O Timeout.connect=1m    设置等待连接的最长时间为1分钟,在318行

O Timeout.queuereturn=5d     335行 

O Timeout.queuewarn=3h  

设定服务器为邮件转发时间为3h(如果信寄不出去,

系统会寄一封信通知使用者,继续5d)  340行

设置用户邮件的大小限制(187行) 

在sendmail.mc中没有这个选项,这个要在sendmail.cf中设置 

前提是先把sendmail.mc生成sendmail.cf后再在sendmail.cf中设置,不然会替换掉

vim /etc/mail/sendmail.cf

# maximum message size      

#O MaxMessageSize=0  

 默认不限制,以字节为单位 我们可以设置成邮件最大不超过20MB,Relay

O MaxMessageSize=20971520    //20MB=20*1024KM*1024b 

意思为每次收发邮件最大为20MB,任何超过这个值的邮件将被拒绝。

O MaxMessageSize = 1048576       这是按字节算的1024字节=1K 1024K=1M

意为每次收发邮件最大为1MB,任何超过这个值的邮件将被拒绝。

利用quota限制用户邮箱大小 

先修改fstab文件(/etc/fstab)使目录开启quota功能,如对/var做quota

将LABEL=/var /var ext3 defaults 1 2

修改后  LABEL=/var /var  ext3 defaults,usrquota,grpquota 1 2

重启系统后才能开启quota功能

命令: 

quotacheck -avug !生成aquota.user和aquota.group quotaon -avug !开启quota功能

修改用户限制  edquota -u mail1       

# mail1是要设置磁盘配额的用户

修改里面的soft,hard(soft为警戒线,hard为最大) Disk quotas for user rgb (uid 500):    Filesystem         blocks       soft       hard     inodes     soft     hard    /dev/sda2          4          0       20000         1        0        0  

这里mail用户修改为hard(20000),意思是容量不能超过20M。

延伸阅读:

CentOS 6系统安装sendmail邮件服务器及配置方法

RedHat Linux配置sendmail的详细图文教程

starting sendmail导致系统启动慢的解决办法

解决sendmail发送中文utf-8 html文件出现的乱码的问题