2016-04-13 3 views
2

Я пытаюсь получить доступ к SMTP-серверу с типом NTLM типа AUTH.Доступ к SMTP-серверу с помощью AUTH NTLM из Node.js

Я использую nodemailer и nodemailer-Smtp-транспорт как таковой:

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 

Но внутри узла, если я изменю authMeth овое «NTLM», я получаю сообщение об ошибке:

{ [Error: Unknown authentication method "NTLM"] code: 'EAUTH' } 

Я подозревал, что nodemailer просто не поддерживает NTLM. Если это так, как мне подключиться к SMTP-серверу, для которого требуется тип проверки подлинности NTLM?

Thanks

+1

https://github.com/nodemailer/nodemailer/issues/314 - кажется, нам не повезло - последний комментарий на момент написания от сопровождающего говорит: «Я ничего не имею против NTLM как таковой. Я просто понятия не имею, как тестировать его, поскольку он, похоже, специфичен для Microsoft, и я ничего не знаю о системах на базе Windows » – Stevie

ответ

2

Моя компания столкнулась с той же проблемой несколько дней назад. Варианты мы Рассматривались:

  1. Задать админ обмена сервера, чтобы включить ОБЫЧНУЮ авторизацию под STARTTLS (это безопасно и, как представляется, включает только тиканье пары флажков)
  2. Настройку локального реле (например, постфикс) что реле на биржу, а также использовать реле постфиксного от nodemailer
  3. вилка nodemailer и добавить поддержку NTLM

к сожалению, мы попали политические вопросы на простых вариантах (1) и (2), так что пришлось раскошелиться nodemailer.

Я еще не отправил запрос на тяну, но вилка here. В настоящее время самый простой способ использовать это происходит через НПМ, ссылаясь непосредственно на проект GitHub в вашем пакете JSON, например:

"dependences": { 
    "nodemailer": "steveliles/nodemailer" 
} 

Если вы заинтересованы, большинство изменений было на самом деле в суб- подпроект (smtp-connection), а вилки nodemailer, nodemailer-smtp-pool и nodemailer-smtp-transport необходимы только для того, чтобы получить вилку для подключения smtp-соединения.

Нам не нужно было вводить NTLM protocol, так как SamDecrock's httpntlm уже сделал тяжелую работу.

Он был протестирован только с Exchange 2007 по протоколу TLS (с STARTTLS) и без домена или рабочей станции.

Если вам нужны домен + рабочая станция в учетных данных, просто добавьте их в nodemailer, и они будут переданы, например.

var smtpConfig = { 
    host: 'ntlm.boo.hoo', 
    port: 25, 
    auth: { 
     domain: 'windows-domain', 
     workstation: 'windows-workstation', 
     user: '[email protected]', 
     pass: 'pass' 
    } 
}; 

Мы были еще повезли в том, что сервер обмена мы подключение не имеет действительный сертификат SSL, но, к счастью nodemailer может справиться с этим, установив tls: {rejectUnauthorized: false} в настройках.

+0

Искажение запроса 46 уже слияние - похоже, поддержка NTLM будет доступна в основном проекте nodemailer довольно скоро - https://github.com/nodemailer/smtp-connection/pull/46 – Stevie

Смежные вопросы