我试图使用AUTH类型的NTLM访问SMTP服务器。
我使用nodemailer和nodemailer传输:
var config = require('./config.json');
var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');
var transporter = nodemailer.createTransport(smtpTransport({
host : config.mailer.host,
port: config.mailer.port,
auth: {
user: config.mailer.username,
pass: config.mailer.password
},
authMethod: 'PLAIN'
}));
但不起作用。我得到的错误是:
{ [Error: Invalid login: 504 5.7.4 Unrecognized authentication type]
code: 'EAUTH',
response: '504 5.7.4 Unrecognized authentication type',
responseCode: 504 }
这是有道理的,因为如果我将网络传输到SMTP服务器中
ehlo server.domain.net
250-server.domin.net Hello [10.100.10.100]
250-SIZE
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-X-ANONYMOUSTLS
250-AUTH NTLM
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250-XEXCH50
250 XRDST
然后进入
AUTH PLAIN
我得到了
504 5.7.4 Unrecognized authentication type
但在节点内部,如果我将authMethod更改为“NTLM”,则会得到一个错误,即
{ [Error: Unknown authentication method "NTLM"] code: 'EAUTH' }
我怀疑nodemailer不支持NTLM。如果是这样的话,如何连接到需要NTLM身份验证类型的SMTP服务器?
谢谢
发布于 2016-04-22 14:52:24
我的公司几天前也遇到了同样的问题。我们所考虑的选择是:
不幸的是,我们在简单的选项(1)和(2)上遇到了政治问题,因此不得不分叉新手。
我还没有发送拉请求,但叉子是这里。目前,最简单的使用方法是通过npm直接引用包json中的github项目,例如:
"dependences": {
"nodemailer": "steveliles/nodemailer"
}
如果您感兴趣,大多数更改实际上是在一个子项目(smtp-连接)中进行的,而揭发者、nodemailer-smtp池和nodemailer-smtp-传输的分叉只需要将我的smtp连接叉拿起来。
我们不需要实现NTLM协议,因为SamDecrock的httpntlm已经做了艰苦的工作。
它只在TLS (使用STARTTLS)上的Exchange 2007上进行了测试,而没有域或工作站。
如果您确实需要在凭据中使用域+工作站,只需将它们添加到nodemailer的options.auth
中,它们就会被传递。
var smtpConfig = {
host: 'ntlm.boo.hoo',
port: 25,
auth: {
domain: 'windows-domain',
workstation: 'windows-workstation',
user: 'user@somedomain.com',
pass: 'pass'
}
};
更不幸的是,我们连接到的交换服务器没有有效的SSL证书,但幸运的是nodemailer可以通过在选项中设置tls: {rejectUnauthorized: false}
来处理这个问题。
发布于 2019-06-28 08:23:16
在6.x.x版本中,您可以使用自定义auth:https://github.com/nodemailer/nodemailer-ntlm-auth
发布于 2019-09-13 17:09:25
如果这是一个内部/服务类型的应用程序,并且您的服务器管理员不介意,您可以要求它们未经授权创建一个主机,只需清除
auth: {
user: '-----------',
pass: '-----------'
}
因为我只是创建一个服务类型的应用程序,只是为了发送电子邮件的时间表,我的服务器管理员允许我这样做。
为我工作,但我相信这个解决方案并不适合每一个人!
https://stackoverflow.com/questions/36589321
复制相似问题