# Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/mail-filter/MailScanner/MailScanner-4.79.11.1.ebuild,v 1.1 2010/03/16 18:42:05 patrick Exp $ EAPI=6 inherit eutils versionator MY_PV=$(get_version_component_range 1-3 ) MY_PVR=$(replace_version_separator 3 '-' ) DESCRIPTION="Free Anti-Virus and Anti-Spam Filter" HOMEPAGE="http://www.mailscanner.info/" SRC_URI="https://raw.githubusercontent.com/${PN}/v5/master/builds/${PN}-${MY_PVR}.nix.tar.gz" RESTRICT="mirror" LICENSE="GPL-2" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="clamav doc exim postfix spamassassin +cron" DEPEND="dev-lang/perl" RDEPEND="${DEPEND} dev-perl/Archive-Zip virtual/perl-IO-Compress dev-perl/Convert-BinHex dev-perl/Convert-TNEF dev-perl/DBD-SQLite dev-perl/DBI dev-perl/Filesys-Df >=dev-perl/HTML-Parser-3.45 dev-perl/HTML-Tagset dev-perl/IO-stringy >=dev-perl/MIME-tools-5.417 dev-perl/MailTools dev-perl/Net-CIDR dev-perl/Net-DNS dev-perl/OLE-StorageLite dev-perl/Sys-Hostname-Long dev-perl/Sys-SigAction dev-perl/TimeDate >=net-mail/tnef-1.4.3 virtual/perl-File-Spec virtual/perl-File-Temp virtual/perl-Getopt-Long >=virtual/perl-Sys-Syslog-0.18 >=virtual/perl-MIME-Base64-3.05 cron? ( virtual/cron ) postfix? ( mail-mta/postfix ) exim? ( !postfix? ( mail-mta/exim ) ) !postfix? ( !exim? ( mail-mta/sendmail ) ) clamav? ( >=app-antivirus/clamav-0.88.4 ) spamassassin? ( >=mail-filter/spamassassin-3.1.5 )" S="${WORKDIR}/${PN}-${MY_PV}" PATCHES=( "${FILESDIR}"/${PN}-5.0.3.7-ms-check-gentoo.patch ) src_prepare() { default # 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/sbin/sendmail' SENDMAIL2='/usr/sbin/sendmail' fi # setup virus scanner(s) VIRUS_SCANNING="yes" VIRUS_SCANNERS="" use clamav && VIRUS_SCANNERS="clamav ${VIRUS_SCANNERS}" if [ -z "$VIRUS_SCANNERS" ]; then VIRUS_SCANNERS="none" VIRUS_SCANNING="no" fi # setup spamassassin USE_SA="no" use spamassassin && USE_SA="yes" # 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"` # ClamAV requires some specific changes to MailScanner.conf # when mailscanner is running as root (i.e. sendmail) WORKGRP="" WORKPERM="0600" if use clamav && [ "$MTA" == "sendmail" ] ; then WORKGRP="clamav" WORKPERM="0640" fi # update conf files sed -i \ -e "s#^\(PID file[ \t]*=\).*#\1 /run/MailScanner.pid#" \ -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#^\(%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}#" \ -e "s/^\(Virus Scanning[ \t]*=\).*/\1 ${VIRUS_SCANNING}/" \ -e "s/^\(Virus Scanners[ \t]*=\).*/\1 ${VIRUS_SCANNERS}/" \ -e "s/^\(Use SpamAssassin[ \t]*=\).*$/\1 ${USE_SA}/" \ etc/MailScanner/MailScanner.conf sed -i \ -e "s#YOURDOMAIN-COM#${YOURSITE}#" \ -e "s#yoursite#${YOURSITE}#" \ etc/MailScanner/spamassassin.conf # net-mail/clamav net-mail/f-prot package compatibility sed -i \ -e 's#^\(clamav\t.*/usr\)/local$#\1#' \ -e 's#^\(f-prot.*\)/usr/local/f-prot$#\1/opt/f-prot#' \ etc/MailScanner/virus.scanners.conf # turn /etc/MailScanner/defaults into a conf.d mkdir -p etc/conf.d mv etc/MailScanner/defaults etc/conf.d/MailScanner for f in usr/lib/MailScanner/init/ms-init \ usr/lib/MailScanner/wrapper/clamav-wrapper \ usr/sbin/ms-clean-quarantine \ usr/sbin/ms-check \ usr/sbin/ms-msg-alert \ usr/sbin/ms-update-vs \ usr/sbin/ms-cron \ etc/MailScanner/MailScanner.conf ; do sed -i -e "s,/etc/MailScanner/defaults,/etc/conf.d/MailScanner,g" "$f" done # clean and configure conf.d # - we do not have a /var/lock/subsys - move MailScanner.off to /run instead # - nothing is using the ms_re2c setting (ms-update-sa finds it on its own) # - ms_etc isn't used anywhere # - ms_core, ms_lib, ramdisk_* and run_mailscanner are only used by ms-init # which we don't use sed -i \ -e "/^stopped_lockfile=/s,=.*,=/run/MailScanner.off," \ -e "/^# RE2C/,/^ms_re2c=/d" \ -e "/^# Enable MailScanner Daemon/,/^run_mailscanner=/d" \ -e "/^## RAMDISK Management/,/^ramdisk_store=/d" \ -e "/^# The MailScanner etc directory/,/^ms_etc=/d" \ -e "/^# The Mailscanner share directory/,/^ms_core=/d" \ -e "/^# The MailScanner lib directory/,/^ms_lib=/d" \ etc/conf.d/MailScanner # change restarts via ms-init after e.g. rules updates into reloads via # /etc/init.d/MailScanner # a.) reloads should be enough because they restart all children and the # parent MailScanner doesn't do anything so doesn't need the update # b.) this way we'll never accidentally start MailScanner when it's # supposed to be switched off without mucking about with # $run_mailscanner and $stopped_lockfile for f in usr/sbin/ms-update-bad-emails \ usr/sbin/ms-update-sa ; do sed -i -e "s,/usr/lib/MailScanner/init/ms-init[[:space:]]\\+restart,/etc/init.d/MailScanner reload,g" \ "$f" done # create some simple cron wrappers for schedule in hourly daily weekly ; do mkdir -p etc/cron.${schedule} cat <etc/cron.${schedule}/MailScanner #!/bin/bash /usr/sbin/ms-cron ${schedule/weekly/maint} EOF done } src_install() { dosbin usr/sbin/* doconfd etc/conf.d/MailScanner newinitd "${FILESDIR}"/initd.mailscanner MailScanner insinto /etc doins -r etc/MailScanner exeinto /usr/lib/MailScanner/wrapper doexe usr/lib/MailScanner/wrapper/* exeinto /usr/lib/MailScanner/init doexe usr/lib/MailScanner/init/* insinto /usr/share doins -r usr/share/MailScanner if use cron ; then for schedule in hourly daily weekly ; do exeinto /etc/cron.${schedule} doexe etc/cron.${schedule}/MailScanner done fi dodoc INSTALL LICENSE README "${FILESDIR}"/README.Gentoo keepdir /var/spool/MailScanner/incoming keepdir /var/spool/MailScanner/quarantine keepdir /var/spool/MailScanner/spamassassin keepdir /var/spool/MailScanner/archive if use postfix || use exim ; then fowners -R $RUNASUSER:$RUNASGROUP /var/spool/MailScanner else keepdir /var/spool/mqueue.in fi use spamassassin && \ dosym /etc/MailScanner/spamassassin.conf \ /etc/mail/spamassassin/mailscanner.cf } pkg_postinst() { if use postfix; then elog "Note that postfix 2.4 now supports HOLD of messages" elog "and reinjection without second postfix instance" elog "Inbound path is now ${ROOT}var/spool/postfix/hold" elog elog "See http://mailscanner.info/postfix.html for details" elog "or check (english) gentoo-wiki.com page which has been updated" fi }