diff options
| author | perry <perry@NetBSD.org> | 2003-03-08 19:05:29 +0000 |
|---|---|---|
| committer | perry <perry@NetBSD.org> | 2003-03-08 19:05:29 +0000 |
| commit | 59d07125ee9d00ca396be52e21c9cfcc7db032f2 (patch) | |
| tree | bd4ba6a0c04d1edc518df392bfb13e0b19f8e340 /gnu/dist/postfix/src | |
| parent | 004ae0051408e939340fba68fbf53639cc2d625c (diff) | |
import postfix 2.0.6
Diffstat (limited to 'gnu/dist/postfix/src')
86 files changed, 7168 insertions, 90 deletions
diff --git a/gnu/dist/postfix/src/bounce/.indent.pro b/gnu/dist/postfix/src/bounce/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/bounce/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/bounce/bounce_notify_util.c b/gnu/dist/postfix/src/bounce/bounce_notify_util.c index b8970025b02..e3319b863b5 100644 --- a/gnu/dist/postfix/src/bounce/bounce_notify_util.c +++ b/gnu/dist/postfix/src/bounce/bounce_notify_util.c @@ -177,11 +177,11 @@ /* bounce_mail_alloc - initialize */ static BOUNCE_INFO *bounce_mail_alloc(const char *service, - const char *queue_name, - const char *queue_id, - const char *encoding, - int flush, - BOUNCE_LOG *log_handle) + const char *queue_name, + const char *queue_id, + const char *encoding, + int flush, + BOUNCE_LOG *log_handle) { BOUNCE_INFO *bounce_info; int rec_type; @@ -531,6 +531,8 @@ int bounce_header_dsn(VSTREAM *bounce, BOUNCE_INFO *bounce_info) int bounce_recipient_dsn(VSTREAM *bounce, BOUNCE_INFO *bounce_info) { + char *fixed_mail_name; + post_mail_fputs(bounce, ""); #if 0 post_mail_fprintf(bounce, "Original-Recipient: rfc822; %s", "whatever"); @@ -540,8 +542,12 @@ int bounce_recipient_dsn(VSTREAM *bounce, BOUNCE_INFO *bounce_info) post_mail_fprintf(bounce, "Action: %s", bounce_info->flush ? "failed" : "delayed"); post_mail_fprintf(bounce, "Status: %s", bounce_info->log_handle->status); - bounce_print_wrap(bounce, bounce_info, "Diagnostic-Code: X-Postfix; %s", - bounce_info->log_handle->text); + /* RFC 1894: diagnostic-type is an RFC 822 atom. */ + fixed_mail_name = mystrdup(var_mail_name); + translit(fixed_mail_name, " \t\r\n()<>@,;:\\\".[]", "-----------------"); + bounce_print_wrap(bounce, bounce_info, "Diagnostic-Code: X-%s; %s", + fixed_mail_name, bounce_info->log_handle->text); + myfree(fixed_mail_name); #if 0 post_mail_fprintf(bounce, "Last-Attempt-Date: %s", bounce_info->log_handle->log_time); diff --git a/gnu/dist/postfix/src/cleanup/.indent.pro b/gnu/dist/postfix/src/cleanup/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/cleanup/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/cleanup/cleanup_message.c b/gnu/dist/postfix/src/cleanup/cleanup_message.c index 5fff208884a..b7283fde0fd 100644 --- a/gnu/dist/postfix/src/cleanup/cleanup_message.c +++ b/gnu/dist/postfix/src/cleanup/cleanup_message.c @@ -316,6 +316,9 @@ static int cleanup_act(CLEANUP_STATE *state, char *context, const char *buf, if (STREQUAL(value, "FILTER", command_len)) { if (*optional_text == 0) { msg_warn("missing FILTER command argument in %s map", map_class); + } else if (strchr(optional_text, ':') == 0) { + msg_warn("bad FILTER command %s in %s, need transport:destination", + optional_text, map_class); } else { if (state->filter) myfree(state->filter); diff --git a/gnu/dist/postfix/src/cleanup/cleanup_out_recipient.c b/gnu/dist/postfix/src/cleanup/cleanup_out_recipient.c index 427a1faf99a..97129487edc 100644 --- a/gnu/dist/postfix/src/cleanup/cleanup_out_recipient.c +++ b/gnu/dist/postfix/src/cleanup/cleanup_out_recipient.c @@ -69,25 +69,25 @@ void cleanup_out_recipient(CLEANUP_STATE *state, const char *orcpt, char **cpp; /* - * Apply the duplicate recipient filter before virtual expansion, so that - * we can distinguish between different addresses that map onto the same - * mailbox. The recipient will use our original recipient message header - * to figure things out. + * Distinguish between different original recipient addresses that map + * onto the same mailbox. The recipient will use our original recipient + * message header to figure things out. */ - if (been_here_fixed(state->dups, recip) != 0) - return; - if (cleanup_virt_alias_maps == 0) { - cleanup_out_string(state, REC_TYPE_ORCP, orcpt); - cleanup_out_string(state, REC_TYPE_RCPT, recip); - state->rcpt_count++; + if (been_here(state->dups, "%s\n%s", orcpt, recip) == 0) { + cleanup_out_string(state, REC_TYPE_ORCP, orcpt); + cleanup_out_string(state, REC_TYPE_RCPT, recip); + state->rcpt_count++; + } } else { argv = cleanup_map1n_internal(state, recip, cleanup_virt_alias_maps, cleanup_ext_prop_mask & EXT_PROP_VIRTUAL); for (cpp = argv->argv; *cpp; cpp++) { - cleanup_out_string(state, REC_TYPE_ORCP, orcpt); - cleanup_out_string(state, REC_TYPE_RCPT, *cpp); - state->rcpt_count++; + if (been_here(state->dups, "%s\n%s", orcpt, *cpp) == 0) { + cleanup_out_string(state, REC_TYPE_ORCP, orcpt); + cleanup_out_string(state, REC_TYPE_RCPT, *cpp); + state->rcpt_count++; + } } argv_free(argv); } diff --git a/gnu/dist/postfix/src/dns/.indent.pro b/gnu/dist/postfix/src/dns/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/dns/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/error/.indent.pro b/gnu/dist/postfix/src/error/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/error/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/flush/.indent.pro b/gnu/dist/postfix/src/flush/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/flush/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/fsstone/.indent.pro b/gnu/dist/postfix/src/fsstone/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/fsstone/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/global/.indent.pro b/gnu/dist/postfix/src/global/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/global/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/global/dict_proxy.c b/gnu/dist/postfix/src/global/dict_proxy.c new file mode 100644 index 00000000000..a60d0deb570 --- /dev/null +++ b/gnu/dist/postfix/src/global/dict_proxy.c @@ -0,0 +1,250 @@ +/*++ +/* NAME +/* dict_proxy 3 +/* SUMMARY +/* generic dictionary proxy client +/* SYNOPSIS +/* #include <dict_proxy.h> +/* +/* DICT *dict_proxy_open(map, open_flags, dict_flags) +/* const char *map; +/* int dummy; +/* int dict_flags; +/* DESCRIPTION +/* dict_proxy_open() relays read-only operations through +/* the Postfix proxymap server. +/* +/* The \fIopen_flags\fR argument must specify O_RDONLY. +/* +/* The connection to the Postfix proxymap server is automatically +/* closed after $ipc_idle seconds of idle time. +/* SECURITY +/* The proxy map server is not meant to be a trusted process. Proxy +/* maps must not be used to look up security sensitive information +/* such as user/group IDs, output files, or external commands. +/* SEE ALSO +/* dict(3) generic dictionary manager +/* clnt_stream(3) client endpoint connection management +/* DIAGNOSTICS +/* Fatal errors: out of memory, unimplemented operation, +/* bad request parameter, map not approved for proxy access. +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ + +/* System library. */ + +#include <sys_defs.h> +#include <errno.h> +#include <unistd.h> + +/* Utility library. */ + +#include <msg.h> +#include <mymalloc.h> +#include <stringops.h> +#include <vstring.h> +#include <vstream.h> +#include <attr.h> +#include <dict.h> + +/* Global library. */ + +#include <mail_proto.h> +#include <mail_params.h> +#include <clnt_stream.h> +#include <dict_proxy.h> + +/* Application-specific. */ + +typedef struct { + DICT dict; /* generic members */ + int in_flags; /* caller-specified flags */ + VSTRING *result; /* storage */ +} DICT_PROXY; + + /* + * SLMs. + */ +#define STR(x) vstring_str(x) +#define VSTREQ(v,s) (strcmp(STR(v),s) == 0) + + /* + * All proxied maps within a process share the same query/reply socket. + */ +static CLNT_STREAM *proxy_stream; + +/* dict_proxy_lookup - find table entry */ + +static const char *dict_proxy_lookup(DICT *dict, const char *key) +{ + const char *myname = "dict_proxy_lookup"; + DICT_PROXY *dict_proxy = (DICT_PROXY *) dict; + VSTREAM *stream; + int status; + + /* + * The client and server live in separate processes that may start and + * terminate independently. We cannot rely on a persistent connection, + * let alone on persistent state (such as a specific open table) that is + * associated with a specific connection. Each lookup needs to specify + * the table and the flags that were specified to dict_proxy_open(). + */ + VSTRING_RESET(dict_proxy->result); + VSTRING_TERMINATE(dict_proxy->result); + for (;;) { + stream = clnt_stream_access(proxy_stream); + errno = 0; + if (attr_print(stream, ATTR_FLAG_NONE, + ATTR_TYPE_STR, MAIL_ATTR_REQ, PROXY_REQ_LOOKUP, + ATTR_TYPE_STR, MAIL_ATTR_TABLE, dict->name, + ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, dict_proxy->in_flags, + ATTR_TYPE_STR, MAIL_ATTR_KEY, key, + ATTR_TYPE_END) != 0 + || vstream_fflush(stream) + || attr_scan(stream, ATTR_FLAG_STRICT, + ATTR_TYPE_NUM, MAIL_ATTR_STATUS, &status, + ATTR_TYPE_STR, MAIL_ATTR_VALUE, dict_proxy->result, + ATTR_TYPE_END) != 2) { + if (msg_verbose || (errno != EPIPE && errno != ENOENT)) + msg_warn("%s: service %s: %m", myname, VSTREAM_PATH(stream)); + } else { + if (msg_verbose) + msg_info("%s: table=%s flags=0%o key=%s -> status=%d result=%s", + myname, dict->name, dict_proxy->in_flags, key, + status, STR(dict_proxy->result)); + switch (status) { + case PROXY_STAT_BAD: + msg_fatal("%s lookup failed for table \"%s\" key \"%s\": " + "invalid request", + MAIL_SERVICE_PROXYMAP, dict->name, key); + case PROXY_STAT_DENY: + msg_fatal("%s service is not configured for table \"%s\"", + MAIL_SERVICE_PROXYMAP, dict->name); + case PROXY_STAT_OK: + return (STR(dict_proxy->result)); + case PROXY_STAT_NOKEY: + dict_errno = 0; + return (0); + case PROXY_STAT_RETRY: + dict_errno = DICT_ERR_RETRY; + return (0); + default: + msg_warn("%s lookup failed for table \"%s\" key \"%s\": " + "unexpected reply status %d", + MAIL_SERVICE_PROXYMAP, dict->name, key, status); + } + } + clnt_stream_recover(proxy_stream); + sleep(1); /* XXX make configurable */ + } +} + +/* dict_proxy_close - disconnect */ + +static void dict_proxy_close(DICT *dict) +{ + DICT_PROXY *dict_proxy = (DICT_PROXY *) dict; + + vstring_free(dict_proxy->result); + dict_free(dict); +} + +/* dict_proxy_open - open remote map */ + +DICT *dict_proxy_open(const char *map, int open_flags, int dict_flags) +{ + const char *myname = "dict_proxy_open"; + DICT_PROXY *dict_proxy; + VSTREAM *stream; + int server_flags; + int status; + char *kludge = 0; + char *prefix; + + /* + * Sanity checks. + */ + if (dict_flags & DICT_FLAG_NO_PROXY) + msg_fatal("%s: proxy map must not be used with this map type", map); + if (open_flags != O_RDONLY) + msg_fatal("%s: proxy map open requires O_RDONLY access mode", map); + + /* + * Local initialization. + */ + dict_proxy = (DICT_PROXY *) + dict_alloc(DICT_TYPE_PROXY, map, sizeof(*dict_proxy)); + dict_proxy->dict.lookup = dict_proxy_lookup; + dict_proxy->dict.close = dict_proxy_close; + dict_proxy->in_flags = dict_flags; + dict_proxy->result = vstring_alloc(10); + + /* + * Use a shared stream for all proxied table lookups. + * + * XXX Use absolute pathname to make this work from non-daemon processes. + */ + if (proxy_stream == 0) { + if (access(MAIL_CLASS_PRIVATE "/" MAIL_SERVICE_PROXYMAP, F_OK) == 0) + prefix = MAIL_CLASS_PRIVATE; + else + prefix = kludge = concatenate(var_queue_dir, "/", + MAIL_CLASS_PRIVATE, (char *) 0); + proxy_stream = clnt_stream_create(prefix, + MAIL_SERVICE_PROXYMAP, + var_ipc_idle_limit); + if (kludge) + myfree(kludge); + } + + /* + * Establish initial contact and get the map type specific flags. + * + * XXX Should retrieve flags from local instance. + */ + for (;;) { + stream = clnt_stream_access(proxy_stream); + errno = 0; + if (attr_print(stream, ATTR_FLAG_NONE, + ATTR_TYPE_STR, MAIL_ATTR_REQ, PROXY_REQ_OPEN, + ATTR_TYPE_STR, MAIL_ATTR_TABLE, dict_proxy->dict.name, + ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, dict_proxy->in_flags, + ATTR_TYPE_END) != 0 + || vstream_fflush(stream) + || attr_scan(stream, ATTR_FLAG_STRICT, + ATTR_TYPE_NUM, MAIL_ATTR_STATUS, &status, + ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, &server_flags, + ATTR_TYPE_END) != 2) { + if (msg_verbose || (errno != EPIPE && errno != ENOENT)) + msg_warn("%s: service %s: %m", VSTREAM_PATH(stream), myname); + } else { + if (msg_verbose) + msg_info("%s: connect to map=%s status=%d server_flags=0%o", + myname, dict_proxy->dict.name, status, server_flags); + switch (status) { + case PROXY_STAT_BAD: + msg_fatal("%s open failed for table \"%s\": invalid request", + MAIL_SERVICE_PROXYMAP, dict_proxy->dict.name); + case PROXY_STAT_DENY: + msg_fatal("%s service is not configured for table \"%s\"", + MAIL_SERVICE_PROXYMAP, dict_proxy->dict.name); + case PROXY_STAT_OK: + dict_proxy->dict.flags = dict_proxy->in_flags | server_flags; + return (DICT_DEBUG (&dict_proxy->dict)); + default: + msg_warn("%s open failed for table \"%s\": unexpected status %d", + MAIL_SERVICE_PROXYMAP, dict_proxy->dict.name, status); + } + } + clnt_stream_recover(proxy_stream); + sleep(1); /* XXX make configurable */ + } +} diff --git a/gnu/dist/postfix/src/global/dict_proxy.h b/gnu/dist/postfix/src/global/dict_proxy.h new file mode 100644 index 00000000000..ce496260949 --- /dev/null +++ b/gnu/dist/postfix/src/global/dict_proxy.h @@ -0,0 +1,49 @@ +#ifndef _DICT_PROXY_H_INCLUDED_ +#define _DICT_PROXY_H_INCLUDED_ + +/*++ +/* NAME +/* dict_proxy 3h +/* SUMMARY +/* dictionary manager interface to PROXY maps +/* SYNOPSIS +/* #include <dict_proxy.h> +/* DESCRIPTION +/* .nf + + /* + * Utility library. + */ +#include <dict.h> + + /* + * External interface. + */ +#define DICT_TYPE_PROXY "proxy" + +extern DICT *dict_proxy_open(const char *, int, int); + + /* + * Protocol interface. + */ +#define PROXY_REQ_OPEN "open" +#define PROXY_REQ_LOOKUP "lookup" + +#define PROXY_STAT_OK 0 /* operation succeeded */ +#define PROXY_STAT_NOKEY 1 /* requested key not found */ +#define PROXY_STAT_RETRY 2 /* try lookup again later */ +#define PROXY_STAT_BAD 3 /* invalid request parameter */ +#define PROXY_STAT_DENY 4 /* table not approved for proxying */ + +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ + +#endif diff --git a/gnu/dist/postfix/src/global/header_opts.c b/gnu/dist/postfix/src/global/header_opts.c index f826dd57e75..4a88ccb283c 100644 --- a/gnu/dist/postfix/src/global/header_opts.c +++ b/gnu/dist/postfix/src/global/header_opts.c @@ -59,6 +59,7 @@ static HEADER_OPTS header_opts[] = { "Content-Transfer-Encoding", HDR_CONTENT_TRANSFER_ENCODING, HDR_OPT_MIME, "Content-Type", HDR_CONTENT_TYPE, HDR_OPT_MIME, "Delivered-To", HDR_DELIVERED_TO, 0, + "Disposition-Notification-To", HDR_DISP_NOTIFICATION, HDR_OPT_SENDER, "Date", HDR_DATE, 0, "Errors-To", HDR_ERRORS_TO, HDR_OPT_SENDER, "From", HDR_FROM, HDR_OPT_SENDER, diff --git a/gnu/dist/postfix/src/global/header_opts.h b/gnu/dist/postfix/src/global/header_opts.h index c5b8388c071..cb6a48279bb 100644 --- a/gnu/dist/postfix/src/global/header_opts.h +++ b/gnu/dist/postfix/src/global/header_opts.h @@ -53,6 +53,7 @@ typedef struct { #define HDR_CONTENT_DISPOSITION 28 #define HDR_CONTENT_ID 29 #define HDR_MIME_VERSION 30 +#define HDR_DISP_NOTIFICATION 31 /* * Header flags. diff --git a/gnu/dist/postfix/src/global/mail_conf_time.c b/gnu/dist/postfix/src/global/mail_conf_time.c index 8a160a16d9e..682a6863d89 100644 --- a/gnu/dist/postfix/src/global/mail_conf_time.c +++ b/gnu/dist/postfix/src/global/mail_conf_time.c @@ -140,7 +140,7 @@ static int get_def_time_unit(const char *name, const char *defval) { const char *cp; - for (cp = defval; /* void */ ; cp++) { + for (cp = mail_conf_eval(defval); /* void */ ; cp++) { if (*cp == 0) msg_panic("parameter %s: missing time unit in default value: %s", name, defval); diff --git a/gnu/dist/postfix/src/global/mail_dict.c b/gnu/dist/postfix/src/global/mail_dict.c new file mode 100644 index 00000000000..a576f589413 --- /dev/null +++ b/gnu/dist/postfix/src/global/mail_dict.c @@ -0,0 +1,57 @@ +/*++ +/* NAME +/* mail_dict 3 +/* SUMMARY +/* register application-specific dictionaries +/* SYNOPSIS +/* #include <mail_dict.h> +/* +/* void mail_dict_init() +/* DESCRIPTION +/* This module registers dictionary types that depend on higher-level +/* Postfix-specific interfaces and protocols. +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ + +/* System library. */ + +#include <sys_defs.h> + +/* Utility library. */ + +#include <dict.h> +#include <msg.h> + +/* Global library. */ + +#include <dict_proxy.h> +#include <mail_dict.h> + +typedef struct { + char *type; + struct DICT *(*open) (const char *, int, int); +} DICT_OPEN_INFO; + +static DICT_OPEN_INFO dict_open_info[] = { + DICT_TYPE_PROXY, dict_proxy_open, + /* XXX LDAP and MYSQL etc. should go here, too. */ + 0, +}; + +/* mail_dict_init - dictionaries that depend on Postfix-specific interfaces */ + +void mail_dict_init(void) +{ + DICT_OPEN_INFO *dp; + + for (dp = dict_open_info; dp->type; dp++) + dict_open_register(dp->type, dp->open); +} diff --git a/gnu/dist/postfix/src/global/mail_dict.h b/gnu/dist/postfix/src/global/mail_dict.h new file mode 100644 index 00000000000..62ad8810a7d --- /dev/null +++ b/gnu/dist/postfix/src/global/mail_dict.h @@ -0,0 +1,25 @@ +/*++ +/* NAME +/* mail_dict 3h +/* SUMMARY +/* register application-specific dictionaries +/* SYNOPSIS +/* #include <mail_dict.h> +/* DESCRIPTION +/* .nf + + /* + * External interface. + */ +extern void mail_dict_init(void); + +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ diff --git a/gnu/dist/postfix/src/global/mail_proto.h b/gnu/dist/postfix/src/global/mail_proto.h index 6f6ab8ced9b..3f392f87718 100644 --- a/gnu/dist/postfix/src/global/mail_proto.h +++ b/gnu/dist/postfix/src/global/mail_proto.h @@ -50,6 +50,7 @@ #define MAIL_SERVICE_ERROR "error" #define MAIL_SERVICE_FLUSH "flush" #define MAIL_SERVICE_RELAY "relay" +#define MAIL_SERVICE_PROXYMAP "proxymap" /* * Well-known socket or FIFO directories. The main difference is in file @@ -106,6 +107,9 @@ extern char *mail_pathname(const char *, const char *); #define MAIL_ATTR_ADDR "address" #define MAIL_ATTR_TRANSPORT "transport" #define MAIL_ATTR_NEXTHOP "nexthop" +#define MAIL_ATTR_TABLE "table" +#define MAIL_ATTR_KEY "key" +#define MAIL_ATTR_VALUE "value" /* * Suffixes for sender_name, sender_domain etc. diff --git a/gnu/dist/postfix/src/global/mail_version.h b/gnu/dist/postfix/src/global/mail_version.h index ecd20dda445..05fb9d28bbe 100644 --- a/gnu/dist/postfix/src/global/mail_version.h +++ b/gnu/dist/postfix/src/global/mail_version.h @@ -20,10 +20,10 @@ * Patches change the patchlevel and the release date. Snapshots change the * release date only, unless they include the same bugfix as a patch release. */ -#define MAIL_RELEASE_DATE "20021223" +#define MAIL_RELEASE_DATE "20030305" #define VAR_MAIL_VERSION "mail_version" -#define DEF_MAIL_VERSION "2.0.0.1" +#define DEF_MAIL_VERSION "2.0.6" extern char *var_mail_version; /* diff --git a/gnu/dist/postfix/src/global/pipe_command.c b/gnu/dist/postfix/src/global/pipe_command.c index b8f07823b8b..40026f2a49c 100644 --- a/gnu/dist/postfix/src/global/pipe_command.c +++ b/gnu/dist/postfix/src/global/pipe_command.c @@ -132,6 +132,7 @@ #include <iostuff.h> #include <timed_wait.h> #include <set_ugid.h> +#include <set_eugid.h> #include <argv.h> /* Global library. */ @@ -292,9 +293,28 @@ static int pipe_command_read(int fd, void *buf, unsigned len) } } +/* kill_command - terminate command forcibly */ + +static void kill_command(pid_t pid, int sig, uid_t kill_uid, gid_t kill_gid) +{ + pid_t saved_euid = geteuid(); + gid_t saved_egid = getegid(); + + /* + * Switch privileges to that of the child process. Terminate the child + * and its offspring. + */ + set_eugid(kill_uid, kill_gid); + if (kill(-pid, sig) < 0 && kill(pid, sig) < 0) + msg_warn("cannot kill process (group) %lu: %m", + (unsigned long) pid); + set_eugid(saved_euid, saved_egid); +} + /* pipe_command_wait_or_kill - wait for command with time limit, or kill it */ -static int pipe_command_wait_or_kill(pid_t pid, WAIT_STATUS_T *statusp, int sig) +static int pipe_command_wait_or_kill(pid_t pid, WAIT_STATUS_T *statusp, int sig, + uid_t kill_uid, gid_t kill_gid) { int maxtime = (pipe_command_timeout == 0) ? pipe_command_maxtime : 1; char *myname = "pipe_command_wait_or_kill"; @@ -309,7 +329,7 @@ static int pipe_command_wait_or_kill(pid_t pid, WAIT_STATUS_T *statusp, int sig) msg_info("%s: time limit exceeded", myname); pipe_command_timeout = 1; } - kill(-pid, sig); + kill_command(pid, sig, kill_uid, kill_gid); n = waitpid(pid, statusp, 0); } return (n); @@ -358,10 +378,14 @@ int pipe_command(VSTREAM *src, VSTRING *why,...) * truncated without too much loss. I could even argue that truncating * the amount of diagnostic output is a good thing to do, but I won't go * that far. + * + * Turn on non-blocking writes to the child process so that we can enforce + * timeouts after partial writes. */ if (pipe(cmd_in_pipe) < 0 || pipe(cmd_out_pipe) < 0) msg_fatal("%s: pipe: %m", myname); non_blocking(cmd_out_pipe[1], NON_BLOCKING); + non_blocking(cmd_in_pipe[1], NON_BLOCKING); /* * Spawn off a child process and irrevocably change privilege to the @@ -488,8 +512,9 @@ int pipe_command(VSTREAM *src, VSTRING *why,...) * not just the child process but also its offspring. */ if (pipe_command_timeout) - (void) kill(-pid, SIGKILL); - if (pipe_command_wait_or_kill(pid, &wait_status, SIGKILL) < 0) + kill_command(pid, SIGKILL, args.uid, args.gid); + if (pipe_command_wait_or_kill(pid, &wait_status, SIGKILL, + args.uid, args.gid) < 0) msg_fatal("wait: %m"); if (pipe_command_timeout) { vstring_sprintf(why, "Command time limit exceeded: \"%s\"%s%s", diff --git a/gnu/dist/postfix/src/global/rec_type.h b/gnu/dist/postfix/src/global/rec_type.h index a1465691536..452aac40cce 100644 --- a/gnu/dist/postfix/src/global/rec_type.h +++ b/gnu/dist/postfix/src/global/rec_type.h @@ -63,10 +63,13 @@ * this is "postfix internal" information. However, the pickup server has to * allow for the presence of A records in the extracted segment, because it * can be requested to re-process already queued mail with `postsuper -r'. + * + * Note: REC_TYPE_FILT and REC_TYPE_CONT are encoded with the same 'L' + * constant, and it is too late to change that now. */ #define REC_TYPE_ENVELOPE "MCTFILSDROWVA" #define REC_TYPE_CONTENT "XLN" -#define REC_TYPE_EXTRACT "EDROPreAFI" +#define REC_TYPE_EXTRACT "EDROPreAFIL" /* * The record at the beginning of the envelope segment specifies the message diff --git a/gnu/dist/postfix/src/global/tok822.h b/gnu/dist/postfix/src/global/tok822.h index 9a2b236e94d..23ddfbef0d9 100644 --- a/gnu/dist/postfix/src/global/tok822.h +++ b/gnu/dist/postfix/src/global/tok822.h @@ -87,8 +87,9 @@ extern VSTRING *tok822_internalize(VSTRING *, TOK822 *, int); #define TOK822_STR_WIPE (1<<0) #define TOK822_STR_TERM (1<<1) #define TOK822_STR_LINE (1<<2) +#define TOK822_STR_TRNC (1<<3) #define TOK822_STR_DEFL (TOK822_STR_WIPE | TOK822_STR_TERM) -#define TOK822_STR_HEAD (TOK822_STR_TERM | TOK822_STR_LINE) +#define TOK822_STR_HEAD (TOK822_STR_TERM | TOK822_STR_LINE | TOK822_STR_TRNC) /* * tok822_find.c diff --git a/gnu/dist/postfix/src/global/tok822_parse.in b/gnu/dist/postfix/src/global/tok822_parse.in index 28620abc468..acb91db1f9c 100644 --- a/gnu/dist/postfix/src/global/tok822_parse.in +++ b/gnu/dist/postfix/src/global/tok822_parse.in @@ -13,3 +13,35 @@ wietse@["stuff] named group: foo@bar, baz@barf; wietse@foo (wietse venema) +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + .yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + .yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + .yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz + .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz + .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz + .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + (yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy) +(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) +<1111111111111111111111111111111111111111111111111111111111111111111111111111> + <2222222222222222222222222222222222222222222222222222222222222222222222222222> + <3333333333333333333333333333333333333333333333333333333333333333333333333333> + <4444444444444444444444444444444444444444444444444444444444444444444444444444> + <> diff --git a/gnu/dist/postfix/src/global/tok822_parse.ref b/gnu/dist/postfix/src/global/tok822_parse.ref index 53521f3b558..e3a7ad59fa3 100644 --- a/gnu/dist/postfix/src/global/tok822_parse.ref +++ b/gnu/dist/postfix/src/global/tok822_parse.ref @@ -277,3 +277,141 @@ wietse@foo (wietse venema) Externalized, newlines inserted: wietse@foo (wietse venema) +>>>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy .yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy .yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy .yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy<<< + +Parse tree: + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP "<" + address + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP ">" + OP "," + address + atom "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + OP "." + atom "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + OP "." + atom "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + OP "." + atom "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + +Internalized: +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + +Externalized, no newlines inserted: +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + +Externalized, newlines inserted: +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, +yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy + +>>>"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz<<< + +Parse tree: + address + quoted string "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" + +Internalized: +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz + +Externalized, no newlines inserted: +"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" + +Externalized, newlines inserted: +"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz .zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" + +>>>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy)<<< + +Parse tree: + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP "<" + address + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP ">" + OP "," + address + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP "," + address + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP "," + address + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP "," + address + atom "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + OP "," + address + atom "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + comment "(yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy)" + +Internalized: +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy) + +unknown: warning: stripping too many comments from address: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx... +unknown: warning: stripping too many comments from address: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (yyyyyyyyyyyyyyyyyyyy... +Externalized, no newlines inserted: +<xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, <yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy> + +unknown: warning: stripping too many comments from address: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx... +unknown: warning: stripping too many comments from address: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (yyyyyyyyyyyyyyyyyyyy... +Externalized, newlines inserted: +<xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>, +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, +<yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy> + +>>>(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)<<< + +Parse tree: + comment "(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)" + +Internalized: +(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) + +Externalized, no newlines inserted: +(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) + +Externalized, newlines inserted: +(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) + +>>><1111111111111111111111111111111111111111111111111111111111111111111111111111> <2222222222222222222222222222222222222222222222222222222222222222222222222222> <3333333333333333333333333333333333333333333333333333333333333333333333333333> <4444444444444444444444444444444444444444444444444444444444444444444444444444> <><<< + +Parse tree: + OP "<" + address + atom "1111111111111111111111111111111111111111111111111111111111111111111111111111" + OP ">" + OP "<" + address + atom "2222222222222222222222222222222222222222222222222222222222222222222222222222" + OP ">" + OP "<" + address + atom "3333333333333333333333333333333333333333333333333333333333333333333333333333" + OP ">" + OP "<" + address + atom "4444444444444444444444444444444444444444444444444444444444444444444444444444" + OP ">" + OP "<" + OP ">" + +Internalized: +<1111111111111111111111111111111111111111111111111111111111111111111111111111> <2222222222222222222222222222222222222222222222222222222222222222222222222222> <3333333333333333333333333333333333333333333333333333333333333333333333333333> <4444444444444444444444444444444444444444444444444444444444444444444444444444> <> + +unknown: warning: stripping too many comments from address: <1111111111111111111111111111111111111111111111111111111111111111111111111111> <22222222222222222222... +Externalized, no newlines inserted: +<> + +unknown: warning: stripping too many comments from address: <1111111111111111111111111111111111111111111111111111111111111111111111111111> <22222222222222222222... +Externalized, newlines inserted: +<> + diff --git a/gnu/dist/postfix/src/global/virtual8_maps.c b/gnu/dist/postfix/src/global/virtual8_maps.c index 332cc8e04fa..fb05dc7d0d8 100644 --- a/gnu/dist/postfix/src/global/virtual8_maps.c +++ b/gnu/dist/postfix/src/global/virtual8_maps.c @@ -28,9 +28,7 @@ /* named dictionaries. /* The result is a handle that must be specified along with all /* other virtual8_maps_xxx() operations. -/* See dict_open(3) for a description of flags. virtual8_maps_create() -/* implicitly sets the DICT_FLAG_NO_REGSUB flag in order to disable -/* regular expression substitution into the lookup result. +/* See dict_open(3) for a description of flags. /* /* virtual8_maps_find() searches the specified list of dictionaries /* in the specified order for the named key. The result is in diff --git a/gnu/dist/postfix/src/global/virtual8_maps.h b/gnu/dist/postfix/src/global/virtual8_maps.h index 4261413b870..67c5df91029 100644 --- a/gnu/dist/postfix/src/global/virtual8_maps.h +++ b/gnu/dist/postfix/src/global/virtual8_maps.h @@ -20,7 +20,7 @@ * External interface. */ #define virtual8_maps_create(title, map_names, flags) \ - maps_create((title), (map_names), (flags) | DICT_FLAG_NO_REGSUB) + maps_create((title), (map_names), (flags)) extern const char *virtual8_maps_find(MAPS *, const char *); #define virtual8_maps_free(maps) maps_free((maps)) diff --git a/gnu/dist/postfix/src/lmtp/.indent.pro b/gnu/dist/postfix/src/lmtp/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/lmtp/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/local/.indent.pro b/gnu/dist/postfix/src/local/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/local/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/local/local.c b/gnu/dist/postfix/src/local/local.c index 4465de5d975..92dcd11cb4c 100644 --- a/gnu/dist/postfix/src/local/local.c +++ b/gnu/dist/postfix/src/local/local.c @@ -697,7 +697,7 @@ static void pre_init(char *unused_name, char **unused_argv) set_file_limit(var_mailbox_limit); } alias_maps = maps_create("aliases", var_alias_maps, - DICT_FLAG_LOCK | DICT_FLAG_NO_REGSUB); + DICT_FLAG_LOCK | DICT_FLAG_PARANOID); } /* main - pass control to the single-threaded skeleton */ diff --git a/gnu/dist/postfix/src/local/maildir.c b/gnu/dist/postfix/src/local/maildir.c index 02899263f67..99f625c99d9 100644 --- a/gnu/dist/postfix/src/local/maildir.c +++ b/gnu/dist/postfix/src/local/maildir.c @@ -40,7 +40,9 @@ /* System library. */ #include "sys_defs.h" +#include <sys/stat.h> #include <unistd.h> +#include <time.h> #include <errno.h> /* Utility library. */ @@ -83,7 +85,8 @@ int deliver_maildir(LOCAL_STATE state, USER_ATTR usr_attr, char *path) int mail_copy_status; int deliver_status; int copy_flags; - static int count; + struct stat st; + time_t starttime = time((time_t *) 0); /* * Make verbose logging easier to understand. @@ -124,20 +127,63 @@ int deliver_maildir(LOCAL_STATE state, USER_ATTR usr_attr, char *path) * use starttime.pid_count.host, where starttime is the time that your * process started, and count is the number of messages you've * delivered." + * + * Well, that stopped working on fast machines, and on operating systems + * that randomize process ID values. When creating a file in tmp/ we use + * the process ID because it still is an exclusive resource. When moving + * the file to new/ we use the device number and inode number. I do not + * care if this breaks on a remote AFS file system, because people should + * know better. + * + * On January 26, 2003, http://cr.yp.to/proto/maildir.html said: + * + * A unique name has three pieces, separated by dots. On the left is the + * result of time() or the second counter from gettimeofday(). On the + * right is the result of gethostname(). (To deal with invalid host + * names, replace / with \057 and : with \072.) In the middle is a + * delivery identifier, discussed below. + * + * [...] + * + * Modern delivery identifiers are created by concatenating enough of the + * following strings to guarantee uniqueness: + * + * [...] + * + * In, where n is (in hexadecimal) the UNIX inode number of this file. + * Unfortunately, inode numbers aren't always available through NFS. + * + * Vn, where n is (in hexadecimal) the UNIX device number of this file. + * Unfortunately, device numbers aren't always available through NFS. + * (Device numbers are also not helpful with the standard UNIX + * filesystem: a maildir has to be within a single UNIX device for link() + * and rename() to work.) + * + * [...] + * + * Pn, where n is (in decimal) the process ID. + * + * [...] */ #define STR vstring_str set_eugid(usr_attr.uid, usr_attr.gid); - vstring_sprintf(buf, "%ld.%d_%d.%s", (long) var_starttime, - var_pid, count++, get_hostname()); + vstring_sprintf(buf, "%lu.P%d.%s", + (unsigned long) starttime, var_pid, get_hostname()); tmpfile = concatenate(tmpdir, STR(buf), (char *) 0); - newfile = concatenate(newdir, STR(buf), (char *) 0); + newfile = 0; if ((dst = vstream_fopen(tmpfile, O_WRONLY | O_CREAT | O_EXCL, 0600)) == 0 && (errno != ENOENT || make_dirs(tmpdir, 0700) < 0 || (dst = vstream_fopen(tmpfile, O_WRONLY | O_CREAT | O_EXCL, 0600)) == 0)) { vstring_sprintf(why, "create %s: %m", tmpfile); + } else if (fstat(vstream_fileno(dst), &st) < 0) { + vstring_sprintf(why, "create %s: %m", tmpfile); } else { + vstring_sprintf(buf, "%lu.V%lxI%lx.%s", + (unsigned long) starttime, (unsigned long) st.st_dev, + (unsigned long) st.st_ino, get_hostname()); + newfile = concatenate(newdir, STR(buf), (char *) 0); if ((mail_copy_status = mail_copy(COPY_ATTR(state.msg_attr), dst, copy_flags, "\n", why)) == 0) { if (sane_link(tmpfile, newfile) < 0 @@ -172,6 +218,7 @@ int deliver_maildir(LOCAL_STATE state, USER_ATTR usr_attr, char *path) myfree(tmpdir); myfree(curdir); myfree(tmpfile); - myfree(newfile); + if (newfile) + myfree(newfile); return (deliver_status); } diff --git a/gnu/dist/postfix/src/master/.indent.pro b/gnu/dist/postfix/src/master/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/master/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/master/Makefile.in b/gnu/dist/postfix/src/master/Makefile.in index cf646935e72..eeb2ce986dd 100644 --- a/gnu/dist/postfix/src/master/Makefile.in +++ b/gnu/dist/postfix/src/master/Makefile.in @@ -242,6 +242,7 @@ multi_server.o: ../../include/mail_task.h multi_server.o: ../../include/debug_process.h multi_server.o: ../../include/mail_params.h multi_server.o: ../../include/mail_conf.h +multi_server.o: ../../include/mail_dict.h multi_server.o: ../../include/timed_ipc.h multi_server.o: ../../include/resolve_local.h multi_server.o: mail_flow.h @@ -270,6 +271,7 @@ single_server.o: ../../include/mail_params.h single_server.o: ../../include/mail_task.h single_server.o: ../../include/debug_process.h single_server.o: ../../include/mail_conf.h +single_server.o: ../../include/mail_dict.h single_server.o: ../../include/timed_ipc.h single_server.o: ../../include/resolve_local.h single_server.o: mail_flow.h @@ -298,6 +300,7 @@ trigger_server.o: ../../include/mail_params.h trigger_server.o: ../../include/mail_task.h trigger_server.o: ../../include/debug_process.h trigger_server.o: ../../include/mail_conf.h +trigger_server.o: ../../include/mail_dict.h trigger_server.o: ../../include/resolve_local.h trigger_server.o: mail_flow.h trigger_server.o: master_proto.h diff --git a/gnu/dist/postfix/src/master/multi_server.c b/gnu/dist/postfix/src/master/multi_server.c index 4275c0c6568..5e2b4872535 100644 --- a/gnu/dist/postfix/src/master/multi_server.c +++ b/gnu/dist/postfix/src/master/multi_server.c @@ -114,7 +114,7 @@ /* The var_idle_limit variable limits the time that a service /* receives no client connection requests before it commits suicide. /* This value is taken from the global \fBmain.cf\fR configuration -/* file. Setting \fBvar_use_limit\fR to zero disables the idle limit. +/* file. Setting \fBvar_idle_limit\fR to zero disables the idle limit. /* DIAGNOSTICS /* Problems and transactions are logged to \fBsyslogd\fR(8). /* SEE ALSO @@ -173,6 +173,7 @@ #include <debug_process.h> #include <mail_params.h> #include <mail_conf.h> +#include <mail_dict.h> #include <timed_ipc.h> #include <resolve_local.h> #include <mail_flow.h> @@ -437,6 +438,11 @@ NORETURN multi_server_main(int argc, char **argv, MULTI_SERVER_FN service,...) mail_conf_suck(); /* + * Register dictionaries that use higher-level interfaces and protocols. + */ + mail_dict_init(); + + /* * Pick up policy settings from master process. Shut up error messages to * stderr, because no-one is going to see them. */ @@ -619,14 +625,14 @@ NORETURN multi_server_main(int argc, char **argv, MULTI_SERVER_FN service,...) /* * Run pre-jail initialization. */ + if (chdir(var_queue_dir) < 0) + msg_fatal("chdir(\"%s\"): %m", var_queue_dir); if (pre_init) pre_init(multi_server_name, multi_server_argv); /* * Optionally, restrict the damage that this process can do. */ - if (chdir(var_queue_dir) < 0) - msg_fatal("chdir(\"%s\"): %m", var_queue_dir); resolve_local_init(); chroot_uid(root_dir, user_name); diff --git a/gnu/dist/postfix/src/master/single_server.c b/gnu/dist/postfix/src/master/single_server.c index 077d8cc702c..c2feb94a65a 100644 --- a/gnu/dist/postfix/src/master/single_server.c +++ b/gnu/dist/postfix/src/master/single_server.c @@ -167,6 +167,7 @@ #include <mail_task.h> #include <debug_process.h> #include <mail_conf.h> +#include <mail_dict.h> #include <timed_ipc.h> #include <resolve_local.h> #include <mail_flow.h> @@ -393,6 +394,11 @@ NORETURN single_server_main(int argc, char **argv, SINGLE_SERVER_FN service,...) mail_conf_suck(); /* + * Register dictionaries that use higher-level interfaces and protocols. + */ + mail_dict_init(); + + /* * Pick up policy settings from master process. Shut up error messages to * stderr, because no-one is going to see them. */ @@ -568,14 +574,14 @@ NORETURN single_server_main(int argc, char **argv, SINGLE_SERVER_FN service,...) /* * Run pre-jail initialization. */ + if (chdir(var_queue_dir) < 0) + msg_fatal("chdir(\"%s\"): %m", var_queue_dir); if (pre_init) pre_init(single_server_name, single_server_argv); /* * Optionally, restrict the damage that this process can do. */ - if (chdir(var_queue_dir) < 0) - msg_fatal("chdir(\"%s\"): %m", var_queue_dir); resolve_local_init(); chroot_uid(root_dir, user_name); diff --git a/gnu/dist/postfix/src/master/trigger_server.c b/gnu/dist/postfix/src/master/trigger_server.c index 08d42bf18cc..e7640ed2f2f 100644 --- a/gnu/dist/postfix/src/master/trigger_server.c +++ b/gnu/dist/postfix/src/master/trigger_server.c @@ -175,6 +175,7 @@ #include <mail_task.h> #include <debug_process.h> #include <mail_conf.h> +#include <mail_dict.h> #include <resolve_local.h> #include <mail_flow.h> @@ -389,6 +390,11 @@ NORETURN trigger_server_main(int argc, char **argv, TRIGGER_SERVER_FN service,.. mail_conf_suck(); /* + * Register dictionaries that use higher-level interfaces and protocols. + */ + mail_dict_init(); + + /* * Pick up policy settings from master process. Shut up error messages to * stderr, because no-one is going to see them. */ @@ -578,14 +584,14 @@ NORETURN trigger_server_main(int argc, char **argv, TRIGGER_SERVER_FN service,.. /* * Run pre-jail initialization. */ + if (chdir(var_queue_dir) < 0) + msg_fatal("chdir(\"%s\"): %m", var_queue_dir); if (pre_init) pre_init(trigger_server_name, trigger_server_argv); /* * Optionally, restrict the damage that this process can do. */ - if (chdir(var_queue_dir) < 0) - msg_fatal("chdir(\"%s\"): %m", var_queue_dir); resolve_local_init(); chroot_uid(root_dir, user_name); diff --git a/gnu/dist/postfix/src/nqmgr/.indent.pro b/gnu/dist/postfix/src/nqmgr/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/nqmgr/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/nqmgr/qmgr_deliver.c b/gnu/dist/postfix/src/nqmgr/qmgr_deliver.c index 759ab9fef8f..4f355d04862 100644 --- a/gnu/dist/postfix/src/nqmgr/qmgr_deliver.c +++ b/gnu/dist/postfix/src/nqmgr/qmgr_deliver.c @@ -154,10 +154,15 @@ static int qmgr_deliver_send_request(QMGR_ENTRY *entry, VSTREAM *stream) * queue name is user@nexthop, so that we can implement per-recipient * concurrency limits. However, the delivery agent protocol expects * nexthop only, so we must strip off the recipient local part. + * + * XXX Should have separate fields for queue name and for destination, so + * that we don't have to make a special case for the error delivery agent + * (where nexthop is arbitrary text). See also: qmgr_message.c. */ flags = message->inspect_xport ? DEL_REQ_FLAG_BOUNCE : DEL_REQ_FLAG_DEFLT; - nexthop = (cp = strrchr(entry->queue->name, '@')) != 0 && cp[1] ? + nexthop = strcmp(entry->queue->transport->name, MAIL_SERVICE_ERROR) != 0 + && (cp = strrchr(entry->queue->name, '@')) != 0 && cp[1] ? cp + 1 : entry->queue->name; attr_print(stream, ATTR_FLAG_MORE, ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, flags, diff --git a/gnu/dist/postfix/src/nqmgr/qmgr_message.c b/gnu/dist/postfix/src/nqmgr/qmgr_message.c index 83b7d5c9e7b..943d3b75732 100644 --- a/gnu/dist/postfix/src/nqmgr/qmgr_message.c +++ b/gnu/dist/postfix/src/nqmgr/qmgr_message.c @@ -638,22 +638,6 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message) for (recipient = list.info; recipient < list.info + list.len; recipient++) { /* - * This may be a bit late in the game, but it is the most convenient - * place to scrutinize the destination address syntax. We have a - * complete queue file, so bouncing is easy. That luxury is not - * available to the cleanup service. The main issue is that we want - * to have this test in one place, instead of having to do this in - * every front-ent program. - */ - if ((at = strrchr(recipient->address, '@')) != 0 - && (at + 1)[strspn(at + 1, "[]0123456789.")] != 0 - && valid_hostname(at + 1, DONT_GRIPE) == 0) { - qmgr_bounce_recipient(message, recipient, - "bad host/domain syntax: \"%s\"", at + 1); - continue; - } - - /* * Resolve the destination to (transport, nexthop, address). The * result address may differ from the one specified by the sender. */ @@ -736,9 +720,12 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message) * on the recipient delimiter if one is defined, but doing a proper * job requires knowledge of local aliases. Yuck! I don't want to * duplicate delivery-agent specific knowledge in the queue manager. + * * XXX The nexthop field is overloaded to serve as destination and as * queue name. Should have separate fields for queue name and for - * destination. + * destination, so that we don't have to make a special case for the + * error delivery agent (where nexthop is arbitrary text). See also: + * qmgr_deliver.c. */ at = strrchr(STR(reply.recipient), '@'); len = (at ? (at - STR(reply.recipient)) : strlen(STR(reply.recipient))); @@ -753,7 +740,8 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message) transport = qmgr_transport_create(STR(reply.transport)); queue = 0; } - if (transport->recipient_limit == 1) { + if (strcmp(transport->name, MAIL_SERVICE_ERROR) != 0 + && transport->recipient_limit == 1) { VSTRING_SPACE(reply.nexthop, len + 2); memmove(STR(reply.nexthop) + len + 1, STR(reply.nexthop), LEN(reply.nexthop) + 1); diff --git a/gnu/dist/postfix/src/pickup/.indent.pro b/gnu/dist/postfix/src/pickup/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/pickup/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/pickup/pickup.c b/gnu/dist/postfix/src/pickup/pickup.c index b8f697b281a..c87206bf4b4 100644 --- a/gnu/dist/postfix/src/pickup/pickup.c +++ b/gnu/dist/postfix/src/pickup/pickup.c @@ -224,7 +224,12 @@ static int copy_segment(VSTREAM *qfile, VSTREAM *cleanup, PICKUP_INFO *info, if (type == REC_TYPE_INSP) /* Use current content inspection settings instead. */ continue; - if (type == REC_TYPE_FILT) + + /* + * XXX Workaround: REC_TYPE_FILT (used in envelopes) == REC_TYPE_CONT + * (used in message content). + */ + if (type == REC_TYPE_FILT && *expected != REC_TYPE_CONTENT[0]) /* Use current content filter settings instead. */ continue; else { diff --git a/gnu/dist/postfix/src/pipe/.indent.pro b/gnu/dist/postfix/src/pipe/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/pipe/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postalias/.indent.pro b/gnu/dist/postfix/src/postalias/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postalias/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postalias/Makefile.in b/gnu/dist/postfix/src/postalias/Makefile.in index 465ba2c3819..acb8e86b982 100644 --- a/gnu/dist/postfix/src/postalias/Makefile.in +++ b/gnu/dist/postfix/src/postalias/Makefile.in @@ -95,6 +95,7 @@ postalias.o: ../../include/set_eugid.h postalias.o: ../../include/tok822.h postalias.o: ../../include/resolve_clnt.h postalias.o: ../../include/mail_conf.h +postalias.o: ../../include/mail_dict.h postalias.o: ../../include/mail_params.h postalias.o: ../../include/mkmap.h postalias.o: ../../include/dict.h diff --git a/gnu/dist/postfix/src/postalias/postalias.c b/gnu/dist/postfix/src/postalias/postalias.c index cadb61a7fd4..4a88d6e25d6 100644 --- a/gnu/dist/postfix/src/postalias/postalias.c +++ b/gnu/dist/postfix/src/postalias/postalias.c @@ -169,6 +169,7 @@ #include <tok822.h> #include <mail_conf.h> +#include <mail_dict.h> #include <mail_params.h> #include <mkmap.h> @@ -587,6 +588,7 @@ int main(int argc, char **argv) } } mail_conf_read(); + mail_dict_init(); /* * Use the map type specified by the user, or fall back to a default diff --git a/gnu/dist/postfix/src/postcat/.indent.pro b/gnu/dist/postfix/src/postcat/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postcat/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postconf/.indent.pro b/gnu/dist/postfix/src/postconf/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postconf/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postconf/Makefile.in b/gnu/dist/postfix/src/postconf/Makefile.in index 7732636b896..198be229e75 100644 --- a/gnu/dist/postfix/src/postconf/Makefile.in +++ b/gnu/dist/postfix/src/postconf/Makefile.in @@ -88,6 +88,7 @@ postconf.o: ../../include/vstring_vstream.h postconf.o: ../../include/myflock.h postconf.o: ../../include/mynetworks.h postconf.o: ../../include/mail_conf.h +postconf.o: ../../include/mail_dict.h postconf.o: ../../include/mail_proto.h postconf.o: ../../include/iostuff.h postconf.o: ../../include/attr.h diff --git a/gnu/dist/postfix/src/postconf/postconf.c b/gnu/dist/postfix/src/postconf/postconf.c index 662c66b1d6c..91854d52223 100644 --- a/gnu/dist/postfix/src/postconf/postconf.c +++ b/gnu/dist/postfix/src/postconf/postconf.c @@ -47,7 +47,10 @@ /* stale lock files that were left behind after abnormal termination. /* .RE /* .IP \fB-m\fR -/* List the names of all supported lookup table types. +/* List the names of all supported lookup table types. Postfix +/* lookup tables are specified as \fItype\fB:\fIname\fR, where +/* \fItype\fR is one of the types listed below. The table \fIname\fR +/* syntax depends on the lookup table type. /* .RS /* .IP \fBbtree\fR /* A sorted, balanced tree structure. @@ -73,6 +76,10 @@ /* .IP "\fBpcre\fR (read-only)" /* A lookup table based on Perl Compatible Regular Expressions. The /* file format is described in \fBpcre_table\fR(5). +/* .IP "\fBproxy\fR (read-only)" +/* A lookup table that is implemented via the Postfix +/* \fBproxymap\fR(8) service. The table name syntax is +/* \fItype\fB:\fIname\fR. /* .IP "\fBregexp\fR (read-only)" /* A lookup table based on regular expressions. The file format is /* described in \fBregexp_table\fR(5). @@ -156,6 +163,7 @@ #include <mynetworks.h> #include <mail_conf.h> +#include <mail_dict.h> #include <mail_proto.h> #include <mail_version.h> #include <mail_params.h> @@ -921,6 +929,7 @@ int main(int argc, char **argv) * If showing map types, show them and exit */ if (mode & SHOW_MAPS) { + mail_dict_init(); show_maps(); } diff --git a/gnu/dist/postfix/src/postdrop/.indent.pro b/gnu/dist/postfix/src/postdrop/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postdrop/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postfix/.indent.pro b/gnu/dist/postfix/src/postfix/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postfix/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postkick/.indent.pro b/gnu/dist/postfix/src/postkick/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postkick/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postlock/.indent.pro b/gnu/dist/postfix/src/postlock/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postlock/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postlog/.indent.pro b/gnu/dist/postfix/src/postlog/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postlog/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postmap/.indent.pro b/gnu/dist/postfix/src/postmap/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postmap/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postmap/Makefile.in b/gnu/dist/postfix/src/postmap/Makefile.in index 66ebf9f744b..5dbb4ccfe3b 100644 --- a/gnu/dist/postfix/src/postmap/Makefile.in +++ b/gnu/dist/postfix/src/postmap/Makefile.in @@ -93,6 +93,7 @@ postmap.o: ../../include/split_at.h postmap.o: ../../include/vstring_vstream.h postmap.o: ../../include/set_eugid.h postmap.o: ../../include/mail_conf.h +postmap.o: ../../include/mail_dict.h postmap.o: ../../include/mail_params.h postmap.o: ../../include/mkmap.h postmap.o: ../../include/dict.h diff --git a/gnu/dist/postfix/src/postmap/postmap.c b/gnu/dist/postfix/src/postmap/postmap.c index 0d7ad8400cd..cd3d6887e00 100644 --- a/gnu/dist/postfix/src/postmap/postmap.c +++ b/gnu/dist/postfix/src/postmap/postmap.c @@ -181,6 +181,7 @@ /* Global library. */ #include <mail_conf.h> +#include <mail_dict.h> #include <mail_params.h> #include <mkmap.h> @@ -537,6 +538,7 @@ int main(int argc, char **argv) } } mail_conf_read(); + mail_dict_init(); /* * Use the map type specified by the user, or fall back to a default diff --git a/gnu/dist/postfix/src/postqueue/postqueue.c b/gnu/dist/postfix/src/postqueue/postqueue.c index 41b15b44c66..5189518b4a8 100644 --- a/gnu/dist/postfix/src/postqueue/postqueue.c +++ b/gnu/dist/postfix/src/postqueue/postqueue.c @@ -11,8 +11,11 @@ /* \fBpostqueue\fR [\fB-c \fIconfig_dir\fR] \fB-s \fIsite\fR /* DESCRIPTION /* The \fBpostqueue\fR program implements the Postfix user interface -/* for queue management. It implements all the operations that are +/* for queue management. It implements operations that are /* traditionally available via the \fBsendmail\fR(1) command. +/* See the \fBpostsuper\fR(1) command for queue operations +/* that require super-user privileges such as deleting a message +/* from the queue or changing the status of a message. /* /* The following options are recognized: /* .IP "\fB-c \fIconfig_dir\fR" @@ -94,7 +97,8 @@ /* specifies the domains that Postfix accepts in the SMTP \fBETRN\fR /* request and in the \fBsendmail -qR\fR command. /* SEE ALSO -/* sendmail(8) sendmail-compatible user interface +/* sendmail(1) sendmail-compatible user interface +/* postsuper(1) privileged queue operations /* qmgr(8) queue manager /* showq(8) list mail queue /* flush(8) fast flush service diff --git a/gnu/dist/postfix/src/postsuper/.indent.pro b/gnu/dist/postfix/src/postsuper/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/postsuper/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/postsuper/postsuper.c b/gnu/dist/postfix/src/postsuper/postsuper.c index 46876ee9d28..7c318f90bd5 100644 --- a/gnu/dist/postfix/src/postsuper/postsuper.c +++ b/gnu/dist/postfix/src/postsuper/postsuper.c @@ -12,6 +12,8 @@ /* DESCRIPTION /* The \fBpostsuper\fR command does maintenance jobs on the Postfix /* queue. Use of the command is restricted to the superuser. +/* See the \fBpostqueue\fR command for unprivileged queue operations +/* such as listing or flushing the mail queue. /* /* By default, \fBpostsuper\fR performs the operations requested with the /* \fB-s\fR and \fB-p\fR command-line options on all Postfix queue @@ -162,6 +164,9 @@ /* .IP \fBhash_queue_names\fR /* The names of queues that are organized into multiple levels of /* subdirectories. +/* SEE ALSO +/* sendmail(1) sendmail-compatible user interface +/* postqueue(1) unprivileged queue operations /* LICENSE /* .ad /* .fi diff --git a/gnu/dist/postfix/src/proxymap/.indent.pro b/gnu/dist/postfix/src/proxymap/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/proxymap/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/proxymap/Makefile.in b/gnu/dist/postfix/src/proxymap/Makefile.in new file mode 100644 index 00000000000..91d20d8384f --- /dev/null +++ b/gnu/dist/postfix/src/proxymap/Makefile.in @@ -0,0 +1,75 @@ +SHELL = /bin/sh +SRCS = proxymap.c +OBJS = proxymap.o +HDRS = +TESTSRC = +WARN = -W -Wformat -Wimplicit -Wmissing-prototypes \ + -Wparentheses -Wstrict-prototypes -Wswitch -Wuninitialized \ + -Wunused +DEFS = -I. -I$(INC_DIR) -D$(SYSTYPE) +CFLAGS = $(DEBUG) $(OPT) $(DEFS) +TESTPROG= +PROG = proxymap +INC_DIR = ../../include +LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a + +.c.o:; $(CC) $(CFLAGS) -c $*.c + +$(PROG): $(OBJS) $(LIBS) + $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + +Makefile: Makefile.in + (set -e; echo "# DO NOT EDIT"; $(OPTS) $(SHELL) ../../makedefs && cat $?) >$@ + +test: $(TESTPROG) + +tests: test + +update: ../../libexec/$(PROG) + +../../libexec/$(PROG): $(PROG) + cp $(PROG) ../../libexec + +printfck: $(OBJS) $(PROG) + rm -rf printfck + mkdir printfck + sed '1,/^# do not edit/!d' Makefile >printfck/Makefile + set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done + cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o` + +lint: + lint $(DEFS) $(SRCS) $(LINTFIX) + +clean: + rm -f *.o *core $(PROG) $(TESTPROG) junk + rm -rf printfck + +tidy: clean + +depend: $(MAKES) + (sed '1,/^# do not edit/!d' Makefile.in; \ + set -e; for i in [a-z][a-z0-9]*.c; do \ + $(CC) -E $(DEFS) $(INCL) $$i | sed -n -e '/^# *1 *"\([^"]*\)".*/{' \ + -e 's//'`echo $$i|sed 's/c$$/o/'`': \1/' -e 'p' -e '}'; \ + done) | grep -v '[.][o][:][ ][/]' >$$$$ && mv $$$$ Makefile.in + @$(EXPORT) make -f Makefile.in Makefile 1>&2 + +# do not edit below this line - it is generated by 'make depend' +proxymap.o: proxymap.c +proxymap.o: ../../include/sys_defs.h +proxymap.o: ../../include/msg.h +proxymap.o: ../../include/mymalloc.h +proxymap.o: ../../include/vstring.h +proxymap.o: ../../include/vbuf.h +proxymap.o: ../../include/htable.h +proxymap.o: ../../include/stringops.h +proxymap.o: ../../include/dict.h +proxymap.o: ../../include/vstream.h +proxymap.o: ../../include/argv.h +proxymap.o: ../../include/mail_conf.h +proxymap.o: ../../include/mail_params.h +proxymap.o: ../../include/mail_proto.h +proxymap.o: ../../include/iostuff.h +proxymap.o: ../../include/attr.h +proxymap.o: ../../include/dict_proxy.h +proxymap.o: ../../include/mail_server.h diff --git a/gnu/dist/postfix/src/proxymap/proxymap.c b/gnu/dist/postfix/src/proxymap/proxymap.c new file mode 100644 index 00000000000..362079da203 --- /dev/null +++ b/gnu/dist/postfix/src/proxymap/proxymap.c @@ -0,0 +1,418 @@ +/*++ +/* NAME +/* proxymap 8 +/* SUMMARY +/* Postfix lookup table proxy server +/* SYNOPSIS +/* \fBproxymap\fR [generic Postfix daemon options] +/* DESCRIPTION +/* The \fBproxymap\fR server provides read-only table +/* lookup service to Postfix client processes. The purpose +/* of the service is: +/* .IP \(bu +/* To overcome chroot restrictions. For example, a chrooted SMTP +/* server needs access to the system passwd file in order to +/* reject mail for non-existent local addresses, but it is not +/* practical to maintain a copy of the passwd file in the chroot +/* jail. The solution: +/* .sp +/* local_recipient_maps = +/* .ti +4 +/* proxy:unix:passwd.byname $alias_maps +/* .IP \(bu +/* To consolidate the number of open lookup tables by sharing +/* one open table among multiple processes. For example, making +/* mysql connections from every Postfix daemon process results +/* in "too many connections" errors. The solution: +/* .sp +/* virtual_alias_maps = +/* .ti +4 +/* proxy:mysql:/etc/postfix/virtual_alias.cf +/* .sp +/* The total number of connections is limited by the number of +/* proxymap server processes. +/* .PP +/* The proxymap server implements the following requests: +/* .IP "\fBPROXY_REQ_OPEN\fI maptype:mapname flags\fR" +/* Open the table with type \fImaptype\fR and name \fImapname\fR, +/* as controlled by \fIflags\fR. +/* The reply is the request completion status code (below) and the +/* map type dependent flags. +/* .IP "\fBPROXY_REQ_LOOKUP\fI maptype:mapname flags key\fR" +/* Look up the data stored under the requested key. +/* The reply is the request completion status code (below) and +/* the lookup result value. +/* The \fImaptype:mapname\fR and \fIflags\fR are the same +/* as with the \fBPROXY_REQ_OPEN\fR request. +/* .PP +/* There is no close command, nor are tables implicitly closed +/* when a client disconnects. One of the purposes of the proxymap +/* server is to share tables among multiple client processes. +/* +/* The request completion status code is one of: +/* .IP \fBPROXY_STAT_OK\fR +/* The specified table was opened, or the requested entry was found. +/* .IP \fBPROXY_STAT_NOKEY\fR +/* The requested table entry was not found. +/* .IP \fBPROXY_STAT_BAD\fR +/* The request was rejected (bad request parameter value). +/* .IP \fBPROXY_STAT_RETRY\fR +/* The lookup request could not be completed. +/* .IP \fBPROXY_STAT_DENY\fR +/* The specified table was not approved for access via the +/* proxymap service. +/* SERVER PROCESS MANAGEMENT +/* .ad +/* .fi +/* The proxymap servers run under control by the Postfix master +/* server. Each server can handle multiple simultaneous connections. +/* When all servers are busy while a client connects, the master +/* creates a new proxymap server process, provided that the proxymap +/* server process limit is not exceeded. +/* Each proxymap server terminates after serving +/* at least \fB$max_use\fR clients or after \fB$max_idle\fR seconds +/* of idle time. +/* SECURITY +/* .ad +/* .fi +/* The proxymap server opens only tables that are approved via the +/* \fBproxy_read_maps\fR configuration parameter, does not talk to +/* users, and can run at fixed low privilege, chrooted or not. +/* +/* The proxymap server is not a trusted daemon process, and must +/* not be used to look up sensitive information such as user or +/* group IDs, mailbox file/directory names or external commands. +/* DIAGNOSTICS +/* Problems and transactions are logged to \fBsyslogd\fR(8). +/* BUGS +/* The proxymap server provides service to multiple clients, +/* and must therefore not be used for tables that have high-latency +/* lookups. +/* CONFIGURATION PARAMETERS +/* .ad +/* .fi +/* The following main.cf parameters are especially relevant +/* to this program. Use the \fBpostfix reload\fR command +/* after a configuration change. +/* .IP \fBproxy_read_maps\fR +/* A list of zero or more parameter values that may contain +/* references to Postfix lookup tables. Only table references +/* that begin with \fBproxy:\fR are approved for read-only +/* access via the proxymap server. +/* SEE ALSO +/* dict_proxy(3) proxy map client +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ + +/* System library. */ + +#include <sys_defs.h> +#include <string.h> +#include <stdlib.h> +#include <unistd.h> + +/* Utility library. */ + +#include <msg.h> +#include <mymalloc.h> +#include <vstring.h> +#include <htable.h> +#include <stringops.h> +#include <dict.h> + +/* Global library. */ + +#include <mail_conf.h> +#include <mail_params.h> +#include <mail_proto.h> +#include <dict_proxy.h> + +/* Server skeleton. */ + +#include <mail_server.h> + +/* Application-specific. */ + + /* + * XXX All but the last are needed here so that $name expansion dependencies + * aren't too broken. The fix is to gather all parameter default settings in + * one place. + */ +char *var_local_rcpt_maps; +char *var_virt_alias_maps; +char *var_virt_alias_doms; +char *var_virt_mailbox_maps; +char *var_virt_mailbox_doms; +char *var_relay_rcpt_maps; +char *var_relay_domains; +char *var_canonical_maps; +char *var_send_canon_maps; +char *var_rcpt_canon_maps; +char *var_relocated_maps; +char *var_transport_maps; +char *var_proxy_read_maps; + + /* + * The pre-approved, pre-parsed list of maps. + */ +static HTABLE *proxy_read_maps; + + /* + * Shared and static to reduce memory allocation overhead. + */ +static VSTRING *request; +static VSTRING *request_map; +static VSTRING *request_key; +static VSTRING *map_type_name_flags; + + /* + * Silly little macros. + */ +#define STR(x) vstring_str(x) +#define VSTREQ(x,y) (strcmp(STR(x),y) == 0) + +/* proxy_map_find - look up or open table */ + +static DICT *proxy_map_find(const char *map_type_name, int request_flags, + int *statp) +{ + DICT *dict; + +#define PROXY_COLON DICT_TYPE_PROXY ":" +#define PROXY_COLON_LEN (sizeof(PROXY_COLON) - 1) +#define READ_OPEN_FLAGS O_RDONLY + + /* + * Canonicalize the map name. If the map is not on the approved list, + * deny the request. + */ +#define PROXY_MAP_FIND_ERROR_RETURN(x) { *statp = (x); return (0); } + + while (strncmp(map_type_name, PROXY_COLON, PROXY_COLON_LEN) == 0) + map_type_name += PROXY_COLON_LEN; + if (strchr(map_type_name, ':') == 0) + PROXY_MAP_FIND_ERROR_RETURN(PROXY_STAT_BAD); + if (htable_locate(proxy_read_maps, map_type_name) == 0) { + msg_warn("request for unapproved table: \"%s\"", map_type_name); + msg_warn("to approve this table for %s access, list %s:%s in %s:%s", + MAIL_SERVICE_PROXYMAP, DICT_TYPE_PROXY, map_type_name, + MAIN_CONF_FILE, VAR_PROXY_READ_MAPS); + PROXY_MAP_FIND_ERROR_RETURN(PROXY_STAT_DENY); + } + + /* + * Open one instance of a map for each combination of name+flags. + */ + vstring_sprintf(map_type_name_flags, "%s:%o", + map_type_name, request_flags); + if ((dict = dict_handle(STR(map_type_name_flags))) == 0) + dict = dict_open(map_type_name, READ_OPEN_FLAGS, request_flags); + if (dict == 0) + msg_panic("proxy_map_find: dict_open null result"); + dict_register(STR(map_type_name_flags), dict); + return (dict); +} + +/* proxymap_lookup_service - remote lookup service */ + +static void proxymap_lookup_service(VSTREAM *client_stream) +{ + int request_flags; + DICT *dict; + const char *reply_value; + int reply_status; + + /* + * Process the request. + */ + if (attr_scan(client_stream, ATTR_FLAG_STRICT, + ATTR_TYPE_STR, MAIL_ATTR_TABLE, request_map, + ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, &request_flags, + ATTR_TYPE_STR, MAIL_ATTR_KEY, request_key, + ATTR_TYPE_END) != 3) { + reply_status = PROXY_STAT_BAD; + reply_value = ""; + } else if ((dict = proxy_map_find(STR(request_map), request_flags, + &reply_status)) == 0) { + reply_value = ""; + } else if ((reply_value = dict_get(dict, STR(request_key))) != 0) { + reply_status = PROXY_STAT_OK; + } else if (dict_errno == 0) { + reply_status = PROXY_STAT_NOKEY; + reply_value = ""; + } else { + reply_status = PROXY_STAT_RETRY; + reply_value = ""; + } + + /* + * Respond to the client. + */ + attr_print(client_stream, ATTR_FLAG_NONE, + ATTR_TYPE_NUM, MAIL_ATTR_STATUS, reply_status, + ATTR_TYPE_STR, MAIL_ATTR_VALUE, reply_value, + ATTR_TYPE_END); +} + +/* proxymap_open_service - open remote lookup table */ + +static void proxymap_open_service(VSTREAM *client_stream) +{ + int request_flags; + DICT *dict; + int reply_status; + int reply_flags; + + /* + * Process the request. + */ + if (attr_scan(client_stream, ATTR_FLAG_STRICT, + ATTR_TYPE_STR, MAIL_ATTR_TABLE, request_map, + ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, &request_flags, + ATTR_TYPE_END) != 2) { + reply_status = PROXY_STAT_BAD; + reply_flags = 0; + } else if ((dict = proxy_map_find(STR(request_map), request_flags, + &reply_status)) == 0) { + reply_flags = 0; + } else { + reply_status = PROXY_STAT_OK; + reply_flags = dict->flags; + } + + /* + * Respond to the client. + */ + attr_print(client_stream, ATTR_FLAG_NONE, + ATTR_TYPE_NUM, MAIL_ATTR_STATUS, reply_status, + ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, reply_flags, + ATTR_TYPE_END); +} + +/* proxymap_service - perform service for client */ + +static void proxymap_service(VSTREAM *client_stream, char *unused_service, + char **argv) +{ + + /* + * Sanity check. This service takes no command-line arguments. + */ + if (argv[0]) + msg_fatal("unexpected command-line argument: %s", argv[0]); + + /* + * This routine runs whenever a client connects to the socket dedicated + * to the proxymap service. All connection-management stuff is handled by + * the common code in multi_server.c. + */ + if (attr_scan(client_stream, + ATTR_FLAG_MORE | ATTR_FLAG_STRICT, + ATTR_TYPE_STR, MAIL_ATTR_REQ, request, + ATTR_TYPE_END) == 1) { + if (VSTREQ(request, PROXY_REQ_LOOKUP)) { + proxymap_lookup_service(client_stream); + } else if (VSTREQ(request, PROXY_REQ_OPEN)) { + proxymap_open_service(client_stream); + } else { + msg_warn("unrecognized request: \"%s\", ignored", STR(request)); + attr_print(client_stream, ATTR_FLAG_NONE, + ATTR_TYPE_NUM, MAIL_ATTR_STATUS, PROXY_STAT_BAD, + ATTR_TYPE_END); + } + } + vstream_fflush(client_stream); +} + +/* dict_proxy_open - intercept remote map request from inside library */ + +DICT *dict_proxy_open(const char *map, int open_flags, int dict_flags) +{ + if (msg_verbose) + msg_info("dict_proxy_open(%s, 0%o, 0%o) called from internal routine", + map, open_flags, dict_flags); + while (strncmp(map, PROXY_COLON, PROXY_COLON_LEN) == 0) + map += PROXY_COLON_LEN; + return (dict_open(map, open_flags, dict_flags)); +} + +/* post_jail_init - initialization after privilege drop */ + +static void post_jail_init(char *unused_name, char **unused_argv) +{ + const char *sep = " \t\r\n"; + char *saved_filter; + char *bp; + char *type_name; + + /* + * Pre-allocate buffers. + */ + request = vstring_alloc(10); + request_map = vstring_alloc(10); + request_key = vstring_alloc(10); + map_type_name_flags = vstring_alloc(10); + + /* + * Prepare the pre-approved list of proxied tables. + */ + saved_filter = bp = mystrdup(var_proxy_read_maps); + proxy_read_maps = htable_create(13); + while ((type_name = mystrtok(&bp, sep)) != 0) { + if (strncmp(type_name, PROXY_COLON, PROXY_COLON_LEN)) + continue; + do { + type_name += PROXY_COLON_LEN; + } while (!strncmp(type_name, PROXY_COLON, PROXY_COLON_LEN)); + if (strchr(type_name, ':') != 0 + && htable_locate(proxy_read_maps, type_name) == 0) + (void) htable_enter(proxy_read_maps, type_name, (char *) 0); + } + myfree(saved_filter); +} + +/* pre_accept - see if tables have changed */ + +static void pre_accept(char *unused_name, char **unused_argv) +{ + if (dict_changed()) { + msg_info("some lookup table has changed -- restarting"); + exit(0); + } +} + +/* main - pass control to the multi-threaded skeleton */ + +int main(int argc, char **argv) +{ + static CONFIG_STR_TABLE str_table[] = { + VAR_LOCAL_RCPT_MAPS, DEF_LOCAL_RCPT_MAPS, &var_local_rcpt_maps, 0, 0, + VAR_VIRT_ALIAS_MAPS, DEF_VIRT_ALIAS_MAPS, &var_virt_alias_maps, 0, 0, + VAR_VIRT_ALIAS_DOMS, DEF_VIRT_ALIAS_DOMS, &var_virt_alias_doms, 0, 0, + VAR_VIRT_MAILBOX_MAPS, DEF_VIRT_MAILBOX_MAPS, &var_virt_mailbox_maps, 0, 0, + VAR_VIRT_MAILBOX_DOMS, DEF_VIRT_MAILBOX_DOMS, &var_virt_mailbox_doms, 0, 0, + VAR_RELAY_RCPT_MAPS, DEF_RELAY_RCPT_MAPS, &var_relay_rcpt_maps, 0, 0, + VAR_RELAY_DOMAINS, DEF_RELAY_DOMAINS, &var_relay_domains, 0, 0, + VAR_CANONICAL_MAPS, DEF_CANONICAL_MAPS, &var_canonical_maps, 0, 0, + VAR_SEND_CANON_MAPS, DEF_SEND_CANON_MAPS, &var_send_canon_maps, 0, 0, + VAR_RCPT_CANON_MAPS, DEF_RCPT_CANON_MAPS, &var_rcpt_canon_maps, 0, 0, + VAR_RELOCATED_MAPS, DEF_RELOCATED_MAPS, &var_relocated_maps, 0, 0, + VAR_TRANSPORT_MAPS, DEF_TRANSPORT_MAPS, &var_transport_maps, 0, 0, + VAR_PROXY_READ_MAPS, DEF_PROXY_READ_MAPS, &var_proxy_read_maps, 0, 0, + 0, + }; + + multi_server_main(argc, argv, proxymap_service, + MAIL_SERVER_STR_TABLE, str_table, + MAIL_SERVER_POST_INIT, post_jail_init, + MAIL_SERVER_PRE_ACCEPT, pre_accept, + 0); +} diff --git a/gnu/dist/postfix/src/qmgr/.indent.pro b/gnu/dist/postfix/src/qmgr/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/qmgr/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/qmgr/qmgr_deliver.c b/gnu/dist/postfix/src/qmgr/qmgr_deliver.c index 1986a074811..2bba1ab1e9a 100644 --- a/gnu/dist/postfix/src/qmgr/qmgr_deliver.c +++ b/gnu/dist/postfix/src/qmgr/qmgr_deliver.c @@ -149,10 +149,15 @@ static int qmgr_deliver_send_request(QMGR_ENTRY *entry, VSTREAM *stream) * queue name is user@nexthop, so that we can implement per-recipient * concurrency limits. However, the delivery agent protocol expects * nexthop only, so we must strip off the recipient local part. + * + * XXX Should have separate fields for queue name and for destination, so + * that we don't have to make a special case for the error delivery agent + * (where nexthop is arbitrary text). See also: qmgr_message.c. */ flags = message->inspect_xport ? DEL_REQ_FLAG_BOUNCE : DEL_REQ_FLAG_DEFLT; - nexthop = (cp = strrchr(entry->queue->name, '@')) != 0 && cp[1] ? + nexthop = strcmp(entry->queue->transport->name, MAIL_SERVICE_ERROR) != 0 + && (cp = strrchr(entry->queue->name, '@')) != 0 && cp[1] ? cp + 1 : entry->queue->name; attr_print(stream, ATTR_FLAG_MORE, ATTR_TYPE_NUM, MAIL_ATTR_FLAGS, flags, diff --git a/gnu/dist/postfix/src/qmqpd/.indent.pro b/gnu/dist/postfix/src/qmqpd/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/qmqpd/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/sendmail/.indent.pro b/gnu/dist/postfix/src/sendmail/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/sendmail/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/showq/.indent.pro b/gnu/dist/postfix/src/showq/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/showq/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/smtp/.indent.pro b/gnu/dist/postfix/src/smtp/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/smtp/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/smtpd/.indent.pro b/gnu/dist/postfix/src/smtpd/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/smtpd/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/smtpd/Makefile.in b/gnu/dist/postfix/src/smtpd/Makefile.in index 2f923e29a03..853e62560b4 100644 --- a/gnu/dist/postfix/src/smtpd/Makefile.in +++ b/gnu/dist/postfix/src/smtpd/Makefile.in @@ -221,6 +221,7 @@ smtpd_check.o: ../../include/rec_type.h smtpd_check.o: ../../include/mail_proto.h smtpd_check.o: ../../include/iostuff.h smtpd_check.o: ../../include/attr.h +smtpd_check.o: ../../include/mail_addr.h smtpd_check.o: smtpd.h smtpd_check.o: ../../include/mail_stream.h smtpd_check.o: smtpd_sasl_glue.h diff --git a/gnu/dist/postfix/src/smtpd/smtpd_chat.c b/gnu/dist/postfix/src/smtpd/smtpd_chat.c index 692a52c6ebe..9d68dd34f3e 100644 --- a/gnu/dist/postfix/src/smtpd/smtpd_chat.c +++ b/gnu/dist/postfix/src/smtpd/smtpd_chat.c @@ -157,7 +157,7 @@ void smtpd_chat_reply(SMTPD_STATE *state, char *format,...) * sleep-on-anything slows down clients that make an excessive number of * errors within a session. */ - if (state->error_count > var_smtpd_soft_erlim) + if (state->error_count >= var_smtpd_soft_erlim) sleep(delay = (state->error_count > var_smtpd_err_sleep ? state->error_count : var_smtpd_err_sleep)); else if (STR(state->buffer)[0] == '4' || STR(state->buffer)[0] == '5') diff --git a/gnu/dist/postfix/src/smtpd/smtpd_sasl_glue.c b/gnu/dist/postfix/src/smtpd/smtpd_sasl_glue.c index c05b7d6721e..936f1673665 100644 --- a/gnu/dist/postfix/src/smtpd/smtpd_sasl_glue.c +++ b/gnu/dist/postfix/src/smtpd/smtpd_sasl_glue.c @@ -310,8 +310,9 @@ void smtpd_sasl_connect(SMTPD_STATE *state) "", " ", "", &state->sasl_mechanism_list, IGNORE_MECHANISM_LEN, - &sasl_mechanism_count) != SASL_OK - || sasl_mechanism_count <= 0) + &sasl_mechanism_count) != SASL_OK) + msg_fatal("cannot lookup SASL authentication mechanisms"); + if (sasl_mechanism_count <= 0) msg_fatal("no SASL authentication mechanisms"); } diff --git a/gnu/dist/postfix/src/smtpstone/.indent.pro b/gnu/dist/postfix/src/smtpstone/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/smtpstone/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/spawn/.indent.pro b/gnu/dist/postfix/src/spawn/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/spawn/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/trivial-rewrite/.indent.pro b/gnu/dist/postfix/src/trivial-rewrite/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/trivial-rewrite/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/trivial-rewrite/resolve.c b/gnu/dist/postfix/src/trivial-rewrite/resolve.c index 0be7fb62357..a02e860184f 100644 --- a/gnu/dist/postfix/src/trivial-rewrite/resolve.c +++ b/gnu/dist/postfix/src/trivial-rewrite/resolve.c @@ -400,12 +400,13 @@ void resolve_addr(char *addr, VSTRING *channel, VSTRING *nexthop, */ if (virt_alias_doms && string_list_match(virt_alias_doms, rcpt_domain)) { - if (var_helpful_warnings - && virt_mailbox_doms - && string_list_match(virt_mailbox_doms, rcpt_domain)) - msg_warn("do not list domain %s in BOTH %s and %s", - rcpt_domain, VAR_VIRT_ALIAS_DOMS, - VAR_VIRT_MAILBOX_DOMS); + if (var_helpful_warnings) { + if (virt_mailbox_doms + && string_list_match(virt_mailbox_doms, rcpt_domain)) + msg_warn("do not list domain %s in BOTH %s and %s", + rcpt_domain, VAR_VIRT_ALIAS_DOMS, + VAR_VIRT_MAILBOX_DOMS); + } vstring_strcpy(channel, MAIL_SERVICE_ERROR); vstring_sprintf(nexthop, "User unknown%s", var_show_unk_rcpt_table ? diff --git a/gnu/dist/postfix/src/trivial-rewrite/transport.c b/gnu/dist/postfix/src/trivial-rewrite/transport.c index 504a777d07c..3c0cfc8a3a2 100644 --- a/gnu/dist/postfix/src/trivial-rewrite/transport.c +++ b/gnu/dist/postfix/src/trivial-rewrite/transport.c @@ -190,6 +190,7 @@ void transport_wildcard_init(void) #define PARTIAL DICT_FLAG_FIXED if (find_transport_entry(WILDCARD, "", FULL, channel, nexthop)) { + transport_errno = 0; wildcard_channel = channel; wildcard_nexthop = nexthop; if (msg_verbose) @@ -294,6 +295,8 @@ int transport_lookup(const char *addr, const char *rcpt_domain, /* * Fall back to the wild-card entry. */ + if (transport_errno) + transport_wildcard_init(); if (transport_errno) { dict_errno = transport_errno; RETURN_FREE(NOTFOUND); diff --git a/gnu/dist/postfix/src/trivial-rewrite/trivial-rewrite.c b/gnu/dist/postfix/src/trivial-rewrite/trivial-rewrite.c index 6e89221adce..759e8e3170e 100644 --- a/gnu/dist/postfix/src/trivial-rewrite/trivial-rewrite.c +++ b/gnu/dist/postfix/src/trivial-rewrite/trivial-rewrite.c @@ -57,6 +57,17 @@ /* This overrides the optional nexthop information that is specified /* with \fB$relayhost\fR. /* The default nexthop is the recipient domain. +/* SERVER PROCESS MANAGEMENT +/* .ad +/* .fi +/* The trivial-rewrite servers run under control by the Postfix master +/* server. Each server can handle multiple simultaneous connections. +/* When all servers are busy while a client connects, the master +/* creates a new server process, provided that the trivial-rewrite +/* server process limit is not exceeded. +/* Each trivial-rewrite server terminates after +/* serving at least \fB$max_use\fR clients of after \fB$max_idle\fR +/* seconds of idle time. /* STANDARDS /* .ad /* .fi diff --git a/gnu/dist/postfix/src/util/.indent.pro b/gnu/dist/postfix/src/util/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/util/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/util/dict.h b/gnu/dist/postfix/src/util/dict.h index 16071a69217..6f30e2fd7ad 100644 --- a/gnu/dist/postfix/src/util/dict.h +++ b/gnu/dist/postfix/src/util/dict.h @@ -59,6 +59,9 @@ extern DICT *dict_debug(DICT *); #define DICT_FLAG_DEBUG (1<<9) /* log access */ #define DICT_FLAG_FOLD_KEY (1<<10) /* lowercase the lookup key */ #define DICT_FLAG_NO_REGSUB (1<<11) /* no lhs->rhs regexp substitution */ +#define DICT_FLAG_NO_PROXY (1<<12) /* no proxy mapping */ + +#define DICT_FLAG_PARANOID (DICT_FLAG_NO_REGSUB | DICT_FLAG_NO_PROXY) extern int dict_unknown_allowed; extern int dict_errno; diff --git a/gnu/dist/postfix/src/util/dict_open.c b/gnu/dist/postfix/src/util/dict_open.c index 2f50076fe62..f949502835d 100644 --- a/gnu/dist/postfix/src/util/dict_open.c +++ b/gnu/dist/postfix/src/util/dict_open.c @@ -84,6 +84,11 @@ /* .IP DICT_FLAG_NO_REGSUB /* Disallow regular expression substitution from left-hand side data /* into the right-hand side. +/* .IP DICT_FLAG_NO_PROXY +/* Disallow access through the \fBproxymap\fR service. +/* .IP DICT_FLAG_PARANOID +/* A combination of all the paranoia flags: DICT_FLAG_NO_REGSUB +/* and DICT_FLAG_NO_PROXY. /* .PP /* Specify DICT_FLAG_NONE for no special processing. /* diff --git a/gnu/dist/postfix/src/util/vstream.c b/gnu/dist/postfix/src/util/vstream.c index 22c59440ca7..5cff4514075 100644 --- a/gnu/dist/postfix/src/util/vstream.c +++ b/gnu/dist/postfix/src/util/vstream.c @@ -640,8 +640,11 @@ static int vstream_buf_get_ready(VBUF *bp) * allocation gives the application a chance to override the default * buffering policy. */ - if (bp->data == 0) + if (bp->data == 0) { vstream_buf_alloc(bp, VSTREAM_BUFSIZE); + if (bp->flags & VSTREAM_FLAG_DOUBLE) + VSTREAM_SAVE_STATE(stream, read_buf, read_fd); + } /* * If the stream is double-buffered and the write buffer is not empty, @@ -724,6 +727,8 @@ static int vstream_buf_put_ready(VBUF *bp) */ if (bp->data == 0) { vstream_buf_alloc(bp, VSTREAM_BUFSIZE); + if (bp->flags & VSTREAM_FLAG_DOUBLE) + VSTREAM_SAVE_STATE(stream, write_buf, write_fd); } else if (bp->cnt <= 0) { if (VSTREAM_FFLUSH_SOME(stream)) return (VSTREAM_EOF); diff --git a/gnu/dist/postfix/src/virtual/.indent.pro b/gnu/dist/postfix/src/virtual/.indent.pro new file mode 100644 index 00000000000..39b5f2fcd92 --- /dev/null +++ b/gnu/dist/postfix/src/virtual/.indent.pro @@ -0,0 +1,166 @@ +-TABOUNCE +-TALIAS_TOKEN +-TARGV +-TATTR_TABLE +-TBH_TABLE +-TBINATTR +-TBINATTR_INFO +-TBINHASH +-TBINHASH_INFO +-TBOUNCE_INFO +-TBOUNCE_LOG +-TBOUNCE_STAT +-TCLEANUP_STATE +-TCLIENT_LIST +-TCLNT_STREAM +-TCONFIG_BOOL_FN_TABLE +-TCONFIG_BOOL_TABLE +-TCONFIG_INT_FN_TABLE +-TCONFIG_INT_TABLE +-TCONFIG_STR_FN_TABLE +-TCONFIG_STR_TABLE +-TCONFIG_TIME_FN_TABLE +-TCONFIG_TIME_TABLE +-TCTABLE +-TCTABLE_ENTRY +-TDELIVER_ATTR +-TDELIVER_REQUEST +-TDICT +-TDICT_DB +-TDICT_DBM +-TDICT_DEBUG +-TDICT_ENV +-TDICT_HT +-TDICT_LDAP +-TDICT_MYSQL +-TDICT_NI +-TDICT_NIS +-TDICT_NISPLUS +-TDICT_NODE +-TDICT_OPEN_INFO +-TDICT_PCRE +-TDICT_PCRE_ENGINE +-TDICT_PCRE_EXPAND_CONTEXT +-TDICT_PCRE_IF_RULE +-TDICT_PCRE_MATCH_RULE +-TDICT_PCRE_PRESCAN_CONTEXT +-TDICT_PCRE_REGEXP +-TDICT_PCRE_RULE +-TDICT_PROXY +-TDICT_REGEXP +-TDICT_REGEXP_EXPAND_CONTEXT +-TDICT_REGEXP_IF_RULE +-TDICT_REGEXP_MATCH_RULE +-TDICT_REGEXP_PATTERN +-TDICT_REGEXP_PRESCAN_CONTEXT +-TDICT_REGEXP_RULE +-TDICT_TCP +-TDICT_UNIX +-TDNS_FIXED +-TDNS_REPLY +-TDNS_RR +-TDOMAIN_LIST +-TEXPAND_ATTR +-TFILE +-TFORWARD_INFO +-THEADER_OPTS +-THEADER_TOKEN +-THOST +-THTABLE +-THTABLE_INFO +-TINET_ADDR_LIST +-TINTV +-TINT_TABLE +-TJMP_BUF_WRAPPER +-TLMTP_ATTR +-TLMTP_RESP +-TLMTP_SESSION +-TLMTP_STATE +-TLOCAL_EXP +-TLOCAL_STATE +-TMAC_EXP +-TMAC_HEAD +-TMAC_PARSE +-TMAIL_PRINT +-TMAIL_SCAN +-TMAPS +-TMASTER_PROC +-TMASTER_SERV +-TMASTER_STATUS +-TMBLOCK +-TMBOX +-TMIME_ENCODING +-TMIME_INFO +-TMIME_STACK +-TMIME_STATE +-TMIME_TOKEN +-TMKMAP +-TMKMAP_DB +-TMKMAP_DBM +-TMKMAP_OPEN_INFO +-TMULTI_SERVER +-TMVECT +-TMYSQL +-TMYSQL_NAME +-TNAMADR_LIST +-TNAME_MASK +-TPEER_NAME +-TPICKUP_INFO +-TPIPE_ATTR +-TPIPE_PARAMS +-TPLMYSQL +-TQMGR_ENTRY +-TQMGR_JOB +-TQMGR_MESSAGE +-TQMGR_PEER +-TQMGR_QUEUE +-TQMGR_RCPT +-TQMGR_RCPT_LIST +-TQMGR_RECIPIENT +-TQMGR_SCAN +-TQMGR_TRANSPORT +-TQMQPD_STATE +-TRECIPIENT +-TRECIPIENT_LIST +-TREC_TYPE_NAME +-TRESOLVE_REPLY +-TRESPONSE +-TREST_TABLE +-TSCAN_DIR +-TSCAN_INFO +-TSCAN_OBJ +-TSESSION +-TSINGLE_SERVER +-TSINK_COMMAND +-TSINK_STATE +-TSMTPD_CMD +-TSMTPD_DEFER +-TSMTPD_RBL_EXPAND_CONTEXT +-TSMTPD_RBL_STATE +-TSMTPD_STATE +-TSMTPD_TOKEN +-TSMTP_ADDR +-TSMTP_CMD +-TSMTP_RESP +-TSMTP_SESSION +-TSMTP_STATE +-TSOCKADDR_SIZE +-TSPAWN_ATTR +-TSTRING_LIST +-TSTRING_TABLE +-TSYS_EXITS_TABLE +-TTOK822 +-TTRIGGER_SERVER +-TUSER_ATTR +-TVBUF +-TVSTREAM +-TVSTREAM_POPEN_ARGS +-TVSTREAN_POPEN_ARGS +-TVSTRING +-TWAIT_STATUS_T +-TWATCHDOG +-TWATCH_FD +-Tregex_t +-Tregmatch_t +-Tsasl_conn_t +-Tsasl_secret_t diff --git a/gnu/dist/postfix/src/virtual/Makefile.in b/gnu/dist/postfix/src/virtual/Makefile.in index da2dc414be3..384cee5cc47 100644 --- a/gnu/dist/postfix/src/virtual/Makefile.in +++ b/gnu/dist/postfix/src/virtual/Makefile.in @@ -11,7 +11,7 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) PROG = virtual TESTPROG= INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a $(AUXLIBS) +LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a .c.o:; $(CC) $(CFLAGS) -c $*.c diff --git a/gnu/dist/postfix/src/virtual/maildir.c b/gnu/dist/postfix/src/virtual/maildir.c index de2637160e0..2f977d916c9 100644 --- a/gnu/dist/postfix/src/virtual/maildir.c +++ b/gnu/dist/postfix/src/virtual/maildir.c @@ -35,6 +35,8 @@ /* System library. */ #include "sys_defs.h" +#include <sys/stat.h> +#include <time.h> #include <errno.h> #ifndef EDQUOT @@ -81,7 +83,8 @@ int deliver_maildir(LOCAL_STATE state, USER_ATTR usr_attr) int mail_copy_status; int deliver_status; int copy_flags; - static int count; + struct stat st; + time_t starttime = time((time_t *) 0); /* * Make verbose logging easier to understand. @@ -121,20 +124,63 @@ int deliver_maildir(LOCAL_STATE state, USER_ATTR usr_attr) * use starttime.pid_count.host, where starttime is the time that your * process started, and count is the number of messages you've * delivered." + * + * Well, that stopped working on fast machines, and on operating systems + * that randomize process ID values. When creating a file in tmp/ we use + * the process ID because it still is an exclusive resource. When moving + * the file to new/ we use the device number and inode number. I do not + * care if this breaks on a remote AFS file system, because people should + * know better. + * + * On January 26, 2003, http://cr.yp.to/proto/maildir.html said: + * + * A unique name has three pieces, separated by dots. On the left is the + * result of time() or the second counter from gettimeofday(). On the + * right is the result of gethostname(). (To deal with invalid host + * names, replace / with \057 and : with \072.) In the middle is a + * delivery identifier, discussed below. + * + * [...] + * + * Modern delivery identifiers are created by concatenating enough of the + * following strings to guarantee uniqueness: + * + * [...] + * + * In, where n is (in hexadecimal) the UNIX inode number of this file. + * Unfortunately, inode numbers aren't always available through NFS. + * + * Vn, where n is (in hexadecimal) the UNIX device number of this file. + * Unfortunately, device numbers aren't always available through NFS. + * (Device numbers are also not helpful with the standard UNIX + * filesystem: a maildir has to be within a single UNIX device for link() + * and rename() to work.) + * + * [...] + * + * Pn, where n is (in decimal) the process ID. + * + * [...] */ #define STR vstring_str set_eugid(usr_attr.uid, usr_attr.gid); - vstring_sprintf(buf, "%ld.%d_%d.%s", (long) var_starttime, - var_pid, count++, get_hostname()); + vstring_sprintf(buf, "%lu.P%d.%s", + (unsigned long) starttime, var_pid, get_hostname()); tmpfile = concatenate(tmpdir, STR(buf), (char *) 0); - newfile = concatenate(newdir, STR(buf), (char *) 0); + newfile = 0; if ((dst = vstream_fopen(tmpfile, O_WRONLY | O_CREAT | O_EXCL, 0600)) == 0 && (errno != ENOENT || make_dirs(tmpdir, 0700) < 0 || (dst = vstream_fopen(tmpfile, O_WRONLY | O_CREAT | O_EXCL, 0600)) == 0)) { vstring_sprintf(why, "create %s: %m", tmpfile); + } else if (fstat(vstream_fileno(dst), &st) < 0) { + vstring_sprintf(why, "create %s: %m", tmpfile); } else { + vstring_sprintf(buf, "%lu.V%lxI%lx.%s", + (unsigned long) starttime, (unsigned long) st.st_dev, + (unsigned long) st.st_ino, get_hostname()); + newfile = concatenate(newdir, STR(buf), (char *) 0); if ((mail_copy_status = mail_copy(COPY_ATTR(state.msg_attr), dst, copy_flags, "\n", why)) == 0) { if (sane_link(tmpfile, newfile) < 0 @@ -172,6 +218,7 @@ int deliver_maildir(LOCAL_STATE state, USER_ATTR usr_attr) myfree(tmpdir); myfree(curdir); myfree(tmpfile); - myfree(newfile); + if (newfile) + myfree(newfile); return (deliver_status); } diff --git a/gnu/dist/postfix/src/virtual/virtual.c b/gnu/dist/postfix/src/virtual/virtual.c index 0ae16d2e7e5..f25f52f4acd 100644 --- a/gnu/dist/postfix/src/virtual/virtual.c +++ b/gnu/dist/postfix/src/virtual/virtual.c @@ -14,7 +14,7 @@ /* /* This delivery agent only delivers mail. Other features such as /* mail forwarding, out-of-office notifications, etc., must be -/* configured via virtual maps or via similar lookup mechanisms. +/* configured via virtual_alias maps or via similar lookup mechanisms. /* MAILBOX LOCATION /* .ad /* .fi @@ -133,6 +133,9 @@ /* For security reasons, regular expression maps are allowed but /* regular expression substitution of $1 etc. is disallowed, /* because that would open a security hole. +/* +/* For security reasons, proxied table lookup is not allowed, +/* because that would open a security hole. /* .IP \fBvirtual_mailbox_domains\fR /* The list of domains that should be delivered via the Postfix virtual /* delivery agent. This uses the same syntax as the \fBmydestination\fR @@ -156,6 +159,9 @@ /* For security reasons, regular expression maps are allowed but /* regular expression substitution of $1 etc. is disallowed, /* because that would open a security hole. +/* +/* For security reasons, proxied table lookup is not allowed, +/* because that would open a security hole. /* .IP \fBvirtual_gid_maps\fR /* Recipients are looked up in these maps to determine the group ID to be /* used when writing to the target mailbox. @@ -170,6 +176,9 @@ /* For security reasons, regular expression maps are allowed but /* regular expression substitution of $1 etc. is disallowed, /* because that would open a security hole. +/* +/* For security reasons, proxied table lookup is not allowed, +/* because that would open a security hole. /* .SH "Locking controls" /* .ad /* .fi @@ -404,15 +413,15 @@ static void post_init(char *unused_name, char **unused_argv) virtual_mailbox_maps = virtual8_maps_create(VAR_VIRT_MAILBOX_MAPS, var_virt_mailbox_maps, - DICT_FLAG_LOCK); + DICT_FLAG_LOCK | DICT_FLAG_PARANOID); virtual_uid_maps = virtual8_maps_create(VAR_VIRT_UID_MAPS, var_virt_uid_maps, - DICT_FLAG_LOCK); + DICT_FLAG_LOCK | DICT_FLAG_PARANOID); virtual_gid_maps = virtual8_maps_create(VAR_VIRT_GID_MAPS, var_virt_gid_maps, - DICT_FLAG_LOCK); + DICT_FLAG_LOCK | DICT_FLAG_PARANOID); virtual_mbox_lock_mask = mbox_lock_mask(var_virt_mailbox_lock); } |
