include(confFEATURES_DIR`/cfhead.m4') include(confM4_DIR`/conf.default') include(confSITE_DIR/`conf') ifdef(`confEXIM_USER', `EXIM_USER=confEXIM_USER', `EXIM_USER=mailnull' ) ifdef(`confEXIM_GROUP', `EXIM_GROUP=confEXIM_GROUP', `EXIM_GROUP=mail' ) ifdef(`confSYSTEM_FILTER', `ifelse(len(X`'confSYSTEM_FILTER), `1', `', `dnl system_filter_user=confSYSTEM_FILTER_USER system_filter_group=${EXIM_GROUP} # создание log-файла системного фильтра touch confLOGDIR/filterlog chown ${system_filter_user}:${system_filter_group} confLOGDIR/filterlog chmod 640 confLOGDIR/filterlog ')') dnl ifdef(`confSYSTEM_FILTER', `ifelse(len(X`'confSYSTEM_FILTER), `1', `', `')') ifdef(`confSYSTEM_FILTER_WARNINGS_DIR', `ifelse(len(X`'confSYSTEM_FILTER_WARNINGS_DIR), `1', `', `dnl ifelse(confSYSTEM_FILTER_WARNINGS_AGE,`0',`',` # создание каталога для писем с предупреждениями system_filter_warnings_dir=confSYSTEM_FILTER_WARNINGS_DIR [ -d ${system_filter_warnings_dir} ] || mkdir -p ${system_filter_warnings_dir} chown -R ${system_filter_user}:${system_filter_group} ${system_filter_warnings_dir} chmod 770 ${system_filter_warnings_dir} ') dnl ifelse(confSYSTEM_FILTER_WARNINGS_AGE,`0',`',`') ')') dnl ifdef(`confSYSTEM_FILTER_WARNINGS_DIR', `ifelse(len(X`'confSYSTEM_FILTER_WARNINGS_DIR), `1', `', `')') ifdef(`confSYSTEM_FILTER_QUARANTINE_DIR', `ifelse(len(X`'confSYSTEM_FILTER_QUARANTINE_DIR), `1', `', `dnl ifelse(confSYSTEM_FILTER_QUARANTINE_AGE,`0',`',` # создание каталога для писем, предназначенных для помещения в карантин system_filter_quarantine_dir=confSYSTEM_FILTER_QUARANTINE_DIR [ -d ${system_filter_quarantine_dir} ] || mkdir -p ${system_filter_quarantine_dir} chown -R ${system_filter_user}:${system_filter_group} ${system_filter_quarantine_dir} chmod 770 ${system_filter_quarantine_dir} ') dnl ifelse(confSYSTEM_FILTER_QUARANTINE_AGE,`0',`',`') ')') dnl ifdef(`confSYSTEM_FILTER_QUARANTINE_DIR', `ifelse(len(X`'confSYSTEM_FILTER_QUARANTINE_DIR), `1', `', `')') define(`USE_QUARANTINE', `NO') ifdef(`confANTIVIRUS0_ACT', `define(`USE_QUARANTINE', `YES')') ifelse(USE_QUARANTINE, `YES', ` ifdef(`confQUARANTINE_MAILDIR',`',` ifdef(`confQUARANTINE_DIR', `ifelse(len(X`'confQUARANTINE_DIR), `1', `', `dnl # создание карантина quarantine_dir=confQUARANTINE_DIR [ -d ${quarantine_dir} ] || mkdir -p ${quarantine_dir} chown -R ${system_filter_user}:${system_filter_group} ${quarantine_dir} chmod 770 ${quarantine_dir} ')')dnl ifdef(`confQUARANTINE_DIR', `ifelse(len(X`'confQUARANTINE_DIR), `1', `', `')') ')dnl ifdef(`confQUARANTINE_MAILDIR',`',`') ')dnl ifelse(USE_QUARANTINE, `YES', `') ifelse_strstr(confDELIVERY_TO, `MDIR_VIRTUAL', ` define(`_MDIR_VIRTUAL_', `YES')dnl ', `dnl define(`_MDIR_VIRTUAL_', `NO')dnl ') changequote(<<, >>) ifelse(_MDIR_VIRTUAL_, <>, << # создание каталога с виртуальными maildir-ами imapd_user=confVIRT_MDIR_USER imapd_group=${EXIM_GROUP} spool_dir=confVIRT_MDIR_ROOT [ -d ${spool_dir} ] || mkdir -p ${spool_dir} ifelse(confVIRT_MDIR_CHOWN_RECURSIVE, <>, << chown -R ${imapd_user}:${imapd_group} ${spool_dir} >>, << chown ${imapd_user}:${imapd_group} ${spool_dir} >>)dnl ifelse(confVIRT_MDIR_USER, <>, <<>>, <<>>) chmod confVIRT_MDIR_DIR_MODE ${spool_dir} ifelse(confVIRT_MDIR_CHMOD_RECURSIVE, <>, << define(<<_UNAME_>>, <>)>>)dnl if [ "_UNAME_" = "SunOS" ] ; then for d in ${spool_dir}/* ; do chmod confVIRT_MDIR_DIR_MODE $d chmod confVIRT_MDIR_DIR_MODE $d/* done else [ -z "`find ${spool_dir}/ -maxdepth 3 -mindepth 1 -type d`" ] || find ${spool_dir}/ -maxdepth 3 -mindepth 1 -type d -exec chmod confVIRT_MDIR_DIR_MODE {} \; fi >>)dnl ifelse(confVIRT_MDIR_CHMOD_RECURSIVE, <>, <<>>) >>)dnl ifelse(_MDIR_VIRTUAL_, <>, <<>>) changequote ifelse(confSQLITE_DANGEROUS, `NO', `', ` SQLITE_CACHE=confSQLITE_DANGEROUS_CACHE if [ ! -f ${SQLITE_CACHE} ] ; then sqlite3 ${SQLITE_CACHE} < confENTERPRISE_DIR/sqlite/dangerous.sql echo "INSERT INTO dangerous (id) VALUES(0);" | sqlite3 ${SQLITE_CACHE} fi chown ${EXIM_USER}:${EXIM_GROUP} ${SQLITE_CACHE} chmod 640 ${SQLITE_CACHE} ') ifelse_strstr(confAWL, `SQLITE', ` AWL_CACHE=confAWL_SQLITE_FILE if [ ! -f ${AWL_CACHE} ] ; then sqlite3 ${AWL_CACHE} < confCONTRIB_DIR/awl/awl-sqlite.sql fi chown ${EXIM_USER}:${EXIM_GROUP} ${AWL_CACHE} chmod 640 ${AWL_CACHE} ') dnl ifelse(confAWL, `SQLITE', `') ifelse_strstr(confAWL, `DBM', ` AWL_CACHE=confAWL_DBM_FILE AWL_TMP=/tmp/empty if [ -f ${AWL_TMP} ]; then rm ${AWL_TMP} 2>/dev/null; fi touch ${AWL_TMP} exim_dbmbuild ${AWL_TMP} ${AWL_CACHE} rm ${AWL_TMP} 2>/dev/null chown ${EXIM_USER}:${EXIM_GROUP} ${AWL_CACHE} chmod 640 ${AWL_CACHE} ') dnl ifelse_strstr(confAWL, `DBM', `') ifelse(confCHECK_ACCESS_COMPAT, `NO', `', ` ifelse_strstr(confCHECK_ACCESS_COMPAT_BACKEND, `DBM', ` # создание персональных черных/белых списков DBM_FILE=confCHECK_ACCESS_COMPAT_DBM_FILE if [ ! -f ${DBM_FILE} ]; then DBM_FILE_TMP=/tmp/compat if [ -f ${DBM_FILE_TMP} ]; then rm ${DBM_FILE_TMP} 2>/dev/null; fi touch ${DBM_FILE_TMP} exim_dbmbuild ${DBM_FILE_TMP} ${DBM_FILE} rm ${DBM_FILE_TMP} 2>/dev/null chown ${EXIM_USER}:${EXIM_GROUP} ${DBM_FILE} chmod 640 ${DBM_FILE} fi ') dnl ifelse_strstr(confCHECK_ACCESS_COMPAT_BACKEND, `DBM', `') ') dnl ifelse(confCHECK_ACCESS_COMPAT, `NO', `', `') ifelse_strstr(confAWL, `DBM', ` # создание персональных черных/белых списков DBM_FILE=confAWL_DBM_FILE if [ ! -f ${DBM_FILE} ]; then DBM_FILE_TMP=/tmp/awl if [ -f ${DBM_FILE_TMP} ]; then rm ${DBM_FILE_TMP} 2>/dev/null; fi touch ${DBM_FILE_TMP} exim_dbmbuild ${DBM_FILE_TMP} ${DBM_FILE} rm ${DBM_FILE_TMP} 2>/dev/null chown ${EXIM_USER}:${EXIM_GROUP} ${DBM_FILE} chmod 640 ${DBM_FILE} fi ') dnl ifelse_strstr(confAWL, `NO', `DBM', `') changequote(<<, >>) ifelse(confGREYLIST, <>, <<>>, << ifelse(confGREYLIST_BACKEND, <>, << # создание кеша greylisting-а GREYLIST_CACHE=confGREYLIST_DBM_CACHE if [ ! -f ${GREYLIST_CACHE} ]; then GREYLIST_CACHE_TMP=/tmp/greylist if [ -f ${GREYLIST_CACHE_TMP} ]; then rm ${GREYLIST_CACHE_TMP} 2>/dev/null; fi touch ${GREYLIST_CACHE_TMP} exim_dbmbuild ${GREYLIST_CACHE_TMP} ${GREYLIST_CACHE} rm ${GREYLIST_CACHE_TMP} 2>/dev/null chown ${EXIM_USER}:${EXIM_GROUP} ${GREYLIST_CACHE} chmod 640 ${GREYLIST_CACHE} fi ifelse(confGREYLIST_RELAYS, <>, << GREYLIST_RELAYS_CACHE=confGREYLIST_RELAYS_DBM if [ ! -f ${GREYLIST_RELAYS_CACHE} ]; then GREYLIST_RELAYS_CACHE_TMP=/tmp/greylist if [ -f ${GREYLIST_RELAYS_CACHE_TMP} ]; then rm ${GREYLIST_RELAYS_CACHE_TMP} 2>/dev/null; fi touch ${GREYLIST_RELAYS_CACHE_TMP} exim_dbmbuild ${GREYLIST_RELAYS_CACHE_TMP} ${GREYLIST_RELAYS_CACHE} rm ${GREYLIST_RELAYS_CACHE_TMP} 2>/dev/null chown ${EXIM_USER}:${EXIM_GROUP} ${GREYLIST_RELAYS_CACHE} chmod 640 ${GREYLIST_RELAYS_CACHE} fi >>) dnl ifelse_strstr(confCHECK_MESSAGE_ID, <>, <<>>) >>) dnl ifelse(confGREYLIST_BACKEND, <>, <<>>) ifelse(confGREYLIST_BACKEND, <>, << # создание кеша greylisting-а GREYLIST_CACHE=confGREYLIST_SQLITE_CACHE if [ ! -f ${GREYLIST_CACHE} ] ; then sqlite3 ${GREYLIST_CACHE} < confCONTRIB_DIR/greylist/greylist-sqlite.sql else TABLE=`echo "SELECT name FROM sqlite_master WHERE type='table' and name='greylist';" | sqlite3 ${GREYLIST_CACHE}` [ -z "${TABLE}" ] && sqlite3 ${GREYLIST_CACHE} < confCONTRIB_DIR/greylist/greylist-sqlite.sql fi chown ${EXIM_USER}:${EXIM_GROUP} ${GREYLIST_CACHE} chmod 640 ${GREYLIST_CACHE} ifelse(confGREYLIST_RELAYS, <>, << GREYLIST_RELAYS_CACHE=confGREYLIST_RELAYS_SQLITE if [ ! -f ${GREYLIST_RELAYS_CACHE} ]; then sqlite3 ${GREYLIST_RELAYS_CACHE} < confCONTRIB_DIR/greylist/greylist-sqlite-relays.sql else TABLE=`echo "SELECT name FROM sqlite_master WHERE type='table' and name='greylist_relays';" | sqlite3 ${GREYLIST_CACHE}` [ -z "${TABLE}" ] && sqlite3 ${GREYLIST_RELAYS_CACHE} < confCONTRIB_DIR/greylist/greylist-sqlite-relays.sql fi chown ${EXIM_USER}:${EXIM_GROUP} ${GREYLIST_RELAYS_CACHE} chmod 640 ${GREYLIST_RELAYS_CACHE} >>) dnl ifelse_strstr(confCHECK_MESSAGE_ID, <>, <<>>) >>) dnl ifelse(confGREYLIST_BACKEND, <>, <<>>) ifelse(confGREYLIST_BACKEND, <>, << >>) dnl ifelse(confGREYLIST_BACKEND, <>, <<>>) >>) dnl ifelse(confGREYLIST, <>, <<>>, <<>>) changequote ifdef(`confSTARTTLS', `ifelse(confSTARTTLS, `NO', `', ` ifdef(`confEXIM_USER', `',`define(`confEXIM_USER',`mailnull')') ifdef(`confEXIM_GROUP',`',`define(`confEXIM_GROUP',`mail')') define(`CONFDIR', confCONFDIR) ifelse_strstr(confTLS_CERTIFICATE, `{', `', ` chmod 440 confTLS_CERTIFICATE confTLS_PRIVATEKEY chown confEXIM_USER:confEXIM_GROUP confTLS_CERTIFICATE confTLS_PRIVATEKEY ') ')') define(`USE_CYRUS_MBPATH',`NO') ifelse_strstr(confDELIVERY_TO, `MDIR_VIRT', `ifelse_strstr(confVIRT_MDIR_USERLIST, `CYRUS', `define(`USE_CYRUS_MBPATH',`YES')')') changequote(<<, >>) ifelse(USE_CYRUS_MBPATH, <>, << CYRUS_MBPATH_PATH=confVIRT_MDIR_CYRUS_MBPATH_PATH if [ -f /var/imap/mailboxes.db ] ; then CYRUS_MAILBOXES_DB=/var/imap/mailboxes.db fi if [ -f /var/lib/imap/mailboxes.db ] ; then CYRUS_MAILBOXES_DB=/var/lib/imap/mailboxes.db fi chgrp `ls -l ${CYRUS_MAILBOXES_DB} | awk "{print \\$4}"` ${CYRUS_MBPATH_PATH} chmod g+s ${CYRUS_MBPATH_PATH} chmod g+rw ${CYRUS_MAILBOXES_DB} >>) changequote