]> git.pld-linux.org Git - packages/exim.git/blob - exim.init
- rel 4; add checkconfig to init script; fix segfault on some messages in queue
[packages/exim.git] / exim.init
1 #!/bin/sh
2 #
3 # exim          This shell script takes care of starting and stopping Exim.
4 #
5 # chkconfig:    2345 80 30
6 # description:  Exim is a Mail Transport Agent, which is the program \
7 #               that moves mail from one machine to another.
8 # processname:  exim
9 # config:       /etc/exim.cf
10 # pidfile:      /var/spool/exim/exim-daemon.pid
11
12 # Source function library.
13 . /etc/rc.d/init.d/functions
14
15 # Source networking configuration.
16 . /etc/sysconfig/network
17
18 QUEUE=1h
19
20 # Source exim configureation.
21 if [ -f /etc/sysconfig/exim ]; then
22         . /etc/sysconfig/exim
23 fi
24
25 # Check that networking is up.
26 if is_yes "${NETWORKING}"; then
27         if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
28                 msg_network_down "Exim"
29                 exit 1
30         fi
31 else
32         exit 0
33 fi
34
35 checkconfig() {
36         local details=${1:-0} ret
37
38         RETVAL=0
39         if [ $details = 1 ]; then
40                 for CONFIG in /etc/mail/exim.conf $EXIM_EXTRA_CONFIGS; do
41                         run_cmd "Checking exim configuration ($CONFIG)" exim -bV -C $CONFIG
42                         ret=$?
43                         if [ $ret != 0 ]; then
44                                 RETVAL=$ret
45                         fi
46                 done
47         else
48                 for CONFIG in /etc/mail/exim.conf $EXIM_EXTRA_CONFIGS; do
49                         exim -bV -C $CONFIG > /dev/null 2>&1
50                         ret=$?
51                         if [ $ret != 0 ]; then
52                                 show "Checking %s configuration (%s)" "exim" "$CONFIG"; fail
53                                 RETVAL=$ret
54                         fi
55                 done
56                 if [ $RETVAL != 0 ]; then
57                         nls 'Configuration test failed. See details with %s "checkconfig"' $0
58                         exit $RETVAL
59                 fi
60         fi
61 }
62
63 start() {
64         # Start daemons.
65         if [ -f /var/lock/subsys/exim ]; then
66                 msg_already_running "Exim"
67                 return
68         fi
69
70         msg_starting "Exim"
71         daemon /usr/bin/exim \
72                 $( is_yes "$ALLOW_TCP_CONNECTIONS" && echo -bd ) \
73                 $( [ -n "$QUEUE" ] && echo -q$QUEUE )
74         for CONFIG in $EXIM_EXTRA_CONFIGS; do
75                         msg_starting "Exim ($CONFIG)"
76                         daemon exim \
77                                 $( is_yes "$ALLOW_TCP_CONNECTIONS" && echo -bd ) \
78                                 $( [ -n "$QUEUE" ] && echo -q$QUEUE ) \
79                                 -C $CONFIG
80         done
81         RETVAL=$?
82         [ $RETVAL -eq 0 ] && touch /var/lock/subsys/exim
83 }
84
85 stop() {
86         # Stop daemons.
87         if [ ! -f /var/lock/subsys/exim ]; then
88                 msg_not_running "Exim"
89                 return
90         fi
91
92         msg_stopping "Exim"
93         killproc --pidfile /var/spool/exim/exim-daemon.pid exim
94         rm -f /var/lock/subsys/exim /var/spool/exim/exim-daemon.pid >/dev/null 2>&1
95 }
96
97 condrestart() {
98         if [ ! -f /var/lock/subsys/exim ]; then
99                 msg_not_running "Exim"
100                 RETVAL=$1
101                 return
102         fi
103
104         checkconfig
105         stop
106         start
107 }
108
109 reload() {
110         if [ ! -f /var/lock/subsys/exim ]; then
111                 msg_not_running "Exim"
112                 RETVAL=7
113                 return
114         fi
115
116         checkconfig
117         msg_reloading "Exim"
118         killproc exim -HUP
119         RETVAL=$?
120 }
121
122 RETVAL=0
123 # See how we were called.
124 case "$1" in
125   start)
126         start
127         ;;
128   stop)
129         stop
130         ;;
131   restart)
132         checkconfig
133         stop
134         start
135         ;;
136   try-restart)
137         condrestart 0
138         ;;
139   reload|force-reload)
140         reload
141         ;;
142   checkconfig|configtest)
143         checkconfig 1
144         ;;
145   status)
146         status exim
147         exit $?
148         ;;
149   *)
150         msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|configtest|status}"
151         exit 3
152 esac
153
154 exit $RETVAL
This page took 0.09067 seconds and 3 git commands to generate.