Skip to content

Commit bd75b5e

Browse files
committed
- Added new v-script 'v-change-sys-ip-helo Ip Helo'
to be able to change HELO/SMTP Banner - Added ability to change HELO/SMTP Banner from add/edit ip screens - Added preliminary support for RHEL.
1 parent eff8c3c commit bd75b5e

File tree

17 files changed

+182
-68
lines changed

17 files changed

+182
-68
lines changed

bin/v-add-mail-domain

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -104,23 +104,6 @@ if [[ "$MAIL_SYSTEM" =~ exim ]]; then
104104
echo "$local_ip" > $HOMEDIR/$user/conf/mail/$domain/ip
105105
fi
106106

107-
# Touch mailhelo.conf if it doesnt exist
108-
if [ ! -f "/etc/exim4/mailhelo.conf" ]; then
109-
touch /etc/exim4/mailhelo.conf
110-
fi
111-
112-
# Setting HELO for mail domain
113-
if [ ! -z "$local_ip" ]; then
114-
IP_RDNS=$(is_ip_rdns_valid "$local_ip")
115-
if [ ! -z "$IP_RDNS" ]; then
116-
if [ $(grep -s "^${domain}:" /etc/exim4/mailhelo.conf) ]; then
117-
sed -i "/^${domain}:/c\\${domain}:${IP_RDNS}" /etc/exim4/mailhelo.conf
118-
else
119-
echo ${domain}:${IP_RDNS} >> /etc/exim4/mailhelo.conf
120-
fi
121-
fi
122-
fi
123-
124107
# Adding antispam protection
125108
if [ "$antispam" = 'yes' ]; then
126109
touch $HOMEDIR/$user/conf/mail/$domain/antispam

bin/v-add-sys-ip

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

3233
# Includes
3334
source $HESTIA/func/main.sh
@@ -40,7 +41,7 @@ source $HESTIA/conf/hestia.conf
4041
# Verifications #
4142
#----------------------------------------------------------#
4243

43-
check_args '2' "$#" 'IP NETMASK [INTERFACE] [USER] [STATUS] [NAME] [NATED_IP]'
44+
check_args '2' "$#" 'IP NETMASK [INTERFACE] [USER] [STATUS] [NAME] [NATED_IP] [HELO]'
4445
is_format_valid 'ip' 'netmask' 'interface' 'user' 'ip_status'
4546
is_ip_free
4647
is_object_valid 'user' 'USER' "$user"
@@ -112,6 +113,7 @@ U_WEB_DOMAINS='0'
112113
INTERFACE='$iface'
113114
NETMASK='$netmask'
114115
NAT='$nat_ip'
116+
HELO='$helo'
115117
TIME='$time'
116118
DATE='$date'" > $HESTIA/data/ips/$ip
117119
chmod 660 $HESTIA/data/ips/$ip
@@ -213,6 +215,11 @@ if [ ! -z "$FIREWALL_SYSTEM" ]; then
213215
$BIN/v-update-firewall
214216
fi
215217

218+
# Update ip helo for exim
219+
if [ ! -z "$MAIL_SYSTEM" ] && [ ! -z "$helo"]; then
220+
$BIN/v-change-sys-ip-helo $ip $helo
221+
fi
222+
216223
# Logging
217224
log_history "added system ip address $ip" '' 'admin'
218225
log_event "$OK" "$ARGUMENTS"

bin/v-change-sys-hostname

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ else
5151
echo "$domain" > /etc/hostname
5252
fi
5353

54+
# Update ip helo for exim
55+
if [ ! -z "$MAIL_SYSTEM" ]; then
56+
pub_ip=$(curl --ipv4 -s https://ip.hestiacp.com/)
57+
$BIN/v-change-sys-ip-helo $pub_ip $domain
58+
fi
5459

5560
#----------------------------------------------------------#
5661
# Hestia #

bin/v-change-sys-ip-helo

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#!/bin/bash
2+
# info: change ip HELO/SMTP Banner
3+
# options: IP HELO
4+
#
5+
# The function for changing HELO/SMTP Banner associated with ip.
6+
7+
8+
#----------------------------------------------------------#
9+
# Variable&Function #
10+
#----------------------------------------------------------#
11+
12+
# Argument definition
13+
ip=$1
14+
helo=$2
15+
16+
# Includes
17+
source $HESTIA/func/main.sh
18+
source $HESTIA/func/ip.sh
19+
source $HESTIA/conf/hestia.conf
20+
21+
# Check if mail system is installed
22+
if [ -z "$MAIL_SYSTEM" ]; then
23+
check_result "$E_NOTEXIST" "Mail system not installed"
24+
fi
25+
26+
#----------------------------------------------------------#
27+
# Verifications #
28+
#----------------------------------------------------------#
29+
30+
check_args '2' "$#" 'IP HELO'
31+
is_format_valid 'ip'
32+
is_format_valid 'helo'
33+
is_ip_valid "$ip"
34+
35+
# Perform verification if read-only mode is enabled
36+
check_hestia_demo_mode
37+
38+
39+
#----------------------------------------------------------#
40+
# Action #
41+
#----------------------------------------------------------#
42+
43+
# Change ip HELO/SMTP Banner
44+
update_ip_helo_value $ip $helo
45+
46+
#----------------------------------------------------------#
47+
# Hestia #
48+
#----------------------------------------------------------#
49+
50+
# Logging
51+
log_history "changed associated HELO/SMTP Banner on $ip to $helo" '' 'admin'
52+
log_event "$OK" "$ARGUMENTS"
53+
54+
exit

bin/v-delete-mail-domain

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,6 @@ rm -f $USER_DATA/mail/$domain.pem
8686
rm -f $USER_DATA/mail/$domain.pub
8787
rm -f $USER_DATA/mail/*@$domain.msg
8888

89-
# Unsetting HELO for mail domain
90-
sed -i "/^${domain}:/d" /etc/exim4/mailhelo.conf
91-
9289
# Decreasing domain value
9390
decrease_user_value "$user" '$U_MAIL_DOMAINS'
9491
if [ "$DKIM" = 'yes' ]; then

bin/v-list-sys-ip

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ json_list() {
3232
"INTERFACE": "'$INTERFACE'",
3333
"NETMASK": "'$NETMASK'",
3434
"NAT": "'$NAT'",
35+
"HELO": "'$HELO'",
3536
"TIME": "'$TIME'",
3637
"DATE": "'$DATE'"
3738
}'
@@ -49,22 +50,23 @@ shell_list() {
4950
echo "NAME: $NAME"
5051
echo "USERS: $U_SYS_USERS"
5152
echo "DOMAINS: $U_WEB_DOMAINS"
53+
echo "HELO: $HELO"
5254
echo "TIME: $TIME"
5355
echo "DATE: $DATE"
5456
}
5557

5658
# PLAIN list function
5759
plain_list() {
5860
echo -ne "$IP\t$OWNER\t$STATUS\t$NAME\t$U_SYS_USERS\t$U_WEB_DOMAINS\t"
59-
echo -e "$INTERFACE\t$NETMASK\t$NAT\t$TIME\t$DATE"
61+
echo -e "$INTERFACE\t$NETMASK\t$NAT\t$HELO\t$TIME\t$DATE"
6062
}
6163

6264
# CSV list function
6365
csv_list() {
6466
echo -n "IP,OWNER,STATUS,NAME,U_SYS_USERS,U_WEB_DOMAINS,INTERFACE"
65-
echo "NETMASK,NAT,TIME,DATE"
67+
echo "NETMASK,NAT,HELO,TIME,DATE"
6668
echo -n "$IP,$OWNER,$STATUS,$NAME,\"$U_SYS_USERS\",$U_WEB_DOMAINS,"
67-
echo "$INTERFACE, $NETMASK,$NAT,$TIME,$DATE"
69+
echo "$INTERFACE, $NETMASK,$NAT,$HELO,$TIME,$DATE"
6870
}
6971

7072

bin/v-list-sys-ips

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ json_list() {
3434
"INTERFACE": "'$INTERFACE'",
3535
"NETMASK": "'$NETMASK'",
3636
"NAT": "'$NAT'",
37+
"HELO": "'$HELO'",
3738
"TIME": "'$TIME'",
3839
"DATE": "'$DATE'"
3940
}'
@@ -49,14 +50,14 @@ json_list() {
4950

5051
# SHELL list function
5152
shell_list() {
52-
echo "IP MASK NAT STATUS WEB DATE"
53-
echo "-- ---- --- ------ --- ----"
53+
echo "IP MASK NAT HELO STATUS WEB DATE"
54+
echo "-- ---- --- ---- ------ --- ----"
5455
while read IP; do
5556
source $HESTIA/data/ips/$IP
5657
if [ -z "$NAT" ]; then
5758
NAT='no'
5859
fi
59-
echo "$IP $NETMASK $NAT $STATUS $U_WEB_DOMAINS $DATE"
60+
echo "$IP $NETMASK $NAT $HELO $STATUS $U_WEB_DOMAINS $DATE"
6061
done < <(ls $HESTIA/data/ips/)
6162
}
6263

@@ -65,18 +66,18 @@ plain_list() {
6566
while read IP; do
6667
source $HESTIA/data/ips/$IP
6768
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$TIME\t$DATE"
69+
echo -e "$INTERFACE\t$NETMASK\t$NAT\t$HELO\t$TIME\t$DATE"
6970
done < <(ls $HESTIA/data/ips/)
7071
}
7172

7273
# CSV list function
7374
csv_list() {
7475
echo -n "IP,OWNER,STATUS,NAME,U_SYS_USERS,U_WEB_DOMAINS,INTERFACE"
75-
echo "NETMASK,NAT,TIME,DATE"
76+
echo "NETMASK,NAT,HELO,TIME,DATE"
7677
while read IP; do
7778
source $HESTIA/data/ips/$IP
7879
echo -n "$IP,$OWNER,$STATUS,$NAME,\"$U_SYS_USERS\",$U_WEB_DOMAINS,"
79-
echo "$INTERFACE, $NETMASK,$NAT,$TIME,$DATE"
80+
echo "$INTERFACE, $NETMASK,$NAT,$HELO,$TIME,$DATE"
8081
done < <(ls $HESTIA/data/ips/)
8182
}
8283

bin/v-update-sys-ip

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,14 @@ if [ ! -e "$HESTIA/data/ips/$pub_ip" ]; then
125125
fi
126126
fi
127127

128+
# Update ip helo for exim
129+
if [ ! -z "$MAIL_SYSTEM" ]; then
130+
helo=$(is_ip_rdns_valid $pub_ip)
131+
132+
if [ ! -z "$helo" ]; then
133+
$BIN/v-change-sys-ip-helo $ip $helo
134+
fi
135+
fi
128136

129137
#----------------------------------------------------------#
130138
# Hestia #

func/ip.sh

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,35 @@ is_ip_rdns_valid() {
4343
return 1 # False
4444
}
4545

46+
# Update ip helo for exim
47+
update_ip_helo_value() {
48+
ip="$1"
49+
helo="$2"
50+
51+
# Create or update ip value
52+
if [ ! $(get_ip_value '$HELO') ]; then
53+
echo "HELO='$helo'" >> $HESTIA/data/ips/$ip
54+
else
55+
update_ip_value '$HELO' "$helo"
56+
fi
57+
58+
# Create mailhelo.conf file if doesn't exist
59+
if [ ! -e "/etc/${MAIL_SYSTEM}/mailhelo.conf" ]; then
60+
touch /etc/${MAIL_SYSTEM}/mailhelo.conf
61+
fi
62+
63+
#Create or update ip:helo pair in mailhelo.conf file
64+
if [ ! -z "$helo" ]; then
65+
if [ $(cat /etc/${MAIL_SYSTEM}/mailhelo.conf | grep "$ip") ]; then
66+
sed -i "/^$ip:/c $ip:$helo" /etc/${MAIL_SYSTEM}/mailhelo.conf
67+
else
68+
echo $ip:$helo >> /etc/${MAIL_SYSTEM}/mailhelo.conf
69+
fi
70+
else
71+
sed -i "/^$ip:/d" /etc/${MAIL_SYSTEM}/mailhelo.conf
72+
fi
73+
}
74+
4675
# Update ip address value
4776
update_ip_value() {
4877
key="$1"

func/rebuild.sh

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -531,16 +531,6 @@ rebuild_mail_domain_conf() {
531531
echo "$local_ip" > $HOMEDIR/$user/conf/mail/$domain/ip
532532
fi
533533

534-
535-
# Setting HELO for mail domain
536-
if [ ! -z "$local_ip" ]; then
537-
IP_RDNS=$(is_ip_rdns_valid "$local_ip")
538-
sed -i "/^${domain}:/d" /etc/exim4/mailhelo.conf >/dev/null 2>&1
539-
if [ ! -z "$IP_RDNS" ]; then
540-
echo ${domain}:${IP_RDNS} >> /etc/exim4/mailhelo.conf
541-
fi
542-
fi
543-
544534
# Adding antispam protection
545535
if [ "$ANTISPAM" = 'yes' ]; then
546536
touch $HOMEDIR/$user/conf/mail/$domain/antispam

0 commit comments

Comments
 (0)