#!/bin/sh . /etc/mailconfig check_domain() { mail=$1 domain=`echo $mail | awk -F '@' '{ print $2 }'` if [ "$domain" != `hostname` ]; then echo "bad domain" exit 1 fi; } check_alias() { mail=$1 while read line; do alias=`echo $line | awk -F ':' '{ print $1 }'` isvmail=`echo $line | awk -F ':' '{ print $2 }'` if [ "$mail" = "$ALIAS_FILE" ] && [ "$isvmail" != " vmail" ]; then echo "Address already exist in alias!" exit 2; fi; done < $ALIAS_FILE } check_app_mail() { mail=$1 while read line; do if [ "$mail" == "$line" ]; then echo "Adress already exist" exit 2; fi; done < $APP_MAIL } change_password() { cat $PASSWD_FILE | grep -w -v -e "$1" > /tmp/passwd.tmp print "$1":`encrypt "$2"` >> /tmp/passwd.tmp mv /tmp/passwd.tmp $PASSWD_FILE } add_mailbox() { mailbox="$1"': vmail' egrep "$mailbox" "$ALIAS_FILE"; if [ "$?" -eq "1" ]; then print "$mailbox" >> $ALIAS_FILE fi } delete_mail_account() { mail_account=$1 cat $PASSWD_FILE | grep -w -v -e "$mail_account" > /tmp/passwd.tmp mv /tmp/passwd.tmp $PASSWD_FILE cat $ALIAS_FILE | grep -w -v -e "$mail_account" >> /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 test@`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" add_mailbox "$1" change_password "$1" "$2" smtpctl update table passwd smtpctl update table virtuals ;; esac