109 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
. /etc/mailconfig
 | 
						|
 | 
						|
exit_failure(){
 | 
						|
    mess=$1
 | 
						|
    code_exit=$2
 | 
						|
    echo "$mess";
 | 
						|
    exit "$code_exit";
 | 
						|
}
 | 
						|
 | 
						|
check_domain()
 | 
						|
{
 | 
						|
    mail=$1
 | 
						|
    domain=`echo $mail | awk -F '@' '{ print $2 }'`
 | 
						|
    [[ "$domain" =  `hostname` ]] || exit_failure "Bad domain " 1
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
check_alias()
 | 
						|
{
 | 
						|
    mail=$1
 | 
						|
    aliases=$(grep -v  "$mail"  $ALIAS_FILE)
 | 
						|
    echo "$aliases" |  grep -q "$mail"   &&  exit_failure "Address already exist in alias" 2 || true
 | 
						|
}
 | 
						|
 | 
						|
check_app_mail()
 | 
						|
{
 | 
						|
    alias=$1
 | 
						|
    grep -q "$alias" "$APP_MAIL"  &&  exit_failure "This e-mail address already exist in app mail" 2 || true
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
set_password()
 | 
						|
{
 | 
						|
    mail=$1
 | 
						|
    password=$2
 | 
						|
    cat $PASSWD_FILE | grep -w -v -e "$mail" > /tmp/passwd.tmp
 | 
						|
    print "$mail":`encrypt "$password"` >> /tmp/passwd.tmp
 | 
						|
    mv /tmp/passwd.tmp $PASSWD_FILE
 | 
						|
}
 | 
						|
 | 
						|
add_mailbox()
 | 
						|
{
 | 
						|
    mail=$1
 | 
						|
    cat $ALIAS_FILE | grep -w -v -e "$mail: vmail" > /tmp/virtuals.tmp
 | 
						|
    print "$1: vmail" >> /tmp/virtuals.tmp
 | 
						|
    mv /tmp/virtuals.tmp $ALIAS_FILE
 | 
						|
}
 | 
						|
 | 
						|
delete_mail_account()
 | 
						|
{
 | 
						|
    mail=$1
 | 
						|
    cat $PASSWD_FILE | grep -w -v -e "$mail" > /tmp/passwd.tmp
 | 
						|
    mv /tmp/passwd.tmp $PASSWD_FILE
 | 
						|
    cat $ALIAS_FILE | grep  -v  "$mail" >> /tmp/virtuals.tmp
 | 
						|
    mv /tmp/virtuals.tmp $ALIAS_FILE
 | 
						|
    # rm -fr repertoir mail.
 | 
						|
}
 | 
						|
 | 
						|
usage(){
 | 
						|
    print "This program ask 2 arguments : \n"
 | 
						|
    print "For add or change password of mail account :\: "
 | 
						|
    print "First is email with domain name of this host second is password \n:"
 | 
						|
    print "\t$0 email-adresse 'password'\n"
 | 
						|
    print "Example:\n\t $0 add example@`hostname` 'yourverysecurepassword' "
 | 
						|
 | 
						|
    print "For delete a mail account:\n"
 | 
						|
    print "$0 del test@`hostname`"
 | 
						|
 | 
						|
    print "This script require root privilèges"
 | 
						|
}
 | 
						|
 | 
						|
if [ `id -u` -ne 0 ]; then
 | 
						|
    usage
 | 
						|
    exit 4;
 | 
						|
fi
 | 
						|
 | 
						|
if [ -z "$1" ]; then
 | 
						|
    usage
 | 
						|
    exit 3;
 | 
						|
fi
 | 
						|
 | 
						|
if [ -z "$2" ]; then
 | 
						|
    usage
 | 
						|
    exit 3;
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
 | 
						|
case $1 in
 | 
						|
    "del")
 | 
						|
        check_domain "$2"
 | 
						|
        delete_mail_account "$2"
 | 
						|
        smtpctl update table passwd
 | 
						|
        smtpctl update table virtuals
 | 
						|
        ;;
 | 
						|
    *)
 | 
						|
        check_domain "$1"
 | 
						|
        check_alias "$1"
 | 
						|
        check_app_mail "$1"
 | 
						|
        set_password "$1" "$2"
 | 
						|
        add_mailbox "$1"
 | 
						|
        smtpctl update table passwd
 | 
						|
        smtpctl update table virtuals
 | 
						|
       ;;
 | 
						|
esac
 |