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 |
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |