Postfix3.3.1
データ構造 | マクロ定義 | 関数
milter8.c ファイル
#include <sys_defs.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <limits.h>
#include <msg.h>
#include <mymalloc.h>
#include <split_at.h>
#include <connect.h>
#include <argv.h>
#include <name_mask.h>
#include <name_code.h>
#include <stringops.h>
#include <compat_va_copy.h>
#include <mail_params.h>
#include <mail_proto.h>
#include <rec_type.h>
#include <record.h>
#include <mime_state.h>
#include <is_header.h>
#include <milter.h>

[ソースコード]

データ構造

struct  MILTER8
 
struct  MILTER_MSG_CONTEXT
 

マクロ定義

#define SHUT_RDWR   2
 
#define SMFIC_ABORT   'A' /* Abort */
 
#define SMFIC_BODY   'B' /* Body chunk */
 
#define SMFIC_CONNECT   'C' /* Connection information */
 
#define SMFIC_MACRO   'D' /* Define macro */
 
#define SMFIC_BODYEOB   'E' /* final body chunk (End) */
 
#define SMFIC_HELO   'H' /* HELO/EHLO */
 
#define SMFIC_HEADER   'L' /* Header */
 
#define SMFIC_MAIL   'M' /* MAIL from */
 
#define SMFIC_EOH   'N' /* EOH */
 
#define SMFIC_OPTNEG   'O' /* Option negotiation */
 
#define SMFIC_QUIT   'Q' /* QUIT */
 
#define SMFIC_RCPT   'R' /* RCPT to */
 
#define SMFIC_DATA   'T' /* DATA */
 
#define SMFIC_UNKNOWN   'U' /* Any unknown command */
 
#define SMFIC_QUIT_NC   'K' /* Quit + new connection */
 
#define SMFIR_ADDRCPT   '+' /* add recipient */
 
#define SMFIR_DELRCPT   '-' /* remove recipient */
 
#define SMFIR_ACCEPT   'a' /* accept */
 
#define SMFIR_REPLBODY   'b' /* replace body (chunk) */
 
#define SMFIR_CONTINUE   'c' /* continue */
 
#define SMFIR_DISCARD   'd' /* discard */
 
#define SMFIR_CONN_FAIL   'f' /* cause a connection failure */
 
#define SMFIR_CHGHEADER   'm' /* change header */
 
#define SMFIR_PROGRESS   'p' /* progress */
 
#define SMFIR_REJECT   'r' /* reject */
 
#define SMFIR_TEMPFAIL   't' /* tempfail */
 
#define SMFIR_SHUTDOWN   '4' /* 421: shutdown (internal to MTA) */
 
#define SMFIR_ADDHEADER   'h' /* add header */
 
#define SMFIR_INSHEADER   'i' /* insert header */
 
#define SMFIR_REPLYCODE   'y' /* reply code etc */
 
#define SMFIR_QUARANTINE   'q' /* quarantine */
 
#define SMFIR_SKIP   's' /* skip further events of this type */
 
#define SMFIR_CHGFROM   'e' /* change sender (incl. ESMTP args) */
 
#define SMFIR_ADDRCPT_PAR   '2' /* add recipient (incl. ESMTP args) */
 
#define SMFIR_SETSYMLIST   'l' /* set list of symbols (macros) */
 
#define SMFIP_NOCONNECT   (1L<<0) /* filter does not want connect info */
 
#define SMFIP_NOHELO   (1L<<1) /* filter does not want HELO info */
 
#define SMFIP_NOMAIL   (1L<<2) /* filter does not want MAIL info */
 
#define SMFIP_NORCPT   (1L<<3) /* filter does not want RCPT info */
 
#define SMFIP_NOBODY   (1L<<4) /* filter does not want body */
 
#define SMFIP_NOHDRS   (1L<<5) /* filter does not want headers */
 
#define SMFIP_NOEOH   (1L<<6) /* filter does not want EOH */
 
#define SMFIP_NR_HDR   (1L<<7) /* filter won't reply for header */
 
#define SMFIP_NOHREPL   SMFIP_NR_HDR
 
#define SMFIP_NOUNKNOWN   (1L<<8) /* filter does not want unknown cmd */
 
#define SMFIP_NODATA   (1L<<9) /* filter does not want DATA */
 
#define SMFIP_SKIP   (1L<<10)/* MTA supports SMFIR_SKIP */
 
#define SMFIP_RCPT_REJ   (1L<<11)/* filter wants rejected RCPTs */
 
#define SMFIP_NR_CONN   (1L<<12)/* filter won't reply for connect */
 
#define SMFIP_NR_HELO   (1L<<13)/* filter won't reply for HELO */
 
#define SMFIP_NR_MAIL   (1L<<14)/* filter won't reply for MAIL */
 
#define SMFIP_NR_RCPT   (1L<<15)/* filter won't reply for RCPT */
 
#define SMFIP_NR_DATA   (1L<<16)/* filter won't reply for DATA */
 
#define SMFIP_NR_UNKN   (1L<<17)/* filter won't reply for UNKNOWN */
 
#define SMFIP_NR_EOH   (1L<<18)/* filter won't reply for eoh */
 
#define SMFIP_NR_BODY   (1L<<19)/* filter won't reply for body chunk */
 
#define SMFIP_HDR_LEADSPC   (1L<<20)/* header value has leading space */
 
#define SMFIP_NOSEND_MASK
 
#define SMFIP_NOREPLY_MASK
 
#define SMFIF_ADDHDRS   (1L<<0) /* filter may add headers */
 
#define SMFIF_CHGBODY   (1L<<1) /* filter may replace body */
 
#define SMFIF_ADDRCPT   (1L<<2) /* filter may add recipients */
 
#define SMFIF_DELRCPT   (1L<<3) /* filter may delete recipients */
 
#define SMFIF_CHGHDRS   (1L<<4) /* filter may change/delete headers */
 
#define SMFIF_QUARANTINE   (1L<<5) /* filter may quarantine envelope */
 
#define SMFIF_CHGFROM   (1L<<6) /* filter may replace sender */
 
#define SMFIF_ADDRCPT_PAR   (1L<<7) /* filter may add recipients + args */
 
#define SMFIF_SETSYMLIST   (1L<<8) /* filter may send macro names */
 
#define SMFIA_UNKNOWN   'U' /* unknown */
 
#define SMFIA_UNIX   'L' /* unix/local */
 
#define SMFIA_INET   '4' /* inet */
 
#define SMFIA_INET6   '6' /* inet6 */
 
#define SMFIM_CONNECT   0 /* macros for connect */
 
#define SMFIM_HELO   1 /* macros for HELO */
 
#define SMFIM_ENVFROM   2 /* macros for MAIL */
 
#define SMFIM_ENVRCPT   3 /* macros for RCPT */
 
#define SMFIM_DATA   4 /* macros for DATA */
 
#define SMFIM_EOM   5 /* macros for end-of-message */
 
#define SMFIM_EOH   6 /* macros for end-of-header */
 
#define MILTER8_MACRO_PTR(__macros, __class)   ((char **) (((char *) (__macros)) + milter8_macro_offsets[(__class)]))
 
#define MILTER_CHUNK_SIZE   65535 /* body chunk size */
 
#define LIBMILTER_AUTO_DISCONNECT
 
#define MILTER8_STAT_ERROR   1 /* error, must be non-zero */
 
#define MILTER8_STAT_CLOSED   2 /* no connection */
 
#define MILTER8_STAT_READY   3 /* wait for connect event */
 
#define MILTER8_STAT_ENVELOPE   4 /* in envelope */
 
#define MILTER8_STAT_MESSAGE   5 /* in message */
 
#define MILTER8_STAT_ACCEPT_CON   6 /* accept all commands */
 
#define MILTER8_STAT_ACCEPT_MSG   7 /* accept one message */
 
#define MILTER8_STAT_REJECT_CON   8 /* reject all commands */
 
#define MILTER8_DATA_END   0 /* no more arguments */
 
#define MILTER8_DATA_HLONG   1 /* host long */
 
#define MILTER8_DATA_BUFFER   2 /* network-formatted buffer */
 
#define MILTER8_DATA_STRING   3 /* null-terminated string */
 
#define MILTER8_DATA_NSHORT   4 /* network short */
 
#define MILTER8_DATA_ARGV   5 /* array of null-terminated strings */
 
#define MILTER8_DATA_OCTET   6 /* byte */
 
#define MILTER8_DATA_MORE   7 /* more arguments in next call */
 
#define XXX_MAX_DATA   (INT_MAX / 2)
 
#define XXX_TIMEOUT   10
 
#define MILTER8_V2_PROTO_MASK
 
#define MILTER8_V3_PROTO_MASK   (MILTER8_V2_PROTO_MASK | SMFIP_NOUNKNOWN)
 
#define MILTER8_V4_PROTO_MASK   (MILTER8_V3_PROTO_MASK | SMFIP_NODATA)
 
#define MILTER8_V6_PROTO_MASK
 
#define STR(x)   vstring_str(x)
 
#define LEN(x)   VSTRING_LEN(x)
 
#define DONT_SKIP_REPLY   0
 
#define IN_CONNECT_EVENT(e)   ((e) == SMFIC_CONNECT || (e) == SMFIC_HELO)
 
#define MILTER8_EVENT_BREAK(s)
 
#define MILTER8_HDR_SPACE(m)   (((m)->ev_mask & SMFIP_HDR_LEADSPC) ? "" : " ")
 
#define FREE_TRANSPORT_AND_BAIL_OUT(milter, milter_error)
 
#define XXX_UNKNOWN   "unknown"
 
#define STR_EQ(x, y)   (strcmp((x), (y)) == 0)
 
#define STR_NE(x, y)   (strcmp((x), (y)) != 0)
 
#define MILTER8_MESSAGE_DONE(milter, msg_ctx)   ((milter)->state != MILTER8_STAT_MESSAGE || (msg_ctx)->resp != 0)
 
#define MAIL_ATTR_MILT_NAME   "milter_name"
 
#define MAIL_ATTR_MILT_VERS   "milter_version"
 
#define MAIL_ATTR_MILT_ACTS   "milter_actions"
 
#define MAIL_ATTR_MILT_EVTS   "milter_events"
 
#define MAIL_ATTR_MILT_NPTS   "milter_non_events"
 
#define MAIL_ATTR_MILT_STAT   "milter_state"
 
#define MAIL_ATTR_MILT_CONN   "milter_conn_timeout"
 
#define MAIL_ATTR_MILT_CMD   "milter_cmd_timeout"
 
#define MAIL_ATTR_MILT_MSG   "milter_msg_timeout"
 
#define MAIL_ATTR_MILT_ACT   "milter_action"
 
#define MAIL_ATTR_MILT_MAC   "milter_macro_list"
 
#define FREE_MACROS_AND_RETURN(x)
 
#define NO_PROTOCOL   ((char *) 0)
 

関数

MILTERmilter8_receive (VSTREAM *stream, MILTERS *parent)
 
MILTERmilter8_create (const char *name, int conn_timeout, int cmd_timeout, int msg_timeout, const char *protocol, const char *def_action, MILTERS *parent)
 

マクロ定義詳解

#define DONT_SKIP_REPLY   0
#define FREE_MACROS_AND_RETURN (   x)
値:
do { \
if (macros) \
return (x); \
} while (0)
void milter_macros_free(MILTER_MACROS *)
#define FREE_TRANSPORT_AND_BAIL_OUT (   milter,
  milter_error 
)
値:
do { \
myfree(transport); \
milter_error(milter); \
return; \
} while (0);
void myfree(void *ptr)
Definition: mymalloc.c:207
#define IN_CONNECT_EVENT (   e)    ((e) == SMFIC_CONNECT || (e) == SMFIC_HELO)
#define LEN (   x)    VSTRING_LEN(x)

milter8.c483 行目に定義があります。

#define LIBMILTER_AUTO_DISCONNECT

milter8.c382 行目に定義があります。

#define MAIL_ATTR_MILT_ACT   "milter_action"

milter8.c2635 行目に定義があります。

#define MAIL_ATTR_MILT_ACTS   "milter_actions"

milter8.c2628 行目に定義があります。

#define MAIL_ATTR_MILT_CMD   "milter_cmd_timeout"

milter8.c2633 行目に定義があります。

#define MAIL_ATTR_MILT_CONN   "milter_conn_timeout"

milter8.c2632 行目に定義があります。

#define MAIL_ATTR_MILT_EVTS   "milter_events"

milter8.c2629 行目に定義があります。

#define MAIL_ATTR_MILT_MAC   "milter_macro_list"

milter8.c2636 行目に定義があります。

#define MAIL_ATTR_MILT_MSG   "milter_msg_timeout"

milter8.c2634 行目に定義があります。

#define MAIL_ATTR_MILT_NAME   "milter_name"

milter8.c2626 行目に定義があります。

#define MAIL_ATTR_MILT_NPTS   "milter_non_events"

milter8.c2630 行目に定義があります。

#define MAIL_ATTR_MILT_STAT   "milter_state"

milter8.c2631 行目に定義があります。

#define MAIL_ATTR_MILT_VERS   "milter_version"

milter8.c2627 行目に定義があります。

#define MILTER8_DATA_ARGV   5 /* array of null-terminated strings */

milter8.c408 行目に定義があります。

#define MILTER8_DATA_BUFFER   2 /* network-formatted buffer */

milter8.c405 行目に定義があります。

#define MILTER8_DATA_END   0 /* no more arguments */

milter8.c403 行目に定義があります。

#define MILTER8_DATA_HLONG   1 /* host long */

milter8.c404 行目に定義があります。

#define MILTER8_DATA_MORE   7 /* more arguments in next call */

milter8.c410 行目に定義があります。

#define MILTER8_DATA_NSHORT   4 /* network short */

milter8.c407 行目に定義があります。

#define MILTER8_DATA_OCTET   6 /* byte */

milter8.c409 行目に定義があります。

#define MILTER8_DATA_STRING   3 /* null-terminated string */

milter8.c406 行目に定義があります。

#define MILTER8_EVENT_BREAK (   s)
値:
{ \
retval = (s); \
done = 1; \
continue; \
}
void(* done)(struct XSASL_SERVER_IMPL *)
Definition: xsasl.h:62
#define MILTER8_HDR_SPACE (   m)    (((m)->ev_mask & SMFIP_HDR_LEADSPC) ? "" : " ")
#define MILTER8_MACRO_PTR (   __macros,
  __class 
)    ((char **) (((char *) (__macros)) + milter8_macro_offsets[(__class)]))

milter8.c339 行目に定義があります。

#define MILTER8_MESSAGE_DONE (   milter,
  msg_ctx 
)    ((milter)->state != MILTER8_STAT_MESSAGE || (msg_ctx)->resp != 0)
#define MILTER8_STAT_ACCEPT_CON   6 /* accept all commands */

milter8.c394 行目に定義があります。

#define MILTER8_STAT_ACCEPT_MSG   7 /* accept one message */

milter8.c395 行目に定義があります。

#define MILTER8_STAT_CLOSED   2 /* no connection */

milter8.c390 行目に定義があります。

#define MILTER8_STAT_ENVELOPE   4 /* in envelope */

milter8.c392 行目に定義があります。

#define MILTER8_STAT_ERROR   1 /* error, must be non-zero */

milter8.c389 行目に定義があります。

#define MILTER8_STAT_MESSAGE   5 /* in message */

milter8.c393 行目に定義があります。

#define MILTER8_STAT_READY   3 /* wait for connect event */

milter8.c391 行目に定義があります。

#define MILTER8_STAT_REJECT_CON   8 /* reject all commands */

milter8.c396 行目に定義があります。

#define MILTER8_V2_PROTO_MASK
値:
#define SMFIP_NOMAIL
Definition: milter8.c:207
#define SMFIP_NOHELO
Definition: milter8.c:206
#define SMFIP_NOBODY
Definition: milter8.c:209
#define SMFIP_NOCONNECT
Definition: milter8.c:205
#define SMFIP_NORCPT
Definition: milter8.c:208
#define SMFIP_NOHDRS
Definition: milter8.c:210
#define SMFIP_NOEOH
Definition: milter8.c:211

milter8.c428 行目に定義があります。

#define MILTER8_V3_PROTO_MASK   (MILTER8_V2_PROTO_MASK | SMFIP_NOUNKNOWN)

milter8.c435 行目に定義があります。

#define MILTER8_V4_PROTO_MASK   (MILTER8_V3_PROTO_MASK | SMFIP_NODATA)

milter8.c436 行目に定義があります。

#define MILTER8_V6_PROTO_MASK
値:
#define SMFIP_SKIP
Definition: milter8.c:217
#define SMFIP_NOREPLY_MASK
Definition: milter8.c:234
#define MILTER8_V4_PROTO_MASK
Definition: milter8.c:436
#define SMFIP_RCPT_REJ
Definition: milter8.c:218
#define SMFIP_HDR_LEADSPC
Definition: milter8.c:227

milter8.c437 行目に定義があります。

#define MILTER_CHUNK_SIZE   65535 /* body chunk size */

milter8.c345 行目に定義があります。

#define NO_PROTOCOL   ((char *) 0)
#define SHUT_RDWR   2

milter8.c70 行目に定義があります。

#define SMFIA_INET   '4' /* inet */

milter8.c299 行目に定義があります。

#define SMFIA_INET6   '6' /* inet6 */

milter8.c300 行目に定義があります。

#define SMFIA_UNIX   'L' /* unix/local */

milter8.c298 行目に定義があります。

#define SMFIA_UNKNOWN   'U' /* unknown */

milter8.c297 行目に定義があります。

#define SMFIC_ABORT   'A' /* Abort */

milter8.c114 行目に定義があります。

#define SMFIC_BODY   'B' /* Body chunk */

milter8.c115 行目に定義があります。

#define SMFIC_BODYEOB   'E' /* final body chunk (End) */

milter8.c118 行目に定義があります。

#define SMFIC_CONNECT   'C' /* Connection information */

milter8.c116 行目に定義があります。

#define SMFIC_DATA   'T' /* DATA */

milter8.c126 行目に定義があります。

#define SMFIC_EOH   'N' /* EOH */

milter8.c122 行目に定義があります。

#define SMFIC_HEADER   'L' /* Header */

milter8.c120 行目に定義があります。

#define SMFIC_HELO   'H' /* HELO/EHLO */

milter8.c119 行目に定義があります。

#define SMFIC_MACRO   'D' /* Define macro */

milter8.c117 行目に定義があります。

#define SMFIC_MAIL   'M' /* MAIL from */

milter8.c121 行目に定義があります。

#define SMFIC_OPTNEG   'O' /* Option negotiation */

milter8.c123 行目に定義があります。

#define SMFIC_QUIT   'Q' /* QUIT */

milter8.c124 行目に定義があります。

#define SMFIC_QUIT_NC   'K' /* Quit + new connection */

milter8.c129 行目に定義があります。

#define SMFIC_RCPT   'R' /* RCPT to */

milter8.c125 行目に定義があります。

#define SMFIC_UNKNOWN   'U' /* Any unknown command */

milter8.c127 行目に定義があります。

#define SMFIF_ADDHDRS   (1L<<0) /* filter may add headers */

milter8.c269 行目に定義があります。

#define SMFIF_ADDRCPT   (1L<<2) /* filter may add recipients */

milter8.c271 行目に定義があります。

#define SMFIF_ADDRCPT_PAR   (1L<<7) /* filter may add recipients + args */

milter8.c277 行目に定義があります。

#define SMFIF_CHGBODY   (1L<<1) /* filter may replace body */

milter8.c270 行目に定義があります。

#define SMFIF_CHGFROM   (1L<<6) /* filter may replace sender */

milter8.c276 行目に定義があります。

#define SMFIF_CHGHDRS   (1L<<4) /* filter may change/delete headers */

milter8.c273 行目に定義があります。

#define SMFIF_DELRCPT   (1L<<3) /* filter may delete recipients */

milter8.c272 行目に定義があります。

#define SMFIF_QUARANTINE   (1L<<5) /* filter may quarantine envelope */

milter8.c274 行目に定義があります。

#define SMFIF_SETSYMLIST   (1L<<8) /* filter may send macro names */

milter8.c278 行目に定義があります。

#define SMFIM_CONNECT   0 /* macros for connect */

milter8.c306 行目に定義があります。

#define SMFIM_DATA   4 /* macros for DATA */

milter8.c310 行目に定義があります。

#define SMFIM_ENVFROM   2 /* macros for MAIL */

milter8.c308 行目に定義があります。

#define SMFIM_ENVRCPT   3 /* macros for RCPT */

milter8.c309 行目に定義があります。

#define SMFIM_EOH   6 /* macros for end-of-header */

milter8.c312 行目に定義があります。

#define SMFIM_EOM   5 /* macros for end-of-message */

milter8.c311 行目に定義があります。

#define SMFIM_HELO   1 /* macros for HELO */

milter8.c307 行目に定義があります。

#define SMFIP_HDR_LEADSPC   (1L<<20)/* header value has leading space */

milter8.c227 行目に定義があります。

#define SMFIP_NOBODY   (1L<<4) /* filter does not want body */

milter8.c209 行目に定義があります。

#define SMFIP_NOCONNECT   (1L<<0) /* filter does not want connect info */

milter8.c205 行目に定義があります。

#define SMFIP_NODATA   (1L<<9) /* filter does not want DATA */

milter8.c215 行目に定義があります。

#define SMFIP_NOEOH   (1L<<6) /* filter does not want EOH */

milter8.c211 行目に定義があります。

#define SMFIP_NOHDRS   (1L<<5) /* filter does not want headers */

milter8.c210 行目に定義があります。

#define SMFIP_NOHELO   (1L<<1) /* filter does not want HELO info */

milter8.c206 行目に定義があります。

#define SMFIP_NOHREPL   SMFIP_NR_HDR

milter8.c213 行目に定義があります。

#define SMFIP_NOMAIL   (1L<<2) /* filter does not want MAIL info */

milter8.c207 行目に定義があります。

#define SMFIP_NORCPT   (1L<<3) /* filter does not want RCPT info */

milter8.c208 行目に定義があります。

#define SMFIP_NOREPLY_MASK
値:
#define SMFIP_NR_BODY
Definition: milter8.c:226
#define SMFIP_NR_HELO
Definition: milter8.c:220
#define SMFIP_NR_EOH
Definition: milter8.c:225
#define SMFIP_NR_HDR
Definition: milter8.c:212
#define SMFIP_NR_RCPT
Definition: milter8.c:222
#define SMFIP_NR_CONN
Definition: milter8.c:219
#define SMFIP_NR_UNKN
Definition: milter8.c:224
#define SMFIP_NR_DATA
Definition: milter8.c:223
#define SMFIP_NR_MAIL
Definition: milter8.c:221

milter8.c234 行目に定義があります。

#define SMFIP_NOSEND_MASK
値:
#define SMFIP_NOMAIL
Definition: milter8.c:207
#define SMFIP_NOUNKNOWN
Definition: milter8.c:214
#define SMFIP_NOHELO
Definition: milter8.c:206
#define SMFIP_NOBODY
Definition: milter8.c:209
#define SMFIP_NOCONNECT
Definition: milter8.c:205
#define SMFIP_NORCPT
Definition: milter8.c:208
#define SMFIP_NODATA
Definition: milter8.c:215
#define SMFIP_NOHDRS
Definition: milter8.c:210
#define SMFIP_NOEOH
Definition: milter8.c:211

milter8.c229 行目に定義があります。

#define SMFIP_NOUNKNOWN   (1L<<8) /* filter does not want unknown cmd */

milter8.c214 行目に定義があります。

#define SMFIP_NR_BODY   (1L<<19)/* filter won't reply for body chunk */

milter8.c226 行目に定義があります。

#define SMFIP_NR_CONN   (1L<<12)/* filter won't reply for connect */

milter8.c219 行目に定義があります。

#define SMFIP_NR_DATA   (1L<<16)/* filter won't reply for DATA */

milter8.c223 行目に定義があります。

#define SMFIP_NR_EOH   (1L<<18)/* filter won't reply for eoh */

milter8.c225 行目に定義があります。

#define SMFIP_NR_HDR   (1L<<7) /* filter won't reply for header */

milter8.c212 行目に定義があります。

#define SMFIP_NR_HELO   (1L<<13)/* filter won't reply for HELO */

milter8.c220 行目に定義があります。

#define SMFIP_NR_MAIL   (1L<<14)/* filter won't reply for MAIL */

milter8.c221 行目に定義があります。

#define SMFIP_NR_RCPT   (1L<<15)/* filter won't reply for RCPT */

milter8.c222 行目に定義があります。

#define SMFIP_NR_UNKN   (1L<<17)/* filter won't reply for UNKNOWN */

milter8.c224 行目に定義があります。

#define SMFIP_RCPT_REJ   (1L<<11)/* filter wants rejected RCPTs */

milter8.c218 行目に定義があります。

#define SMFIP_SKIP   (1L<<10)/* MTA supports SMFIR_SKIP */

milter8.c217 行目に定義があります。

#define SMFIR_ACCEPT   'a' /* accept */

milter8.c156 行目に定義があります。

#define SMFIR_ADDHEADER   'h' /* add header */

milter8.c166 行目に定義があります。

#define SMFIR_ADDRCPT   '+' /* add recipient */

milter8.c154 行目に定義があります。

#define SMFIR_ADDRCPT_PAR   '2' /* add recipient (incl. ESMTP args) */

milter8.c173 行目に定義があります。

#define SMFIR_CHGFROM   'e' /* change sender (incl. ESMTP args) */

milter8.c172 行目に定義があります。

#define SMFIR_CHGHEADER   'm' /* change header */

milter8.c161 行目に定義があります。

#define SMFIR_CONN_FAIL   'f' /* cause a connection failure */

milter8.c160 行目に定義があります。

#define SMFIR_CONTINUE   'c' /* continue */

milter8.c158 行目に定義があります。

#define SMFIR_DELRCPT   '-' /* remove recipient */

milter8.c155 行目に定義があります。

#define SMFIR_DISCARD   'd' /* discard */

milter8.c159 行目に定義があります。

#define SMFIR_INSHEADER   'i' /* insert header */

milter8.c167 行目に定義があります。

#define SMFIR_PROGRESS   'p' /* progress */

milter8.c162 行目に定義があります。

#define SMFIR_QUARANTINE   'q' /* quarantine */

milter8.c169 行目に定義があります。

#define SMFIR_REJECT   'r' /* reject */

milter8.c163 行目に定義があります。

#define SMFIR_REPLBODY   'b' /* replace body (chunk) */

milter8.c157 行目に定義があります。

#define SMFIR_REPLYCODE   'y' /* reply code etc */

milter8.c168 行目に定義があります。

#define SMFIR_SETSYMLIST   'l' /* set list of symbols (macros) */

milter8.c174 行目に定義があります。

#define SMFIR_SHUTDOWN   '4' /* 421: shutdown (internal to MTA) */

milter8.c165 行目に定義があります。

#define SMFIR_SKIP   's' /* skip further events of this type */

milter8.c171 行目に定義があります。

#define SMFIR_TEMPFAIL   't' /* tempfail */

milter8.c164 行目に定義があります。

#define STR (   x)    vstring_str(x)

milter8.c482 行目に定義があります。

#define STR_EQ (   x,
 
)    (strcmp((x), (y)) == 0)
#define STR_NE (   x,
 
)    (strcmp((x), (y)) != 0)
#define XXX_MAX_DATA   (INT_MAX / 2)

milter8.c415 行目に定義があります。

#define XXX_TIMEOUT   10

milter8.c416 行目に定義があります。

#define XXX_UNKNOWN   "unknown"

関数詳解

MILTER* milter8_create ( const char *  name,
int  conn_timeout,
int  cmd_timeout,
int  msg_timeout,
const char *  protocol,
const char *  def_action,
MILTERS parent 
)

milter8.c2876 行目に定義があります。

MILTER* milter8_receive ( VSTREAM stream,
MILTERS parent 
)

milter8.c2714 行目に定義があります。