sách gpt4 ai đã đi

node.js - 为什么 dns.resolveMx 失败并显示 "gmail.com"

In lại 作者:行者123 更新时间:2023-12-04 18:33:13 39 4
mua khóa gpt4 Nike

我正在尝试调试 node-sendmail包,更具体地说,我想了解使用 gmail.com 时遇到的错误主机域。该错误仅发生在我在 WSL2 下运行的 Ubuntu 20.04 上。
让我困惑的是resolveMx在 Windows(使用 gmail)上运行良好,并且在其他域(如 protonmail)上也可以在(wsl Ubuntu 和 Windows)上运行。
chạynslookuphoặc dig也适用于 wsl 上的 gmail 域,所以看起来它是 nodejs 下面使用的系统调用,它的行为不一致。
在两个操作系统中,我都使用相同的 nodejs 版本:14.15.4。
我正在使用的片段:

const dns = require('dns');
const util = require('util');


dns.resolveMx('gmail.com', (err, addresses) => {
if (err){
console.log(err); // going here, see error message below
return;
}
console.log(util.inspect(addresses));
});
给出以下错误,仅适用于 WSL2 上托管的 Ubuntu:
Error: queryMx ETIMEOUT gmail.com
at QueryReqWrap.onresolve [as oncomplete] (dns.js:203:19) {
errno: undefined,
code: 'ETIMEOUT',
syscall: 'queryMx',
hostname: 'gmail.com'
}
在 Windows 上,我得到了预期的结果:
[
{ exchange: 'alt1.gmail-smtp-in.l.google.com', priority: 10 },
{ exchange: 'gmail-smtp-in.l.google.com', priority: 5 },
{ exchange: 'alt4.gmail-smtp-in.l.google.com', priority: 40 },
{ exchange: 'alt3.gmail-smtp-in.l.google.com', priority: 30 },
{ exchange: 'alt2.gmail-smtp-in.l.google.com', priority: 20 }
]
更让我感到困惑的是,如果我将 gmail 更改为另一个提供商,例如 protonmail,mx 分辨率在 wsl 发行版和 Windows 上都有效。
làm mới
问题出现不一致,因为我得到 resolveMx有时也在wsl上工作。

1 Câu trả lời

万一有人发现这个问题,我有同样的问题,并且能够通过编辑文件 /etc/wsl.conf 来解决它。添加以下内容:

[network]
generateResolvConf = false
然后编辑文件 /etc/resolv.conf并像这样添加我的 DNS 服务器(替换为你的):
nameserver 1.2.3.4
在 wsl 重新启动后( wsl --shutdown 在 Windows 命令提示符或 PS 中)我没有再次遇到该问题。

关于node.js - 为什么 dns.resolveMx 失败并显示 "gmail.com",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65637723/

39 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com