Maia Mailguard with ISPconfig

Discussion in 'Installation/Configuration' started by seangee, Jun 15, 2007.

  1. seangee

    seangee New Member

    Hi

    has anyone done this or know of a package or howto. If not I'll happily tackle and publish it - no promises on timing though :D. Just don't see the point in re-inventing the wheel if it has already been done

    ta
    Sean
     
  2. nerbas

    nerbas New Member

    I don't have any info - I'd just be really really glad if you could tackle that problem :) Maia is on my wishlist...
     
  3. pebkac

    pebkac Member HowtoForge Supporter

    did you ever get this done? I would like to do it as well...
     
  4. warlock

    warlock New Member

    For those who are interested I have written a script that will install maia mailgaurd into an ISPConfig 3.x on ubuntu 9.10, it should work with 10.04 I am busy testing it and will let you know.

    Code:
    #!/bin/sh
    #
    # Set up the basic environment
    #
    MAIA="maia-1.0.2a.tar.gz"
    MYSQLPASS="mysqlpasswd"
    PASS="maiapasswd"
    FQDN="mymail.example.com"
    DN="myexample.com"
    
    GEOG="Geography-Countries-2009041301.tar.gz"
    IPCOUNTRY="IP-Country-2.27.tar.gz"
    DOMKEYS="Mail-DomainKeys-1.0.tar.gz"
    
    #
    /usr/bin/apt-get update
    /usr/bin/apt-get --yes upgrade
    #
    #
    /usr/bin/apt-get --yes install amavisd-new 
    /usr/bin/apt-get --yes install spamassassin
    /usr/bin/apt-get --yes install openssh-server
    /usr/bin/apt-get --yes install unzip
    /usr/bin/apt-get --yes install build-essential
    /usr/bin/apt-get --yes install lynx
    /usr/bin/apt-get --yes install ncftp2
    /usr/bin/apt-get --yes install libssl-dev
    /usr/bin/apt-get --yes install apt-show-versions
    /usr/bin/apt-get --yes install whois
    #
    # Set up apache2
    #
    /usr/bin/apt-get --yes install apache2
    /usr/bin/apt-get --yes install apache2-doc
    /usr/bin/apt-get --yes install libapache2-mod-perl2
    /usr/bin/apt-get --yes install libapache2-mod-auth-mysql
    /usr/bin/apt-get --yes install libapache2-mod-php5
    #
    #Set up MySQL
    #
    /usr/bin/apt-get --yes install mysql-server
    /usr/bin/apt-get --yes install libgd2
    /usr/bin/apt-get --yes install php5
    /usr/bin/apt-get --yes install php5-cgi
    /usr/bin/apt-get --yes install phpmyadmin
    /usr/bin/apt-get --yes install php5-imap
    /usr/bin/apt-get --yes install php5-ldap
    /usr/bin/apt-get --yes install php5-mcrypt
    /usr/bin/apt-get --yes install php5-mysql
    /usr/bin/apt-get --yes install php5-gd
    /usr/bin/apt-get --yes install php-mail-mime
    /usr/bin/apt-get --yes install libcrypt-blowfish-perl
    /usr/bin/apt-get --yes install libossp-uuid-perl
    /usr/bin/apt-get --yes install libio-zlib-perl
    /usr/bin/apt-get --yes install libarchive-tar-perl
    /usr/bin/apt-get --yes install libarchive-zip-perl
    /usr/bin/apt-get --yes install libtemplate-perl
    /usr/bin/apt-get --yes install libemail-address-perl
    /usr/bin/apt-get --yes install libconvert-tnef-perl
    /usr/bin/apt-get --yes install libnet-cidr-lite-perl
    /usr/bin/apt-get --yes install libmail-spf-query-perl
    /usr/bin/apt-get --yes install libcrypt-cbc-perl
    /usr/bin/apt-get --yes install libdbd-pg-perl 
    /usr/bin/apt-get --yes install libnet-ldap-perl
    /usr/bin/apt-get --yes install libunix-syslog-perl
    /usr/bin/apt-get --yes install libnet-dns-perl
    /usr/bin/apt-get --yes install libberkeleydb-perl
    /usr/bin/apt-get --yes install imagemagick
    
    #Geography:Countries
    cd /tmp
    if [ -f /var/cache/apt/$GEOG ]
    then 
    	cp /var/cache/apt/$GEOG /tmp
    else
    	/usr/bin/wget http://search.cpan.org/CPAN/authors/id/A/AB/ABIGAIL/$GEOG
    	cp $GEOG /var/cache/apt/$GEOG
    fi
    tar xvzf Geogra*
    cd Geogra*
    perl Makefile.PL
    make
    make install
    
    #IP::Country
    cd /tmp
    if [ -f /var/cache/apt/$IPCOUNTRY ]
    then 
    	cp /var/cache/apt/$IPCOUNTRY /tmp
    else
    	/usr/bin/wget http://search.cpan.org/CPAN/authors/id/N/NW/NWETTERS/$IPCOUNTRY
    	cp $IPCOUNTRY /var/cache/apt/$IPCOUNTRY
    fi
    tar xvzf IP-Cou*
    cd IP-Cou*
    perl Makefile.PL
    make
    make install
    
    #Mail:DomainKeys
    cd /tmp
    if [ -f /var/cache/apt/$DOMKEYS ]
    then 
    	cp /var/cache/apt/$DOMKEYS /tmp
    else
    	/usr/bin/wget http://search.cpan.org/CPAN/authors/id/A/AN/ANTHONYU/$DOMKEYS
    	cp $DOMKEYS /var/cache/apt/$DOMKEYS
    fi
    tar xvzf Mail-D*
    cd Mail-D*
    perl Makefile.PL
    make
    make install
    #
    #
    /usr/bin/apt-get --yes install php-pear
    /usr/bin/pear channel-update pear.php.net
    /usr/bin/pear install Mail_Mime
    /usr/bin/pear install XML_RPC
    /usr/bin/pear install DB_Pager
    /usr/bin/pear install Auth_SASL
    /usr/bin/pear install Net_Socket
    /usr/bin/pear install Net_IMAP
    /usr/bin/pear install Net_POP3
    /usr/bin/pear install Net_SMTP
    /usr/bin/pear install Log
    #
    #
    /usr/bin/apt-get --yes install clamav
    /usr/bin/apt-get --yes install clamav-daemon
    /usr/bin/apt-get --yes install clamav-docs
    /usr/bin/apt-get --yes install unrar-free
    /usr/bin/apt-get --yes install unzoo
    /usr/bin/apt-get --yes install amavis
    /usr/bin/apt-get --yes install smarty
    /bin/ln -s /usr/share/php/smarty /usr/share/php/Smarty
    #
    #
    /usr/bin/pear channel-update pear.php.net
    /usr/bin/pear install DB
    /usr/bin/pear install Pager
    /usr/bin/pear install -f Image_Color
    /usr/bin/pear install -f Image_Canvas
    /usr/bin/pear install -f Numbers_Words
    /usr/bin/pear install Numbers_Roman
    /usr/bin/pear install -f Image_Graph-0.7.2
    cp /var/cache/apt/Pie.php /usr/share/php/Image/Graph/Plot/Pie.php
    #
    #
    /usr/bin/apt-get --yes install razor
    /usr/bin/apt-get --yes install pyzor
    #
    cp /var/cache/apt/phpinfo.php /var/www/
    #
    /etc/init.d/apache2 restart
    #
    # Download and Install Maia
    #
    cd /usr/src
    if [ -f /var/cache/apt/$MAIA ]
    then 
    	cp /var/cache/apt/$MAIA /usr/src
    else
    	/usr/bin/wget http://www.maiamailguard.com/files/$MAIA
    	cp $MAIA /var/cache/apt/$MAIA
    fi
    /bin/tar -zxvf $MAIA
    cd maia*
    
    /bin/mkdir         /var/amavisd
    /bin/mkdir         /var/amavisd/maia
    /bin/mkdir         /var/amavisd/db
    /bin/mkdir         /var/amavisd/tmp
    
    /bin/mv scripts    /var/amavisd/maia/
    /bin/mv templates  /var/amavisd/maia/
    /bin/mv php        /var/www/maia
    /bin/mv amavisd-maia /usr/sbin
    
    cat amavisd.conf.dist | sed -e 's/yourdomain.tld/'$DN'/' -e 's/host.domain.tld/'$FQDN'/' -e 's/password/'$PASS'/' -e 's/\/amavisd\/clamd.sock/\/run\/clamav\/clamd.ctl/' -e 's/log_level\ =\ 0/log_level\ =\ 3/' -e 's/\$MYHOME\/amavis.log/\/var\/log\/amavis.log/' -e 's/#\$unrar/\$unrar/' > /etc/amavisd.conf
    /bin/mv /var/amavisd/maia/templates/digest.tpl /var/amavisd/maia/templates/digest.tpl.bak
    /bin/mv /var/cache/apt/digest.tpl /var/amavisd/maia/templates/digest.tpl
    
    cat maia.conf.dist | sed -e 's/password = "passwd"/password = "'$PASS'"/' -e 's/base_url = "http:\/\/example.com\/"/base_url = "http:\/\/www.'$DN'\/maia"/' -e 's/report_options = 1 + 2 + 4 + 8/report_options = 0/' > /etc/maia.conf
    cat /var/www/maia/config.php.dist |sed -e 's/passwd/'$PASS'/'  > /var/www/maia/config.php
    
    cat /var/www/maia/admin/configtest.php | sed -e 's/PEAR\/Remote.php/PEAR\/Command\/Remote.php/' > /var/www/maia/admin/configtest.php.bak
    mv /var/www/maia/admin/configtest.php.bak /var/www/maia/admin/configtest.php
    
    
    # Rotate logs
    echo 						 >> /etc/logrotate.conf
    echo '# amavis'				 >> /etc/logrotate.conf
    echo '/var/log/amavis.log {' >> /etc/logrotate.conf
    echo '    missingok'		 >> /etc/logrotate.conf
    echo '    daily' 			 >> /etc/logrotate.conf
    echo '    rotate 7' 		 >> /etc/logrotate.conf
    echo '    create' 			 >> /etc/logrotate.conf
    echo '    compress'  		 >> /etc/logrotate.conf
    echo '    start 0' 			 >> /etc/logrotate.conf
    echo '}' 					 >> /etc/logrotate.conf
    
    
    #
    # Ceating Maia database
    cat maia-mysql.sql | sed -e 's/-- PREAMBLE/USE maia;/' > maia-mysqldb.sql
    
    echo 'DROP DATABASE IF EXISTS maia;' > create_maia_db.sql
    echo 'CREATE DATABASE maia;' >> create_maia_db.sql
    echo 'USE maia;' >> create_maia_db.sql
    echo 'GRANT CREATE, DROP, ALTER, SELECT, INSERT, UPDATE, DELETE ON maia.* TO amavis@localhost IDENTIFIED BY '\'$PASS\'';' >> create_maia_db.sql
    
    /usr/bin/mysql -u root -p$MYSQLPASS  < create_maia_db.sql
    /usr/bin/mysql -u root -p$MYSQLPASS  < maia-mysqldb.sql
    
    cd /root
    
    /usr/sbin/adduser www-data amavis
    
    /bin/chown -R amavis. /var/amavisd
    /bin/chown -R www-data /var/www/maia
    /bin/chown root. /usr/sbin/amavisd-maia
    /bin/chown amavis.amavis /etc/maia.conf
    /bin/chmod 640 /var/amavisd/maia/templates/*.tpl
    /bin/chmod 750 /var/amavisd/maia/scripts/*.pl
    /bin/chmod 640 /etc/maia.conf 
    /bin/chmod 755 /usr/sbin/amavisd-maia
    /bin/ln -s /usr/sbin/amavisd-maia /usr/sbin/amavisd
    cat /var/www/maia/core.php | sed -e 's/:.\/libs:/:\/usr\/share\/php/' > /root/core.php
    mv /root/core.php /var/www/maia/core.php
    
    cd /etc/default
    
    echo '# /etc/default/amavisd' > amavisd
    echo '#' >> amavisd
    echo '' >> amavisd
    echo '# Change to one to enable amavis' >> amavisd
    echo 'ENABLED=1' >> amavisd
    echo '' >> amavisd
    echo '# Where should amavisd write its PID to file? If you use the -u or' >> amavisd
    echo '# --username option above, this needs to be writable by that user.' >> amavisd
    echo '# Otherwise, the init script will not be able to shut amavisd down.' >> amavisd
    echo 'PIDFILE="/var/amavisd/amavisd.pid"' >> amavisd
    echo '' >> amavisd
    echo '# Set nice level of spamd' >> amavisd
    echo '#NICE="--nicelevel 15"' >> amavisd
    
    
    cd /etc/init.d
    
    cp /var/cache/apt/amavisd_init.d_script.sh amavisd
    chmod 755 amavisd
    update-rc.d amavisd defaults
    update-rc.d -f amavis remove
    cd /root
    
    /etc/init.d/apache2 restart
    /etc/init.d/amavis stop
    /etc/init.d/amavisd start
    mv /etc/init.d/amavis /root
    
    # 8) Setting up cron
    # *******************************************************************************
    echo '0 * * * * /var/amavisd/maia/scripts/process-quarantine.pl --learn &> /dev/null' >> /var/spool/cron/crontabs/root
    echo '0 1 * * * /var/amavisd/maia/scripts/expire-quarantine-cache.pl &> /dev/null' >> /var/spool/cron/crontabs/root
    echo '0 2 * * 1 /var/amavisd/maia/scripts/send-quarantine-reminders.pl &> /dev/null' >> /var/spool/cron/crontabs/root
    echo '*/30 * * * * /var/amavisd/maia/scripts/send-quarantine-digests.pl &> /dev/null' >> /var/spool/cron/crontabs/root
    echo '0 0 * * * sa-update && /var/amavisd/maia/scripts/load-sa-rules.pl && /etc/init.d/amavisd restart' >> /var/spool/cron/crontabs/root
    echo '0 * * * * /var/amavisd/maia/scripts/stats-snapshot.pl &> /dev/null' >> /var/spool/cron/crontabs/root
    
    # 9) Done !!!!!
    # *******************************************************************************
    echo 'Check your install -> http://www.'$DN'/maia/admin/configtest.php'
    echo 'Setup initial user -> http://www.'$DN'/maia/internal-init.php'
    echo 'Setup super user   -> http://www.'$DN'/maia/login.php?super=register'
    
    you will also need to save this as /var/cache/apt/amavisd_init.d_script.sh
    Code:
    #! /bin/sh
    
    # amavis init script
    # February 26, 2006
    # David Sims
    
    # Based on SpamAssassin script
    
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    DAEMON=/usr/sbin/amavisd
    NAME=amavisd
    SNAME=amavisd
    DESC="Amavis Mail Filter Daemon"
    PIDFILE="/var/run/$NAME.pid"
    PNAME="amavisd"
    
    export TMPDIR=/tmp
    # Apparently people have trouble if this isn't explicitly set...
    
    # Defaults - don't touch, edit /etc/default/amavisd
    ENABLED=0
    OPTIONS=""
    NICE=
    
    test -f /etc/default/amavisd && . /etc/default/amavisd
    
    if [ "$ENABLED" = "0" ]; then
        echo "$DESC: disabled, see /etc/default/amavisd"
        exit 0
    fi
    
    test -f $DAEMON || exit 0
    
    set -e
    
    case "$1" in
      start)
    	echo -n "Starting $DESC: "
    	start-stop-daemon --start --pidfile $PIDFILE --name $PNAME \
    	    $NICE --oknodo --startas $DAEMON -- $OPTIONS $DOPTIONS
    	echo "$NAME."
    	;;
    
      stop)
    	echo -n "Stopping $DESC: "
    	start-stop-daemon --stop --pidfile /var/amavisd/amavisd.pid
    	rm /var/amavisd/amavisd.lock
    	echo "$NAME."
    	;;
    
      reload|force-reload)
    	echo -n "Reloading $DESC: "
    	start-stop-daemon --stop --pidfile $PIDFILE --signal HUP --name $PNAME
    	echo "$NAME."
    	;;
    
      restart)
    	echo -n "Restarting $DESC: "
    	start-stop-daemon --stop --pidfile /var/amavisd/amavisd.pid
    	start-stop-daemon --start --pidfile $PIDFILE --name $PNAME \
    	    $NICE --oknodo --startas $DAEMON -- $OPTIONS $DOPTIONS
    
    	echo "$NAME."
    	;;
    
      *)
    	N=/etc/init.d/$SNAME
    	echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
    	exit 1
    	;;
    esac
    
    exit 0
    
    Use at your own risk and I take no responsibility if it breaks your system
     
    Last edited: Jun 24, 2010
  5. Mark_NL

    Mark_NL New Member

    hehe nice :)

    Though i'd like to give you some tips if you want to keep on working on the script.

    1. Don't put perl tarballs in /var/cache/apt/ (this dir is for debian packages, just dl it to /usr/local/src or smth :)

    2. You can shorten this all by putting all the packages in one apt-get command, also add a:

    Code:
    APTCMD=`which apt-get`;
    and then use that as cmd like so:

    Code:
    $APTCMD -y libgd2
    3. Installing a perl module from command line can be done like this:
    Code:
    perl -MCPAN -e 'Geography::Countries Mail:DomainKeys'
    this way all the dependencies will be installed as well.

    4. Don't put scripts in /var/cache/apt/ :)
     

Share This Page