+ state = ESM_DEADLETTER;
+ break;
+
+ case ESM_MAIL:
+ case ESM_POSTMASTER:
+ /*
+ ** If mailing back, do it.
+ ** Throw away all further output. Don't alias,
+ ** since this could cause loops, e.g., if joe
+ ** mails to joe@x, and for some reason the network
+ ** for @x is down, then the response gets sent to
+ ** joe@x, which gives a response, etc. Also force
+ ** the mail to be delivered even if a version of
+ ** it has already been sent to the sender.
+ */
+
+ if (state == ESM_MAIL)
+ {
+ if (e->e_errorqueue == NULL)
+ sendtolist(e->e_from.q_paddr,
+ (ADDRESS *) NULL,
+ &e->e_errorqueue);
+
+ /* deliver a cc: to the postmaster if desired */
+ if (PostMasterCopy != NULL)
+ sendtolist(PostMasterCopy,
+ (ADDRESS *) NULL,
+ &e->e_errorqueue);
+ q = e->e_errorqueue;
+ }
+ else
+ {
+ if (parseaddr("postmaster", q, 0, '\0') == NULL)
+ {
+ syserr("cannot parse postmaster!");
+ ExitStat = EX_SOFTWARE;
+ state = ESM_USRTMP;
+ break;
+ }
+ }
+ if (returntosender(e->e_message != NULL ? e->e_message :
+ "Unable to deliver mail",
+ q, TRUE) == 0)
+ {
+ state = ESM_DONE;
+ break;
+ }