diff options
author | Todd Lyons <tlyons@exim.org> | 2012-07-26 13:31:20 -0700 |
---|---|---|
committer | Todd Lyons <tlyons@exim.org> | 2012-07-27 12:52:46 -0700 |
commit | e7568d513f9b5a853e5cdb5db8b2cc0d53f79981 (patch) | |
tree | 50e7e2dc1de67492c07d2a764b81911ae24f14e7 /test | |
parent | 9471b034a78d53e4bfb951649e9f556cf4e6018c (diff) |
Bug #198: Add remove_header ACL modifier.
Used patch from Magnus Holmgren dated 2007-02-20.
Added documentation.
Added tests to detect proper operation.
Diffstat (limited to 'test')
-rw-r--r-- | test/confs/0567 | 91 | ||||
-rw-r--r-- | test/log/0567 | 10 | ||||
-rw-r--r-- | test/mail/0567.rcptok | 45 | ||||
-rw-r--r-- | test/rejectlog/0567 | 2 | ||||
-rw-r--r-- | test/scripts/0000-Basic/0567 | 49 | ||||
-rw-r--r-- | test/stdout/0567 | 8 |
6 files changed, 205 insertions, 0 deletions
diff --git a/test/confs/0567 b/test/confs/0567 new file mode 100644 index 000000000..7348b1fe5 --- /dev/null +++ b/test/confs/0567 @@ -0,0 +1,91 @@ +# Exim test configuration 0532 + +CONNECTCOND= + +exim_path = EXIM_PATH +host_lookup_order = bydns +primary_hostname = myhost.test.ex +rfc1413_query_timeout = 0s +spool_directory = DIR/spool +log_file_path = DIR/spool/log/%slog +gecos_pattern = "" +gecos_name = CALLER_NAME + +# ----- Main settings ----- + +acl_smtp_connect = connect +acl_smtp_mail = mail +acl_smtp_rcpt = rcpt +acl_smtp_predata = predata +acl_smtp_data = data +acl_not_smtp = notsmtp + +qualify_domain = test.ex +trusted_users = CALLER + +hostlist internal_headers = x-mail-2 : x-mail-3 + + +# ----- ACL ----- + +begin acl + +connect: + accept CONNECTCOND + +mail: + accept remove_header = x-mail-1 + senders = mailok@test.ex + # Won't work because doesn't expand + remove_header = +internal_headers + accept + +rcpt: + accept local_parts = rcptok + remove_header = x-rcpt-4 : x-rcpt-2 + set acl_m_hdr = x-predata-1 + deny add_header = RCPT: denied $local_part + + +predata: + warn remove_header = x-predata-3 : $acl_m_hdr + # Won't work because doesn't use wildcards + accept remove_header = x-not-* + +data: + warn log_message = Verified previously removed header X-Rcpt-2 + condition = ${if eq{$h_x-rcpt-2:}{}} + warn remove_header = x-data-1 : x-data-4 + condition = ${if eq{$h_cond:}{accept}} + remove_header = x-data-3 + # Won't delete this header because condition fails before the modifier + warn condition = ${if eq{$h_cond:}{reject}} + remove_header = x-data-2 + warn log_message = Verified removed header X-Data-3 in this ACL still visible + condition = ${if !eq{$h_x-data-3:}{}} + accept + +notsmtp: + # Will remove a required header (Date) if told to + accept remove_header = x-notsmtp-1 : date + + +# ----- Routers ----- + +begin routers + +r1: + driver = accept + transport = t1 + + +# ----- Transports ----- + +begin transports + +t1: + driver = appendfile + file = DIR/test-mail/$local_part + user = CALLER + +# End diff --git a/test/log/0567 b/test/log/0567 new file mode 100644 index 000000000..1bad60ee9 --- /dev/null +++ b/test/log/0567 @@ -0,0 +1,10 @@ +1999-03-02 09:44:33 U=CALLER F=<mailok@test.ex> rejected RCPT <notok@test.ex> +1999-03-02 09:44:33 10HmaX-0005vi-00 U=CALLER Warning: Verified previously removed header X-Rcpt-2 +1999-03-02 09:44:33 10HmaX-0005vi-00 U=CALLER Warning: Verified removed header X-Data-3 in this ACL still visible +1999-03-02 09:44:33 10HmaX-0005vi-00 <= mailok@test.ex U=CALLER P=local-smtp S=sss +1999-03-02 09:44:33 10HmaX-0005vi-00 => rcptok <rcptok@test.ex> R=r1 T=t1 +1999-03-02 09:44:33 10HmaX-0005vi-00 Completed +1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@test.ex U=CALLER P=local S=sss +1999-03-02 09:44:33 10HmaY-0005vi-00 => rcptok <rcptok@test.ex> R=r1 T=t1 +1999-03-02 09:44:33 10HmaY-0005vi-00 Completed +1999-03-02 09:44:33 U=CALLER temporarily rejected connection in "connect" ACL: cannot use remove_header condition in connection ACL diff --git a/test/mail/0567.rcptok b/test/mail/0567.rcptok new file mode 100644 index 000000000..deffea8fc --- /dev/null +++ b/test/mail/0567.rcptok @@ -0,0 +1,45 @@ +From mailok@test.ex Tue Mar 02 09:44:33 1999 +Received: from CALLER by myhost.test.ex with local-smtp (Exim x.yz) + (envelope-from <mailok@test.ex>) + id 10HmaX-0005vi-00 + for rcptok@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 +cond: accept +X-Data-2: Line two +X-Data-5: Line five +X-Not-1: Testing wildcard one +X-Not-2: Testing wildcard two +X-Rcpt-1: Line six +X-Rcpt-3: Line eight +X-Rcpt-5: Line ten +X-Mail-2: Line twelve +X-Mail-3: Line thirteen +X-Mail-4: Line fourteen is also really long, but it won't get + removed by these ACL's. +X-Mail-5: Line fifteen +X-Predata-5: Line sixteen +X-Predata-4: Line seventeen +X-Predata-2: Line nineteen +X-NotSMTP-1: Line twenty-one +X-NotSMTP-2: Line twenty-two +X-NotSMTP-3: Line twenty-three +Message-Id: <E10HmaX-0005vi-00@myhost.test.ex> +From: mailok@test.ex +Date: Tue, 2 Mar 1999 09:44:33 +0000 +RCPT: denied notok + +Test message + +From CALLER@test.ex Tue Mar 02 09:44:33 1999 +Received: from CALLER by myhost.test.ex with local (Exim x.yz) + (envelope-from <CALLER@test.ex>) + id 10HmaY-0005vi-00 + for rcptok@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 +Message-Id: <E10HmaY-0005vi-00@myhost.test.ex> +From: CALLER_NAME <CALLER@test.ex> + +Test non-SMTP message. Make sure it doesn't blow up when a header +it wants to remove is not present. This one also overrides the +fixup of adding a Date header because we specified to remove it! +Allow the admin to shoot himself in the foot if he really and +truly wants to. + diff --git a/test/rejectlog/0567 b/test/rejectlog/0567 new file mode 100644 index 000000000..980e2e851 --- /dev/null +++ b/test/rejectlog/0567 @@ -0,0 +1,2 @@ +1999-03-02 09:44:33 U=CALLER F=<mailok@test.ex> rejected RCPT <notok@test.ex> +1999-03-02 09:44:33 U=CALLER temporarily rejected connection in "connect" ACL: cannot use remove_header condition in connection ACL diff --git a/test/scripts/0000-Basic/0567 b/test/scripts/0000-Basic/0567 new file mode 100644 index 000000000..5abd06fd6 --- /dev/null +++ b/test/scripts/0000-Basic/0567 @@ -0,0 +1,49 @@ +# remove_header modifier in ACLs +exim -bs -odi +mail from:<mailok@test.ex> +rcpt to:<rcptok@test.ex> +rcpt to:<notok@test.ex> +data +cond: accept +X-Data-1: Line one +X-Data-2: Line two +X-Data-3: Line three +X-Data-4: Line four +X-Data-5: Line five +X-Not-1: Testing wildcard one +X-Not-2: Testing wildcard two +X-Rcpt-1: Line six +X-Rcpt-2: Line seven +X-Rcpt-3: Line eight +X-Rcpt-4: Line nine is really long, so long in fact that it wraps + around to the next line. +X-Rcpt-5: Line ten +X-Mail-1: Line eleven +X-Mail-2: Line twelve +X-Mail-3: Line thirteen +X-Mail-4: Line fourteen is also really long, but it won't get + removed by these ACL's. +X-Mail-5: Line fifteen +X-Predata-5: Line sixteen +X-Predata-4: Line seventeen +X-Predata-3: Line eighteen +X-Predata-2: Line nineteen +X-Predata-1: Line twenty +X-NotSMTP-1: Line twenty-one +X-NotSMTP-2: Line twenty-two +X-NotSMTP-3: Line twenty-three + +Test message +. +quit +**** +exim -odi rcptok@test.ex +Test non-SMTP message. Make sure it doesn't blow up when a header +it wants to remove is not present. This one also overrides the +fixup of adding a Date header because we specified to remove it! +Allow the admin to shoot himself in the foot if he really and +truly wants to. +**** +exim -bs -odi -DCONNECTCOND="remove_header=CONNECT: won't do this" +**** +no_msglog_check diff --git a/test/stdout/0567 b/test/stdout/0567 new file mode 100644 index 000000000..65fd23c6f --- /dev/null +++ b/test/stdout/0567 @@ -0,0 +1,8 @@ +220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +250 OK +250 Accepted +550 Administrative prohibition +354 Enter message, ending with "." on a line by itself +250 OK id=10HmaX-0005vi-00 +221 myhost.test.ex closing connection +451 Temporary local problem - please try later |