[sendmail] Introduce systemd unit file, drop SysV support

Jaroslav Škarvada jskarvad at fedoraproject.org
Thu Jul 14 09:01:29 UTC 2011


commit fb3e4b9e3a1fabed83d05f04b123157721ec9e25
Author: Jaroslav Škarvada <jskarvad at redhat.com>
Date:   Thu Jul 14 11:01:07 2011 +0200

    Introduce systemd unit file, drop SysV support

 sendmail.init      |  164 ----------------------------------------------------
 sendmail.service   |   16 +++++
 sendmail.spec      |   61 +++++++++++++++-----
 sendmail.sysconfig |    4 +-
 sm-client.service  |   11 ++++
 5 files changed, 75 insertions(+), 181 deletions(-)
---
diff --git a/sendmail.service b/sendmail.service
new file mode 100644
index 0000000..acbd2c0
--- /dev/null
+++ b/sendmail.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Sendmail Mail Transport Agent.
+After=syslog.target network.target
+Conflicts=postfix.service exim.service
+
+[Service]
+EnvironmentFile=-/etc/sysconfig/sendmail
+ExecStartPre=-/etc/mail/make
+ExecStartPre=-/etc/mail/make aliases
+ExecStart=/usr/sbin/sendmail $DAEMON $QUEUE $SENDMAIL_OPTARG
+ExecReload=-/etc/mail/make
+ExecReload=-/etc/mail/make aliases
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sendmail.spec b/sendmail.spec
index 4394f51..45b358b 100644
--- a/sendmail.spec
+++ b/sendmail.spec
@@ -14,13 +14,13 @@
 Summary: A widely used Mail Transport Agent (MTA)
 Name: sendmail
 Version: 8.14.5
-Release: 2%{?dist}
+Release: 3%{?dist}
 License: Sendmail
 Group: System Environment/Daemons
 URL: http://www.sendmail.org/
 Source0: ftp://ftp.sendmail.org/pub/sendmail/sendmail.%{version}.tar.gz
-# init script
-Source1: sendmail.init
+# Systemd Service file
+Source1: sendmail.service
 # NetworkManager dispatch script
 Source2: sendmail.nm-dispatcher
 # script to generate db and cf files
@@ -31,6 +31,8 @@ Source4: sendmail.sysconfig
 Source5: sendmail.etc-mail-Makefile
 # default sendmail.mc
 Source6: sendmail-redhat.mc
+# Systemd Service file
+Source7: sm-client.service
 # pam config
 Source8: sendmail.pam
 # sasl2 config
@@ -91,11 +93,12 @@ BuildRequires: hesiod-devel
 BuildRequires: groff
 BuildRequires: ghostscript
 BuildRequires: m4
+BuildRequires: systemd-units
 Provides: MTA smtpdaemon server(smtp)
+Requires(post): systemd-units systemd-sysv chkconfig coreutils %{_sbindir}/alternatives
+Requires(preun): systemd-units %{_sbindir}/alternatives
+Requires(postun): systemd-units coreutils %{_sbindir}/alternatives
 Requires(pre): shadow-utils
-Requires(preun): %{_sbindir}/alternatives chkconfig
-Requires(post): %{_sbindir}/alternatives chkconfig coreutils
-Requires(postun): %{_sbindir}/alternatives coreutils
 Requires: initscripts
 Requires: procmail
 Requires: bash >= 2.0
@@ -402,13 +405,18 @@ done
 touch %{buildroot}%{maildir}/aliasesdb-stamp
 
 install -p -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig/sendmail
-install -p -m 755 %{SOURCE1} %{buildroot}%{_initrddir}/sendmail
 install -p -m 755 %{SOURCE2} %{buildroot}%{_sysconfdir}/NetworkManager/dispatcher.d/10-sendmail
 install -p -m 755 %{SOURCE3} %{buildroot}%{maildir}/make
 install -p -m 644 %{SOURCE5} %{buildroot}%{maildir}/Makefile
 
 chmod 644 %{buildroot}%{maildir}/helpfile
 
+# Systemd
+mkdir -p %{buildroot}%{_unitdir}
+install -m644 %{SOURCE1} %{buildroot}%{_unitdir}
+install -m644 %{SOURCE7} %{buildroot}%{_unitdir}
+rm -rf %{buildroot}%{_initrddir}
+
 # fix permissions to allow debuginfo extraction and stripping
 chmod 755 %{buildroot}%{_sbindir}/{mailstats,makemap,praliases,sendmail,smrsh}
 chmod 755 %{buildroot}%{_bindir}/rmail
@@ -467,8 +475,10 @@ getent passwd smmsp >/dev/null || \
 exit 0
 
 %postun
-if [ "$1" -ge "1" ]; then
-	%{_initrddir}/sendmail condrestart >/dev/null 2>&1
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+    /bin/systemctl try-restart sendmail.service >/dev/null 2>&1 || :
+    /bin/systemctl try-restart sm-client.service >/dev/null 2>&1 || :
 	mta=`readlink %{_sysconfdir}/alternatives/mta`
 	if [ "$mta" == "%{_sbindir}/sendmail.sendmail" ]; then
 		%{_sbindir}/alternatives --set mta %{_sbindir}/sendmail.sendmail
@@ -477,7 +487,13 @@ fi
 exit 0
 
 %post
-/sbin/chkconfig --add sendmail
+if [ $1 -eq 1 ] ; then
+# Initial installation
+	/bin/systemctl enable sendmail.service >/dev/null 2>&1 || :
+	/bin/systemctl enable sm-client.service >/dev/null 2>&1 || :
+	/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+fi
+
 # Set up the alternatives files for MTAs.
 %{_sbindir}/alternatives --install %{_sbindir}/sendmail mta %{_sbindir}/sendmail.sendmail 90 \
 	--slave %{_bindir}/mailq mta-mailq %{_bindir}/mailq.sendmail \
@@ -489,8 +505,9 @@ exit 0
 	--slave %{_mandir}/man1/mailq.1.gz mta-mailqman %{_mandir}/man1/mailq.sendmail.1.gz \
 	--slave %{_mandir}/man1/newaliases.1.gz mta-newaliasesman %{_mandir}/man1/newaliases.sendmail.1.gz \
 	--slave %{_mandir}/man5/aliases.5.gz mta-aliasesman %{_mandir}/man5/aliases.sendmail.5.gz \
-	--slave %{_mandir}/man8/rmail.8.gz mta-rmailman %{_mandir}/man8/rmail.sendmail.8.gz \
-	--initscript sendmail
+	--slave %{_mandir}/man8/rmail.8.gz mta-rmailman %{_mandir}/man8/rmail.sendmail.8.gz
+# it is not yet supported in systemd #714830, #697636
+#	--initscript sendmail
 
 # Rebuild maps.
 {
@@ -511,8 +528,10 @@ exit 0
 
 %preun
 if [ $1 = 0 ]; then
-	%{_initrddir}/sendmail stop >/dev/null 2>&1
-	/sbin/chkconfig --del sendmail
+	/bin/systemctl --no-reload sendmail.service > /dev/null 2>&1 || :
+	/bin/systemctl stop sendmail.service > /dev/null 2>&1 || :
+	/bin/systemctl --no-reload sm-client.service > /dev/null 2>&1 || :
+	/bin/systemctl stop sm-client.service > /dev/null 2>&1 || :
 	%{_sbindir}/alternatives --remove mta %{_sbindir}/sendmail.sendmail
 fi
 exit 0
@@ -521,6 +540,14 @@ exit 0
 
 %postun milter -p /sbin/ldconfig
 
+%triggerun -- sendmail < 8.14.5-3
+%{_bindir}/systemd-sysv-convert --save sendmail >/dev/null 2>&1 ||:
+/bin/systemctl enable sendmail.service >/dev/null 2>&1
+/bin/systemctl enable sm-client.service >/dev/null 2>&1
+/sbin/chkconfig --del sendmail >/dev/null 2>&1 || :
+/bin/systemctl try-restart sendmail.service >/dev/null 2>&1 || :
+/bin/systemctl try-restart sm-client.service >/dev/null 2>&1 || :
+
 %files
 %defattr(-,root,root,-)
 %dir %{_docdir}/sendmail-%{version}
@@ -595,7 +622,8 @@ exit 0
 %ghost %{maildir}/domaintable.db
 %ghost %{maildir}/mailertable.db
 
-%{_initrddir}/sendmail
+%{_unitdir}/sendmail.service
+%{_unitdir}/sm-client.service
 %config(noreplace) %{_sysconfdir}/sysconfig/sendmail
 %config(noreplace) %{_sysconfdir}/pam.d/smtp.sendmail
 %{_sysconfdir}/NetworkManager/dispatcher.d/10-sendmail
@@ -645,6 +673,9 @@ exit 0
 
 
 %changelog
+* Thu Jun 30 2011 Jóhann B. Guðmundsson <johannbg at gmail.com> - 8.14.5-3
+- Introduce systemd unit file, drop SysV support
+
 * Thu Jun 16 2011 Paul Howarth <paul at city-fan.org> - 8.14.5-2
 - Rebuilt with libdb-5.2
 
diff --git a/sendmail.sysconfig b/sendmail.sysconfig
index cada3c9..68dc6bc 100644
--- a/sendmail.sysconfig
+++ b/sendmail.sysconfig
@@ -1,2 +1,2 @@
-DAEMON=yes
-QUEUE=1h
+DAEMON="-bd"
+QUEUE="-q1h"
diff --git a/sm-client.service b/sm-client.service
new file mode 100644
index 0000000..17cd64a
--- /dev/null
+++ b/sm-client.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Sendmail Mail Transport Client.
+After=syslog.target network.target sendmail.service
+
+[Service]
+EnvironmentFile=-/etc/sysconfig/sendmail
+ExecStart=/usr/sbin/sendmail -L sm-msp-queue -Ac $QUEUE $SENDMAIL_OPTARG
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target


More information about the scm-commits mailing list