diff -ur postfix-2.0.12.orig/src/global/mail_params.h postfix-2.0.12/src/global/mail_params.h
--- postfix-2.0.12.orig/src/global/mail_params.h	Tue Mar  4 07:07:03 2003
+++ postfix-2.0.12/src/global/mail_params.h	Thu Jun 19 16:56:18 2003
@@ -1248,6 +1248,7 @@
 #define CHECK_SENDER_ACL	"check_sender_access"
 #define CHECK_RECIP_ACL		"check_recipient_access"
 #define CHECK_ETRN_ACL		"check_etrn_access"
+#define CHECK_ALL_ACL		"check_all_access"
 
 #define WARN_IF_REJECT		"warn_if_reject"
 
diff -ur postfix-2.0.12.orig/src/smtpd/smtpd_check.c postfix-2.0.12/src/smtpd/smtpd_check.c
--- postfix-2.0.12.orig/src/smtpd/smtpd_check.c	Thu Mar 20 03:54:48 2003
+++ postfix-2.0.12/src/smtpd/smtpd_check.c	Thu Jun 19 16:57:09 2003
@@ -2838,6 +2838,26 @@
 	}
 
 	/*
+	 * all parameter (client, helo, sender, recipient) restrictions.
+	 */
+	else if (is_map_command(state, name, CHECK_ALL_ACL, &cpp)) {
+	    VSTRING *vp = vstring_alloc(32);
+	    char *helo_name;
+	    char *sender;
+	    char *recipient;
+	    char *table = *cpp;
+	    helo_name = state->helo_name ? state->helo_name : "";
+	    sender = !state->sender ? "" : *state->sender ? state->sender : var_smtpd_null_key;
+	    recipient = state->recipient ? state->recipient : "";
+	    vstring_sprintf(vp, "%s:%s:%s:%s", state->addr, helo_name,
+			    sender, recipient);
+	    status = check_access(state, table, vstring_str(vp), FULL,
+				  &found, state->recipient,
+				  SMTPD_NAME_RECIPIENT, def_acl);
+	    vstring_free(vp);
+	}
+
+	/*
 	 * Error: undefined restriction name.
 	 */
 	else {
