# Set to 1 to include build of both static and shared libraries
%define buildlib 1

Name:           dkim-milter
Version:        2.8.3
Release:        4%{?dist}
Summary:        DomainKeys Identified Mail sender authentication sendmail milter
Group:          System Environment/Daemons
License:        Sendmail
URL:            http://www.dkim.org/
Source0:        http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
Source1:        dkim-milter
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires:  sendmail-devel, openssl-devel, m4, groff
Requires:  sendmail

Requires(pre):    shadow-utils
Requires(post):   /sbin/chkconfig
Requires(preun):  /sbin/service
Requires(postun): /sbin/service

%define keydir %{_sysconfdir}/mail/%{name}/keys

%description
The dkim-milter package is an open source implementation of the DKIM
sender authentication system proposed by the E-mail Signing Technology
Group (ESTG), now a proposed standard of the IETF (RFC4871).

DKIM is an amalgamation of the DomainKeys (DK) proposal by Yahoo!, Inc.
and the Internet Identified Mail (IIM) proposal by Cisco.

This package consists of a library that implements the DKIM service and a
milter-based filter application that can plug in to the sendmail MTA to
provide that service to sufficiently recent sendmail MTAs and other MTAs
that support the milter protocol.

%prep
%setup -q

cat > devtools/Site/site.config.m4 <<'EOF'
define(`confMANROOT', `%{_mandir}/man')
define(`confUBINDIR', `%{_sbindir}')
define(`confCCOPTS', `%{optflags}')
%if %{buildlib}
define(`bld_LIBDKIM_SHARED', `true')
dnl define(`bld_LIBDKIM_INSTALL', `true')
%endif
EOF

%build

%if %{buildlib}
sed -i~ -e "/^bldFINISH/i bldPRODUCT_START(\`library', \`libdkim-static')\n\
define(\`bldINSTALLABLE', \`true')\n\
define(\`bldSOURCES', \`base64.c dkim.c dkim-cache.c dkim-canon.c dkim-keys.c dkim-policy.c dkim-rep.c dkim-tables.c dkim-test.c dkim-ub.c dkim-util.c rfc2822.c util.c vbr.c ')\n\
bldPRODUCT_END" libdkim/Makefile.m4
%endif

make %{?_smp_mflags}

sed -i~ -e 's@^Domain\|^KeyFile\|^Socket@# &@' \
        -e 's@^# KeyList.*@KeyList	%{keydir}/keylist@' \
  dkim-filter/dkim-filter.conf.sample

sed -i~ -e 's!inet:8891@localhost!local:%{_localstatedir}/run/%{name}/%{name}.sock!' INSTALL

%install
rm -rf %{buildroot}

install -p -d %{buildroot}%{_sysconfdir}/sysconfig
cat         > %{buildroot}%{_sysconfdir}/sysconfig/%{name} <<'EOF'
# To sign only, use -bs
# EXTRA_FLAGS=-bs
EOF

install -p -m 644 -D dkim-filter/dkim-filter.conf.sample %{buildroot}%{_sysconfdir}/mail/%{name}/dkim-filter.conf

install -p        -D /dev/null %{buildroot}%{_localstatedir}/run/%{name}/%{name}.sock
install -p -m 644 -D /dev/null %{buildroot}%{keydir}/keylist
cat >                          %{buildroot}%{keydir}/keylist <<'EOF'
# sender-pattern:signing-domain:keypath
# *:example.com:selector
EOF

install -p -d %{buildroot}%{_mandir}/man{3,5,8}
install -p -d %{buildroot}%{_sbindir}
install -p -d %{buildroot}%{_includedir}
install -p -d %{buildroot}%{_libdir}
make install DESTDIR=%{buildroot} {UBIN,MAN}{OWN,GRP}=$(whoami) UBINMODE=755 MANMODE=644

rm -f %{buildroot}%{_libdir}/libdkim.so
%if %{buildlib}
cd %{buildroot}%{_libdir}
ln -s ./libdkim.so.0 ./libdkim.so
mv %{buildroot}%{_libdir}/libdkim-static.a %{buildroot}%{_libdir}/libdkim.a
%endif

rm -rf %{buildroot}%{_mandir}/man3 # /ar.3.gz
%if ! %{buildlib}
rm -rf %{buildroot}%{_includedir} # /dkim.h
%endif

install -p -m 755 -D %{SOURCE1} %{buildroot}%{_initrddir}/%{name}

%pre
getent group %{name} >/dev/null || groupadd -r %{name}
getent passwd %{name} >/dev/null || \
  useradd -r -g %{name} -d %{keydir} -s /sbin/nologin -c "DKIM Milter" %{name}
exit 0

%post
/sbin/ldconfig
/sbin/chkconfig --add %{name} || :

%preun
rm -f %{_libdir}/libdkim.so
if [ $1 -eq 0 ]; then
        /sbin/service %{name} stop > /dev/null || :
        /sbin/chkconfig --del %{name} || :
fi

%postun
if [ "$1" -ge "1" ]; then
        /sbin/service %{name} condrestart >/dev/null || :
fi

%clean
rm -rf %{buildroot}


%files
%defattr(-,root,root,-)
%doc README LICENSE RELEASE_NOTES INSTALL KNOWNBUGS FEATURES

%config(noreplace) %{_sysconfdir}/sysconfig/%{name}

%dir               %{_sysconfdir}/mail/%{name}
%config(noreplace) %{_sysconfdir}/mail/%{name}/dkim-filter.conf

%dir                %attr(700,dkim-milter,dkim-milter) %{keydir}
%config(noreplace)  %attr(-,dkim-milter,dkim-milter)   %{keydir}/keylist

%dir %attr(700,dkim-milter,dkim-milter) %{_localstatedir}/run/%{name}
%ghost                                  %{_localstatedir}/run/%{name}/%{name}.sock

%attr(550,dkim-milter,dkim-milter) %{_sbindir}/dkim-filter
                                   %{_sbindir}/dkim-testkey
                                   %{_sbindir}/dkim-testssp
                                   %{_sbindir}/dkim-genkey

%if %{buildlib}
%attr(550,dkim-milter,dkim-milter) %{_libdir}/libdkim.a
                                   %{_libdir}/libdkim.so
                                   %{_libdir}/libdkim.so.0
                                   %{_includedir}/dkim.h
%endif

%{_initrddir}/%{name}

%{_mandir}/*/*

%changelog
* Fri Sep 25 2009 Rudy Eschauzier <rudy@eschauzier.org> - 2.8.3-4
- Introduce option to include build of both static and shared lib

* Sat Sep 12 2009 Jim Radford <radford@blackbean.org> - 2.8.3-3
- init script cleanup to help selinux

* Fri Aug 21 2009 Tomas Mraz <tmraz@redhat.com> - 2.8.3-2
- rebuilt with new openssl

* Fri Jul 24 2009 Jim Radford <radford@blackbean.org> - 2.8.3-1
- update to 2.8.3

* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.8.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild

* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.8.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild

* Thu Feb 12 2009 Jim Radford <radford@blackbean.org> - 2.8.1-1
- updated to 2.8.1

* Thu Jan 15 2009 Tomas Mraz <tmraz@redhat.com> - 2.7.2-3
- rebuild with new openssl

* Wed Dec 10 2008 Jim Radford <radford@blackbean.org> - 2.7.2-2
- updated to 2.7.2

* Sun Mar 30 2008 Jim Radford <radford@blackbean.org> - 2.5.1-5
- Just use the full path explicitly since daemon --user uses -.
- Add a %postun to restart on upgrade

* Sat Mar 29 2008 Jim Radford <radford@blackbean.org> - 2.5.1-4
- Add /usr/sbin to the PATH so init script can find dkim-filter

* Thu Mar 27 2008 Jim Radford <radford@blackbean.org> - 2.5.1-3
- Socket specification now need local:

* Mon Mar 24 2008 Jim Radford <radford@blackbean.org> - 2.5.1-2
- New style user/group creation, better source URL, support optflags, use install -p
  and move the key dir from /var/db to /etc (since it's not written).

* Mon Mar 24 2008 Jim Radford <radford@blackbean.org> - 2.5.1-1
- New upstream

* Wed Dec 19 2007 Jim Radford <radford@blackbean.org> - 2.4.0-2
- Fix build deps by adding m4 and groff

* Sun Dec 2 2007 Jim Radford <radford@blackbean.org> 2.4.0-1.fc8
- Initial package.
