Postfix3.3.1
データ構造 | マクロ定義 | 型定義 | 関数 | 変数
smtp.h ファイル
#include <string.h>
#include <vstream.h>
#include <vstring.h>
#include <argv.h>
#include <htable.h>
#include <dict.h>
#include <deliver_request.h>
#include <scache.h>
#include <string_list.h>
#include <maps.h>
#include <tok822.h>
#include <dsn_buf.h>
#include <header_body_checks.h>
#include <tls.h>

[ソースコード]

データ構造

struct  SMTP_ITERATOR
 
struct  SMTP_STATE
 
struct  SMTP_SESSION
 
struct  SMTP_RESP
 

マクロ定義

#define SMTP_ITER_INIT(iter, _dest, _host, _addr, _port, state)
 
#define SMTP_ITER_CLOBBER(iter, _dest, _host, _addr)
 
#define SMTP_ITER_SAVE_DEST(iter)
 
#define SMTP_ITER_RESTORE_DEST(iter)
 
#define SET_NEXTHOP_STATE(state, nexthop)
 
#define FREE_NEXTHOP_STATE(state)
 
#define HAVE_NEXTHOP_STATE(state)   (STR((state)->iterator->request_nexthop)[0] != 0)
 
#define SMTP_FEATURE_ESMTP   (1<<0)
 
#define SMTP_FEATURE_8BITMIME   (1<<1)
 
#define SMTP_FEATURE_PIPELINING   (1<<2)
 
#define SMTP_FEATURE_SIZE   (1<<3)
 
#define SMTP_FEATURE_STARTTLS   (1<<4)
 
#define SMTP_FEATURE_AUTH   (1<<5)
 
#define SMTP_FEATURE_XFORWARD_NAME   (1<<7)
 
#define SMTP_FEATURE_XFORWARD_ADDR   (1<<8)
 
#define SMTP_FEATURE_XFORWARD_PROTO   (1<<9)
 
#define SMTP_FEATURE_XFORWARD_HELO   (1<<10)
 
#define SMTP_FEATURE_XFORWARD_DOMAIN   (1<<11)
 
#define SMTP_FEATURE_BEST_MX   (1<<12) /* for next-hop or fall-back */
 
#define SMTP_FEATURE_RSET_REJECTED   (1<<13) /* RSET probe rejected */
 
#define SMTP_FEATURE_FROM_CACHE   (1<<14) /* cached connection */
 
#define SMTP_FEATURE_DSN   (1<<15) /* DSN supported */
 
#define SMTP_FEATURE_PIX_NO_ESMTP   (1<<16) /* PIX smtp fixup mode */
 
#define SMTP_FEATURE_PIX_DELAY_DOTCRLF   (1<<17) /* PIX smtp fixup mode */
 
#define SMTP_FEATURE_XFORWARD_PORT   (1<<18)
 
#define SMTP_FEATURE_EARLY_TLS_MAIL_REPLY   (1<<19) /* CVE-2009-3555 */
 
#define SMTP_FEATURE_XFORWARD_IDENT   (1<<20)
 
#define SMTP_FEATURE_SMTPUTF8   (1<<21) /* RFC 6531 */
 
#define SMTP_FEATURE_ENDPOINT_MASK
 
#define SMTP_FEATURE_DESTINATION_MASK   (SMTP_FEATURE_BEST_MX)
 
#define SMTP_MISC_FLAG_LOOP_DETECT   (1<<0)
 
#define SMTP_MISC_FLAG_IN_STARTTLS   (1<<1)
 
#define SMTP_MISC_FLAG_FIRST_NEXTHOP   (1<<2)
 
#define SMTP_MISC_FLAG_FINAL_NEXTHOP   (1<<3)
 
#define SMTP_MISC_FLAG_FINAL_SERVER   (1<<4)
 
#define SMTP_MISC_FLAG_CONN_LOAD   (1<<5)
 
#define SMTP_MISC_FLAG_CONN_STORE   (1<<6)
 
#define SMTP_MISC_FLAG_COMPLETE_SESSION   (1<<7)
 
#define SMTP_MISC_FLAG_PREF_IPV6   (1<<8)
 
#define SMTP_MISC_FLAG_PREF_IPV4   (1<<9)
 
#define SMTP_MISC_FLAG_CONN_CACHE_MASK   (SMTP_MISC_FLAG_CONN_LOAD | SMTP_MISC_FLAG_CONN_STORE)
 
#define SMTP_HAS_DSN(why)   (STR((why)->status)[0] != 0)
 
#define SMTP_HAS_SOFT_DSN(why)   (STR((why)->status)[0] == '4')
 
#define SMTP_HAS_HARD_DSN(why)   (STR((why)->status)[0] == '5')
 
#define SMTP_HAS_LOOP_DSN(why)   (SMTP_HAS_DSN(why) && strcmp(STR((why)->status) + 1, ".4.6") == 0)
 
#define SMTP_SET_SOFT_DSN(why)   (STR((why)->status)[0] = '4')
 
#define SMTP_SET_HARD_DSN(why)   (STR((why)->status)[0] = '5')
 
#define SMTP_HOST_FLAG_DNS   (1<<0)
 
#define SMTP_HOST_FLAG_NATIVE   (1<<1)
 
#define SMTP_DNS_INVALID   (-1) /* smtp_dns_support_level = <bogus> */
 
#define SMTP_DNS_DISABLED   0 /* smtp_dns_support_level = disabled */
 
#define SMTP_DNS_ENABLED   1 /* smtp_dns_support_level = enabled */
 
#define SMTP_DNS_DNSSEC   2 /* smtp_dns_support_level = dnssec */
 
#define SMTP_HNAME(rr)   (var_smtp_cname_overr ? (rr)->rname : (rr)->qname)
 
#define THIS_SESSION_IS_CACHED   (!THIS_SESSION_IS_FORBIDDEN && session->expire_time > 0)
 
#define THIS_SESSION_IS_EXPIRED
 
#define THIS_SESSION_IS_THROTTLED   (!THIS_SESSION_IS_FORBIDDEN && session->expire_time < 0)
 
#define THIS_SESSION_IS_FORBIDDEN   (session->forbidden != 0)
 
#define DONT_CACHE_THIS_SESSION   (session->expire_time = 0)
 
#define DONT_CACHE_THROTTLED_SESSION   (session->expire_time = -1)
 
#define DONT_USE_FORBIDDEN_SESSION   (session->forbidden = 1)
 
#define USE_NEWBORN_SESSION   (session->forbidden = 0)
 
#define CACHE_THIS_SESSION_UNTIL(when)   (session->expire_time = (when))
 
#define HAVE_SASL_CREDENTIALS   (0)
 
#define PREACTIVE_DELAY
 
#define PLAINTEXT_FALLBACK_OK_AFTER_STARTTLS_FAILURE
 
#define PLAINTEXT_FALLBACK_OK_AFTER_TLS_SESSION_FAILURE
 
#define RETRY_AS_PLAINTEXT
 
#define SMTP_RESP_FAKE(resp, _dsn)
 
#define DSN_BY_LOCAL_MTA   ((char *) 0) /* DSN issued by local MTA */
 
#define SMTP_RESP_SET_DSN(resp, _dsn)
 
#define SMTP_RCPT_STATE_KEEP   1 /* send to backup host */
 
#define SMTP_RCPT_STATE_DROP   2 /* remove from request */
 
#define SMTP_RCPT_INIT(state)
 
#define SMTP_RCPT_DROP(state, rcpt)
 
#define SMTP_RCPT_KEEP(state, rcpt)
 
#define SMTP_RCPT_ISMARKED(rcpt)   ((rcpt)->u.status != 0)
 
#define SMTP_RCPT_LEFT(state)   (state)->rcpt_left
 
#define SMTP_RCPT_MARK_COUNT(state)   ((state)->rcpt_drop + (state)->rcpt_keep)
 
#define SMTP_THROTTLE   1
 
#define SMTP_NOTHROTTLE   0
 
#define smtp_site_fail(state, mta, resp, ...)   smtp_misc_fail((state), SMTP_THROTTLE, (mta), (resp), __VA_ARGS__)
 
#define smtp_mesg_fail(state, mta, resp, ...)   smtp_misc_fail((state), SMTP_NOTHROTTLE, (mta), (resp), __VA_ARGS__)
 
#define SMTP_KEY_FLAG_SERVICE   (1<<0) /* service name */
 
#define SMTP_KEY_FLAG_SENDER   (1<<1) /* sender address */
 
#define SMTP_KEY_FLAG_REQ_NEXTHOP   (1<<2) /* request nexthop */
 
#define SMTP_KEY_FLAG_NEXTHOP   (1<<3) /* current nexthop */
 
#define SMTP_KEY_FLAG_HOSTNAME   (1<<4) /* remote host name */
 
#define SMTP_KEY_FLAG_ADDR   (1<<5) /* remote address */
 
#define SMTP_KEY_FLAG_PORT   (1<<6) /* remote port */
 
#define SMTP_KEY_MASK_ALL
 
#define COND_SASL_SMTP_KEY_FLAG_SENDER
 
#define COND_SASL_SMTP_KEY_FLAG_NEXTHOP   (*var_smtp_sasl_passwd ? SMTP_KEY_FLAG_NEXTHOP : 0)
 
#define COND_SASL_SMTP_KEY_FLAG_HOSTNAME   (*var_smtp_sasl_passwd ? SMTP_KEY_FLAG_HOSTNAME : 0)
 
#define SMTP_KEY_MASK_SCACHE_DEST_LABEL
 
#define SMTP_KEY_MASK_SCACHE_ENDP_LABEL
 
#define STR(s)   vstring_str(s)
 
#define LEN(s)   VSTRING_LEN(s)
 
#define VAR_LMTP_SMTP(x)   (smtp_mode ? VAR_SMTP_##x : VAR_LMTP_##x)
 
#define LMTP_SMTP_SUFFIX(x)   (smtp_mode ? x##_SMTP : x##_LMTP)
 

型定義

typedef struct SMTP_ITERATOR SMTP_ITERATOR
 
typedef struct SMTP_STATE SMTP_STATE
 
typedef struct SMTP_SESSION SMTP_SESSION
 
typedef struct SMTP_RESP SMTP_RESP
 

関数

SMTP_SESSIONsmtp_session_alloc (VSTREAM *, SMTP_ITERATOR *, time_t, int)
 
void smtp_session_new_stream (SMTP_SESSION *, VSTREAM *, time_t, int)
 
int smtp_sess_plaintext_ok (SMTP_ITERATOR *, int)
 
void smtp_session_free (SMTP_SESSION *)
 
int smtp_session_passivate (SMTP_SESSION *, VSTRING *, VSTRING *)
 
SMTP_SESSIONsmtp_session_activate (int, SMTP_ITERATOR *, VSTRING *, VSTRING *)
 
int smtp_connect (SMTP_STATE *)
 
void smtp_vrfy_init (void)
 
int smtp_helo (SMTP_STATE *)
 
int smtp_xfer (SMTP_STATE *)
 
int smtp_rset (SMTP_STATE *)
 
int smtp_quit (SMTP_STATE *)
 
void PRINTFLIKE (2, 3) smtp_chat_cmd(SMTP_SESSION *
 
SMTP_RESPsmtp_chat_resp (SMTP_SESSION *)
 
void smtp_chat_init (SMTP_SESSION *)
 
void smtp_chat_reset (SMTP_SESSION *)
 
void smtp_chat_notify (SMTP_SESSION *)
 
void smtp_rcpt_cleanup (SMTP_STATE *)
 
void smtp_rcpt_done (SMTP_STATE *, SMTP_RESP *, RECIPIENT *)
 
int smtp_sess_fail (SMTP_STATE *)
 
int PRINTFLIKE (5, 6) smtp_misc_fail(SMTP_STATE *
 
int const char SMTP_RESP const char void RECIPIENT const char SMTP_RESP const char int smtp_stream_except (SMTP_STATE *, int, const char *)
 
const char * smtp_unalias_name (const char *)
 
VSTRINGsmtp_unalias_addr (VSTRING *, const char *)
 
SMTP_STATEsmtp_state_alloc (void)
 
void smtp_state_free (SMTP_STATE *)
 
int smtp_map11_external (VSTRING *, MAPS *, int)
 
int smtp_map11_tree (TOK822 *, MAPS *, int)
 
int smtp_map11_internal (VSTRING *, MAPS *, int)
 
char * smtp_key_prefix (VSTRING *, const char *, SMTP_ITERATOR *, int)
 

変数

int smtp_host_lookup_mask
 
int smtp_dns_support
 
SCACHEsmtp_scache
 
STRING_LISTsmtp_cache_dest
 
MAPSsmtp_ehlo_dis_maps
 
MAPSsmtp_pix_bug_maps
 
MAPSsmtp_generic_maps
 
int smtp_ext_prop_mask
 
unsigned smtp_dns_res_opt
 
HBC_CHECKSsmtp_header_checks
 
HBC_CHECKSsmtp_body_checks
 
HBC_CALL_BACKS smtp_hbc_callbacks []
 
void const char DICTsmtp_chat_resp_filter
 
int int
 
int smtp_mode
 

マクロ定義詳解

#define CACHE_THIS_SESSION_UNTIL (   when)    (session->expire_time = (when))

smtp.h451 行目に定義があります。

#define COND_SASL_SMTP_KEY_FLAG_HOSTNAME   (*var_smtp_sasl_passwd ? SMTP_KEY_FLAG_HOSTNAME : 0)

smtp.h638 行目に定義があります。

#define COND_SASL_SMTP_KEY_FLAG_NEXTHOP   (*var_smtp_sasl_passwd ? SMTP_KEY_FLAG_NEXTHOP : 0)

smtp.h635 行目に定義があります。

#define COND_SASL_SMTP_KEY_FLAG_SENDER
値:
char * var_smtp_sasl_passwd
Definition: smtp.c:862
bool var_smtp_sender_auth
Definition: smtp.c:934
#define SMTP_KEY_FLAG_SENDER
Definition: smtp.h:611

smtp.h631 行目に定義があります。

#define DONT_CACHE_THIS_SESSION   (session->expire_time = 0)

smtp.h437 行目に定義があります。

#define DONT_CACHE_THROTTLED_SESSION   (session->expire_time = -1)

smtp.h440 行目に定義があります。

#define DONT_USE_FORBIDDEN_SESSION   (session->forbidden = 1)

smtp.h443 行目に定義があります。

#define DSN_BY_LOCAL_MTA   ((char *) 0) /* DSN issued by local MTA */

smtp.h518 行目に定義があります。

#define FREE_NEXTHOP_STATE (   state)
値:
{ \
STR((state)->iterator->request_nexthop)[0] = 0; \
}
#define STR(s)
Definition: smtp.h:666

smtp.h194 行目に定義があります。

#define HAVE_NEXTHOP_STATE (   state)    (STR((state)->iterator->request_nexthop)[0] != 0)

smtp.h198 行目に定義があります。

#define HAVE_SASL_CREDENTIALS   (0)

smtp.h464 行目に定義があります。

#define LEN (   s)    VSTRING_LEN(s)

smtp.h667 行目に定義があります。

#define LMTP_SMTP_SUFFIX (   x)    (smtp_mode ? x##_SMTP : x##_LMTP)

smtp.h672 行目に定義があります。

#define PLAINTEXT_FALLBACK_OK_AFTER_STARTTLS_FAILURE
値:
(session->tls_context == 0 \
&& state->tls->level == TLS_LEV_MAY \
#define HAVE_SASL_CREDENTIALS
Definition: smtp.h:464
int var_min_backoff_time
Definition: qmgr.c:411
#define TLS_LEV_MAY
Definition: tls.h:44
#define PREACTIVE_DELAY
Definition: smtp.h:467

smtp.h471 行目に定義があります。

#define PLAINTEXT_FALLBACK_OK_AFTER_TLS_SESSION_FAILURE
値:
(session->tls_context != 0 \
&& SMTP_RCPT_LEFT(state) > SMTP_RCPT_MARK_COUNT(state) \
&& state->tls->level == TLS_LEV_MAY \
#define SMTP_RCPT_MARK_COUNT(state)
Definition: smtp.h:563
#define HAVE_SASL_CREDENTIALS
Definition: smtp.h:464
int var_min_backoff_time
Definition: qmgr.c:411
#define SMTP_RCPT_LEFT(state)
Definition: smtp.h:561
#define TLS_LEV_MAY
Definition: tls.h:44
#define PREACTIVE_DELAY
Definition: smtp.h:467

smtp.h477 行目に定義があります。

#define PREACTIVE_DELAY
値:
(session->state->request->msg_stats.active_arrival.tv_sec - \
session->state->request->msg_stats.incoming_arrival.tv_sec)

smtp.h467 行目に定義があります。

#define RETRY_AS_PLAINTEXT
値:
do { \
session->tls_retry_plain = 1; \
state->misc_flags &= ~SMTP_MISC_FLAG_FINAL_SERVER; \
} while (0)
#define SMTP_MISC_FLAG_FINAL_SERVER
Definition: smtp.h:245

smtp.h489 行目に定義があります。

#define SET_NEXTHOP_STATE (   state,
  nexthop 
)
値:
{ \
vstring_strcpy((state)->iterator->request_nexthop, nexthop); \
}
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
Definition: vstring.c:431

smtp.h190 行目に定義があります。

#define SMTP_DNS_DISABLED   0 /* smtp_dns_support_level = disabled */

smtp.h275 行目に定義があります。

#define SMTP_DNS_DNSSEC   2 /* smtp_dns_support_level = dnssec */

smtp.h277 行目に定義があります。

#define SMTP_DNS_ENABLED   1 /* smtp_dns_support_level = enabled */

smtp.h276 行目に定義があります。

#define SMTP_DNS_INVALID   (-1) /* smtp_dns_support_level = <bogus> */

smtp.h274 行目に定義があります。

#define SMTP_FEATURE_8BITMIME   (1<<1)

smtp.h205 行目に定義があります。

#define SMTP_FEATURE_AUTH   (1<<5)

smtp.h209 行目に定義があります。

#define SMTP_FEATURE_BEST_MX   (1<<12) /* for next-hop or fall-back */

smtp.h215 行目に定義があります。

#define SMTP_FEATURE_DESTINATION_MASK   (SMTP_FEATURE_BEST_MX)

smtp.h236 行目に定義があります。

#define SMTP_FEATURE_DSN   (1<<15) /* DSN supported */

smtp.h218 行目に定義があります。

#define SMTP_FEATURE_EARLY_TLS_MAIL_REPLY   (1<<19) /* CVE-2009-3555 */

smtp.h222 行目に定義があります。

#define SMTP_FEATURE_ENDPOINT_MASK
値:
#define SMTP_FEATURE_FROM_CACHE
Definition: smtp.h:217
#define SMTP_FEATURE_BEST_MX
Definition: smtp.h:215
#define SMTP_FEATURE_RSET_REJECTED
Definition: smtp.h:216

smtp.h229 行目に定義があります。

#define SMTP_FEATURE_ESMTP   (1<<0)

smtp.h204 行目に定義があります。

#define SMTP_FEATURE_FROM_CACHE   (1<<14) /* cached connection */

smtp.h217 行目に定義があります。

#define SMTP_FEATURE_PIPELINING   (1<<2)

smtp.h206 行目に定義があります。

#define SMTP_FEATURE_PIX_DELAY_DOTCRLF   (1<<17) /* PIX smtp fixup mode */

smtp.h220 行目に定義があります。

#define SMTP_FEATURE_PIX_NO_ESMTP   (1<<16) /* PIX smtp fixup mode */

smtp.h219 行目に定義があります。

#define SMTP_FEATURE_RSET_REJECTED   (1<<13) /* RSET probe rejected */

smtp.h216 行目に定義があります。

#define SMTP_FEATURE_SIZE   (1<<3)

smtp.h207 行目に定義があります。

#define SMTP_FEATURE_SMTPUTF8   (1<<21) /* RFC 6531 */

smtp.h224 行目に定義があります。

#define SMTP_FEATURE_STARTTLS   (1<<4)

smtp.h208 行目に定義があります。

#define SMTP_FEATURE_XFORWARD_ADDR   (1<<8)

smtp.h211 行目に定義があります。

#define SMTP_FEATURE_XFORWARD_DOMAIN   (1<<11)

smtp.h214 行目に定義があります。

#define SMTP_FEATURE_XFORWARD_HELO   (1<<10)

smtp.h213 行目に定義があります。

#define SMTP_FEATURE_XFORWARD_IDENT   (1<<20)

smtp.h223 行目に定義があります。

#define SMTP_FEATURE_XFORWARD_NAME   (1<<7)

smtp.h210 行目に定義があります。

#define SMTP_FEATURE_XFORWARD_PORT   (1<<18)

smtp.h221 行目に定義があります。

#define SMTP_FEATURE_XFORWARD_PROTO   (1<<9)

smtp.h212 行目に定義があります。

#define SMTP_HAS_DSN (   why)    (STR((why)->status)[0] != 0)

smtp.h258 行目に定義があります。

#define SMTP_HAS_HARD_DSN (   why)    (STR((why)->status)[0] == '5')

smtp.h260 行目に定義があります。

#define SMTP_HAS_LOOP_DSN (   why)    (SMTP_HAS_DSN(why) && strcmp(STR((why)->status) + 1, ".4.6") == 0)

smtp.h261 行目に定義があります。

#define SMTP_HAS_SOFT_DSN (   why)    (STR((why)->status)[0] == '4')

smtp.h259 行目に定義があります。

#define SMTP_HNAME (   rr)    (var_smtp_cname_overr ? (rr)->rname : (rr)->qname)

smtp.h359 行目に定義があります。

#define SMTP_HOST_FLAG_DNS   (1<<0)

smtp.h269 行目に定義があります。

#define SMTP_HOST_FLAG_NATIVE   (1<<1)

smtp.h270 行目に定義があります。

#define SMTP_ITER_CLOBBER (   iter,
  _dest,
  _host,
  _addr 
)
値:
do { \
vstring_strcpy((iter)->dest, (_dest)); \
vstring_strcpy((iter)->host, (_host)); \
vstring_strcpy((iter)->addr, (_addr)); \
} while (0)
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
Definition: vstring.c:431

smtp.h74 行目に定義があります。

#define SMTP_ITER_INIT (   iter,
  _dest,
  _host,
  _addr,
  _port,
  state 
)
値:
do { \
vstring_strcpy((iter)->dest, (_dest)); \
vstring_strcpy((iter)->host, (_host)); \
vstring_strcpy((iter)->addr, (_addr)); \
(iter)->port = (_port); \
(iter)->mx = (iter)->rr = 0; \
vstring_strcpy((iter)->saved_dest, ""); \
(iter)->parent = (state); \
} while (0)
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
Definition: vstring.c:431

smtp.h64 行目に定義があります。

#define SMTP_ITER_RESTORE_DEST (   iter)
値:
do { \
vstring_strcpy((iter)->dest, STR((iter)->saved_dest)); \
} while (0)
#define STR(s)
Definition: smtp.h:666
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
Definition: vstring.c:431

smtp.h84 行目に定義があります。

#define SMTP_ITER_SAVE_DEST (   iter)
値:
do { \
vstring_strcpy((iter)->saved_dest, STR((iter)->dest)); \
} while (0)
#define STR(s)
Definition: smtp.h:666
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
Definition: vstring.c:431

smtp.h80 行目に定義があります。

#define SMTP_KEY_FLAG_ADDR   (1<<5) /* remote address */

smtp.h615 行目に定義があります。

#define SMTP_KEY_FLAG_HOSTNAME   (1<<4) /* remote host name */

smtp.h614 行目に定義があります。

#define SMTP_KEY_FLAG_NEXTHOP   (1<<3) /* current nexthop */

smtp.h613 行目に定義があります。

#define SMTP_KEY_FLAG_PORT   (1<<6) /* remote port */

smtp.h616 行目に定義があります。

#define SMTP_KEY_FLAG_REQ_NEXTHOP   (1<<2) /* request nexthop */

smtp.h612 行目に定義があります。

#define SMTP_KEY_FLAG_SENDER   (1<<1) /* sender address */

smtp.h611 行目に定義があります。

#define SMTP_KEY_FLAG_SERVICE   (1<<0) /* service name */

smtp.h610 行目に定義があります。

#define SMTP_KEY_MASK_ALL
値:
#define SMTP_KEY_FLAG_HOSTNAME
Definition: smtp.h:614
#define SMTP_KEY_FLAG_SERVICE
Definition: smtp.h:610
#define SMTP_KEY_FLAG_PORT
Definition: smtp.h:616
#define SMTP_KEY_FLAG_REQ_NEXTHOP
Definition: smtp.h:612
#define SMTP_KEY_FLAG_NEXTHOP
Definition: smtp.h:613
#define SMTP_KEY_FLAG_ADDR
Definition: smtp.h:615
#define SMTP_KEY_FLAG_SENDER
Definition: smtp.h:611

smtp.h618 行目に定義があります。

#define SMTP_KEY_MASK_SCACHE_DEST_LABEL
値:
#define SMTP_KEY_FLAG_SERVICE
Definition: smtp.h:610
#define SMTP_KEY_FLAG_REQ_NEXTHOP
Definition: smtp.h:612
#define COND_SASL_SMTP_KEY_FLAG_SENDER
Definition: smtp.h:631

smtp.h648 行目に定義があります。

#define SMTP_KEY_MASK_SCACHE_ENDP_LABEL
値:
#define COND_SASL_SMTP_KEY_FLAG_HOSTNAME
Definition: smtp.h:638
#define SMTP_KEY_FLAG_SERVICE
Definition: smtp.h:610
#define SMTP_KEY_FLAG_PORT
Definition: smtp.h:616
#define COND_SASL_SMTP_KEY_FLAG_NEXTHOP
Definition: smtp.h:635
#define SMTP_KEY_FLAG_ADDR
Definition: smtp.h:615
#define COND_SASL_SMTP_KEY_FLAG_SENDER
Definition: smtp.h:631

smtp.h658 行目に定義があります。

#define smtp_mesg_fail (   state,
  mta,
  resp,
  ... 
)    smtp_misc_fail((state), SMTP_NOTHROTTLE, (mta), (resp), __VA_ARGS__)

smtp.h583 行目に定義があります。

#define SMTP_MISC_FLAG_COMPLETE_SESSION   (1<<7)

smtp.h248 行目に定義があります。

#define SMTP_MISC_FLAG_CONN_CACHE_MASK   (SMTP_MISC_FLAG_CONN_LOAD | SMTP_MISC_FLAG_CONN_STORE)

smtp.h252 行目に定義があります。

#define SMTP_MISC_FLAG_CONN_LOAD   (1<<5)

smtp.h246 行目に定義があります。

#define SMTP_MISC_FLAG_CONN_STORE   (1<<6)

smtp.h247 行目に定義があります。

#define SMTP_MISC_FLAG_FINAL_NEXTHOP   (1<<3)

smtp.h244 行目に定義があります。

#define SMTP_MISC_FLAG_FINAL_SERVER   (1<<4)

smtp.h245 行目に定義があります。

#define SMTP_MISC_FLAG_FIRST_NEXTHOP   (1<<2)

smtp.h243 行目に定義があります。

#define SMTP_MISC_FLAG_IN_STARTTLS   (1<<1)

smtp.h242 行目に定義があります。

#define SMTP_MISC_FLAG_LOOP_DETECT   (1<<0)

smtp.h241 行目に定義があります。

#define SMTP_MISC_FLAG_PREF_IPV4   (1<<9)

smtp.h250 行目に定義があります。

#define SMTP_MISC_FLAG_PREF_IPV6   (1<<8)

smtp.h249 行目に定義があります。

#define SMTP_NOTHROTTLE   0

smtp.h572 行目に定義があります。

#define SMTP_RCPT_DROP (   state,
  rcpt 
)
値:
do { \
(rcpt)->u.status = SMTP_RCPT_STATE_DROP; (state)->rcpt_drop++; \
} while (0)
#define SMTP_RCPT_STATE_DROP
Definition: smtp.h:545

smtp.h551 行目に定義があります。

#define SMTP_RCPT_INIT (   state)
値:
do { \
(state)->rcpt_drop = (state)->rcpt_keep = 0; \
(state)->rcpt_left = state->request->rcpt_list.len; \
} while (0)

smtp.h546 行目に定義があります。

#define SMTP_RCPT_ISMARKED (   rcpt)    ((rcpt)->u.status != 0)

smtp.h559 行目に定義があります。

#define SMTP_RCPT_KEEP (   state,
  rcpt 
)
値:
do { \
(rcpt)->u.status = SMTP_RCPT_STATE_KEEP; (state)->rcpt_keep++; \
} while (0)
#define SMTP_RCPT_STATE_KEEP
Definition: smtp.h:544

smtp.h555 行目に定義があります。

#define SMTP_RCPT_LEFT (   state)    (state)->rcpt_left

smtp.h561 行目に定義があります。

#define SMTP_RCPT_MARK_COUNT (   state)    ((state)->rcpt_drop + (state)->rcpt_keep)

smtp.h563 行目に定義があります。

#define SMTP_RCPT_STATE_DROP   2 /* remove from request */

smtp.h545 行目に定義があります。

#define SMTP_RCPT_STATE_KEEP   1 /* send to backup host */

smtp.h544 行目に定義があります。

#define SMTP_RESP_FAKE (   resp,
  _dsn 
)
値:
((resp)->code = 0, \
(resp)->dsn = (_dsn), \
(resp)->str = DSN_BY_LOCAL_MTA, \
(resp))
#define DSN_BY_LOCAL_MTA
Definition: smtp.h:518

smtp.h512 行目に定義があります。

#define SMTP_RESP_SET_DSN (   resp,
  _dsn 
)
値:
do { \
vstring_strcpy((resp)->dsn_buf, (_dsn)); \
(resp)->dsn = STR((resp)->dsn_buf); \
} while (0)
#define STR(s)
Definition: smtp.h:666
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
Definition: vstring.c:431

smtp.h520 行目に定義があります。

#define SMTP_SET_HARD_DSN (   why)    (STR((why)->status)[0] = '5')

smtp.h265 行目に定義があります。

#define SMTP_SET_SOFT_DSN (   why)    (STR((why)->status)[0] = '4')

smtp.h264 行目に定義があります。

#define smtp_site_fail (   state,
  mta,
  resp,
  ... 
)    smtp_misc_fail((state), SMTP_THROTTLE, (mta), (resp), __VA_ARGS__)

smtp.h581 行目に定義があります。

#define SMTP_THROTTLE   1

smtp.h571 行目に定義があります。

#define STR (   s)    vstring_str(s)

smtp.h666 行目に定義があります。

#define THIS_SESSION_IS_CACHED   (!THIS_SESSION_IS_FORBIDDEN && session->expire_time > 0)

smtp.h420 行目に定義があります。

#define THIS_SESSION_IS_EXPIRED
値:
&& (session->expire_time < vstream_ftime(session->stream) \
&& session->reuse_count >= var_smtp_reuse_count)))
#define THIS_SESSION_IS_CACHED
Definition: smtp.h:420
#define vstream_ftime(vp)
Definition: vstream.h:127
int var_smtp_reuse_count
Definition: smtp.c:884

smtp.h423 行目に定義があります。

#define THIS_SESSION_IS_FORBIDDEN   (session->forbidden != 0)

smtp.h432 行目に定義があります。

#define THIS_SESSION_IS_THROTTLED   (!THIS_SESSION_IS_FORBIDDEN && session->expire_time < 0)

smtp.h429 行目に定義があります。

#define USE_NEWBORN_SESSION   (session->forbidden = 0)

smtp.h448 行目に定義があります。

#define VAR_LMTP_SMTP (   x)    (smtp_mode ? VAR_SMTP_##x : VAR_LMTP_##x)

smtp.h671 行目に定義があります。

型定義詳解

typedef struct SMTP_ITERATOR SMTP_ITERATOR
typedef struct SMTP_RESP SMTP_RESP
typedef struct SMTP_SESSION SMTP_SESSION
typedef struct SMTP_STATE SMTP_STATE

関数詳解

void PRINTFLIKE ( ,
 
)
int PRINTFLIKE ( ,
 
)
void smtp_chat_init ( SMTP_SESSION )

smtp_chat.c150 行目に定義があります。

void smtp_chat_notify ( SMTP_SESSION )

smtp_chat.c433 行目に定義があります。

void smtp_chat_reset ( SMTP_SESSION )

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

SMTP_RESP* smtp_chat_resp ( SMTP_SESSION )

smtp_chat.c235 行目に定義があります。

int smtp_connect ( SMTP_STATE )

smtp_connect.c1133 行目に定義があります。

int smtp_helo ( SMTP_STATE )

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

char* smtp_key_prefix ( VSTRING ,
const char *  ,
SMTP_ITERATOR ,
int   
)

smtp_key.c146 行目に定義があります。

int smtp_map11_external ( VSTRING ,
MAPS ,
int   
)

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

int smtp_map11_internal ( VSTRING ,
MAPS ,
int   
)

smtp_map11.c83 行目に定義があります。

int smtp_map11_tree ( TOK822 ,
MAPS ,
int   
)

smtp_map11.c109 行目に定義があります。

int smtp_quit ( SMTP_STATE )

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

void smtp_rcpt_cleanup ( SMTP_STATE )

smtp_rcpt.c194 行目に定義があります。

void smtp_rcpt_done ( SMTP_STATE ,
SMTP_RESP ,
RECIPIENT  
)

smtp_rcpt.c137 行目に定義があります。

int smtp_rset ( SMTP_STATE )

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

int smtp_sess_fail ( SMTP_STATE )

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

int smtp_sess_plaintext_ok ( SMTP_ITERATOR ,
int   
)
SMTP_SESSION* smtp_session_activate ( int  ,
SMTP_ITERATOR ,
VSTRING ,
VSTRING  
)

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

SMTP_SESSION* smtp_session_alloc ( VSTREAM ,
SMTP_ITERATOR ,
time_t  ,
int   
)

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

void smtp_session_free ( SMTP_SESSION )

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

void smtp_session_new_stream ( SMTP_SESSION ,
VSTREAM ,
time_t  ,
int   
)
int smtp_session_passivate ( SMTP_SESSION ,
VSTRING ,
VSTRING  
)

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

SMTP_STATE* smtp_state_alloc ( void  )

smtp_state.c54 行目に定義があります。

void smtp_state_free ( SMTP_STATE )

smtp_state.c89 行目に定義があります。

int const char SMTP_RESP const char void RECIPIENT const char SMTP_RESP const char int smtp_stream_except ( SMTP_STATE ,
int  ,
const char *   
)

smtp_trouble.c417 行目に定義があります。

VSTRING* smtp_unalias_addr ( VSTRING ,
const char *   
)

smtp_unalias.c102 行目に定義があります。

const char* smtp_unalias_name ( const char *  )

smtp_unalias.c65 行目に定義があります。

void smtp_vrfy_init ( void  )

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

int smtp_xfer ( SMTP_STATE )

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

変数詳解

smtp.h574 行目に定義があります。

HBC_CHECKS* smtp_body_checks

smtp.c974 行目に定義があります。

STRING_LIST* smtp_cache_dest

smtp.c966 行目に定義があります。

void const char DICT* smtp_chat_resp_filter

smtp_chat.c146 行目に定義があります。

unsigned smtp_dns_res_opt

smtp.c971 行目に定義があります。

int smtp_dns_support

smtp.c965 行目に定義があります。

MAPS* smtp_ehlo_dis_maps

smtp.c968 行目に定義があります。

int smtp_ext_prop_mask

smtp.c970 行目に定義があります。

MAPS* smtp_generic_maps

smtp.c969 行目に定義があります。

HBC_CALL_BACKS smtp_hbc_callbacks[]

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

HBC_CHECKS* smtp_header_checks

smtp.c973 行目に定義があります。

int smtp_host_lookup_mask

smtp.c964 行目に定義があります。

int smtp_mode

smtp.c963 行目に定義があります。

MAPS* smtp_pix_bug_maps

smtp.c972 行目に定義があります。

SCACHE* smtp_scache

smtp.c967 行目に定義があります。