免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3364 | 回复: 7
打印 上一主题 下一主题

[Mail] RHEL AS3 sendmail smtp认证的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-10-04 10:06 |只看该作者 |倒序浏览
各位大虾,我的目的是做一台邮件服务器带smtp认证,客户端是OE


RHEL AS3,用sendmail配置邮件服务器

编辑 sendmail.mc文件,在其中改动以下行:

TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl  

注释出了
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')

m4 sendmail.mc >; sendmail.cf; service sendmail restart

/usr/sbin/sendmail -d0.1 -bv root |grep SASL
输出:
NETUNIX NEWDB QUEUE SASL2 SCANF SMTP USERDB XDEBUG

[root@gly root]# telnet example.com 25
Trying 192.168.0.1...
Connected to example.com (192.168.0.1).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.12.10/8.12.10; Thu, 20 Jan 2005 16:49:40 +0800
ehlo localhost
250-example.com Hello [192.168.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP
quit

其他该做的工作都差不多了,用OE从另一台电脑做测试终端,收发邮件正常,可是选中SMTP认证后就反复出现输入用户名和密码的提示框,无法发信,收信正常,在‘工具’-‘帐号’-‘属性’-‘服务器‘-’发送邮件服务器’中选中‘我的服务器需要认证’
查看服务器邮件日志:

Oct  6 12:15:08 localhost sendmail[3055]: j0K7aLcM003055: [192.168.0.1] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Oct  6 12:15:08 localhost sendmail[3056]: j0K7aQcM003056: [192.168.0.1] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Oct  6 12:15:08 localhost sendmail[3057]: j0K7aRcM003057: [192.168.0.1 did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA

Oct  6 12:15:08 localhost ipop3d[3353]: Mailbox vulnerable - directory /var/spool/mail must have 1777 protection

其中192.168.0.1是邮件服务器地址,请各位帮忙分析分析,小弟不胜感激

论坛徽章:
0
2 [报告]
发表于 2005-10-05 17:29 |只看该作者

RHEL AS3 sendmail smtp认证的问题

帮帮忙啊,高手们

论坛徽章:
0
3 [报告]
发表于 2005-10-06 14:37 |只看该作者

RHEL AS3 sendmail smtp认证的问题

我的帖子好象很少有人光顾哦,大侠们见笑了,我水平一般,但请大侠们指点一二,小弟感激不尽


上面目录权限1777的问题也解决了(看了abel大侠给别人的帖子
现在可以收发信了,但存在问题。
问题:
              我的sendmail 的smtp认证在局域网里实验出现下面这种情况:
用一个不存在的邮箱测试smtp验证,在选服务器需要验证的时候不能发信(正常),但不选服务器验证的时候就可以发信,这个就不正常了,请问需要做特别的设置吗?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2005-10-06 16:10 |只看该作者

RHEL AS3 sendmail smtp认证的问题

原帖由 "tianshanhanshui" 发表:
我的sendmail 的smtp认证在局域网里实验出现下面这种情况:
用一个不存在的邮箱测试smtp验证,在选服务器需要验证的时候不能发信(正常),但不选服务器验证的时候就可以发信,这个就不正常了,请问需要做特别的设置吗?

這代表 SMTP AUTH 設定沒有正確,
你得看看 log 說了什麼

论坛徽章:
0
5 [报告]
发表于 2005-10-06 20:16 |只看该作者

RHEL AS3 sendmail smtp认证的问题

原帖由 "abel" 发表:

這代表 SMTP AUTH 設定沒有正確,
你得看看 log 說了什麼



大侠说的是,我把日志贴出来请大侠指点一下:
(test3在系统里不存在,test1和test2为系统用户
test3@sohu.com是杜撰的外域的邮件。)

不选OE验证用test3@sohu.com给tes1@example.com发邮件测试
Oct  6 20:08:11 localhost sendmail[2907]: j96C7pcL002907: from=<test3@sohu.com>;, size=1153, class=0, nrcpts=1, msgid=<000801c5ca6e$b4389eb0$0300a8c0@Paul>;, proto=SMTP, daemon=MTA, relay=[192.168.0.3]
Oct  6 20:08:11 localhost sendmail[2908]: j96C7pcL002907: to=<test1@example.com>;, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=31323, dsn=2.0.0, stat=Sent

选OE验证模式用test3@sohu.com给test1@example.com发邮件测试

Oct  6 20:20:10 localhost sendmail[2927]: j96CK7cL002927: [192.168.0.3] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA

用系统用户认证发送,test1@example.com给test2@example.com发送测试

Oct  6 20:16:01 localhost sendmail[2918]: AUTH=server, relay=[192.168.0.3], authid=test1, mech=LOGIN, bits=0
Oct  6 20:16:01 localhost sendmail[2918]: j96CG1cL002918: from=<test1@example.com>;, size=1143, class=0, nrcpts=1, msgid=<001301c5ca6f$cc7be760$0300a8c0@Paul>;, proto=ESMTP, daemon=MTA, relay=[192.168.0.3]
Oct  6 20:16:01 localhost sendmail[2919]: j96CG1cL002918: to=<test2@example.com>;, ctladdr=<test1@example.com>; (500/500), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=31338, dsn=2.0.0, stat=Sent

请abel大侠和各位高手帮忙分析一下,谢谢

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-10-07 15:54 |只看该作者

RHEL AS3 sendmail smtp认证的问题

你給的是 sendmail 的 log , 和你現在的 SASL 問題是無關的
你要找的是所有 LOG 中有關 sasl 的,這個通常在 auth 或是 authpriv 下的東西
(看你的平台)

我去官網下了來裝  sendmail 8.13.5 + SASL2 , 不用30分鐘就全搞定了
我個人是都用 tarball 的方式裝...記得就是

下載最新的 sasl2 的 tar.gz 檔 ..
解開後看一下 configure --help
./configure --prefix=/usr  --enable-login      (login 是 oe 在用的)
make
make install

vi /usr/lib/sasl2/Sendmail.conf , 只要一行(這些東西官網都有說明)

  1. pwcheck_method: saslauthd
复制代码

再來以如下指令啟動即可

  1. saslauthd -a pam
复制代码

再來做 sendmail 8.13.5
到官網下載最新版的 sendmail
下載解壓後編好這個文件 devtools/Site/site.config.m4
這個文件詳情自己看 http://www.sendmail.org/compiling.html
我的內容如下

  1. define(`confDEPEND_TYPE', `CC-M')
  2. define(`confSM_OS_HEADER', `sm_os_linux')
  3. define(`confMANROOT', `/usr/man/man')
  4. define(`confLIBS', `-ldl')
  5. define(`confEBINDIR', `/usr/sbin')
  6. APPENDDEF(`confLIBSEARCH', `crypt nsl')
  7. define(`confLD', `ld')
  8. define(`confMTCCOPTS', `-D_REENTRANT')
  9. define(`confMTLDOPTS', `-lpthread')
  10. define(`confLDOPTS_SO', `-shared')
  11. APPENDDEF(`confMAPDEF',`-DMAP_REGEX')
  12. APPENDDEF(`confMAPDEF',`-DNEWDB')
  13. APPENDDEF(`confMAPDEF',`-DDNSMAP')
  14. APPENDDEF(`confMAPDEF',`-DSASL=2')
  15. APPENDDEF(`confMAPDEF',`-DSASL2')
  16. APPENDDEF(`confENVDEF',`-DTCPWRAPPERS')
  17. APPENDDEF(`confLIBDIRS',`-L/usr/lib/sasl2 -L/usr/lib -L/usr/local/lib')
  18. APPENDDEF(`confINCDIRS',`-I/usr/include -I/usr/local/include')
  19. APPENDDEF(`confLIBS', `-lwrap -lsasl2 -lpthread')

复制代码

這裏我想你可能會覺得複雜,但重點是你要看懂官網上的一些文件,不然學什麼
必然都很難學得好


再來只要 Build 好,並 Install 好後,再編 sendmail.mc 在 access 前加入
下面三行即可

  1. define(`confAUTH_OPTIONS', `A')dnl
  2. TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
  3. define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
复制代码


再來這樣做後就大功告成了

  1. $>;m4 sendmail.mc >; sendmail.cf
  2. $>;service sendmail restart
复制代码



@@" , 什麼,我怎麼這麼順,而你沒有 !? 這要問你怎麼學習的了. 目前看來重點在
1. Sendmail.conf 中 pwcheck_method 就好了,因為其他的看來用不到,而 saslauthd 我是
   用 -a pam 來啟動的,而不用 shadow, 因為 pam 的彈性大很多,但這個 pam 是我唯一出錯
   的地方,後述
2. 下載的 sasl 的 tarball 解開後,在 saslauthd/ 下有一個 testsaslauthd , 用這個東西來
   測試 sasl 的設定正確性與否很重要,格式如下

  1. $>;testsaslauthd -u username -p password
复制代码

    不過要切記,這個東西在 default 的 make 中是不會產生的,要進到 saslauthd 的目錄中以

  1. $>;make testsaslauthd
复制代码

     來產生,這點要記得, SASL 的 test 沒有錯,通常 SMTP AUTH 那一磈相信不會有什麼問題了



最後,就是要看看是什麼原因造成你的認證失敗了, 我自己看到的 log 有這些(是 Facility 為 AUTH 的 log)

  1. # Oct  7 14:59:49 log.twnic.net.tw sendmail [auth.err] sendmail[32226]: sql_select option missing
  2. 這是我的 PAM 沒有設好,因為我的 User 資料是存在 mysql 中的,但 pam_mysql 的 where 沒寫好所致

  3. #Oct  7 14:59:49 log.twnic.net.tw sendmail [auth.err] sendmail[32226]: auxpropfunc error no mechanism available
  4. mechanism 不對或不一玫,一開始我在 Sendmail.conf 中寫 pam 所致

  5. #Oct  7 14:59:49 log.twnic.net.tw sendmail [auth.debug] sendmail[32226]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: sql
  6. Plugin ?! 不知道,我沒有裝,也沒有研究,但看來不是問題的問題

  7. #Oct  7 14:59:58 log.twnic.net.tw sendmail [auth.notice] sendmail[32256]: cannot connect to saslauthd server: Connection refused
  8. #Oct  7 15:00:04 log.twnic.net.tw sendmail [auth.notice] sendmail[32271]: cannot connect to saslauthd server: Connection refused
  9. #Oct  7 15:00:29 log.twnic.net.tw sendmail [auth.notice] sendmail[810]: cannot connect to saslauthd server: Connection refused
  10. saslauthd 沒有啟動

  11. #Oct  7 15:01:46 log.twnic.net.tw saslauthd [auth.info] saslauthd[1642]: detach_tty      : master pid is: 1642
  12. saslauthd 的 pid

  13. #Oct  7 15:01:46 log.twnic.net.tw saslauthd [auth.info] saslauthd[1642]: ipc_init        : listening on socket: /var/state/saslauthd/mux
  14. saslauthd 用到的 socket file

  15. #Oct  7 15:01:54 log.twnic.net.tw saslauthd [auth.err] saslauthd[1642]: pam_sm_authenticate called.
  16. #Oct  7 15:01:54 log.twnic.net.tw sendmail [auth.notice] sendmail[1668]: size read failed
  17. saslauthd 在 SMTP AUTH 呼叫時,因為我設為 PAM 認證,但沒有設好,認證失敗,在 pam 的傳回值上有問題所致

  18. 以下重覆部份略,但可以看得出來調整了 pam 後的結果
  19. Oct  7 15:02:48 log.twnic.net.tw saslauthd [auth.err] saslauthd[1643]: pam_sm_authenticate called.
  20. Oct  7 15:02:48 log.twnic.net.tw sendmail [auth.notice] sendmail[2147]: size read failed
  21. Oct  7 15:06:12 log.twnic.net.tw saslauthd [auth.info] saslauthd[3313]: detach_tty      : master pid is: 3313
  22. Oct  7 15:06:12 log.twnic.net.tw saslauthd [auth.info] saslauthd[3313]: ipc_init        : listening on socket: /var/state/saslauthd/mux
  23. Oct  7 15:33:24 log.twnic.net.tw imap(pam_unix) [auth.alert] imap(pam_unix)[3315]: check pass; user unknown
  24. Oct  7 15:33:24 log.twnic.net.tw imap(pam_unix) [auth.notice] imap(pam_unix)[3315]: authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=
  25. Oct  7 15:33:24 log.twnic.net.tw saslauthd [auth.err] saslauthd[3315]: pam_sm_authenticate called.
复制代码

pam_sm_authenticate called.了後沒有 error 了,就成功了,這就是我攻略過程



===================
你那個 did not issue 訊息沒有什麼關係,那是因為 smtp auth 失敗後出現的,至於這個訊息會有許多因素造成,建議您要學習 sendmail , 至少把 sendmail 的 FAQ 看過

论坛徽章:
0
7 [报告]
发表于 2005-10-07 17:51 |只看该作者

RHEL AS3 sendmail smtp认证的问题

首先谢谢abel大侠对sasl人证详尽的文档及解释,我已经把它保存到硬盘上,供我好好研究:-)
昨天晚上,看了一篇文档它用pam认证,将/etc/pam.d/smtp.postfix复制成/etc/pam.d/smtp。经测试我觉得还有一个问题
情况是这样的:(smtp邮件服务器全都用自己实验的服务器)
            1、本地用户给非本地用户发送的时候,如果不加认证不允许发
            2、本地用户给非本地用户发送的时候,加认证可以发
       ?? 3、非本地用户给本地用户发,不加认证可以发
            4、非本地用户给本地用户发,加认证不可以发
            5、非本地用户给非本地用户发,加不加认证都不可以发

我对第三条不太理解,这样的话,还是有另一方用我的mail服务器给我的本地用户发送垃圾邮件,而且不用认证。
请问大侠,这个问题是我对smtp认证概念没搞清楚还是需要制定策略,防止这种情况发生


我会再用sasl认证再做一次,然后将结果和log贴上来,希望大侠们再给我一些意见。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2005-10-07 18:22 |只看该作者

RHEL AS3 sendmail smtp认证的问题

重點只有兩條,
發向本地不用認證,不論其來源,若要認不知您要認什麼
發向外地,要做限制,不外乎 SMTP AUTH 或 base IP Relay 而以

您 sendmail 這條路還有得走哦,唯有勤能補拙
重點是有問題時要多看 log , 從 log 的訊息去 google
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP