Skip to content

Commit 58ed300

Browse files
cmstewjaapmarcus
andauthored
Add DNS based HELO to outgoing mail (hestiacp#2190)
* Add DNS based HELO to outgoing mail Co-authored-by: Jaap Marcus <9754650+jaapmarcus@users.noreply.github.com>
1 parent 5fe8a5e commit 58ed300

21 files changed

+38
-217
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ All notable changes to this project will be documented in this file.
55

66
## Features
77

8+
- Improve HELO based system and use RDNS lookup instead our old system
9+
810
### Bugfixes
911

1012
- Disable /reset/ endpoint when POLICY_SYSTEM_PASSWORD_RESET = no

bin/v-add-sys-ip

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22
# info: add system ip address
3-
# options: IP NETMASK [INTERFACE] [USER] [IP_STATUS] [IP_NAME] [NAT_IP] [HELO]
3+
# options: IP NETMASK [INTERFACE] [USER] [IP_STATUS] [IP_NAME] [NAT_IP]
44
# labels:
55
#
66
# example: v-add-sys-ip 216.239.32.21 255.255.255.0
@@ -28,7 +28,6 @@ user="${4-admin}"
2828
ip_status="${5-shared}"
2929
ip_name=$6
3030
nat_ip=$7
31-
helo=$8
3231

3332
# Includes
3433
# shellcheck source=/etc/hestiacp/hestia.conf
@@ -46,7 +45,7 @@ source_conf "$HESTIA/conf/hestia.conf"
4645
# Verifications #
4746
#----------------------------------------------------------#
4847

49-
check_args '2' "$#" 'IP NETMASK [INTERFACE] [USER] [STATUS] [NAME] [NATED_IP] [HELO]'
48+
check_args '2' "$#" 'IP NETMASK [INTERFACE] [USER] [STATUS] [NAME] [NATED_IP]'
5049
is_format_valid 'ip' 'netmask' 'iface' 'user' 'ip_status'
5150
is_ip_free
5251
is_object_valid 'user' 'USER' "$user"
@@ -57,9 +56,6 @@ fi
5756
if [ -n "$nat_ip" ] ; then
5857
is_format_valid 'nat_ip'
5958
fi
60-
if [ -n "$helo" ] ; then
61-
is_format_valid 'helo'
62-
fi
6359
if [ "$user" != "admin" ]; then
6460
ip_status="dedicated"
6561
fi
@@ -133,7 +129,6 @@ U_WEB_DOMAINS='0'
133129
INTERFACE='$iface'
134130
NETMASK='$netmask'
135131
NAT='$nat_ip'
136-
HELO='$helo'
137132
TIME='$time'
138133
DATE='$date'" > $HESTIA/data/ips/$ip
139134
chmod 660 $HESTIA/data/ips/$ip
@@ -235,11 +230,6 @@ if [ -n "$FIREWALL_SYSTEM" ]; then
235230
$BIN/v-update-firewall
236231
fi
237232

238-
# Update ip helo for exim
239-
if [ -n "$MAIL_SYSTEM" ] && [ -n "$helo" ]; then
240-
$BIN/v-change-sys-ip-helo "$ip" "$helo"
241-
fi
242-
243233
# Logging
244234
$BIN/v-log-action "system" "Info" "Network" "Added new IP address to the system (IP: $ip)."
245235
log_event "$OK" "$ARGUMENTS"

bin/v-change-sys-hostname

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
# Argument definition
1616
domain=$1
17-
helo=${2-yes}
1817

1918
# Includes
2019
# shellcheck source=/etc/hestiacp/hestia.conf
@@ -29,7 +28,7 @@ source_conf "$HESTIA/conf/hestia.conf"
2928
# Verifications #
3029
#----------------------------------------------------------#
3130

32-
check_args '1' "$#" 'HOSTNAME [HELO]'
31+
check_args '1' "$#" 'HOSTNAME'
3332
is_format_valid 'domain'
3433

3534
# Perform verification if read-only mode is enabled
@@ -64,12 +63,6 @@ else
6463
fi
6564
fi
6665

67-
# Update ip helo for exim
68-
if [[ -n "$MAIL_SYSTEM" && "$helo" == "yes" ]]; then
69-
pub_ip=$(curl --ipv4 -s https://ip.hestiacp.com/)
70-
$BIN/v-change-sys-ip-helo $pub_ip $domain
71-
fi
72-
7366
#----------------------------------------------------------#
7467
# Hestia #
7568
#----------------------------------------------------------#

bin/v-change-sys-ip-helo

Lines changed: 0 additions & 71 deletions
This file was deleted.

bin/v-delete-sys-ip

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,6 @@ if [ -n "$PROXY_SYSTEM" ]; then
128128
fi
129129
fi
130130

131-
if [ -n "$MAIL_SYSTEM" ]; then
132-
if [ -z "$NAT" ]; then
133-
delete_ip_helo_value "$ip"
134-
else
135-
delete_ip_helo_value "$NAT"
136-
fi
137-
fi
138-
139131
#----------------------------------------------------------#
140132
# Hestia #
141133
#----------------------------------------------------------#

bin/v-list-sys-ip

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ json_list() {
3939
"INTERFACE": "'$INTERFACE'",
4040
"NETMASK": "'$NETMASK'",
4141
"NAT": "'$NAT'",
42-
"HELO": "'$HELO'",
4342
"TIME": "'$TIME'",
4443
"DATE": "'$DATE'"
4544
}'
@@ -57,23 +56,22 @@ shell_list() {
5756
echo "NAME: $NAME"
5857
echo "USERS: $U_SYS_USERS"
5958
echo "DOMAINS: $U_WEB_DOMAINS"
60-
echo "HELO: $HELO"
6159
echo "TIME: $TIME"
6260
echo "DATE: $DATE"
6361
}
6462

6563
# PLAIN list function
6664
plain_list() {
6765
echo -ne "$IP\t$OWNER\t$STATUS\t$NAME\t$U_SYS_USERS\t$U_WEB_DOMAINS\t"
68-
echo -e "$INTERFACE\t$NETMASK\t$NAT\t$HELO\t$TIME\t$DATE"
66+
echo -e "$INTERFACE\t$NETMASK\t$NAT\t$TIME\t$DATE"
6967
}
7068

7169
# CSV list function
7270
csv_list() {
7371
echo -n "IP,OWNER,STATUS,NAME,U_SYS_USERS,U_WEB_DOMAINS,INTERFACE"
74-
echo "NETMASK,NAT,HELO,TIME,DATE"
72+
echo "NETMASK,NAT,TIME,DATE"
7573
echo -n "$IP,$OWNER,$STATUS,$NAME,\"$U_SYS_USERS\",$U_WEB_DOMAINS,"
76-
echo "$INTERFACE, $NETMASK,$NAT,$HELO,$TIME,$DATE"
74+
echo "$INTERFACE, $NETMASK,$NAT,$TIME,$DATE"
7775
}
7876

7977

bin/v-list-sys-ips

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ json_list() {
4141
"INTERFACE": "'$INTERFACE'",
4242
"NETMASK": "'$NETMASK'",
4343
"NAT": "'$NAT'",
44-
"HELO": "'$HELO'",
4544
"TIME": "'$TIME'",
4645
"DATE": "'$DATE'"
4746
}'
@@ -57,17 +56,14 @@ json_list() {
5756

5857
# SHELL list function
5958
shell_list() {
60-
echo "IP MASK NAT HELO STATUS WEB DATE"
61-
echo "-- ---- --- -------------------- ------ --- ----"
59+
echo "IP MASK NAT STATUS WEB DATE"
60+
echo "-- ---- --- ------ --- ----"
6261
while read IP; do
6362
source_conf "$HESTIA/data/ips/$IP"
6463
if [ -z "$NAT" ]; then
6564
NAT='no'
6665
fi
67-
if [ -z "$HELO" ]; then
68-
HELO='unset'
69-
fi
70-
echo "$IP $NETMASK $NAT $HELO $STATUS $U_WEB_DOMAINS $DATE"
66+
echo "$IP $NETMASK $NAT $STATUS $U_WEB_DOMAINS $DATE"
7167
done < <(ls $HESTIA/data/ips/)
7268
}
7369

@@ -76,18 +72,18 @@ plain_list() {
7672
while read IP; do
7773
source_conf "$HESTIA/data/ips/$IP"
7874
echo -ne "$IP\t$OWNER\t$STATUS\t$NAME\t$U_SYS_USERS\t$U_WEB_DOMAINS\t"
79-
echo -e "$INTERFACE\t$NETMASK\t$NAT\t$HELO\t$TIME\t$DATE"
75+
echo -e "$INTERFACE\t$NETMASK\t$NAT\t$TIME\t$DATE"
8076
done < <(ls $HESTIA/data/ips/)
8177
}
8278

8379
# CSV list function
8480
csv_list() {
8581
echo -n "IP,OWNER,STATUS,NAME,U_SYS_USERS,U_WEB_DOMAINS,INTERFACE"
86-
echo "NETMASK,NAT,HELO,TIME,DATE"
82+
echo "NETMASK,NAT,TIME,DATE"
8783
while read IP; do
8884
source_conf "$HESTIA/data/ips/$IP"
8985
echo -n "$IP,$OWNER,$STATUS,$NAME,\"$U_SYS_USERS\",$U_WEB_DOMAINS,"
90-
echo "$INTERFACE, $NETMASK,$NAT,$HELO,$TIME,$DATE"
86+
echo "$INTERFACE, $NETMASK,$NAT,$TIME,$DATE"
9187
done < <(ls $HESTIA/data/ips/)
9288
}
9389

bin/v-update-sys-ip

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -127,15 +127,6 @@ if [ ! -e "$HESTIA/data/ips/$pub_ip" ]; then
127127
fi
128128
fi
129129

130-
# Update ip helo for exim
131-
if [ -n "$MAIL_SYSTEM" ]; then
132-
helo=$(is_ip_rdns_valid "$pub_ip")
133-
134-
if [ -n "$helo" ]; then
135-
$BIN/v-change-sys-ip-helo "$ip" "$helo"
136-
fi
137-
fi
138-
139130
#----------------------------------------------------------#
140131
# Hestia #
141132
#----------------------------------------------------------#

func/ip.sh

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -44,42 +44,6 @@ is_ip_rdns_valid() {
4444
return 1 # False
4545
}
4646

47-
# Update ip helo for exim
48-
update_ip_helo_value() {
49-
ip="$1"
50-
helo="$2"
51-
natip="$1"
52-
53-
# In case the IP is an NAT use the real ip address
54-
if [ ! -e "$HESTIA/data/ips/$ip" ]; then
55-
ip=$(get_real_ip $ip);
56-
fi
57-
58-
# Create or update ip value
59-
update_ip_value_new 'HELO' "$helo"
60-
61-
# Create mailhelo.conf file if doesn't exist
62-
if [ ! -e "/etc/${MAIL_SYSTEM}/mailhelo.conf" ]; then
63-
touch /etc/${MAIL_SYSTEM}/mailhelo.conf
64-
fi
65-
66-
#Create or update ip:helo pair in mailhelo.conf file
67-
if [ -n "$helo" ]; then
68-
if [ $(cat /etc/${MAIL_SYSTEM}/mailhelo.conf | grep "$natip") ]; then
69-
sed -i "/^$natip:/c $natip:$helo" /etc/${MAIL_SYSTEM}/mailhelo.conf
70-
else
71-
echo $natip:$helo >> /etc/${MAIL_SYSTEM}/mailhelo.conf
72-
fi
73-
else
74-
sed -i "/^$natip:/d" /etc/${MAIL_SYSTEM}/mailhelo.conf
75-
fi
76-
}
77-
78-
delete_ip_helo_value (){
79-
ip=$1
80-
sed -i "/^$ip:/d" /etc/${MAIL_SYSTEM}/mailhelo.conf
81-
}
82-
8347
# Update ip address value
8448
update_ip_value() {
8549
key="$1"

func/main.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1110,7 +1110,6 @@ is_format_valid() {
11101110
ftp_password) is_password_format_valid "$arg" ;;
11111111
ftp_user) is_user_format_valid "$arg" "$arg_name" ;;
11121112
hash) is_hash_format_valid "$arg" "$arg_name" ;;
1113-
helo) is_domain_format_valid "$arg" "$arg_name" ;;
11141113
host) is_object_format_valid "$arg" "$arg_name" ;;
11151114
hour) is_cron_format_valid "$arg" $arg_name ;;
11161115
id) is_int_format_valid "$arg" 'id' ;;

0 commit comments

Comments
 (0)