/* * Copyright (c) 2004-2006 Sendmail, Inc. and its suppliers. * All rights reserved. * * By using this file, you agree to the terms and conditions set * forth in the LICENSE file which can be found at the top level of * the sendmail distribution. * * $Id: smarcnfdef.h,v 1.58 2007/11/14 06:03:08 ca Exp $ */ #ifndef SM_SMARCNFDEF_H #define SM_SMARCNFDEF_H 1 #include "sm/generic.h" #include "sm/net.h" #include "sm/sm-conf.h" #include "sm/sm-conf-time.h" #include "sm/mta.h" #include "sm/cnf.h" #include "sm/smardef.h" #include "sm/smarcnf.h" #include "sm/mcpcnfs.h" #include "sm/logcnfdef.h" #include "sm/greycnfdef.h" #if SM_SMARCNFDEF #define EXTERN #else /* SM_SMARCNFDEF */ #define EXTERN extern #endif /* SM_SMARCNFDEF */ EXTERN sm_conf_definition_T const smar_dns_flag_names[] #if SM_SMARCNFDEF = { { SM_CONF_DEF_MAGIC, "Use_TCP", sm_conf_type_choice_value, DNS_TSK_FL_USETCP, 0, NULL, 0, NULL, NULL, NULL, "use TCP for connection to DNS server" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "Use_Connect", sm_conf_type_choice_value, DNS_TSK_FL_CONNECTUDP, 0, NULL, 0, NULL, NULL, NULL, "use connect(2) even with UDP" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "Use_resolvconf", sm_conf_type_choice_value, DNS_USE_RSLVCNF, 0, NULL, 0, NULL, NULL, NULL, "read nameservers from /etc/resolv.conf" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; #define DNSBL_TEMPFAIL 0x01 #if 0 EXTERN sm_conf_definition_T const smar_dnsbl_flag_names[] #if SM_SMARCNFDEF = { { SM_CONF_DEF_MAGIC, "tempfail", sm_conf_type_choice_value, DNSBL_TEMPFAIL }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; #endif /* 0 */ EXTERN sm_conf_definition_T smar_dnsbl_defs[] #if SM_SMARCNFDEF = { { SM_CONF_DEF_MAGIC, "domain", sm_conf_type_string, offsetof(smar_cnfdnsbl_T, scdb_name), 0, NULL, SM_CONF_FLAG_STRICTLY_REQUIRED, NULL, NULL, NULL, "DNS blocklist lookup domain" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "tag", sm_conf_type_string, offsetof(smar_cnfdnsbl_T, scdb_tag), 0, NULL, SM_CONF_FLAG_STRICTLY_REQUIRED, NULL, NULL, NULL, "DNS blocklist access map lookup tag" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; EXTERN sm_conf_definition_T smar_dnsbls_defs[] #if SM_SMARCNFDEF = { { SM_CONF_DEF_MAGIC, "", sm_conf_type_section, offsetof(smar_cnf_T, smar_cnf_dnsbl), sizeof(smar_cnfdnsbl_T), NULL, 0, smar_dnsbl_defs, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "", sm_conf_type_array_n, offsetof(smar_cnf_T, smar_cnf_dnsbl_n), sizeof(uint), NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; EXTERN sm_conf_definition_T smar_map_definitions[] #if SM_MAPCNFDEF = { { SM_CONF_DEF_MAGIC, "map declaration", sm_conf_type_union, offsetof(smar_cnf_T, smar_cnf_mapdecl.mapdecl_maps), sizeof(mapspec_T), NULL, 0, map_spec_defs, NULL, NULL, "maps" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "n", sm_conf_type_array_n, offsetof(smar_cnf_T, smar_cnf_mapdecl.mapdecl_n), sizeof(uint), NULL, 0, map_spec_defs, NULL, NULL, "number of maps (implicit)" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_MAPCNFDEF */ ; EXTERN sm_conf_definition_T const smar_alias_flags[] #if SM_SMARCNFDEF = { { SM_CONF_DEF_MAGIC, "localpart", sm_conf_type_choice_value, SMARCNF_FL_MAP_LP, 0, NULL, 0, NULL, NULL, NULL, "apply aliases to local part" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "local_domains", sm_conf_type_choice_value, SMARCNF_FL_MAP_LD, 0, NULL, 0, NULL, NULL, NULL, "apply aliases to local domains" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "all_domains", sm_conf_type_choice_value, SMARCNF_FL_MAP_ALL, 0, NULL, 0, NULL, NULL, NULL, "apply aliases to all domains" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "detail_plus", sm_conf_type_choice_value, SMARCNF_FL_MAP_DETPLUS, 0, NULL, 0, NULL, NULL, NULL, "perform ++ matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "detail_star", sm_conf_type_choice_value, SMARCNF_FL_MAP_DETSTAR, 0, NULL, 0, NULL, NULL, NULL, "perform +* matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "star", sm_conf_type_choice_value, SMARCNF_FL_MAP_STAR, 0, NULL, 0, NULL, NULL, NULL, "perform * matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "domain", sm_conf_type_choice_value, SMARCNF_FL_MAP_DOMAIN, 0, NULL, 0, NULL, NULL, NULL, "perform @domain matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "dotsubdomain", sm_conf_type_choice_value, SMARCNF_FL_MAP_DOTSUBDOM, 0, NULL, 0, NULL, NULL, NULL, "perform @.sub.domain matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "implicitly_match_detail", sm_conf_type_choice_value, SMARCNF_FL_MAP_IMPLDET, 0, NULL, 0, NULL, NULL, NULL, "implicitly match +detail without specifying +* or *" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "full_address", sm_conf_type_choice_value, SMARCNF_FL_MAP_FULL, 0, NULL, 0, NULL, NULL, NULL, "match full address" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "replace_macros", sm_conf_type_choice_value, SMARCNF_FL_MAP_MREPL, 0, NULL, 0, NULL, NULL, NULL, "replace macros" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "preserve_domain", sm_conf_type_choice_value, SMARCNF_FL_MAP_PD, 0, NULL, 0, NULL, NULL, NULL, "preserve domain from key (LHS)" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; EXTERN sm_conf_definition_T smar_alias_defs[] #if SM_SMARCNFDEF = { { SM_CONF_DEF_MAGIC, "file", sm_conf_type_string, offsetof(smar_cnf_T, smar_cnf_alias_fn), 0, SMAR_ALIASES_FILE, 0, NULL, NULL, NULL, "filename of aliases map (including extension)" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "flags", sm_conf_type_choice, offsetof(smar_cnf_T, smar_cnf_alias_fl), sizeof(uint), NULL, SM_CONF_FLAG_MULTIPLE|SM_CONF_FLAG_OR|SM_CONF_FLAG_PLURAL, smar_alias_flags, NULL, NULL, "aliases lookup flags" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "name", sm_conf_type_string, offsetof(smar_cnf_T, smar_cnf_alias_name), 0, NULL, 0, NULL, NULL, NULL, "name of aliases map" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; EXTERN sm_conf_definition_T const smar_lum_flags[] #if SM_SMARCNFDEF = { { SM_CONF_DEF_MAGIC, "localpart", sm_conf_type_choice_value, SMARCNF_FL_MAP_LP, 0, NULL, 0, NULL, NULL, NULL, "lookup only local part" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "local_domains", sm_conf_type_choice_value, SMARCNF_FL_MAP_LD, 0, NULL, 0, NULL, NULL, NULL, "lookup local domains" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "all_domains", sm_conf_type_choice_value, SMARCNF_FL_MAP_ALL, 0, NULL, 0, NULL, NULL, NULL, "lookup all domains" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "detail_plus", sm_conf_type_choice_value, SMARCNF_FL_MAP_DETPLUS, 0, NULL, 0, NULL, NULL, NULL, "perform ++ matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "detail_star", sm_conf_type_choice_value, SMARCNF_FL_MAP_DETSTAR, 0, NULL, 0, NULL, NULL, NULL, "perform +* matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "star", sm_conf_type_choice_value, SMARCNF_FL_MAP_STAR, 0, NULL, 0, NULL, NULL, NULL, "perform * matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "dotsubdomain", sm_conf_type_choice_value, SMARCNF_FL_MAP_DOTSUBDOM, 0, NULL, 0, NULL, NULL, NULL, "perform @.sub.domain matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "implicitly_match_detail", sm_conf_type_choice_value, SMARCNF_FL_MAP_IMPLDET, 0, NULL, 0, NULL, NULL, NULL, "implicitly match +detail without specifying +* or *" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "full_address", sm_conf_type_choice_value, SMARCNF_FL_MAP_FULL, 0, NULL, 0, NULL, NULL, NULL, "match full address" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; EXTERN sm_conf_definition_T smar_lum_defs[] #if SM_SMARCNFDEF = { { SM_CONF_DEF_MAGIC, "name", sm_conf_type_string, offsetof(smar_cnf_T, smar_cnf_lum_name), 0, NULL, SM_CONF_FLAG_STRICTLY_REQUIRED, NULL, NULL, NULL, "name of local user map" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "flags", sm_conf_type_choice, offsetof(smar_cnf_T, smar_cnf_lum_fl), sizeof(uint), NULL, SM_CONF_FLAG_MULTIPLE|SM_CONF_FLAG_OR|SM_CONF_FLAG_PLURAL, smar_lum_flags, NULL, NULL, "local user map lookup flags" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; EXTERN sm_conf_definition_T const smar_mt_flags[] #if SM_SMARCNFDEF = { /* WHICH FLAGS should be allowed here and what is the default? */ { SM_CONF_DEF_MAGIC, "detail_plus", sm_conf_type_choice_value, SMARCNF_FL_MAP_DETPLUS, 0, NULL, 0, NULL, NULL, NULL, "perform ++ matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "detail_star", sm_conf_type_choice_value, SMARCNF_FL_MAP_DETSTAR, 0, NULL, 0, NULL, NULL, NULL, "perform +* matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "star", sm_conf_type_choice_value, SMARCNF_FL_MAP_STAR, 0, NULL, 0, NULL, NULL, NULL, "perform * matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "domain", sm_conf_type_choice_value, SMARCNF_FL_MAP_DOMAIN, 0, NULL, 0, NULL, NULL, NULL, "perform domain matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "dotsubdomain", sm_conf_type_choice_value, SMARCNF_FL_MAP_DOTSUBDOM, 0, NULL, 0, NULL, NULL, NULL, "perform .sub.domain matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "dot", sm_conf_type_choice_value, SMARCNF_FL_MAP_DOT, 0, NULL, 0, NULL, NULL, NULL, "perform . matching" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "implicitly_match_detail", sm_conf_type_choice_value, SMARCNF_FL_MAP_IMPLDET, 0, NULL, 0, NULL, NULL, NULL, "implicitly match +detail without specifying +* or *" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "full_address", sm_conf_type_choice_value, SMARCNF_FL_MAP_FULL, 0, NULL, 0, NULL, NULL, NULL, "match full address" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; EXTERN sm_conf_definition_T smar_mt_defs[] #if SM_SMARCNFDEF = { { SM_CONF_DEF_MAGIC, "file", sm_conf_type_string, offsetof(smar_cnf_T, smar_cnf_mt_fn), 0, SMAR_MT_NAME, 0, NULL, NULL, NULL, "filename of mailertable file" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "name", sm_conf_type_string, offsetof(smar_cnf_T, smar_cnf_mt_name), 0, NULL, 0, NULL, NULL, NULL, "name of mailertable map" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "flags", sm_conf_type_choice, offsetof(smar_cnf_T, smar_cnf_mt_fl), sizeof(uint), NULL, SM_CONF_FLAG_MULTIPLE|SM_CONF_FLAG_OR|SM_CONF_FLAG_PLURAL, smar_mt_flags, NULL, NULL, "mailertable lookup flags" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; EXTERN sm_conf_definition_T smar_access_defs[] #if SM_SMARCNFDEF = { { SM_CONF_DEF_MAGIC, "file", sm_conf_type_string, offsetof(smar_cnf_T, smar_cnf_access_fn), 0, SMAR_ACCESS_FILE, 0, NULL, NULL, NULL, "filename of access map (including extension)" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "name", sm_conf_type_string, offsetof(smar_cnf_T, smar_cnf_access_name), 0, NULL, 0, NULL, NULL, NULL, "name of access map" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; EXTERN sm_conf_definition_T smar_dns_defs[] #if SM_SMARCNFDEF = { { SM_CONF_DEF_MAGIC, "nameservers", sm_conf_type_argv, offsetof(smar_cnf_T, smar_cnf_nameservers), SM_DNS_MAX_TSKS, NULL, 0, NULL, NULL, NULL, "List of nameservers (IPv4 addresses)" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "flags", sm_conf_type_choice, offsetof(smar_cnf_T, smar_cnf_dns_flags), sizeof(uint), NULL, SM_CONF_FLAG_MULTIPLE|SM_CONF_FLAG_OR|SM_CONF_FLAG_PLURAL, smar_dns_flag_names, NULL, NULL, "DNS flags" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "timeout", sm_conf_type_u32, offsetof(smar_cnf_T, smar_cnf_dns_timeout), sizeof(uint), SM_XSTR(DNS_TIMEOUT), 0, sm_conf_time_suffixes, NULL, NULL, "DNS query timeout" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "max_timeouts", sm_conf_type_u32, offsetof(smar_cnf_T, smar_cnf_dns_max_tmos), sizeof(ushort), SM_XSTR(DNS_MAXTIMEOUTS), 0, NULL, NULL, NULL, "number of timeouts after which the name server is considered unresponsive" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "retries", sm_conf_type_u32, offsetof(smar_cnf_T, smar_cnf_dns_retries), sizeof(ushort), "0", 0, NULL, NULL, NULL, "maximum number of DNS query retries" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; EXTERN sm_conf_definition_T smar_defs[] #if SM_SMARCNFDEF = { { SM_CONF_DEF_MAGIC, "DNS", sm_conf_type_section, 0, sizeof(smar_cnf_T), NULL, SM_CONF_FLAG_KEEP_DEFAULT, smar_dns_defs, NULL, NULL, "DNS related options" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "nameserver", sm_conf_type_argv, offsetof(smar_cnf_T, smar_cnf_nameservers), SM_DNS_MAX_TSKS, NULL, 0, NULL, NULL, NULL, "List of nameservers (IPv4 addresses)" SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, "DNS_Flags", sm_conf_type_choice, offsetof(smar_cnf_T, smar_cnf_dns_flags), sizeof(uint), NULL, SM_CONF_FLAG_MULTIPLE|SM_CONF_FLAG_OR|SM_CONF_FLAG_PLURAL, smar_dns_flag_names, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "DNS_timeout", sm_conf_type_u32, offsetof(smar_cnf_T, smar_cnf_dns_timeout), sizeof(uint), SM_XSTR(DNS_TIMEOUT), 0, sm_conf_time_suffixes, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, "log_level", sm_conf_type_u32, offsetof(smar_cnf_T, smar_cnf_loglevel), sizeof(uint), SM_XSTR(SM_LOG_LEVEL), 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, "log", sm_conf_type_section, offsetof(smar_cnf_T, smar_cnf_log), 0, NULL, SM_CONF_FLAG_KEEP_DEFAULT, sm_log_spec_defs, NULL, NULL, SM_CNF_LOG SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* event thread options; enforce lower/upper limits? */ { SM_CONF_DEF_MAGIC, EVTHR_CNF_MIN_THR, sm_conf_type_u32, offsetof(smar_cnf_T, smar_cnf_minthr), sizeof(uint), SM_XSTR(SMAR_CNF_MINTHR), 0, NULL, NULL, NULL, EVTHR_COMM_MIN_THR SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, EVTHR_CNF_MAX_THR, sm_conf_type_u32, offsetof(smar_cnf_T, smar_cnf_maxthr), sizeof(uint), SM_XSTR(SMAR_CNF_MAXTHR), 0, NULL, NULL, NULL, EVTHR_COMM_MAX_THR SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, EVTHR_CNF_MAX_FD, sm_conf_type_u32, offsetof(smar_cnf_T, smar_cnf_maxfd), sizeof(uint), SM_XSTR(SMAR_CNF_MAXFD), 0, NULL, NULL, NULL, EVTHR_COMM_MAX_FD SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, /* { SM_CONF_DEF_MAGIC, "local_user_map", sm_conf_type_string, offsetof(smar_cnf_T, smar_cnf_lum_name), 0, NULL, 0, NULL, NULL, NULL, "Map specifying valid local users/addresses" SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, */ { SM_CONF_DEF_MAGIC, "local_user_map", sm_conf_type_section, 0, sizeof(smar_cnf_T), NULL, SM_CONF_FLAG_KEEP_DEFAULT, smar_lum_defs, NULL, NULL, "Map specifying valid local users/addresses" SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, "dnsbl", sm_conf_type_array, 0, SM_MAX_DNSBL, NULL, SM_CONF_FLAG_MULTIPLE|SM_CONF_FLAG_FLAT, smar_dnsbls_defs, NULL, NULL, "DNS based blacklists" SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, "greylisting", sm_conf_type_section, offsetof(smar_cnf_T, smar_cnf_grey), sizeof(smar_cnf_T), NULL, 0, greycnf_defs, NULL, NULL, "Greylisting options" SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, "map", sm_conf_type_array, 0, /* offset */ 0, /* size (# of elements) */ NULL, /* default */ SM_CONF_FLAG_MULTIPLE, smar_map_definitions, NULL, NULL, "Map declaration" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, { SM_CONF_DEF_MAGIC, "address_delimiter", sm_conf_type_string, offsetof(smar_cnf_T, smar_cnf_addr_delim), 0, "+", 0, NULL, NULL, NULL, "delimiter(s) for address extensions in local part" SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, "aliases", sm_conf_type_section, 0, sizeof(smar_cnf_T), NULL, SM_CONF_FLAG_KEEP_DEFAULT, smar_alias_defs, NULL, NULL, "aliases definition" SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, "mailertable", sm_conf_type_section, 0, sizeof(smar_cnf_T), NULL, SM_CONF_FLAG_KEEP_DEFAULT, smar_mt_defs, NULL, NULL, "mailertable definition" SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, "access_map", sm_conf_type_section, 0, sizeof(smar_cnf_T), NULL, SM_CONF_FLAG_KEEP_DEFAULT, smar_access_defs, NULL, NULL, "access map definition" SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, MCP_DEFS(smar_cnf_T, smar_cnf) /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; EXTERN sm_conf_definition_T smar_global_defs[] #if SM_SMARCNFDEF = { { SM_CONF_DEF_MAGIC, "SMAR_socket", sm_conf_type_string, offsetof(smar_cnf_T, smar_cnf_sock), 0, smarsock, 0, NULL, NULL, NULL, "Address resolver server socket" SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, "hostname", sm_conf_type_string, offsetof(smar_cnf_T, smar_cnf_hostname), 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, "CDB_base_directory", sm_conf_type_string, offsetof(smar_cnf_T, smar_cnf_cdb_base), 0, "", 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(SM_SMAR_CNF_MAGIC) }, { SM_CONF_DEF_MAGIC, "smar", sm_conf_type_section, 0, sizeof(smar_cnf_T), NULL, SM_CONF_FLAG_KEEP_DEFAULT, smar_defs, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) }, /* Sentinel */ { SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0)} } #endif /* SM_SMARCNFDEF */ ; #undef EXTERN #endif /* SM_SMARCNFDEF_H */