您所在的位置:读书频道 > 操作系统 > Linux > 19.7.4 开放SMTP身份认证的Relay机制

19.7.4 开放SMTP身份认证的Relay机制

2007-12-06 20:05 鸟哥 机械工业出版社华章公司 字号:T | T
一键收藏,随时查看,分享好友!

《鸟哥的Linux私房菜——服务器架设篇》(第二版)第19章的主要介绍的是以Postfix为主的邮件主机架设。本文主要介绍的是开放SMTP身份认证的Relay机制。

AD:

19.7.4  开放SMTP身份认证的Relay机制

在图19-1中,由MUA通过MTA来寄发信件时(具有Relay的操作时),理论上MTA必须开放客户端来源,这就是为什么我们必须在main.cf中设置SMTPd_recipient_restrictions的原因。不过人总有不方便的时候,例如,如果您使用的是ADSL,所以每次取得的IP都非固定,那如何使用您的MTA?很麻烦对吧。这个时候SMTP认证或许有点帮助。

关于SMTP认证的使用前面已经稍微提过了,重点在于MUA想要使用MTA来进行Relay的时候,MTA会要求MUA来输入认证用的账号与密码,以取得使用的权限。CentOS已经提供内建的认证模块,即Cyrus SASL。

Cyrus SASL(http://cyrusimap.web.cmu.edu/)是Cyrus Simple Authentication and Security Layer的缩写,它是一个辅助软件。在SMTP认证方面,Cyrus主要提供saslauthd服务来进行账号密码的对比操作,即当有想要进行邮件转发功能时,Postfix会联络saslauthd请其代为检查账号与密码,若对比通过则允许客户端开始转寄信件。

如果想要使用最简单的方式来进行SMTP认证功能的话,在CentOS中应该这样做:

• 安装cyrus-sasl、cyrus-sasl-devel、cyrus-sasl-plain、cyrus-sasl-md5等软件。
• 启动saslauthd服务。
• 设置main.cf让Postfix可以与saslauthd联系。
• 客户端必须在寄信时设置“邮件主机认证”功能。

如此一来客户端才能启动SMTP AUTH。关于软件安装方面,请使用yum直接安装。下面由启动saslauthd服务开始进行详细讲解。

1. 启动saslauthd服务

saslauthd是Cyrus SASL提供的一个账号密码比对管理机制,虽然它只能利用简单的PLAIN机制进行密码验证,不过在设置上较为简单。saslauthd可以连接很多账号、密码管理机制,包括LDAP、PAM、SASLDB2以及SQL数据库系统等。如果想要直接使用Linux系统上面的用户信息,即/etc/passwd、/etc/shadow所记载的账号、密码相关信息时,可以使用shadow机制,当然也能使用pam。更多的saslauthd连接至主机的机制请man saslauthd来查阅。

saslauthd的启动很简单,首先您需要选择密码管理机制,可以使用下面的方式处理:

1. 先了解您的saslauthd有支持哪些密码管理机制
[root@linux ~]# saslauthd -v
saslauthd 2.1.19
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap
# 上列的特殊字体部分是有支持的。要用Linux本机的用户信息
# 所以用shadow即可

2. 设置实际使用的机制
[root@linux ~]# vi /etc/sysconfig/saslauthd
MECH=shadow
# 这也是默认值,有的朋友喜欢pam机制,也可以

3. 启动
[root@linux ~]# /etc/init.d/saslauthd start
[root@linux ~]# chkconfig saslauthd on

之后必须告知Cyrus使用的服务为saslauthd,设置的方法很简单:

[root@linux ~]# vi /usr/lib/sasl2/SMTPd.conf
log_level: 3                   <==日志文件信息等级的设置,设置3即可
pwcheck_method: saslauthd   <==选择什么服务来负责密码的比对
mech_list: PLAIN LOGIN       <==支持的机制有哪些

因为saslauthd默认仅支持明码传输,可以使用mech_list列出特定支持的机制。而且saslauthd是个很简单的账号、密码管理服务,几乎不需要进行额外的设置,直接启动它即可生效。

2. main.cf的设置项目

Postfix该如何处理呢?其实很简单,进行如下操作即可:

[root@linux ~]# vi /etc/Postfix/main.cf
# 在本文件最后增加这些设置数据
SMTPd_sasl_auth_enable=yes
SMTPd_sasl_security_options=noanonymous
broken_sasl_auth_Clients=yes
# 然后找到跟Relay有关的设置项目,增加一段允许SMTP认证的代码
SMTPd_recipient_restrictions =
     permit_mynetworks
     permit_sasl_authenticated
     reject_unauth_destination
     reject_rbl_Client cbl.abuseat.org
     reject_rbl_Client bl.spamcop.net
     reject_rbl_Client cblless.anti-spam.org.cn
     reject_rbl_Client sbl-xbl.spamhaus.org
     check_policy_service unix:/var/spool/Postfix/postgrey/socket

[root@linux ~]# /etc/init.d/Postfix restart

各个参数的意义说明如下。

(1)SMTPd_sasl_auth_enable

设置是否要启动sasl认证的意思,如果设置,Postfix会主动去加载cyrus sasl的函数库,而该函数库会依据/usr/lib/sasl2/SMTPd.conf的设置来连接到正确的管理账号与密码的服务,即saslauthd。

(2)SMTPd_sasl_security_options

要取消哪些登录方式的意思。可以取消匿名登录的可能性,所以设置为noanonymous即可。由于saslauthd使用的是plaintext,所以不能设置noplaintext,这里需要留意。

(3)broken_sasl_auth_Clients

这是针对早期非正规MUA的设置项目,因为早期软件开发商在开发MUA时没有参考通信协议标准,所以造成在SMTP认证时可能会发生的一些困扰。例如MS的Outlook Express第4版就是这样,后来的版本应该没有这个问题。所以这个设置值您也可以不要设置。

(4)SMTPd_recipient_restrictions

最重要的就是这个。sasl认证可以放在第二行,在局域网的可信任区域的后面加以认证。上述代码的设置意义是:局域网内的MUA不需要认证也能够进行Relay,而非局域网内的其他来源才需要进行SMTP认证。

设置完毕并重新启动Postfix之后,先来测试一下能否提供认证。

[root@linux ~]# Telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '_]'.
220 vbird.vbird.idv.tw ESMTP Postfix
ehlo localhost
250-linux.vbird.tsai
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN     <==您必须看到下面这两行才行
250-AUTH=LOGIN PLAIN
250 8BITMIME
quit
221 Bye

3. 客户端的设置

客户端也需要设置向MTA主机发送SMTP认证的功能才行。作法很简单,以Thunderbird为例,请打开thunderbird,选择“工具”|“账号设置”后会出现如图19-12所示界面。

图19-12 客户端认证机制所需要启动的项目

在上图中将用户账号及密码项目勾选,并且不使用安全联机即可(因为saslauthd仅支持明码认证而已),然后尝试寄出一封信,看看是否能顺利通过认证,记得此客户端不要在局域网内,否则将不会经过认证的阶段,因为我们的设置以信任网段为优先。

如果一切顺利的话,当客户端以SMTP来验证时,您的日志文件应该会出现类似如下的信息:

[root@linux ~]# tail -n 100 /var/log/Maillog | grep PLAIN
Nov 28 15:27:21 linux Postfix/SMTPd[23060]: EFCC9A26CB: Client=unknown
[192.168.100.25], sasl_method=PLAIN, sasl_username=dmtsai

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

分享到:

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点职位

更多>>

热点专题

更多>>

读书

Visual C++编程从基础到实践
Visual C++ 6.0是Microsoft公司的Visual Studio开发组件中最强大的编程工具,利用它可以开发出高性能的应用程序。本书由浅入深,

最新热帖

更多>>

51CTO旗下网站

领先的IT技术网站 51CTO 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院 区块链第一聚合媒体 zhijiapro