Sendmail 8.13.3 Programmer's Guide

Sample Program
Milter Sample Program
Chapter 5 67
/* log the connection information we stored earlier: */
if (fprintf(priv->mlfi_fp, "Connect from %s (%s)\n\n",
priv->mlfi_helofrom, priv->mlfi_connectfrom) == EOF)
{
(void) mlfi_cleanup(ctx, FALSE);
return SMFIS_TEMPFAIL;
}
/* log the sender */
if (fprintf(priv->mlfi_fp, "FROM %s (%d argument%s)\n",
mailaddr ? mailaddr : "???", argc,
(argc == 1) ? "" : "s") == EOF)
{
(void) mlfi_cleanup(ctx, FALSE);
return SMFIS_TEMPFAIL;
}
/* continue processing */
return SMFIS_CONTINUE;
}
sfsistat
mlfi_envrcpt(ctx, argv)
SMFICTX *ctx;
char **argv;
{
struct mlfiPriv *priv = MLFIPRIV;
char *rcptaddr = smfi_getsymval(ctx, "{rcpt_addr}");
int argc = 0;
/* count the arguments */
while (*argv++ != NULL)
++argc;
/* log this recipient */
if (reject != NULL && rcptaddr != NULL &&
(strcasecmp(rcptaddr, reject) == 0))
{
if (fprintf(priv->mlfi_fp, "RCPT %s -- REJECTED\n",
rcptaddr) == EOF)
{
(void) mlfi_cleanup(ctx, FALSE);
return SMFIS_TEMPFAIL;
}
return SMFIS_REJECT;
}
if (fprintf(priv->mlfi_fp, "RCPT %s (%d argument%s)\n",