#!/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