370 static const char *check_myhostname(
void)
372 static const char *
name;
392 if ((dot = strchr(name,
'.')) == 0) {
405 static const char *check_mydomainname(
void)
426 static void check_default_privs(
void)
431 msg_fatal(
"file %s/%s: parameter %s: unknown user name value: %s",
435 msg_fatal(
"file %s/%s: parameter %s: user %s has privileged user ID",
439 msg_fatal(
"file %s/%s: parameter %s: user %s has privileged group ID",
446 static void check_mail_owner(
void)
451 msg_fatal(
"file %s/%s: parameter %s: unknown user name value: %s",
455 msg_fatal(
"file %s/%s: parameter %s: user %s has privileged user ID",
459 msg_fatal(
"file %s/%s: parameter %s: user %s has privileged group ID",
471 msg_fatal(
"file %s/%s: parameter %s: user %s has same user ID as %s",
478 static void check_sgid_group(
void)
483 msg_fatal(
"file %s/%s: parameter %s: unknown group name: %s",
487 msg_fatal(
"file %s/%s: parameter %s: group %s has privileged group ID",
498 msg_fatal(
"file %s/%s: parameter %s: group %s has same group ID as %s",
505 static void check_overlap(
void)
508 msg_fatal(
"file %s/%s: parameters %s and %s specify the same user %s",
513 msg_fatal(
"file %s/%s: parameters %s and %s: users %s and %s have the same user ID: %ld",
519 msg_fatal(
"file %s/%s: parameters %s and %s: users %s and %s have the same group ID: %ld",
525 msg_fatal(
"file %s/%s: parameters %s and %s: user %s and group %s have the same group ID: %ld",
531 msg_fatal(
"file %s/%s: parameters %s and %s: user %s and group %s have the same group ID: %ld",
538 #ifdef MYORIGIN_FROM_FILE
542 static char *read_param_from_file(
const char *path)
553 #define SKIP(start, var, cond) do { \
554 for (var = start; *var && (cond); var++) \
558 #define TRIM(s) do { \
560 for (p = (s) + strlen(s); p > (s) && ISSPACE(p[-1]); p--) \
565 fp =
safe_open(path, O_RDONLY, 0, (
struct stat *) 0, -1, -1, why);
585 static void check_legacy_defaults(
void)
817 check_legacy_defaults();
826 msg_fatal(
"file %s/%s: parameter %s: unrecognized value: %s",
849 msg_warn(
"%s is true, but EAI support is not compiled in",
870 msg_fatal(
"file %s/%s: parameter %s: bad parameter value: %s",
874 msg_fatal(
"file %s/%s: parameter %s: bad parameter value: %s",
887 #ifdef MYORIGIN_FROM_FILE
901 check_default_privs();
947 msg_fatal(
"%s and %s parameter settings must not be identical: %s",
954 msg_fatal(
"%s parameter setting must not contain multiple values: %s",
958 msg_fatal(
"%s parameter setting must not contain multiple values: %s",
965 msg_fatal(
"file %s/%s: parameters %s and %s: %s",
#define DEF_SMTPUTF8_ENABLE
#define VAR_STRICT_SMTPUTF8
const char null_format_string[1]
int midna_domain_transitional
int warn_compat_break_relay_domains
int var_disable_mime_oconv
#define DEF_ERROR_SERVICE
#define VAR_ERROR_SERVICE
#define VAR_OWNREQ_SPECIAL
char * var_fflush_domains
#define VAR_STRICT_8BITMIME
#define DEF_TRIGGER_TIMEOUT
char * var_proxymap_service
char * mystrdup(const char *str)
char * var_cleanup_service
#define DEF_MULTI_CONF_DIRS
#define VAR_PROXY_INTERFACES
char * var_import_environ
#define DEF_TRACE_SERVICE
#define DEF_FFLUSH_DOMAINS
int vstring_get_nonl(VSTRING *vp, VSTREAM *fp)
#define VAR_MIME_BOUND_LEN
#define VAR_IMPORT_ENVIRON
#define DEF_RELAY_DOMAINS
#define VAR_RELAY_DOMAINS
#define VAR_DB_CREATE_BUF
#define VAR_CYRUS_SASL_AUTHZID
#define DEF_DEFAULT_PRIVS
#define VAR_FLUSH_SERVICE
#define VAR_SMTPUTF8_ENABLE
#define DEF_STRICT_7BIT_HDRS
INET_PROTO_INFO * inet_proto_init(const char *context, const char *protocols)
#define VAR_INT_FILT_CLASSES
#define VAR_MIME_MAXDEPTH
#define VAR_HELPFUL_WARNINGS
#define VAR_DAEMON_TIMEOUT
#define VAR_LONG_QUEUE_IDS
char * var_int_filt_classes
#define DEF_MULTI_WRAPPER
#define DEF_IN_FLOW_DELAY
char * var_multi_conf_dirs
#define VAR_CLEANUP_SERVICE
#define VAR_TRACE_SERVICE
#define DEF_OLDLOG_COMPAT
int warn_compat_break_chroot
int var_disable_mime_input
char * var_proxywrite_service
#define DEF_HELPFUL_WARNINGS
#define DEF_PROXY_INTERFACES
void get_mail_conf_nbool_table(const CONFIG_NBOOL_TABLE *)
#define DEF_INET_INTERFACES
#define VAR_INET_INTERFACES
#define DEF_OWNREQ_SPECIAL
#define VAR_DNS_NCACHE_TTL_FIX
size_t dict_lmdb_map_size
const char * mail_conf_lookup(const char *name)
bool var_daemon_open_fatal
char * var_verify_service
#define DEF_SYSLOG_FACILITY
#define strcasecmp_utf8(s1, s2)
#define DEF_IDNA2003_COMPAT
#define DEF_QUEUE_SERVICE
#define DEF_LMDB_MAP_SIZE
#define VAR_HASH_QUEUE_NAMES
const char * mynetworks(void)
#define VAR_IN_FLOW_DELAY
int valid_hostname(const char *name, int gripe)
#define VAR_EXPORT_ENVIRON
#define DEF_CYRUS_SASL_AUTHZID
#define MAX_DELAY_MAX_RES
int warn_compat_break_mynetworks_style
char * var_hash_queue_names
#define VAR_HASH_QUEUE_DEPTH
#define VAR_DISABLE_MIME_INPUT
void get_mail_conf_str_fn_table(const CONFIG_STR_FN_TABLE *)
void get_mail_conf_time_table(const CONFIG_TIME_TABLE *)
#define VAR_DEFER_SERVICE
#define VAR_MESSAGE_LIMIT
#define VAR_FAULT_INJ_CODE
#define VAR_MULTI_CONF_DIRS
#define MIN_DELAY_MAX_RES
#define DEF_DISABLE_MIME_INPUT
#define DEF_HASH_QUEUE_NAMES
#define VAR_LMDB_MAP_SIZE
#define DEF_MIME_MAXDEPTH
#define VAR_DOUBLE_BOUNCE
char * var_double_bounce_sender
int vstream_fclose(VSTREAM *stream)
#define DEF_FLUSH_SERVICE
#define DEF_INT_FILT_CLASSES
#define DEF_DEBUG_PEER_LIST
#define DEF_CLEANUP_SERVICE
#define VAR_PROXYMAP_SERVICE
#define DEF_MIME_BOUND_LEN
#define DEF_VERIFY_SERVICE
#define VAR_DEFAULT_PRIVS
char * safe_getenv(const char *)
#define DEF_PAR_DOM_MATCH
#define DEF_PROXYMAP_SERVICE
void msg_warn(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
#define DEF_VERIFY_NEG_CACHE
char * var_bounce_service
int warn_compat_break_relay_restrictions
#define VAR_SYSLOG_FACILITY
#define VAR_INET_PROTOCOLS
int var_cyrus_sasl_authzid
#define DEF_DOUBLE_BOUNCE
#define VAR_VERIFY_NEG_CACHE
#define DEF_DB_CREATE_BUF
int warn_compat_break_app_dot_mydomain
#define DEF_STRICT_ENCODING
#define VAR_PROXYWRITE_SERVICE
#define DEF_STRICT_SMTPUTF8
#define DEF_HASH_QUEUE_DEPTH
#define DEF_DISABLE_MIME_OCONV
#define DEF_LONG_QUEUE_IDS
#define DEF_PICKUP_SERVICE
void get_mail_conf_str_table(const CONFIG_STR_TABLE *)
#define VAR_DAEMON_OPEN_FATAL
#define VAR_IDNA2003_COMPAT
#define DEF_MYNETWORKS_STYLE
char * var_rewrite_service
const char * verp_delims_verify(const char *delims)
#define DEF_DEFER_SERVICE
#define VAR_STRICT_8BIT_BODY
NORETURN msg_fatal(const char *fmt,...)
#define VAR_PAR_DOM_MATCH
const char * mail_conf_lookup_eval(const char *name)
void get_mail_conf_bool_table(const CONFIG_BOOL_TABLE *)
#define VAR_SMTPUTF8_AUTOCLASS
char * var_pickup_service
#define VAR_MULTI_WRAPPER
#define DEF_IMPORT_ENVIRON
#define DEF_STRICT_8BIT_BODY
#define DEF_REWRITE_SERVICE
#define VAR_STRICT_7BIT_HDRS
char * concatenate(const char *arg0,...)
#define DEF_DAEMON_TIMEOUT
#define VAR_DISABLE_MIME_OCONV
#define DEF_PROXYWRITE_SERVICE
#define DEF_BOUNCE_SERVICE
#define DEF_STRICT_8BITMIME
INET_ADDR_LIST * own_inet_addr_list(void)
VSTREAM * safe_open(const char *path, int flags, mode_t mode, struct stat *st, uid_t user, gid_t group, VSTRING *why)
#define VAR_STRICT_ENCODING
#define VAR_MYNETWORKS_STYLE
#define DEF_FAULT_INJ_CODE
VSTRING * vstring_free(VSTRING *vp)
#define DEF_DAEMON_OPEN_FATAL
#define VAR_QUEUE_SERVICE
#define DEF_INET_PROTOCOLS
#define VAR_DELAY_MAX_RES
#define VAR_REWRITE_SERVICE
#define DEF_SHOWQ_SERVICE
void get_mail_conf_int_table(const CONFIG_INT_TABLE *)
#define DEF_SMTPUTF8_AUTOCLASS
#define VAR_SHOWQ_SERVICE
char * var_inet_protocols
char * var_proxy_interfaces
#define VAR_BOUNCE_SERVICE
char * var_export_environ
void set_mail_conf_int(const char *, int)
#define VAR_APP_DOT_MYDOMAIN
#define VAR_VERIFY_SERVICE
#define DEF_DNS_NCACHE_TTL_FIX
void get_mail_conf_long_table(const CONFIG_LONG_TABLE *)
const char * get_hostname(void)
#define VAR_TRIGGER_TIMEOUT
char * var_smtputf8_autoclass
#define DEF_EXPORT_ENVIRON
#define VAR_DEBUG_PEER_LIST
#define vstream_ferror(vp)
char * var_syslog_facility
int warn_compat_break_smtputf8_enable
char * var_inet_interfaces
#define VAR_FFLUSH_DOMAINS
#define VAR_PICKUP_SERVICE
#define DEF_MESSAGE_LIMIT
#define VAR_OLDLOG_COMPAT
char * var_mynetworks_style
char * var_transit_origin
#define VAR_DEBUG_PEER_LEVEL
int warn_compat_break_flush_domains
#define DEF_DELAY_MAX_RES
char * var_debug_peer_list
int msg_syslog_facility(const char *facility_name)
#define DEF_DEBUG_PEER_LEVEL
bool var_dns_ncache_ttl_fix