Skip to content

Commit 972ecfa

Browse files
committed
remote mail support
1 parent d08ee4b commit 972ecfa

33 files changed

+289
-272
lines changed

bin/v-add-mail-account

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,10 @@ else
5353
md5=$(/usr/sbin/dovecotpw -s md5 -p "$password")
5454
fi
5555

56-
str="$account:$md5:$user:mail::$HOMEDIR/$user:$quota"
57-
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd
56+
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
57+
str="$account:$md5:$user:mail::$HOMEDIR/$user:$quota"
58+
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd
59+
fi
5860

5961

6062
#----------------------------------------------------------#

bin/v-add-mail-account-alias

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,10 @@ is_mail_new "$malias"
4444
#----------------------------------------------------------#
4545

4646
# Adding exim alias
47-
str="$malias@$domain:$account@$domain"
48-
echo "$str" >> $HOMEDIR/$user/conf/mail/$domain/aliases
47+
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
48+
str="$malias@$domain:$account@$domain"
49+
echo "$str" >> $HOMEDIR/$user/conf/mail/$domain/aliases
50+
fi
4951

5052

5153
#----------------------------------------------------------#

bin/v-add-mail-account-autoreply

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,25 +42,21 @@ is_object_unsuspended "mail/$domain" 'ACCOUNT' "$account"
4242
#----------------------------------------------------------#
4343
# Action #
4444
#----------------------------------------------------------#
45-
# Add exim autoreply
46-
echo -e "$autoreply" > $HOMEDIR/$user/conf/mail/$domain/autoreply.$account.msg
4745

48-
# Set ownership and permissions
49-
if [ "$MAIL_SYSTEM" = 'exim' ]; then
50-
mail_user=exim
46+
# Adding exim autoreply
47+
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
48+
msg="$HOMEDIR/$user/conf/mail/$domain/autoreply.$account.msg"
49+
echo -e "$autoreply" > $msg
50+
chown $MAIL_USER:mail $msg
51+
chmod 660 $msg
5152
fi
52-
if [ "$MAIL_SYSTEM" = 'exim4' ]; then
53-
mail_user=Debian-exim
54-
fi
55-
chown $mail_user:mail $HOMEDIR/$user/conf/mail/$domain/autoreply.$account.msg
56-
chmod 660 $HOMEDIR/$user/conf/mail/$domain/autoreply.$account.msg
5753

5854

5955
#----------------------------------------------------------#
6056
# Vesta #
6157
#----------------------------------------------------------#
6258

63-
# Adding vesta alias
59+
# Adding autoreply message
6460
echo -e "$autoreply" > $USER_DATA/mail/$account@$domain.msg
6561
chmod 660 $USER_DATA/mail/$account@$domain.msg
6662
update_object_value "mail/$domain" 'ACCOUNT' "$account" '$AUTOREPLY' 'yes'

bin/v-add-mail-account-forward

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,18 @@ fi
4848
# Action #
4949
#----------------------------------------------------------#
5050

51-
# Adding forward to exim
51+
# Define fwd string
5252
if [ -z "$fwd" ]; then
5353
fwd="$forward"
5454
else
5555
fwd="$fwd,$forward"
5656
fi
5757

58-
sed -i "/^$account@$domain:/ d" $HOMEDIR/$user/conf/mail/$domain/aliases
59-
echo "$account@$domain:$fwd" >> $HOMEDIR/$user/conf/mail/$domain/aliases
58+
# Adding forward to exim
59+
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
60+
sed -i "/^$account@$domain:/ d" $HOMEDIR/$user/conf/mail/$domain/aliases
61+
echo "$account@$domain:$fwd" >> $HOMEDIR/$user/conf/mail/$domain/aliases
62+
fi
6063

6164

6265
#----------------------------------------------------------#

bin/v-add-mail-account-fwd-only

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,11 @@ fi
4848
#----------------------------------------------------------#
4949

5050
# Adding account to fwd_only
51-
touch $HOMEDIR/$user/conf/mail/$domain/fwd_only
52-
check_fwd=$(grep "^$account$" $HOMEDIR/$user/conf/mail/$domain/fwd_only)
53-
if [ -z "$check_fwd" ]; then
51+
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
5452
echo "$account" > $HOMEDIR/$user/conf/mail/$domain/fwd_only
53+
chown -R $MAIL_USER:mail $HOMEDIR/$user/conf/mail/$domain/fwd_only
5554
fi
5655

57-
# Set ownership
58-
if [ "$MAIL_SYSTEM" = 'exim' ]; then
59-
mail_user=exim
60-
fi
61-
if [ "$MAIL_SYSTEM" = 'exim4' ]; then
62-
mail_user=Debian-exim
63-
fi
64-
chown -R $mail_user:mail $HOMEDIR/$user/conf/mail/$domain/fwd_only
65-
6656

6757
#----------------------------------------------------------#
6858
# Vesta #

bin/v-add-mail-domain

Lines changed: 51 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -43,35 +43,64 @@ is_package_full 'MAIL_DOMAINS'
4343
# Action #
4444
#----------------------------------------------------------#
4545

46-
# Adding domain directory and necessary files
47-
mkdir $HOMEDIR/$user/conf/mail/$domain
48-
mkdir $HOMEDIR/$user/mail/$domain_idn
49-
touch $HOMEDIR/$user/conf/mail/$domain/aliases
50-
touch $HOMEDIR/$user/conf/mail/$domain/passwd
51-
52-
# Adding symlink
53-
ln -s $HOMEDIR/$user/conf/mail/$domain /etc/$MAIL_SYSTEM/domains/$domain_idn
54-
55-
# Adding antispam protection
56-
if [ "$antispam" = 'yes' ]; then
57-
touch $HOMEDIR/$user/conf/mail/$domain/antispam
58-
fi
59-
60-
# Adding antivirus protection
61-
if [ "$antivirus" = 'yes' ]; then
62-
touch $HOMEDIR/$user/conf/mail/$domain/antivirus
63-
fi
46+
# Adding domain to mail.conf
47+
s="DOMAIN='$domain' ANTIVIRUS='$antivirus' ANTISPAM='$antispam' DKIM='$dkim'"
48+
s="$s ACCOUNTS='0' U_DISK='0' CATCHALL='' SUSPENDED='no' TIME='$TIME'"
49+
s="$s DATE='$DATE'"
50+
echo $s >> $USER_DATA/mail.conf
51+
touch $USER_DATA/mail/$domain.conf
6452

65-
# Adding dkim
53+
# Generating DKIM keys
6654
if [ "$dkim" = 'yes' ]; then
6755
openssl genrsa -out $USER_DATA/mail/$domain.pem $dkim_size &>/dev/null
6856
openssl rsa -pubout -in $USER_DATA/mail/$domain.pem \
6957
-out $USER_DATA/mail/$domain.pub &>/dev/null
70-
chmod 660 $USER_DATA/mail/$domain.*
58+
fi
59+
60+
# Set permissions
61+
chmod 660 $USER_DATA/mail/$domain.*
62+
chmod 660 $USER_DATA/mail.conf
63+
64+
# Building exim configs
65+
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
66+
mkdir $HOMEDIR/$user/conf/mail/$domain
67+
mkdir $HOMEDIR/$user/mail/$domain_idn
68+
touch $HOMEDIR/$user/conf/mail/$domain/aliases
69+
touch $HOMEDIR/$user/conf/mail/$domain/passwd
70+
touch $HOMEDIR/$user/conf/mail/$domain/fwd_only
71+
ln -s $HOMEDIR/$user/conf/mail/$domain \
72+
/etc/$MAIL_SYSTEM/domains/$domain_idn
73+
74+
# Adding antispam protection
75+
if [ "$antispam" = 'yes' ]; then
76+
touch $HOMEDIR/$user/conf/mail/$domain/antispam
77+
fi
78+
79+
# Adding antivirus protection
80+
if [ "$antivirus" = 'yes' ]; then
81+
touch $HOMEDIR/$user/conf/mail/$domain/antivirus
82+
fi
7183

72-
cp $USER_DATA/mail/$domain.pem $HOMEDIR/$user/conf/mail/$domain/dkim.pem
84+
# Adding dkim support
85+
if [ "$dkim" = 'yes' ]; then
86+
cp -f $USER_DATA/mail/$domain.pem \
87+
$HOMEDIR/$user/conf/mail/$domain/dkim.pem
88+
fi
89+
90+
# Set permission
91+
chmod 771 $HOMEDIR/$user/conf/mail/$domain
92+
chmod 660 $HOMEDIR/$user/conf/mail/$domain/*
93+
chmod 771 /etc/$MAIL_SYSTEM/domains/$domain_idn
94+
chmod 770 $HOMEDIR/$user/mail/$domain_idn
7395

74-
# Adding dkim dns records
96+
# Set ownership
97+
chown -R $MAIL_USER:mail $HOMEDIR/$user/conf/mail/$domain
98+
chown -R dovecot:mail $HOMEDIR/$user/conf/mail/$domain/passwd
99+
chown $user:mail $HOMEDIR/$user/mail/$domain_idn
100+
fi
101+
102+
# Adding dkim dns records
103+
if [ ! -z "$DNS_SYSTEM" ] && [ "$dkim" = 'yes' ]; then
75104
check_dns_domain=$(is_object_valid 'dns' 'DOMAIN' "$domain")
76105
if [ "$?" -eq 0 ]; then
77106
p=$(cat $USER_DATA/mail/$domain.pub|grep -v ' KEY---'|tr -d '\n')
@@ -85,34 +114,6 @@ if [ "$dkim" = 'yes' ]; then
85114
fi
86115
fi
87116

88-
# Adding domain to vesta db
89-
s="DOMAIN='$domain' ANTIVIRUS='$antivirus' ANTISPAM='$antispam' DKIM='$dkim'"
90-
s="$s ACCOUNTS='0' U_DISK='0' CATCHALL='' SUSPENDED='no' TIME='$TIME'"
91-
s="$s DATE='$DATE'"
92-
93-
# Set permissions
94-
chmod 660 $USER_DATA/mail/$domain.*
95-
chmod 771 $HOMEDIR/$user/conf/mail/$domain
96-
chmod 660 $HOMEDIR/$user/conf/mail/$domain/*
97-
chmod 771 /etc/$MAIL_SYSTEM/domains/$domain_idn
98-
chmod 770 $HOMEDIR/$user/mail/$domain_idn
99-
100-
# Set ownership
101-
if [ "$MAIL_SYSTEM" = 'exim' ]; then
102-
mail_user=exim
103-
fi
104-
if [ "$MAIL_SYSTEM" = 'exim4' ]; then
105-
mail_user=Debian-exim
106-
fi
107-
chown -R $mail_user:mail $HOMEDIR/$user/conf/mail/$domain
108-
chown -R dovecot:mail $HOMEDIR/$user/conf/mail/$domain/passwd
109-
chown $user:mail $HOMEDIR/$user/mail/$domain_idn
110-
111-
echo $s >> $USER_DATA/mail.conf
112-
touch $USER_DATA/mail/$domain.conf
113-
chmod 660 $USER_DATA/mail.conf
114-
chmod 660 $USER_DATA/mail/$domain.conf
115-
116117

117118
#----------------------------------------------------------#
118119
# Vesta #

bin/v-add-mail-domain-antispam

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ is_object_value_empty 'mail' 'DOMAIN' "$domain" '$ANTISPAM'
4040
#----------------------------------------------------------#
4141

4242
# Adding antispam flag
43-
touch $HOMEDIR/$user/conf/mail/$domain/antispam
43+
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
44+
touch $HOMEDIR/$user/conf/mail/$domain/antispam
45+
fi
4446

4547

4648
#----------------------------------------------------------#

bin/v-add-mail-domain-antivirus

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ is_object_value_empty 'mail' 'DOMAIN' "$domain" '$ANTIVIRUS'
4040
#----------------------------------------------------------#
4141

4242
# Adding antivirus flag
43-
touch $HOMEDIR/$user/conf/mail/$domain/antivirus
43+
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
44+
touch $HOMEDIR/$user/conf/mail/$domain/antivirus
45+
fi
4446

4547

4648
#----------------------------------------------------------#

bin/v-add-mail-domain-catchall

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,10 @@ is_object_value_empty 'mail' 'DOMAIN' "$domain" '$CATCHALL'
4141
#----------------------------------------------------------#
4242

4343
# Adding catchall alias
44-
sed -i "/*@$domain:/d" $HOMEDIR/$user/conf/mail/$domain/aliases
45-
echo "*@$domain:$email" >> $HOMEDIR/$user/conf/mail/$domain/aliases
44+
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
45+
sed -i "/*@$domain:/d" $HOMEDIR/$user/conf/mail/$domain/aliases
46+
echo "*@$domain:$email" >> $HOMEDIR/$user/conf/mail/$domain/aliases
47+
fi
4648

4749

4850
#----------------------------------------------------------#
@@ -52,7 +54,6 @@ echo "*@$domain:$email" >> $HOMEDIR/$user/conf/mail/$domain/aliases
5254
# Adding antispam in config
5355
update_object_value 'mail' 'DOMAIN' "$domain" '$CATCHALL' "$email"
5456

55-
5657
# Logging
5758
log_history "added $email as catchall email for $domain"
5859
log_event "$OK" "$EVENT"

bin/v-add-mail-domain-dkim

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,24 +46,16 @@ openssl rsa -pubout -in $USER_DATA/mail/$domain.pem \
4646
-out $USER_DATA/mail/$domain.pub &>/dev/null
4747
chmod 660 $USER_DATA/mail/$domain.*
4848

49-
# Define exim user
50-
if [ "$MAIL_SYSTEM" = 'exim' ]; then
51-
mail_user=exim
49+
# Adding dkim keys
50+
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
51+
cp $USER_DATA/mail/$domain.pem $HOMEDIR/$user/conf/mail/$domain/dkim.pem
52+
chown $MAIL_USER:mail $HOMEDIR/$user/conf/mail/$domain/dkim.pem
53+
chmod 660 $HOMEDIR/$user/conf/mail/$domain/dkim.pem
5254
fi
53-
if [ "$MAIL_SYSTEM" = 'exim4' ]; then
54-
mail_user=Debian-exim
55-
fi
56-
57-
# Adding dkim to config
58-
cp $USER_DATA/mail/$domain.pem $HOMEDIR/$user/conf/mail/$domain/dkim.pem
59-
chown $mail_user:mail $HOMEDIR/$user/conf/mail/$domain/dkim.pem
60-
chmod 660 $HOMEDIR/$user/conf/mail/$domain/dkim.pem
6155

62-
# Checking dns domain
63-
check_dns_domain=$(is_object_valid 'dns' 'DOMAIN' "$domain")
64-
if [ "$?" -eq 0 ]; then
65-
# Adding dkim dns records
66-
p=$(cat $USER_DATA/mail/$domain.pub|grep -v ' KEY---'|tr -d '\n')
56+
# Adding dns records
57+
if [ ! -z "$DNS_SYSTEM" ] && [ -e "$USER_DATA/dns/$domain.conf" ]; then
58+
p=$(cat $USER_DATA/mail/$domain.pub |grep -v ' KEY---' |tr -d '\n')
6759
record='_domainkey'
6860
policy="\"t=y; o=~;\""
6961
$BIN/v-add-dns-record $user $domain $record TXT "$policy"

0 commit comments

Comments
 (0)