#CONF_DIR=/etc/mail CONF_DIR=../../../conf ACCESS_DIR=../../../conf ACCESS_BAK_DIR=../access ACCESS_SITE_DIR=../access SITE_DIR=../site TOOLS_DIR=../../../tools MC_DIR=../mc MC_RELEASE_DIR=../../../mc MC_RELEASES_DIR=../../../mc-releases M4_RELEASE_DIR=../../../m4 M4_RELEASES_DIR=../../../m4-releases ### for gmake INIT_SCRIPT = $(shell test -f /etc/rc.d/sendmail && echo /etc/rc.d/sendmail) INIT_SCRIPT = $(shell test -f /usr/local/etc/rc.d/sendmail.sh && echo /usr/local/etc/rc.d/sendmail.sh) INIT_SCRIPT = $(shell test -f /etc/rc.d/init.d/sendmail && echo /etc/rc.d/init.d/sendmail) INIT_SCRIPT = $(shell test -f /sbin/service && echo /sbin/service sendmail) CF_DIR = $(shell test -d /usr/share/sendmail/cf && echo /usr/share/sendmail/cf) CF_DIR = $(shell test -d /usr/share/sendmail-cf && echo /usr/share/sendmail-cf) MAP_OBJ += $(shell test -f ${CONF_DIR}/virtusertable && echo ${CONF_DIR}/virtusertable.db) MAP_OBJ += $(shell test -f ${CONF_DIR}/mailertable && echo ${CONF_DIR}/mailertable.db) MAP_OBJ += $(shell test -f ${CONF_DIR}/domaintable && echo ${CONF_DIR}/domaintable.db) MAP_OBJ += $(shell test -f ${CONF_DIR}/bitdomain && echo ${CONF_DIR}/bitdomain.db) MAP_OBJ += $(shell test -f ${CONF_DIR}/uudomain && echo ${CONF_DIR}/uudomain.db) MAP_OBJ += $(shell test -f ${CONF_DIR}/genericstable && echo ${CONF_DIR}/genericstable.db) MAP_OBJ += $(shell test -f ${CONF_DIR}/userdb && echo ${CONF_DIR}/userdb.db) MAP_OBJ += $(shell test -f ${CONF_DIR}/access && echo ${CONF_DIR}/access.db) MAP_OBJ += $(shell test -f ${CONF_DIR}/access2 && echo ${CONF_DIR}/access2.db) MAP_OBJ += $(shell test -f ${CONF_DIR}/access3 && echo ${CONF_DIR}/access3.db) MAP_OBJ += $(shell test -f ${CONF_DIR}/access4 && echo ${CONF_DIR}/access4.db) MAP_OBJ += $(shell test -f ${CONF_DIR}/access5 && echo ${CONF_DIR}/access5.db) build : all_cf all : all_cf all_access all_db all_cf : ${CONF_DIR}/sendmail.cf ${CONF_DIR}/submit.cf ${M4_RELEASE_DIR}/hack/*.m4 all_access : access access2 access3 access4 access5 all_db : ${MAP_OBJ} alldb : all_db ########## install ########## release : sh -c ' \ cur_dir=`pwd`; \ up_dir=`dirname $${cur_dir}`; \ up_dir=`basename $${up_dir=}`; \ if [ "$${up_dir=}" == "mc" ]; then \ echo You must run make release from mc-releases subdirectory; \ else \ mc_link=../../../mc; \ if [ -d $${mc_link} ] || [ -h $${mc_link} ]; then rm $${mc_link}; fi; \ cur_dir=`pwd`; \ release_dir=`dirname $${cur_dir}`; \ ln -s $${release_dir} $${mc_link}; \ m4_link=../../../m4; \ if [ -d $${m4_link} ] || [ -h $${m4_link} ]; then rm $${m4_link}; fi; \ m4_ver=`cat ../mc/cf.version`; \ ln -s m4-releases/$${m4_ver} $${m4_link}; \ fi; \ for dir in hack feature mailer; do \ for f in ../../../m4/$${dir}/*.m4; do \ bf=`basename $${f}`; \ if [ -h ${CF_DIR}/$${dir}/$${bf} ]; then rm ${CF_DIR}/$${dir}/$${bf}; fi; \ if [ ! -f ${CF_DIR}/$${dir}/$${bf} ]; then \ ln -s `pwd`/$${f} ${CF_DIR}/$${dir}/$${bf}; \ fi; \ done; \ done; \ ' install-linux : if [ -f /etc/sysconfig/sendmail ] || [ -h /etc/sysconfig/sendmail ]; then rm /etc/sysconfig/sendmail; fi ln -s `pwd`/${SITE_DIR}/sysconfig /etc/sysconfig/sendmail ########## ########## start : ${INIT_SCRIPT} start stop : ${INIT_SCRIPT} stop restart : ${INIT_SCRIPT} restart status : ${INIT_SCRIPT} status reload : /bin/kill -HUP `cat /var/run/sendmail.pid 2> /dev/null` 2> /dev/null ########## cf files ########## sendmail.cf : ${CONF_DIR}/sendmail.cf submit.cf : ${CONF_DIR}/submit.cf compile : touch ${SITE_DIR}/sendmail-conf.inc.mc gmake build ${CONF_DIR}/%.cf: ${MC_DIR}/%.mc ${MC_DIR}/sendmail-conf.default.inc.mc ${SITE_DIR}/sendmail-conf.inc.mc if [ -f $@ ]; then cat $@ > $@.bak; fi m4 \ -DconfSITE_DIR="${SITE_DIR}" \ -DconfMC_DIR="${MC_DIR}" \ $< \ | perl -n -e ' \ s/\s+([\r\n])/$$1/; \ if(/^[\r\n]*$$/) { \ $$empty = 1; \ } else { \ if ($$empty) { \ print("\n"); \ $$empty = 0; \ } \ print $$_; \ }' \ > $@ %.cf: %.mc ${MC_DIR}/sendmail-conf.default.inc.mc ${SITE_DIR}/sendmail-conf.inc.mc if [ -f $@ ]; then cat $@ > $@.bak; fi m4 \ -DconfSITE_DIR="${SITE_DIR}" \ -DconfMC_DIR="${MC_DIR}" \ $< \ | perl -n -e ' \ s/\s+([\r\n])/$$1/; \ if(/^[\r\n]*$$/) { \ $$empty = 1; \ } else { \ if ($$empty) { \ print("\n"); \ $$empty = 0; \ } \ print $$_; \ }' \ > $@ ########## db files ########## clean: rm -f ${CONF_DIR}/*.db ${CONF_DIR}/*~ ${CONF_DIR}/userdb.db: ${CONF_DIR}/userdb @makemap btree $@ < $< ${CONF_DIR}/%.db: ${CONF_DIR}/% echo "> makemap hash $@ < $<" @makemap hash $@ < $< ########## access files ########## uanet_local=${ACCESS_SITE_DIR}/access-uanet uanet_tmp=${SITE_DIR}/${uanet_local}.tmp uanet_bak=${SITE_DIR}/${uanet_local}.bak uanet_list-fetch: rm -rf ${uanet_tmp} wget -c -t0 http://www.colocall.net/ua/?list -O${uanet_tmp} cat ${uanet_local} > ${uanet_bak} cat ${uanet_tmp} | dos2unix | perl -ne 'unless(/^[\r\n]/){chomp;print("NET:UANET:");print;print("\t\tOK\n");}' | cidrexpand > ${uanet_local} access : ${ACCESS_DIR}/access ${ACCESS_DIR}/access : ${ACCESS_SITE_DIR}/access-header ${ACCESS_SITE_DIR}/access-relays if [ -f $@ ]; then cat $@ > $@.bak; fi cat ${ACCESS_SITE_DIR}/access-header > ${ACCESS_DIR}/access cat ${ACCESS_SITE_DIR}/access-relays >> ${ACCESS_DIR}/access access2 : ${ACCESS_DIR}/access2 ${ACCESS_DIR}/access2 : ${ACCESS_SITE_DIR}/access-header ${ACCESS_SITE_DIR}/access-verify ${ACCESS_SITE_DIR}/access-misc ${ACCESS_SITE_DIR}/access-compat if [ -f $@ ]; then cat $@ > $@.bak; fi (cat ${ACCESS_SITE_DIR}/access-header; echo ""; cat ${ACCESS_SITE_DIR}/access-verify; echo ""; cat ${ACCESS_SITE_DIR}/access-misc; echo ""; cat ${ACCESS_SITE_DIR}/access-compat) >${ACCESS_DIR}/access2 access3 : ${ACCESS_DIR}/access3 ${ACCESS_DIR}/access3 : ${ACCESS_SITE_DIR}/access-header ${ACCESS_SITE_DIR}/access-test ${ACCESS_SITE_DIR}/access-nets ${uanet_local} if [ -f $@ ]; then cat $@ > $@.bak; fi (cat ${ACCESS_SITE_DIR}/access-header; cat ${ACCESS_SITE_DIR}/access-test) >${ACCESS_DIR}/access3 ; \ (echo ""; cat ${ACCESS_SITE_DIR}/access-nets | sort | cidrexpand | uniq) >>${ACCESS_DIR}/access3 (echo ""; cat ${uanet_local} | sort | cidrexpand | uniq) >>${ACCESS_DIR}/access3 access4 : ${ACCESS_DIR}/access4 ${ACCESS_DIR}/access4 : ${ACCESS_SITE_DIR}/access-header ${ACCESS_SITE_DIR}/access-spammers ${ACCESS_SITE_DIR}/access-spammers-subject if [ -f $@ ]; then cat $@ > $@.bak; fi (cat ${ACCESS_SITE_DIR}/access-header; cat ${ACCESS_SITE_DIR}/access-spammers | ${TOOLS_DIR}/sort_access.pl) >${ACCESS_DIR}/access4 (echo ""; cat ${ACCESS_SITE_DIR}/access-spammers-subject | ${TOOLS_DIR}/access_make_subject.sh) >>${ACCESS_DIR}/access4 access5 : ${ACCESS_DIR}/access5 ${ACCESS_DIR}/access5 : ${ACCESS_SITE_DIR}/access-header ${ACCESS_SITE_DIR}/access-spammers-extended if [ -f $@ ]; then cat $@ > $@.bak; fi (cat ${ACCESS_SITE_DIR}/access-header; cat ${ACCESS_SITE_DIR}/access-spammers-extended | ${TOOLS_DIR}/access_remark_dupes.pl ${ACCESS_SITE_DIR}/access-spammers) >${ACCESS_DIR}/access5 ##### synchronization ##### SYNC_SRC_HOST=corvax.falbi.kiev.ua SYNC_SRC_DIR=/usr/local/debug/mail/sendmail SYNC_COMMAND=rsync -avz --delete --rsh="ssh -l corvax" ${SYNC_SRC_HOST}:${SYNC_SRC_DIR} sync : sync_mc sync_m4 sync_tools sync_mc : ${SYNC_COMMAND}/mc-releases/ ${MC_RELEASES_DIR}/ --exclude '*/site/*' --exclude '*/access/*' --exclude '*/test/*' sync_m4 : ${SYNC_COMMAND}/m4-releases/ ${M4_RELEASES_DIR}/ sync_tools : ${SYNC_COMMAND}/tools/ ${TOOLS_DIR}/