无法通过telnet错误504连接到smtp服务器

时间:2017-05-10 16:37:17

标签: php smtp phpmailer telnet smtp-auth

尝试通过telnet登录我的电子邮件服务器时收到504错误。我尝试过端口25以及587.(使用* s和xs屏蔽域和ips)。

>EHLO domain.com 
250-************.outlook.office365.com Hello [xx.xx.xx.xx]
250-SIZE 157286400
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250 CHUNKING
> HELP
214-This server supports the following commands:
214 HELO EHLO STARTTLS RCPT DATA RSET MAIL QUIT HELP AUTH BDAT
> AUTH
504 5.7.4 Unrecognized authentication type 
[*************.********.****.outlook.com]
> auth
504 5.7.4 Unrecognized authentication type 
[*************.********.****.outlook.com]
> AUTH LOGIN
504 5.7.4 Unrecognized authentication type 
[*************.********.****.outlook.com]
> auth login
504 5.7.4 Unrecognized authentication type 
[*************.********.****.outlook.com]

我可以使用phpmailer做到这一点!:

        <?php
        $mail = new PHPMailer(true);
        $mail->IsSMTP();
        $mail->Host = $host;
        $mail->Port = 587;
        $mail->SMTPDebug = 2;
        $mail->SMTPSecure = "tls";
        $mail->SMTPAuth = true;
        $mail->Username = $user;
        $mail->Password = $password;
        $mail->SetFrom($user, "chiliNUT");
        $mail->Subject = $subject;
        $mail->MsgHTML($content);
        $mail->send();

在auth的引擎盖下,它正在做:

public function Authenticate($username, $password) {
    // Start authentication
    fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF);
    //...

如何在命令行上运行?

1 个答案:

答案 0 :(得分:1)

这是因为大多数合理的邮件服务器不允许未加密的AUTH - 请注意,您从服务器收到的功能列表不包含AUTH - 您需要先调用STARTTLS,PHPMailer会自动执行。您无法使用telnet手动执行此操作 - 使用openssl的s_client命令可以更好地完成此操作。 PHPMailer故障排除指南中有一个示例,例如:

openssl s_client -starttls smtp -connect smtp.outlook.office365.com:587