From fb3e4b9e3a1fabed83d05f04b123157721ec9e25 Mon Sep 17 00:00:00 2001 From: Jaroslav Škarvada Date: Jul 14 2011 09:01:07 +0000 Subject: Introduce systemd unit file, drop SysV support --- diff --git a/sendmail.init b/sendmail.init deleted file mode 100644 index 851eb2b..0000000 --- a/sendmail.init +++ /dev/null @@ -1,164 +0,0 @@ -#!/bin/bash -# -# sendmail This shell script takes care of starting and stopping -# sendmail. -# -# chkconfig: 2345 80 30 -# description: Sendmail is a Mail Transport Agent, which is the program \ -# that moves mail from one machine to another. -# processname: sendmail -# config: /etc/mail/sendmail.cf -# pidfile: /var/run/sendmail.pid - -### BEGIN INIT INFO -# Provides: sendmail smtpdaemon $mail-transfer-agent -# Required-Start: $local_fs $network -# Required-Stop: $local_fs $network -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: start and stop sendmail -# Description: sendmail is a Mail Transport Agent (MTA) -### END INIT INFO - -# Source function library. -. /etc/rc.d/init.d/functions - -# Source networking configuration. -[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network - -# Source sendmail configureation. -if [ -f /etc/sysconfig/sendmail ]; then - . /etc/sysconfig/sendmail -else - DAEMON=no - QUEUE=1h -fi -[ -z "$SMQUEUE" ] && SMQUEUE="$QUEUE" -[ -z "$SMQUEUE" ] && SMQUEUE=1h - -# Check that we're a privileged user -[ `id -u` = 0 ] || exit 4 - -# Check that networking is up. -[ "${NETWORKING}" = "no" ] && exit 1 - -[ -x /usr/sbin/sendmail ] || exit 5 - -prog="sendmail" - -updateconf() { - /etc/mail/make > /dev/null 2>&1 - if [ $? -eq 15 ]; then - echo -n $"Package sendmail-cf is required to update configuration." - warning - echo - fi - /etc/mail/make aliases > /dev/null 2>&1 -} - -start() { - # Start daemons. - ret=0 - updateconf - echo -n $"Starting $prog: " - daemon /usr/sbin/sendmail $([ "x$DAEMON" = xyes ] && echo -bd) \ - $([ -n "$QUEUE" ] && echo -q$QUEUE) $SENDMAIL_OPTARG - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/sendmail - let ret+=$RETVAL - - if [ ! -f /var/run/sm-client.pid ]; then - echo -n $"Starting sm-client: " - touch /var/run/sm-client.pid - chown smmsp:smmsp /var/run/sm-client.pid - if [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled; then - /sbin/restorecon /var/run/sm-client.pid - fi - daemon --check sm-client /usr/sbin/sendmail -L sm-msp-queue -Ac \ - -q$SMQUEUE $SENDMAIL_OPTARG - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/sm-client - let ret+=$RETVAL - fi - - [ $ret -eq 0 ] && return 0 || return 1 -} - -reload() { - updateconf - echo -n $"Reloading $prog: " - killproc sendmail -HUP - RETVAL=$? - echo - if [ $RETVAL -eq 0 -a -f /var/run/sm-client.pid ]; then - echo -n $"reloading sm-client: " - killproc sm-client -HUP - RETVAL=$? - echo - fi - return $RETVAL -} - -stop() { - # Stop daemons. - if [ -f /var/run/sm-client.pid ]; then - echo -n $"Shutting down sm-client: " - killproc sm-client - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && rm -f /var/run/sm-client.pid - [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/sm-client - fi - echo -n $"Shutting down $prog: " - killproc sendmail - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/sendmail - return $RETVAL -} - -status -p /var/run/sendmail.pid >/dev/null || status -p /var/run/sm-client.pid >/dev/null -running=$? - -# See how we were called. -case "$1" in - start) - [ $running -eq 0 ] && exit 0 - start - RETVAL=$? - ;; - stop) - [ $running -eq 0 ] || exit 0 - stop - RETVAL=$? - ;; - reload) - [ $running -eq 0 ] || exit 7 - reload - RETVAL=$? - ;; - restart|force-reload) - stop - start - RETVAL=$? - ;; - condrestart|try-restart) - [ $running -eq 0 ] || exit 0 - stop - start - RETVAL=$? - ;; - status) - echo -n sendmail; status -p /var/run/sendmail.pid -l sendmail - RETVAL=$? - echo -n sm-client; status -p /var/run/sm-client.pid -l sm-client - [ $RETVAL -eq 0 ] && RETVAL=$? - ;; - *) - echo $"Usage: $0 {start|stop|restart|condrestart|status}" - RETVAL=2 -esac - -exit $RETVAL 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 - 8.14.5-3 +- Introduce systemd unit file, drop SysV support + * Thu Jun 16 2011 Paul Howarth - 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