D. Dante Lorenso wrote: > I don't understand what's happening with my exim Macros: > > [server]/var/log/exim> exim -bV > Exim version 4.67 #1 built 28-Apr-2007 13:50:49 > ... > Configuration file is /etc/exim/exim.conf > > I do several includes in order to configure Exim for my different > machines. The include order is something like this: > > - /etc/exim/exim.conf > ....- /etc/exim/exim/exim.conf > ........- /etc/exim-host.conf * define host-specific macros * > ........* define generic macros based on host-specific ones * > ............- /etc/exim/exim/acl/helo.conf (acl_smtp_helo=) > ............- /etc/exim/exim/acl/mail.conf (acl_smtp_mail=) > ............- /etc/exim/exim/acl/rcpt.conf (acl_smtp_rcpt=) > ............- /etc/exim/exim/acl/data.conf (acl_smtp_data=) > ............- /etc/exim/exim/acl/mime.conf (acl_smtp_mime=) > ....- /etc/exim/exim/routers.conf > ....- /etc/exim/exim/transports.conf > ....- /etc/exim/exim/authenticators.conf > > Inside the /etc/exim/exim/exim.conf file, I define macros like this: > > X_FILE_LOOKUP_BLOCKED_IPS=/etc/exim/exim/lookup/blocked-ips.txt > > But later when I try to use this macro, it doesn't seem to work. Here > is my rule inside the /etc/exim/exim/acl/rcpt.conf file: > > # blocked IP address > deny message = Rejected: $sender_host_address is in a local blacklist. > hosts = net-iplsearch;X_FILE_LOOKUP_BLOCKED_IPS > log_message = bad ip address $sender_host_address > > And here is the error message I get in the /var/log/exim/main.log: > > 2007-10-25 14:19:54 failed to open X_FILE_LOOKUP_BLOCKED_IPS > for linear search: No such file or directory > > It doesn't appear that macro expansion is happening or that the macro > was properly defined during the previous include. What's going on?
Here is something that I noticed and was able to change to make the problem suddenly go away. I still don't understand why. I used to define the ACL rules like this: ---------- 8< ---------- # acl checks acl_not_smtp = accept acl_smtp_auth = accept acl_smtp_mailauth = accept acl_smtp_starttls = accept acl_smtp_etrn = deny acl_smtp_expn = deny acl_smtp_vrfy = deny acl_smtp_connect = accept acl_smtp_helo = /etc/exim/exim/acl/helo.conf acl_smtp_mail = /etc/exim/exim/acl/mail.conf acl_smtp_rcpt = /etc/exim/exim/acl/rcpt.conf acl_smtp_predata = accept acl_smtp_data = /etc/exim/exim/acl/data.conf acl_smtp_mime = /etc/exim/exim/acl/mime.conf ---------- 8< ---------- And with the ACLs defined as file names to the ACL configs, that did NOT work with my macros. I then changed the rules to look like this: ---------- 8< ---------- # acl checks acl_not_smtp = accept acl_smtp_auth = accept acl_smtp_mailauth = accept acl_smtp_starttls = accept acl_smtp_etrn = deny acl_smtp_expn = deny acl_smtp_vrfy = deny acl_smtp_connect = accept acl_smtp_helo = acl_helo acl_smtp_mail = acl_mail acl_smtp_rcpt = acl_rcpt acl_smtp_predata = accept acl_smtp_data = acl_data acl_smtp_mime = acl_mime begin acl acl_helo: .include /etc/exim/exim/acl/helo.conf acl_mail: .include /etc/exim/exim/acl/mail.conf acl_rcpt: .include /etc/exim/exim/acl/rcpt.conf acl_data: .include /etc/exim/exim/acl/data.conf acl_mime: .include /etc/exim/exim/acl/mime.conf ---------- 8< ---------- Suddenly my macros are working again inside the ACL sections. Can anyone explain that?! Apparently defining the ACL with a file name causes a different behavior with regards to the variable namespace or caching or something. Perhaps by using .include to load the ACL code it forces the ACLs to load AFTER the macros but by using the acl=filename that causes the ACLs to load BEFORE the macros? That's my best guess. -- Dante -- ## List details at http://lists.exim.org/mailman/listinfo/exim-users ## Exim details at http://www.exim.org/ ## Please use the Wiki with this list - http://wiki.exim.org/
