nodemalerはLinuxサーバー上でdnsはドメイン名を解析できません.
1599 ワード
エラーは以下の通りです
{Errer:queryA ETIMEOUT smatp.qq.com at Query ReqWrap.onresolive[as oncompplete](dns.js:201:19)errno:''ETIMEOUT',code:'ENS',sysscall:'queryA',hostname:'smart.q.com',common:'CONN'はドメイン名を解析しますか?
dns.lookupを使ってドメイン名の解析を行うことによって、正常に解析できることが分かりました.
追跡コードでnode_を発見しました.modules/nodemail/lib/shared/index.jsファイルでは、メール送信に使用するdnsを呼び出して解析します.
{Errer:queryA ETIMEOUT smatp.qq.com at Query ReqWrap.onresolive[as oncompplete](dns.js:201:19)errno:''ETIMEOUT',code:'ENS',sysscall:'queryA',hostname:'smart.q.com',common:'CONN'はドメイン名を解析しますか?
dns.lookupを使ってドメイン名の解析を行うことによって、正常に解析できることが分かりました.
追跡コードでnode_を発見しました.modules/nodemail/lib/shared/index.jsファイルでは、メール送信に使用するdnsを呼び出して解析します.
dns['resolve' + family](hostname, (err, addresses) => {
if (err) {
switch (err.code) {
case dns.NODATA:
case dns.NOTFOUND:
case dns.NOTIMP:
case dns.SERVFAIL:
case dns.CONNREFUSED:
case 'EAI_AGAIN':
return callback(null, []);
}
return callback(err);
}
return callback(null, Array.isArray(addresses) ? addresses : [].concat(addresses || []));
});
使用していないlookupが見られます.サーバーに配備されているので、ここでは解析できませんでしたが、現地では解析できます.lookupメソッドを使って必ず解析できるということを常にテストしていますので、このコードを下記のように修正します.dns.lookup(hostname, (err, addresses, family) => {
if (err) {
switch (err.code) {
case dns.NODATA:
case dns.NOTFOUND:
case dns.NOTIMP:
case dns.SERVFAIL:
case dns.CONNREFUSED:
case 'EAI_AGAIN':
return callback(null, []);
}
return callback(err);
}
return callback(null,Array.isArray(addresses) ? addresses : [].concat(addresses || []));
});
修正が完了したら、再起動が有効になります.