On 4/15/2016 4:02 PM, Michael D. Sofka wrote:
> I would like to be able to reject the empty envelope-sender, <>, for
> authenticated email to our submission and smtps ports.  That is, I
> want to stop:
> 
> 235 2.7.0 Authentication successful
> mail from:<>
> 250 2.1.0 Ok
> rcpt to:<some...@someplace-not-us.com>
> 250 2.1.5 Ok
> 
> 
> Before quoting the RFC, please read on.  I am well aware of what I
> am asking, and it will not break the RFC, or any legitimate
> auto-responder (at least none written this century).
> 
> Here's the problem:
> 
> Near the end of January a phish got through, and about a dozen
> people responded.  The account information attained was used over
> the next couple of weeks to authenticate to port 587, and send
> spam.  So far, par for the course.  Our anti-spam software (CanIt)
> is very good, and the envelope-sender was blocked for exceeding the
> outgoing email rate limit.
> 
> Except....
> 
> This spammer/spambot also sent authenticated email with the null
> envelope-sender.  This had never happened before, and I was
> surprised it worked.  CanIt again rate-limit-blocked the connecting
> IP.  It was a higher limit, but fortunately the spammer used a
> single IP for the first attempt so the damage was contained.  I
> quickly added a rule to outgoing messages blocking email: From the
> null envelope-sender; with a local authentication header; from a
> connecting relay outside of our domain. This rule blocked the next
> half dozen-plus, attempts to use the authenticated envelope-sender
> loophole.   (Side note: It seemed the spambot anticipated the
> envelope-sender rate limit, and would first send a burst from the
> authenticated account, followed by a second burst from the null
> sender.)
> 
> 
> Running tests, it is indeed the case that Postfix allows the null
> envelope-sender on authenticated email (at least up to version
> 2.11.0), even with: reject_authenticated_sender_login_mismatch.
> Searching for this has only turned up one other request for this
> capability, from 2013, with no resolution, and much quoting of the RFC.
> 
> I do understand that rejecting <> in all cases is bad, against the
> RFC, would block DSNs, etc.  But I don't see a general need for
> permitting <> when authenticated, or at the very least see a need to
> limit which accounts can authenticate and send as <>.   I also do
> not see any need to permit <> to relay to a recipient outside of the
> local domain, authenticated or not.
> 
> Since early February I have not seen a repeat of the exploit. Since
> then have also seen exactly zero cases of the rule preventing
> authenticated <> sender to off-domain recipients misfiring.
> 
> If there is a way to prevent authenticated email from the null
> sender in Postfix, please advise.  I have been reading, and
> re-reading the notes on SMTP-AUTH, and so far nothing has helped. 
> If this is not something Postfix can do, consider this a feature
> request.
> 
> Thank You,
> Mike
> 


It's pretty easy to block the null sender on port 587, and I don't
think that's an unreasonable request.  I'll hope/assume you don't
allow AUTH on port 25 since that complicates this.

All you need to do is add a check_sender_access map to the master.cf
submission service. Simple (incomplete?) example:

# main.cf
submission_sender_checks =
   check_sender_access hash:/etc/postfix/reject_null_sender

# master.cf
#  existing submission entry
submission ... smtpd
  ... other options ...
#  add sender restrictions
  -o smtpd_sender_restrictions=$submission_sender_checks


# reject_null_sender
<>  REJECT null sender not allowed



  -- Noel Jones

Reply via email to