邮件服务器在Internet上扮演着一个非常重要的角色。SMTP(简单邮件传输协议)是Internet上计算机之间传送电子邮件所普遍采用的协议,Sendmail是构成邮件服务器的Unix系统中使用极为广泛的一种邮件传输代理程序,它遵循SMTP协议,提供了很强大的邮件服务功能,可以承载高达数万个用户的电子邮件通信服务。
" l# r! ~( `" B9 W$ k2 x1 F
( @, y p3 D2 M3 i3 E& b8 o! R 美中不足的是,Sendmail在为用户发送邮件时,并不对用户进行身份认证,这就给一些广告邮件或垃圾邮件的制造者提供了机会──任何人只要想发信,就可以利用任何一台没有带认证功能而又对其“open relay”的Sendmail邮件服务器,为其发送大量的垃圾或广告信件。虽然Sendmail 8.9.3以上的版本提供了一些限制邮件转发的功能,可以在某种程度上限制这种情况的发生,但它只能根据静态的IP地址、邮件地址或域名来进行限制,这使得合法用户只能在固定的IP地址范围内使用邮件服务器,否则将会被拒绝。这样就给用户带来了使用上的不方便,例如用户下班回家或是出差在外,都无法使用工作单位的邮件服务器发信,学生放假离开学校也不能使用学校的邮件服务器发出信件。但是假如设定邮件服务器为open relay模式,又怕造成服务器转发功能被滥用。这是个很矛盾的问题,长期困扰着邮件服务器的治理员。4 |" v, l: @: Z* c3 X p
6 U4 s' o9 @& S' b4 D
为了不让自己的邮件成为垃圾邮件的中转站而被外面的邮件服务器拒绝,以往许多邮件服务器的治理员大都只能选择限制mail relay的模式。现在好了,随着Sendmail软件版本的不断更新,新的功能也随之出现。使用新版本的Sendmail 8.12.5邮件服务器软件,再搭配Cyrus-SASL(Simple Authentication and Security Layer)身份认证程序库,就可以解决对邮件用户进行身份认证的问题。服务器有了认证功能后,任何人想通过邮件服务器发送信件时都得先输入用户名和密码进行身份认证。" s/ b4 [& P5 E6 Q+ D( ~
8 t" Q" \4 J4 o* V, s 下面就给大家详尽解释一下如何编译、安装Cyrus-SASL程序库和Sendmail 8.12.5软件使邮件系统支持SASL的SMTP认证功能。: `' [0 j, E, |1 ^* \
9 Z- m. {7 z y4 W
一、环境
: I) h, o4 B9 K6 W [& _
* f7 T6 U7 _) q4 N8 J 操作系统平台:Solaris 2.7 或 Linux 6.2 或更高
C0 z' C, f4 A V9 n9 b
# ^, W, L" A* ]0 w 使用软件:Cyrus-SASL 1.5.27和Sendmail 8.12.5% `( e- o1 g6 v+ E" K, g" S
7 i7 |1 a! m& B2 R, M( r9 a6 Q 二、编译、安装Cyrus-SASL程序库:
- ]& t. q& k' V Z4 @
2 p2 w. g {# a 2、解包:
$ T; I' D# r. p1 q* B1 J
: r7 ?+ }0 _+ b& `. Z; L' z tar xvfz cyrus-sasl-1.5.27.tar.gz
: Q+ ]1 h, o8 A5 Q0 n' l+ f2 ]7 b( v$ d8 |% _5 L
3、编译、安装:" U% i! W( B1 e
2 ]4 T0 W8 n9 c7 | 进入cyrus-sasl-1.5.27目录:& H# P0 U5 |9 |" U! d+ e% C
2 e6 U& w% t! c
#cd cyrus-sasl-1.5.27
( ?) B" @; A- o' \ C% c* ^2 X
$ D* Z: D X* t 编译配置:
/ ~+ z* y2 A9 `4 C9 n) d$ P( B5 \' r# M! i: {7 r/ o, k4 z' F
#./configure ——enable-login ——enable-plain# K. n" g' j! X3 J
. Y2 m# e6 ]7 F. z' D1 h- `. i" G 这里由于SASL库缺省状态下并不支持某些客户端软件的使用方式,所以要在生成配置文件时非凡加入一些功能选项。具体要加什么可以用命令查看:
7 Z) C: k( v7 m3 D$ p
1 h; r8 `* \0 ]# x( a: |( ~/ n9 ~' ? #./configure -help
8 M7 Z& x, K- I' c5 r2 e$ V& x
+ f1 ^ g8 H* @/ F 如加“——enable-login”是因为OutLook Expresss使用LOGIN的认证方法,SASL库缺省并不支持这种方式,所以要在生成配置文件时非凡加入。4 r9 P6 f$ D6 E4 I
6 I9 Y3 T2 F, t. \1 j) r
另外,缺省情况下,所有的库函数是安装到“/usr/local/lib”目录下,但Sendmail使用的库函数是在目录“/usr/lib”中的,所以需要做一些修改。在运行configure脚本前,修改其中的缺省路径就可以了。方法是打开configure文件找到下面这一行:
' A. U0 N2 ]0 U; a( G: G9 n6 `6 @2 D2 q& r
ac_default_prefix=/usr/local
6 h0 o; X/ ~* T: F
7 L2 W( u; E5 ?2 @$ o9 G 改为:& k, z* e: }2 q; I6 ^6 p
' }+ c' s$ `3 C% l ac_default_prefix=/usr7 G6 V9 f) P* \$ E# [! [
( z5 s& U5 _5 _ i2 P% q0 } 编译:' P) Q; D( l8 `- @1 [: Z
/ J6 `* x! p5 W0 n #make
3 W/ G( f: ^" Z# q+ q+ M2 S9 j$ @% }8 d# x
安装:8 F8 x# C5 u6 P" o/ |
, Z! h# D. P, _3 w" `, i
#make install0 P$ \! }. N7 O3 f3 b& ^! X0 |
: y& l' ~, p4 [ 到这里SASL库就安装好了(注重在整个编译安装的过程中都不能有任何错误警告显示才行)。
, d9 q- p( Q I4 v6 Mhttp://www.20d6.com http://www.fjrdsms.com+ c% b6 }+ ?2 w( U; s# |" S
接着必须设置Sendmail的使用者身份验证方式,因为这里要使用的是系统账号与密码来进行验证,所以要在“/usr/lib/Sendmail.conf”文件中指明:
2 D( k1 ^/ S* o' u- Z2 V& G/ o- N/ f" U9 a3 z o
#cd /usr/lib/sasl/5 C ] H. e/ k# e5 f- Q
$ ^# h4 p' `* S9 n
#cat > Sendmail.conf
! u% g E* g: j% n5 C f
6 \, ^$ y+ O6 k4 d5 ]9 S pwcheck_method: shadow
# j0 Z7 S4 A6 z& s( s
9 B; M. s7 {6 I& D$ G9 b& r: i ^d |