From 4ca9725cc34bd65309fe704a277d9a414b47ef9a Mon Sep 17 00:00:00 2001 From: Codex Date: Sun, 12 Jul 2026 12:21:27 -0700 Subject: [PATCH] =?UTF-8?q?ZL-006-20260713=20=C2=B7=20Gatekeeper=20SMTP=20?= =?UTF-8?q?=E4=BB=8E=E6=9C=8D=E5=8A=A1=E5=99=A8=E7=99=BD=E5=90=8D=E5=8D=95?= =?UTF-8?q?=E6=81=A2=E5=A4=8D=E5=8F=91=E4=BB=B6=E8=BA=AB=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zero-point/core-channel/gatekeeper/engine-v3.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/zero-point/core-channel/gatekeeper/engine-v3.js b/zero-point/core-channel/gatekeeper/engine-v3.js index 46fdb54..0e5e6b4 100644 --- a/zero-point/core-channel/gatekeeper/engine-v3.js +++ b/zero-point/core-channel/gatekeeper/engine-v3.js @@ -294,8 +294,10 @@ function checkWhitelist(sourceServer, personalityId) { // ═══════════════════════════════════════ function sendVerificationEmail(code, opType, callerName, callerPid, cmdPreview, targetEmail, targetName, serverIp) { return new Promise((resolve) => { - if (!SMTP.pass) { - log('WARN', 'email_skip', 'SMTP 授权码未配置'); + const sovereign = loadWhitelist().triads.find(t => t.human === 'ICE-GL∞' && t.email); + const smtpUser = SMTP.user || (sovereign && sovereign.email) || ''; + if (!SMTP.pass || !smtpUser) { + log('WARN', 'email_skip', 'SMTP 发件账号或授权码未配置'); resolve(false); return; } @@ -360,7 +362,7 @@ ICE-GL∞ 光湖语言系统 · 小湖灯自动发送 国作登字-2026-A-00037559`; const rawEmail = - `From: 光湖小湖灯 <${SMTP.user}>\r\n` + + `From: 光湖小湖灯 <${smtpUser}>\r\n` + `To: ${targetName} <${targetEmail}>\r\n` + `Subject: =?UTF-8?B?${Buffer.from(`${opInfo.icon} Gatekeeper授权 · ${callerName} · ${opInfo.label}`, 'utf-8').toString('base64')}?=\r\n` + `MIME-Version: 1.0\r\n` + @@ -379,7 +381,7 @@ ICE-GL∞ 光湖语言系统 · 小湖灯自动发送 `--${boundary}--\r\n` + `.\r\n`; - const authPlain = `\0${SMTP.user}\0${SMTP.pass}`; + const authPlain = `\0${smtpUser}\0${SMTP.pass}`; const socket = tls.connect({ host: SMTP.host, port: SMTP.port, rejectUnauthorized: false }, () => { let stage = 0; @@ -400,7 +402,7 @@ ICE-GL∞ 光湖语言系统 · 小湖灯自动发送 } else if (stage === 1) { if (isLast && code === 250) { stage = 2; socket.write('AUTH PLAIN ' + Buffer.from(authPlain).toString('base64') + '\r\n'); } } else if (stage === 2) { - if (code === 235) { stage = 3; socket.write('MAIL FROM:<' + SMTP.user + '>\r\n'); } + if (code === 235) { stage = 3; socket.write('MAIL FROM:<' + smtpUser + '>\r\n'); } else if (code >= 500) { log('WARN', 'smtp_auth_failed', line); socket.end(); resolve(false); return; } } else if (stage === 3) { if (code === 250) { stage = 4; socket.write('RCPT TO:<' + targetEmail + '>\r\n'); }