1 |
Name: qpsmtpd |
2 |
Version: 0.40 |
3 |
Release: 1.0%{?dist} |
4 |
%define orig_version 0.40 |
5 |
Summary: qpsmtpd |
6 |
License: distributable |
7 |
Group: System Environment/Daemons |
8 |
URL: http://smtpd.develooper.com/ |
9 |
BuildRoot: %{_tmppath}/%{name}-root |
10 |
BuildRequires: perl >= 0:5.00503 |
11 |
BuildArchitectures: noarch |
12 |
Requires: perl(Mail::Header), perl(Net::DNS) perl(Net::IP) |
13 |
|
14 |
Source0: qpsmtpd-%{orig_version}.tar.gz |
15 |
Source1: qpsmtpd-forkserver.rc |
16 |
Source2: qpsmtpd-forkserver.sysconfig |
17 |
Source3: qpsmtpd-plugin-file_connection |
18 |
Source4: qpsmtpd-xinetd |
19 |
Source5: in.qpsmtpd |
20 |
|
21 |
Patch1: qpsmtpd-0.31-config.patch |
22 |
Patch2: qpsmtpd-0.33-xinetd.patch |
23 |
Patch3: qpsmtpd-0.33-af_inet6.patch |
24 |
Patch4: qpsmtpd-0.31.1-queue.patch |
25 |
Patch5: qpsmtpd-0.33-smtp-loginfo.patch |
26 |
Patch6: qpsmtpd-0.33-hook-logdebug.patch |
27 |
Patch7: qpsmtpd-0.32-dnsbl-checkanswer.patch |
28 |
Patch8: qpsmtpd-0.32-dns-random-id.patch |
29 |
|
30 |
%description |
31 |
qpsmtpd is a flexible smtpd daemon written in Perl. Apart from the core |
32 |
SMTP features, all functionality is implemented in small "extension |
33 |
plugins" using the easy to use object oriented plugin API. |
34 |
|
35 |
qpsmtpd was originally written as a drop-in qmail-smtpd replacement, but |
36 |
now it also includes a smtp forward and a postfix "backend". |
37 |
|
38 |
%package apache |
39 |
Summary: mod_perl-2 connection handler for qpsmtpd |
40 |
Group: System Environment/Daemons |
41 |
|
42 |
%package async |
43 |
Summary: qpsmtpd using async I/O in a single process |
44 |
Group: System Environment/Daemons |
45 |
|
46 |
%description apache |
47 |
|
48 |
This module implements a mod_perl/apache 2.0 connection handler |
49 |
that turns Apache into an SMTP server using Qpsmtpd. |
50 |
|
51 |
%description async |
52 |
This package contains the Qpsmtpd::PollServer module, which allows |
53 |
qpsmtd to handle many connections in a single process and the |
54 |
qpsmpd-async which uses it. |
55 |
|
56 |
%prep |
57 |
%setup -q -n qpsmtpd-%{orig_version} |
58 |
# XXX - doesn't apply cleanly any more but may still be needed for empty |
59 |
# configs. |
60 |
#%patch1 -p0 -b .config |
61 |
# Merged into upstream: |
62 |
#%patch2 -p0 -b .xinetd |
63 |
#%patch3 -p0 -b .af_inet6 |
64 |
%patch4 -p0 -b .queue |
65 |
#%patch5 -p0 -b .smtp-loginfo |
66 |
#%patch6 -p0 -b .hook-logdebug |
67 |
#%patch7 -p0 -b .dnsbl-checkanswer |
68 |
#%patch8 -p0 -b .dns-random-id |
69 |
|
70 |
%build |
71 |
CFLAGS="$RPM_OPT_FLAGS" perl Makefile.PL INSTALLSITELIB=/usr/lib/perl5/site_perl |
72 |
make |
73 |
|
74 |
|
75 |
%clean |
76 |
rm -rf $RPM_BUILD_ROOT |
77 |
%install |
78 |
|
79 |
rm -rf $RPM_BUILD_ROOT |
80 |
eval `perl '-V:installarchlib'` |
81 |
mkdir -p $RPM_BUILD_ROOT/$installarchlib |
82 |
if grep -q DESTDIR Makefile |
83 |
then |
84 |
make DESTDIR=$RPM_BUILD_ROOT |
85 |
find blib/lib -name '*.pm.*' -exec rm -f {} \; |
86 |
make DESTDIR=$RPM_BUILD_ROOT install |
87 |
|
88 |
else |
89 |
make PREFIX=$RPM_BUILD_ROOT/usr |
90 |
find blib/lib -name '*.pm.*' -exec rm -f {} \; |
91 |
make PREFIX=$RPM_BUILD_ROOT/usr install |
92 |
fi |
93 |
mkdir -p $RPM_BUILD_ROOT/usr/sbin |
94 |
cp qpsmtpd-async $RPM_BUILD_ROOT/usr/sbin |
95 |
mkdir -p $RPM_BUILD_ROOT/usr/share/qpsmtpd |
96 |
cp -r plugins $RPM_BUILD_ROOT/usr/share/qpsmtpd/plugins |
97 |
rm -f $RPM_BUILD_ROOT/usr/share/qpsmtpd/plugins/*.* |
98 |
mkdir -p $RPM_BUILD_ROOT/etc |
99 |
cp -r config.sample $RPM_BUILD_ROOT/etc/qpsmtpd |
100 |
rm -f $RPM_BUILD_ROOT/etc/qpsmtpd/*.* |
101 |
echo /usr/share/qpsmtpd/plugins > $RPM_BUILD_ROOT/etc/qpsmtpd/plugin_dirs |
102 |
echo /var/spool/qpsmtpd > $RPM_BUILD_ROOT/etc/qpsmtpd/spool_dir |
103 |
echo logging/file_connection loglevel LOGINFO /var/log/qpsmtpd/%Y-%m-%d > $RPM_BUILD_ROOT/etc/qpsmtpd/logging |
104 |
mkdir -p $RPM_BUILD_ROOT/etc/init.d/ |
105 |
cp %{SOURCE1} $RPM_BUILD_ROOT/etc/init.d/qpsmtpd-forkserver |
106 |
mkdir -p $RPM_BUILD_ROOT/etc/sysconfig/ |
107 |
cp %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/qpsmtpd-forkserver |
108 |
cp %{SOURCE3} $RPM_BUILD_ROOT/usr/share/qpsmtpd/plugins/logging/file_connection |
109 |
mkdir -p $RPM_BUILD_ROOT/var/spool/qpsmtpd |
110 |
mkdir -p $RPM_BUILD_ROOT/var/log/qpsmtpd |
111 |
mkdir -p $RPM_BUILD_ROOT/etc/xinetd.d |
112 |
cp %{SOURCE4} $RPM_BUILD_ROOT/etc/xinetd.d/smtp |
113 |
mkdir -p $RPM_BUILD_ROOT/usr/sbin |
114 |
cp %{SOURCE5} $RPM_BUILD_ROOT/usr/sbin/in.smtp |
115 |
|
116 |
|
117 |
[ -x /usr/lib/rpm/brp-compress ] && /usr/lib/rpm/brp-compress |
118 |
|
119 |
find $RPM_BUILD_ROOT/usr \( -name perllocal.pod -o -name .packlist \) -exec rm {} \; |
120 |
find $RPM_BUILD_ROOT/usr -type f -print | \ |
121 |
sed "s@^$RPM_BUILD_ROOT@@g" | \ |
122 |
grep -v /Apache | |
123 |
grep -v /Danga | |
124 |
grep -v Qpsmtpd/ConfigServer.pm | |
125 |
grep -v Qpsmtpd/PollServer.pm > qpsmtpd-%{version}-filelist |
126 |
if [ "$(cat qpsmtpd-%{version}-filelist)X" = "X" ] ; then |
127 |
echo "ERROR: EMPTY FILE LIST" |
128 |
exit -1 |
129 |
fi |
130 |
find $RPM_BUILD_ROOT/usr -type f -path '*/Apache*' -print | \ |
131 |
sed "s@^$RPM_BUILD_ROOT@@g" > qpsmtpd-apache-%{version}-filelist |
132 |
|
133 |
%files |
134 |
%defattr(-,root,root) |
135 |
/usr/sbin/in.smtp |
136 |
/usr/bin/qpsmtpd |
137 |
/usr/bin/qpsmtpd-forkserver |
138 |
/usr/lib/perl5/site_perl/Qpsmtpd.pm |
139 |
/usr/lib/perl5/site_perl/Qpsmtpd/Plugin.pm |
140 |
/usr/lib/perl5/site_perl/Qpsmtpd/Constants.pm |
141 |
/usr/lib/perl5/site_perl/Qpsmtpd/Command.pm |
142 |
/usr/lib/perl5/site_perl/Qpsmtpd/TcpServer.pm |
143 |
/usr/lib/perl5/site_perl/Qpsmtpd/Connection.pm |
144 |
/usr/lib/perl5/site_perl/Qpsmtpd/Transaction.pm |
145 |
/usr/lib/perl5/site_perl/Qpsmtpd/Postfix/Constants.pm |
146 |
/usr/lib/perl5/site_perl/Qpsmtpd/Postfix/pf2qp.pl |
147 |
/usr/lib/perl5/site_perl/Qpsmtpd/TcpServer/Prefork.pm |
148 |
/usr/lib/perl5/site_perl/Qpsmtpd/Auth.pm |
149 |
/usr/lib/perl5/site_perl/Qpsmtpd/Utils.pm |
150 |
/usr/lib/perl5/site_perl/Qpsmtpd/SelectServer.pm |
151 |
/usr/lib/perl5/site_perl/Qpsmtpd/DSN.pm |
152 |
/usr/lib/perl5/site_perl/Qpsmtpd/SMTP/Prefork.pm |
153 |
/usr/lib/perl5/site_perl/Qpsmtpd/SMTP.pm |
154 |
/usr/lib/perl5/site_perl/Qpsmtpd/Address.pm |
155 |
/usr/lib/perl5/site_perl/Qpsmtpd/Postfix.pm |
156 |
/usr/share/man/man3/Qpsmtpd::Command.3pm.gz |
157 |
/usr/share/man/man3/Qpsmtpd.3pm.gz |
158 |
/usr/share/man/man3/Qpsmtpd::Transaction.3pm.gz |
159 |
/usr/share/man/man3/Qpsmtpd::Constants.3pm.gz |
160 |
/usr/share/man/man3/Qpsmtpd::ConfigServer.3pm.gz |
161 |
/usr/share/man/man3/Qpsmtpd::DSN.3pm.gz |
162 |
/usr/share/man/man3/Qpsmtpd::Postfix.3pm.gz |
163 |
/usr/share/man/man3/Qpsmtpd::Address.3pm.gz |
164 |
/usr/share/man/man3/Qpsmtpd::Connection.3pm.gz |
165 |
/usr/share/qpsmtpd/plugins/check_loop |
166 |
/usr/share/qpsmtpd/plugins/check_relay |
167 |
/usr/share/qpsmtpd/plugins/sender_permitted_from |
168 |
/usr/share/qpsmtpd/plugins/count_unrecognized_commands |
169 |
/usr/share/qpsmtpd/plugins/spamassassin |
170 |
/usr/share/qpsmtpd/plugins/check_badrcptto |
171 |
/usr/share/qpsmtpd/plugins/rcpt_ok |
172 |
/usr/share/qpsmtpd/plugins/domainkeys |
173 |
/usr/share/qpsmtpd/plugins/virus/klez_filter |
174 |
/usr/share/qpsmtpd/plugins/virus/check_for_hi_virus |
175 |
/usr/share/qpsmtpd/plugins/virus/uvscan |
176 |
/usr/share/qpsmtpd/plugins/virus/kavscanner |
177 |
/usr/share/qpsmtpd/plugins/virus/hbedv |
178 |
/usr/share/qpsmtpd/plugins/virus/clamav |
179 |
/usr/share/qpsmtpd/plugins/virus/clamdscan |
180 |
/usr/share/qpsmtpd/plugins/virus/aveclient |
181 |
/usr/share/qpsmtpd/plugins/virus/sophie |
182 |
/usr/share/qpsmtpd/plugins/virus/bitdefender |
183 |
/usr/share/qpsmtpd/plugins/queue/smtp-forward |
184 |
/usr/share/qpsmtpd/plugins/queue/qmail-queue |
185 |
/usr/share/qpsmtpd/plugins/queue/maildir |
186 |
/usr/share/qpsmtpd/plugins/queue/exim-bsmtp |
187 |
/usr/share/qpsmtpd/plugins/queue/postfix-queue |
188 |
/usr/share/qpsmtpd/plugins/http_config |
189 |
/usr/share/qpsmtpd/plugins/quit_fortune |
190 |
/usr/share/qpsmtpd/plugins/milter |
191 |
/usr/share/qpsmtpd/plugins/auth/authnull |
192 |
/usr/share/qpsmtpd/plugins/auth/authdeny |
193 |
/usr/share/qpsmtpd/plugins/auth/auth_flat_file |
194 |
/usr/share/qpsmtpd/plugins/auth/auth_cvm_unix_local |
195 |
/usr/share/qpsmtpd/plugins/auth/auth_vpopmail_sql |
196 |
/usr/share/qpsmtpd/plugins/auth/auth_ldap_bind |
197 |
/usr/share/qpsmtpd/plugins/tls_cert |
198 |
/usr/share/qpsmtpd/plugins/logging/warn |
199 |
/usr/share/qpsmtpd/plugins/logging/syslog |
200 |
/usr/share/qpsmtpd/plugins/logging/adaptive |
201 |
/usr/share/qpsmtpd/plugins/logging/file |
202 |
/usr/share/qpsmtpd/plugins/logging/devnull |
203 |
/usr/share/qpsmtpd/plugins/logging/file_connection |
204 |
/usr/share/qpsmtpd/plugins/content_log |
205 |
/usr/share/qpsmtpd/plugins/tls |
206 |
/usr/share/qpsmtpd/plugins/check_spamhelo |
207 |
/usr/share/qpsmtpd/plugins/check_norelay |
208 |
/usr/share/qpsmtpd/plugins/check_earlytalker |
209 |
/usr/share/qpsmtpd/plugins/hosts_allow |
210 |
/usr/share/qpsmtpd/plugins/check_badmailfrom |
211 |
/usr/share/qpsmtpd/plugins/dns_whitelist_soft |
212 |
/usr/share/qpsmtpd/plugins/dnsbl |
213 |
/usr/share/qpsmtpd/plugins/ident/geoip |
214 |
/usr/share/qpsmtpd/plugins/ident/p0f |
215 |
/usr/share/qpsmtpd/plugins/relay_only |
216 |
/usr/share/qpsmtpd/plugins/parse_addr_withhelo |
217 |
/usr/share/qpsmtpd/plugins/require_resolvable_fromhost |
218 |
/usr/share/qpsmtpd/plugins/rhsbl |
219 |
/usr/share/qpsmtpd/plugins/dont_require_anglebrackets |
220 |
/usr/share/qpsmtpd/plugins/check_badrcptto_patterns |
221 |
/usr/share/qpsmtpd/plugins/greylisting |
222 |
/usr/share/qpsmtpd/plugins/check_basicheaders |
223 |
/usr/share/qpsmtpd/plugins/check_badmailfromto |
224 |
%doc CREDITS Changes LICENSE README README.plugins STATUS |
225 |
/etc/init.d/qpsmtpd-forkserver |
226 |
%config(noreplace) /etc/qpsmtpd/* |
227 |
%config(noreplace) /etc/xinetd.d/smtp |
228 |
%config(noreplace) /etc/sysconfig/qpsmtpd-forkserver |
229 |
%attr(0700,smtpd,smtpd) %dir /var/spool/qpsmtpd |
230 |
%attr(0750,smtpd,smtpd) %dir /var/log/qpsmtpd |
231 |
|
232 |
%files apache -f qpsmtpd-apache-%{version}-filelist |
233 |
%defattr(-,root,root) |
234 |
|
235 |
%files async |
236 |
%defattr(-,root,root) |
237 |
/usr/sbin/qpsmtpd-async |
238 |
/usr/lib/perl5/site_perl/Danga/Client.pm |
239 |
/usr/lib/perl5/site_perl/Danga/TimeoutSocket.pm |
240 |
/usr/lib/perl5/site_perl/Qpsmtpd/ConfigServer.pm |
241 |
/usr/lib/perl5/site_perl/Qpsmtpd/PollServer.pm |
242 |
/usr/share/qpsmtpd/plugins/async/check_earlytalker |
243 |
/usr/share/qpsmtpd/plugins/async/dnsbl |
244 |
/usr/share/qpsmtpd/plugins/async/require_resolvable_fromhost |
245 |
|
246 |
|
247 |
|
248 |
|
249 |
|
250 |
|
251 |
%pre |
252 |
if ! id smtpd >/dev/null 2>&1 |
253 |
then |
254 |
# need to create smtpd user. |
255 |
if perl -e 'exit ! defined(getgrnam("postdrop"))' |
256 |
then |
257 |
# if postfix is installed, we will probably use |
258 |
# queue/postfix, which will need this: |
259 |
supp="-G postdrop" |
260 |
fi |
261 |
useradd -r -m $supp smtpd |
262 |
fi |
263 |
|
264 |
%post |
265 |
/sbin/chkconfig --add qpsmtpd-forkserver |
266 |
|
267 |
%changelog |
268 |
* Tue Jun 12 2007 <hjp@hjp.at> 0.40-1.0 |
269 |
- updated to 0.40 - no code change. |
270 |
|
271 |
* Thu Jun 07 2007 <hjp@hjp.at> 0.40-0.2 |
272 |
- unset environment variables which are normally tainted in perl. |
273 |
- updated to 0.40rc1 |
274 |
- added dependency on Net::IP (needed by some plugins) |
275 |
|
276 |
* Sat May 05 2007 <hjp@hjp.at> 0.33-0.5 |
277 |
- moved environment cleanup into start() function, otherwise |
278 |
LANG just gets reinitialized. |
279 |
|
280 |
* Sat May 05 2007 <hjp@hjp.at> 0.33-0.4 |
281 |
- split qpsmtpd-async into a separate package to avoid dependency |
282 |
on ParaDNS. |
283 |
|
284 |
* Sat May 05 2007 <hjp@hjp.at> 0.33-0.3 |
285 |
- also unset LANG, LC_ALL and LC_TIME in startup script to prevent |
286 |
locale specific Received headers (bug reported by Dominik Meyer) |
287 |
|
288 |
* Sun Feb 25 2007 <hjp@hjp.at> 0.33-0.2 |
289 |
- 0.3x branch has been merged back to trunk. |
290 |
Got current snapshot (r715) from trunk. |
291 |
|
292 |
* Sun Feb 25 2007 <hjp@hjp.at> 0.33-0.1 |
293 |
- Start forkserver via "daemon" (Gavin Carr) |
294 |
- Fixed 'service qpsmtpd-forkserver status' (Gavin Carr) |
295 |
- Changed policy for config files to noreplace (Gavin Carr) |
296 |
|
297 |
* Sun Nov 05 2006 <hjp@hjp.at> 0.33-0.0 |
298 |
- Upgraded to current snapshot from 0.3x branch (which should become |
299 |
0.33 soon-ish) |
300 |
- included xinetd-support again. |
301 |
|
302 |
* Sat Mar 18 2006 <hjp@hjp.at> 0.32-2 |
303 |
- fix dnsbl to check whether answer fits query. |
304 |
- randomize Net::DNS ids for qpsmtpd-forkserver child processes. |
305 |
|
306 |
* Wed Mar 08 2006 <hjp@hjp.at> 0.32-1 |
307 |
- New upstream 0.32 |
308 |
- rc-file unsets PERL_UNICODE (bug #38397) |
309 |
|
310 |
* Sat Jan 28 2006 <hjp@hjp.at> 0.31.1-3 |
311 |
- Use ${SOURCE*} macros to refer to source files |
312 |
- Avoid invoking rpm and other cleanup in %pre section |
313 |
- Invoke chkconfig in %post. |
314 |
- (Thanks to Josko Plazonic for the reporting these problems and |
315 |
suggesting fixes) |
316 |
|
317 |
* Tue Nov 30 2005 <hjp@hjp.at> 0.31.1-2 |
318 |
- Revision 170 of plugins/loggin/file_connection: |
319 |
Return DECLINED from open_log. |
320 |
Open log in write_log if it isn't already open. |
321 |
|
322 |
* Tue Nov 29 2005 <hjp@hjp.at> 0.31.1-1 |
323 |
- Commented out queue plugins from sample config |
324 |
- Added dependencies |
325 |
- Create smtpd user if it doesn't exist |
326 |
- Added /var/log/qpsmtpd and /var/spool/qpsmtpd |
327 |
|
328 |
* Sat Nov 26 2005 <hjp@hjp.at> |
329 |
- Added file_connection plugin |
330 |
- Startup file for qpsmtpd-forkserver now uses --detach and assumes that |
331 |
a suitable logging module is configured (file_connection by default) |
332 |
|
333 |
* Wed Nov 23 2005 <hjp@hjp.at> |
334 |
- Forkserver drops privileges before loading plugins now. |
335 |
|
336 |
* Sun Nov 20 2005 <hjp@hjp.at> |
337 |
- New upstream 0.31.1 |
338 |
|
339 |
* Mon Nov 14 2005 <hjp@hjp.at> 0.31-8 |
340 |
- New upstream 0.31rc3. |
341 |
- pre-connection patch slightly simplified since upstream fixed one of |
342 |
the bugs. |
343 |
|
344 |
* Tue Aug 23 2005 <hjp@hjp.at> |
345 |
- forced INSTALLSITELIB=/usr/lib/perl5/site_perl as suggested by |
346 |
Charlie Brady. |
347 |
|
348 |
* Sat Aug 20 2005 <hjp@hjp.at> 0.31-7 |
349 |
- RC2 from upstream. |
350 |
- Removed patches which aren't applied from spec file. |
351 |
|
352 |
* Fri Jul 22 2005 <hjp@hjp.at> 0.31-6 |
353 |
- New upstream snapshot from 0.31 branch: svn revision 509. |
354 |
|
355 |
* Sun Jul 17 2005 <hjp@hjp.at> 0.31-5 |
356 |
- include only /etc/init.d/qpsmtpd-forkserver, not /etc/init.d |
357 |
it conflicts with old initscripts packages. |
358 |
|
359 |
* Sun Jul 17 2005 <hjp@hjp.at> 0.31-4 |
360 |
- removed tabs from forkserver |
361 |
|
362 |
* Sun Jul 17 2005 <hjp@hjp.at> 0.31-3 |
363 |
- added startup script for forkserver |
364 |
- changed BuildArchitectures to noarch. |
365 |
|
366 |
* Sat Jul 16 2005 <hjp@hjp.at> 0.31-2 |
367 |
- pre-connection hook is now actually called, not just defined. |
368 |
|
369 |
* Fri Jul 15 2005 <hjp@hjp.at> 0.31-1 |
370 |
- merged with 0.31. Most of my patches are now in the official release. |
371 |
- merged Gavin's per-user-config patch with my dirs patch, since the |
372 |
latter needs a way to turn off logging. |
373 |
- added /etc/qpsmtpd/plugin_dir to package. |
374 |
|
375 |
* Mon Jun 13 2005 <hjp@hjp.at> 0.29-6 |
376 |
- fixed removal of patch backup files |
377 |
- fixed option --pid-file |
378 |
|
379 |
* Sun Jun 12 2005 <hjp@hjp.at> |
380 |
- avoid installing patch backup files |
381 |
- split Apache::Qpsmtpd into separate package to avoid dependency hell. |
382 |
- fixed URL |
383 |
- changed group to Daemons. |
384 |
- Fixed installation for newer versions of ExtUtils::MakeMaker |
385 |
|
386 |
* Wed Jun 1 2005 <hjp@hjp.at> 0.29-5 |
387 |
- Really don't reap children in signal handler. |
388 |
|
389 |
* Tue May 31 2005 <hjp@hjp.at> 0.29-4 |
390 |
- Return 421 for DENYSOFT_DISCONNECT |
391 |
- Don't reap children in signal handler. |
392 |
|
393 |
* Thu May 19 2005 <hjp@hjp.at> 0.29-3 |
394 |
- removed code to accept paths without <>. |
395 |
|
396 |
* Thu May 19 2005 <hjp@hjp.at> 0.29-2 |
397 |
- added QPSMTPD_CONFIG env variable and plugin_dir config. |
398 |
- added supplemental groups and support for pid file |
399 |
- added shared_connect hook |
400 |
- changed log level for SMTP dialog from DEBUG to INFO |
401 |
|
402 |
* Thu Apr 21 2005 hjp@hjp.at |
403 |
- added plugins, /etc and docs. |
404 |
|
405 |
* Mon Apr 18 2005 hjp@hjp.at |
406 |
- Specfile autogenerated |
407 |
|