84 #define VERIFY_BASE     31 
  104 #define event_time() verify_time 
  105 static unsigned long verify_time;
 
  109 #define VERIFY_SENDER_ADDR_EPOCH() (event_time() / var_verify_sender_ttl) 
  114 #define STR(x) vstring_str(x) 
  115 #define LEN(x) VSTRING_LEN(x) 
  121     static VSTRING *verify_sender_buf;  
 
  135     msg_fatal(
"parameter %s: value \"%s\" must not start with '@'",
 
  137     if ((my_at_domain = strchr(
var_verify_sender, 
'@')) != 0 && my_at_domain[1] == 0)
 
  138     msg_fatal(
"parameter %s: value \"%s\" must not end with '@'",
 
  144     if (verify_sender_buf == 0) {
 
  162     if (my_at_domain != 0)
 
  171     if (my_at_domain != 0)
 
  181     return (
STR(verify_sender_buf));
 
  188     static VSTRING *time_indep_sender_buf;  
 
  190     unsigned long my_epoch;
 
  191     unsigned long their_epoch;
 
  193     char   *their_at_domain;
 
  200     return (*their_addr ? 0 : 
"");
 
  207     if (time_indep_sender_buf == 0) {
 
  211                   time_indep_sender_buf);
 
  217     if ((my_at_domain = strchr(
STR(time_indep_sender_buf), 
'@')) != 0)
 
  218     base_len = my_at_domain - 
STR(time_indep_sender_buf);
 
  220     base_len = 
LEN(time_indep_sender_buf);
 
  227     if ((their_at_domain = strchr(their_addr, 
'@')) == 0 && my_at_domain != 0)
 
  229     if (their_at_domain != 0
 
  230     && (my_at_domain == 0
 
  239     if ((*cp != 
'@' && *cp != 0)
 
  240         || (their_epoch == ULONG_MAX && errno == ERANGE))
 
  243     if (their_epoch < my_epoch - 1 || their_epoch > my_epoch + 1)
 
  251     if (their_addr[base_len] != 
'@' && their_addr[base_len] != 0)
 
  254     return (
STR(time_indep_sender_buf));
 
  271 int     main(
int argc, 
char **argv)
 
  273     const char *verify_sender;
 
  274     const char *valid_sender;
 
  290     msg_fatal(
"usage: %s address_verify_sender address_verify_sender_ttl",
 
  294     msg_fatal(
"bad time value: %s", argv[2]);
 
  295     verify_time = time((time_t *) 0);
 
  309                valid_sender : 
"nope");
 
  313                valid_sender : 
"nope");
 
  322            valid_sender : 
"nope");
 
  331                valid_sender : 
"nope");
 
  335                valid_sender : 
"nope");
 
int main(int argc, char **argv)
 
VSTRING * rewrite_clnt_internal(const char *ruleset, const char *addr, VSTRING *result)
 
int conv_time(const char *strval, int *timval, int def_unit)
 
VSTRING * vstring_truncate(VSTRING *vp, ssize_t len)
 
#define MAIL_ATTR_RWR_LOCAL
 
#define strcasecmp_utf8(s1, s2)
 
int var_verify_sender_ttl
 
const char * valid_verify_sender_addr(const char *their_addr)
 
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
 
void mail_conf_read(void)
 
VSTRING * vstring_sprintf_append(VSTRING *vp, const char *format,...)
 
#define VERIFY_SENDER_ADDR_EPOCH()
 
VSTREAM * vstream_printf(const char *fmt,...)
 
VSTRING * vstring_alloc(ssize_t len)
 
unsigned long safe_strtoul(const char *start, char **end, int base)
 
NORETURN msg_fatal(const char *fmt,...)
 
int vstream_fflush(VSTREAM *stream)
 
const char * make_verify_sender_addr(void)
 
char * safe_ultostr(VSTRING *buf, unsigned long ulval, int base, int padlen, int padchar)
 
#define strncasecmp_utf8(s1, s2, l)
 
#define VAR_VERIFY_SENDER
 
void msg_vstream_init(const char *name, VSTREAM *vp)