von da:
Two ACLs are associated with the DATA command, because it is two-stage command, with two responses being sent to the client. When the DATA command is received, the ACL defined by acl_smtp_predata is obeyed. This gives you control after all the RCPT commands, but before the message itself is received. It offers the opportunity to give a negative response to the DATA command before the data is transmitted. Header lines added by MAIL or RCPT ACLs are not visible at this time, but any that are defined here are visible when the acl_smtp_data ACL is run.
You cannot test the contents of the message, for example, to verify addresses in the headers, at RCPT time or when the DATA command is received. Such tests have to appear in the ACL that is run after the message itself has been received, before the final response to the DATA command is sent. This is the ACL specified by acl_smtp_data, which is the second ACL that is associated with the DATA command.
von der Exim Standartkonfiguration:
Code:
### main/02_exim4-config_options
#################################
# This option defines the access control list that is run when an
# SMTP RCPT command is received.
#
acl_smtp_rcpt = acl_check_rcpt
# This option defines the access control list that is run when an
# SMTP DATA command is received.
#
acl_smtp_data = acl_check_data
30_exim4-config_check_rcpt wird überprüft sobald der Empfänger bekannt ist, der Absender ist da aber meist noch unbekannt. Also ist acl/40_exim4-config_check_data wirklich die richtige Stelle.
Meine jetzige Fehlermeldung:
User web1p1 darf nur true als absender haben
Hast du was verändert? Bei meinen Tests hat es eigentlich funktioniert. Was für eine Fehlermeldung bzw "message" bekommst du?
Ich muss im moment noch gestehen, dass ich mit dieser Syntax nicht wirklich klar komme....
ich probiers mal zu erklären:
>deny
Sobald alle folgenden Tests der Reihe nach erfolgreich bzw true sind wird der Empfang verweigert
>condition = ${if eq{$authenticated_id}{}{false}{true}}
Wenn $authenticated_id leer ist wird false zurückgegeben, ansonsten true. Bei false wird, wie schon oben erwähnt, die gesammte Regel ignoriert und die Mail kommt ohne das die nächsten Zeilen getestet werden durch. $authenticated_id ist leer wenn die Mail von einem fremden Server kommt und für einen deiner Useraddressiert ist. Wenn sich einer deiner User anmeldet ist $authenticated_id der Benutzername, also z.b. web1p1
> !senders =
Überprüft ob der Absender in der folgenden Liste enthalten ist, das "!" ist eine Verneinung, d.h. wenn der Absender nicht in der Liste enthalten ist wird der Empfang verweigert
>${lookup{$authenticated_id}lsearch{/etc/my_email-addresses}{$value}}
Schaut in /etc/my_email-addresses nach ob es einen Eintrag für $authenticated_id gibt, wenn ja wird er zurückgegeben. Wenn kein Eintrag existiert wird eine leere Liste zurückgegeben.
>message = User $authenticated_id darf nur ${lookup{$authenticated_id}lsearch{/etc/my_email-addresses}{$value}{true}} als Absender haben, $sender_address ist nicht erlaubt.
Gibt eine Fehlermeldung aus und gibt standardmäßig true zurück.