5.1.3 SMTPD_CMD smtpd_cmd_table[]数组:回调函数数组

来源:互联网 发布:淘宝规蜜pc端入口 编辑:程序博客网 时间:2024/06/01 08:53

smtpd_cmd_table数组“绑定”smtp命令与执行函数,是实现命令状态机的基础:

static SMTPD_CMD smtpd_cmd_table[] = {   {SMTPD_CMD_HELO, helo_cmd, SMTPD_CMD_FLAG_LIMIT | SMTPD_CMD_FLAG_PRE_TLS| SMTPD_CMD_FLAG_LAST,},   {SMTPD_CMD_EHLO, ehlo_cmd, SMTPD_CMD_FLAG_LIMIT | SMTPD_CMD_FLAG_PRE_TLS| SMTPD_CMD_FLAG_LAST,},   {SMTPD_CMD_XCLIENT, xclient_cmd,},   {SMTPD_CMD_XFORWARD, xforward_cmd,},#ifdef USE_TLS   {SMTPD_CMD_STARTTLS, starttls_cmd, SMTPD_CMD_FLAG_PRE_TLS,},#else   {SMTPD_CMD_STARTTLS, unimpl_cmd, SMTPD_CMD_FLAG_PRE_TLS,},#endif#ifdef USE_SASL_AUTH   {SMTPD_CMD_AUTH, smtpd_sasl_auth_cmd,},#else   {SMTPD_CMD_AUTH, unimpl_cmd,},#endif   {SMTPD_CMD_MAIL, mail_cmd,},   {SMTPD_CMD_RCPT, rcpt_cmd,},   {SMTPD_CMD_DATA, data_cmd, SMTPD_CMD_FLAG_LAST,},   {SMTPD_CMD_RSET, rset_cmd, SMTPD_CMD_FLAG_LIMIT,},   {SMTPD_CMD_NOOP, noop_cmd, SMTPD_CMD_FLAG_LIMIT | SMTPD_CMD_FLAG_PRE_TLS| SMTPD_CMD_FLAG_LAST,},   {SMTPD_CMD_VRFY, vrfy_cmd, SMTPD_CMD_FLAG_LIMIT | SMTPD_CMD_FLAG_LAST,},   {SMTPD_CMD_ETRN, etrn_cmd, SMTPD_CMD_FLAG_LIMIT,},   {SMTPD_CMD_QUIT, quit_cmd, SMTPD_CMD_FLAG_PRE_TLS,},   {0,},};

 

共定义了16个回调函数,我们介绍HELO\EHLO、MAIL、RCPT、DATA这4个主要命令的实现。

0 0
原创粉丝点击