33 #define RATE_LOG_LEVEL   12    39 #define GET_RESOLVE_COEF(resolve, coef)   \    53       case RESOLVE_FORGED:      \    56       case RESOLVE_TEMPFAIL:      \    86     static pthread_mutex_t 
mutex = PTHREAD_MUTEX_INITIALIZER;
    89     char               *reply = NULL, *why = NULL;
   134     reply = 
STRNULL(reply, 
"DNS address resolution error");
   135     why = 
STRNULL(why, 
"DNS IP address resolution error");
   137     snprintf(s, 
sizeof (s), 
"%s : %d", why, nb);
   181                    "%-12s ConnRate         : %-20s %4d ip_class=[%02X - %s]",
   196       if (vmax > 0 && n > vmax)
   203       snprintf(s, 
sizeof (s), 
"%s : %d [%02X - %s]",
   242                    "%-12s MsgsRate         : %-20s %4d ip_class=[%02X - %s]",
   257       if (vmax > 0 && n > vmax)
   263         snprintf(s, 
sizeof (s), 
"%s : %d [%02X - %s]",
   276       bool                addrPlusEmail = 
FALSE;
   279       if ((sEnv = getenv(
"FROMRATEFULL")) != NULL) {
   281           addrPlusEmail = 
TRUE;
   296                      "%-12s MsgsRateFrom     : %-20s %4d %s ip_class=[%02X - %s]",
   305         memset(fBuf, 0, 
sizeof (fBuf));
   307         if (strlen(fBuf) == 0)
   308           strlcpy(fBuf, 
"nullsender", 
sizeof (fBuf));
   314         if (vmax > 0 && fromRate > vmax)
   320           snprintf(s, 
sizeof (s), 
"%s : %d [%02X - %s]",
   337                      "%-12s MsgsRateAuth     : %-20s %4d %s ip_class=[%02X - %s]",
   346         memset(fBuf, 0, 
sizeof (fBuf));
   348         if (strlen(fBuf) == 0)
   349           strlcpy(fBuf, 
"nullsender", 
sizeof (fBuf));
   355         if (vmax > 0 && authRate > vmax)
   361           snprintf(s, 
sizeof (s), 
"%s : %d [%02X - %s]",
   396                    "%-12s MsgCount         : %-20s %4d ip_class=[%02X - %s]",
   411       if (vmax > 0 && nb_from > vmax)
   418       snprintf(s, 
sizeof (s), 
"%s : %s : %d [%02X - %s]",
   465                    "%-12s RcptRate         : %-20s %4d ip_class=[%02X - %s]",
   480       if (vmax > 0 && rate > vmax)
   487       snprintf(s, 
sizeof (s), 
"%s : %s : %d [%02X - %s]",
   504     bool                addrPlusEmail = 
FALSE;
   507     if ((sEnv = getenv(
"FROMRATEFULL")) != NULL) {
   509         addrPlusEmail = 
TRUE;
   525                    "%-12s RcptRateFrom     : %-20s %4d %s ip_class=[%02X - %s]",
   534       memset(fBuf, 0, 
sizeof (fBuf));
   536       if (strlen(fBuf) == 0)
   537         strlcpy(fBuf, 
"nullsender", 
sizeof (fBuf));
   543       if (vmax > 0 && rate > vmax)
   550       snprintf(s, 
sizeof (s), 
"%s : %s : %d [%02X - %s]",
   573                    "%-12s RcptRateAuth     : %-20s %4d %s ip_class=[%02X - %s]",
   582       memset(fBuf, 0, 
sizeof (fBuf));
   584       if (strlen(fBuf) == 0)
   585         strlcpy(fBuf, 
"nullsender", 
sizeof (fBuf));
   591       if (vmax > 0 && rate > vmax)
   598       snprintf(s, 
sizeof (s), 
"%s : %s : %d [%02X - %s]",
   638                    "%-12s RcptCount        : %-20s %4d ip_class=[%02X - %s]",
   653       if (vmax > 0 && (nb_rcpt * COEF) > vmax)
   659         snprintf(s, 
sizeof (s), 
"%s : %s : %d [%02X - %s]",
   677       memset(fBuf, 0, 
sizeof (fBuf));
   679       if (strlen(fBuf) == 0)
   680         strlcpy(fBuf, 
"nullsender", 
sizeof (fBuf));
   686       if (vmax > 0 && nb_rcpt > vmax)
   692         snprintf(s, 
sizeof (s), 
"%s : %s : %d [%02X - %s]",
   736                      "%-12s Open Connections : %-20s %4d ip_class=[%02X - %s]",
   741                      "%-12s Open Connections : %-20s %4d ip_class=[%02X - %s]",
   760       if (vmax > 0 && nb > vmax)
   770       snprintf(s, 
sizeof (s), 
"%s : %s : %d [%02X - %s]",
   811                      "%-12s Empty Connections : %-20s %4d ip_class=[%02X - %s]",
   816                      "%-12s Empty Connections : %-20s %4d ip_class=[%02X - %s]",
   869                      "%-12s Bad Recipients   : %-20s %4d ip_class=[%02X - %s]",
   874                      "%-12s Bad Recipients   : %-20s %4d ip_class=[%02X - %s]",
   934                      "%-12s Bad Recipients   : %-20s %4d ip_class=[%02X - %s]",
   939                      "%-12s Bad Recipients   : %-20s %4d ip_class=[%02X - %s]",
   952       snprintf(s, 
sizeof (s), 
"%s : %s : %d [%02X - %s]",
   977   char               *why = 
"bad behaviour in previous MAIL command";
  1023                  "%-12s Bad Recipients   : %-20s %4d ip_class=[%02X - %s]",
  1035     snprintf(s, 
sizeof (s), 
"%s : %s [%s]",
  1056   if (ctx == NULL || priv == NULL)
 
#define MSG_SHORT_SINGLE_MESSAGE
#define MSG_TOO_MUCH_OPEN
#define CF_CHECK_RESOLVE_FAIL
#define GET_RESOLVE_COEF(resolve, coef)
#define CF_CHECK_EMPTY_CONNECTIONS
sfsistat check_nb_badrcpts(SMFICTX *ctx)
#define CF_CHECK_SPAMTRAP_HISTORY
void stats_inc(int, long)
#define MSG_TOO_MUCH_EMPTY
bool PolicyLookupEmailAddr(char *prefix, char *key, char *buf, size_t size)
#define STAT_SINGLE_MESSAGE
int jsmfi_setreply(SMFICTX *, char *, char *, char *)
bool check_host_policy(char *prefix, char *addr, char *name, char *class, char *buf, size_t size, bool cdef)
#define CF_MAX_EMPTY_CONN
#define MUTEX_UNLOCK(mutex)
#define CF_CHECK_RCPT_RATE
#define MSG_SINGLE_MESSAGE
#define MUTEX_LOCK(mutex)
#define CF_CHECK_CONN_RATE
#define MSG_SHORT_TOO_MUCH_BADRCPT
bool zeStrRegex(char *, char *, long *, long *, bool)
char * extract_email_address(char *, char *, size_t)
#define MSG_TOO_MUCH_RCPT
sfsistat check_empty_connections(SMFICTX *ctx)
sfsistat check_spamtrap(SMFICTX *ctx)
#define CF_MAX_BAD_RESOLVE
#define CF_MAX_FROM_RCPT_RATE
sfsistat check_connrate(SMFICTX *ctx)
#define MSG_SHORT_RESOLVE_FORGED
#define MSG_SHORT_MSG_RATE
#define MSG_TOO_MUCH_MSGS
sfsistat check_msgrate(SMFICTX *ctx)
long zeStr2long(char *s, int *error, long dval)
#define MSG_TOO_MUCH_BADRCPT
#define CF_MAX_FROM_MSG_RATE
#define MSG_SHORT_RESOLVE_FAIL
#define IS_UNKNOWN(class)
#define MSG_SHORT_RCPT_RATE
#define ZE_MessageInfo(level,...)
sfsistat check_rcptrate(SMFICTX *ctx)
#define STAT_RESOLVE_FAIL
sfsistat check_msgcount(SMFICTX *ctx)
#define MSG_SHORT_TOO_MUCH_EMPTY
sfsistat validate_connection(SMFICTX *ctx)
#define MSG_SHORT_CONN_RATE
#define CF_CHECK_OPEN_CONNECTIONS
#define CTX_NETCLASS_LABEL(priv)
int smtprate_check(int, char *, time_t)
int connopen_check_host(char *, char *, int)
#define CF_CHECK_BADRCPTS
#define CONNID_STR(connid)
sfsistat check_dns_resolve(SMFICTX *ctx)
#define MSG_RESOLVE_FORGED
sfsistat check_single_message(SMFICTX *ctx)
int update_nb_badrcpts(SMFICTX *)
int livehistory_check_host(char *, time_t, int)
int livehistory_add_entry(char *, time_t, int, int)
#define MSG_SHORT_TOO_MUCH_OPEN
void log_msg_context(SMFICTX *ctx, char *why)
#define CF_CHECK_MSG_RATE
sfsistat check_open_connections(SMFICTX *ctx)
#define CF_CHECK_RESOLVE_FORGED
#define STAT_RESOLVE_FORGED
sfsistat check_rcptcount(SMFICTX *ctx)