I have seen a number of messages in my logs recently which have sender
addresses such as <""@???>. I had expected these to be rejected
as invalid. RFC2822 is a bit inconsistent for the local part. It can be either
atom, dot-atom or a quoted string. The first two must contain at least one
character but the latter can be empty!
In any event I decided to block them with
deny message = Invalid sender address
condition = ${if ! eq{$sender_address_domain}{}}
condition = ${if eq{$sender_address_local_part}{}}
but it did not catch these addresses. I found that changing the second
condition to
condition = ${if eq{$sender_address_local_part}{""}}
worked!
I am now not sure what is happening! Does {""} result in a string consisting of
a pair of double-quotes, or is it a null string? I would have expected the
former from my reading of the spec. If it were the null string then it would
be the same as {}. If it is a pair of double-quotes, how does it match a null
local part? Surely, $sender_address_local_part should be the unquoted version.
Phil.
---------------------------------------
Phil Chambers (postmaster@???)
University of Exeter