]> Pileus Git - ~andy/sunrise/blob - mail-filter/MailScanner/MailScanner-4.54.6.1.ebuild
mail-filter/MailScanner: Initial import -- thanks to various people in bug #36060
[~andy/sunrise] / mail-filter / MailScanner / MailScanner-4.54.6.1.ebuild
1 # Copyright 1999-2006 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: $
4
5 inherit eutils versionator
6
7 MY_PV=$(get_version_component_range 1-3 )
8 MY_PVR=$(replace_version_separator 3 '-' )
9
10 DESCRIPTION="MailScanner / A Free Anti-Virus and Anti-Spam Filter "
11 HOMEPAGE="http://www.mailscanner.info/"
12 SRC_URI="http://www.sng.ecs.soton.ac.uk/mailscanner/files/4/tar/${PN}-install-${MY_PVR}.tar.gz"
13
14 KEYWORDS="~x86"
15 SLOT="0"
16 LICENSE="GPL-2"
17
18 DEPEND="dev-lang/perl"
19
20 RDEPEND="dev-lang/perl
21         dev-perl/Archive-Zip
22         dev-perl/Compress-Zlib
23         dev-perl/Convert-BinHex
24         dev-perl/Convert-TNEF
25         dev-perl/DBD-SQLite
26         dev-perl/DBI
27         >=dev-perl/HTML-Parser-3.45
28         dev-perl/HTML-Tagset
29         dev-perl/IO-stringy
30         >=dev-perl/MIME-tools-5.417
31         dev-perl/MailTools
32         dev-perl/Net-CIDR
33         dev-perl/Net-DNS
34         dev-perl/TimeDate
35         net-mail/tnef
36         perl-core/File-Spec
37         perl-core/File-Temp
38         >=perl-core/MIME-Base64-3.05
39         || (
40                 sendmail? ( mail-mta/sendmail )
41                 postfix? ( mail-mta/postfix )
42                 exim? ( mail-mta/exim )
43                 mail-mta/sendmail
44         )
45         clamav? ( app-antivirus/clamav )
46         f-prot? ( app-antivirus/f-prot )
47         vlnx? ( app-antivirus/vlnx )
48         bitdefender? ( app-antivirus/bitdefender-console )
49         spamassassin? ( mail-filter/spamassassin )
50         "
51
52 IUSE="postfix sendmail exim clamav vlnx spamassassin f-prot bitdefender doc"
53
54 S="${WORKDIR}/MailScanner-${MY_PV}"
55 MAILSCANNER_REAL_ARCHIVE="${WORKDIR}/MailScanner-install-${MY_PV}/perl-tar/MailScanner-${MY_PVR}.tar.gz"
56 BASE="/usr"
57
58 src_unpack() {
59         unpack ${A}
60         echo ">>> Unpacking ${MAILSCANNER_REAL_ARCHIVE}"
61         tar -zxf "${MAILSCANNER_REAL_ARCHIVE}"
62         echo "Done unpacking"
63         cd ${S}
64 }
65
66 src_compile() {
67         cd "${S}"
68         # setup MTA
69         if use postfix ; then
70                 RUNASUSER='postfix'
71                 RUNASGROUP='postfix'
72                 INQUEUE='/var/spool/postfix.in/deferred'
73                 OUTQUEUE='/var/spool/postfix/incoming'
74                 MTA='postfix'
75                 SENDMAIL='/usr/lib/sendmail'
76                 SENDMAIL2='/usr/lib/sendmail'
77         elif use exim ; then
78                 RUNASUSER='mail'
79                 RUNASGROUP='mail'
80                 INQUEUE='/var/spool/exim.in/input'
81                 OUTQUEUE='/var/spool/exim/input'
82                 MTA='exim'
83                 SENDMAIL='/usr/sbin/exim -oMr MailScanner'
84                 SENDMAIL2='/usr/sbin/exim -C /etc/exim/exim_out.conf -oMr MailScanner'
85         else
86         #       use sendmail as default, but we should add more as needed
87         #       RUNASUSER='mail'
88         #       RUNASGROUP='mail'
89                 INQUEUE='/var/spool/mqueue.in'
90                 OUTQUEUE='/var/spool/mqueue'
91                 MTA='sendmail'
92                 SENDMAIL='/usr/lib/sendmail'
93                 SENDMAIL2='/usr/lib/sendmail'
94         fi
95
96         # update init script parameters for selected MTA
97         sed \
98                 -e "s|^\(MTA=\).*|\1${MTA}|g" \
99                 ${FILESDIR}/confd.mailscanner-mta > ${S}/confd.mailscanner-mta
100
101         # setup virus scanner(s)
102                 VIRUS_SCANNERS=""
103                 if use clamav ; then
104                         VIRUS_SCANNERS="clamav ${VIRUS_SCANNERS}"
105                 fi
106                 if use vlnx ; then
107                         VIRUS_SCANNERS="mcafee ${VIRUS_SCANNERS}"
108                 fi
109                 if use f-prot ; then
110                         VIRUS_SCANNERS="f-prot ${VIRUS_SCANNERS}"
111                 fi
112                 if use bitdefender ; then
113                         VIRUS_SCANNERS="bitdefender ${VIRUS_SCANNERS}"
114                 fi
115                 if [ "$VIRUS_SCANNERS" == "" ]; then
116                         VIRUS_SCANNERS="none"
117                         VIRUS_SCANNING="no"
118                 else
119                         VIRUS_SCANNING="yes"
120                 fi
121
122         sed -i \
123                 -e "s/^\(Virus Scanning[ \t]*=\).*/\1 ${VIRUS_SCANNING}/" \
124                 -e "s/^\(Virus Scanners[ \t]*=\).*/\1 ${VIRUS_SCANNERS}/" \
125                 ${S}/etc/MailScanner.conf
126
127         # setup spamassassin
128         if use spamassassin ; then
129                 sed -i \
130                         -e "s/^\(Use SpamAssassin[ \t]*=\).*$/\1 yes/" \
131                         ${S}/etc/MailScanner.conf
132         else
133                 sed -i \
134                         -e "s/^\(Use SpamAssassin[ \t]*=\).*$/\1 no/" \
135                         ${S}/etc/MailScanner.conf
136         fi
137
138         # update bin files
139         sed -i \
140                 -e "s#msbindir=/opt/MailScanner/bin#msbindir=/usr/sbin#g" \
141                 -e "s#config=/opt/MailScanner/etc/MailScanner.conf#config=/etc/MailScanner/MailScanner.conf#g" \
142                 ${S}/bin/check_mailscanner
143
144         sed -i -e "s#/opt/MailScanner/etc#/etc/MailScanner#g" ${S}/bin/update_virus_scanners
145         sed -i \
146                 -e "s#/opt/MailScanner/etc#/etc/MailScanner#g" \
147                 -e "s#/opt/MailScanner/lib#/usr/lib/MailScanner#g" \
148                 ${S}/bin/MailScanner
149
150         # update cron files
151         sed -i \
152             -e "s#/opt/MailScanner/bin/check_mailscanner#/usr/sbin/check_MailScanner#g" \
153                 ${S}/bin/cron/check_MailScanner.cron
154         sed -i \
155                 -e "s#/etc/sysconfig/MailScanner#/etc/conf.d/mailscanner#g" \
156             -e "s#/opt/MailScanner/bin/update_virus_scanners#/usr/sbin/update_virus_scanners#g" \
157                 ${S}/bin/cron/update_virus_scanners.cron
158
159         # Determine some things that may need to be changed in conf file
160         # (need to arrive at sensible replacement for yoursite)
161         YOURSITE=`dnsdomainname | sed -e "s/\./-/g"`
162         BASEBIN="${BASE}/sbin"
163
164         # ClamAV requires some specific changes to MailScanner.conf
165         # when mailscanner is running as root (i.e. sendmail)
166         if use clamav ; then
167                 if [ "$MTA" == "sendmail" ] ; then
168                         WORKGRP="clamav"
169                         WORKPERM="0640"
170                 else
171                         WORKGRP=""
172                         WORKPERM="0600"
173                 fi
174         else
175                 WORKGRP=""
176                 WORKPERM="0600"
177         fi
178
179         # update conf files
180         sed -i \
181                 -e "s#/opt/MailScanner/etc#/etc/MailScanner#g" \
182                 -e "s#/opt/MailScanner/bin#$BASEBIN#g" \
183                 -e "s#/opt/MailScanner/lib#/usr/lib/MailScanner#g" \
184                 -e "s#^\(Run As User[ \t]*=\).*#\1 $RUNASUSER#" \
185                 -e "s#^\(Run As Group[ \t]*=\).*#\1 $RUNASGROUP#" \
186                 -e "s#^\(Incoming Queue Dir[ \t]*=\).*#\1 $INQUEUE#" \
187                 -e "s#^\(Outgoing Queue Dir[ \t]*=\).*#\1 $OUTQUEUE#" \
188                 -e "s#^\(MTA[ \t]*=\).*#\1 $MTA#" \
189                 -e "s/^#\(TNEF.*internal\)$/\1/" \
190                 -e "s/^\(TNEF.*0000\)$/#\1/" \
191                 -e "s#^\(PID file[ \t]=\).*#\1 /var/run/mailscanner.pid#" \
192                 -e "s#^\(%org-name%\)[ \t]*=.*#\1 = ${YOURSITE}#" \
193                 -e "s#^\(Sendmail[ \t]*=\).*#\1 ${SENDMAIL}#" \
194                 -e "s#^\(Sendmail2[ \t]*=\).*#\1 ${SENDMAIL2}#" \
195                 -e "s#^\(Incoming Work Group[ \t]*=\).*#\1 ${WORKGRP}#" \
196                 -e "s#^\(Incoming Work Permissions[ \t]*=\).*#\1 ${WORKPERM}#" \
197                 ${S}/etc/MailScanner.conf
198
199         # net-mail/vlnx net-mail/clamav net-mail/f-prot package compatibility
200
201         sed -i -e "s#PREFIX=/usr/local/uvscan#PREFIX=/opt/vlnx#" ${S}/lib/mcafee-autoupdate
202         sed -i \
203                 -e "s#/opt/MailScanner/lib#/usr/lib/MailScanner#" \
204                 -e 's#^\(mcafee.*\)/usr/local/uvscan$#\1/opt/vlnx#' \
205                 -e 's#^\(clamav\t.*/usr\)/local$#\1#' \
206                 -e 's#^\(f-prot.*\)/usr/local/f-prot$#\1/opt/f-prot#' \
207                 ${S}/etc/virus.scanners.conf
208
209         # update lib files
210         sed -i \
211                 -e "s#/opt/MailScanner/bin#$BASEBIN#g" \
212                 -e "s#/opt/MailScanner/etc#/etc/MailScanner#g" \
213                 -e "s#/opt/MailScanner/lib#/usr/lib/MailScanner#g" \
214                 ${S}/lib/MailScanner/ConfigDefs.pl
215         sed -i -e "s#/etc/MailScanner#/etc/MailScanner#g" ${S}/lib/MailScanner/CustomConfig.pm
216
217         # finally, change MailScanner.conf into MailScanner.conf.sample
218         cp ${S}/etc/MailScanner.conf ${S}/etc/MailScanner.conf.${MY_PV}
219         mv ${S}/etc/MailScanner.conf ${S}/etc/MailScanner.conf.sample
220
221 }
222
223 src_install() {
224         cd ${S}
225         exeinto ${BASE}/sbin
226         #newexe bin/check_mailscanner.linux check_MailScanner
227         newexe  bin/check_mailscanner check_MailScanner
228         doexe   bin/df2mbox
229         doexe   bin/MailScanner
230         doexe   bin/update_virus_scanners
231         doexe   bin/upgrade_MailScanner_conf
232         newexe  bin/Sophos.install.linux Sophos.install
233
234         insinto /etc/MailScanner
235         doins   etc/*.conf
236         doins   etc/mailscanner.conf.with.mcp
237         doins   etc/MailScanner.conf.${MY_PV}
238         doins   etc/MailScanner.conf.sample
239
240         insinto /etc/MailScanner/rules
241         doins   etc/rules/*
242         insinto /etc/MailScanner/mcp
243         doins   etc/mcp/*
244
245         for i in $(ls etc/reports/)
246         do
247                 if [ $i != "cat" ]
248                 then
249                         insinto /etc/MailScanner/reports/$i
250                         doins etc/reports/$i/*
251                 fi
252         done
253
254         insinto ${BASE}/lib/MailScanner
255         doins   lib/*.prf
256
257         exeinto ${BASE}/lib/MailScanner
258         doexe   lib/*-wrapper
259         doexe   lib/*-autoupdate
260         doexe   lib/*-autoupdate.old
261         doexe   lib/*.pm
262
263         exeinto ${BASE}/lib/MailScanner/MailScanner
264         doexe   lib/MailScanner/*.pm
265         doexe   lib/MailScanner/*.pl
266
267         insinto ${BASE}/lib/MailScanner/MailScanner
268         doins   lib/MailScanner/*.txt
269
270         exeinto ${BASE}/lib/MailScanner/MailScanner/CustomFunctions
271         doexe   lib/MailScanner/CustomFunctions/MyExample.pm
272
273         exeinto /etc/init.d
274         newexe ${FILESDIR}/initd.mailscanner MailScanner
275         newexe ${FILESDIR}/initd.mailscanner-mta MailScanner-mta
276         insinto /etc/conf.d
277         newins ${FILESDIR}/confd.mailscanner MailScanner
278         newins ${S}/confd.mailscanner-mta MailScanner-mta
279
280         #Set up cron jobs
281         exeinto /etc/cron.hourly
282         newexe ${S}/bin/cron/check_MailScanner.cron check_MailScanner
283         newexe ${S}/bin/cron/update_virus_scanners.cron update_virus_scanners
284
285         exeinto /etc/cron.daily
286         newexe ${S}/bin/cron/clean.quarantine.cron clean.quarantine
287
288         if use doc ; then
289                 mkdir -p ${D}usr/share/doc/${PF}/html
290                 cp -a docs/* ${D}usr/share/doc/${PF}/html
291         fi
292
293         dodoc notes.txt docs/QuickInstall.txt docs/README.sql-logging
294
295         keepdir /var/spool/MailScanner/incoming
296         keepdir /var/spool/MailScanner/quarantine
297         keepdir /var/spool/MailScanner/spamassassin
298         keepdir /var/spool/MailScanner/archive
299         keepdir ${BASE}/var
300
301         if use postfix ; then
302                 chown -R postfix:postfix ${D}/var/spool/MailScanner/
303         elif use exim ; then
304                 chown -R mail:mail ${D}/var/spool/MailScanner/
305         else
306                 keepdir /var/spool/mqueue.in
307         fi
308 }
309
310 pkg_postinst() {
311         if [ -n "`grep -xE "[[:space:]]*provide[[:space:]]+(.*[[:space:]]+)*mta([[:space:]]+.*)*" /etc/init.d/${MTA}`" ]; then
312                 ewarn
313                 ewarn "Warning: your mta service startup script /etc/init.d/${MTA}"
314                 ewarn "seems to provide 'mta', this may give problems with /etc/init.d/MailScanner-mta."
315                 ewarn
316                 echo
317         fi
318         einfo "Remove the line containing 'provide mta' from your MTA's init script"
319         einfo "and take care that using etc-update will not insert this line after"
320         einfo "re-emerging / updating your mta!"
321         einfo "The related bug in bugs.gentoo.org is #46897"
322         echo
323
324         if [ -f "/etc/MailScanner/MailScanner.conf" ]; then
325                 einfo "Upgrading the MailScanner.conf file"
326                 mv /etc/MailScanner/MailScanner.conf /etc/MailScanner/MailScanner.conf.pre_upgrade
327             /usr/sbin/upgrade_MailScanner_conf \
328                 /etc/MailScanner/MailScanner.conf.pre_upgrade \
329                 /etc/MailScanner/MailScanner.conf.${MY_PV} \
330                 > /etc/MailScanner/MailScanner.conf  2> /dev/null
331         else
332                 cp /etc/MailScanner/MailScanner.conf.sample /etc/MailScanner/MailScanner.conf
333         fi
334 }
335