#!/bin/sh . /etc/mailconfig exit_failure(){ mess=$1 code_exit=$2 echo "$mess"; exit "$code_exit"; } check_domain() { mail=$1 alias=$2 domain_mail=`echo $mail | awk -F '@' '{ print $2 }'` domain_alias=`echo $alias | awk -F '@' '{ print $2 }'` [[ "$domain_mail" = `hostname` && "$domain_alias" = `hostname` ]] || exit_failure "Bad domain" 1; grep -q "$mail" "$PASSWD_FILE" && true || exit_failure "Mail doesn't exist" 1; } check_mail_exist() { mail=$1 grep -q "$mail" "$PASSWD_FILE" && exit_failure " This e-mail address already exist" 2 || true } check_alias() { alias=$1 grep -q "$alias" "$ALIAS_FILE" && exit_failure "This e- mail address already exist in alias" 2 || true } check_app_mail() { alias=$1 grep -q "$alias" "$APP_MAIL" && exit_failure "Address already exist in app mail" 2 || true } add_alias() { print "$2":" $1" >> "$ALIAS_FILE" } check_alias_exist(){ alias_c="$1: $2" grep -q "$alias_c" "$ALIAS_FILE" && true || exit_failure "This alias doesn't exist" 3 } del_alias() { alias_line="$1: $2" egrep -v "$alias_line" "$ALIAS_FILE" > /tmp/alias.tmp mv /tmp/alias.tmp "$ALIAS_FILE" } usage(){ print "This program ask 3 arguments : \n" print "First is email with domain name of this host second is add or del for \n" print "add or delete an alias " print "\t$0 email-adresse del alias@`hostname`\n" print "Other example:\n\t $0 test@`hostname` add myalias@`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 if [ -z $3 ]; then usage exit 3; fi check_domain $1 $3 case $2 in "add") check_mail_exist $3 check_alias $3 check_app_mail $3 add_alias $1 $3 smtpctl update table virtuals ;; "del") check_alias_exist $3 $1 del_alias $3 $1 smtpctl update table virtuals ;; *) usage exit 4; ;; esac