From 5c354db1b2f0fc4b704a7e650a6ef1469d677bdb Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Tue, 11 Mar 2025 12:50:05 +0100 Subject: [PATCH] Implement mailfrom/masquerading setting --- dashboard/src/models/MailModel.js | 11 +++++++++++ dashboard/src/views/EmailDomainView.vue | 15 ++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/dashboard/src/models/MailModel.js b/dashboard/src/models/MailModel.js index cef785054..1cce295b0 100644 --- a/dashboard/src/models/MailModel.js +++ b/dashboard/src/models/MailModel.js @@ -72,6 +72,17 @@ function create() { if (result.status !== 202) return [result]; return [null]; }, + async setMailFromValidation(domain, enabled) { + let result; + try { + result = await fetcher.post(`${API_ORIGIN}/api/v1/mail/${domain}/mail_from_validation`, { enabled }, { access_token: accessToken }); + } catch (e) { + return [e]; + } + + if (result.status !== 202) return [result]; + return [null]; + }, async setEnabled(domain, enabled) { let result; try { diff --git a/dashboard/src/views/EmailDomainView.vue b/dashboard/src/views/EmailDomainView.vue index 4ad90d5b8..10e487dee 100644 --- a/dashboard/src/views/EmailDomainView.vue +++ b/dashboard/src/views/EmailDomainView.vue @@ -79,7 +79,20 @@ async function onEnableIncoming() { const mailFromValidation = ref(false); +const mailFromValidationBusy = ref(false); +async function onToggleMailFromValidation(value) { + mailFromValidationBusy.value = true; + + const [error] = await mailModel.setMailFromValidation(domain.value, value); + if (error) { + mailFromValidation.value = !value; + mailFromValidationBusy.value = false; + return console.error(error); + } + + mailFromValidationBusy.value = false; +} async function refreshMailConfig() { @@ -148,7 +161,7 @@ onMounted(async () => {
- +