Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 44470 | Differences between
and this patch

Collapse All | Expand All

(-)qmail-ldap-1.03-r3.ebuild.orig (+356 lines)
Line 0 Link Here
1
# Copyright 1999-2004 Gentoo Technologies, Inc.
2
# Distributed under the terms of the GNU General Public License v2
3
# $Header: /home/cvsroot/gentoo-x86/net-mail/qmail-ldap/qmail-ldap-1.03-r3.ebuild,v 1.2 2004/02/22 16:24:42 agriffis Exp $
4
5
IUSE="ssl"
6
7
inherit eutils
8
9
S=${WORKDIR}/qmail-${PV}
10
11
DESCRIPTION="A modern replacement for sendmail which uses maildirs"
12
HOMEPAGE="http://www.qmail.org/
13
	http://www.jedi.claranet.fr/qmail-tuning.html
14
	http://iain.cx/unix/qmail/mysql.php
15
	http://www.nrg4u.com/"
16
SRC_URI="mirror://qmail/qmail-${PV}.tar.gz
17
	http://www.suspectclass.com/~sgifford/qmail/qmail-0.0.0.0.patch
18
	http://david.acz.org/software/sendmail-flagf.patch
19
	http://www.nrg4u.com/qmail/qmail-ldap-1.03-20040101.patch.gz"
20
21
DEPEND="virtual/glibc
22
	sys-apps/groff
23
	>=net-nds/openldap-2.0.25-r2
24
	>=sys-apps/ucspi-tcp-0.88
25
	>=net-mail/checkpassword-0.90
26
	ssl? ( >=dev-libs/openssl-0.9.6e )"
27
28
RDEPEND="!virtual/mta
29
	${DEPEND}
30
	>=sys-apps/daemontools-0.76-r1
31
	>=net-mail/dot-forward-0.71"
32
33
PROVIDE="virtual/mta
34
	 virtual/mda"
35
36
SLOT="0"
37
LICENSE="as-is"
38
KEYWORDS="~x86 ~ppc ~sparc"
39
40
src_unpack() {
41
	unpack qmail-1.03.tar.gz
42
	unpack qmail-ldap-1.03-20040101.patch.gz
43
44
	cd ${S}
45
46
	#main ldap patch
47
	#includes : qmail-queue patch | big todo | errno
48
	#qmail-103.patch | qmail-local-tabs.patch | big-concurrency.patch
49
	epatch ${WORKDIR}/qmail-ldap-1.03-20040101.patch || die "ldap patch failed"
50
51
	#define 0.0.0.0 as local system/network
52
	epatch ${DISTDIR}/qmail-0.0.0.0.patch || die "0.0.0.0 patch did not apply"
53
54
	#FIXNE
55
	# AUTOHOME DIR MAKE AND FEATURES PATCH
56
	epatch ${FILESDIR}/gentoo.patch || die "Homedir patch did not apply"
57
58
	# Account for Linux filesystems lack of a synchronus link()
59
	epatch ${FILESDIR}/qmail-link-sync-gentoo.patch
60
61
	# make the qmail 'sendmail' binary behave like sendmail's for -f
62
	epatch ${DISTDIR}/sendmail-flagf.patch
63
64
	# This will make the emails headers be written in localtime rather than GMT
65
	# If you really want, uncomment it yourself, as mail really should be in GMT
66
	#epatch ${DISTDIR}/qmail-date-localtime.patch.txt
67
68
	if use ssl; then
69
		epatch ${DISTDIR}/${P}-r2-tls.patch.bz2 || die "tls+auth patch failed";
70
	fi
71
72
	echo -n "${CC} ${CFLAGS}" >${S}/conf-cc
73
	echo -n "${CC} ${LDFLAGS}" > ${S}/conf-ld
74
	echo "500" > conf-spawn
75
76
}
77
78
src_compile() {
79
	cd ${S}
80
	emake it man ldap|| die
81
}
82
83
84
85
src_install() {
86
	cd ${S}
87
88
	einfo "Setting up directory hierarchy ..."
89
90
	diropts -m 755 -o root -g qmail
91
	dodir /var/qmail
92
93
	for i in bin boot control
94
	do
95
		dodir /var/qmail/${i}
96
	done
97
98
	keepdir /var/qmail/users
99
100
	diropts -m 755 -o alias -g qmail
101
	dodir /var/qmail/alias
102
103
	einfo "Installing the qmail software ..."
104
105
	insopts -o root -g qmail -m 755
106
	insinto /var/qmail/boot
107
	doins home home+df proc proc+df binm1 binm1+df binm2 binm2+df binm3 binm3+df
108
109
	into /usr
110
	dodoc ${FILESDIR}/1.03-r2/samples.ldif
111
	dodoc FAQ UPGRADE SENDMAIL INSTALL* TEST* REMOVE* PIC* SECURITY
112
	dodoc SYSDEPS TARGETS THANKS THOUGHTS TODO VERSION
113
114
	insopts -o qmailq -g qmail -m 4711
115
	insinto /var/qmail/bin
116
	doins qmail-queue qmail-queue
117
118
	insopts -o root -g qmail -m 700
119
	insinto /var/qmail/bin
120
	doins qmail-lspawn qmail-start qmail-newu qmail-newmrh
121
122
	insopts -o root -g qmail -m 711
123
	insinto /var/qmail/bin
124
	doins qmail-getpw qmail-local qmail-remote qmail-rspawn \
125
	qmail-clean qmail-send splogger qmail-pw2u
126
127
	insopts -o root -g qmail -m 755
128
	insinto /var/qmail/bin
129
	doins qmail-inject predate datemail mailsubj qmail-showctl \
130
	qmail-qread qmail-qstat qmail-tcpto qmail-tcpok qmail-pop3d \
131
	qmail-popup qmail-qmqpc qmail-qmqpd qmail-qmtpd qmail-smtpd \
132
	sendmail tcp-env qreceipt qsmhook qbiff forward preline \
133
	condredirect bouncesaying except maildirmake maildir2mbox \
134
	maildirwatch qail elq pinq config-fast auth_imap auth_pop \
135
	auth_smtp dirmaker qmail-ldaplookup qmail-todo
136
137
	into /usr
138
	for i in *.1 *.5 *.8
139
	do
140
		doman $i
141
	done
142
143
	einfo "Creating sendmail replacement ..."
144
	diropts -m 755
145
	dodir /usr/sbin /usr/lib
146
	dosym /var/qmail/bin/sendmail /usr/sbin/sendmail
147
	dosym /var/qmail/bin/sendmail /usr/lib/sendmail
148
149
	einfo "Setting up the default aliases ..."
150
	diropts -m 700 -o alias -g qmail
151
	${D}/var/qmail/bin/maildirmake ${D}/var/qmail/alias/.maildir
152
	# for good measure
153
	keepdir /var/qmail/alias/.maildir/{cur,new,tmp}
154
155
	for i in mailer-daemon postmaster root
156
	do
157
		if [ ! -f ${ROOT}/var/qmail/alias/.qmail-${i} ]; then
158
			touch ${D}/var/qmail/alias/.qmail-${i}
159
			fowners alias:qmail /var/qmail/alias/.qmail-${i}
160
		fi
161
	done
162
163
	einfo "Setting up maildirs by default in the account skeleton ..."
164
	diropts -m 755 -o root -g root
165
	insinto /etc/skel
166
	newins ${FILESDIR}/${PV}-${PR}/dot_qmail .qmail.sample
167
	fperms 644 /etc/skel/.qmail.sample
168
	${D}/var/qmail/bin/maildirmake ${D}/etc/skel/.maildir
169
	# for good measure
170
	keepdir /etc/skel/.maildir/{cur,new,tmp}
171
172
	einfo "Setting up all services (send, smtp, qmtp, qmqp, pop3) ..."
173
	insopts -o root -g root -m 755
174
	diropts -m 755 -o root -g root
175
	dodir /var/qmail/supervise
176
177
	for i in send smtpd qmtpd qmqpd pop3d; do
178
		insopts -o root -g root -m 755
179
		diropts -m 755 -o root -g root
180
		dodir /var/qmail/supervise/qmail-${i}{,/log}
181
		diropts -m 755 -o qmaill
182
		keepdir /var/log/qmail/qmail-${i}
183
		fperms +t /var/qmail/supervise/qmail-${i}{,/log}
184
		insinto /var/qmail/supervise/qmail-${i}
185
		newins ${FILESDIR}/${PV}-${PR}/run-qmail${i} run
186
		insinto /var/qmail/supervise/qmail-${i}/log
187
		newins ${FILESDIR}/${PV}-${PR}/run-qmail${i}log run
188
		insinto /etc
189
	done
190
191
	for i in smtp qmtp qmqp pop3; do
192
		if [ -f ${FILESDIR}/tcp.${i}.sample ]; then
193
			newins ${FILESDIR}/tcp.${i}.sample /etc/tcp.${i}
194
		fi
195
		if [ -f ${D}/etc/tcp.${i} ]; then
196
			tcprules ${D}/etc/tcp.${i}.cdb ${D}/etc/.tcp.${i}.tmp \
197
			< ${D}/etc/tcp.${i}
198
		fi
199
	done
200
201
	einfo "Installing the qmail control file ..."
202
	exeinto /var/qmail/bin
203
	doexe ${FILESDIR}/qmail-control
204
205
	einfo "Installing the qmail startup file ..."
206
	insinto /var/qmail
207
	doins ${FILESDIR}/rc \
208
209
	einfo "Installing the qmail configuration file ..."
210
	insinto /var/qmail/control
211
	insopts -o root -g root -m 644
212
	doins ${FILESDIR}/control/defaultdomain \
213
	${FILESDIR}/control/defaulthost \
214
	${FILESDIR}/control/dirmaker \
215
	${FILESDIR}/control/ldapbasedn \
216
	${FILESDIR}/control/ldapgid \
217
	${FILESDIR}/control/ldaplocaldelivery \
218
	${FILESDIR}/control/ldaplogin \
219
	${FILESDIR}/control/ldapmessagestore \
220
	${FILESDIR}/control/ldapserver \
221
	${FILESDIR}/control/ldapuid \
222
	${FILESDIR}/control/qmail-pop3d-loglevel \
223
	${FILESDIR}/control/qmail-pop3d-softlimit \
224
	${FILESDIR}/control/qmail-smtpd-softlimit \
225
	${FILESDIR}/control/qmail-start-loglevel
226
227
	insopts -o qmaild -g root -m 600
228
	insinto /var/qmail/control
229
	doins ${FILESDIR}/control/ldappassword
230
231
	einfo "Installing the qmail.schema ..."
232
	insinto /etc/openldap/schema
233
	doins qmail.schema
234
235
	einfo "Insalling some stock configuration files"
236
	insinto /var/qmail/control
237
	insopts -o root -g root -m 644
238
	doins ${FILESDIR}/${PV}-${PR}/conf-*
239
	newins ${FILESDIR}/${PV}-${PR}/dot_qmail defaultdelivery
240
	use ssl && doins ${FILESDIR}/${PV}-${PR}/servercert.cnf
241
242
	einfo "Configuration sanity checker"
243
	into /var/qmail
244
	insopts -o root -g root -m 644
245
	dobin ${FILESDIR}/${PV}-${PR}/config-sanity-check
246
247
	if use ssl; then
248
		einfo "SSL Certificate creation script"
249
		dobin ${FILESDIR}/${PV}-${PR}/mkservercert
250
		einfo "RSA key generation cronjob"
251
		insinto /etc/cron.daily
252
		doins ${FILESDIR}/${PV}-${PR}/qmail-genrsacert.sh
253
		chmod +x ${D}/etc/cron.daily/qmail-genrsacert.sh
254
	fi
255
}
256
257
rootmailfixup() {
258
	# so you can check mail as root easily
259
	local TMPCMD="ln -sf /var/qmail/alias/.maildir/ ${ROOT}/root/.maildir"
260
	if [ -d "${ROOT}/root/.maildir" ] && [ ! -L "${ROOT}/root/.maildir" ] ; then
261
		einfo "Previously the qmail ebuilds created /root/.maildir/ but not"
262
		einfo "mail was every delivered there. If the directory does not"
263
		einfo "contain any mail, please delete it and run:"
264
		einfo "${TMPCMD}"
265
	else
266
		${TMPCMD}
267
	fi
268
	chown -R alias:qmail ${ROOT}/var/qmail/alias/.maildir 2>/dev/null
269
}
270
271
buildtcprules() {
272
	for i in smtp qmtp qmqp pop3; do
273
		# please note that we don't check if it exists
274
		# as we want it to make the cdb files anyway!
275
		cat ${ROOT}etc/tcp.${i} 2>/dev/null | tcprules ${ROOT}etc/tcp.${i}.cdb ${ROOT}etc/.tcp.${i}.tmp
276
	done
277
}
278
279
280
pkg_postinst() {
281
	einfo "Setting up the message queue hierarchy ..."
282
	# queue-fix makes life easy!
283
	/var/qmail/bin/queue-fix ${ROOT}/var/qmail/queue >/dev/null
284
285
	rootmailfixup
286
	buildtcprules
287
288
	# for good measure
289
	env-update
290
291
	if [ `getent passwd ldapauth | cut -d: -f1` != ldapauth ]; then
292
	useradd -g ldapauth -d /var/qmail/maildirs -s /bin/true -u 11184 ldapauth
293
	fi
294
295
	if [ `getent group ldapauth | cut -d: -f1` != ldapauth ]; then
296
		groupadd ldapauth &>/dev/null
297
	fi
298
299
	einfo "Please do not forget to run, the following syntax :"
300
	einfo "ebuild /var/db/pkg/${CATEGORY}/${PN}-${PV}-${PR}/${PN}-${PV}-${PR}.ebuild config "
301
	einfo "This will setup qmail to run out-of-the-box on your system including SSL. "
302
	echo
303
	einfo "To start qmail at boot you have to enable the /etc/init.d/svscan rc file "
304
	einfo "and create the following links : "
305
	einfo "ln -s /var/qmail/supervise/qmail-send /service/qmail-send "
306
	einfo "ln -s /var/qmail/supervise/qmail-smtpd /service/qmail-smtpd "
307
	einfo "ln -s /var/qmail/supervise/qmail-pop3d /service/qmail-pop3d "
308
	echo
309
	einfo "NOTE: Please check your /var/qmail/control/ldap* files to match your local "
310
	einfo "ldap settings and add the qmail.schema along with \"allow bind_v2\" to your "
311
	einfo "slapd.conf. For sample ldifs, please check "
312
	einfo "/usr/share/doc/${PN}-${PV}-${PR}/samples.ldif.gz "
313
314
315
}
316
317
pkg_config() {
318
319
	# avoid some weird locale problems
320
	export LC_ALL="C"
321
322
	if [ ${ROOT} = "/" ] ; then
323
		if [ ! -f ${ROOT}var/qmail/control/me ] ; then
324
			export qhost=`hostname --fqdn`
325
			${ROOT}var/qmail/bin/config-fast $qhost
326
		fi
327
	else
328
		ewarn "Skipping some configuration as it MUST be run on the final host"
329
	fi
330
331
	einfo "Accepting relaying by default from all ips configured on this machine."
332
	LOCALIPS=`/sbin/ifconfig  | grep inet | cut -d' ' -f 12 -s | cut -b 6-20`
333
	TCPSTRING=":allow,RELAYCLIENT=\"\",RBLSMTPD=\"\""
334
	for ip in $LOCALIPS; do
335
		myline="${ip}${TCPSTRING}"
336
		for proto in smtp qmtp qmqp; do
337
			f="${ROOT}etc/tcp.${proto}"
338
			egrep -q "${myline}" ${f} || echo "${myline}" >>${f}
339
		done
340
	done
341
342
	buildtcprules
343
344
	if use ssl; then
345
		${ROOT}etc/cron.daily/qmail-genrsacert.sh
346
		einfo "Creating a self-signed ssl-certificate:"
347
		/var/qmail/bin/mkservercert
348
		einfo "If you want to have a properly signed certificate "
349
		einfo "instead, do the following:"
350
		einfo "openssl req -new -nodes -out req.pem \\"
351
		einfo "-config /var/qmail/control/servercert.cnf \\"
352
		einfo "-keyout /var/qmail/control/servercert.pem"
353
		einfo "Send req.pem to your CA to obtain signed_req.pem, and do:"
354
		einfo "cat signed_req.pem >> /var/qmail/control/servercert.pem"
355
	fi
356
}

Return to bug 44470