diff --git a/frontend/src/components/identities/AccountCreationForm.vue b/frontend/src/components/identities/AccountCreationForm.vue
index dcfcad41a..018ea2788 100644
--- a/frontend/src/components/identities/AccountCreationForm.vue
+++ b/frontend/src/components/identities/AccountCreationForm.vue
@@ -107,6 +107,11 @@ export default {
{
key: this.$gettext('Message sending limit'),
value: this.account.mailbox.message_limit
+ },
+ {
+ key: this.$gettext('Send only account'),
+ value: this.account.mailbox.is_send_only,
+ type: 'yesno'
}
]
},
diff --git a/frontend/src/components/identities/AccountForm.vue b/frontend/src/components/identities/AccountForm.vue
index 480b5bb72..260064f9c 100644
--- a/frontend/src/components/identities/AccountForm.vue
+++ b/frontend/src/components/identities/AccountForm.vue
@@ -88,6 +88,11 @@
Quota: {{ account.mailbox.quota }}
+
+ Send only
+ mdi-check-circle-outline
+ mdi-close-circle-outline
+
diff --git a/modoboa/admin/api/v1/serializers.py b/modoboa/admin/api/v1/serializers.py
index 545028bdf..c9d2ea9f3 100644
--- a/modoboa/admin/api/v1/serializers.py
+++ b/modoboa/admin/api/v1/serializers.py
@@ -156,7 +156,7 @@ class MailboxSerializer(serializers.ModelSerializer):
model = models.Mailbox
fields = (
"pk", "full_address", "use_domain_quota", "quota", "message_limit",
- "quota_usage"
+ "quota_usage", "is_send_only"
)
def get_quota_usage(self, mb) -> int:
diff --git a/modoboa/admin/forms/account.py b/modoboa/admin/forms/account.py
index fac6c1e32..d08d3fff4 100644
--- a/modoboa/admin/forms/account.py
+++ b/modoboa/admin/forms/account.py
@@ -249,6 +249,11 @@ class AccountFormMail(forms.Form, DynamicForm):
help_text=gettext_lazy(
"Number of messages this mailbox can send per day")
)
+ is_send_only = forms.BooleanField(
+ required=False,
+ help_text=gettext_lazy(
+ "Block IMAP connection and incoming mails for this mailbox")
+ )
aliases = lib_fields.UTF8AndEmptyUserEmailField(
label=gettext_lazy("Alias(es)"),
required=False,
@@ -296,6 +301,7 @@ class AccountFormMail(forms.Form, DynamicForm):
self.fields["quota"].initial = self.mb.quota
if self.mb.message_limit:
self.fields["message_limit"].initial = self.mb.message_limit
+ self.fields["is_send_only"].initial = self.mb.is_send_only
self.fields["create_alias_with_old_address"].initial = (
params["create_alias_on_mbox_rename"]
)
@@ -384,7 +390,8 @@ class AccountFormMail(forms.Form, DynamicForm):
self.mb = models.Mailbox(
address=self.locpart, domain=self.domain, user=account,
use_domain_quota=self.cleaned_data["quota_act"],
- message_limit=self.cleaned_data.get("message_limit")
+ message_limit=self.cleaned_data.get("message_limit"),
+ is_send_only=self.cleaned_data.get("is_send_only", False)
)
override_rules = (
user.is_superuser or
diff --git a/modoboa/admin/models/mailbox.py b/modoboa/admin/models/mailbox.py
index fd8d4bdc9..0cdf01e69 100644
--- a/modoboa/admin/models/mailbox.py
+++ b/modoboa/admin/models/mailbox.py
@@ -326,6 +326,8 @@ class Mailbox(mixins.MessageLimitMixin, AdminObject):
self.set_quota(values["quota"], override_rules)
if "message_limit" in values:
self.message_limit = values["message_limit"]
+ if "is_send_only" in values:
+ self.is_send_only = values["is_send_only"]
if newaddress:
self.rename(local_part, domain)
self.save()
diff --git a/modoboa/admin/templates/admin/mailform.html b/modoboa/admin/templates/admin/mailform.html
index 253214f7b..6d10646b7 100644
--- a/modoboa/admin/templates/admin/mailform.html
+++ b/modoboa/admin/templates/admin/mailform.html
@@ -6,5 +6,6 @@
{% endif %}
{% include "common/generic_field.html" with field=form.quota help_display_mode="tooltip" label_width="col-sm-4" activator=True activator_value=form.quota_act.value deactivate_if_empty=False activator_label=_("Use domain default value") activator_size="col-sm-5" %}
{% render_field form.message_limit %}
+{% render_field form.is_send_only %}
{% render_fields_group form "aliases" %}
{% render_fields_group form "senderaddress" %}