【问题标题】:How to correctly configure symfony2 swiftmailer bundle to work with SMTP server with NTLM AUTH?如何正确配置 symfony2 swiftmailer 捆绑包以使用具有 NTLM AUTH 的 SMTP 服务器?
【发布时间】:2014-03-19 09:56:00
【问题描述】:
# Swiftmailer Configuration
swiftmailer:
    transport:  smtp
    host:       10.8.100.1
    port:       25
    username:   user
    password:   pass
    auth_mode:  ~
    encryption: ~
    spool:      { type: memory }

当我尝试通过$this->get('mailer')->send($message); 发送消息时,出现以下错误:

Fatal error: Uncaught exception 'Swift_TransportException' with message 'Failed
to authenticate on SMTP server with username "user" using 0 possible  authenticators'
in /..path../vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php:184 Stack trace: #0 

我已尝试将 auth_mode 设置更改为所有可能的值 plain, login, cram-md5, or null - 仍然是相同的错误消息。


然后我想远程登录到 SMTP 服务器以手动检查我是否可以进行身份​​验证(不过,我 100% 确定凭据是正确的)。

远程登录 10.8.100.1 25

Trying 10.8.100.1...
Connected to 10.8.100.1.
Escape character is '^]'.
220 EXC.acme.local Microsoft ESMTP MAIL Service ready at Wed, 19 Mar 2014 10:34:00 +0100

EHLO EXC.acme.local

250-EXC.acme.local Hello [10.8.100.1]
250-SIZE
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-X-ANONYMOUSTLS
250-AUTH NTLM
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250-XEXCH50
250 XRDST

我不是邮件服务器专家,但我期待 AUTH LOGIN... 似乎服务器(我无法控制)具有不同的身份验证方法(不支持通过 Swiftmailer 捆绑包?),这可能是问题的原因......

我的猜测正确吗?或者有没有办法配置 Swiftmailer 包以正确使用 AUTH NTLM 进行身份验证?

【问题讨论】:

  • 仅供参考,user 是用户名,pass 是密码吗?我的意思是,真的是他们吗?
  • 不,它们是不同的,但显然我不能在这里透露凭据信息 :)
  • 如果重要的话,它们是用纯文本(在配置中)编写的

标签: php email symfony ntlm swiftmailer


【解决方案1】:

邮件服务器似乎拒绝了您的连接(就像 google 一样,如果您尝试使用您的 gmail 帐户连接,如果您有 swiftmailer,您会遇到同样的问题)

告诉你,为什么不尝试使用Swift_MailTransport 而不是Swift_SmtpTransport(它使用与smtp 有点不同的mail 底层方法)

【讨论】:

  • 它不再抛出错误了......但是到目前为止,测试邮件没有送达(5分钟)
  • 也许邮件服务器接受它并...丢弃。尝试使用 unix 邮件系统(如果可以的话)并告诉我邮件是否到达您
  • 服务器管理员说日志中没有任何内容..它甚至没有尝试连接..
  • 好像是邮件服务器拒绝连接,但其他原因
  • 如果是邮件服务器的问题,我们不能再帮你了:)
【解决方案2】:

所以.. 问题不在于 symfony2 配置。问题是:

  • 邮箱配置为在 VPN 内工作(来自域/组中的计算机)
  • 我试图从我的开发机器发送测试邮件(连接到 VPN 时...但我的计算机不在域/组中)

这也是为什么telnet EXC.acme.local 25 不起作用,而telnet 10.8.100.1 25 起作用的原因。

所以,当我尝试 telnet 时,然后我的开发机器上的 EHLO.. 得到 250-AUTH NTLM,但是当我通过 SSH 连接到 prod 机器(位于域/组内)并从那里 telnet 时:

  • telnet EXC.acme.local 25 确实有效
  • EHLO EXC.acme.local 返回 AUTH LOGIN

一旦我发现了这一点,我就将我的更改上传到 prod 机器并从那里开始测试配置(使用 swiftmailer.transport: smtp)并且它成功了!

【讨论】:

    猜你喜欢
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多