Go.sh

From Virtual postfix admin

Jump to: navigation, search

Go.sh script

This script will make for the integration with postfix and it will generate all the files needed by postfix to work

Also, it will generate your config.inc (config file for V.A.P.E.S)
This script comes without warranty of any kind! I do not issue any guarantee that this will work for you!

You should test the script before use it in a real enviroment.
Don't forget to chmod +x go.sh 
#!/bin/sh
OUTPUT="login/config.inc"
SQL="sql/virtual_mail.sql"
NAME="virtual_admin"
ROOT_UID=0
VDIR_UID=1000
VDIR_GID=1000
if [ "$UID" -ne "$ROOT_UID" ]
then
echo "Must be root to run this script."
exit $E_NOTROOT
fi
if [ ! -x /usr/local/pgsql/bin/psql ]; then
echo "No pgsql installed!";
exit 0;
fi;


if [ ! -x /usr/local/pgsql/bin/createdb ]; then
echo "No pgsql installed!";
exit 0;
fi;


echo -n "db_host=" ; read DB_HOST 
echo -n "db_name($NAME recommended)=" ; read DB_NAME
echo -n "db_user=" ; read DB_USER
echo -n "db_passwd=" ; read DB_PASSWD
WWW="$( strings `whereis httpd | awk -F: '{ print $2 }' | awk '{ print $1 }'` | grep HTTPD_ROOT | awk -F\" '{ print $2 }' )"
WWW="$WWW/htdocs"
echo -n "www_path(recommended $WWW)=";read WWW_PATH_USER
if [ -f $OUTPUT ] ; then mv $OUTPUT "$OUTPUT.bck" ; fi
echo "<?php" > $OUTPUT
echo "\$db_host=\"${DB_HOST}\";" >> $OUTPUT
echo "\$db_name=\"${DB_NAME}\";" >> $OUTPUT
echo "\$db_user=\"${DB_USER}\";" >> $OUTPUT
echo "\$db_passwd=\"${DB_PASSWD}\";" >> $OUTPUT
echo "define('VIRTUAL_INSTALLED', true);" >>$OUTPUT
echo "define('VIRTUAL_IN',true);" >>$OUTPUT
echo "?>" >>$OUTPUT
echo "creating database $DB_NAME on host $DB_HOST"
createdb -O $DB_USER $DB_NAME -h $DB_HOST
echo "importing sql file into database"
psql -U $DB_USER -d $DB_NAME -h $DB_HOST -f $SQL --quiet
echo "creating  www dirs in $WWW_PATH_USER/$DB_NAME"
mkdir $WWW_PATH_USER/$NAME
cp -Rf * $WWW_PATH_USER/$NAME
echo "Do you want to configure postfix server?Type \"yes\" "
while [ "$AGREE" = "" ];  do
read AGREE
done
if [ "$AGREE" != "yes" ]; then
unset OUTPUT DB_HOST DB_NAME DB_USER DB_PASSWD WWW WWW_PATH_USER NAME SQL OUTPUT POSTFIX_PATH
exit 1
fi
echo -n "postifx path(/etc/postfix)=" ; read POSTFIX_PATH
echo "Adding some lines in main.cf file"
if [ ! -e $POSTFIX_PATH/main.cf ] ; then
echo "No main.cf file here"
unset OUTPUT DB_HOST DB_NAME DB_USER DB_PASSWD WWW WWW_PATH_USER NAME SQL OUTPUT POSTFIX_PATH
exit 1
fi 
   
if [ -f $POSTFIX_PATH/main.cf ] ; then cp $POSTFIX_PATH/main.cf "$POSTFIX_PATH/main.cf_bck" ; fi
echo "#Added by v.a.p.e.s"
echo "virtual_mailbox_domains = proxy:pgsql:$POSTFIX_PATH/virtual-domains_sql" >>$POSTFIX_PATH/main.cf
echo "virtual_mailbox_base = /var/spool/mail/virtual" >>$POSTFIX_PATH/main.cf
echo "virtual_mailbox_maps = pgsql:$POSTFIX_PATH/virtual_mailbox_sql" >>$POSTFIX_PATH/main.cf
echo "virtual_uid_maps = pgsql:$POSTFIX_PATH/virtual_uid_sql" >>$POSTFIX_PATH/main.cf
echo "virtual_gid_maps = pgsql:$POSTFIX_PATH/virtual_gid_sql" >>$POSTFIX_PATH/main.cf
echo "virtual_alias_maps = proxy:pgsql:$POSTFIX_PATH/virtual_sql" >>$POSTFIX_PATH/main.cf
echo "#end here"
echo "Creating /var/spool/mail/virtual with uid and gid 1000"
mkdir /var/spool/mail/virtual
chown -R $VDIR_UID:$VDIR_GID  /var/spool/mail/virtual
echo "...Ok"
echo "Creating virtual-domains_sql file"
echo "hosts = ${DB_HOST}" > $POSTFIX_PATH/virtual-domains_sql
echo "user = ${DB_USER}" >> $POSTFIX_PATH/virtual-domains_sql
echo "password = ${DB_PASSWD}" >> $POSTFIX_PATH/virtual-domains_sql
echo "dbname = ${DB_NAME}" >> $POSTFIX_PATH/virtual-domains_sql
echo "table = domains" >> $POSTFIX_PATH/virtual-domains_sql
echo "select_field = domain" >> $POSTFIX_PATH/virtual-domains_sql
echo "where_field = domain" >> $POSTFIX_PATH/virtual-domains_sql
echo "...ok"
echo "Creating virtual_mailbox_sql file"
echo "hosts = ${DB_HOST}" > $POSTFIX_PATH/virtual_mailbox_sql 
echo "user = ${DB_USER}" >>$POSTFIX_PATH/virtual_mailbox_sql 
echo "password = ${DB_PASSWD}" >>$POSTFIX_PATH/virtual_mailbox_sql 
echo "dbname = ${DB_NAME}" >>$POSTFIX_PATH/virtual_mailbox_sql 
echo "table = postfix_accounts" >>$POSTFIX_PATH/virtual_mailbox_sql 
echo "select_field = mailbox" >>$POSTFIX_PATH/virtual_mailbox_sql 
echo "where_field = address" >>$POSTFIX_PATH/virtual_mailbox_sql 
echo "...ok"
echo "Creating virtual_uid_sql file"
echo "hosts = ${DB_HOST}" > $POSTFIX_PATH/virtual_uid_sql
echo "user = ${DB_USER}" >>$POSTFIX_PATH/virtual_uid_sql
echo "password = ${DB_PASSWD}" >>$POSTFIX_PATH/virtual_uid_sql
echo "dbname = ${DB_NAME}" >>$POSTFIX_PATH/virtual_uid_sql
echo "table = postfix_accounts" >>$POSTFIX_PATH/virtual_uid_sql
echo "select_field = uid" >>$POSTFIX_PATH/virtual_uid_sql
echo "where_field = address" >>$POSTFIX_PATH/virtual_uid_sql
echo "...ok"
echo "Creating virtual_gid_sql file"
echo "hosts = ${DB_HOST}" > $POSTFIX_PATH/virtual_gid_sql
echo "user = ${DB_USER}" >>$POSTFIX_PATH/virtual_gid_sql
echo "password = ${DB_PASSWD}" >>$POSTFIX_PATH/virtual_gid_sql
echo "dbname = ${DB_NAME}" >>$POSTFIX_PATH/virtual_gid_sql
echo "table = postfix_accounts" >>$POSTFIX_PATH/virtual_gid_sql
echo "select_field = gid" >>$POSTFIX_PATH/virtual_gid_sql
echo "where_field = address" >>$POSTFIX_PATH/virtual_gid_sql
echo "...ok"
echo "Creating virtual_sql file"
echo "hosts = \"${DB_HOST}\"" >$POSTFIX_PATH/virtual_sql 
echo "user = \"${DB_USER}\"" >>$POSTFIX_PATH/virtual_sql 
echo "password = \"${DB_PASSWD}\"" >>$POSTFIX_PATH/virtual_sql 
echo "dbname = \"${DB_NAME}\"" >>$POSTFIX_PATH/virtual_sql 
echo "table = postfix_aliases" >>$POSTFIX_PATH/virtual_sql 
echo "select_field = target_address" >>$POSTFIX_PATH/virtual_sql 
echo "where_field = address" >>$POSTFIX_PATH/virtual_sql 
echo "...ok"


unset OUTPUT DB_HOST DB_NAME DB_USER DB_PASSWD WWW WWW_PATH_USER NAME SQL OUTPUT POSTFIX_PATH
echo "Virtual admin for postfix installed.Restart postfix server.For more info read wiki page."

Download

go.sh

Personal tools
Requirements
Devel Page