Hi, I have just committed a major change in smtpd that'll require smtpd.conf to be rewritten before your update to the new code.
The new grammar is not TOO different from the former one, a lot of stuff remains exactly identical, but the ruleset is now split into two parts: - a named action - a matching pattern which is associated to a named action In effect, instead of having: accept from any for local deliver to mbox You will have: action "my_action" mbox match from any for local action "my_action" There are a few keywords that have been shortened too but all in all the switch to new grammar is easy, the smtpd.conf man page has been updated, and it continues being improved thanks to ingo and jmc. The man page by itself should be enough to do the switch. Since this is quite a major change, I also wrote a post that describes a conversion of my own complex smtpd.conf to new grammar: https://poolp.org/posts/2018-05-21/switching-to-opensmtpd-new-config/ I have also compiled a list of directives recognized by the parser which I intend to use for regress tests: https://poolp.org/~gilles/smtpd.conf As for the reasons behind the change they are numerous, I explained some at EuroBSDCon 2017, I explained some on my blog, the bottom line is that while one-line rules were apparently an awesome idea, they were actually a design error that had consequences on pretty much the entire daemon. We didn't realize it until a few months ago, we tried hard to maintain a one-line rule grammar but it became more and more obvious that this just isn't doable without creating issues and unnecessary complexity. The new grammar is cleaner, it helped remove ~700 lines of complex code, made the handling of .forward files as well much safer, removed a lot of very unpleasant side-effects most people didn't even realize existed ... until they hit that one case for which we had no way to work around. Anyways, looking forward for you to test and report how it works for you :-) -- Gilles Chehade https://www.poolp.org @poolpOrg