Hello,
Several months ago I discovered a problem with reject_unlisted_sender
allowing through some mail that should have been blocked. I finally
found the incentive to track it down and create a simple test case
for it.
The apparent problem is that reject_unlisted_sender in
smtpd_recipient_restrictions doesn't work correctly when
smtpd_delay_reject is set to no. If the sender address would be
blocked by reject_unlisted_sender, the first RCPT TO blocks the
invalid sender address as expected, but any RCPT TO sent afterward
is accepted with a 250 OK.
Here are two raw SMTP transcripts that show the problem (nothing has
been changed here). In the following, [EMAIL PROTECTED]
is not a valid address, and [EMAIL PROTECTED] is valid (it is
listed in local_recipient_maps).
$ postconf mail_version
mail_version = 2.5.5
$ postconf myhostname
myhostname = babingka.lava.net
The first is with smtpd_delay_reject set to yes (the default), and
everything works correctly.
$ postconf -n
config_directory = /etc/postfix
smtpd_delay_reject = yes
smtpd_recipient_restrictions = reject_unauth_destination,
reject_unlisted_sender
--> 220 babingka.lava.net ESMTP Postfix
<-- EHLO primo.lava.net
--> 250-babingka.lava.net
--> 250-PIPELINING
--> 250-SIZE 10240000
--> 250-VRFY
--> 250-ETRN
--> 250-ENHANCEDSTATUSCODES
--> 250-8BITMIME
--> 250 DSN
<-- MAIL FROM:<[EMAIL PROTECTED]>
--> 250 2.1.0 Ok
<-- RCPT TO:<[EMAIL PROTECTED]>
--> 550 5.1.0 <[EMAIL PROTECTED]>: Sender address rejected: User unknown in
local recipient table
<-- RCPT TO:<[EMAIL PROTECTED]>
--> 550 5.1.0 <[EMAIL PROTECTED]>: Sender address rejected: User unknown in
local recipient table
<-- RCPT TO:<[EMAIL PROTECTED]>
--> 550 5.1.0 <[EMAIL PROTECTED]>: Sender address rejected: User unknown in
local recipient table
<-- RCPT TO:<[EMAIL PROTECTED]>
--> 550 5.1.0 <[EMAIL PROTECTED]>: Sender address rejected: User unknown in
local recipient table
<-- QUIT
--> 221 2.0.0 Bye
Now with smtpd_delay_reject set to no. Notice the first address is
blocked, but all recipients after that get accepted.
$ postconf -n
config_directory = /etc/postfix
smtpd_delay_reject = no
smtpd_recipient_restrictions = reject_unauth_destination,
reject_unlisted_sender
--> 220 babingka.lava.net ESMTP Postfix
<-- EHLO primo.lava.net
--> 250-babingka.lava.net
--> 250-PIPELINING
--> 250-SIZE 10240000
--> 250-VRFY
--> 250-ETRN
--> 250-ENHANCEDSTATUSCODES
--> 250-8BITMIME
--> 250 DSN
<-- MAIL FROM:<[EMAIL PROTECTED]>
--> 250 2.1.0 Ok
<-- RCPT TO:<[EMAIL PROTECTED]>
--> 550 5.1.0 <[EMAIL PROTECTED]>: Sender address rejected: User unknown in
local recipient table
<-- RCPT TO:<[EMAIL PROTECTED]>
--> 250 2.1.5 Ok
<-- RCPT TO:<[EMAIL PROTECTED]>
--> 250 2.1.5 Ok
<-- RCPT TO:<[EMAIL PROTECTED]>
--> 250 2.1.5 Ok
<-- QUIT
--> 221 2.0.0 Bye