1 /* $NetBSD: qmgr_bounce.c,v 1.1.1.1 2009/06/23 10:08:50 tron Exp $ */ 2 3 /*++ 4 /* NAME 5 /* qmgr_bounce 6 /* SUMMARY 7 /* deal with mail that will not be delivered 8 /* SYNOPSIS 9 /* #include "qmgr.h" 10 /* 11 /* QMGR_QUEUE *qmgr_bounce_recipient(message, recipient, dsn) 12 /* QMGR_MESSAGE *message; 13 /* RECIPIENT *recipient; 14 /* DSN *dsn; 15 /* DESCRIPTION 16 /* qmgr_bounce_recipient() produces a bounce log record. 17 /* Once the bounce record is written successfully, the recipient 18 /* is marked as done. When the bounce record cannot be written, 19 /* the message structure is updated to reflect that the mail is 20 /* deferred. 21 /* 22 /* Arguments: 23 /* .IP message 24 /* Open queue file with the message being bounced. 25 /* .IP recipient 26 /* The recipient that will not be delivered. 27 /* .IP dsn 28 /* Delivery status information. See dsn(3). 29 /* DIAGNOSTICS 30 /* Panic: consistency check failure. Fatal: out of memory. 31 /* LICENSE 32 /* .ad 33 /* .fi 34 /* The Secure Mailer license must be distributed with this software. 35 /* AUTHOR(S) 36 /* Wietse Venema 37 /* IBM T.J. Watson Research 38 /* P.O. Box 704 39 /* Yorktown Heights, NY 10598, USA 40 /*--*/ 41 42 /* System library. */ 43 44 #include <sys_defs.h> 45 46 /* Utility library. */ 47 48 /* Global library. */ 49 50 #include <bounce.h> 51 #include <deliver_completed.h> 52 53 /* Application-specific. */ 54 55 #include "qmgr.h" 56 57 /* qmgr_bounce_recipient - bounce one message recipient */ 58 59 void qmgr_bounce_recipient(QMGR_MESSAGE *message, RECIPIENT *recipient, 60 DSN *dsn) 61 { 62 MSG_STATS stats; 63 int status; 64 65 status = bounce_append(message->tflags, message->queue_id, 66 QMGR_MSG_STATS(&stats, message), recipient, 67 "none", dsn); 68 69 if (status == 0) 70 deliver_completed(message->fp, recipient->offset); 71 else 72 message->flags |= status; 73 } 74