Chinaunix

标题: 请教,sendmail如何做到让本地用户发给本地用户也必须走smtp认证 [打印本页]

作者: tianyayang    时间: 2005-10-12 16:31
标题: 请教,sendmail如何做到让本地用户发给本地用户也必须走smtp认证
请教,sendmail如何做到让本地用户(本地用户发给本地用户)也必须走smtp认证
作者: abel    时间: 2005-10-12 17:02
标题: 请教,sendmail如何做到让本地用户发给本地用户也必须走smtp认证
這應該是有問題的
對 sendmail 來說,這都不是 relay (不論本地或非本地用戶發向本地)
而只是單純的 smtp in 的動作而以
作者: dragon304    时间: 2006-05-29 14:29
标题: 请教,sendmail如何做到让本地用户(本地用户发给本地用户)也必须走smtp认证
请教,sendmail如何做到让本地用户(本地用户发给本地用户)也必须走smtp认证
作者: abel    时间: 2006-05-30 09:49
用 SSL 吧,肯定萬無一失,也不怕被偽造,傳送時更是加密
http://www.ofb.net/~jheiss/sendmail/tlsandrelay.shtml
作者: 思一克    时间: 2006-05-30 10:17
to Abel,

SSL根本不防止“伪造”问题。
作者: abel    时间: 2006-05-30 10:37
原帖由 思一克 于 2006-5-30 10:17 发表
to Abel,

SSL根本不防止“伪造”问题。

思兄了解 sendmail SSL ?
我可以給內部的人每個人 sign 一個 SSL Cert. (cn 值為每個人)
並且要求內部 IP 在寄送時只能使用 smtps (STATTLS) 做 relay
所以不管內部 user 寄到哪裏都會有這個 SSL 的憑證資訊
憑證(Cert) 不是只有加密功能,也含有認證功能(認這個人),我們家的
WLAN 走 WPA,所有的無線網路存取要 SSL Cert (必要求,不能沒有), Sendmail 也是要 SSL Cert
(不要求, User 自決),我們和一些重要單位信件的往來全走 STARTTLS 的,
而在我們 BS7799 的要求下,我們也確實是這麼做的,
憑證(Cert) 不是只有加密通道而以
作者: 思一克    时间: 2006-05-30 11:07
To Abel,

sendmail支持的STARTTLS。这不是真正的SSL(因为会话的一部分是明的传送)。也可能支持SSL收发--我不了解。

你可以实验,用STARTTLS CERT的发件人,在OUTLOOK中将自己的email 地址改了(不是验证帐户!),看可以发送否?
作者: 思一克    时间: 2006-05-30 11:11
To Abel,

”伪造“ 就是2个都有CERT的人,A将自己的email地址改写为B的。你按我上边的帖子的实验。


原帖由 abel 于 2006-5-30 10:37 发表

思兄了解 sendmail SSL ?
我可以給內部的人每個人 sign 一個 SSL Cert. (cn 值為每個人)
並且要求內部 IP 在寄送時只能使用 smtps (STATTLS) 做 relay
所以不管內部 user 寄到哪裏都會有這個 SSL 的憑證資訊 ...

作者: abel    时间: 2006-05-30 11:35
原帖由 思一克 于 2006-5-30 11:07 发表
To Abel,

sendmail支持的STARTTLS。这不是真正的SSL(因为会话的一部分是明的传送)。也可能支持SSL收发--我不了解。

你可以实验,用STARTTLS CERT的发件人,在OUTLOOK中将自己的email 地址改了(不是验证帐 ...

sendmail 不是真正的 SSL ? 這就奇怪了, ssl 不只用在 http 而以, sendmail 的 stattls 可以是 sslv1 v2 tlsv1 ...等都可以設,至於會話階段, sendmail 的做法是送出 ehlo 後看到 stattls(Server to Server) 時,若本身也有支援 ssl 的話, sendmail 會 close 現在的 smtp 25, 改用 smtps 465
(也就是呼叫 openssl s_client -connect mail_server:465) , 這樣的動作就一個 ehlo 是明碼,其他都是加密
的,所以您的說法我是不贊同的,都不 ehlo 就認定對方有支援 starttls 那才會造成信件無法傳送,
以上是以 root 實際傳送信件的過程,重點是 stattls 那幾行

  1. [root@mydomain mail]# mail abelyang -v
  2. Subject: 3
  3. .
  4. Cc:
  5. Null message body; hope that's ok
  6. abelyang... Connecting to [0.0.0.0] via relay...
  7. 220 mydomain.net.tw ESMTP Sendmail 8.13.6/8.13.5; Tue, 30 May 2006 11:26:48 +0800
  8. >>> EHLO mydomain.net.tw
  9. 250-mydomain.net.tw Hello localhost [127.0.0.1], pleased to meet you
  10. 250-ENHANCEDSTATUSCODES
  11. 250-PIPELINING
  12. 250-8BITMIME
  13. 250-SIZE
  14. 250-DSN
  15. 250-ETRN
  16. 250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
  17. 250-STARTTLS
  18. 250-DELIVERBY
  19. 250 HELP
  20. >>> STARTTLS
  21. 220 2.0.0 Ready to start TLS
  22. >>> EHLO mydomain.net.tw
  23. 250-mydomain.net.tw Hello localhost [127.0.0.1], pleased to meet you
  24. 250-ENHANCEDSTATUSCODES
  25. 250-PIPELINING
  26. 250-8BITMIME
  27. 250-SIZE
  28. 250-DSN
  29. 250-ETRN
  30. 250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
  31. 250-DELIVERBY
  32. 250 HELP
  33. >>> MAIL From:<root@mydomain.net.tw> SIZE=25 AUTH=root@mydomain.net.tw
  34. 250 2.1.0 <root@mydomain.net.tw>... Sender ok
  35. >>> RCPT To:<abelyang@mydomain.net.tw>
  36. >>> DATA
  37. 250 2.1.5 <abelyang@mydomain.net.tw>... Recipient ok
  38. 354 Enter mail, end with "." on a line by itself
  39. >>> .
  40. 250 2.0.0 k4U3Qmxn017301 Message accepted for delivery
  41. abelyang... Sent (k4U3Qmxn017301 Message accepted for delivery)
  42. Closing connection to [0.0.0.0]
  43. >>> QUIT
  44. 221 2.0.0 mydomain.net.tw closing connection
复制代码


另一個問題,
若 user 地址改了,但是它的表頭還是會帶 CN 值的,除非別人盜用了他人的 SSL Cert.
也就是 user 信件若是使用了 SSL Cert. 的方式發送,其收信的表頭將會出現
(openssl pkcs12 -export -in server.pem -out abel_cert.pkcs12 -name "Abel Personal Certificate")
Abel Personal Certicate 這樣的字眼,所以,用 SSL Cert. 方式來做是絕對行得通的,
而且效果更好
作者: 思一克    时间: 2006-05-30 11:48
To Abel,

在SMTP连接的意义上,TLS当然不是SSL。一但STARTTLS之后,连接变为SSL。所以TLS是对部分SMTP连接的SSL,不是全部的。所以为许多MAIL CLIENT什么分SSL,TLS了。否则就不用分了。

至于可不可以防止2个用户(都有CERT)的地址改写(伪造),你自己实验。
A用A的CERT肯定可以建立连接(STARTTLS),之后对两端来讲,就是明码了,A 再 发MAIL FROM:<B>
当然可以了(这时和TLS无关了),只要MAIL系统没有防止,加TLS也防止不了。
作者: abel    时间: 2006-05-30 12:00
在SMTP连接的意义上,TLS当然不是SSL。一但STARTTLS之后,连接变为SSL。所以TLS是对部分SMTP
连接的SSL,不是全部的。所以为许多MAIL CLIENT什么分SSL,TLS了。否则就不用分了。

SSL/TLS 我認為可以視為一體,什麼 ssl v2/v3 tls v1/v2 都是差不多的,細節我也不是分的很清楚,
至於 MUA 分什麼做 relay,那就都是 starttls (tls 是包含了 ssl 的)
至于可不可以防止2个用户(都有CERT)的地址改写(伪造),你自己实验。

我實驗是可以的,不知你實驗或認知又是如何呢 ? 我的 Cert. 就像 WPA , by user 來建,又有什麼問題呢,
在表頭就會顯現 CN 值(這個 SSL 憑證是簽發給誰),至於 Mail From/From 寫什麼都是不是一樣,
沒有 sign 過,來自內部的 ip 我就不收,反證不就是內部寄信一個要 STARTTLS + user's Cert.
這有什麼偽造問題 ? 會偽造就是有人拿到了 server 的 private.pem 或是有人把 Cert. file 借給
了別人,這都只是另一個層面的問題
A用A的CERT肯定可以建立连接(STARTTLS),之后对两端来讲,就是明码了,A 再 发MAIL FROM:<B>
当然可以了(这时和TLS无关了),只要MAIL系统没有防止,加TLS也防止不了。

我不認同你的說法,那 建立连接(STARTTLS)和沒有 stattls 有什麼差別,是 starttls 後的東西都
是加密的,就像 https 的 ssl/tls 一樣,兩端來看是明碼沒有錯,因為他們有共同的 key 及 protocol,
但是兩端以外來看就是加密的
作者: 思一克    时间: 2006-05-30 12:05
To Abel,

这个问题不说了。你自己研究吧。研究好了就理解我说的意思了。虽然我不懂sendmail,但这个问题不是sendmail的问题。

A用A的CERT成功建立SSL连接后,MAIL FROM:<>地址就可以随便写了,如果SENDMAIL本身不检查的话。
作者: abel    时间: 2006-05-30 12:16
原帖由 思一克 于 2006-5-30 12:05 发表
To Abel,

这个问题不说了。你自己研究吧。研究好了就理解我说的意思了。虽然我不懂sendmail,但这个问题不是sendmail的问题。

A用A的CERT成功建立SSL连接后,MAIL FROM:<>地址就可以随便写了,如果SEN ...

我了解你的意思,當然 Mail From 可以隨便寫,但是 Cert 可是會出現在表頭(mail header),說明實際為誰 !
您的意思是 MTA 普遍存在的現象,當然 sendmail 也可以對 CN 值做 Mail From 的檢查,
但是那是要多做許多處理的,一般也不會這樣去做,用 Cert. 就是避免偽造,不然內寄驗什麼了
裏面裝成外的,外面裝成裏的,沒有 Cert. 都是假的
作者: 思一克    时间: 2006-05-30 12:23
To Abel,

mail header中的是cert, 那是要看mail header的。
收件人打开邮件一眼看到的发件人还是伪造的。除非sendmail本身检查。这和SSL(TLS)无关,因为是不同网络层次的问题。

如同SSL无法防止恶意邮件一个道理。SSL(CERT)就是建立了一个别人看不见的数据通路,至于通路上传什么东西,真的,假的,好的,坏的和SSL无关,也不是SSL可以控制的。
作者: very_99    时间: 2009-11-18 19:11
老贴也顶一下,这个问题到现在还是存在。

很郁闷,最多做到客户端初次登陆时输入密码。  其他情况下,只要认证通过了一次,那么以后就可以伪造任何帐户在内部乱发邮件了。


很麻烦,那个B样,冒充老板发信出来也是很容易的




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2