fix(mail): migrate filesystem helpers to fsUtils, update DKIM and mail APIs, harden SMTP client, and bump dependencies

This commit is contained in:
2026-02-01 14:17:54 +00:00
parent dd4ac9fa3d
commit d54831765b
38 changed files with 3923 additions and 5335 deletions

View File

@@ -841,34 +841,29 @@ export class SmtpClient {
if (!this.options.dkim?.enabled || !this.options.dkim?.privateKey) {
return;
}
try {
logger.log('debug', `Signing email with DKIM for domain ${this.options.dkim.domain}`);
// Format email for DKIM signing
const { dkimSign } = plugins;
const emailContent = await this.getFormattedEmail(email);
// Sign email
const signOptions = {
domainName: this.options.dkim.domain,
keySelector: this.options.dkim.selector,
// Sign email with updated mailauth API
const signResult = await dkimSign(emailContent, {
signingDomain: this.options.dkim.domain,
selector: this.options.dkim.selector,
privateKey: this.options.dkim.privateKey,
headerFieldNames: this.options.dkim.headers || [
headerList: this.options.dkim.headers || [
'from', 'to', 'subject', 'date', 'message-id'
]
};
const signedEmail = await dkimSign(emailContent, signOptions);
// Replace headers in original email
const dkimHeader = signedEmail.substring(0, signedEmail.indexOf('\r\n\r\n')).split('\r\n')
.find(line => line.startsWith('DKIM-Signature: '));
if (dkimHeader) {
email.addHeader('DKIM-Signature', dkimHeader.substring('DKIM-Signature: '.length));
});
// Add DKIM-Signature header to email
if (signResult.signatures) {
email.addHeader('DKIM-Signature', signResult.signatures);
}
logger.log('debug', 'DKIM signature applied successfully');
} catch (error) {
logger.log('error', `Failed to apply DKIM signature: ${error.message}`);