Hi Zacchae,
On 2026-08-27 at 15:33-07:00, Zacchaeus wrote:
> An access control in exim is a name, followed by a list of statements.
> A statement is a verb followed by a list of clauses. I could define
> some configs like
>
> (define-configuration acl
> (name string "")
> (body list ""))
> (define-configuration acl-statement
> (verb string "")
> (body list "")
> (define-condition acl-clause
> ...)
>
> then I could translate the above to
>
> (acl (name "acl_check_data")
> (body (list
> (acl-statement
> (verb "deny")
> (body (list
> (acl-clause (condition "..."))
> (acl-clause (message "...")))))
> ...)))
I believe define-configuration could offer useful type checking here
if you define and use list-of-acl-statements et al. That being said,
On 2026-08-27 at 15:33-07:00, Zacchaeus wrote:
> '("acl_check_data"
> (deny (condition "...")
> (message "..."))
> ...)
>
> [feels] cleaner to me. Now, acl-clause above gives some benefit
> as far as detecting typos and some syntax verification,
> so maybe I need something in-between.
https://www.exim.org/exim-html-current/doc/html/spec_html/ch-access_control_lists.html
defines the exhaustive list of verbs and modifiers,
so you can land in the middle with
(acl (name "acl_check_data")
(body (list (acl-deny
(condition "...")
(message "..."))
...)))
Hoping that helps,
Phong