sendmail中關於只認access控制文件之問題

目標是盖一個支撑SMTP認證服務器.
自安裝的是REDHAT AdvanceServer
3,系統自帶的凡sendmail8.12.10,我一直升級到sendmail
8.13.1後編譯安裝了cyrus-sasl-2.1.19,telnet localhost 25信如下:
[root@freemail mail]# telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
220 freemail.161.com ESMTP Sendmail 8.12.11/8.12.11; Fri, 3 Sep 2004
09:29:22 +0800
ehlo sd
250-freemail.161.com Hello localhost.localdomain [127.0.0.1], pleased
to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-DELIVERBY
250 HELP
250-AUTH LOGIN PLAIN出現應該是已經支持SMTP認證了.
本人之ACCESS文件內容:
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
問題就出現了,我之所以客戶端OUTLOOK發信,始終說我IP不以支撑範圍:
Sep 3 09:32:57 freemail sendmail[3805]: i831Wjej003805:
ruleset=check_rcpt, arg1=<microsea@go.com>,
relay=[208.5.5.145], reject=550 5.7.1 <microsea@go.com>…
Relaying denied. IP name lookup failed [208.5.5.145]
Sep 3 09:33:00 freemail sendmail[3805]: i831Wjej003805:
from=<microsea@161.com>, size=0, class=0, nrcpts=0, proto=ESMTP,
daemon=MTA, relay=[208.5.5.145]
自我只好在access文件被入208.5.5
RELAY,但是這樣一加,SMTP認證就失效了,只要是208.5.5網段的都得以發信.試來試去始終是access文件生效,走不至smtp認證這一步,應該是SMTP認證先於access文件吧?
世家有沒碰到過這樣的情況?如何解決?急盼!

Re:
sendmail中關於只認access控制文件的問題

終於搞定了,原來是sasl沒配置好的缘故!!而且sasl
2版本和1闹若干未一樣,被它搞s了,以下是布步驟給大家分享一下:
* 安裝cyrus-sasl-2.1.19下載地址:
ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/
./configure –enable-login
make
make install
安裝完成後,要仔細檢查sasl的函數庫位置,否則會給後面的安排帶來很多問題.
缺省情況下,所有的庫函數安裝到/usr/local/lib目錄下,但sendmail使用的庫函數是以目錄/usr/lib下的,所以需要做一些調整。
cd /usr/lib
ln /usr/local/lib/sasl2/ ./sasl -s
于/usr/lib/sasl目錄下树立文件Sendmail.conf,加入如下一行
pwcheck_method:saslauthd #——–>很關鍵啊!!
檢查saslauthd的配置:
第一檢查/usr/lib/sasl/Sendmail.conf裡的那么句話是否以的凡saslauthd,
下檢查/etc/sysconfig/saslauthd這個文件,將裡面的:
MECH=pam改為MECH=shadow
然後啟動/etc/rc.d/init.d/saslauthd start,查看進程是否来以下進程:
root 5093 1 0 13:39 ? 00:00:00 /usr/sbin/saslauthd -m /var/run/saslauthd
-a shadow
root 5094 5093 0 13:39 ? 00:00:00 /usr/sbin/saslauthd -m
/var/run/saslauthd -a shadow
root 5095 5093 0 13:39 ? 00:00:00 /usr/sbin/saslauthd -m
/var/run/saslauthd -a shadow
root 5096 5093 0 13:39 ? 00:00:00 /usr/sbin/saslauthd -m
/var/run/saslauthd -a shadow
root 5098 5093 0 13:39 ? 00:00:00 /usr/sbin/saslauthd -m
/var/run/saslauthd -a shadow
只要上述sasl模塊沒有生效,sendmail將會跳過認證直接讀取access文件來判斷是否允許relay.通常就會出現:
Sep 1 15:57:31 freemail sendmail[16694]: i817vP38016694:
ruleset=check_rcpt, arg1=<microsea@126.com>,
relay=[222.5.5.145], reject=550 5.7.1 <microsea@126.com>…
Relaying denied. IP name lookup failed [222.5.5.145]
Sep 1 15:57:44 freemail sendmail[16694]: i817vP38016694:
from=<microsea@go2north.com>, size=0, class=0, nrcpts=0,
proto=ESMTP, daemon=MTA, relay=[222.5.5.145]
這樣的錯誤
* 編譯和配备sendmail
解壓sendmail軟件到公希望的目錄,進入sendmail-8.12.11目錄。
于devtools/Site/目錄下創建config.site.m4文件,加入如下文字,把SMTP認證
意义編譯到sendmail中。
PREPENDDEF(`confMAPDEF’, `-DMAP_REGEX’)
PREPENDDEF(`confOPTIMIZE’, `-O6′)
PREPENDDEF(`confOPTIMIZE’, `-O6′)
APPENDDEF(`confENVDEF’, `-DSASL=2′)
APPENDDEF(`conf_sendmail_LIBS’, `-lsasl2′)
APPENDDEF(`confLIBDIRS’, `-L/usr/local/lib -L/usr/local/lib/sasl2′)
APPENDDEF(`confINCDIRS’, `-I/usr/local/include
-I/usr/local/include/sasl’)
回来sendmail-8.12.11目錄,再進入sendmail目錄,開始編譯sendmail。
./Build -c(如果不是首先次編譯,需要在-c選項,清除以前的部署)
編譯成功後,運行./Build install安裝軟件。
接通下來編輯 sendmail 設置範本文件以便產生出装有位置認證功能的 sendmail.cf
設置檔,請以下列指令執行
# cd cf/cf
# cp generic-linux.mc MYCF.mc
# cd ../feature
# cat access_db.m4 >> ../cf/MYCF.mc
# cat delay_checks.m4 >> ../cf/MYCF.mc
# cat virtusertable.m4 >> ../cf/MYCF.mc
# cd ../cf
# cat >> MYCF.mc
TRUST_AUTH_MECH(`LOGIN PLAIN’)dnl
define(`confAUTH_MECHANISMS’, `LOGIN PLAIN’)dnl
^D
# sh Build MYCF.cf
# mkdir /etc/mail
# cp MYCF.cf /etc/mail/sendmail.cf
# cd /etc/mail
# cat > access
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
說明:”TRUST_AUTH_MECH”的作用是一旦sendmail不管access文件被哪設置,都能够
relay那些通過LOGIN,PLAIN或DIGEST-MD5方式驗證的郵件。
“confAUTH_MECHANISMS”的打算是確定系統的認證方式。
“confDEF_AUTH_INFO”的用意是當你的計算機作為客戶機時,向另外一雅发smtp認
證功能的主機進行認證,用戶和密碼存放在auth-info文件中,在這個例子中並不需這
個功能,所以註釋掉了。
現在大多可以了,啟動sendmail讓我們來測試一下吧
sendmail -bd -q20m
運行下面发号施令
[root@freemail mail]# telnet 222.5.5.55 25
Trying 222.5.5.55…
Connected to freemail.161mail.com (222.5.5.55).
Escape character is ‘^]’.
220 freemail.161mail.com ESMTP Sendmail 8.12.11/8.12.11; Thu, 2 Sep 2004
16:09:18 +0800
ehlo localhost
250-freemail.161mail.com Hello freemail.161mail.com [222.5.5.55],
pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-DELIVERBY
250 HELP
quit
221 2.0.0 freemail.161mail.com closing connection
Connection closed by foreign host.
产生出現250-AUTH LOGIN
PLAIN說明sendmail提供認證功能了,再就此outlook或其它客戶端軟件測試一下!

相关文章