Created
March 20, 2022 17:22
-
-
Save Ara4Sh/a9b9aea6f4fcb10e2e32ef27b6a355d4 to your computer and use it in GitHub Desktop.
I used this script around 2015 I guess to manage easily the email accounts, just to archive it I paste it here, I dont know if it works or not
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#MailAdm - Manage you mailboxes easily | |
#Checking for Root Account | |
if [[ $EUID -ne 0 ]]; then | |
echo "Script can be executed only by root" | |
exit 1 | |
fi | |
add_user() { | |
if [[ -z $user ]];then | |
echo "Missing Username" | |
exit 1 | |
fi | |
check_user=$(cut -f 1 -d : /etc/passwd | grep "^$user$" ) | |
if [ ! -z "$check_user" ]; then | |
echo "User \"$user\" Exists" | |
exit 1 | |
fi | |
useradd $user -s $shell -m | |
mkdir /home/$user/conf /home/$user/mail | |
mkdir /home/$user/conf/keys | |
chmod 751 /home/$user/mail | |
chmod 755 /home/$user/conf | |
chmod a+x /home/$user | |
} | |
dkim_keys() { | |
cd /home/$user/conf/keys | |
openssl genrsa -out $user.pem 1024 | |
openssl rsa -pubout -in $user.pem -out $username.pub | |
} | |
set_dns() { | |
p=$(cat /home/$user/conf/keys/$user.pub | grep -v ' KEY---'|tr -d '\n') | |
echo " | |
Please Create Following Records in DNS server | |
1) _dmarc IN TXT \"v=DMARC1; p=none\" | |
2) @ IN TXT \"v=spf1 a mx ip4:$IP ?all\" | |
3) _domainkey IN TXT \"t=y; o=~;\" | |
4) mail._domainkey IN TXT \"v=DKIM1; k=rsa; p=$p\" | |
5) mail IN A $IP | |
6) smtp IN A $IP | |
7) imap IN A $IP | |
8) pop IN A $IP | |
9) @ IN MX 10 mail.$domain | |
" | |
} | |
prep_domain() { | |
mkdir /home/$user/conf/$domain | |
mkdir /home/$user/mail/$domain | |
touch /home/$user/conf/$domain/{aliases,passwd,fwd_only} | |
ln -s /home/$user/conf/$domain /etc/exim4/domains/$domain | |
cp /home/$user/conf/keys/$user.pem /home/$user/conf/$domain/dkim.pem | |
chmod 771 /home/$user/conf/$domain | |
chmod 660 /home/$user/conf/$domain/* | |
chmod 771 /etc/exim4/domains/$domain | |
chmod 770 /home/$user/mail/$domain | |
chown -R Debian-exim:mail /home/$user/conf/$domain | |
chown -R dovecot:mail /home/$user/conf/$domain/passwd | |
chown $user:mail /home/$user/mail/$domain | |
} | |
add_account() { | |
salt=$(</dev/urandom tr -dc A-Za-z0-9 | head -c10) | |
read -p "Please Enter your password: " password | |
md5="{MD5}$(perl -e 'print crypt('$password', '$salt'),"\n"')" | |
str="$account:$md5:$user:mail::/home/$user:0" | |
echo $str >> /home/$user/conf/$domain/passwd | |
} | |
add_mail_domain() { | |
if [ "$#" != 3 ]; then | |
error "Usage : ssc $1 USER DOMAIN" | |
fi | |
user=$2 | |
domain=$3 | |
add_user | |
dkim_keys | |
prep_domain | |
set_dns | |
} | |
add_mail_account() { | |
if [ "$#" != 4 ]; then | |
error "Usage : ssc $1 USER DOMAIN ACCOUNT" | |
fi | |
user=$2 | |
domain=$3 | |
account=$4 | |
add_account | |
} | |
action=$1 | |
case $action in | |
domain) | |
add_mail_domain $@ | |
;; | |
account) | |
add_mail_account $@ | |
;; | |
*) | |
echo "mailadm domain USER DOMAIN" | |
echo "mailadm account USER DOMAIN ACCOUNT" | |
exit 1 | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment