From: Aniruddha on
Hi,

I have set up postfix with a mail_transport to Zarafa. To fix an '
Recipient address rejected: User unknown in local recipient table'
error I have to put an empty 'local_recipient_maps =' in postfix's
main.cf. I do wonder about the security implications of setting this
option. If I understand the documentation correctly it isn't wise to
set this option to empty. Is this correct? Besides the information
below I can't find much information about this option.Thanks in
advance!

Documentation
To turn off unknown local recipient rejects by the SMTP server, specify:

/etc/postfix/main.cf:
local_recipient_maps =

That is, an empty value. With this setting, the Postfix SMTP server
will not reject mail with "User unknown in local recipient table".
Don't do this on systems that receive mail directly from the Internet.
With today's worms and viruses, Postfix will become a backscatter
source: it accepts mail for non-existent recipients and then tries to
return that mail as "undeliverable" to the often forged sender
address.

http://www.postfix.org/LOCAL_RECIPIENT_README.html

From: Noel Jones on
On 5/12/2010 1:56 AM, Aniruddha wrote:
> Hi,
>
> I have set up postfix with a mail_transport to Zarafa. To fix an '
> Recipient address rejected: User unknown in local recipient table'
> error I have to put an empty 'local_recipient_maps =' in postfix's
> main.cf.

The correct solution is to point that parameter at a map
containing all your valid users.

Often this is caused by listing a virtual_mailbox_domain in
mydestination. Don't do that.


> I do wonder about the security implications of setting this
> option. If I understand the documentation correctly it isn't wise to
> set this option to empty. Is this correct? Besides the information
> below I can't find much information about this option.Thanks in
> advance!

Accepting mail for undeliverable recipients will cause postfix
to send non-delivery notices -- bounces -- to the reported
envelope sender.

The envelope sender on spam is frequently either a non-working
address or an innocent third party.

This has two results; your queue is filled with undeliverable
bounces, and you send bounces to innocent third parties. The
full queue will badly affect delivery of legit mail, and the
backscatter you send to innocent people will get you blacklisted.

Rejecting the mail during the initial SMTP session avoids
these problems.

-- Noel Jones

From: Nataraj on
Noel Jones wrote:
> On 5/12/2010 1:56 AM, Aniruddha wrote:
>> Hi,
>>
>> I have set up postfix with a mail_transport to Zarafa. To fix an '
>> Recipient address rejected: User unknown in local recipient table'
>> error I have to put an empty 'local_recipient_maps =' in postfix's
>> main.cf.
>
> The correct solution is to point that parameter at a map containing
> all your valid users.
>
> Often this is caused by listing a virtual_mailbox_domain in
> mydestination. Don't do that.
>
>
>> I do wonder about the security implications of setting this
>> option. If I understand the documentation correctly it isn't wise to
>> set this option to empty. Is this correct? Besides the information
>> below I can't find much information about this option.Thanks in
>> advance!
>
> Accepting mail for undeliverable recipients will cause postfix to send
> non-delivery notices -- bounces -- to the reported envelope sender.
>
> The envelope sender on spam is frequently either a non-working address
> or an innocent third party.
>
> This has two results; your queue is filled with undeliverable bounces,
> and you send bounces to innocent third parties. The full queue will
> badly affect delivery of legit mail, and the backscatter you send to
> innocent people will get you blacklisted.
>
> Rejecting the mail during the initial SMTP session avoids these problems.
>
> -- Noel Jones
Postfix provides many different mechanisms to access different formats
of tables and/or define policy agents that can check things like this,
even if the database is part of another software package. For example, I
have my user database in the vpostmaster package and my
smtpd_recipient_restrictions include (directly after the
permit_sasl_authenticated and permit_mynetworks),
check_recipient_access proxy:pgsql:/etc/postfix/vpm_recipient_access

The file vpm_recipient_access contains a single rather complex nested
postgres sql statement which checks the data base and verifies both the
existance of the domain and username on the local mail server. It then
returns DUNNO if the recipient address is valid or "REJECT No such
domain %d" or "REJECT No such user %u in domain %d" You could also, of
course, implement this with simple berkely db files, or by writing a
policy agent.

Previously the vpostmaster policy daemon was validating the recipients,
however I moved this into the postfix sql interface because it is much
faster and causes sooner rejection of bad reciepients in the smtpd
session, increasing the performance of my mail server.

Nataraj

Nataraj

From: Aniruddha on
On Thu, May 13, 2010 at 8:19 PM, Nataraj <incoming-postfix(a)rjl.com> wrote:
> Noel Jones wrote:
>>
>> On 5/12/2010 1:56 AM, Aniruddha wrote:
>>>
>>> Hi,
>>>
>>> I have set up postfix with a mail_transport to Zarafa. To fix an '
>>> Recipient address rejected: User unknown in local recipient table'
>>> error I have to put an empty  'local_recipient_maps ='  in postfix's
>>> main.cf.
>>
>> The correct solution is to point that parameter at a map containing all
>> your valid users.
>>
>> Often this is caused by listing a virtual_mailbox_domain in mydestination.
>>  Don't do that.
>>
>>
>>> I do wonder about the security implications of setting this
>>> option. If I understand the documentation correctly it isn't wise to
>>> set this option to empty. Is this correct? Besides the information
>>> below I can't find much information about this option.Thanks in
>>> advance!
>>
>> Accepting mail for undeliverable recipients will cause postfix to send
>> non-delivery notices -- bounces -- to the reported envelope sender.
>>
>> The envelope sender on spam is frequently either a non-working address or
>> an innocent third party.
>>
>> This has two results; your queue is filled with undeliverable bounces, and
>> you send bounces to innocent third parties.  The full queue will badly
>> affect delivery of legit mail, and the backscatter you send to innocent
>> people will get you blacklisted.
>>
>> Rejecting the mail during the initial SMTP session avoids these problems..
>>
>>  -- Noel Jones
>
> Postfix provides many different mechanisms to access different formats of
> tables and/or define policy agents that can check things like this, even if
> the database is part of another software package. For example, I have my
> user database in the vpostmaster package and my smtpd_recipient_restrictions
> include (directly after the permit_sasl_authenticated and
> permit_mynetworks),
>       check_recipient_access proxy:pgsql:/etc/postfix/vpm_recipient_access
>
> The file vpm_recipient_access contains a single rather complex  nested
> postgres sql statement which checks the data base and verifies both the
> existance of the domain and username on the local mail server. It then
> returns DUNNO if the recipient address is valid or "REJECT No such domain
> %d" or "REJECT No such user %u in domain %d" You could also, of course,
> implement this with simple berkely db files, or by writing a policy agent..
>
> Previously the vpostmaster policy daemon was validating the recipients,
> however I moved this into the postfix sql interface because it is much
> faster and causes sooner rejection of bad reciepients in the smtpd session,
> increasing the performance of my mail server.
>
> Nataraj


Thanks for the help! I understand that the main risk of setting
'local_recipient_maps =' to empty is 'bouncing unsolicited messages
back to (spoofed) domains which gets you blacklisted. In the end I
fixed this by pointing postfix to the mysql database where the user
information is stored. Thanks again.