 -----
 Notifier and Publisher
 -----
 -----
 -----

~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements.  See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership.  The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License.  You may obtain a copy of the License at
~~
~~   http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied.  See the License for the
~~ specific language governing permissions and limitations
~~ under the License.

~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/doxia/references/apt-format.html

Notifier and Publisher

 The notifier and publisher are e-mail sender.

[/images/notifier.png]

 The notifier is executed before an update to notify (e-mail destinations) that an update will be performed.
 For instance, it can invite users to logout from an application and save their current work.

[/images/publisher.png]

 The publisher is executed after an update. It sends a complete update report, describing all actions performed by
 Kalumet and notifying if the update has been performed successfully or not.

 Both notifier and publisher are configured in the same way. You define:

 * a SMTP server (for instance mail.host.com)

 * a sender address (for instance kalumet@host.com)

 * and a set of e-mail destinations (for instance me@example.com)

 * in the case of the notifier, you can define a countdown which is a "wait" between the notification e-mail and the
 beginning of the update.