ACCESSsendmail中關於只認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,可是這樣HTC,SMTP認證就失效了,只倘诺208.5.5網段的都得以發信.試來試去始終是access文件生效,走不到smtp認證這一步,應該是SMTP認證先於access文件呢?
世家有沒碰着過這樣的情況?如何解決?急盼!

ACCESS 1 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或另外客戶端軟件測試一下!

相关文章