--- src/mlmmj-process.c
+++ src/mlmmj-process.c
@@ -64,6 +64,7 @@
 	regex_t regexp;
 	unsigned int not;
 	enum action act;
+	char* str;
 	struct rule_list *next;
 };
 
@@ -167,7 +168,7 @@
 }
 
 
-static enum action do_access(struct strlist *rule_strs, struct strlist *hdrs)
+static enum action do_access(struct strlist *rule_strs, struct strlist *hdrs, const char* from, const char *listdir)
 {
 	int i;
 	unsigned int match;
@@ -189,7 +190,7 @@
 		new_rule->next = head;
 		head = new_rule;
 
-		rule_ptr = rule_strs->strs[i];
+		new_rule->str = rule_ptr = rule_strs->strs[i];
 		if (strncmp(rule_ptr, "allow", 5) == 0) {
 			rule_ptr += 5;
 			new_rule->act = ALLOW;
@@ -284,8 +285,9 @@
 					break;
 			}
 
-			log_error(LOG_ARGS, "A mail was %s by rule #%d",
-					logstr, rule_nr);
+			log_oper(listdir, OPLOGFNAME, "mlmmj-process: access "
+					"A mail with header \"%s\" from %s was %s by rule #%d \"%s\"",
+					hdrs->strs[i], from, logstr, rule_nr, rule->str);
 			ret = rule->act;
 			free_rules(head);
 			return ret;
@@ -812,7 +814,7 @@
 		enum action accret;
 		/* Don't send a mail about denial to the list, but silently
 		 * discard and exit. Also do this in case it's turned off */
-		accret = do_access(access_rules, &allheaders);
+		accret = do_access(access_rules, &allheaders, fromemails.emaillist[0], listdir);
 		if (accret == DENY) {
 			if ((strcasecmp(listaddr, fromemails.emaillist[0]) ==
 						0) || noaccessdenymails) {


