【问题标题】:How to use user name and password in AUTH PLAIN?如何在 AUTH PLAIN 中使用用户名和密码?
【发布时间】:2011-10-18 19:30:00
【问题描述】:

我正在尝试使用 telnet 和 smtp.mail.yahoo.com 服务器发送电子邮件。当我尝试使用我的雅虎邮件 ID 和密码在服务器上验证自己时。服务器给了我错误;

501 malformed auth input (#5.5.4)

我正在使用 AUTH PLAIN 机制。我不知道如何组合用户名和密码。然后将其转换为base64然后发送。

有人可以建议我如何组合 AUTH PLAIN 的用户名和密码吗?谢谢

【问题讨论】:

    标签: c email smtp authentication


    【解决方案1】:

    使用 AUTH PLAIN,应根据此语法发送凭据(来自 RFC 4616):

    message   = [authzid] UTF8NUL authcid UTF8NUL passwd
    authcid   = 1*SAFE ; MUST accept up to 255 octets
    authzid   = 1*SAFE ; MUST accept up to 255 octets
    passwd    = 1*SAFE ; MUST accept up to 255 octets
    UTF8NUL   = %x00 ; UTF-8 encoded NUL character
    [...]
    

    对于 SMTP 服务器来说,空的 authzid 似乎很常见,因此这应该会为您计算一个有效的 AUTH PLAIN 消息:

    echo -ne "\0username\0password"|base64
    

    【讨论】:

    • 我的雅虎 ID 是“sarfraz.streaming@yahoo.com”,密码是“password”。我将如何将它们结合起来。我按照你的回答,但没有奏效。谢谢
    • 怎么没用?你从服务器得到什么错误信息?如果您解码 base64 编码的字符串(例如通过 opinionatedgeek.com/dotnet/tools/base64decode ),是否有意义?
    • 我在link 使用不带引号的字符串“\0sarfraz.streaming@yahoo.com\0pasword”在线对其进行编码。然后我将此字符串提供给服务器,它显示“501 malformed auth input (#5.5.4)”
    • 谢谢,这是我的错误。当我使用我的程序手动执行此操作时,它工作正常。在线编码器没有给出期望的结果。谢谢
    • 请注意,echo 不应吐出换行符。因此,计算 AUTH PLAIN 消息的正确命令是: echo -en "\0username\0password"|base64
    猜你喜欢
    • 2020-03-27
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    相关资源
    最近更新 更多