#!/usr/bin/env bash

dir=$(dirname "$0")
. "$dir"/parameters.txt

rm -f /etc/dovecot/conf.d/10-auth.conf

cat >"/etc/dovecot/local.conf" <<-EOF
ldap_uris = ldap://localhost
ldap_auth_dn = cn=admin,${BASEDN}
ldap_auth_dn_password = ${LDAP_ADMIN_PASS}
ldap_base = ${BASEDN}
ldap_debug_level = 1

userdb ldap {
  filter = (&(objectClass=posixAccount)(uid=%{user | username}))
  fields {
    home = %{ldap:homeDirectory}
    uid = %{ldap:uidNumber}
    gid = %{ldap:gidNumber}
  }
}
passdb ldap {
  bind = no
  default_password_scheme = SHA256-CRYPT
  filter = (&(objectClass=posixAccount)(uid=%{user | username}))
  fields {
    user = %{ldap:uid}
    password = %{ldap:userPassword}
  }
}
EOF

systemctl restart dovecot.service

echo "Sending a test message via the LDA"
/usr/lib/dovecot/dovecot-lda -f "test@example.com" -d "$TEST_USERNAME" <<EOF
Return-Path: <test@example.com>
Message-Id: <dep8-test-1@debian.org>
From: Test User <test@example.com>
To: dep8 <dep8@example.com>
Subject: DEP-8 test

This is just a test
EOF

echo "Verifying that the email was correctly delivered"
if [ -z "$(doveadm search -u $TEST_USERNAME header message-id dep8-test-1@debian.org)" ]; then
        echo "Message not found"
        exit 1
fi

echo "Done"
