Debugging the OpenEMM Bounce Handling Setup

The following is a short summary of things to configure to get OpenEMM bounce handling to work. The problem is mostly setting up the connection from your sendmail setup, through the milter plugin provided by OpenEMM which then communicates with another daemon "bavd" which as I understand it keeps per mail address statistics and writes the bounce results into the DB.

The things that can be the cause for problems are these:

  1. Your sendmail setup.
  2. The bav* python scripts not working.
  3. The bavd daemon not running/working.
  4. DB access not working
  5. Missing bounce filter in OpenEMM.
  6. Missing bounce alias in bav config.

The real good thing is that OpenEMM is so very well documented that you just need to lookup the simple how to documentation and everything will work within 5min... Sorry just kidding! They seem to want to make money on books and support and somehow don't write documentation and rely on endless forum posts of clueless users.

Enough of a rant below you find some hints how to workaround the problem causes I mentioned above:

Setup Preconditions:

  1. Within OpenEMM a bounce filter has to be configured. Name and description do not matter, it just needs to exist.
  2. The sendmail setup must have milter running the OpenEMM "bav" filter. So /etc/mail/sendmail.mc should have a line like
    INPUT_MAIL_FILTER(`bav', `S=unix:/var/run/bav.sock, F=T')dnl
  3. The sendmail log (e.g. /var/log/mail.log) must be readable by your OpenEMM user

Setup:

  1. Define mail alias matching the bounce filter: Edit your bav.conf-local (e.g.
    /etc/openemm/conf/bav/bav.conf-local) and add something like
    ext_6@mydomain.net alias:ext_12@mydomain.net

    with "ext_6" being the sender address and ext_12 the bounce filter address.

Check List:

  1. Ensure the "bavd" daemon is running (its log file can be found in /var/log/*-<host>-bavd.log)
    • Ensure bavd server port 5166 is open
    • Ensure mails are passed to bavd (look for "scanMessage" lines in log file)
    • Ensure both soft and hard bounces are found (DSN 4.x.x and DSN 5.x.x)
  2. Ensure the bav filter is running. Check "ps -ef" output for "bav -L INFO"
  3. Ensure bounces are set your OpenEMM DB instance:
    select count(*) from customer_1_binding_tbl where user_status=2;

    The meaning of the user_status value is as following:

    Value Meaning
    1 active
    2 hard bounce
    3 opt out by admin
    4 opt out by user

    (see OpenEMM Handbuch)

    Also remember that hard bounces might not be generated immediately. In case of soft bounces OpenEMM waits for up to 7 bounces to consider the mail address as bounced.

Cfagent Refuses to Run on New Client

Sometimes Cfengine refuse to run on a new client and simply does not explain what the problem is. The error message (which you only see when running cfagent with -v) looks like this:

cfengine:client:/var/opt/dsau/cfengine/inputs/update.conf:194: Warning:
actionsequence is empty
cfengine:client:/var/opt/dsau/cfengine/inputs/update.conf:194: Warning: perhaps
cfagent.conf/update.conf have not yet been set up? 

The message "actionsecquence is empty" really means that the cfagent.conf is empty, because it could not be retrieved. The question then is why couldn't it be retrieved. Here is a check list:

  1. update.conf is somehow broken
  2. Master host cannot be contacted in network
  3. Master host and client believe the hostname to be a different IP

In my case the problem was caused by the #3 due to different /etc/hosts the hostname did not resolve into the same IP as on the cfengine master.

Usability of cfengine sucks...

Syndicate content Syndicate content