Skip to content

Commit 6355922

Browse files
Make rate limit function more more resilient (hestiacp#2703)
* Make rate limit function more more resilient * Add update script * Change default value to no Co-authored-by: Raphael <rs@scit.ch>
1 parent 8ce19de commit 6355922

File tree

4 files changed

+10
-3
lines changed

4 files changed

+10
-3
lines changed

bin/v-add-mail-domain

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ antivirus=${4-yes}
1818
dkim=${5-yes}
1919
dkim_size=${6-1024}
2020
restart=${7-yes}
21-
reject=${8-yes}
21+
reject=${8-no}
2222

2323
# Includes
2424
# shellcheck source=/etc/hestiacp/hestia.conf

install/deb/exim/exim4.conf.4.94.template

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ acl_check_rcpt:
138138

139139
# Limit per email account for SMTP auhenticated users
140140
deny message = Email account $authenticated_id is sending too many emails - rate overlimit = $sender_rate / $sender_rate_period
141-
set acl_c_msg_limit = ${if exists{/etc/exim4/domains/${lookup{$sender_address_domain}dsearch{/etc/exim4/domains/}}/limits} {${extract{1}{:}{${lookup{$authenticated_id}lsearch{/etc/exim4/domains/${lookup{$sender_address_domain}dsearch{/etc/exim4/domains/}}/limits}}}}} {${readfile{/etc/exim4/limit.conf}}} }
141+
set acl_c_msg_limit = ${if exists{/etc/exim4/domains/${lookup{${domain:$authenticated_id}}dsearch{/etc/exim4/domains/}}/limits}{${lookup {$authenticated_id} lsearch{/etc/exim4/domains/${lookup{${domain:$authenticated_id}}dsearch{/etc/exim4/domains/}}/limits}{$value}{${readfile{/etc/exim4/limit.conf}}}}}{${readfile{/etc/exim4/limit.conf}}} }
142142
ratelimit = $acl_c_msg_limit / 1h / strict/ $authenticated_id
143143

144144
warn ratelimit = ${eval:$acl_c_msg_limit / 2} / 1h / strict / $authenticated_id

install/deb/exim/exim4.conf.template

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ acl_check_rcpt:
138138

139139
# Limit per email account for SMTP auhenticated users
140140
deny message = Email account $authenticated_id is sending too many emails - rate overlimit = $sender_rate / $sender_rate_period
141-
set acl_c_msg_limit = ${if exists{/etc/exim4/domains/${lookup{$sender_address_domain}dsearch{/etc/exim4/domains/}}/limits} {${extract{1}{:}{${lookup{$authenticated_id}lsearch{/etc/exim4/domains/${lookup{$sender_address_domain}dsearch{/etc/exim4/domains/}}/limits}}}}} {${readfile{/etc/exim4/limit.conf}}} }
141+
set acl_c_msg_limit = ${if exists{/etc/exim4/domains/${lookup{${domain:$authenticated_id}}dsearch{/etc/exim4/domains/}}/limits}{${lookup {$authenticated_id} lsearch{/etc/exim4/domains/${lookup{${domain:$authenticated_id}}dsearch{/etc/exim4/domains/}}/limits}{$value}{${readfile{/etc/exim4/limit.conf}}}}}{${readfile{/etc/exim4/limit.conf}}} }
142142
ratelimit = $acl_c_msg_limit / 1h / strict/ $authenticated_id
143143

144144
warn ratelimit = ${eval:$acl_c_msg_limit / 2} / 1h / strict / $authenticated_id

install/upgrade/versions/1.6.2.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ upgrade_config_set_value 'UPGRADE_UPDATE_MAIL_TEMPLATES' 'no'
2121
upgrade_config_set_value 'UPGRADE_REBUILD_USERS' 'no'
2222
upgrade_config_set_value 'UPGRADE_UPDATE_FILEMANAGER_CONFIG' 'false'
2323

24+
alc=$(cat exim4.conf.template | grep '${lookup{${domain:$authenticated_id}}dsearch{/etc/exim4/domains/}}/limits');
25+
if [ -z "$alc" ]; then
26+
sed -i 's| set acl_c_msg_limit|#string1\n#replaceme|' /etc/exim4/exim4.conf.template
27+
sed -i '/#replaceme/d' /etc/exim4/exim4.conf.template
28+
sed -i 's|#string1|set acl_c_msg_limit = \${if exists{/etc/exim4/domains/\${lookup{\${domain:\$authenticated_id}}dsearch{/etc/exim4/domains/}}/limits}{\${lookup {\$authenticated_id} lsearch{/etc/exim4/domains/\${lookup{${domain:\$authenticated_id}}dsearch{/etc/exim4/domains/}}/limits}{\$value}{\${readfile{/etc/exim4/limit.conf}}}}}{\${readfile{/etc/exim4/limit.conf}}} }|g' /etc/exim4/exim4.conf.template
29+
fi
30+
2431
system_filter=$(cat /etc/exim4/exim4.conf.template | grep 'system_filter');
2532
if [ -z "$system_filter" ]; then
2633
sed -i '/SMTP_RELAY_PASS = \${lookup{pass}lsearch{SMTP_RELAY_FILE}}/a #shouldberemoved\n# Custom Filter\nsystem_filter = \/etc\/exim4\/system.filter\nsystem_filter_user = Debian-exim' /etc/exim4/exim4.conf.template

0 commit comments

Comments
 (0)