• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/postfix-252/postfix/src/qmgr/

Lines Matching refs:message

15 /*	int	qmgr_active_done(message)
16 /* QMGR_MESSAGE *message;
18 /* These functions maintain the active message queue: the set
24 /* Damaged message files are saved to the "corrupt" directory.
26 /* qmgr_active_feed() inserts the named message file into
39 /* a message via it. Message delivery is asynchronous, too.
41 /* qmgr_active_done() deals with a message after delivery
42 /* has been tried for all in-core recipients. If the message
43 /* was bounced, a bounce message is sent to the sender, or
49 /* if at least one delivery failed, the message is moved
54 /* message was queued (per-message exponential backoff), or are set
62 /* Warnings: corrupt message file. A corrupt message is saved
173 /* qmgr_active_feed - feed one message into active queue */
178 QMGR_MESSAGE *message;
209 * Move the message to the active queue. File access errors are fatal.
224 * message.
236 if ((message = qmgr_message_alloc(MAIL_QUEUE_ACTIVE, queue_id,
245 } else if (message == QMGR_MESSAGE_LOCKED) {
254 if (message->refcount == 0)
255 qmgr_active_done(message);
260 /* qmgr_active_done - dispose of message after recipients have been tried */
262 void qmgr_active_done(QMGR_MESSAGE *message)
268 msg_info("%s: %s", myname, message->queue_id);
271 * During a previous iteration, an attempt to bounce this message may
282 * failed, and the delivery agent will have requested that the message be
290 if (stat(mail_queue_path((VSTRING *) 0, MAIL_QUEUE_BOUNCE, message->queue_id), &st) == 0) {
292 if (mail_queue_remove(MAIL_QUEUE_BOUNCE, message->queue_id))
294 MAIL_QUEUE_BOUNCE, message->queue_id);
297 msg_info("%s: bounce %s", myname, message->queue_id);
298 if (message->verp_delims == 0 || var_verp_bounce_off)
300 message->queue_name,
301 message->queue_id,
302 message->encoding,
303 message->sender,
304 message->dsn_envid,
305 message->dsn_ret,
307 (char *) message);
310 message->queue_name,
311 message->queue_id,
312 message->encoding,
313 message->sender,
314 message->dsn_envid,
315 message->dsn_ret,
316 message->verp_delims,
318 (char *) message);
326 qmgr_active_done_2_generic(message);
333 QMGR_MESSAGE *message = (QMGR_MESSAGE *) context;
338 message->flags |= status;
339 qmgr_active_done_2_generic(message);
344 static void qmgr_active_done_2_generic(QMGR_MESSAGE *message)
353 if (message->flags
354 && mail_open_ok(MAIL_QUEUE_ACTIVE, message->queue_id, &st, &path) == MAIL_OPEN_NO) {
355 qmgr_active_corrupt(message->queue_id);
356 qmgr_message_free(message);
368 if (message->rcpt_offset > 0) {
369 if (qmgr_message_realloc(message) == 0) {
370 qmgr_active_corrupt(message->queue_id);
371 qmgr_message_free(message);
373 if (message->refcount == 0)
374 qmgr_active_done(message); /* recurse for consistency */
390 if ((message->tflags & (DEL_REQ_FLAG_USR_VRFY | DEL_REQ_FLAG_RECORD))
391 || (message->rflags & QMGR_READ_FLAG_NOTIFY_SUCCESS)) {
392 atrace_flush(message->tflags,
393 message->queue_name,
394 message->queue_id,
395 message->encoding,
396 message->sender,
397 message->dsn_envid,
398 message->dsn_ret,
400 (char *) message);
407 qmgr_active_done_25_generic(message);
414 QMGR_MESSAGE *message = (QMGR_MESSAGE *) context;
419 if (status == 0 && message->tflags_offset)
420 qmgr_message_kill_record(message, message->tflags_offset);
421 message->flags |= status;
422 qmgr_active_done_25_generic(message);
427 static void qmgr_active_done_25_generic(QMGR_MESSAGE *message)
432 * If we get to this point we have tried all recipients for this message.
433 * If the message is too old, try to bounce it.
438 if (message->flags) {
439 if (event_time() >= message->create_time +
440 (*message->sender ? var_max_queue_time : var_dsn_queue_time)) {
442 message->queue_id, message->sender);
443 if (message->verp_delims == 0 || var_verp_bounce_off)
445 message->queue_name,
446 message->queue_id,
447 message->encoding,
448 message->sender,
449 message->dsn_envid,
450 message->dsn_ret,
452 (char *) message);
455 message->queue_name,
456 message->queue_id,
457 message->encoding,
458 message->sender,
459 message->dsn_envid,
460 message->dsn_ret,
461 message->verp_delims,
463 (char *) message);
465 } else if (message->warn_time > 0
466 && event_time() >= message->warn_time - 1) {
468 msg_info("%s: sending defer warning for %s", myname, message->queue_id);
470 message->queue_name,
471 message->queue_id,
472 message->encoding,
473 message->sender,
474 message->dsn_envid,
475 message->dsn_ret,
477 (char *) message);
485 qmgr_active_done_3_generic(message);
492 QMGR_MESSAGE *message = (QMGR_MESSAGE *) context;
498 qmgr_message_update_warn(message);
499 qmgr_active_done_3_generic(message);
506 QMGR_MESSAGE *message = (QMGR_MESSAGE *) context;
511 message->flags = status;
512 qmgr_active_done_3_generic(message);
517 static void qmgr_active_done_3_generic(QMGR_MESSAGE *message)
524 * stamps into the future by the amount of time that the message is
525 * delayed, and move the message to the deferred queue. Impose minimal
533 if (message->flags) {
534 if (message->create_time > 0) {
535 delay = event_time() - message->create_time;
543 qmgr_active_defer(message->queue_name, message->queue_id,
551 if (mail_queue_remove(message->queue_name, message->queue_id)) {
554 message->queue_id, message->queue_name);
556 message->queue_id, message->queue_name);
559 msg_info("%s: removed", message->queue_id);
563 POSTFIX_SMTP_DEQUEUE(message);
569 * Finally, delete the in-core message structure.
571 qmgr_message_free(message);