##
##  /kolab/etc/postfix/Makefile -- maintainance procedures
##

#   path configuration
PREFIX       = /kolab
SBINDIR      = $(PREFIX)/sbin
ETCDIR       = $(PREFIX)/etc

#   program configuration
RC           = $(ETCDIR)/rc
POSTALIAS    = $(SBINDIR)/postalias
POSTMAP      = $(SBINDIR)/postmap
POSTFIX      = $(SBINDIR)/postfix

#   table filename configuration
T_ACCESS     = access
T_CANONICAL  = canonical
T_VIRTUAL    = virtual
T_RELOCATED  = relocated
T_TRANSPORT  = transport
T_ALIASES    = aliases

#   dependency tracking
TIMESTAMP    = .up-to-date
DEPENDENCIES = Makefile master.cf main.cf $(TABLES)

#   managed tables:
#   - use extension ".db" for hash tables ("hash")
#   - use no extension for regex tables ("pcre")
TABLES = \
    $(T_ACCESS).db    \
    $(T_CANONICAL).db \
    $(T_VIRTUAL).db   \
    $(T_RELOCATED).db \
    $(T_TRANSPORT).db \
    $(T_ALIASES).db

#   default target
all: $(TABLES) $(TIMESTAMP)

#   implicit checking and reloading
$(TIMESTAMP): $(DEPENDENCIES)
	$(POSTFIX) check
	$(POSTFIX) reload >/dev/null 2>&1 || true
	touch $(TIMESTAMP) && chmod 600 $(TIMESTAMP)

#   explicit checking
check:
	$(POSTFIX) check

#   hash table update targets
$(T_ACCESS).db: $(T_ACCESS) $(MAKEFILE)
	$(POSTMAP) hash:$(T_ACCESS)
$(T_CANONICAL).db: $(T_CANONICAL) $(MAKEFILE)
	$(POSTMAP) hash:$(T_CANONICAL)
$(T_VIRTUAL).db: $(T_VIRTUAL) $(MAKEFILE)
	$(POSTMAP) hash:$(T_VIRTUAL)
$(T_RELOCATED).db: $(T_RELOCATED) $(MAKEFILE)
	$(POSTMAP) hash:$(T_RELOCATED)
$(T_TRANSPORT).db: $(T_TRANSPORT) $(MAKEFILE)
	$(POSTMAP) hash:$(T_TRANSPORT)
$(T_ALIASES).db: $(T_ALIASES) $(MAKEFILE)
	$(POSTALIAS) hash:$(T_ALIASES)

#   cleanup target
clean: 
	-rm -f $(TABLES)
	-rm -f $(TIMESTAMP)

#   process management
start:
	$(RC) postfix start
reload:
	$(RC) postfix reload
stop:
	$(RC) postfix stop

