]> Pileus Git - ~andy/sunrise/blob - mail-filter/MailScanner/MailScanner-4.54.6.1.ebuild
mail-filter/MailScanner - add missing virtual/cron RDEPEND, quoting, mkdir -> dodir
[~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         virtual/cron"
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 }
63
64 src_compile() {
65         cd "${S}"
66         # setup MTA
67         if use postfix ; then
68                 RUNASUSER='postfix'
69                 RUNASGROUP='postfix'
70                 INQUEUE='/var/spool/postfix.in/deferred'
71                 OUTQUEUE='/var/spool/postfix/incoming'
72                 MTA='postfix'
73                 SENDMAIL='/usr/lib/sendmail'
74                 SENDMAIL2='/usr/lib/sendmail'
75         elif use exim ; then
76                 RUNASUSER='mail'
77                 RUNASGROUP='mail'
78                 INQUEUE='/var/spool/exim.in/input'
79                 OUTQUEUE='/var/spool/exim/input'
80                 MTA='exim'
81                 SENDMAIL='/usr/sbin/exim -oMr MailScanner'
82                 SENDMAIL2='/usr/sbin/exim -C /etc/exim/exim_out.conf -oMr MailScanner'
83         else
84         #       use sendmail as default, but we should add more as needed
85         #       RUNASUSER='mail'
86         #       RUNASGROUP='mail'
87                 INQUEUE='/var/spool/mqueue.in'
88                 OUTQUEUE='/var/spool/mqueue'
89                 MTA='sendmail'
90                 SENDMAIL='/usr/lib/sendmail'
91                 SENDMAIL2='/usr/lib/sendmail'
92         fi
93
94         # update init script parameters for selected MTA
95         sed \
96                 -e "s|^\(MTA=\).*|\1${MTA}|g" \
97                 "${FILESDIR}"/confd.mailscanner-mta > ${S}/confd.mailscanner-mta
98
99         # setup virus scanner(s)
100                 VIRUS_SCANNERS=""
101                 if use clamav ; then
102                         VIRUS_SCANNERS="clamav ${VIRUS_SCANNERS}"
103                 fi
104                 if use vlnx ; then
105                         VIRUS_SCANNERS="mcafee ${VIRUS_SCANNERS}"
106                 fi
107                 if use f-prot ; then
108                         VIRUS_SCANNERS="f-prot ${VIRUS_SCANNERS}"
109                 fi
110                 if use bitdefender ; then
111                         VIRUS_SCANNERS="bitdefender ${VIRUS_SCANNERS}"
112                 fi
113                 if [ "$VIRUS_SCANNERS" == "" ]; then
114                         VIRUS_SCANNERS="none"
115                         VIRUS_SCANNING="no"
116                 else
117                         VIRUS_SCANNING="yes"
118                 fi
119
120         sed -i \
121                 -e "s/^\(Virus Scanning[ \t]*=\).*/\1 ${VIRUS_SCANNING}/" \
122                 -e "s/^\(Virus Scanners[ \t]*=\).*/\1 ${VIRUS_SCANNERS}/" \
123                 ${S}/etc/MailScanner.conf
124
125         # setup spamassassin
126         if use spamassassin ; then
127                 sed -i \
128                         -e "s/^\(Use SpamAssassin[ \t]*=\).*$/\1 yes/" \
129                         ${S}/etc/MailScanner.conf
130         else
131                 sed -i \
132                         -e "s/^\(Use SpamAssassin[ \t]*=\).*$/\1 no/" \
133                         ${S}/etc/MailScanner.conf
134         fi
135
136         # update bin files
137         sed -i \
138                 -e "s#msbindir=/opt/MailScanner/bin#msbindir=/usr/sbin#g" \
139                 -e "s#config=/opt/MailScanner/etc/MailScanner.conf#config=/etc/MailScanner/MailScanner.conf#g" \
140                 ${S}/bin/check_mailscanner
141
142         sed -i -e "s#/opt/MailScanner/etc#/etc/MailScanner#g" ${S}/bin/update_virus_scanners
143         sed -i \
144                 -e "s#/opt/MailScanner/etc#/etc/MailScanner#g" \
145                 -e "s#/opt/MailScanner/lib#/usr/lib/MailScanner#g" \
146                 ${S}/bin/MailScanner
147
148         # update cron files
149         sed -i \
150             -e "s#/opt/MailScanner/bin/check_mailscanner#/usr/sbin/check_MailScanner#g" \
151                 ${S}/bin/cron/check_MailScanner.cron
152         sed -i \
153                 -e "s#/etc/sysconfig/MailScanner#/etc/conf.d/mailscanner#g" \
154             -e "s#/opt/MailScanner/bin/update_virus_scanners#/usr/sbin/update_virus_scanners#g" \
155                 ${S}/bin/cron/update_virus_scanners.cron
156
157         # Determine some things that may need to be changed in conf file
158         # (need to arrive at sensible replacement for yoursite)
159         YOURSITE=`dnsdomainname | sed -e "s/\./-/g"`
160         BASEBIN="${BASE}/sbin"
161
162         # ClamAV requires some specific changes to MailScanner.conf
163         # when mailscanner is running as root (i.e. sendmail)
164         if use clamav ; then
165                 if [ "$MTA" == "sendmail" ] ; then
166                         WORKGRP="clamav"
167                         WORKPERM="0640"
168                 else
169                         WORKGRP=""
170                         WORKPERM="0600"
171                 fi
172         else
173                 WORKGRP=""
174                 WORKPERM="0600"
175         fi
176
177         # update conf files
178         sed -i \
179                 -e "s#/opt/MailScanner/etc#/etc/MailScanner#g" \
180                 -e "s#/opt/MailScanner/bin#$BASEBIN#g" \
181                 -e "s#/opt/MailScanner/lib#/usr/lib/MailScanner#g" \
182                 -e "s#^\(Run As User[ \t]*=\).*#\1 $RUNASUSER#" \
183                 -e "s#^\(Run As Group[ \t]*=\).*#\1 $RUNASGROUP#" \
184                 -e "s#^\(Incoming Queue Dir[ \t]*=\).*#\1 $INQUEUE#" \
185                 -e "s#^\(Outgoing Queue Dir[ \t]*=\).*#\1 $OUTQUEUE#" \
186                 -e "s#^\(MTA[ \t]*=\).*#\1 $MTA#" \
187                 -e "s/^#\(TNEF.*internal\)$/\1/" \
188                 -e "s/^\(TNEF.*0000\)$/#\1/" \
189                 -e "s#^\(PID file[ \t]=\).*#\1 /var/run/mailscanner.pid#" \
190                 -e "s#^\(%org-name%\)[ \t]*=.*#\1 = ${YOURSITE}#" \
191                 -e "s#^\(Sendmail[ \t]*=\).*#\1 ${SENDMAIL}#" \
192                 -e "s#^\(Sendmail2[ \t]*=\).*#\1 ${SENDMAIL2}#" \
193                 -e "s#^\(Incoming Work Group[ \t]*=\).*#\1 ${WORKGRP}#" \
194                 -e "s#^\(Incoming Work Permissions[ \t]*=\).*#\1 ${WORKPERM}#" \
195                 ${S}/etc/MailScanner.conf
196
197         # net-mail/vlnx net-mail/clamav net-mail/f-prot package compatibility
198
199         sed -i -e "s#PREFIX=/usr/local/uvscan#PREFIX=/opt/vlnx#" ${S}/lib/mcafee-autoupdate
200         sed -i \
201                 -e "s#/opt/MailScanner/lib#/usr/lib/MailScanner#" \
202                 -e 's#^\(mcafee.*\)/usr/local/uvscan$#\1/opt/vlnx#' \
203                 -e 's#^\(clamav\t.*/usr\)/local$#\1#' \
204                 -e 's#^\(f-prot.*\)/usr/local/f-prot$#\1/opt/f-prot#' \
205                 ${S}/etc/virus.scanners.conf
206
207         # update lib files
208         sed -i \
209                 -e "s#/opt/MailScanner/bin#$BASEBIN#g" \
210                 -e "s#/opt/MailScanner/etc#/etc/MailScanner#g" \
211                 -e "s#/opt/MailScanner/lib#/usr/lib/MailScanner#g" \
212                 ${S}/lib/MailScanner/ConfigDefs.pl
213         sed -i -e "s#/etc/MailScanner#/etc/MailScanner#g" ${S}/lib/MailScanner/CustomConfig.pm
214
215         # finally, change MailScanner.conf into MailScanner.conf.sample
216         cp ${S}/etc/MailScanner.conf ${S}/etc/MailScanner.conf.${MY_PV}
217         mv ${S}/etc/MailScanner.conf ${S}/etc/MailScanner.conf.sample
218
219 }
220
221 src_install() {
222         cd ${S}
223         exeinto ${BASE}/sbin
224         #newexe bin/check_mailscanner.linux check_MailScanner
225         newexe  bin/check_mailscanner check_MailScanner
226         doexe   bin/df2mbox
227         doexe   bin/MailScanner
228         doexe   bin/update_virus_scanners
229         doexe   bin/upgrade_MailScanner_conf
230         newexe  bin/Sophos.install.linux Sophos.install
231
232         insinto /etc/MailScanner
233         doins   etc/*.conf
234         doins   etc/mailscanner.conf.with.mcp
235         doins   etc/MailScanner.conf.${MY_PV}
236         doins   etc/MailScanner.conf.sample
237
238         insinto /etc/MailScanner/rules
239         doins   etc/rules/*
240         insinto /etc/MailScanner/mcp
241         doins   etc/mcp/*
242
243         for i in $(ls etc/reports/)
244         do
245                 if [ $i != "cat" ]
246                 then
247                         insinto /etc/MailScanner/reports/$i
248                         doins etc/reports/$i/*
249                 fi
250         done
251
252         insinto ${BASE}/lib/MailScanner
253         doins   lib/*.prf
254
255         exeinto ${BASE}/lib/MailScanner
256         doexe   lib/*-wrapper
257         doexe   lib/*-autoupdate
258         doexe   lib/*-autoupdate.old
259         doexe   lib/*.pm
260
261         exeinto ${BASE}/lib/MailScanner/MailScanner
262         doexe   lib/MailScanner/*.pm
263         doexe   lib/MailScanner/*.pl
264
265         insinto ${BASE}/lib/MailScanner/MailScanner
266         doins   lib/MailScanner/*.txt
267
268         exeinto ${BASE}/lib/MailScanner/MailScanner/CustomFunctions
269         doexe   lib/MailScanner/CustomFunctions/MyExample.pm
270
271         exeinto /etc/init.d
272         newexe "${FILESDIR}"/initd.mailscanner MailScanner
273         newexe "${FILESDIR}"/initd.mailscanner-mta MailScanner-mta
274         insinto /etc/conf.d
275         newins "${FILESDIR}"/confd.mailscanner MailScanner
276         newins ${S}/confd.mailscanner-mta MailScanner-mta
277
278         #Set up cron jobs
279         exeinto /etc/cron.hourly
280         newexe ${S}/bin/cron/check_MailScanner.cron check_MailScanner
281         newexe ${S}/bin/cron/update_virus_scanners.cron update_virus_scanners
282
283         exeinto /etc/cron.daily
284         newexe ${S}/bin/cron/clean.quarantine.cron clean.quarantine
285
286         if use doc ; then
287                 dodir /usr/share/doc/${PF}/html
288                 cp -r docs/* "${D}"usr/share/doc/${PF}/html
289         fi
290
291         dodoc notes.txt docs/QuickInstall.txt docs/README.sql-logging
292
293         keepdir /var/spool/MailScanner/incoming
294         keepdir /var/spool/MailScanner/quarantine
295         keepdir /var/spool/MailScanner/spamassassin
296         keepdir /var/spool/MailScanner/archive
297         keepdir ${BASE}/var
298
299         if use postfix ; then
300                 chown -R postfix:postfix "${D}"/var/spool/MailScanner/
301         elif use exim ; then
302                 chown -R mail:mail "${D}"/var/spool/MailScanner/
303         else
304                 keepdir /var/spool/mqueue.in
305         fi
306 }
307
308 pkg_postinst() {
309         if [ -n "`grep -xE "[[:space:]]*provide[[:space:]]+(.*[[:space:]]+)*mta([[:space:]]+.*)*" /etc/init.d/${MTA}`" ]; then
310                 ewarn
311                 ewarn "Warning: your mta service startup script /etc/init.d/${MTA}"
312                 ewarn "seems to provide 'mta', this may give problems with /etc/init.d/MailScanner-mta."
313                 ewarn
314                 echo
315         fi
316         einfo "Remove the line containing 'provide mta' from your MTA's init script"
317         einfo "and take care that using etc-update will not insert this line after"
318         einfo "re-emerging / updating your mta!"
319         einfo "The related bug in bugs.gentoo.org is #46897"
320         echo
321
322         if [ -f "/etc/MailScanner/MailScanner.conf" ]; then
323                 einfo "Upgrading the MailScanner.conf file"
324                 mv /etc/MailScanner/MailScanner.conf /etc/MailScanner/MailScanner.conf.pre_upgrade
325             /usr/sbin/upgrade_MailScanner_conf \
326                 /etc/MailScanner/MailScanner.conf.pre_upgrade \
327                 /etc/MailScanner/MailScanner.conf.${MY_PV} \
328                 > /etc/MailScanner/MailScanner.conf  2> /dev/null
329         else
330                 cp /etc/MailScanner/MailScanner.conf.sample /etc/MailScanner/MailScanner.conf
331         fi
332 }
333