517 #define QMGR_SCAN_IDX_INCOMING 0
518 #define QMGR_SCAN_IDX_DEFERRED 1
519 #define QMGR_SCAN_IDX_COUNT (sizeof(qmgr_scans) / sizeof(qmgr_scans[0]))
523 static void qmgr_deferred_run_event(
int unused_event,
void *dummy)
536 static void qmgr_trigger_event(
char *buf, ssize_t len,
537 char *unused_service,
char **argv)
539 int incoming_flag = 0;
540 int deferred_flag = 0;
547 msg_fatal(
"unexpected command-line argument: %s", argv[0]);
555 #define QMGR_FLUSH_BEFORE (QMGR_FLUSH_ONCE | QMGR_FLUSH_DFXP)
557 for (i = 0; i < len; i++) {
560 buf[i],
ISALNUM(buf[i]) ? buf[i] :
'?');
589 if (incoming_flag != 0)
591 if (deferred_flag != 0)
597 static int qmgr_loop(
char *unused_name,
char **unused_argv)
615 #define WAIT_FOR_EVENT (-1)
635 last_scan_idx = (scan_idx + first_scan_idx) % QMGR_SCAN_IDX_COUNT;
648 first_scan_idx = (last_scan_idx + 1) % QMGR_SCAN_IDX_COUNT;
673 static void pre_accept(
char *unused_name,
char **unused_argv)
678 msg_info(
"table %s has changed -- restarting", table);
685 static void qmgr_pre_init(
char *unused_name,
char **unused_argv)
692 static void qmgr_post_init(
char *name,
char **unused_argv)
699 msg_warn(
"please update the %s/%s file; the new queue manager",
701 msg_warn(
"(old name: nqmgr) has become the standard queue manager (new name: qmgr)");
702 msg_warn(
"support for the name old name (nqmgr) will be removed from Postfix");
709 msg_warn(
"%s is smaller than %s - adjusting %s",
714 msg_warn(
"%s is larger than %s - adjusting %s",
740 qmgr_deferred_run_event(0, (
void *) 0);
747 int main(
int argc,
char **argv)
#define VAR_DEST_CON_LIMIT
int qmgr_active_feed(QMGR_SCAN *, const char *)
#define VAR_DELIVERY_SLOT_DISCOUNT
#define DEF_VRFY_PEND_LIMIT
#define CA_MAIL_SERVER_WATCHDOG(v)
#define DEF_INIT_DEST_CON
#define VAR_QUEUE_RUN_DELAY
#define DEF_XPORT_RETRY_TIME
int var_qmgr_active_limit
#define CA_MAIL_SERVER_BOOL_TABLE(v)
#define QMGR_REQ_SCAN_DEFERRED
#define DEF_DELIVERY_SLOT_DISCOUNT
#define VAR_DSN_QUEUE_TIME
int var_xport_refill_delay
#define DEF_QUEUE_RUN_DELAY
#define CA_MAIL_SERVER_STR_TABLE(v)
#define DEF_XPORT_REFILL_LIMIT
#define MAIL_QUEUE_ACTIVE
ssize_t mail_flow_count(void)
int var_init_dest_concurrency
#define VAR_DSN_DELAY_CLEARED
#define VAR_DELIVERY_SLOT_LOAN
#define DEF_QMGR_RCPT_LIMIT
#define VAR_LOCAL_CON_LIMIT
#define DEF_DEST_CON_LIMIT
int var_conc_cohort_limit
int var_conc_feedback_debug
#define VAR_CONC_NEG_FDBACK
int var_transport_retry_time
#define CA_MAIL_SERVER_LOOP(v)
#define DEF_CONC_POS_FDBACK
#define VAR_MAX_BACKOFF_TIME
#define VAR_DEST_RCPT_LIMIT
int var_qmgr_clog_warn_time
int var_xport_refill_limit
#define VAR_INIT_DEST_CON
#define DEF_VERP_BOUNCE_OFF
#define DEF_LOCAL_CON_LIMIT
NORETURN trigger_server_main(int, char **, TRIGGER_SERVER_FN,...)
#define QMGR_SCAN_IDX_INCOMING
#define VAR_CONC_COHORT_LIM
int var_dsn_delay_cleared
int var_delivery_slot_discount
#define DEF_XPORT_RCPT_LIMIT
#define VAR_QMGR_IPC_TIMEOUT
#define DEF_QMGR_CLOG_WARN_TIME
#define VAR_XPORT_REFILL_LIMIT
ssize_t mail_flow_put(ssize_t len)
char * var_def_filter_nexthop
#define DEF_DELIVERY_SLOT_LOAN
QMGR_SCAN * qmgr_scan_create(const char *)
#define DEF_LOCAL_RCPT_LIMIT
#define CA_MAIL_SERVER_POST_INIT(v)
#define CA_MAIL_SERVER_INT_TABLE(v)
#define VAR_DELIVERY_SLOT_COST
#define DEF_QMGR_ACT_LIMIT
int var_min_delivery_slots
#define VAR_QMGR_DAEMON_TIMEOUT
#define VAR_VRFY_PEND_LIMIT
#define VAR_QMGR_CLOG_WARN_TIME
const char * dict_changed_name(void)
void qmgr_active_drain(void)
void qmgr_scan_request(QMGR_SCAN *, int)
int var_delivery_slot_cost
ssize_t mail_flow_get(ssize_t len)
int var_qmgr_msg_rcpt_limit
#define MAIL_QUEUE_INCOMING
void msg_warn(const char *fmt,...)
#define QMGR_SCAN_IDX_DEFERRED
#define DEF_CONC_FDBACK_DEBUG
#define VAR_CONC_POS_FDBACK
#define DEF_XPORT_REFILL_DELAY
#define MAIL_VERSION_STAMP_ALLOCATE
#define QMGR_SCAN_IDX_COUNT
#define CA_MAIL_SERVER_TIME_TABLE(v)
#define DEF_QMGR_IPC_TIMEOUT
#define DEF_MAX_BACKOFF_TIME
#define DEF_DEST_RCPT_LIMIT
#define DEF_MIN_BACKOFF_TIME
#define VAR_XPORT_RATE_DELAY
NORETURN msg_fatal(const char *fmt,...)
#define DEF_CONC_NEG_FDBACK
#define VAR_QMGR_RCPT_LIMIT
char * var_conc_pos_feedback
#define QMGR_REQ_SCAN_INCOMING
#define MAIL_QUEUE_DEFERRED
#define VAR_DEF_FILTER_NEXTHOP
#define VAR_QMGR_ACT_LIMIT
int var_qmgr_daemon_timeout
#define DEF_STACK_RCPT_LIMIT
#define VAR_CONC_FDBACK_DEBUG
#define VAR_LOCAL_RCPT_LIMIT
#define TRIGGER_REQ_WAKEUP
#define DEF_MIN_DELIVERY_SLOTS
time_t event_request_timer(EVENT_NOTIFY_TIME_FN callback, void *context, int delay)
int main(int argc, char **argv)
#define VAR_XPORT_RETRY_TIME
int var_delivery_slot_loan
#define DEF_DEF_FILTER_NEXTHOP
#define CA_MAIL_SERVER_SOLITARY
#define QMGR_REQ_SCAN_ALL
void qmgr_move(const char *, const char *, time_t)
#define VAR_XPORT_RCPT_LIMIT
#define VAR_XPORT_REFILL_DELAY
#define VAR_QMGR_MSG_RCPT_LIMIT
#define DEF_XPORT_RATE_DELAY
#define VAR_DEST_RATE_DELAY
#define CA_MAIL_SERVER_PRE_ACCEPT(v)
#define DEF_CONC_COHORT_LIM
#define QMGR_REQ_FLUSH_DEAD
#define DEF_DELIVERY_SLOT_COST
#define DEF_QMGR_MSG_RCPT_LIMIT
#define DEF_DSN_QUEUE_TIME
#define VAR_MIN_BACKOFF_TIME
#define QMGR_FLUSH_BEFORE
char * qmgr_scan_next(QMGR_SCAN *)
#define VAR_STACK_RCPT_LIMIT
#define VAR_MIN_DELIVERY_SLOTS
#define VAR_VERP_BOUNCE_OFF
#define DEF_DEST_RATE_DELAY
#define DEF_MAX_QUEUE_TIME
#define VAR_MAX_QUEUE_TIME
char * var_conc_neg_feedback
#define DEF_DSN_DELAY_CLEARED
#define DEF_QMGR_DAEMON_TIMEOUT
#define CA_MAIL_SERVER_PRE_INIT(v)
void msg_info(const char *fmt,...)
MAIL_VERSION_STAMP_DECLARE