diff --git a/mail/rspamd/src/opnsense/mvc/app/controllers/OPNsense/Rspamd/forms/settings.xml b/mail/rspamd/src/opnsense/mvc/app/controllers/OPNsense/Rspamd/forms/settings.xml index 38f2c7e85..23ef414e7 100644 --- a/mail/rspamd/src/opnsense/mvc/app/controllers/OPNsense/Rspamd/forms/settings.xml +++ b/mail/rspamd/src/opnsense/mvc/app/controllers/OPNsense/Rspamd/forms/settings.xml @@ -20,9 +20,56 @@ select_multiple + true If an attached file has a suffix in this list, the mail will be rejected via a hard reject, which means that the server will be immeadiately informed about the policy violation. + + + rspamd.milter_headers.enabled + + checkbox + When this checkbox is enabled, you can add additional headers to your mails, which contain information about the scan results. + + + rspamd.milter_headers.enable_authentication_results + + checkbox + If this checkbox is enabled, a header about the authentication state will be added. + + + rspamd.milter_headers.enable_extended_spam_headers + + checkbox + If this checkbox is enabled, a header containing the findings of the scan is added. + + + rspamd.milter_headers.enable_spamd_bar + + checkbox + Add a header containing a visible indicator of the spam level. + + + rspamd.milter_headers.skip_local + + checkbox + This will skip adding headers for local IPs. If this is unchecked, headers will also be added anyway but if it is checked, the headers will not be added for local IPs. + + + rspamd.milter_headers.skip_authenticated + + checkbox + If the user is authenticated, the headers will not be added if this is enabled. If this is checked, your outgoing mails will very likely not leak information about the the scanner. + + + rspamd.milter_headers.extended_headers_rcpt + + select_multiple + + true + Enter a (partial) mail address, which should also receive extended headers. For example: user@example.com or @example.net. + + diff --git a/mail/rspamd/src/opnsense/mvc/app/models/OPNsense/Rspamd/RSpamd.xml b/mail/rspamd/src/opnsense/mvc/app/models/OPNsense/Rspamd/RSpamd.xml index f26b91dcd..5f3f6ec9a 100644 --- a/mail/rspamd/src/opnsense/mvc/app/models/OPNsense/Rspamd/RSpamd.xml +++ b/mail/rspamd/src/opnsense/mvc/app/models/OPNsense/Rspamd/RSpamd.xml @@ -13,6 +13,37 @@ + + + 0 + Y + + + 0 + Y + + + 0 + Y + + + 0 + Y + + + 0 + Y + + + 0 + Y + + + /[a-z0-9\.\-_@,]+/i + N + + + N diff --git a/mail/rspamd/src/opnsense/service/templates/OPNsense/Rspamd/+TARGETS b/mail/rspamd/src/opnsense/service/templates/OPNsense/Rspamd/+TARGETS index a4038e206..20ea9843e 100644 --- a/mail/rspamd/src/opnsense/service/templates/OPNsense/Rspamd/+TARGETS +++ b/mail/rspamd/src/opnsense/service/templates/OPNsense/Rspamd/+TARGETS @@ -10,6 +10,7 @@ surbl-whitelist.inc.local:/var/db/rspamd/surbl-whitelist.inc.local 2tld.inc.local:/var/db/rspamd/2tld.inc.local greylist.conf:/usr/local/etc/rspamd/local.d/greylist.conf phishing.conf:/usr/local/etc/rspamd/local.d/phishing.conf +milter_headers.conf:/usr/local/etc/rspamd/local.d/milter_headers.conf multimap.conf:/usr/local/etc/rspamd/local.d/multimap.conf mx_check.conf:/usr/local/etc/rspamd/local.d/mx_check.conf ratelimit.conf:/usr/local/etc/rspamd/local.d/ratelimit.conf diff --git a/mail/rspamd/src/opnsense/service/templates/OPNsense/Rspamd/milter_headers.conf b/mail/rspamd/src/opnsense/service/templates/OPNsense/Rspamd/milter_headers.conf new file mode 100644 index 000000000..acddb39e5 --- /dev/null +++ b/mail/rspamd/src/opnsense/service/templates/OPNsense/Rspamd/milter_headers.conf @@ -0,0 +1,28 @@ +{% if helpers.exists('OPNsense.Rspamd.milter_headers.enabled') and OPNsense.Rspamd.milter_headers.enabled == '1' %} +{% set usemodules = [] %} + +extended_spam_headers = {% if helpers.exists('OPNsense.Rspamd.milter_headers.enable_extended_spam_headers') and OPNsense.Rspamd.milter_headers.enable_extended_spam_headers == '1' %}true{% else %}false{% endif %}; +{% if helpers.exists('OPNsense.Rspamd.milter_headers.enable_authentication_results') and OPNsense.Rspamd.milter_headers.enable_authentication_results == '1' %} +{% do usemodules.append('authentication-results') %} +authenticated_headers = ["authentication-results"]; +{% endif %} + +{% if helpers.exists('OPNsense.Rspamd.milter_headers.enable_spamd_bar') and OPNsense.Rspamd.milter_headers.enable_spamd_bar == '1' %} +{% do usemodules.append('x-spamd-bar') %} +local_headers = ["x-spamd-bar"]; +{% endif %} + + +skip_local = {% if helpers.exists('OPNsense.Rspamd.milter_headers.skip_local') and OPNsense.Rspamd.milter_headers.skip_local == '1' %}true{% else %}false{% endif %}; + +skip_authenticated = {% if helpers.exists('OPNsense.Rspamd.milter_headers.skip_authenticated') and OPNsense.Rspamd.milter_headers.skip_authenticated == '1' %}true{% else %}false{% endif %}; + +{% if helpers.exists('OPNsense.Rspamd.milter_headers.extended_headers_rcpt') and OPNsense.Rspamd.milter_headers.extended_headers_rcpt != '' %} +extended_headers_rcpt = [{{ '"' + ( '", "'.join(OPNsense.Rspamd.milter_headers.extended_headers_rcpt.split(',') ) ) + '"' }}]; +{% endif %} + +{% if usemodules|length > 0 %} +use = [{{ '"' + ( '", "'.join(usemodules) ) + '"' }}]; +{% endif %} +{% endif %} +