The document describes how to add file status map to sendmail.
The map can chek presence of file or directory and report files size. It can be used for rela time checks if given cyrus mailbox exists.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THE AUTHOR NAME MUST BE QUOTED IN ANY WORK DERIVATED FROM THE WORK.
After you compile in support for fstat map define fstat map in you sendmail.mc:
Pass test name in key and path of file/directory as first parameter e.g.
$(fstat d $@ /absolute_directory_path $)
The map implements three checks:
Apply the patch (the gpg signature) - in main directory of sendmail distribtion execute
patch -p1 < fstat-8.12.11.patch
In devtools/Site/site.config.m4 add the following line:
APPENDDEF(`confMAPDEF',`-DFSTATMAP')dnl
Recompile and reinstall sendmail.
LOCAL_CONFIG Kfstat fstat LOCAL_RULESETS Scheck_fstat R$-:$* $: $(fstat $1 $@ $2 $)
echo "check_fstat d:_absolute_directory_path_" | sendmail -bt -d60.5 -d21.12
echo "check_fstat f:_absolute_file_path_" | sendmail -bt -d60.5 -d21.12
echo "check_fstat s:_absolute_file_path_" | sendmail -bt -d60.5 -d21.12
I created the map to allow real time checks if cyrus mailbox exists by checking presence of top level directory of the mailbox.
I think it may be used for the same purpose with other virtual mailbox (no OS account) servers.