Quoting Kerstin Espey:
> public_name= LOGIN
> server_prompts = "Username:: : Password::"
> server_condition = ${if and { \
> { or { \
> { eq {$2}{${lookup{$1}dbm{/etc/exim4/authpwd.db}}}} \
> { eq {$2}{${lookup pgsql{select m_pwd from m_accounts where
> m_account='$1'}}} } \
> } \
> } \
> { !eq{$2}{} } \
> { !eq{$3}{} } \
$3 is not used in LOGIN and therefore always empty. You probably copied
that from a PLAIN authenticator and forgot to change the last two lines
to $1 and $2.
Testing with -d+expand could have helped you to reveal this yourself,
btw. :)