Lines Matching refs:mci
1434 logfailover(e, m, mci, rcode, rcpt) in logfailover() argument
1437 MCI *mci;
1453 if (mci != NULL && mci->mci_host != NULL)
1458 "relay=%.100s", mci->mci_host);
1469 if (mci != NULL)
1471 if (mci->mci_state >= 0 && mci->mci_state < SM_ARRAY_SIZE(mcis))
1473 "state=%s, ", mcis[mci->mci_state]);
1476 "state=%d, ", mci->mci_state);
1483 rcode, mci->mci_okrcpts, mci->mci_retryrcpt,
1511 # define logfailover(e, m, mci, rcode, rcpt) ((void) 0) argument
1548 setservermacros(mci, pdotpos) in setservermacros() argument
1549 MCI *mci; in setservermacros()
1557 if (mci->mci_host != NULL)
1559 srvname = mci->mci_host;
1562 else if (mci->mci_mailer != NULL)
1564 srvname = mci->mci_mailer->m_name;
1574 macdefine(&mci->mci_macro, A_TEMP, macid("{server_name}"),
1580 macdefine(&mci->mci_macro, A_TEMP,
1584 else if (mci->mci_mailer != NULL)
1587 macdefine(&mci->mci_macro, A_PERM,
1589 mci->mci_mailer->m_name);
1594 macdefine(&mci->mci_macro, A_PERM,
1684 register MCI *volatile mci; local
2423 mci = NULL;
2464 mci = mci_get(m->m_name, m);
2465 if (mci->mci_host == NULL)
2466 mci->mci_host = m->m_name;
2467 CurHostName = mci->mci_host;
2468 if (mci->mci_state != MCIS_CLOSED)
2472 mci->mci_deliveries++;
2478 mci = mci_new(e->e_rpool);
2480 mci->mci_in = smioin;
2481 mci->mci_out = smioout;
2482 mci->mci_mailer = m;
2483 mci->mci_host = m->m_name;
2486 mci->mci_state = MCIS_OPENING;
2487 mci_cache(mci);
2490 mci->mci_state = MCIS_OPEN;
2621 mci = mci_get(hostbuf, m);
2633 mci, host, hostbuf, ste, Dane,
2634 mci->mci_state, RCPT_MXSECURE(firstto),
2667 , mci->mci_ssl
2668 , mci->mci_tlsi.tlsi_dvc.dane_vrfy_chk
2669 , mci->mci_tlsi.tlsi_dvc.dane_vrfy_res
2675 if (mci->mci_state != MCIS_CLOSED)
2683 dane_old = CHK_DANE(mci->mci_tlsi.tlsi_dvc.dane_vrfy_chk);
2688 vrfy = macget(&mci->mci_macro, macid("{verify}"));
2700 mci, mci->mci_state);
2701 smtpquit(mci->mci_mailer, mci, e);
2705 mci, mci->mci_state);
2710 tlsa_flags = mci->mci_tlsi.tlsi_dvc.dane_vrfy_chk;
2712 &mci->mci_tlsi.tlsi_dvc.dane_vrfy_chk,
2718 host, hostbuf, mci->mci_tlsi.tlsi_dvc.dane_vrfy_chk);
2722 if (mci->mci_state != MCIS_CLOSED)
2729 mci_dump(sm_debug_file(), mci, false);
2731 CurHostName = mci->mci_host;
2734 else if (bitset(MCIF_ESMTP, mci->mci_flags))
2740 mci->mci_deliveries++;
2743 mci->mci_mailer = m;
2745 if (mci->mci_exitstat != EX_OK)
2747 if (mci->mci_exitstat == EX_TEMPFAIL)
2753 mci->mci_exitstat))
2759 if (mci_lock_host(mci) != EX_OK)
2761 mci_setstat(mci, EX_TEMPFAIL, "4.4.5", NULL);
2772 e->e_mci = mci;
2810 i = makeconnection_ds((char *) mux_path, mci);
2835 i = makeconnection(hostbuf, port, mci,
2865 mci->mci_errno = errno;
2866 mci->mci_lastuse = curtime();
2867 mci->mci_deliveries = 0;
2868 mci->mci_exitstat = i;
2869 mci_clr_extensions(mci);
2871 mci->mci_herrno = h_errno;
2880 if (enough > 0 && mci->mci_lastuse >= enough)
2906 mci->mci_state = MCIS_OPENING;
2907 mci_cache(mci);
2928 mci_unlock_host(mci);
2936 if (mci == NULL)
2942 mci->mci_pid = 0;
2948 mci = NULL;
2953 mci = mci_get(m->m_name, m);
2954 if (mci->mci_host == NULL)
2955 mci->mci_host = m->m_name;
2956 CurHostName = mci->mci_host;
2957 if (mci->mci_state != MCIS_CLOSED)
2961 mci->mci_deliveries++;
3478 if (mci == NULL)
3488 mci = mci_new(NULL);
3497 mci = mci_new(e->e_rpool);
3500 mci->mci_mailer = m;
3503 mci->mci_state = MCIS_OPENING;
3504 mci_cache(mci);
3508 mci->mci_state = MCIS_OPEN;
3510 mci->mci_pid = pid;
3512 mci->mci_out = sm_io_open(SmFtStdiofd, SM_TIME_DEFAULT,
3515 if (mci->mci_out == NULL)
3527 mci->mci_in = sm_io_open(SmFtStdiofd, SM_TIME_DEFAULT,
3530 if (mci->mci_in == NULL)
3535 SM_CLOSE_FP(mci->mci_out);
3546 (!clever || mci->mci_state == MCIS_OPENING))
3547 mci->mci_flags |= MCIF_7BIT;
3548 if (clever && mci->mci_state != MCIS_CLOSED)
3560 srvname = setservermacros(mci, &dotpos);
3574 if (DONE_STARTTLS(mci->mci_flags))
3593 e->e_mci = mci;
3595 mci->mci_saslcap = NULL;
3598 # define USEMTASTS (MTASTS && !SM_TLSI_IS(&(mci->mci_tlsi), TLSI_FL_NOSTS) && !iscltflgset(e, D_NOS…
3600 # define CHKMTASTS (USEMTASTS && (ste == NULL || ste->s_tlsa == NULL || SM_TLSI_IS(&(mci->mci_tlsi…
3606 if (!DONE_STARTTLS(mci->mci_flags))
3676 implicittls = bitnset(M_SMTPS_CLIENT, mci->mci_mailer->m_flags);
3682 smtpinit(m, mci, e, ONLY_HELO(mci->mci_flags));
3683 CLR_HELO(mci->mci_flags);
3692 if (!bitset(MCIF_DLVR_BY, mci->mci_flags))
3702 mci->mci_min_by)
3709 mci->mci_min_by);
3720 if (mci->mci_state != MCIS_CLOSED &&
3721 !DONE_STARTTLS(mci->mci_flags))
3730 usetls = bitset(MCIF_TLS, mci->mci_flags) || implicittls;
3755 if ((rcode = starttls(m, mci, e, implicittls
3762 mci->mci_flags |= MCIF_TLSACT;
3767 !SM_TLSI_IS(&(mci->mci_tlsi), TLSI_FL_NODANE))
3782 mci->mci_flags &= ~MCIF_TLS;
3865 if (!bitset(MCIF_TLS, mci->mci_flags) &&
3921 mci->mci_state = MCIS_ERROR;
3922 SM_CLOSE_FP(mci->mci_out);
3923 mci->mci_flags &= ~MCIF_TLSACT;
3924 (void) endmailer(mci, e, pv);
3927 SM_TLSI_IS(&(mci->mci_tlsi),
3929 !SM_TLSI_IS(&(mci->mci_tlsi),
3936 && !SM_TLSI_IS(&(mci->mci_tlsi),
3947 smtpquit(m, mci, e);
3951 mci->mci_errno = 0;
3956 mci_setstat(mci, rcode, enhsc, p);
3966 else if (mci->mci_state == MCIS_CLOSED)
3969 mci->mci_errno = 0;
3971 mci_setstat(mci, rcode, NULL, "421");
3978 if (DONE_STARTTLS(mci->mci_flags) &&
3979 mci->mci_state != MCIS_CLOSED
3985 SET_HELO(mci->mci_flags);
3986 mci_clr_extensions(mci);
3995 mci->mci_host, tlsstate);
3996 mci_dump(NULL, mci, true);
4006 mci->mci_errno = 0;
4008 mci_setstat(mci, rcode, NULL, NULL);
4022 if (!DONE_STARTTLS(mci->mci_flags))
4042 if (mci->mci_state != MCIS_CLOSED &&
4043 mci->mci_saslcap != NULL &&
4044 !DONE_AUTH(mci->mci_flags) && !iscltflgset(e, D_NOAUTH))
4047 if ((ret = smtpauth(m, mci, e)) == EX_OK)
4053 result = sasl_getprop(mci->mci_conn, SASL_SSF,
4064 mci->mci_host,
4084 if (sfdcsasl(&mci->mci_in,
4085 &mci->mci_out,
4086 mci->mci_conn, tmo) == 0)
4088 mci_clr_extensions(mci);
4089 mci->mci_flags |= MCIF_AUTHACT|
4096 mci->mci_flags |= MCIF_AUTHACT;
4104 mci->mci_host);
4105 smtpquit(m, mci, e);
4108 mci->mci_errno = 0;
4110 mci_setstat(mci, rcode, "4.3.0", p);
4127 mci->mci_flags &= ~(MCIF_CVT7TO8|MCIF_CVT8TO7);
4132 mci->mci_flags |= MCIF_CVT8TO7;
4136 !bitset(MCIF_7BIT, mci->mci_flags) &&
4146 mci->mci_flags |= MCIF_CVT7TO8;
4153 mci_dump(sm_debug_file(), mci, false);
4164 if (bitset(MCIF_SIZE, mci->mci_flags) &&
4165 mci->mci_maxsize > 0 &&
4166 e->e_msgsize > mci->mci_maxsize)
4176 mci->mci_maxsize);
4182 mci->mci_maxsize);
4187 if (mci->mci_state != MCIS_OPEN)
4190 rcode = mci->mci_exitstat;
4191 errno = mci->mci_errno;
4192 SM_SET_H_ERRNO(mci->mci_herrno);
4197 (unsigned long) mci, rcode, errno,
4198 mci->mci_state, firstsig);
4204 logfailover(e, m, mci, rcode, NULL);
4219 ok = putfromline(mci, e);
4221 ok = (*e->e_puthdr)(mci, e->e_header, e, M87F_OUTER);
4223 ok = (*e->e_putbody)(mci, e, NULL);
4224 if (ok && bitset(MCIF_INLONGLINE, mci->mci_flags))
4225 ok = putline("", mci);
4233 if (!ok && (sm_io_error(mci->mci_out) && errno == EPIPE))
4237 rcode = endmailer(mci, e, pv);
4259 rcode = smtpmailfrom(m, mci, e);
4260 mci->mci_okrcpts = 0;
4261 mci->mci_retryrcpt = rcode == EX_TEMPFAIL;
4275 mci->mci_retryrcpt = false;
4276 mci->mci_tolist = tobuf;
4279 mci->mci_nextaddr = NULL;
4323 mci->mci_flags
4329 macdefine(&mci->mci_macro, A_PERM, macid("{verify}"), "FAIL");
4343 macdefine(&mci->mci_macro, A_PERM, macid("{verify}"),
4346 (bitset(MCIF_TLS|MCIF_TLSACT, mci->mci_flags) ?
4352 && (!bitset(MCIF_TLS|MCIF_TLSACT, mci->mci_flags)
4355 macdefine(&mci->mci_macro, A_PERM, macid("{verify}"),
4369 mci->mci_host, e->e_id, &addr, NULL);
4374 macdefine(&mci->mci_macro, A_PERM, macid("{verify}"), vrfy);
4389 markfailure(e, to, mci, rc, false);
4395 giveresponse(rc, dsn, m, mci,
4399 mci->mci_retryrcpt = true;
4406 rc = smtprcpt(to, m, mci, e, ctladdr, xstart);
4409 bitset(MCIF_PIPELINED, mci->mci_flags))
4417 if (mci->mci_nextaddr == NULL)
4418 mci->mci_nextaddr = to;
4430 markfailure(e, to, mci, rc, false);
4431 giveresponse(rc, to->q_status, m, mci,
4442 && mci->mci_nextaddr == NULL
4448 if (bitset(MCIF_CACHED, mci->mci_flags))
4449 smtprset(m, mci, e);
4454 rcode = smtpdata(m, mci, e, ctladdr, xstart);
4459 && (mci->mci_retryrcpt || mci->mci_okrcpts > 0)
4462 logfailover(e, m, mci, rcode, to);
4503 rcode = smtpgetstat(m, mci, e);
4515 markfailure(e, to, mci, rcode, true);
4516 giveresponse(rcode, to->q_status, m, mci,
4529 markfailure(e, to, mci, rcode, true);
4560 !bitset(MCIF_DSN, mci->mci_flags))
4568 !bitset(MCIF_DLVR_BY, mci->mci_flags) &&
4607 if (mci != NULL &&
4608 (mci->mci_state == MCIS_MAIL ||
4609 mci->mci_state == MCIS_RCPT ||
4610 mci->mci_state == MCIS_DATA))
4612 mci->mci_state = MCIS_OPEN;
4613 SmtpPhase = mci->mci_phase = "idle";
4615 mci->mci_phase);
4623 (NULL == mci || SM_IS_EMPTY(mci->mci_status))
4626 mci->mci_status,
4627 m, mci, ctladdr, xstart, e, NULL);
4652 mci_store_persistent(mci);
4667 occ_close(e, mci, host, &CurHostAddr);
4672 if (mci != NULL && mci->mci_retryrcpt && nummxhosts > hostnum)
4674 logfailover(e, m, mci, rcode, to);
4680 if (clever && mci != NULL && mci->mci_state != MCIS_CLOSED &&
4681 !bitset(MCIF_CACHED, mci->mci_flags))
4682 smtpquit(m, mci, e);
4800 markfailure(e, q, mci, rcode, ovr) in markfailure() argument
4803 register MCI *mci;
4828 if (mci != NULL && mci->mci_status != NULL)
4830 status = sm_rpool_strdup_x(e->e_rpool, mci->mci_status);
4831 if (mci->mci_rstatus != NULL)
4833 mci->mci_rstatus);
4859 mci != NULL && !bitset(M_LOCALMAILER, mci->mci_flags))
4903 endmailer(mci, e, pv) in endmailer() argument
4904 register MCI *mci; in endmailer()
4914 mci_unlock_host(mci);
4917 SM_CLOSE_FP(mci->mci_out);
4920 if (mci->mci_in != NULL && mci->mci_state != MCIS_ERROR &&
4923 while (sfgets(buf, sizeof(buf), mci->mci_in,
4930 if (bitset(MCIF_AUTHACT, mci->mci_flags))
4932 sasl_dispose(&mci->mci_conn);
4933 mci->mci_flags &= ~MCIF_AUTHACT;
4939 (void) endtlsclt(mci);
4943 SM_CLOSE_FP(mci->mci_in);
4944 mci->mci_state = MCIS_CLOSED;
4949 if (mci->mci_pid == 0)
4953 if (mci->mci_mailer->m_wait > 0)
4956 ev = sm_setevent(mci->mci_mailer->m_wait,
4961 mci->mci_mailer->m_name,
4962 (long) mci->mci_mailer->m_wait);
4968 st = waitfor(mci->mci_pid);
4976 syserr("endmailer %s: wait", mci->mci_mailer->m_name);
4988 mci->mci_mailer->m_name, WTERMSIG(st),
5034 giveresponse(status, dsn, m, mci, ctladdr, xstart, e, to) in giveresponse() argument
5038 register MCI *mci;
5127 if (mci != NULL && mci->mci_host != NULL)
5132 mci->mci_host);
5142 mci->mci_exitstat == EX_TEMPFAIL)
5266 logdelivery(m, mci, dsn, statmsg + off, ctladdr, xstart, e, to, status);
5328 logdelivery(m, mci, dsn, status, ctladdr, xstart, e, to, rcode) in logdelivery() argument
5330 register MCI *mci;
5398 if (mci != NULL && mci->mci_host != NULL)
5403 shortenstring(mci->mci_host, 40));
5656 if (mci != NULL && mci->mci_host != NULL)
5661 mci->mci_host);
5713 putfromline(mci, e) in putfromline() argument
5714 register MCI *mci; in putfromline()
5721 if (bitnset(M_NHDR, mci->mci_mailer->m_flags))
5724 mci->mci_flags |= MCIF_INHEADER;
5726 if (bitnset(M_UGLYUUCP, mci->mci_mailer->m_flags))
5763 return putxline(buf, strlen(buf), mci, PXLF_HEADER);
5788 putbody(mci, e, separator) in putbody() argument
5789 register MCI *mci; in putbody()
5823 if (bitset(MCIF_INHEADER, mci->mci_flags))
5825 if (!putline("", mci))
5827 mci->mci_flags &= ~MCIF_INHEADER;
5829 if (!putline("<<< No Message Collected >>>", mci))
5856 if (bitset(MCIF_CVT8TO7, mci->mci_flags))
5864 !putline("MIME-Version: 1.0", mci))
5872 if (!putline(buf, mci))
5878 mci->mci_flags |= MCIF_INHEADER;
5879 if (mime8to7(mci, e->e_header, e, boundaries, M87F_OUTER, 0) ==
5884 else if (bitset(MCIF_CVT7TO8, mci->mci_flags))
5886 if (!mime7to8(mci, e->e_header, e))
5896 mci->mci_flags |= MCIF_INHEADER;
5909 if (mime8to7(mci, e->e_header, e, boundaries,
5929 if (bitset(MCIF_INHEADER, mci->mci_flags))
5931 if (!putline("", mci))
5933 mci->mci_flags &= ~MCIF_INHEADER;
5938 if (mci->mci_mailer->m_linelimit > 0 &&
5939 mci->mci_mailer->m_linelimit < sizeof(buf) - 1)
5940 buflim = &buf[mci->mci_mailer->m_linelimit - 1];
5946 while (!sm_io_error(mci->mci_out) && !dead)
5953 if (bitset(MCIF_7BIT, mci->mci_flags))
5960 mci->mci_mailer->m_flags))
5973 bitnset(M_ESCFROM, mci->mci_mailer->m_flags)
5989 bitnset(M_XDOT, mci->mci_mailer->m_flags))
6012 mci->mci_mailer->m_eol);
6016 if (sm_io_putc(mci->mci_out,
6027 if (sm_io_putc(mci->mci_out,
6040 if (sm_io_fputs(mci->mci_out,
6042 mci->mci_mailer->m_eol)
6073 if (sm_io_fputs(mci->mci_out,
6075 mci->mci_mailer->m_eol)
6083 mci->mci_mailer->m_eol);
6105 mci->mci_mailer->m_flags))
6108 if (mci->mci_mailer->m_linelimit > 0 &&
6109 pos >= mci->mci_mailer->m_linelimit - 1 &&
6132 if (sm_io_putc(mci->mci_out,
6144 if (sm_io_putc(mci->mci_out,
6147 sm_io_fputs(mci->mci_out,
6149 mci->mci_mailer->m_eol)
6161 mci->mci_mailer->m_eol);
6174 mci->mci_mailer->m_eol);
6175 if (sm_io_fputs(mci->mci_out,
6177 mci->mci_mailer->m_eol)
6189 if (sm_io_putc(mci->mci_out,
6216 if (sm_io_putc(mci->mci_out, SM_TIME_DEFAULT,
6231 mci->mci_mailer->m_eol);
6232 if (sm_io_fputs(mci->mci_out, SM_TIME_DEFAULT,
6233 mci->mci_mailer->m_eol) == SM_IO_EOF)
6264 if (!dead && bitnset(M_BLANKEND, mci->mci_mailer->m_flags) &&
6267 if (!putline("", mci))
6272 (sm_io_flush(mci->mci_out, SM_TIME_DEFAULT) == SM_IO_EOF ||
6273 (sm_io_error(mci->mci_out) && errno != EPIPE)))
7102 register MCI *mci; local
7106 mci = mci_get(hp, m);
7107 mci->mci_errno = save_errno;
7108 mci->mci_herrno = h_errno;
7109 mci->mci_lastuse = now;
7111 mci_setstat(mci, rcode, ESCNULLMXRCPT,
7114 mci_setstat(mci, rcode, "5.1.2",
7117 mci_setstat(mci, rcode, NULL, NULL);
7481 starttls(m, mci, e, implicit in starttls() argument
7487 MCI *mci;
7530 ret = get_tls_se_features(e, clt_ssl, &mci->mci_tlsi, false);
7541 smtpmessage("STARTTLS", m, mci);
7544 smtpresult = reply(m, mci, e, TimeOuts.to_starttls, NULL, NULL,
7591 result = SSL_set_ex_data(clt_ssl, TLSsslidx, &mci->mci_tlsi);
7604 if (SM_TLSI_IS(&(mci->mci_tlsi), TLSI_FL_NODANE))
7662 memcpy(&mci->mci_tlsi.tlsi_dvc, dane_vrfy_ctx, sizeof(*dane_vrfy_ctx));
7683 rfd = sm_io_getinfo(mci->mci_in, SM_IO_WHAT_FD, NULL);
7684 wfd = sm_io_getinfo(mci->mci_out, SM_IO_WHAT_FD, NULL);
7730 mci->mci_ssl = clt_ssl;
7731 result = tls_get_info(mci->mci_ssl, false, mci->mci_host,
7732 &mci->mci_macro, true);
7735 if (sfdctls(&mci->mci_in, &mci->mci_out, mci->mci_ssl) == 0)
7755 endtlsclt(mci) in endtlsclt() argument
7756 MCI *mci; in endtlsclt()
7760 if (!bitset(MCIF_TLSACT, mci->mci_flags))
7762 r = endtls(&mci->mci_ssl, "client");
7763 mci->mci_flags &= ~MCIF_TLSACT;