Sendmail邮件服务器的配置.docx

上传人:b****5 文档编号:3573275 上传时间:2022-11-24 格式:DOCX 页数:15 大小:163.06KB
下载 相关 举报
Sendmail邮件服务器的配置.docx_第1页
第1页 / 共15页
Sendmail邮件服务器的配置.docx_第2页
第2页 / 共15页
Sendmail邮件服务器的配置.docx_第3页
第3页 / 共15页
Sendmail邮件服务器的配置.docx_第4页
第4页 / 共15页
Sendmail邮件服务器的配置.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

Sendmail邮件服务器的配置.docx

《Sendmail邮件服务器的配置.docx》由会员分享,可在线阅读,更多相关《Sendmail邮件服务器的配置.docx(15页珍藏版)》请在冰豆网上搜索。

Sendmail邮件服务器的配置.docx

Sendmail邮件服务器的配置

使用SendMail搭建邮件服务器

一、电子邮件系统的组成

电子邮件系统分五部分:

MTA,MSA,MUA,MDA,MAA

1)邮件用户代理(MailUserAgent,MUA)MUA是一个邮件系统的客户端程序,它提供了阅读,发送和接受电子邮件的用户接口。

最常用的MUA有:

linux中的mail,elm,pine等。

Windows的outlook,foxmail等

2)邮件代理器(MailTransferAgent,MTA)

MTA负责邮件的存储和转发(storeandforward)。

MTA监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接受到的邮件进行缓冲。

在linux下的MTA程序有:

sendmail,qmail等,

3)邮件提交代理(MailSubmmissionAgent,MSA)

MSA负责消息有MTA发送之前必须完成的所有准备工作和错误检测,MSA就像在MUA和MTA之间插入了一个头脑清醒的检测员对所有的主机名,从MUA得到的信息头等信息进行检测。

4)邮件投递代理(MailDdliveryAgent,MDA)

MDA从MTA接收邮件并进行适当的本地投递,可以投递个一个本地用户,一个邮件列表,一个文件或是一个程序。

Linux下常用的MDA是mail.local,smrsh和procmail

5)邮件访问代理(MailAccessAgent,MAA)

MAA用于将用户连接到系统邮件库,使用POP或IMAP协议收取邮件。

Linux下常用的MAA有UW-IMAP,Cyrus-IMAP,COURIER-IMAP等

SendMail属于MTA,用来存储和转发邮件,配合dovecot使用pop3协议将邮件下载到foxmail等邮件客户端。

二、SendMail服务器的搭建

涉及到的主要服务有:

/etc/init.d/sendmail#MTA

/etc/init.d/dovecot#pop3协议转发服务

/etc/init.d/saslauthd#安全认证服务

主要配置文件在/etc/mail/下:

1)access数据库文件,用于配置邮件中继和邮件收发权限控制。

2)sendmail.mc,sendmail的主要配置文件。

3)local-host-names域名文件可以用他来实现虚拟域名或多域名支持。

4)/etc/aliases,mail别名文件,用来进行别名控制,邮件转发控制。

5)/etc/mail/mailertable,为特定的域指定特殊的路由规则。

6)/etc/mail/domaintable,域名映射。

其他相关的配置文件:

1)/etc/hosts,/etc/sysconf/network对于主机名进行修改

A.Sendmail.mc的主要参数说明

Sendmail的实际配置文件为sendmail.cf,但是格式规则很复杂;sendmail.mc用来生成sendmail.cf,命令为:

$m4/etc/mail/sendmail.mc>/etc/mail/sendmail.cf

生成之后需要重启sendmail服务

sendmail.mc文件中指令的意义:

指令意义

divert(-1)删除结果文件中的垃圾

divert(0)保存通常的配置文件

Dnl注解

Include包含一个文件

definearg1arg2定义宏arg1设置为arg2

undefinearg1取消arg1的定义

OSTYPE('Linux')定义操作系统类型

FEATURE功能选项,对应/usr/lib/sendmail-cf/feature里定义的文件名称

MAILER定义所有必要的邮件投递代理程序

ASQUERADE_AS用来处理多主机名称问题

Sendmail.mc中行首为dnl的为注释,一些可能用到的参数:

include(`/usr/share/sendmail-cf/m4/cf.m4")dnl   (将sendmail-cf/m4/cf.m4包含进来)

VERSIONID(`setupforRedHatLinux")dnl(定义版本信息)

OSTYPE(`linux")dnl(选择包含操作系统指定属性的文件)

define(`confDEF_USER_ID",``8:

12"")dnl(指定使用的用户ID为8,组ID为12)

dnldefine(`confAUTO_REBUILD")dnl

define(`confTO_CONNECT",`1m")dnl   (设置等待连接的最大时间为1分钟)

define(`confTRY_NULL_MX_LIST",true)dnl(若MX记录指向本机,则sendmail直接连接到远程主机)

define(`confDONT_PROBE_INTERFACES",true)dnl(sendmial不会自动将服务器的网络接口视为有效地址)

define(`PROCMAIL_MAILER_PATH",`/usr/bin/procmail")dnl(设置procmail的存放路径)

define(`ALIAS_FILE",`/etc/aliases")dnl(设置邮件别名存放路径)

define(`STATUS_FILE",`/var/log/mail/statistics")dnl

define(`UUCP_MAILER_MAX",`2000000")dnl(设置处理信息的最大限制为2M)

define(`confUSERDB_SPEC",`/etc/mail/userdb.db")dnl(设置用户数据库文件路径)

define(`confPRIVACY_FLAGS",`authwarnings,novrfy,noexpn,restrictqrun")dnl(设置限制某些邮件命令的标志)

define(`confAUTH_OPTIONS",`A")dnl仅在授权成功时。

将AUTH参数加到邮件的消息头中

FEATURE(`no_default_msa",`dnl")dnl(允许MSA被DAMEMON_OPTION覆盖的默认设置)

FEATURE(`smrsh",`/usr/sbin/smrsh")dnl(设置邮件发送器smrsh的存放路径)

FEATURE(`mailertable",`hash-o/etc/mail/mailertable.db")dnl(设置邮件发送器数据库的存放路径)

FEATURE(`virtusertable",`hash-o/etc/mail/virtusertable.db")dnl(设置虚拟邮件域数据库的存放路径)

FEATURE(redirect)dnl(支持.redirect虚拟域)

FEATURE(always_add_domain)dnl(增加主机名到所有本地发送的邮件)

FEATURE(use_cw_file)dnl(装载/etc/mail/local-host-names文件中定义的主机名)

FEATURE(use_ct_file)dnl  (装载可信任用户名单)

FEATURE(local_procmail,`",`procmail-t-Y-a$h-d$u")dnl(使用procmail作为本地邮件发送者)

FEATURE(`access_db",`hash-T-o/etc/mail/access.db")dnl(从/etc/mail/access.db装载可以中继的域)

FEATURE(`blacklist_recipients")dnl(根据访问数据库的值过滤外来邮件)

EXPOSED_USER(`root")dnl(禁止伪装发送者地址中出现root用户)

DnlDAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1,Name=MTA")dnl(指定sendmail作为MTA运行时的参数,默认系统只开放25端口给本机连接,关闭此项表示开放25端口给任何用户,使如下参数即可

DAEMON_OPTIONS(`Port=25,Name=MTA")dnl,

不使用smtp而是用25,是因为在smtp的默认端口(25)上进行认证,而不是587端口。

这样就强制所有使用该邮件服务器进行邮件转发的用户在认证后才能发邮件了。

DAEMON_OPTIONS(`Port=submission,Name=MSA,M=Ea")dnl

提供对于587端口的监听,认证,对于由于MUA所在域阻塞25端口或者被重定向的用户起作用。

DnlFEATURE(`accept_unresolvable_domains")dnl设置可以接受不能由NDS主机所发送的邮件

LOCAL_DOMAIN(`localhost.localdomain")dnl设置本地域,注意域名

MAILER(smtp)dnl(指定sendmail所有SMTP发送者,包括smtp,esmtp,smtp8,和replay)

MAILER(procmail)dnl(指定使用procmail作为本地邮件的发送者)

DnlTRUST_AUTH_MECH(`EXTERNALDIGEST-MD5CRAM-MD5LOGINPLAIN")dnl

define(`confAUTH_MECHANISMS",`EXTERNALGSSAPIDIGEST-MD5CRAM-MD5LOGINPLAIN")dnl

TRUST_AUTH_MECH的作用是使sendmail不管access文件中如何设置,都能relay那些通过EXTERNAL,LOGIN,PLAIN,CRAM-MD5或DIGEST-MD5等方式验证的邮件,如果需要组织mail服务器向外发送邮件,可以注释掉这一项,然后再access中加入规则。

confAUTH_MECHANISMS的作用是确定系统的认证方式。

OutlookExpress支持的认证方式是LOGIN。

B.Access的主要参数简单说明(详细说明参考附录)

/etc/mail/access.db数据库可以用来防止smtp转发功能被滥用,是用来给sendmail提供权限控制的文件,由/etc/mail/access配置文件生成,命令为:

$makemaphash/etc/mail/access.db

要使用该数据库,必须确保在mc中一下两行被使用:

FEATURE(`access_db',`hash -T -o /etc/mail/access.db')dnl

FEATURE(`blacklist_recipients')dnl

TODO:

文件生效是否需要重启sendmail

/etc/mail/access.db是一个散列数据库,它是用/etc/mail/access产生出来的,/etc/mail/access是纯文本文件,格式为:

<地址> <操作>中间以空格做为分隔符

地址字段

domain* 域内所有主机

192.168.12192.168.12.*即该网段内所有主机,相当于192.168.12.0/24

192.168.1.1特定的主机

username@domainsomeone@一个特定的邮件地址

username@someone@用户名为someone的邮件

TO:

host1.domain指定方向

FROM:

host1.domain指定方向

Connect:

connectioninformation(${client_addr},${client_name})

操作字段

0K无条件接受或发送

RELAY允许SMTP代理投递

REJECT拒绝接受并发布错误信息

DISCARD丢弃邮件,勿错误信息发布

ERROR:

D.S.N:

###anytext返回给sender的错误信息

###anytext

ERROR:

###anytext

C.Aliases别名和转发控制,virtusertable虚表控制

查看aliases文件命令:

praliases命令可以查看/etc/aliases文件,要是修改的aliases文件立即生效,需要运行newaliases.

/etc/aliases数据库主要改写入站地址,不能改写出站地址

要使用别名功能,必须确保在mc文件中该行使用

define(`ALIAS_FILE',`/etc/aliases')dnl

/etc/aliases文件是一个文本文件,格式为:

alias:

recipient[,recipient, ...]

alias:

邮件地址中的用户名

recipient:

是实际上接受该邮件的用户

也可以使用下面的设置方法:

mkdir /etc/mail/maillist

echo“mail1mail2”>/etc/mail/maillist/net-adm

echonet-adm:

:

include:

/etc/mail/maillist/net-adm>>/etc/aliases

aliases定义别名的作用:

1.为单个用户设置别名:

Test1:

mail1

Test2:

mail2

Mail1,mail2为本地系统实际用户名

2.利用别名来保护登陆帐号,系统管路员可以使用别名来保护合法用户的帐号不被泄漏

假设我在210.22.128.203()上有个系统帐号为mail1(可以使用mail1@),而对外的电子邮件帐号可以是test,就需要如下设置

test:

mail1

3.将发给特殊用户的邮件转发给实际用户

mail-daemon:

test1

root:

test2

4.实现邮件列表

net-adm:

test1,andrew 可以通过发送给net-adm@转发给test1和andrew多个用户

5、转发邮件

test1:

mail1@ 

这样发给test1@的邮件自动转发到mail1@邮箱中

/etc/mail/virtusertable数据库说明:

要使用虚拟域功能,必须确保在mc文件中该行使用:

FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl

虚拟域用户的文件缺省为/etc/mail/virtusertable.db,它用/etc/mail/virtusertable文件生成,格式为:

虚拟域地址 真是地址(中间用tab键分开)

someone@localuser

#发送给someone@的邮件现在要发送给本级的用户localuser

@test@

#所有发往***@的邮件都会被发送到test@

@%1@

#user1@的邮件发给user1@,

#user2@的邮件发给user2@

@ %1test@

#user1@的邮件发给user1test@,

#user2@的邮件发给user2test@

然后建立新的数据库:

makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertabl

设置虚拟域用户能够工作有以下的前提:

(1)配置DNS,并设置虚拟域的MX记录

(2)将所有的虚拟域田间到文件/etc/mail/local-host-names中作为本地域别名

(3)将所有的虚拟域添加到文件/etc/mail/access并允许RELAY

D.Sendmail域名控制

Sendmail对于域名设置要求比较严格,涉及的文件包括

/etc/mail/sendmail.mc(LOCAL_DOMAIN(`host1.domain‘)dnl)

/etc/mail/local-host-names

/etc/hosts

/etc/sysconfig/network(HOSTNAME=)

各个文件配置要求一致,例如需要配置一个域名为host1.domain的server的话:

/etc/mail/sendmail.mc

LOCAL_DOMAIN(`host1.domain‘)dnl

/etc/mail/local-host-names

host1

/etc/hosts

127.1.1.1host1host1.domainlocalhost

/etc/sysconfig/network

NETQWORKING=yes

HOSTNAME=host1

可以使用sendmail–d0

E.Sendmail实现ssl加密传输的设置

进入/etc/pki/dovecot/certs/目录,执行:

$makesendmail.pem

输入相应的信息生成sendmail.pem认证文件。

修改/etc/mail/sendmail.mc文件,找到以下四行,将其前面的注释符号去掉,打开Sendmail的ssl认证:

define(`confCACERT_PATH',`/etc/pki/tls/certs')dnl

define(`confCACERT',`/etc/pki/tls/certs/ca-bundle.crt')dnl

define(`confSERVER_CERT',`/etc/pki/tls/certs/sendmail.pem')dnl

define(`confSERVER_KEY',`/etc/pki/tls/certs/sendmail.pem')dnl

注释掉其他没有ssl认证的端口(这个默认端口为465):

注意一个问题:

OutLookExpre3ss只能从端口25进行STARTTLS,Mozilla只能使用STARTTLS,ForMail支持指定端口465进行传输,所以如果要提供对于OutLook或者Mozilla的支持,需要打开25端口或者587端口

dnlDAEMON_OPTIONS(`Port=smtp,。

)dnl#25

dnlDAEMON_OPTIONS(`Port=submission,。

)dnl#587

dnlDAEMON_OPTIONS(`Port=25,。

)dnl

dnlDAEMON_OPTIONS(`Port=587,。

)dnl

打开默认的ssl认证端口:

DAEMON_OPTIONS(`Port=smtps,Name=TLSMTA,M=s')dnl

运行命令,使配置生效:

$m4sendmail.mc>sendmail.cf

重启sendmail服务

三、Dovect服务器的搭建,提供pop3s和imaps服务

SendMail只能实现SMTP协议的功能,而目前在使用邮件系统时很多用户还是习惯使用类似foxmail的一些邮件客户端软件,这些软件通常都支持pop3、IMAP4等协议。

如果希望在RHEL中实现pop3、IMAP4需要使用dovecot。

默认的pop3和imap提供的是明文传输,安装完成后,只要直接启动dovecot服务即可,如果需要打开pop3s和imaps服务,需要如下配置:

修改在/etc/dovecot.conf文件,在

protocls=imapimapspop3pop3s

行中删除不需要协议,为了安全,我们使用如下配置:

protocls=imapspop3s

在/etc/pki/tls/certs目录下输入以下命令生成密钥:

$makedovect.pem

根据提示输入相应信息生成认证文件,并修改相应配置

重启dovect服务即可

使用命令查看端口:

$netstat–lnupt

tcp       0     00.0.0.0:

465                0.0.0.0:

*                  LISTEN     4150/sendmail:

ace

tcp       0     0192.168.1.12:

993           0.0.0.0:

*                  LISTEN     4111/dovecot       

tcp       0     0192.168.1.12:

995           0.0.0.0:

*                  LISTEN     4111/dovecot

附录:

1添加本地路由

在linux下添加本地路由修改/etc/hosts即可;

在windows下,修改%windir%/system32/drivers/etc/hosts即可。

2Access数据的参数说明

Thesendmailaccessdatabasefilecanbecreatedtoacceptorrejectmailfromselecteddomains.

Since"/etc/mail/access"isadatabase,aftercreatingthetextfile,usemakemaptocreatethedatabasemap.

#makemaphash/etc/mail/access.db

Belowiswhatmyaccessfilecurrentlylookslikeandcanbeusedasastartingpoint.Allinternaladdresseshavebeenchangedexceptforspammers!

!

#bydefaultweallowrelayingfromlocalhost...

localhost.localdomainRELAY

localhostRELAY

127.0.0.1RELAY

#AllowConnectfromlocalserverIPs

Connect:

207.44.206.144OK

#AcceptMail

#acceptmailfromPayPa

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1