41 char *rcpt_email = NULL;
68 if (rcpt_to == NULL) {
78 bool addrPlusEmail =
FALSE;
81 if ((s = getenv(
"FROMRATEFULL")) != NULL) {
99 char *auth_authen = NULL;
102 if (auth_authen != NULL && strlen(auth_authen) > 0) {
113 if ((rcpt_to != NULL) && (strlen(rcpt_to) > 0)) {
114 if ((priv->
env_to = strdup(rcpt_to)) == NULL) {
133 char *rcpt_mailer = NULL;
137 if ((rcpt_mailer != NULL) &&
STRCASEEQUAL(rcpt_mailer,
"error")) {
148 snprintf(why,
sizeof (why),
"Bad Recipient : sendmail says");
177 if ((rcpt_email = strdup(rcpt_to)) == NULL) {
199 if (rcpt_rec == NULL) {
206 "RCPT LIST : ARG=(%s) TO=(%s) EMAIL=(%s) USER=(%s) HOST=(%s)",
235 ZE_MessageInfo(11,
"%s : RCPT ACCESS : %-16s %02X %-16s %s : %s %2d %s",
240 strlcpy(why,
"",
sizeof (why));
248 snprintf(why,
sizeof (why),
"Recipient Check : %s", rstr);
256 snprintf(why,
sizeof (why),
"Recipient Check : %s", rstr);
264 snprintf(why,
sizeof (why),
"Recipient Check : %s", rstr);
272 snprintf(why,
sizeof (why),
"Recipient Check : %s", rstr);
281 snprintf(why,
sizeof (why),
"Recipient Check : %s", rstr);
290 snprintf(why,
sizeof (why),
"Recipient Check : %s", rstr);
300 if (rcpt_rec != NULL)
301 rcpt_rec->
access = access;
319 bool can_validate =
TRUE;
364 #define REPLY_REGEX "4[0-9][0-9]:4.[0-9].[0-9]:.*" 366 static pthread_mutex_t
mutex = PTHREAD_MUTEX_INITIALIZER;
368 static char *rcode =
"451";
369 static char *xcode =
"4.3.2";
370 static char *
msg =
"Tempfail : Try again later, please";
371 static char rbuf[256];
379 snprintf(rbuf,
sizeof (rbuf),
"%s:%s:%s", rcode, xcode, msg);
380 memset(rbuf, 0,
sizeof (rbuf));
381 rstr = getenv(
"GREY_REPLY");
384 strlcpy(rbuf, rstr + pi,
sizeof (rbuf));
391 strlcpy(rbuf, rstr + pi,
sizeof (rbuf));
440 #if _FFR_PASS_PARTOUT
int smtprate_add_entry(int, char *, char *, int, time_t)
void stats_inc(int, long)
#define CF_CHECK_RCPT_ACCESS
int jsmfi_setreply(SMFICTX *, char *, char *, char *)
#define CONNID_INT(connid)
int remote_grey_check(char *ip, char *from, char *to, char *hostname)
#define MUTEX_UNLOCK(mutex)
#define STAT_RCPT_TEMPFAIL
#define MUTEX_LOCK(mutex)
bool zeStrRegex(char *, char *, long *, long *, bool)
char * extract_email_address(char *, char *, size_t)
int remote_grey_validate(char *ip, char *from, char *to, char *hostname)
int grey_check(char *, char *, char *, char *, bool *, bool)
int zeStr2Tokens(char *, int, char **, char *)
#define INIT_CALLBACK(p, which)
#define DO_QUARANTINE_MESSAGE(priv, why, suffix)
void sm_macro_update(SMFICTX *, sm_mac_T *)
int grey_validate(char *, char *, char *, char *)
int check_rcpt(char *rcpt, char *ip, char *name, int netclass)
#define RCPT_USER_UNKNOWN
#define INIT_CALLBACK_DELAY()
#define RCPT_ACCESS_DENIED
#define IS_UNKNOWN(class)
char * rcpt_code_string(int)
#define ZE_MessageInfo(level,...)
sfsistat check_rcptrate(SMFICTX *)
#define STAT_RCPT_UNKNOWN
#define ZE_MessageWarning(level,...)
#define ZE_LogSysError(...)
char * cf_get_str(int id)
sfsistat validate_connection(SMFICTX *)
#define ZE_LogMsgWarning(level,...)
#define CTX_NETCLASS_LABEL(priv)
bool passport_ok(char *to, char *key)
rcpt_addr_T * rcpt_list_add(rcpt_addr_T **, char *, int)
#define CONNID_STR(connid)
#define CHECK_CALLBACK_DELAY()
#define STAT_RCPT_BAD_NETWORK
#define STRCASEEQUAL(a, b)
char * sm_macro_get_str(sm_mac_T *, char *)
void log_msg_context(SMFICTX *ctx, char *why)
sfsistat mlfi_envto(SMFICTX *ctx, char **envto)
bool check_policy_tuple(char *prefix, char *ip, char *name, char *netclass, char *from, char *to, bool result)
#define STAT_RCPT_SPAMTRAP
sfsistat check_rcptcount(SMFICTX *)