Postfix3.3.1
|
#include <sys_defs.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <ctype.h>
#include <stdarg.h>
#include <netdb.h>
#include <setjmp.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <msg.h>
#include <vstring.h>
#include <split_at.h>
#include <fsspace.h>
#include <stringops.h>
#include <valid_hostname.h>
#include <argv.h>
#include <mymalloc.h>
#include <dict.h>
#include <htable.h>
#include <ctable.h>
#include <mac_expand.h>
#include <attr_clnt.h>
#include <myaddrinfo.h>
#include <inet_proto.h>
#include <ip_match.h>
#include <valid_utf8_hostname.h>
#include <midna_domain.h>
#include <mynetworks.h>
#include <dns.h>
#include <string_list.h>
#include <namadr_list.h>
#include <domain_list.h>
#include <mail_params.h>
#include <resolve_clnt.h>
#include <mail_error.h>
#include <resolve_local.h>
#include <own_inet_addr.h>
#include <mail_conf.h>
#include <maps.h>
#include <mail_addr_find.h>
#include <match_parent_style.h>
#include <strip_addr.h>
#include <cleanup_user.h>
#include <record.h>
#include <rec_type.h>
#include <mail_proto.h>
#include <mail_addr.h>
#include <verify_clnt.h>
#include <input_transp.h>
#include <is_header.h>
#include <valid_mailhost_addr.h>
#include <dsn_util.h>
#include <conv_time.h>
#include <xtext.h>
#include <smtp_stream.h>
#include <attr_override.h>
#include "smtpd.h"
#include "smtpd_sasl_glue.h"
#include "smtpd_check.h"
#include "smtpd_dsn_fix.h"
#include "smtpd_resolve.h"
#include "smtpd_expand.h"
データ構造 | |
struct | SMTPD_RBL_EXPAND_CONTEXT |
struct | SMTPD_POLICY_CLNT |
マクロ定義 | |
#define | SMTPD_CHECK_DUNNO 0 /* indifferent */ |
#define | SMTPD_CHECK_OK 1 /* explicitly permit */ |
#define | SMTPD_CHECK_REJECT 2 /* explicitly reject */ |
#define | STR vstring_str |
#define | CONST_STR(x) ((const char *) vstring_str(x)) |
#define | UPDATE_STRING(ptr, val) { if (ptr) myfree(ptr); ptr = mystrdup(val); } |
#define | DEFER_IF_REJECT2(state, class, code, dsn, fmt, a1, a2) defer_if(&(state)->defer_if_reject, (class), (code), (dsn), (fmt), (a1), (a2)) |
#define | DEFER_IF_REJECT3(state, class, code, dsn, fmt, a1, a2, a3) defer_if(&(state)->defer_if_reject, (class), (code), (dsn), (fmt), (a1), (a2), (a3)) |
#define | DEFER_IF_REJECT4(state, class, code, dsn, fmt, a1, a2, a3, a4) defer_if(&(state)->defer_if_reject, (class), (code), (dsn), (fmt), (a1), (a2), (a3), (a4)) |
#define | DEFER_ALL_ACT 0 |
#define | DEFER_IF_PERMIT_ACT 1 |
#define | DEFER_IF_PERMIT2(type, state, class, code, dsn, fmt, a1, a2) |
#define | DEFER_IF_PERMIT3(type, state, class, code, dsn, fmt, a1, a2, a3) |
#define | DEFER_IF_PERMIT4(type, state, class, code, dsn, fmt, a1, a2, a3, a4) |
#define | link_override_table_to_variable(table, var) do { table[var##_offset].target = &var; } while (0) |
#define | smtpd_policy_tmout_offset 0 |
#define | smtpd_policy_idle_offset 1 |
#define | smtpd_policy_ttl_offset 2 |
#define | smtpd_policy_try_delay_offset 3 |
#define | smtpd_policy_req_limit_offset 0 |
#define | smtpd_policy_try_limit_offset 1 |
#define | smtpd_policy_def_action_offset 0 |
#define | smtpd_policy_context_offset 1 |
#define | SMTPD_CHECK_PARSE_POLICY (1<<0) |
#define | SMTPD_CHECK_PARSE_MAPS (1<<1) |
#define | SMTPD_CHECK_PARSE_ALL (~0) |
#define | NO_PRINT_ARGS "%s", "" |
#define | RR_ADDR_TYPES T_A |
#define | MAILHOST_LOOKUP_FLAGS |
#define | NOPE 0 |
#define | YUP 1 |
#define | YUP 1 |
#define | NOPE 0 |
#define | HAS_MY_ADDR_RETURN(x) { freeaddrinfo(res0); return (x); } |
#define | PERMIT_MX_BACKUP_RETURN(x) |
#define | STREQUAL(x, y, l) (strncasecmp((x), (y), (l)) == 0 && (y)[l] == 0) |
#define | SHUT_RDWR 2 |
#define | ADDROF(x) ((char *) &(x)) |
#define | CHK_ACCESS_RETURN(x, y) { *found = y; return(x); } |
#define | FULL 0 |
#define | PARTIAL DICT_FLAG_FIXED |
#define | FOUND 1 |
#define | MISSED 0 |
#define | CHK_DOMAIN_RETURN(x, y) { *found = y; return(x); } |
#define | CHK_ADDR_RETURN(x, y) { *found = y; return(x); } |
#define | CHECK_SERVER_RETURN(x) { dns_rr_free(server_list); return(x); } |
#define | SUSPICIOUS(reply, reply_class) |
#define | SMTPD_DNSXL_STAT_SOFT(dnsxl_res) ((dnsxl_res) == dnsxl_stat_soft) |
#define | SMTPD_DNXSL_STAT_HARD(dnsxl_res) ((dnsxl_res) == 0) |
#define | SMTPD_DNSXL_STAT_OK(dnsxl_res) !(SMTPD_DNXSL_STAT_HARD(dnsxl_res) || SMTPD_DNSXL_STAT_SOFT(dnsxl_res)) |
#define | RBL_TXT_LIMIT 500 |
#define | STREQ(x, y) (*(x) == *(y) && strcmp((x), (y)) == 0) |
#define | NO_DEF_ACL 0 |
#define | SMTPD_CHECK_RESET() |
#define | SMTPD_CHECK_PUSH(backup, current, new) |
#define | SMTPD_CHECK_POP(current, backup) |
#define | SMTPD_CHECK_HELO_RETURN(x) |
#define | SMTPD_CHECK_MAIL_RETURN(x) |
#define | SMTPD_CHECK_RCPT_RETURN(x) |
#define | SMTPD_CHECK_ETRN_RETURN(x) |
#define | MATCH(map, rcpt) check_mail_addr_find(state, recipient, map, rcpt, (char **) 0) |
#define | NOMATCH(map, rcpt) (MATCH(map, rcpt) == 0) |
#define | MATCH_LEFT(l, r, n) (strncasecmp_utf8((l), (r), (n)) == 0 && (r)[n] == '@') |
#define | BLOCKS(x) ((x) / fsbuf.block_size) |
関数 | |
void | smtpd_check_init (void) |
int | smtpd_check_addr (const char *sender, const char *addr, int smtputf8) |
char * | smtpd_check_rewrite (SMTPD_STATE *state) |
char * | smtpd_check_client (SMTPD_STATE *state) |
char * | smtpd_check_helo (SMTPD_STATE *state, char *helohost) |
char * | smtpd_check_mail (SMTPD_STATE *state, char *sender) |
char * | smtpd_check_rcpt (SMTPD_STATE *state, char *recipient) |
char * | smtpd_check_etrn (SMTPD_STATE *state, char *domain) |
char * | smtpd_check_size (SMTPD_STATE *state, off_t size) |
char * | smtpd_check_queue (SMTPD_STATE *state) |
char * | smtpd_check_data (SMTPD_STATE *state) |
char * | smtpd_check_eod (SMTPD_STATE *state) |
変数 | |
SMTPD_RBL_STATE | |
double | smtpd_space_multf = 1.5 |
#define ADDROF | ( | x | ) | ((char *) &(x)) |
#define BLOCKS | ( | x | ) | ((x) / fsbuf.block_size) |
#define CHECK_SERVER_RETURN | ( | x | ) | { dns_rr_free(server_list); return(x); } |
#define CHK_ACCESS_RETURN | ( | x, | |
y | |||
) | { *found = y; return(x); } |
#define CHK_ADDR_RETURN | ( | x, | |
y | |||
) | { *found = y; return(x); } |
#define CHK_DOMAIN_RETURN | ( | x, | |
y | |||
) | { *found = y; return(x); } |
#define CONST_STR | ( | x | ) | ((const char *) vstring_str(x)) |
smtpd_check.c の 380 行目に定義があります。
#define DEFER_ALL_ACT 0 |
#define DEFER_IF_PERMIT2 | ( | type, | |
state, | |||
class, | |||
code, | |||
dsn, | |||
fmt, | |||
a1, | |||
a2 | |||
) |
#define DEFER_IF_PERMIT3 | ( | type, | |
state, | |||
class, | |||
code, | |||
dsn, | |||
fmt, | |||
a1, | |||
a2, | |||
a3 | |||
) |
#define DEFER_IF_PERMIT4 | ( | type, | |
state, | |||
class, | |||
code, | |||
dsn, | |||
fmt, | |||
a1, | |||
a2, | |||
a3, | |||
a4 | |||
) |
#define DEFER_IF_PERMIT_ACT 1 |
#define DEFER_IF_REJECT2 | ( | state, | |
class, | |||
code, | |||
dsn, | |||
fmt, | |||
a1, | |||
a2 | |||
) | defer_if(&(state)->defer_if_reject, (class), (code), (dsn), (fmt), (a1), (a2)) |
#define DEFER_IF_REJECT3 | ( | state, | |
class, | |||
code, | |||
dsn, | |||
fmt, | |||
a1, | |||
a2, | |||
a3 | |||
) | defer_if(&(state)->defer_if_reject, (class), (code), (dsn), (fmt), (a1), (a2), (a3)) |
#define DEFER_IF_REJECT4 | ( | state, | |
class, | |||
code, | |||
dsn, | |||
fmt, | |||
a1, | |||
a2, | |||
a3, | |||
a4 | |||
) | defer_if(&(state)->defer_if_reject, (class), (code), (dsn), (fmt), (a1), (a2), (a3), (a4)) |
#define FOUND 1 |
#define FULL 0 |
#define HAS_MY_ADDR_RETURN | ( | x | ) | { freeaddrinfo(res0); return (x); } |
#define link_override_table_to_variable | ( | table, | |
var | |||
) | do { table[var##_offset].target = &var; } while (0) |
smtpd_check.c の 503 行目に定義があります。
#define MAILHOST_LOOKUP_FLAGS |
#define MATCH | ( | map, | |
rcpt | |||
) | check_mail_addr_find(state, recipient, map, rcpt, (char **) 0) |
#define MATCH_LEFT | ( | l, | |
r, | |||
n | |||
) | (strncasecmp_utf8((l), (r), (n)) == 0 && (r)[n] == '@') |
#define MISSED 0 |
#define NO_DEF_ACL 0 |
#define NO_PRINT_ARGS "%s", "" |
#define NOMATCH | ( | map, | |
rcpt | |||
) | (MATCH(map, rcpt) == 0) |
#define NOPE 0 |
#define NOPE 0 |
#define PARTIAL DICT_FLAG_FIXED |
#define PERMIT_MX_BACKUP_RETURN | ( | x | ) |
#define RBL_TXT_LIMIT 500 |
#define RR_ADDR_TYPES T_A |
#define SHUT_RDWR 2 |
#define SMTPD_CHECK_DUNNO 0 /* indifferent */ |
smtpd_check.c の 271 行目に定義があります。
#define SMTPD_CHECK_ETRN_RETURN | ( | x | ) |
#define SMTPD_CHECK_HELO_RETURN | ( | x | ) |
#define SMTPD_CHECK_MAIL_RETURN | ( | x | ) |
#define SMTPD_CHECK_OK 1 /* explicitly permit */ |
smtpd_check.c の 272 行目に定義があります。
#define SMTPD_CHECK_PARSE_ALL (~0) |
#define SMTPD_CHECK_PARSE_MAPS (1<<1) |
#define SMTPD_CHECK_PARSE_POLICY (1<<0) |
#define SMTPD_CHECK_POP | ( | current, | |
backup | |||
) |
#define SMTPD_CHECK_PUSH | ( | backup, | |
current, | |||
new | |||
) |
#define SMTPD_CHECK_RCPT_RETURN | ( | x | ) |
#define SMTPD_CHECK_REJECT 2 /* explicitly reject */ |
smtpd_check.c の 273 行目に定義があります。
#define SMTPD_CHECK_RESET | ( | ) |
#define SMTPD_DNSXL_STAT_OK | ( | dnsxl_res | ) | !(SMTPD_DNXSL_STAT_HARD(dnsxl_res) || SMTPD_DNSXL_STAT_SOFT(dnsxl_res)) |
smtpd_check.c の 3263 行目に定義があります。
#define SMTPD_DNSXL_STAT_SOFT | ( | dnsxl_res | ) | ((dnsxl_res) == dnsxl_stat_soft) |
smtpd_check.c の 3261 行目に定義があります。
#define SMTPD_DNXSL_STAT_HARD | ( | dnsxl_res | ) | ((dnsxl_res) == 0) |
smtpd_check.c の 3262 行目に定義があります。
#define smtpd_policy_context_offset 1 |
smtpd_check.c の 515 行目に定義があります。
#define smtpd_policy_def_action_offset 0 |
smtpd_check.c の 514 行目に定義があります。
#define smtpd_policy_idle_offset 1 |
smtpd_check.c の 507 行目に定義があります。
#define smtpd_policy_req_limit_offset 0 |
smtpd_check.c の 511 行目に定義があります。
#define smtpd_policy_tmout_offset 0 |
smtpd_check.c の 506 行目に定義があります。
#define smtpd_policy_try_delay_offset 3 |
smtpd_check.c の 509 行目に定義があります。
#define smtpd_policy_try_limit_offset 1 |
smtpd_check.c の 512 行目に定義があります。
#define smtpd_policy_ttl_offset 2 |
smtpd_check.c の 508 行目に定義があります。
#define STR vstring_str |
smtpd_check.c の 379 行目に定義があります。
#define STREQ | ( | x, | |
y | |||
) | (*(x) == *(y) && strcmp((x), (y)) == 0) |
#define STREQUAL | ( | x, | |
y, | |||
l | |||
) | (strncasecmp((x), (y), (l)) == 0 && (y)[l] == 0) |
#define SUSPICIOUS | ( | reply, | |
reply_class | |||
) |
smtpd_check.c の 381 行目に定義があります。
#define YUP 1 |
#define YUP 1 |
smtpd_check.c の 4654 行目に定義があります。
char* smtpd_check_client | ( | SMTPD_STATE * | state | ) |
smtpd_check.c の 4762 行目に定義があります。
char* smtpd_check_data | ( | SMTPD_STATE * | state | ) |
smtpd_check.c の 5349 行目に定義があります。
char* smtpd_check_eod | ( | SMTPD_STATE * | state | ) |
smtpd_check.c の 5400 行目に定義があります。
char* smtpd_check_etrn | ( | SMTPD_STATE * | state, |
char * | domain | ||
) |
smtpd_check.c の 5019 行目に定義があります。
char* smtpd_check_helo | ( | SMTPD_STATE * | state, |
char * | helohost | ||
) |
smtpd_check.c の 4798 行目に定義があります。
void smtpd_check_init | ( | void | ) |
smtpd_check.c の 721 行目に定義があります。
char* smtpd_check_mail | ( | SMTPD_STATE * | state, |
char * | sender | ||
) |
smtpd_check.c の 4852 行目に定義があります。
char* smtpd_check_queue | ( | SMTPD_STATE * | state | ) |
smtpd_check.c の 5306 行目に定義があります。
char* smtpd_check_rcpt | ( | SMTPD_STATE * | state, |
char * | recipient | ||
) |
smtpd_check.c の 4907 行目に定義があります。
char* smtpd_check_rewrite | ( | SMTPD_STATE * | state | ) |
smtpd_check.c の 4690 行目に定義があります。
char* smtpd_check_size | ( | SMTPD_STATE * | state, |
off_t | size | ||
) |
smtpd_check.c の 5281 行目に定義があります。
SMTPD_RBL_STATE |
smtpd_check.c の 447 行目に定義があります。
double smtpd_space_multf = 1.5 |
smtpd_check.c の 469 行目に定義があります。