Postfix3.3.1
マクロ定義 | 関数 | 変数
smtp_proto.c ファイル
#include <sys_defs.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdarg.h>
#include <time.h>
#include <msg.h>
#include <vstring.h>
#include <vstream.h>
#include <vstring_vstream.h>
#include <stringops.h>
#include <mymalloc.h>
#include <iostuff.h>
#include <split_at.h>
#include <name_code.h>
#include <name_mask.h>
#include <mail_params.h>
#include <smtp_stream.h>
#include <mail_queue.h>
#include <recipient_list.h>
#include <deliver_request.h>
#include <defer.h>
#include <bounce.h>
#include <record.h>
#include <rec_type.h>
#include <off_cvt.h>
#include <mark_corrupt.h>
#include <quote_821_local.h>
#include <quote_822_local.h>
#include <mail_proto.h>
#include <mime_state.h>
#include <ehlo_mask.h>
#include <maps.h>
#include <tok822.h>
#include <mail_addr_map.h>
#include <ext_prop.h>
#include <namadr_list.h>
#include <match_parent_style.h>
#include <lex_822.h>
#include <dsn_mask.h>
#include <xtext.h>
#include <uxtext.h>
#include <smtputf8.h>
#include "smtp.h"
#include "smtp_sasl.h"

[ソースコード]

マクロ定義

#define SMTP_STATE_XFORWARD_NAME_ADDR   0
 
#define SMTP_STATE_XFORWARD_PROTO_HELO   1
 
#define SMTP_STATE_MAIL   2
 
#define SMTP_STATE_RCPT   3
 
#define SMTP_STATE_DATA   4
 
#define SMTP_STATE_DOT   5
 
#define SMTP_STATE_ABORT   6
 
#define SMTP_STATE_RSET   7
 
#define SMTP_STATE_QUIT   8
 
#define SMTP_STATE_LAST   9
 
#define SMTP_MIME_DOWNGRADE(session, request)
 
#define DELIVERY_REQUIRES_SMTPUTF8
 
#define PIPELINING_BUFSIZE   VSTREAM_BUFSIZE
 
#define REWRITE_ADDRESS(dst, src)
 
#define QUOTE_ADDRESS(dst, src)
 
#define RETURN(x)
 
#define SENDER_IS_AHEAD   (recv_state < send_state || recv_rcpt != send_rcpt)
 
#define SENDER_IN_WAIT_STATE   (send_state == SMTP_STATE_DOT || send_state == SMTP_STATE_LAST)
 
#define SENDING_MAIL   (recv_state <= SMTP_STATE_DOT)
 
#define CANT_RSET_THIS_SESSION   (session->features |= SMTP_FEATURE_RSET_REJECTED)
 
#define _ATTR_AVAIL_AND_KNOWN_(val)   (DEL_REQ_ATTR_AVAIL(val) && strcasecmp((val), "unknown"))
 
#define CAN_FORWARD_CLIENT_NAME   _ATTR_AVAIL_AND_KNOWN_
 
#define CAN_FORWARD_CLIENT_ADDR   _ATTR_AVAIL_AND_KNOWN_
 
#define CAN_FORWARD_CLIENT_PORT   _ATTR_AVAIL_AND_KNOWN_
 
#define CAN_FORWARD_PROTO_NAME   _ATTR_AVAIL_AND_KNOWN_
 
#define CAN_FORWARD_HELO_NAME   DEL_REQ_ATTR_AVAIL
 
#define CAN_FORWARD_IDENT_NAME   DEL_REQ_ATTR_AVAIL
 
#define CAN_FORWARD_RWR_CONTEXT   DEL_REQ_ATTR_AVAIL
 
#define CHECK_PIPELINING_BUFSIZE   (recv_state != SMTP_STATE_DOT || send_state != SMTP_STATE_QUIT)
 
#define LOST_CONNECTION_INSIDE_DATA   (except == SMTP_ERR_EOF)
 
#define SMTP_ANY_CHECKS   (smtp_header_checks || smtp_body_checks)
 

関数

void smtp_vrfy_init (void)
 
int smtp_helo (SMTP_STATE *state)
 
int smtp_xfer (SMTP_STATE *state)
 
int smtp_rset (SMTP_STATE *state)
 
int smtp_quit (SMTP_STATE *state)
 

変数

intxfer_timeouts [SMTP_STATE_LAST]
 
char * xfer_states [SMTP_STATE_LAST]
 
char * xfer_request [SMTP_STATE_LAST]
 
HBC_CALL_BACKS smtp_hbc_callbacks [1]
 

マクロ定義詳解

#define _ATTR_AVAIL_AND_KNOWN_ (   val)    (DEL_REQ_ATTR_AVAIL(val) && strcasecmp((val), "unknown"))
#define CAN_FORWARD_CLIENT_ADDR   _ATTR_AVAIL_AND_KNOWN_
#define CAN_FORWARD_CLIENT_NAME   _ATTR_AVAIL_AND_KNOWN_
#define CAN_FORWARD_CLIENT_PORT   _ATTR_AVAIL_AND_KNOWN_
#define CAN_FORWARD_HELO_NAME   DEL_REQ_ATTR_AVAIL
#define CAN_FORWARD_IDENT_NAME   DEL_REQ_ATTR_AVAIL
#define CAN_FORWARD_PROTO_NAME   _ATTR_AVAIL_AND_KNOWN_
#define CAN_FORWARD_RWR_CONTEXT   DEL_REQ_ATTR_AVAIL
#define CANT_RSET_THIS_SESSION   (session->features |= SMTP_FEATURE_RSET_REJECTED)
#define CHECK_PIPELINING_BUFSIZE   (recv_state != SMTP_STATE_DOT || send_state != SMTP_STATE_QUIT)
#define DELIVERY_REQUIRES_SMTPUTF8
値:
((request->smtputf8 & SMTPUTF8_FLAG_REQUESTED) \
&& (request->smtputf8 & ~SMTPUTF8_FLAG_REQUESTED))
#define SMTPUTF8_FLAG_REQUESTED
Definition: smtputf8.h:97
#define LOST_CONNECTION_INSIDE_DATA   (except == SMTP_ERR_EOF)
#define PIPELINING_BUFSIZE   VSTREAM_BUFSIZE
#define QUOTE_ADDRESS (   dst,
  src 
)
値:
do { \
if (*(src) && var_smtp_quote_821_env) { \
quote_821_local(dst, src); \
} else { \
vstring_strcpy(dst, src); \
} \
} while (0)
int var_smtp_quote_821_env
Definition: smtp.c:877
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
Definition: vstring.c:431
#define quote_821_local(dst, src)
#define RETURN (   x)
値:
do { \
if (recv_state != SMTP_STATE_LAST) \
vstring_free(next_command); \
if (survivors) \
myfree((void *) survivors); \
if (session->mime_state) \
session->mime_state = mime_state_free(session->mime_state); \
return (x); \
} while (0)
void myfree(void *ptr)
Definition: mymalloc.c:207
#define DONT_CACHE_THIS_SESSION
Definition: smtp.h:437
MIME_STATE * mime_state_free(MIME_STATE *state)
Definition: mime_state.c:530
VSTRING * vstring_free(VSTRING *vp)
Definition: vstring.c:380
#define SMTP_STATE_LAST
Definition: smtp_proto.c:205
#define REWRITE_ADDRESS (   dst,
  src 
)
値:
do { \
vstring_strcpy(dst, src); \
if (*(src) && smtp_generic_maps) \
} while (0)
int smtp_ext_prop_mask
Definition: smtp.c:970
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
Definition: vstring.c:431
int smtp_map11_internal(VSTRING *, MAPS *, int)
Definition: smtp_map11.c:83
MAPS * smtp_generic_maps
Definition: smtp.c:969
#define EXT_PROP_GENERIC
Definition: ext_prop.h:22
#define SENDER_IN_WAIT_STATE   (send_state == SMTP_STATE_DOT || send_state == SMTP_STATE_LAST)
#define SENDER_IS_AHEAD   (recv_state < send_state || recv_rcpt != send_rcpt)
#define SENDING_MAIL   (recv_state <= SMTP_STATE_DOT)
#define SMTP_ANY_CHECKS   (smtp_header_checks || smtp_body_checks)
#define SMTP_MIME_DOWNGRADE (   session,
  request 
)
値:
&& (session->features & SMTP_FEATURE_8BITMIME) == 0 \
&& strcmp(request->encoding, MAIL_ATTR_ENC_7BIT) != 0)
#define SMTP_FEATURE_8BITMIME
Definition: smtp.h:205
int var_disable_mime_oconv
Definition: mail_params.c:323
#define MAIL_ATTR_ENC_7BIT
Definition: mail_proto.h:204

smtp_proto.c248 行目に定義があります。

#define SMTP_STATE_ABORT   6

smtp_proto.c202 行目に定義があります。

#define SMTP_STATE_DATA   4

smtp_proto.c200 行目に定義があります。

#define SMTP_STATE_DOT   5

smtp_proto.c201 行目に定義があります。

#define SMTP_STATE_LAST   9

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

#define SMTP_STATE_MAIL   2

smtp_proto.c198 行目に定義があります。

#define SMTP_STATE_QUIT   8

smtp_proto.c204 行目に定義があります。

#define SMTP_STATE_RCPT   3

smtp_proto.c199 行目に定義があります。

#define SMTP_STATE_RSET   7

smtp_proto.c203 行目に定義があります。

#define SMTP_STATE_XFORWARD_NAME_ADDR   0

smtp_proto.c196 行目に定義があります。

#define SMTP_STATE_XFORWARD_PROTO_HELO   1

smtp_proto.c197 行目に定義があります。

関数詳解

int smtp_helo ( SMTP_STATE state)

smtp_proto.c291 行目に定義があります。

int smtp_quit ( SMTP_STATE state)

smtp_proto.c2316 行目に定義があります。

int smtp_rset ( SMTP_STATE state)

smtp_proto.c2304 行目に定義があります。

void smtp_vrfy_init ( void  )

smtp_proto.c275 行目に定義があります。

int smtp_xfer ( SMTP_STATE state)

smtp_proto.c2218 行目に定義があります。

変数詳解

HBC_CALL_BACKS smtp_hbc_callbacks[1]
初期値:
= {
smtp_hbc_logger,
smtp_text_out,
}

smtp_proto.c266 行目に定義があります。

char* xfer_request[SMTP_STATE_LAST]
初期値:
= {
"XFORWARD name/address command",
"XFORWARD helo/protocol command",
"MAIL FROM command",
"RCPT TO command",
"DATA command",
"end of DATA command",
"final RSET command",
"RSET probe",
"QUIT command",
}

smtp_proto.c231 行目に定義があります。

char* xfer_states[SMTP_STATE_LAST]
初期値:
= {
"sending XFORWARD name/address",
"sending XFORWARD protocol/helo_name",
"sending MAIL FROM",
"sending RCPT TO",
"sending DATA command",
"sending end of data -- message may be sent more than once",
"sending final RSET",
"sending RSET probe",
"sending QUIT",
}

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

int* xfer_timeouts[SMTP_STATE_LAST]
初期値:
= {
}
int var_smtp_xfwd_tmout
Definition: smtp.c:842
int var_smtp_quit_tmout
Definition: smtp.c:849
int var_smtp_data0_tmout
Definition: smtp.c:845
int var_smtp_rset_tmout
Definition: smtp.c:848
int var_smtp_mail_tmout
Definition: smtp.c:843
int var_smtp_data2_tmout
Definition: smtp.c:847
int var_smtp_rcpt_tmout
Definition: smtp.c:844

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