# Copyright 2003 Martin Hierling # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/mail-filter/MailScanner/MailScanner-4.48.4.2.ebuild,v 1.1 2005/12/22 18:45:51 egore Exp $ inherit eutils MSR=${PV}. MS1=${MSR%%.*} ; MSR=${MSR#${MS1}.} MS2=${MSR%%.*} ; MSR=${MSR#${MS2}.} MS3=${MSR%%.*} ; MSR=${MSR#${MS3}.} MS4=${MSR%%.*} ; MSR=${MSR#${MS4}.} MAILSCANNER_PVR=${MS1}.${MS2}.${MS3}-${MS4} MAILSCANNER_PV=${MS1}.${MS2}.${MS3} DESCRIPTION="MailScanner / A Free Anti-Virus and Anti-Spam Filter " HOMEPAGE="http://www.mailscanner.info/" SRC_URI="http://www.sng.ecs.soton.ac.uk/mailscanner/files/4/tar/MailScanner-install-${MAILSCANNER_PVR}.tar.gz" MAILSCANNER_REAL_ARCHIVE="${WORKDIR}/MailScanner-install-${MAILSCANNER_PV}/perl-tar/MailScanner-${MAILSCANNER_PVR}.tar.gz" BASE="/usr" KEYWORDS="~x86 ~sparc ~amd64" SLOT="0" LICENSE="GPL-2" IUSE="postfix sendmail exim clamav vlnx spamassassin f-prot bitdefender doc" DEPEND=">=dev-lang/perl-5.8.0-r12 >=sys-apps/sed-4.0.9" RDEPEND="dev-lang/perl >=dev-perl/Archive-Zip-1.14 >=dev-perl/Compress-Zlib-1.33 >=dev-perl/Convert-BinHex-1.119 >=dev-perl/Convert-TNEF-0.17 >=perl-core/ExtUtils-MakeMaker-6.05 >=perl-core/File-Spec-0.82 >=perl-core/File-Temp-0.12 >=dev-perl/HTML-Parser-3.45 >=dev-perl/HTML-Tagset-3.03 >=dev-perl/IO-stringy-2.108 >=dev-perl/MailTools-1.50 >=perl-core/MIME-Base64-3.05 >=dev-perl/MIME-tools-5.417 >=dev-perl/Net-CIDR-0.10 >=dev-perl/TimeDate-1.16 >=net-mail/tnef-1.2.3.1 >=dev-perl/Net-DNS-0.40 || ( sendmail? mail-mta/sendmail postfix? mail-mta/postfix exim? mail-mta/exim mail-mta/sendmail ) clamav? app-antivirus/clamav f-prot? app-antivirus/f-prot vlnx? app-antivirus/vlnx bitdefender? app-antivirus/bitdefender spamassassin? mail-filter/spamassassin " S="${WORKDIR}/MailScanner-${MAILSCANNER_PV}" src_unpack() { unpack ${A} echo ">>> Unpacking ${MAILSCANNER_REAL_ARCHIVE}" tar -zxf "${MAILSCANNER_REAL_ARCHIVE}" echo "Done unpacking" cd ${S} } src_compile() { cd "${S}" # setup MTA if use postfix ; then RUNASUSER='postfix' RUNASGROUP='postfix' INQUEUE='/var/spool/postfix.in/deferred' OUTQUEUE='/var/spool/postfix/incoming' MTA='postfix' SENDMAIL='/usr/lib/sendmail' SENDMAIL2='/usr/lib/sendmail' elif use exim ; then RUNASUSER='mail' RUNASGROUP='mail' INQUEUE='/var/spool/exim.in/input' OUTQUEUE='/var/spool/exim/input' MTA='exim' SENDMAIL='/usr/sbin/exim -oMr MailScanner' SENDMAIL2='/usr/sbin/exim -C /etc/exim/exim_out.conf -oMr MailScanner' else # use sendmail as default, but we should add more as needed # RUNASUSER='mail' # RUNASGROUP='mail' INQUEUE='/var/spool/mqueue.in' OUTQUEUE='/var/spool/mqueue' MTA='sendmail' SENDMAIL='/usr/lib/sendmail' SENDMAIL2='/usr/lib/sendmail' fi # update init script parameters for selected MTA sed \ -e "s|^\(MTA=\).*|\1${MTA}|g" \ ${FILESDIR}/confd.mailscanner-mta > ${S}/confd.mailscanner-mta # setup virus scanner(s) VIRUS_SCANNERS="" if use clamav ; then VIRUS_SCANNERS="clamav ${VIRUS_SCANNERS}" fi if use vlnx ; then VIRUS_SCANNERS="mcafee ${VIRUS_SCANNERS}" fi if use f-prot ; then VIRUS_SCANNERS="f-prot ${VIRUS_SCANNERS}" fi if use bitdefender ; then VIRUS_SCANNERS="bitdefender ${VIRUS_SCANNERS}" fi if [ "$VIRUS_SCANNERS" == "" ]; then VIRUS_SCANNERS="none" VIRUS_SCANNING="no" else VIRUS_SCANNING="yes" fi sed -i \ -e "s/^\(Virus Scanning[ \t]*=\).*/\1 ${VIRUS_SCANNING}/" \ -e "s/^\(Virus Scanners[ \t]*=\).*/\1 ${VIRUS_SCANNERS}/" \ ${S}/etc/MailScanner.conf # setup spamassassin if use spamassassin ; then sed -i \ -e "s/^\(Use SpamAssassin[ \t]*=\).*$/\1 yes/" \ ${S}/etc/MailScanner.conf else sed -i \ -e "s/^\(Use SpamAssassin[ \t]*=\).*$/\1 no/" \ ${S}/etc/MailScanner.conf fi # update bin files sed -i \ -e "s#msbindir=/opt/MailScanner/bin#msbindir=/usr/sbin#g" \ -e "s#config=/opt/MailScanner/etc/MailScanner.conf#config=/etc/MailScanner/MailScanner.conf#g" \ ${S}/bin/check_mailscanner sed -i -e "s#/opt/MailScanner/etc#/etc/MailScanner#g" ${S}/bin/update_virus_scanners sed -i \ -e "s#/opt/MailScanner/etc#/etc/MailScanner#g" \ -e "s#/opt/MailScanner/lib#/usr/lib/MailScanner#g" \ ${S}/bin/MailScanner # update cron files sed -i \ -e "s#/opt/MailScanner/bin/check_mailscanner#/usr/sbin/check_MailScanner#g" \ ${S}/bin/cron/check_MailScanner.cron sed -i \ -e "s#/etc/sysconfig/MailScanner#/etc/conf.d/mailscanner#g" \ -e "s#/opt/MailScanner/bin/update_virus_scanners#/usr/sbin/update_virus_scanners#g" \ ${S}/bin/cron/update_virus_scanners.cron # Determine some things that may need to be changed in conf file # (need to arrive at sensible replacement for yoursite) YOURSITE=`dnsdomainname | sed -e "s/\./-/g"` BASEBIN="${BASE}/sbin" # ClamAV requires some specific changes to MailScanner.conf # when mailscanner is running as root (i.e. sendmail) if use clamav ; then if [ "$MTA" == "sendmail" ] ; then WORKGRP="clamav" WORKPERM="0640" else WORKGRP="" WORKPERM="0600" fi else WORKGRP="" WORKPERM="0600" fi # update conf files sed -i \ -e "s#/opt/MailScanner/etc#/etc/MailScanner#g" \ -e "s#/opt/MailScanner/bin#$BASEBIN#g" \ -e "s#/opt/MailScanner/lib#/usr/lib/MailScanner#g" \ -e "s#^\(Run As User[ \t]*=\).*#\1 $RUNASUSER#" \ -e "s#^\(Run As Group[ \t]*=\).*#\1 $RUNASGROUP#" \ -e "s#^\(Incoming Queue Dir[ \t]*=\).*#\1 $INQUEUE#" \ -e "s#^\(Outgoing Queue Dir[ \t]*=\).*#\1 $OUTQUEUE#" \ -e "s#^\(MTA[ \t]*=\).*#\1 $MTA#" \ -e "s/^#\(TNEF.*internal\)$/\1/" \ -e "s/^\(TNEF.*0000\)$/#\1/" \ -e "s#^\(PID file[ \t]=\).*#\1 /var/run/mailscanner.pid#" \ -e "s#^\(%org-name%\)[ \t]*=.*#\1 = ${YOURSITE}#" \ -e "s#^\(Sendmail[ \t]*=\).*#\1 ${SENDMAIL}#" \ -e "s#^\(Sendmail2[ \t]*=\).*#\1 ${SENDMAIL2}#" \ -e "s#^\(Incoming Work Group[ \t]*=\).*#\1 ${WORKGRP}#" \ -e "s#^\(Incoming Work Permissions[ \t]*=\).*#\1 ${WORKPERM}#" \ ${S}/etc/MailScanner.conf # net-mail/vlnx net-mail/clamav net-mail/f-prot package compatibility sed -i -e "s#PREFIX=/usr/local/uvscan#PREFIX=/opt/vlnx#" ${S}/lib/mcafee-autoupdate sed -i \ -e "s#/opt/MailScanner/lib#/usr/lib/MailScanner#" \ -e 's#^\(mcafee.*\)/usr/local/uvscan$#\1/opt/vlnx#' \ -e 's#^\(clamav\t.*/usr\)/local$#\1#' \ -e 's#^\(f-prot.*\)/usr/local/f-prot$#\1/opt/f-prot#' \ ${S}/etc/virus.scanners.conf # update lib files sed -i \ -e "s#/opt/MailScanner/bin#$BASEBIN#g" \ -e "s#/opt/MailScanner/etc#/etc/MailScanner#g" \ -e "s#/opt/MailScanner/lib#/usr/lib/MailScanner#g" \ ${S}/lib/MailScanner/ConfigDefs.pl sed -i -e "s#/etc/MailScanner#/etc/MailScanner#g" ${S}/lib/MailScanner/CustomConfig.pm # finally, change MailScanner.conf into MailScanner.conf.sample cp ${S}/etc/MailScanner.conf ${S}/etc/MailScanner.conf.${MAILSCANNER_PV} mv ${S}/etc/MailScanner.conf ${S}/etc/MailScanner.conf.sample } src_install() { cd ${S} exeinto ${BASE}/sbin #newexe bin/check_mailscanner.linux check_MailScanner newexe bin/check_mailscanner check_MailScanner doexe bin/df2mbox doexe bin/MailScanner doexe bin/update_virus_scanners doexe bin/upgrade_MailScanner_conf newexe bin/Sophos.install.linux Sophos.install insinto /etc/MailScanner doins etc/*.conf doins etc/mailscanner.conf.with.mcp doins etc/MailScanner.conf.${MAILSCANNER_PV} doins etc/MailScanner.conf.sample insinto /etc/MailScanner/rules doins etc/rules/* insinto /etc/MailScanner/mcp doins etc/mcp/* for i in $(ls etc/reports/) do if [ $i != "cat" ] then insinto /etc/MailScanner/reports/$i doins etc/reports/$i/* fi done insinto ${BASE}/lib/MailScanner doins lib/*.prf exeinto ${BASE}/lib/MailScanner doexe lib/*-wrapper doexe lib/*-autoupdate doexe lib/*-autoupdate.old doexe lib/*.pm exeinto ${BASE}/lib/MailScanner/MailScanner doexe lib/MailScanner/*.pm doexe lib/MailScanner/*.pl insinto ${BASE}/lib/MailScanner/MailScanner doins lib/MailScanner/*.txt exeinto ${BASE}/lib/MailScanner/MailScanner/CustomFunctions doexe lib/MailScanner/CustomFunctions/MyExample.pm exeinto /etc/init.d newexe ${FILESDIR}/initd.mailscanner MailScanner newexe ${FILESDIR}/initd.mailscanner-mta MailScanner-mta insinto /etc/conf.d newins ${FILESDIR}/confd.mailscanner MailScanner newins ${S}/confd.mailscanner-mta MailScanner-mta #Set up cron jobs exeinto /etc/cron.hourly newexe ${S}/bin/cron/check_MailScanner.cron check_MailScanner newexe ${S}/bin/cron/update_virus_scanners.cron update_virus_scanners exeinto /etc/cron.daily newexe ${S}/bin/cron/clean.quarantine.cron clean.quarantine if use doc ; then mkdir -p ${D}usr/share/doc/${PF}/html cp -a docs/* ${D}usr/share/doc/${PF}/html fi dodoc COPYING INSTALL notes.txt README docs/QuickInstall.txt docs/README.sql-logging dodir /var/spool/MailScanner/incoming keepdir /var/spool/MailScanner/incoming dodir /var/spool/MailScanner/quarantine keepdir /var/spool/MailScanner/quarantine dodir /var/spool/MailScanner/spamassassin keepdir /var/spool/MailScanner/spamassassin dodir /var/spool/MailScanner/archive keepdir /var/spool/MailScanner/archive dodir ${BASE}/var keepdir ${BASE}/var # Deal with spool directories - TODO setup postfix and exim properly if use postfix ; then chown -R postfix:postfix ${D}/var/spool/MailScanner/ elif use exim ; then # nOT SURE IF THIS IS NEEDED chown -R mail:mail ${D}/var/spool/MailScanner/ else dodir /var/spool/mqueue.in keepdir /var/spool/mqueue.in fi } pkg_postinst() { if [ -n "`grep -xE "[[:space:]]*provide[[:space:]]+(.*[[:space:]]+)*mta([[:space:]]+.*)*" /etc/init.d/${MTA}`" ]; then ewarn "Warning: your mta service startup script /etc/init.d/${MTA}" ewarn "seems to provide 'mta', this may give problems with /etc/init.d/MailScanner-mta." fi einfo "If not done already, remove the line containing 'provide mta' from your MTA's init" einfo "file and take care that using etc-update will not insert this line after re-emerging" einfo "your mta!" einfo " " if [ -f "/etc/MailScanner/MailScanner.conf" ]; then einfo "Upgrading the MailScanner.conf file" mv /etc/MailScanner/MailScanner.conf /etc/MailScanner/MailScanner.conf.pre_upgrade /usr/sbin/upgrade_MailScanner_conf \ /etc/MailScanner/MailScanner.conf.pre_upgrade \ /etc/MailScanner/MailScanner.conf.${MAILSCANNER_PV} \ > /etc/MailScanner/MailScanner.conf 2> /dev/null else cp /etc/MailScanner/MailScanner.conf.sample /etc/MailScanner/MailScanner.conf fi }