c087e7b7809ff5bc60845c2156e8fcbdb0ead2a9
[dragonfly.git] / etc / mail / Makefile
1 #
2 # $FreeBSD: src/etc/mail/Makefile,v 1.9.2.23 2003/02/12 03:57:52 gshapiro Exp $
3 #
4 # This Makefile provides an easy way to generate the configuration
5 # file and database maps for the sendmail(8) daemon.
6 #
7 # The user-driven targets are:
8 #
9 # all     - Build cf, maps and aliases
10 # cf      - Build the .cf file from .mc file
11 # maps    - Build the feature maps
12 # aliases - Build the sendmail aliases
13 # install - Install the .cf file as /etc/mail/sendmail.cf
14 #
15 # For acting on both the MTA daemon and MSP queue running daemon:
16 # start        - Start both the sendmail MTA daemon and MSP queue running
17 #                daemon with the flags defined in /etc/defaults/rc.conf or
18 #                /etc/rc.conf
19 # stop         - Stop both the sendmail MTA daemon and MSP queue running
20 #                daemon
21 # restart      - Restart both the sendmail MTA daemon and MSP queue running
22 #                daemon
23 #
24 # For acting on just the MTA daemon:
25 # start-mta    - Start the sendmail MTA daemon with the flags defined in
26 #                /etc/defaults/rc.conf or /etc/rc.conf
27 # stop-mta     - Stop the sendmail MTA daemon
28 # restart-mta  - Restart the sendmail MTA daemon
29 #
30 # For acting on just the MSP queue running daemon:
31 # start-mspq   - Start the sendmail MSP queue running daemon with the
32 #                flags defined in /etc/defaults/rc.conf or /etc/rc.conf
33 # stop-mspq    - Stop the sendmail MSP queue running daemon
34 # restart-mspq - Restart the sendmail MSP queue running daemon
35 #
36 # Calling `make' will generate the updated versions when either the
37 # aliases or one of the map files were changed.
38 #
39 # A `make install` is only necessary after modifying the .mc file. In
40 # this case one would normally also call `make restart' to allow the
41 # running sendmail to pick up the changes as well.
42 #
43 # ------------------------------------------------------------------------
44 # This Makefile uses `<HOSTNAME>.mc' as the default MTA .mc file.  This
45 # can be changed by defining SENDMAIL_MC in /etc/make.conf, e.g.:
46 #
47 #                  SENDMAIL_MC=/etc/mail/myconfig.mc
48 #
49 # If '<HOSTNAME>.mc' does not exist, it is created using 'dragonfly.mc'
50 # as a template.
51 #
52 # It also uses '<HOSTNAME>.submit.mc' as the default mail submission .mc
53 # file. This can be changed by defining SENDMAIL_SUBMIT_MC in
54 # /etc/make.conf, e.g.:
55 #
56 #                  SENDMAIL_SUBMIT_MC=/etc/mail/mysubmit.mc
57 #
58 # If '<HOSTNAME>.submit.mc' does not exist, it is created using
59 # 'dragonfly.submit.mc' as a template.
60 # ------------------------------------------------------------------------
61 #
62 # The Makefile knows about the following maps:
63 # access, bitdomain, domaintable, genericstable, mailertable, userdb,
64 # uucpdomain, virtusertable
65 #
66
67 .ifndef SENDMAIL_MC
68 SENDMAIL_MC!=           hostname
69 SENDMAIL_MC:=           ${SENDMAIL_MC}.mc
70
71 ${SENDMAIL_MC}:
72         cp dragonfly.mc ${SENDMAIL_MC}
73 .endif
74
75 .ifndef SENDMAIL_SUBMIT_MC
76 SENDMAIL_SUBMIT_MC!=    hostname
77 SENDMAIL_SUBMIT_MC:=    ${SENDMAIL_SUBMIT_MC}.submit.mc
78
79 ${SENDMAIL_SUBMIT_MC}:
80         cp dragonfly.submit.mc ${SENDMAIL_SUBMIT_MC}
81 .endif
82
83 INSTALL_CF=             ${SENDMAIL_MC:R}.cf
84 INSTALL_SUBMIT_CF=      ${SENDMAIL_SUBMIT_MC:R}.cf
85
86 SENDMAIL_ALIASES?=      /etc/mail/aliases
87
88 #
89 # The sendmail startup script
90 #
91 SENDMAIL_START_SCRIPT?= /etc/rc.sendmail
92
93 #
94 # Some useful programs we need.
95 #
96 SENDMAIL?=              /usr/local/sbin/sendmail
97 MAKEMAP?=               /usr/local/sbin/makemap
98 M4?=                    /usr/bin/m4
99
100 # Set a reasonable default
101 .MAIN:  all
102
103 #
104 # ------------------------------------------------------------------------
105 #
106 # The Makefile picks up the list of files from SENDMAIL_MAP_SRC and
107 # stores the matching .db filenames in SENDMAIL_MAP_OBJ if the file
108 # exists in the current directory.  SENDMAIL_MAP_TYPE is the database
109 # type to use when calling makemap.
110 #
111 SENDMAIL_MAP_SRC+=      mailertable domaintable bitdomain uucpdomain \
112                         genericstable virtusertable access
113 SENDMAIL_MAP_OBJ=
114 SENDMAIL_MAP_TYPE?=     hash
115
116 .for _f in ${SENDMAIL_MAP_SRC} userdb
117 .if exists(${_f})
118 SENDMAIL_MAP_OBJ+=      ${_f}.db
119 .endif
120 .endfor
121
122 #
123 # The makemap command is used to generate a hashed map from the textfile.
124 #
125 .for _f in ${SENDMAIL_MAP_SRC}
126 .if (exists(${_f}.sample) && !exists(${_f}))
127 ${_f}:          ${_f}.sample
128         sed -e 's/^/#/' < ${.OODATE} > ${.TARGET}
129 .endif
130
131 ${_f}.db:       ${_f}
132         ${MAKEMAP} ${SENDMAIL_MAP_TYPE} ${.TARGET} < ${.OODATE}
133         chmod ${SENDMAIL_MAP_PERMS} ${.TARGET}
134 .endfor
135
136 userdb.db:      userdb
137         ${MAKEMAP} btree ${.TARGET} < ${.OODATE}
138         chmod ${SENDMAIL_MAP_PERMS} ${.TARGET}
139
140
141 #
142 # The .cf file needs to be recreated if the templates were modified.
143 #
144 M4FILES!=       find ${SENDMAIL_CF_DIR} -type f -name '*.m4' -print
145
146 #
147 # M4(1) is used to generate the .cf file from the .mc file.
148 #
149 .SUFFIXES:      .cf .mc
150
151 .mc.cf:         ${M4FILES}
152         ${M4} -D_CF_DIR_=${SENDMAIL_CF_DIR}/ ${SENDMAIL_M4_FLAGS} \
153                 ${SENDMAIL_CF_DIR}/m4/cf.m4 ${@:R}.mc > ${.TARGET}
154
155 #
156 # Aliases are handled separately since they normally reside in /etc
157 # and can be rebuild without the help of makemap.
158 #
159 .for _f in ${SENDMAIL_ALIASES}
160 ${_f}.db:       ${_f}
161         ${SENDMAIL} -bi -OAliasFile=${.ALLSRC}
162         chmod ${SENDMAIL_MAP_PERMS} ${.TARGET}
163 .endfor
164
165 #
166 # ------------------------------------------------------------------------
167 #
168
169 all:            cf maps aliases
170
171 clean:
172
173 depend:
174
175 cf:             ${INSTALL_CF} ${INSTALL_SUBMIT_CF}
176
177 install: install-cf install-submit-cf
178
179 install-cf:     ${INSTALL_CF}
180 .if ${INSTALL_CF} != /etc/mail/sendmail.cf
181         ${INSTALL} -m ${SHAREMODE} ${INSTALL_CF} /etc/mail/sendmail.cf
182 .endif
183
184
185 install-submit-cf:      ${INSTALL_SUBMIT_CF}
186 .if ${INSTALL_SUBMIT_CF} != /etc/mail/submit.cf
187         ${INSTALL} -m ${SHAREMODE} ${INSTALL_SUBMIT_CF} /etc/mail/submit.cf
188 .endif
189
190 aliases:        ${SENDMAIL_ALIASES:%=%.db}
191
192 maps:           ${SENDMAIL_MAP_OBJ}
193
194 start start-mta start-mspq:
195         @if [ -r ${SENDMAIL_START_SCRIPT} ]; then \
196                 echo -n 'Starting:'; \
197                 sh ${SENDMAIL_START_SCRIPT} $@; \
198                 echo '.'; \
199         fi
200
201 stop stop-mta stop-mspq:
202         @if [ -r ${SENDMAIL_START_SCRIPT} ]; then \
203                 echo -n 'Stopping:'; \
204                 sh ${SENDMAIL_START_SCRIPT} $@; \
205                 echo '.'; \
206         fi
207
208 restart restart-mta restart-mspq:
209         @if [ -r ${SENDMAIL_START_SCRIPT} ]; then \
210                 echo -n 'Restarting:'; \
211                 sh ${SENDMAIL_START_SCRIPT} $@; \
212                 echo '.'; \
213         fi
214
215 # For the definition of $SHAREMODE
216 .include <bsd.own.mk>