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