diff -urN ../drweb-clients-4.32.1-sources.orig/drweb_smf.c ../drweb-clients-4.32.1-sources/drweb_smf.c --- ../drweb-clients-4.32.1-sources.orig/drweb_smf.c 2004-11-22 19:53:51.000000000 +0200 +++ ../drweb-clients-4.32.1-sources/drweb_smf.c 2005-04-12 17:54:11.000000000 +0300 @@ -1098,6 +1098,7 @@ DWF_retcode_t exit_code; int status, cs_len; char code_str[24]; + char *drweb_smf_skip; PROLOGUE( context, priv ); printLib( DW_LL_DEBUG, "[%s]: end of message chunks", dw_mail_get_property( priv->mail, DW_MP_MSGID ) ); @@ -1121,6 +1122,13 @@ } goto final_exit; } + drweb_smf_skip = smfi_getsymval(context, "{drweb_smf_skip}"); + printLib( DW_LL_VERBOSE, "[%s]: {drweb_smf_skip} is '%s' ...", dw_mail_get_property( priv->mail, DW_MP_MSGID ), drweb_smf_skip ); + if ((drweb_smf_skip) && (drweb_smf_skip[0] != '\0')) { + printLib( DW_LL_VERBOSE, "[%s]: skip message scanning ...", dw_mail_get_property( priv->mail, DW_MP_MSGID ) ); + smfi_addheader(context,"X-DrWeb-Filter","Skipped"); + exit_code = SMFIS_CONTINUE; + } else { printLib( DW_LL_VERBOSE, "[%s]: start scanning message from %s ...", dw_mail_get_property( priv->mail, DW_MP_MSGID ), dw_e_get_from(dw_mail_envelope(priv->mail)) ); ret = dw_mail_check( priv->mail, &dwsmf_conf.scan, &dwsmf_conf.postscan, &dwsmf_conf.submit, &dwsmf_conf.agent, &status ); if( ret == DW_ACT_INTERNAL_ERROR0 ) @@ -1129,6 +1137,7 @@ } set_custom_reply( context, ret, dw_mail_get_property(priv->mail, DW_MP_REPLY_STRING) ); exit_code = convert_action_to_retcode( ret ); + } if( dwsmf_conf.scan.local && (exit_code == SMFIS_ACCEPT) ) { if( dw_bm_contain(status, DERR_HAVE_CURED | DERR_HAVE_DELETED) )