Go.sh
From Virtual postfix admin
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."

