主机名/ IP与证书的altnames不匹配[Meteor JS Email]

时间:2017-07-19 14:38:19

标签: node.js meteor meteor-accounts

  

使用安装了email软件包的Meteor 1.5。

我已经尝试了smtpssmtps,两者都不适合我。有什么建议我为什么会遇到这个错误?

错误日志:

I20170719-19:56:59.430(5.5)? Exception while invoking method 'forgotPassword' Error: Hostname/IP doesn't match certificate's altnames: "Host: mail.xyz.com. is not in the cert's altnames: DNS:something.something.in, DNS:www.something.something.in"
I20170719-19:56:59.432(5.5)?     at Object.Future.wait (C:\Users\a\AppData\Local\.meteor\packages\meteor-tool\1.5.0\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\fibers\future.js:449:15)
I20170719-19:56:59.435(5.5)?     at Mail._syncSendMail (packages\meteor.js:213:24)
I20170719-19:56:59.437(5.5)?     at smtpSend (packages\email.js:110:13)
I20170719-19:56:59.443(5.5)?     at Object.Email.send (packages\email.js:168:5)
I20170719-19:56:59.447(5.5)?     at AccountsServer.Accounts.sendResetPasswordEmail (packages/accounts-password/password_server.js:614:9)
I20170719-19:56:59.451(5.5)?     at [object Object].Meteor.methods.forgotPassword (packages/accounts-password/password_server.js:546:12)
I20170719-19:56:59.461(5.5)?     at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1737:12)
I20170719-19:56:59.466(5.5)?     at packages/ddp-server/livedata_server.js:719:19
I20170719-19:56:59.468(5.5)?     at [object Object]._.extend.withValue (packages\meteor.js:1122:17)
I20170719-19:56:59.476(5.5)?     at packages/ddp-server/livedata_server.js:717:40
I20170719-19:56:59.478(5.5)?     - - - - -
I20170719-19:56:59.480(5.5)?     at Object.checkServerIdentity (tls.js:205:17)
I20170719-19:56:59.481(5.5)?     at TLSSocket.<anonymous> (_tls_wrap.js:1071:29)

I20170719-19:56:59.484(5.5)?     at emitNone (events.js:67:13)
I20170719-19:56:59.486(5.5)?     at TLSSocket.emit (events.js:166:7)
I20170719-19:56:59.487(5.5)?     at TLSSocket._init.ssl.onclienthello.ssl.oncertcb.TLSSocket._finishInit (_tls_wrap.js:623:8)
I20170719-19:56:59.494(5.5)?     at TLSWrap.ssl.onclienthello.ssl.oncertcb.ssl.onnewsession.ssl.onhandshakedone (_tls_wrap.js:453:38)

我的SMTP设置如下;

smtp = {
    username: 'info@xyz.com',
    password: 'info@2017',
    server:   'mail.xyz.com',
    port: 465,
    rejectUnauthorized : false
  }

process.env.MAIL_URL = 'smtps://' + encodeURIComponent(smtp.username) + ':' + encodeURIComponent(smtp.password) + '@' + encodeURIComponent(smtp.server) + ':' + smtp.port;

1 个答案:

答案 0 :(得分:4)

问题是,对于较新版本的Node(请参阅链接:Node.js Hostname/IP doesn't match certificate's altnames),域名正在测试中。

正确的“修复”是让服务器得到纠正,一个(有点危险的)修复是告诉Node拒绝Unauthorized,你试图这样做,但是源中的smtp对象被丢弃并且永远不会传递给流星。

尝试添加以下内容:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;

之后

process.env.MAIL_URL = 'smtps://' + ...

(注意:这个建议来源于:(Unable to verify leaf signature),但我已经测试过这可以解决问题)。