Python论坛  - 讨论区

标题:Re: Re: [python-chinese] 一个关于smtplib的问题

2004年05月14日 星期五 08:10

charles huang hyy at fjii.com
Fri May 14 08:10:21 HKT 2004

Frank Zheng,您好! 

  2.3已经支持LOGIN了,其实,只要改一下源代码,把PLAIN等于LOGIN就ok了。
      开源软件已支持标准为主,非标准的,只有等等,或者自己改了,方正有源代码。

======== 2004-05-13 16:39:33 您在来信中写道: ========

是呀,我正有这个想法,只是觉得这么明显的问题,怎么以前没有人遇到过,还是人家国外的mail server跟咱们的都不一样。

----- Original Message ----- 
From: 黎达文 
To: python-chinese at lists.python.cn 
Sent: Thursday, May 13, 2004 4:06 PM
Subject: 答复: [python-chinese] 一个关于smtplib的问题


既然代码都有了,改一下它的实现不就行啦?!




发件人: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn] 代表 Frank Zheng
发送时间: 2004年5月13日 15:16
收件人: python-chinese at lists.python.cn
主题: [python-chinese] 一个关于smtplib的问题


smtplib是python自带的module,是封装了smtp,esmtp协议的模块
我试着用了一下,发现在验证用户名和密码的时候出了一些问题
下面是一些测试代码
>>> import smtplib
>>> s = smtplib.SMTP()
>>> s.set_debuglevel(1)
>>> s.connect('smtp.263.net')
connect: ('smtp.263.net', 25)
connect: ('smtp.263.net', 25)
reply: '220 Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)\r\n'
reply: retcode (220); Msg: Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)
connect: Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)
(220, 'Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)')
>>> s.login('hust_zxq524','*****')
send: 'ehlo pc11\r\n'
reply: '250-smtp.263.net\r\n'
reply: '250-PIPELINING\r\n'
reply: '250-SIZE 30720000\r\n'
reply: '250-ETRN\r\n'
reply: '250-AUTH LOGIN\r\n'
reply: '250-AUTH=LOGIN\r\n'
reply: '250-XVERP\r\n'
reply: '250 8BITMIME\r\n'
reply: retcode (250); Msg: smtp.263.net
PIPELINING
SIZE 30720000
ETRN
AUTH LOGIN
AUTH=LOGIN
XVERP
8BITMIME
AuthMethod: None
Traceback (most recent call last):
  File "", line 1, in ?
  File "D:\tools\Python22\lib\smtplib.py", line 540, in login
    raise SMTPException("No suitable authentication method found.")
SMTPException: No suitable authentication method found.

然后我看了smtplib的代码,发现它支持两种认证方式,"PLAIN" 和 "CRAM-MD5",采用哪种需要根据发EHLO 命令给mailserver后,server的回复信息来确定(见blue字部分), 所以有效的回复应该是:
AUTH PLAIN CRAM-MD5 
或者至少有一种。
而这里的AUTH LOGIN,我google了一下,发现某人说了这样一段话:

"本质上AUTH PLAIN和AUTH LOGIN是一样的 
用户名和口令都是base64编码的明文,只不过协议命令不一样罢了 

因此要说他们的区别就必须知道SASL协议了: 

SASL协议里面并没有定义AUTH LOGIN,而是定义了与之相同的AUTH PLAIN 
但偏偏Oultook自创AUTH LOGIN,谁让MS太NB,因此sasl的一些实现版本里面就有了AUTH LOGIN
"
然后outlook在发邮件的时候是这样做的:(在发完ehlo命令以后)
AUTH LOGIN
334 VXNlcm5hbWU6                      (Base64解码后: Username:)
Ymh3YW5n                              (Base64编码前: bhwang)
334 UGFzc3dvcmQ6                      (Base64解码后: Password:)
bXlwYXNzd29yZCFteXBhc3N3b3JkISE=      (Base64编码前: ********)
235 Authentication successful

以上验证过程中都没有加密数据,:(
我试了好几个网站,263,sina,sohu都是这样的
这样看来smtplib这个模块是没法用了,我用的是2.2,不知道2.3怎么样?

Frank
Thanks






_______________________________________________
python-chinese list
python-chinese at lists.python.cn
http://python.cn/mailman/listinfo/python-chinese


= = = = = = = = = = = = = = = = = = = = = = 
        致
礼!

              charles huang
              hyy at fjii.com
                 2004-05-14
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040514/cf5268b4/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年05月14日 星期五 10:53

Frank Zheng hust_zxq524 at 263.net
Fri May 14 10:53:25 HKT 2004

我下了python2.3.3,是支持login了,不过不是象你说的那么简单,PLAIN和LOGIN的命令序列不是一样的,
PLAIN是一次把用户名密码都发给server,而login是先发用户名等回复再发密码,不同的
新的smtplib里面也是分开处理的
我试了263,不行,返回"error command order"
sina的可以了,挺奇怪的

  ----- Original Message ----- 
  From: charles huang 
  To: python-chinese at lists.python.cn 
  Sent: Friday, May 14, 2004 8:10 AM
  Subject: Re: Re: [python-chinese] 一个关于smtplib的问题


  Frank Zheng,您好! 

    2.3已经支持LOGIN了,其实,只要改一下源代码,把PLAIN等于LOGIN就ok了。
        开源软件已支持标准为主,非标准的,只有等等,或者自己改了,方正有源代码。

  ======== 2004-05-13 16:39:33 您在来信中写道: ========

          是呀,我正有这个想法,只是觉得这么明显的问题,怎么以前没有人遇到过,还是人家国外的mail server跟咱们的都不一样。

          ----- Original Message ----- 
            From: 黎达文 
            To: python-chinese at lists.python.cn 
            Sent: Thursday, May 13, 2004 4:06 PM
            Subject: 答复: [python-chinese] 一个关于smtplib的问题


            既然代码都有了,改一下它的实现不就行啦?!



--------------------------------------------------------------------
            发件人: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn] 代表 Frank Zheng
            发送时间: 2004年5月13日 15:16
            收件人: python-chinese at lists.python.cn
            主题: [python-chinese] 一个关于smtplib的问题


            smtplib是python自带的module,是封装了smtp,esmtp协议的模块
            我试着用了一下,发现在验证用户名和密码的时候出了一些问题
            下面是一些测试代码
            >>> import smtplib
            >>> s = smtplib.SMTP()
            >>> s.set_debuglevel(1)
            >>> s.connect('smtp.263.net')
            connect: ('smtp.263.net', 25)
            connect: ('smtp.263.net', 25)
            reply: '220 Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)\r\n'
            reply: retcode (220); Msg: Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)
            connect: Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)
            (220, 'Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)')
            >>> s.login('hust_zxq524','*****')
            send: 'ehlo pc11\r\n'
            reply: '250-smtp.263.net\r\n'
            reply: '250-PIPELINING\r\n'
            reply: '250-SIZE 30720000\r\n'
            reply: '250-ETRN\r\n'
            reply: '250-AUTH LOGIN\r\n'
            reply: '250-AUTH=LOGIN\r\n'
            reply: '250-XVERP\r\n'
            reply: '250 8BITMIME\r\n'
            reply: retcode (250); Msg: smtp.263.net
            PIPELINING
            SIZE 30720000
            ETRN
            AUTH LOGIN
            AUTH=LOGIN
            XVERP
            8BITMIME
            AuthMethod: None
            Traceback (most recent call last):
              File "", line 1, in ?
              File "D:\tools\Python22\lib\smtplib.py", line 540, in login
                raise SMTPException("No suitable authentication method found.")
            SMTPException: No suitable authentication method found.

            然后我看了smtplib的代码,发现它支持两种认证方式,"PLAIN" 和 "CRAM-MD5",采用哪种需要根据发EHLO 命令给mailserver后,server的回复信息来确定(见blue字部分), 所以有效的回复应该是:
            AUTH PLAIN CRAM-MD5 
            或者至少有一种。
            而这里的AUTH LOGIN,我google了一下,发现某人说了这样一段话:

            "本质上AUTH PLAIN和AUTH LOGIN是一样的 
            用户名和口令都是base64编码的明文,只不过协议命令不一样罢了 

            因此要说他们的区别就必须知道SASL协议了: 

            SASL协议里面并没有定义AUTH LOGIN,而是定义了与之相同的AUTH PLAIN 
            但偏偏Oultook自创AUTH LOGIN,谁让MS太NB,因此sasl的一些实现版本里面就有了AUTH LOGIN
            "
            然后outlook在发邮件的时候是这样做的:(在发完ehlo命令以后)
            AUTH LOGIN
            334 VXNlcm5hbWU6                      (Base64解码后: Username:)
            Ymh3YW5n                              (Base64编码前: bhwang)
            334 UGFzc3dvcmQ6                      (Base64解码后: Password:)
            bXlwYXNzd29yZCFteXBhc3N3b3JkISE=      (Base64编码前: ********)
            235 Authentication successful

            以上验证过程中都没有加密数据,:(
            我试了好几个网站,263,sina,sohu都是这样的
            这样看来smtplib这个模块是没法用了,我用的是2.2,不知道2.3怎么样?

            Frank
            Thanks





--------------------------------------------------------------------


            _______________________________________________
            python-chinese list
            python-chinese at lists.python.cn
            http://python.cn/mailman/listinfo/python-chinese
       

  = = = = = = = = = = = = = = = = = = = = = = 

          致
  礼!


                charles huang
                hyy at fjii.com
                   2004-05-14



------------------------------------------------------------------------------


  _______________________________________________
  python-chinese list
  python-chinese at lists.python.cn
  http://python.cn/mailman/listinfo/python-chinese

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040514/4b649428/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年05月14日 星期五 12:27

Frank Zheng hust_zxq524 at 263.net
Fri May 14 12:27:52 HKT 2004

监测了一下outlook的数据,原来263身份验证的过程跟smtplib中的不一样,顺序是:
AUTH LOGIN \r\n
334 USERNAME
myusername
334 PASSWORD 
mypassword


而这个顺序连接sina的也可以
但是smtplib的命令顺序连263的不行,连sina的可以,看来还是得改成上面的顺序才行,微软还是牛啊

smtplib的顺序是:
AUTH LOGIN myusername\r\n
334 PASSWORD 
mypassword

唉,开源的东东还是有些问题啊


----- Original Message ----- 
  From: Frank Zheng 
  To: python-chinese at lists.python.cn 
  Sent: Friday, May 14, 2004 10:53 AM
  Subject: Re: Re: [python-chinese] 一个关于smtplib的问题


  我下了python2.3.3,是支持login了,不过不是象你说的那么简单,PLAIN和LOGIN的命令序列不是一样的,
  PLAIN是一次把用户名密码都发给server,而login是先发用户名等回复再发密码,不同的
  新的smtplib里面也是分开处理的
  我试了263,不行,返回"error command order"
  sina的可以了,挺奇怪的

    ----- Original Message ----- 
    From: charles huang 
    To: python-chinese at lists.python.cn 
    Sent: Friday, May 14, 2004 8:10 AM
    Subject: Re: Re: [python-chinese] 一个关于smtplib的问题


    Frank Zheng,您好! 

      2.3已经支持LOGIN了,其实,只要改一下源代码,把PLAIN等于LOGIN就ok了。
          开源软件已支持标准为主,非标准的,只有等等,或者自己改了,方正有源代码。

    ======== 2004-05-13 16:39:33 您在来信中写道: ========

            是呀,我正有这个想法,只是觉得这么明显的问题,怎么以前没有人遇到过,还是人家国外的mail server跟咱们的都不一样。

            ----- Original Message ----- 
              From: 黎达文 
              To: python-chinese at lists.python.cn 
              Sent: Thursday, May 13, 2004 4:06 PM
              Subject: 答复: [python-chinese] 一个关于smtplib的问题


              既然代码都有了,改一下它的实现不就行啦?!



------------------------------------------------------------------
              发件人: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn] 代表 Frank Zheng
              发送时间: 2004年5月13日 15:16
              收件人: python-chinese at lists.python.cn
              主题: [python-chinese] 一个关于smtplib的问题


              smtplib是python自带的module,是封装了smtp,esmtp协议的模块
              我试着用了一下,发现在验证用户名和密码的时候出了一些问题
              下面是一些测试代码
              >>> import smtplib
              >>> s = smtplib.SMTP()
              >>> s.set_debuglevel(1)
              >>> s.connect('smtp.263.net')
              connect: ('smtp.263.net', 25)
              connect: ('smtp.263.net', 25)
              reply: '220 Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)\r\n'
              reply: retcode (220); Msg: Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)
              connect: Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)
              (220, 'Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)')
              >>> s.login('hust_zxq524','*****')
              send: 'ehlo pc11\r\n'
              reply: '250-smtp.263.net\r\n'
              reply: '250-PIPELINING\r\n'
              reply: '250-SIZE 30720000\r\n'
              reply: '250-ETRN\r\n'
              reply: '250-AUTH LOGIN\r\n'
              reply: '250-AUTH=LOGIN\r\n'
              reply: '250-XVERP\r\n'
              reply: '250 8BITMIME\r\n'
              reply: retcode (250); Msg: smtp.263.net
              PIPELINING
              SIZE 30720000
              ETRN
              AUTH LOGIN
              AUTH=LOGIN
              XVERP
              8BITMIME
              AuthMethod: None
              Traceback (most recent call last):
                File "", line 1, in ?
                File "D:\tools\Python22\lib\smtplib.py", line 540, in login
                  raise SMTPException("No suitable authentication method found.")
              SMTPException: No suitable authentication method found.

              然后我看了smtplib的代码,发现它支持两种认证方式,"PLAIN" 和 "CRAM-MD5",采用哪种需要根据发EHLO 命令给mailserver后,server的回复信息来确定(见blue字部分), 所以有效的回复应该是:
              AUTH PLAIN CRAM-MD5 
              或者至少有一种。
              而这里的AUTH LOGIN,我google了一下,发现某人说了这样一段话:

              "本质上AUTH PLAIN和AUTH LOGIN是一样的 
              用户名和口令都是base64编码的明文,只不过协议命令不一样罢了 

              因此要说他们的区别就必须知道SASL协议了: 

              SASL协议里面并没有定义AUTH LOGIN,而是定义了与之相同的AUTH PLAIN 
              但偏偏Oultook自创AUTH LOGIN,谁让MS太NB,因此sasl的一些实现版本里面就有了AUTH LOGIN
              "
              然后outlook在发邮件的时候是这样做的:(在发完ehlo命令以后)
              AUTH LOGIN
              334 VXNlcm5hbWU6                      (Base64解码后: Username:)
              Ymh3YW5n                              (Base64编码前: bhwang)
              334 UGFzc3dvcmQ6                      (Base64解码后: Password:)
              bXlwYXNzd29yZCFteXBhc3N3b3JkISE=      (Base64编码前: ********)
              235 Authentication successful

              以上验证过程中都没有加密数据,:(
              我试了好几个网站,263,sina,sohu都是这样的
              这样看来smtplib这个模块是没法用了,我用的是2.2,不知道2.3怎么样?

              Frank
              Thanks





------------------------------------------------------------------


              _______________________________________________
              python-chinese list
              python-chinese at lists.python.cn
              http://python.cn/mailman/listinfo/python-chinese
         

    = = = = = = = = = = = = = = = = = = = = = = 

            致
    礼!


                  charles huang
                  hyy at fjii.com
                     2004-05-14



----------------------------------------------------------------------------


    _______________________________________________
    python-chinese list
    python-chinese at lists.python.cn
    http://python.cn/mailman/listinfo/python-chinese



------------------------------------------------------------------------------


  _______________________________________________
  python-chinese list
  python-chinese at lists.python.cn
  http://python.cn/mailman/listinfo/python-chinese

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040514/cf9cd637/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年05月14日 星期五 12:32

Frank Zheng hust_zxq524 at 263.net
Fri May 14 12:32:47 HKT 2004

我刚才说微软牛,不是说他的outlook做的牛,而是他能强行推他的标准,让别人都得跟着他的改,厉害!

  ----- Original Message ----- 
  From: Frank Zheng 
  To: python-chinese at lists.python.cn 
  Sent: Friday, May 14, 2004 12:27 PM
  Subject: Re: Re: [python-chinese] 一个关于smtplib的问题


  监测了一下outlook的数据,原来263身份验证的过程跟smtplib中的不一样,顺序是:
  AUTH LOGIN \r\n
  334 USERNAME
  myusername
  334 PASSWORD 
  mypassword


  而这个顺序连接sina的也可以
  但是smtplib的命令顺序连263的不行,连sina的可以,看来还是得改成上面的顺序才行,微软还是牛啊

  smtplib的顺序是:
  AUTH LOGIN myusername\r\n
  334 PASSWORD 
  mypassword

  唉,开源的东东还是有些问题啊


  ----- Original Message ----- 
    From: Frank Zheng 
    To: python-chinese at lists.python.cn 
    Sent: Friday, May 14, 2004 10:53 AM
    Subject: Re: Re: [python-chinese] 一个关于smtplib的问题


    我下了python2.3.3,是支持login了,不过不是象你说的那么简单,PLAIN和LOGIN的命令序列不是一样的,
    PLAIN是一次把用户名密码都发给server,而login是先发用户名等回复再发密码,不同的
    新的smtplib里面也是分开处理的
    我试了263,不行,返回"error command order"
    sina的可以了,挺奇怪的

      ----- Original Message ----- 
      From: charles huang 
      To: python-chinese at lists.python.cn 
      Sent: Friday, May 14, 2004 8:10 AM
      Subject: Re: Re: [python-chinese] 一个关于smtplib的问题


      Frank Zheng,您好! 

        2.3已经支持LOGIN了,其实,只要改一下源代码,把PLAIN等于LOGIN就ok了。
            开源软件已支持标准为主,非标准的,只有等等,或者自己改了,方正有源代码。

      ======== 2004-05-13 16:39:33 您在来信中写道: ========

              是呀,我正有这个想法,只是觉得这么明显的问题,怎么以前没有人遇到过,还是人家国外的mail server跟咱们的都不一样。

              ----- Original Message ----- 
                From: 黎达文 
                To: python-chinese at lists.python.cn 
                Sent: Thursday, May 13, 2004 4:06 PM
                Subject: 答复: [python-chinese] 一个关于smtplib的问题


                既然代码都有了,改一下它的实现不就行啦?!



----------------------------------------------------------------
                发件人: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn] 代表 Frank Zheng
                发送时间: 2004年5月13日 15:16
                收件人: python-chinese at lists.python.cn
                主题: [python-chinese] 一个关于smtplib的问题


                smtplib是python自带的module,是封装了smtp,esmtp协议的模块
                我试着用了一下,发现在验证用户名和密码的时候出了一些问题
                下面是一些测试代码
                >>> import smtplib
                >>> s = smtplib.SMTP()
                >>> s.set_debuglevel(1)
                >>> s.connect('smtp.263.net')
                connect: ('smtp.263.net', 25)
                connect: ('smtp.263.net', 25)
                reply: '220 Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)\r\n'
                reply: retcode (220); Msg: Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)
                connect: Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)
                (220, 'Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)')
                >>> s.login('hust_zxq524','*****')
                send: 'ehlo pc11\r\n'
                reply: '250-smtp.263.net\r\n'
                reply: '250-PIPELINING\r\n'
                reply: '250-SIZE 30720000\r\n'
                reply: '250-ETRN\r\n'
                reply: '250-AUTH LOGIN\r\n'
                reply: '250-AUTH=LOGIN\r\n'
                reply: '250-XVERP\r\n'
                reply: '250 8BITMIME\r\n'
                reply: retcode (250); Msg: smtp.263.net
                PIPELINING
                SIZE 30720000
                ETRN
                AUTH LOGIN
                AUTH=LOGIN
                XVERP
                8BITMIME
                AuthMethod: None
                Traceback (most recent call last):
                  File "", line 1, in ?
                  File "D:\tools\Python22\lib\smtplib.py", line 540, in login
                    raise SMTPException("No suitable authentication method found.")
                SMTPException: No suitable authentication method found.

                然后我看了smtplib的代码,发现它支持两种认证方式,"PLAIN" 和 "CRAM-MD5",采用哪种需要根据发EHLO 命令给mailserver后,server的回复信息来确定(见blue字部分), 所以有效的回复应该是:
                AUTH PLAIN CRAM-MD5 
                或者至少有一种。
                而这里的AUTH LOGIN,我google了一下,发现某人说了这样一段话:

                "本质上AUTH PLAIN和AUTH LOGIN是一样的 
                用户名和口令都是base64编码的明文,只不过协议命令不一样罢了 

                因此要说他们的区别就必须知道SASL协议了: 

                SASL协议里面并没有定义AUTH LOGIN,而是定义了与之相同的AUTH PLAIN 
                但偏偏Oultook自创AUTH LOGIN,谁让MS太NB,因此sasl的一些实现版本里面就有了AUTH LOGIN
                "
                然后outlook在发邮件的时候是这样做的:(在发完ehlo命令以后)
                AUTH LOGIN
                334 VXNlcm5hbWU6                      (Base64解码后: Username:)
                Ymh3YW5n                              (Base64编码前: bhwang)
                334 UGFzc3dvcmQ6                      (Base64解码后: Password:)
                bXlwYXNzd29yZCFteXBhc3N3b3JkISE=      (Base64编码前: ********)
                235 Authentication successful

                以上验证过程中都没有加密数据,:(
                我试了好几个网站,263,sina,sohu都是这样的
                这样看来smtplib这个模块是没法用了,我用的是2.2,不知道2.3怎么样?

                Frank
                Thanks





----------------------------------------------------------------


                _______________________________________________
                python-chinese list
                python-chinese at lists.python.cn
                http://python.cn/mailman/listinfo/python-chinese
           

      = = = = = = = = = = = = = = = = = = = = = = 

              致
      礼!


                    charles huang
                    hyy at fjii.com
                       2004-05-14



--------------------------------------------------------------------------


      _______________________________________________
      python-chinese list
      python-chinese at lists.python.cn
      http://python.cn/mailman/listinfo/python-chinese



----------------------------------------------------------------------------


    _______________________________________________
    python-chinese list
    python-chinese at lists.python.cn
    http://python.cn/mailman/listinfo/python-chinese



------------------------------------------------------------------------------


  _______________________________________________
  python-chinese list
  python-chinese at lists.python.cn
  http://python.cn/mailman/listinfo/python-chinese

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040514/e2c23aec/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号