Lines Matching refs:e

31 clrsessenvelope(e)
32 ENVELOPE *e;
35 macdefine(&e->e_macro, A_PERM, macid("{auth_type}"), "");
36 macdefine(&e->e_macro, A_PERM, macid("{auth_authen}"), "");
37 macdefine(&e->e_macro, A_PERM, macid("{auth_author}"), "");
38 macdefine(&e->e_macro, A_PERM, macid("{auth_ssf}"), "");
41 macdefine(&e->e_macro, A_PERM, macid("{cert_issuer}"), "");
42 macdefine(&e->e_macro, A_PERM, macid("{cert_subject}"), "");
43 macdefine(&e->e_macro, A_PERM, macid("{cipher_bits}"), "");
44 macdefine(&e->e_macro, A_PERM, macid("{cipher}"), "");
45 macdefine(&e->e_macro, A_PERM, macid("{tls_version}"), "");
46 macdefine(&e->e_macro, A_PERM, macid("{verify}"), "");
48 macdefine(&e->e_macro, A_PERM, macid("{alg_bits}"), "");
49 macdefine(&e->e_macro, A_PERM, macid("{cn_issuer}"), "");
50 macdefine(&e->e_macro, A_PERM, macid("{cn_subject}"), "");
75 newenvelope(e, parent, rpool) in newenvelope() argument
76 register ENVELOPE *e; in newenvelope()
96 if (e == parent)
97 parent = e->e_parent;
98 clearenvelope(e, true, rpool);
99 if (e == CurEnv)
100 memmove((char *) &e->e_from,
102 sizeof(e->e_from));
104 memmove((char *) &e->e_from,
106 sizeof(e->e_from));
107 e->e_parent = parent;
108 assign_queueid(e);
109 e->e_ctime = curtime();
111 e->e_sessid = e->e_id;
115 e->e_msgpriority = parent->e_msgsize;
118 e->e_sessid = sm_rpool_strdup_x(rpool,
124 e->e_quarmsg = NULL;
125 macdefine(&e->e_macro, A_PERM,
130 e->e_quarmsg = sm_rpool_strdup_x(rpool,
132 macdefine(&e->e_macro, A_PERM,
133 macid("{quarantine}"), e->e_quarmsg);
136 e->e_puthdr = putheader;
137 e->e_putbody = putbody;
141 set_delivery_mode(sendmode, e);
143 return e;
176 dropenvelope(e, fulldrop, split) in dropenvelope() argument
177 register ENVELOPE *e; in dropenvelope()
187 bool pmnotify = bitset(EF_PM_NOTIFY, e->e_flags);
190 char *id = e->e_id;
196 sm_dprintf("dropenvelope %p: id=", e);
197 xputs(sm_debug_file(), e->e_id);
199 printenvflags(e);
203 printaddr(sm_debug_file(), e->e_sendqueue, true);
210 e->e_flags, OpMode, (int) CurrentPid);
222 e->e_id, bitset(EF_LOGSENDER, e->e_flags), LogLevel);
223 if (LogLevel > 4 && bitset(EF_LOGSENDER, e->e_flags))
224 logsender(e, NULL);
225 e->e_flags &= ~EF_LOGSENDER;
235 if (now >= e->e_ctime + TimeOuts.to_q_return[e->e_timeoutclass])
237 if (IS_DLVR_RETURN(e) && e->e_deliver_by > 0 &&
238 now >= e->e_ctime + e->e_deliver_by &&
239 !bitset(EF_RESPONSE, e->e_flags))
242 e->e_flags |= EF_FATALERRS|EF_CLRQUEUE;
244 else if (TimeOuts.to_q_return[e->e_timeoutclass] == NOW &&
245 !bitset(EF_RESPONSE, e->e_flags))
248 e->e_flags |= EF_FATALERRS|EF_CLRQUEUE;
251 e->e_flags &= ~EF_QUEUERUN;
252 for (q = e->e_sendqueue; q != NULL; q = q->q_next)
266 !emptyaddr(&e->e_from))
268 (void) sendtolist(e->e_from.q_paddr, NULLADDR,
269 &e->e_errorqueue, 0, e);
284 if (e->e_class < 0)
285 e->e_flags |= EF_NO_BODY_RETN;
302 e->e_deliver_by);
308 pintvl(TimeOuts.to_q_return[e->e_timeoutclass],
313 e->e_message = sm_rpool_strdup_x(e->e_rpool, buf);
315 e->e_flags |= EF_CLRQUEUE;
319 (void) sm_io_fprintf(e->e_xfp, SM_TIME_DEFAULT,
321 e->e_deliver_by);
324 (void) sm_io_fprintf(e->e_xfp, SM_TIME_DEFAULT,
326 pintvl(TimeOuts.to_q_return[e->e_timeoutclass],
328 (void) sm_io_fprintf(e->e_xfp, SM_TIME_DEFAULT,
330 for (q = e->e_sendqueue; q != NULL; q = q->q_next)
344 if (TimeOuts.to_q_warning[e->e_timeoutclass] > 0 &&
345 now >= e->e_ctime +
346 TimeOuts.to_q_warning[e->e_timeoutclass])
348 else if (IS_DLVR_NOTIFY(e) &&
349 e->e_deliver_by > 0 &&
350 now >= e->e_ctime + e->e_deliver_by)
355 if (!bitset(EF_WARNING|EF_RESPONSE, e->e_flags) &&
356 e->e_class >= 0 &&
357 e->e_from.q_paddr != NULL &&
358 strcmp(e->e_from.q_paddr, "<>") != 0 &&
359 sm_strncasecmp(e->e_from.q_paddr, "owner-", 6) != 0 &&
360 (strlen(e->e_from.q_paddr) <= 8 ||
361 sm_strcasecmp(&e->e_from.q_paddr[strlen(e->e_from.q_paddr) - 8],
364 for (q = e->e_sendqueue; q != NULL;
400 e->e_deliver_by);
405 pintvl(TimeOuts.to_q_warning[e->e_timeoutclass],
409 e->e_message = sm_rpool_strdup_x(e->e_rpool,
412 e->e_flags |= EF_WARNING;
416 (void) sm_io_fprintf(e->e_xfp, SM_TIME_DEFAULT,
418 e->e_deliver_by);
421 (void) sm_io_fprintf(e->e_xfp, SM_TIME_DEFAULT,
423 pintvl(TimeOuts.to_q_warning[e->e_timeoutclass],
425 (void) sm_io_fprintf(e->e_xfp, SM_TIME_DEFAULT,
427 pintvl(TimeOuts.to_q_return[e->e_timeoutclass],
441 if (bitset(EF_FATALERRS, e->e_flags) && !failure_return)
443 for (q = e->e_sendqueue; q != NULL; q = q->q_next)
461 strcmp(e->e_from.q_paddr, "<>") != 0)
468 e->e_flags |= EF_SENDRECEIPT;
469 (void) sendtolist(e->e_from.q_paddr, NULLADDR, &rlist, 0, e);
470 (void) returntosender("Return receipt", rlist, RTSF_NO_BODY, e);
472 e->e_flags &= ~EF_SENDRECEIPT;
478 if ((failure_return || delay_return) && e->e_errormode != EM_QUIET)
482 panic = savemail(e, !bitset(EF_NO_BODY_RETN, e->e_flags));
491 !bitset(EF_RESPONSE, e->e_flags) &&
492 e->e_class >= 0)
499 expand(PostMasterCopy, pcopy, sizeof(pcopy), e);
504 (void) sendtolist(pcopy, NULLADDR, &rlist, 0, e);
508 &rlist, 0, e);
509 (void) returntosender(e->e_message, rlist,
510 RTSF_PM_BOUNCE|RTSF_NO_BODY, e);
521 if (!queueit || bitset(EF_CLRQUEUE, e->e_flags))
526 e->e_id, queueit);
527 printenvflags(e);
531 if (e->e_dfp != NULL)
533 (void) sm_io_close(e->e_dfp, SM_TIME_DEFAULT);
534 e->e_dfp = NULL;
536 (void) xunlink(queuename(e, DATAFL_LETTER));
548 if (xunlink(queuename(e, ANYQFL_LETTER)) == 0)
551 updfs(e, -1, panic ? 0 : -1, "dropenvelope");
554 if (e->e_ntries > 0 && LogLevel > 9)
556 pintvl(curtime() - e->e_ctime, true),
557 e->e_ntries);
559 else if (queueit || !bitset(EF_INQUEUE, e->e_flags))
562 queueup(e, false, true);
575 oldsib = e->e_sibling;
576 e->e_sibling = NULL;
577 if (!split_by_recipient(e) &&
578 bitset(EF_FATALERRS, e->e_flags))
581 e->e_id, queuename(e, DATAFL_LETTER),
584 for (ee = e->e_sibling; ee != NULL; ee = ee->e_sibling)
586 queueup(e, false, true);
589 for (ee = e->e_sibling; ee != NULL; ee = ee->e_sibling)
608 e->e_sibling = oldsib;
615 closexscript(e);
616 unlockqueue(e);
619 if (e->e_dfp != NULL)
621 (void) sm_io_close(e->e_dfp, SM_TIME_DEFAULT);
622 e->e_dfp = NULL;
624 e->e_id = NULL;
625 e->e_flags &= ~EF_HAS_DF;
655 clearenvelope(e, fullclear, rpool) in clearenvelope() argument
656 register ENVELOPE *e; in clearenvelope()
668 if (e->e_xfp != NULL)
669 (void) sm_io_close(e->e_xfp, SM_TIME_DEFAULT);
670 if (e->e_dfp != NULL)
671 (void) sm_io_close(e->e_dfp, SM_TIME_DEFAULT);
672 e->e_xfp = e->e_dfp = NULL;
686 *e = BlankEnvelope;
687 e->e_message = NULL;
688 e->e_qfletter = '\0';
689 e->e_quarmsg = NULL;
690 macdefine(&e->e_macro, A_PERM, macid("{quarantine}"), "");
699 for (p = &e->e_macro.mac_table[0];
700 p <= &e->e_macro.mac_table[MAXMACROID];
713 e->e_rpool = rpool;
714 e->e_macro.mac_rpool = rpool;
716 set_delivery_mode(SM_DELIVER, e);
718 nhp = &e->e_header;
727 e->e_enhsc[0] = '\0';
748 initsys(e) in initsys() argument
749 register ENVELOPE *e; in initsys()
764 openxscript(e);
765 e->e_ctime = curtime();
766 e->e_qfletter = '\0';
775 if (OpMode == MD_DAEMON && bitset(EF_QUEUERUN, e->e_flags) &&
776 e->e_xfp != NULL)
777 OutChannel = e->e_xfp;
785 macdefine(&e->e_macro, A_TEMP, 'p', buf);
788 (void) sm_snprintf(buf, sizeof(buf), "%d", e->e_hopcount);
789 macdefine(&e->e_macro, A_TEMP, 'c', buf);
792 settime(e);
799 if (macvalue('y', e) == NULL)
807 macdefine(&e->e_macro, A_PERM, 'y', ybuf);
826 settime(e) in settime() argument
827 register ENVELOPE *e; in settime()
836 macdefine(&e->e_macro, A_TEMP, macid("{time}"), buf);
841 macdefine(&e->e_macro, A_TEMP, 't', buf);
846 macdefine(&e->e_macro, A_TEMP, 'd', buf);
847 macdefine(&e->e_macro, A_TEMP, 'b', arpadate(buf));
848 if (macvalue('a', e) == NULL)
849 macdefine(&e->e_macro, A_PERM, 'a', macvalue('b', e));
872 openxscript(e) in openxscript() argument
873 register ENVELOPE *e; in openxscript()
877 if (e->e_xfp != NULL)
881 if (e->e_lockfp == NULL && bitset(EF_INQUEUE, e->e_flags))
885 p = queuename(e, XSCRPT_LETTER);
886 e->e_xfp = bfopen(p, FileMode, XscriptFileBufferSize,
889 if (e->e_xfp == NULL)
892 e->e_xfp = sm_io_open(SmFtStdio, SM_TIME_DEFAULT,
894 if (e->e_xfp == NULL)
897 (void) sm_io_setvbuf(e->e_xfp, SM_TIME_DEFAULT, NULL, SM_IO_LBF, 0);
901 dumpfd(sm_io_getinfo(e->e_xfp, SM_IO_WHAT_FD, NULL), true,
919 closexscript(e) in closexscript() argument
920 register ENVELOPE *e; in closexscript()
922 if (e->e_xfp == NULL)
925 if (e->e_lockfp == NULL)
928 (void) sm_io_close(e->e_xfp, SM_TIME_DEFAULT);
929 e->e_xfp = NULL;
971 setsender(from, e, delimptr, delimchar, internal) in setsender() argument
973 register ENVELOPE *e;
989 macdefine(&e->e_macro, A_PERM, 'x', "");
996 if (bitset(EF_QUEUERUN, e->e_flags) || OpMode == MD_SMTP ||
1005 macdefine(&e->e_macro, A_PERM, macid("{addr_type}"), "e s");
1008 e->e_from.q_state = QS_BADADDR;
1009 e->e_from.q_flags = 0;
1011 parseaddr(from, &e->e_from, RF_COPYALL|RF_SENDERADDR,
1012 delimchar, delimptr, e, false) == NULL ||
1013 QS_IS_BADADDR(e->e_from.q_state) ||
1014 e->e_from.q_mailer == ProgMailer ||
1015 e->e_from.q_mailer == FileMailer ||
1016 e->e_from.q_mailer == InclMailer)
1024 p = macvalue('_', e);
1036 sm_syslog(LOG_NOTICE, e->e_id,
1042 if (!QS_IS_BADADDR(e->e_from.q_state))
1045 e->e_status = "5.1.7";
1046 usrerrenh(e->e_status,
1053 &e->e_from, RF_COPYALL|RF_SENDERADDR, ' ',
1054 NULL, e, false) == NULL)
1059 expand("\201n", nbuf, sizeof(nbuf), e);
1060 from = sm_rpool_strdup_x(e->e_rpool, nbuf);
1061 if (parseaddr(from, &e->e_from, RF_COPYALL, ' ',
1062 NULL, e, false) == NULL &&
1063 parseaddr(from = "postmaster", &e->e_from,
1064 RF_COPYALL, ' ', NULL, e, false) == NULL)
1070 e->e_from.q_state = QS_SENDER;
1074 printaddr(sm_debug_file(), &e->e_from, false);
1079 if (bitnset(M_CHECKUDB, e->e_from.q_mailer->m_flags))
1083 p = udbsender(e->e_from.q_user, e->e_rpool);
1089 if (bitnset(M_HASPWENT, e->e_from.q_mailer->m_flags))
1097 FullName = macvalue('x', e);
1107 if (e->e_from.q_user[0] != '\0' &&
1108 sm_mbdb_lookup(e->e_from.q_user, &user) == EX_OK)
1116 e->e_from.q_home = NULL;
1118 e->e_from.q_home = "";
1120 e->e_from.q_home = sm_rpool_strdup_x(e->e_rpool,
1122 macdefine(&e->e_macro, A_PERM, 'z', e->e_from.q_home);
1127 e->e_from.q_uid = user.mbdb_uid;
1128 e->e_from.q_gid = user.mbdb_gid;
1129 e->e_from.q_flags |= QGOODUID;
1135 strcmp(user.mbdb_name, e->e_from.q_user) == 0)
1142 e->e_from.q_home = NULL;
1145 macdefine(&e->e_macro, A_TEMP, 'x', FullName);
1149 if (e->e_from.q_home == NULL)
1151 e->e_from.q_home = getenv("HOME");
1152 if (e->e_from.q_home != NULL)
1154 if (*e->e_from.q_home == '\0')
1155 e->e_from.q_home = NULL;
1156 else if (strcmp(e->e_from.q_home, "/") == 0)
1157 e->e_from.q_home++;
1160 e->e_from.q_uid = RealUid;
1161 e->e_from.q_gid = RealGid;
1162 e->e_from.q_flags |= QGOODUID;
1176 sm_syslog(LOG_NOTICE, e->e_id,
1181 (void) REWRITE(pvp, 3, e);
1182 (void) REWRITE(pvp, 1, e);
1183 (void) REWRITE(pvp, 4, e);
1184 macdefine(&e->e_macro, A_PERM, macid("{addr_type}"), NULL);
1187 if (*bp == '@' && !bitnset(M_NOBRACKET, e->e_from.q_mailer->m_flags))
1193 e->e_sender = sm_rpool_strdup_x(e->e_rpool, bp);
1194 macdefine(&e->e_macro, A_PERM, 'f', e->e_sender);
1197 if (e->e_from.q_mailer != NULL &&
1198 bitnset(M_CANONICAL, e->e_from.q_mailer->m_flags))
1203 macdefine(&e->e_macro, A_PERM, macid("{addr_type}"), "e s");
1204 (void) REWRITE(pvp, 3, e);
1205 (void) REWRITE(pvp, 1, e);
1206 (void) REWRITE(pvp, 4, e);
1207 macdefine(&e->e_macro, A_PERM, macid("{addr_type}"), NULL);
1217 e->e_fromdomain = copyplist(lastat, true, e->e_rpool);
1221 printav(sm_debug_file(), e->e_fromdomain);
1276 printenvflags(e) in printenvflags() argument
1277 register ENVELOPE *e; in printenvflags()
1282 sm_dprintf("%lx", e->e_flags);
1285 if (!bitset(ef->ef_bit, e->e_flags))