[这个贴子最后由wzy9681在 2002/12/11 09:04am 编辑]
Solaris8中带SMTP认证的sendmail配置
使用的软件:
Solaris 8 x86
Sendmail-8.12.6
cyrus-sasl-1.5.28
一、准备工作
1.首先要下载sasl库,该函数库提供了安全认证所需函数,下载地址是(ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/ 
,版本1.5.28,注意2.X 版本无法与sendmail结合,因为API还未做修改.
2.下载sendmail(http://www.sendmail.org),版本在8.10.0以上的sendmail才支持SMTP认证功能。
3.注意选择客户端电子邮件软件。并不是所有的客户端电子邮件软件都支持SMTP认证功能,几种常见的版本要求是这样的:Netscape Messenger 的版本要4.6以上、Outlook和Outlook Express要5.0版本以上、Eudora pro的版本要在4.3以上、Foxmail 的版本要在4.0以上,每一种软件的认证方法是不一样的,编译sasl库的时候和配置sendmail略有不同。这里就大家最常见的Outlook Express 5.0和Foxmail的设置方法介绍如下。
二、安装sasl库
1.解压cyrus-sasl-1.5.28.tar.gz到你选定的目录gunzip cyrus-sasl-1.5.28.tar.gz
tar xvf cyrus-sasl-1.5.28.tar
2.安装sasl
cd cyrus-sasl-1.5.28
./configure --enable-login --with-pwcheck --disable-gssapi --disable-digest --disable-cram --disable-krb4 --enable-plain
#disable的那些solaris不支持的
make
make install
3.说明:
Outlook Expresss使用LOGIN的认证方法,sasl库缺省并不支持这种方式,所以要在生成配置文件时特别加入,另外,Outlook的口令验证方式也不是缺省的方式,所以也需要加入--with-pwcheck的选项。
4.新建目录/var/pwcheck
mkdir /var/pwcheck
此目录供pwcheck命令使用,该命令是一个后台程序,负责检查用户的输入口令,
以root权限使用shadow口令文件。
5.在/usr/lib/sasl目录下建立文件Sendmail.conf,加入如下一行:
pwcheck_method:pwcheck
如果该文件已经存在,直接修改即可。
到此,sasl库函数的安装就完成了。
三、编译和配置sendmail
1.解压sendmail软件到你希望的目录,进入sendmail-8.12.6目录。按如下步骤操作:
gzip sendmail.8.12.6.tar.gz
tar -xvf sendmail.8.12.6.tar
cd sendmail-8.12.6
2.进入devtools/Site/目录并创建site.config.m4文件
cd devtools/Site/
vi site.config.m4
在该文件中加入如下两行文字,把SMTP认证功能编译到sendmail中:
APPENDDEF(`confENVDEF',`-DSASL')
APPENDDEF(`conf_sendmail_LIBS',`-lsasl')
以下两行来自www.sendmail.org上对sun solaris 8的说明
APPENDDEF(`confMAPDEF', `-DLDAPMAP')
APPENDDEF(`confLIBS', `-lldap')
注意:行末没有空格,逗号前后没有空格。前后引号`'并不相同。
3. (可选)备份/etc/mail/sendmail.cf 和/usr/lib/sendmail的执行文件。
4. 回到sendmail-8.12.3目录,再进入sendmail目录,开始编译sendmail:(如果不是第一次编译,需要加入-c选项,sh Build -c清除以前的配置)
sh Build
5. 进入sendmail-8.12.3目录下的 cf/cf/把与操作系统对应的.mc文件复制为sendmail.mc,这里选择solaris
cd ../cf/cf/
cp generic-solaris.mc sendmail.mc
6. 编辑sendmail.mc,加入你需要的FEATURE.
TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5')dnl
define(`confAUTH_MECHANISMS', `LOGIN PLAIN DIGEST-MD5')dnl
*dnl define(`confDEF_AUTH_INFO', `/etc/mail/auth/auth-info')
FEATURE(`no_default_msa')dnl
DAEMON_OPTIONS(`Port=25, Name=MTA')dnl
DAEMON_OPTIONS(`Port=587,Name=MSA,M=Ea')dnl
注意:FEATURE要加在MAILER语句的前面。
说明:
"TRUST_AUTH_MECH"的作用是使sendmail不管access文件中如何设置,都能relay那些通过LOGIN,
PLAIN或DIGEST-MD5方式验证的邮件。
"confAUTH_MECHANISMS"的作用是确定系统的认证方式。
"confDEF_AUTH_INFO"的作用是当你的计算机作为客户机时,
向另外一台有smtp认证功能的主机进行认证,用户和密码存放在auth-info文件中,在这个例子中并不需要这个功能,所以注释掉了。
7. 生成sendmail.cf文件
sh Build sendmail.cf
8. 把sendmail.cf安装到/etc/mail/sendmail.cf,submit.cf安装到/etc/mail/submit.cf;可以使用复制的方法,更简单的方法是在cf/cf/下运行:
sh Build install-cf
9. 由于sendmail安全的要求,需要建立以smmsp为名字的组和以smmsp为名字的用户,
具体参考sendmail/SECURITY文档:
groupadd smmsp
usradd -g smmsp smmsp
10. 回到sendmail-8.12.6目录,再进入sendmail目录,运行"sh Build install",完成最后的安装。或使用如下命令:
Make;make install
11. 现在基本上可以了, 重新启动机器或sendmail后运行下面命令测试sendmail:
telnet localhost 25
ehlo localhost
注意有没有以下的信息出现.
250-xxxxxxxx
250-xxxxxxx
250-AUTH LOGIN PLAIN
250-xxxxxx
可能会略有不同,不过你选定的认证方式AUTH LOGIN PLAIN一定要有的。如果显示没有问题,服务器端的配置你已经成功了。
如果没有出现上面的信息,请运行“sendmail -O loglevel=14 –bs”仔细检查问题所在。
12. 结束服务器端的配置之前,我们还要做一件事,运行pwcheck这个daemon程序,这样才能完成用户认证功能。“pwcheck &”该文件位于sasl的安装目录下,可将其复制到/usr/bin目录下。
四、Outlook Express 5.0 的配置
1.打开你的Outlook Express,修改你的账号属性,在服务器选项,选取我的smtp服务器需要认证选项,然后进入配置。
2.不要选取安全口令认证,sendmail并不支持这个选项。是选取使用pop3同样的口令还是选择另外输入用户和密码,这就看你的爱好和设置了,这不是关键。如果你在服务器上有一个真实账号,不妨选取使用同样的口令,如果没有账号,选用其他的用户口令同样可以。
| 坚持向左 回复于:2002-12-06 15:03:07 |
| 好啊,正是我要的,折腾几天了,一直没有搞定 |
| sunmarmot 回复于:2002-12-06 15:24:12 |
| 好东东,支持一下 |
| iricyan 回复于:2002-12-06 15:30:13 |
| 支持,我已经收藏了,谢谢! |
| YT 回复于:2002-12-07 05:22:06 |
| 发了2边啊?PFPF,YDYD |
| tnnd 回复于:2002-12-07 09:45:57 |
| 不如qmail+checkpassword |
| unix菜鸟 回复于:2002-12-07 10:55:21 |
| 谢谢! |
| wzy9681 回复于:2002-12-07 17:18:36 |
| 但我发现,只有合法用户在本地网才可以发送。如果他们从外地上网,就不能发信! 这是怎么回事? |
| YT 回复于:2002-12-07 22:32:13 |
| relay-domains ? |
| wzy9681 回复于:2002-12-08 12:05:41 |
| 跟relay-domains 有关吗? 这个文件应该怎么设置?我现在这个文件是空的.但本地可以发,外地却不行 |
| chenjn 回复于:2002-12-08 13:03:46 |
| 我编译sasl1.5.28怎么不正常呢? 错误信息如下: gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I/usr/local/include -Wall -W -g -O2 -c checkpw.c -fPIC -DPIC cc1: warning: changing search order for system directory "/usr/local/include" cc1: warning: as it has already been specified as a non-system directory checkpw.c: In function `shadow_verify_password': checkpw.c:534: warning: implicit declaration of function `getspnam' checkpw.c:534: warning: assignment makes pointer from integer without a cast checkpw.c:537: dereferencing pointer to incomplete type checkpw.c:538: warning: implicit declaration of function `crypt' checkpw.c:538: warning: assignment makes pointer from integer without a cast checkpw.c:539: dereferencing pointer to incomplete type checkpw.c: In function `passwd_verify_password': checkpw.c:612: warning: implicit declaration of function `getpwnam' checkpw.c:612: warning: assignment makes pointer from integer without a cast checkpw.c:615: dereferencing pointer to incomplete type checkpw.c:617: warning: assignment makes pointer from integer without a cast checkpw.c:619: dereferencing pointer to incomplete type make[2]: *** [checkpw.lo] Error 1 make[2]: Leaving directory `/home/chenjn/cyrus-sasl-1.5.28/lib' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/chenjn/cyrus-sasl-1.5.28' make: *** [all-recursive-am] Error 2 |
| laixi 回复于:2002-12-08 17:02:19 |
| [这个贴子最后由laixi在 2002/12/08 05:07pm 编辑] to:chenjn sasl参数加起了没有阿 to:wzy9681 不会把,外网跟内网发信都一样阿,只要能连的到就可以了,不过我习惯内网不用验证 |
| chenjn 回复于:2002-12-08 17:51:34 |
| 参数肯定没有问题 |
| ewebboy 回复于:2002-12-08 18:28:37 |
| jia ru jing hua! |
| YT 回复于:2002-12-08 22:45:07 |
| 觉得是的啊 要是relaydomain里面没有你,你就只能给同事发e-mail啊。 |
| ewebboy 回复于:2002-12-08 23:34:23 |
| 建议加入精华! |
| YT 回复于:2002-12-09 00:10:09 |
同意,并且支持! ![]() |
| wzy9681 回复于:2002-12-09 13:09:39 |
| 但是我的问题仍然没有解决。本地合法用户在外网时仍然没有办法发信。还是拒绝。 我现在又只好改回不验证的状态。好苦! 据说,smtp验证是最高级别,即使是access和relay-domains里面没有设置也可以,但我这里死活不行。 |
| wzy9681 回复于:2002-12-10 11:20:15 |
| 谁对这个有研究?帮我一把! |
| wzy9681 回复于:2002-12-10 12:06:56 |
| 外网仍然有问题!救我!!!!!!!!!!!!!!!!!!!! |
| jodgen 回复于:2002-12-10 12:48:37 |
| [这个贴子最后由jodgen在 2002/12/10 12:49pm 编辑] 我已经配置了sendmail + qpoper,运行了好几个月了,现在能加上sasl吗? 我的系统是solaris 9 for sparc |
| wzy9681 回复于:2002-12-10 14:26:43 |
| 当然可以的。sasl很安装简单,只要编译参数对救可以 |
| wzy9681 回复于:2002-12-10 15:02:43 |
| 终于搞定了。还是在mc文件里改了些东西 |
| wzy9681 回复于:2002-12-10 15:06:35 |
| 有点错误,在第二版里改正了 |
| agang 回复于:2003-08-12 14:46:10 |
| to chenjn 你的gcc版本太低,要3.2.1以上才能编译正常,这个是gcc的bug。 |
| bigbilly 回复于:2003-09-04 10:01:27 |
| 我正在裝sendmail 8.12.9 and cyrus-sasl-1.5.28
當我運行cyrus-sasl-1.5.28 ./configure 後 # ./configure loading cache ./config.cache checking host system type... i386-pc-solaris2.9
本文关键:solaris8 x86上:终于实现smtp认证!搞定sendmail+sasl+qpopper
相关方案
|
