94 #define STR vstring_str
95 #define LEN VSTRING_LEN
109 static void smtp_chat_append(
SMTPD_STATE *state,
char *direction,
136 smtp_chat_append(state,
"In: ",
STR(state->
buffer));
137 if (last_char !=
'\n')
138 msg_warn(
"%s: request longer than %d: %.30s...",
163 va_start(ap, format);
168 && (*(cp =
STR(state->
buffer)) ==
'4' || *cp ==
'5'))
183 if ((next = strstr(cp,
"\r\n")) != 0) {
192 smtp_chat_append(state,
"Out: ", cp);
223 if (strncmp(
STR(state->
buffer),
"421", 3) == 0
224 || strncmp(
STR(state->
buffer),
"521", 3) == 0)
230 static void print_line(
const char *str,
int len,
int indent,
void *context)
241 const char *myname =
"smtpd_chat_notify";
249 msg_panic(
"%s: no conversation history", myname);
251 msg_info(
"%s: notify postmaster", myname);
260 #define NULL_TRACE_FLAGS 0
261 #define NO_QUEUE_ID ((VSTRING *) 0)
int post_mail_fprintf(VSTREAM *cleanup, const char *format,...)
ARGV * argv_free(ARGV *argvp)
#define SMTPUTF8_FLAG_NONE
void line_wrap(const char *str, int len, int indent, LINE_WRAP_FN output_fn, void *context)
NORETURN msg_panic(const char *fmt,...)
const char * smtpd_expand_lookup(const char *name, int unused_mode, void *context)
const char * mail_addr_mail_daemon(void)
#define vstream_longjmp(stream, val)
#define MAIL_SRC_MASK_NOTIFY
void argv_add(ARGV *argvp,...)
int smtp_get(VSTRING *vp, VSTREAM *stream, ssize_t bound, int flags)
void smtpd_chat_reset(SMTPD_STATE *state)
ARGV * argv_alloc(ssize_t len)
#define vstream_ftime(vp)
void smtpd_chat_notify(SMTPD_STATE *state)
VSTRING * vstring_vsprintf(VSTRING *vp, const char *format, va_list ap)
VSTREAM * post_mail_fopen_nowait(const char *sender, const char *recipient, int source_class, int trace_flags, int utf8_flags, VSTRING *queue_id)
#define vstream_ftimeout(vp)
void msg_warn(const char *fmt,...)
void smtp_fputs(const char *cp, ssize_t todo, VSTREAM *stream)
int post_mail_fclose(VSTREAM *cleanup)
void smtpd_chat_reply(SMTPD_STATE *state, const char *format,...)
void smtpd_chat_query(SMTPD_STATE *state)
int vstream_fflush(VSTREAM *stream)
int post_mail_fputs(VSTREAM *cleanup, const char *str)
char * concatenate(const char *arg0,...)
const char * mail_addr_double_bounce(void)
char * var_smtpd_rej_footer
VSTRING * smtpd_expand_filter
#define SMTP_GET_FLAG_SKIP
char * printable(char *string, int replacement)
#define vstream_ferror(vp)
void argv_terminate(ARGV *argvp)
void msg_info(const char *fmt,...)
#define SMTPD_FLAG_HANGUP