作者 主題: sendmail 的驗證功能  (閱讀 8412 次)

0 會員 與 1 訪客 正在閱讀本文。

Anonymous

  • 訪客
sendmail 的驗證功能
« 於: 2001-12-06 10:44 »
作者: 日京三子 (---.hwayi.com)
日期:   01/12/06 09:24

呃....

順便來補上一段,小弟從RedHat 7.0,藉由升級Sendmail來達到目的的經驗分享。
首先,檢查自己的Sendmail版本,小弟的是內建的sendmail-8.11.0-8、sendmail-doc-8.11.0-8、sendmail-cf-8.11.0-8,還有相關的fetchmail-5.5.0-2、fetchmailconf-5.5.0-2及mutt-1.2.5i-3,這幾個服務程式。今天,要升級的目標是讓Sendmail能夠支援sasl認證,達到「不用開啟relay而可以自由的寄信」為目的。

首先,先準備將Sendmail停止,然後,準備另外一台機器,將網頁開在http://www.rpmfind.org待命抓檔案.... 然後,將fetchmail-5.5.0-2、fetchmailconf-5.5.0-2及mutt-1.2.5i-3移除(下達rpm -e fetchmail之類的命令),再將sendmail所有相關檔案移除,就是下達(rpm -e sendmail sendmail-doc sendmail-cf)命令!然後,搜尋fetchmail-5.7.4-4.src.rpm、mutt-1.2.5i-9.src.rpm、cyrus-sasl-1.5.24-17.src.rpm、sendmail-8.11.2-14.src.rpm,版本不能錯,這些都是相依的檔案,切記!

然後,依序編譯,用rpm --rebuild fetchmail-5.7.4-4.src.rpm mutt-1.2.5i-9.src.rpm cyrus-sasl-1.5.24-17.src.rpm sendmail-8.11.2-14.src.rpm,全部礎b一起就可以啦~ 當系統編譯完成之後,會讓所有的檔案,放在/usr/src/redhat/RPMS/i386底下。然後,將所有的檔案都安裝起來,安裝的動作就算是完成啦^^

還有,參考一下,在 http://www.tango.idv.tw/study-area/read.php?f=3&i=4685&t=4685 之中,前輩「網路新手」曾經說過的步驟,依序施工即可^^

最後,千萬要記得,確認及修改sendmail.cf之中的宣告,將
O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA
修正成
O DaemonPortOptions=Port=smtp,Addr=0.0.0.0, Name=MTA
,這樣,就算是大尼i成了^^

此致

PS:網中人大俠,考慮一下,把這個部分,變成FAQ精華區的部分吧^^

Anonymous

  • 訪客
sendmail 的驗證功能
« 回覆 #1 於: 2001-12-06 10:46 »
作者: 網路新手 (216.59.185.---)
日期:   01/11/28 14:26

您好:
有二種方式
smtp認證 與 pop before smtp
我個人比較偏向第一種
如果您用 RH7.1 或已經有 sasl 和新版 sendmail 的話﹐
就可直接設定第一種方式.

可以直接到 /usr/share/sendmail-cf/cf 去修改 redhat.mc 檔﹐

將下面這兩行前面的dnl 拿掉﹕

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

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

在來找到下面這一行

O DaemonPortOptions=Port=smtp,Addr=210.241.XXX.XXX, Name=MTA

這樣只會 listen 210.241.XXX.XXX,如果有用 ip aliases,或是 localhost 將會

有問題。

建議改成:

O DaemonPortOptions=Port=smtp,Addr=0.0.0.0, Name=MTA

然後執行:

cd /usr/share/sendmail-cf/cf

sh Build redhat.cf

cp redhat.cf /etc/sendmail.cf



(注意﹕在修改和複製前﹐先先備份舊檔)



最後你就可以用 service sendmail restart 來使用新設定

試試看吧

然後﹐將您的 MAIL client 設定為‘外送郵件需要認證’﹐

填好帳號和密碼就行。

請參考下面的網址
http://beta.wsl.sinica.edu.tw/~ylchang/Email/sendmail-auth/index.html
http://www.study-area.org/tips/mailrelay.htm

niket

  • 可愛的小學生
  • *
  • 文章數: 2
    • 檢視個人資料
sendmail 的驗證功能
« 回覆 #2 於: 2002-01-19 22:30 »
謝謝大大!!!!
我照你的文章設定,真的完成使用者驗證弁
不過,好像以非正式使用者的名稱去寄又可以耶!!!!!
請問大大問題出在哪裡啊?????

感謝您!!!!!!

VBird

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 1516
    • 檢視個人資料
    • http://linux.vbird.org
sendmail 的驗證功能
« 回覆 #3 於: 2002-01-20 03:31 »
我不知道我的認知對不對,不過,就我的經驗而言,如果你安裝了具有身份認證的郵件系統之後,因為 sendmail 的運作基本上可以看做是這樣: [list=1]
  • 有信來的時候,如果接受者有本機的『真實帳號』,那就將該信件收下來;
  • 有信要以本機來寄送的時候,如果該寄件人的IP 在 /etc/mail/access 檔案的紀錄中,那就將該信件轉送出去;
  • 有信要以本機寄送時,但該 IP 不在 access 檔案中,那就開始身份認證,看該信件提供的帳號與密碼是否與 cyrus-sasl 相同,若相同則予以接受轉寄,若不同則將該信件退回去!
  • [/list:o]
    這樣瞭解了嗎?也就是說,如果有身份認證了,那麼你就不需要在設定 access 那個檔案囉!而如果設定了 access 那個檔案,那麼在 access 檔案裡設定的IP所傳送的信件,不論身份認證是否正確,該信件都會被轉送出去喔!所以,造成你的問題,很有可能是因為:
[list=1]
  • 你已經設定了 relay 的弁遄A所以當然信件就被接收了!
  • 你所寄送的收件者是你主機上面的真實帳號[/list:o]
    只要有這兩個咚咚,那麼該封信件還是會被傳送出去!
    這只是我的使用經驗,如果有錯,歡迎指正!

niket

  • 可愛的小學生
  • *
  • 文章數: 2
    • 檢視個人資料
sendmail 的驗證功能
« 回覆 #4 於: 2002-01-20 09:58 »
您的意思是說要將access中所有的relay全部拿掉嗎?
包含:
localhost.localdomain RELAY
localhost             RELAY
127.0.0.1             RELAY
這些也不能有嗎??????


很謝謝各位大大的指導,因為接觸RH不很久有些問題
不知會不會很基本,還是謝謝大大的回應摟!!!!!!

---------------------------------------------
SORRY!!!!
剛才將以上relay都#掉,好像就成奶F
真是謝謝大大!!!!!!
祝大大有個愉快的週末!!!!!


[ 這篇文章被編輯過:  niket 在 2002-01-20 10:06 ]

g773

  • 可愛的小學生
  • *
  • 文章數: 9
    • 檢視個人資料
sendmail 的驗證功能
« 回覆 #5 於: 2002-03-01 15:04 »
netman,我依照你的設定後,將sendmail放在cisco firewall的DMZ網段內,
然後在internal裡面測試驗證的工作OK,但我在internet上(撥接or家中adsl)
測試驗證工作卻是550Relay Denied,我check過sendmail的log file,
確實有連進server上,能幫我解決這個迷津嗎?
Thanks a lot
PS.firewall 上對應的ip所有的port全部都打開

Anonymous

  • 訪客
sendmail 的驗證功能
« 回覆 #6 於: 2002-03-02 20:41 »
有點抱歉﹐因為我對 cisco 的 dmz 設定並不熟識~~  :sad:
如果 maillog 說有收到請求﹐但卻不能通過驗證﹐那實在搞不懂。
您可以用同一台 client 來測試嗎﹖例如用 notebook 來測試。

g773

  • 可愛的小學生
  • *
  • 文章數: 9
    • 檢視個人資料
sendmail 的驗證功能
« 回覆 #7 於: 2002-03-04 11:47 »
Netman.
我試過在同DMZ網段,來寄信測試,確定是Ok的.
在internal上也沒有問題.
就是透過internet就是無法認證過關.
想不出來有其他問題??

在Client端出現的錯誤是550 Relay Denied
IP name nslookup faild[IP]

[ 這篇文章被編輯過:  g773 在 2002-03-04 17:58 ]

Anonymous

  • 訪客
sendmail 的驗證功能
« 回覆 #8 於: 2002-03-05 12:37 »
name nslookup faild???

那是 dns 的問題吧﹖

YCLiu

  • 懷疑的國中生
  • **
  • 文章數: 60
    • 檢視個人資料
sendmail 的驗證功能
« 回覆 #9 於: 2002-10-14 21:14 »
一事請教各位前輩
小弟已經照著上述指導步驟完成相關Server系統檔案的修改設定
重新啟動sendmail service.
在Client端也已經設定為需要SMTP身份認證
但是在這種情況下
用Client端的Outlook寄發信件時
卻會發生下面這種錯誤訊息:

您的伺服器意外地終止連線。可能的原因包括伺服器問題、網路問題或長時間閒置。 帳戶: '…', 伺服器: '………', 通訊協定: SMTP, 連接埠: 25, 安全(SSL): 否, 通訊端錯誤: 10053, 錯誤碼: 0x800CCC0F

我的/etc/mail/access已經改為沒有任何RELAY了,如下:

# Check the /usr/share/doc/sendmail-8.11.6/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail-8.11.6/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
localhost.localdomain           RELAY
localhost                       RELAY
127.0.0.1                       RELAY

請問前輩們,這樣的錯誤狀況
是弟還有什麼地方需要注意的!
請多多指導!
十分感謝您.