4 \chapter{Messages Resource}
5 \label{MessagesChapter}
6 \index[general]{Resource!Messages}
7 \index[general]{Messages Resource}
9 The Messages resource defines how messages are to be handled and destinations
10 to which they should be sent.
12 Even though each daemon has a full message handler, within the File daemon and
13 the Storage daemon, you will normally choose to send all the appropriate
14 messages back to the Director. This permits all the messages associated with a
15 single Job to be combined in the Director and sent as a single email message
16 to the user, or logged together in a single file.
18 Each message that Bacula generates (i.e. that each daemon generates) has an
19 associated type such as INFO, WARNING, ERROR, FATAL, etc. Using the message
20 resource, you can specify which message types you wish to see and where they
21 should be sent. In addition, a message may be sent to multiple destinations.
22 For example, you may want all error messages both logged as well as sent to
23 you in an email. By defining multiple messages resources, you can have
24 different message handling for each type of Job (e.g. Full backups versus
27 In general, messages are attached to a Job and are included in the Job report.
28 There are some rare cases, where this is not possible, e.g. when no job is
29 running, or if a communications error occurs between a daemon and the
30 director. In those cases, the message may remain in the system, and should be
31 flushed at the end of the next Job. However, since such messages are not
32 attached to a Job, any that are mailed will be sent to {\bf
33 /usr/lib/sendmail}. On some systems, such as FreeBSD, if your sendmail is in a
34 different place, you may want to link it to the the above location.
36 The records contained in a Messages resource consist of a {\bf destination}
37 specification followed by a list of {\bf message-types} in the format:
41 \item [destination = message-type1, message-type2, message-type3, ... ]
42 \index[dir]{destination}
45 or for those destinations that need and address specification (e.g. email):
49 \item [destination = address = message-type1, message-type2,
51 \index[dir]{destination}
53 Where {\bf destination} is one of a predefined set of keywords that define
54 where the message is to be sent ({\bf stdout}, {\bf file}, ...), {\bf
55 message-type} is one of a predefined set of keywords that define the type of
56 message generated by {\bf Bacula} ({\bf ERROR}, {\bf WARNING}, {\bf FATAL},
57 ...), and {\bf address} varies according to the {\bf destination} keyword, but
58 is typically an email address or a filename.
61 The following are the list of the possible record definitions that can be used
62 in a message resource.
68 Start of the Messages records.
70 \item [Name = \lt{}name\gt{}]
72 The name of the Messages resource. The name you specify here will be used to
73 tie this Messages resource to a Job and/or to the daemon.
76 \item [MailCommand = \lt{}command\gt{}]
77 \index[dir]{MailCommand}
78 In the absence of this resource, Bacula will send all mail using the
81 {\bf mail -s "Bacula Message" \lt{}recipients\gt{}}
83 In many cases, depending on your machine, this command may not work. Using
84 the {\bf MailCommand}, you can specify exactly how to send the mail. During
85 the processing of the {\bf command}, normally specified as a quoted string,
86 the following substitutions will be used:
90 \item \%c = Client's name
91 \item \%d = Director's name
92 \item \%e = Job Exit code (OK, Error, ...)
94 \item \%j = Unique Job name
97 \item \%r = Recipients
98 \item \%t = Job type (e.g. Backup, ...)
101 The following is the command I (Kern) use. Note, the whole command should
102 appear on a single line in the configuration file rather than split as is
103 done here for presentation:
105 {\bf mailcommand = "/home/kern/bacula/bin/bsmtp -h mail.example.com -f
106 \textbackslash{}"\textbackslash{}(Bacula\textbackslash{})
107 \%r\textbackslash{}" -s \textbackslash{}"Bacula: \%t \%e of \%c
108 \%l\textbackslash{}" \%r"}
110 Note, the {\bf bsmtp} program is provided as part of {\bf Bacula}. For
111 additional details, please see the
112 \ilink{ bsmtp -- Customizing Your Email Messages}{bsmtp} section of
113 the Bacula Utility Programs chapter of this manual. Please test any {\bf
114 mailcommand} that you use to ensure that your bsmtp gateway accepts the
115 addressing form that you use. Certain programs such as Exim can be very
116 selective as to what forms are permitted particularly in the from part.
118 \item [OperatorCommand = \lt{}command\gt{}]
119 \index[fd]{OperatorCommand}
120 This resource specification is similar to the {\bf MailCommand} except that
121 it is used for Operator messages. The substitutions performed for the {\bf
122 MailCommand} are also done for this command. Normally, you will set this
123 command to the same value as specified for the {\bf MailCommand}.
125 \item [\lt{}destination\gt{} = \lt{}message-type1\gt{},
126 \lt{}message-type2\gt{}, ...]
127 \index[fd]{\lt{}destination\gt{}}
129 Where {\bf destination} may be one of the following:
135 Send the message to standard output.
139 Send the message to standard error.
142 \index[console]{console}
143 Send the message to the console (Bacula Console). These messages are held
144 until the console program connects to the Director.
147 \item {\bf \lt{}destination\gt{} = \lt{}address\gt{} =
148 \lt{}message-type1\gt{}, \lt{}message-type2\gt{}, ...}
149 \index[console]{\lt{}destination\gt{}}
151 Where {\bf address} depends on the {\bf destination}.
153 The {\bf destination} may be one of the following:
158 \index[dir]{director}
159 \index[general]{director}
160 Send the message to the Director whose name is given in the {\bf address}
161 field. Note, in the current implementation, the Director Name is ignored, and
162 the message is sent to the Director that started the Job.
166 \index[general]{file}
167 Send the message to the filename given in the {\bf address} field. If the
168 file already exists, it will be overwritten.
172 \index[general]{append}
173 Append the message to the filename given in the {\bf address} field. If the
174 file already exists, it will be appended to. If the file does not exist, it
178 \index[general]{syslog}
179 Send the message to the system log (syslog) using the facility specified in
180 the {\bf address} field. Note, for the moment, the {\bf address} field is
181 ignored and the message is always sent to the LOG\_DAEMON facility with
182 level LOG\_ERR. See {\bf man 3 syslog} for more details. Example:
184 syslog = all, !skipped, !saved
188 \index[general]{mail}
189 Send the message to the email addresses that are given as a comma
190 separated list in the {\bf address} field. Mail messages are grouped
191 together during a job and then sent as a single email message when the
192 job terminates. The advantage of this destination is that you are
193 notified about every Job that runs. However, if you backup five or ten
194 machines every night, the volume of email messages can be important.
195 Some users use filter programs such as {\bf procmail} to automatically
196 file this email based on the Job termination code (see {\bf
199 \item [mail on error]
200 \index[general]{mail on error}
201 Send the message to the email addresses that are given as a comma
202 separated list in the {\bf address} field if the Job terminates with an
203 error condition. MailOnError messages are grouped together during a job
204 and then sent as a single email message when the job terminates. This
205 destination differs from the {\bf mail} destination in that if the Job
206 terminates normally, the message is totally discarded (for this
207 destination). If the Job terminates in error, it is emailed. By using
208 other destinations such as {\bf append} you can ensure that even if the
209 Job terminates normally, the output information is saved.
211 \item [mail on success]
212 \index[general]{mail on success}
213 Send the message to the email addresses that are given as a comma
214 separated list in the {\bf address} field if the Job terminates
215 normally (no error condition). MailOnSuccess messages are grouped
216 together during a job and then sent as a single email message when the
217 job terminates. This destination differs from the {\bf mail}
218 destination in that if the Job terminates abnormally, the message is
219 totally discarded (for this destination). If the Job terminates in
220 normally, it is emailed.
223 \index[general]{operator}
224 Send the message to the email addresses that are specified as a comma
225 separated list in the {\bf address} field. This is similar to {\bf
226 mail} above, except that each message is sent as received. Thus there
227 is one email per message. This is most useful for {\bf mount} messages
231 \index[general]{console}
232 Send the message to the Bacula console.
235 \index[general]{stdout}
236 Send the message to the standard output (normally not used).
239 \index[general]{stderr}
240 Send the message to the standard error output (normally not used).
243 \index[general]{catalog}
244 Send the message to the Catalog database. The message will be
245 written to the table named {\bf Log} and a timestamp field will
246 also be added. This permits Job Reports and other messages to
247 be recorded in the Catalog so that they can be accessed by
248 reporting software. Bacula will prune the Log records associated
249 with a Job when the Job records are pruned. Otherwise, Bacula
250 never uses these records internally, so this destination is only
251 used for special purpose programs (e.g. {\bf bweb}).
255 For any destination, the {\bf message-type} field is a comma separated
256 list of the following types or classes of messages:
261 \index[general]{info}
262 General information messages.
265 \index[general]{warning}
266 Warning messages. Generally this is some unusual condition but not expected
270 \index[general]{error}
271 Non-fatal error messages. The job continues running. Any error message should
272 be investigated as it means that something went wrong.
275 \index[general]{fatal}
276 Fatal error messages. Fatal errors cause the job to terminate.
279 \index[general]{terminate}
280 Message generated when the daemon shuts down.
284 \index[general]{saved}
285 Files saved normally.
289 \index[general]{notsaved}
290 Files not saved because of some error. Usually because the file cannot be
291 accessed (i.e. it does not exist or is not mounted).
295 \index[general]{skipped}
296 Files that were skipped because of a user supplied option such as an
297 incremental backup or a file that matches an exclusion pattern. This is
298 not considered an error condition such as the files listed for the {\bf
299 notsaved} type because the configuration file explicitly requests these
300 types of files to be skipped. For example, any unchanged file during an
301 incremental backup, or any subdirectory if the no recursion option is
306 \index[general]{mount}
307 Volume mount or intervention requests from the Storage daemon. These
308 requests require a specific operator intervention for the job to
313 \index[general]{restored}
314 The {\bf ls} style listing generated for each file restored is sent to
322 \index[general]{security}
323 Security info/warning messages principally from unauthorized
327 \index[general]{alert}
328 Alert messages. These are messages generated by tape alerts.
331 \index[general]{volmgmt}
332 Volume management messages. Currently there are no volume mangement
338 The following is an example of a valid Messages resource definition, where
339 all messages except files explicitly skipped or daemon termination messages
340 are sent by email to enforcement@sec.com. In addition all mount messages
341 are sent to the operator (i.e. emailed to enforcement@sec.com). Finally
342 all messages other than explicitly skipped files and files saved are sent
349 mail = enforcement@sec.com = all, !skipped, !terminate
350 operator = enforcement@sec.com = mount
351 console = all, !skipped, !saved
356 With the exception of the email address (changed to avoid junk mail from
357 robot's), an example Director's Messages resource is as follows. Note, the {\bf
358 mailcommand} and {\bf operatorcommand} are on a single line -- they had to be
359 split for this manual:
365 mailcommand = "bacula/bin/bsmtp -h mail.example.com \
366 -f \"\(Bacula\) %r\" -s \"Bacula: %t %e of %c %l\" %r"
367 operatorcommand = "bacula/bin/bsmtp -h mail.example.com \
368 -f \"\(Bacula\) %r\" -s \"Bacula: Intervention needed \
370 MailOnError = security@example.com = all, !skipped, \
372 append = "bacula/bin/log" = all, !skipped, !terminate
373 operator = security@example.com = mount
374 console = all, !skipped, !saved