Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I've googled for quite a while now and can't find a good explanation for the following issue.

I receive the following error when trieing to send a mail to user@server.example.de

Jul 23 15:24:30 vslpam10 postfix/smtpd[7970]: connect from relay.subdomain.example.de[<IP>]
Jul 23 15:24:30 vslpam10 postfix/smtpd[7970]: B08A1C4B0: client=relay.subdomain.example.de[<IP>]
Jul 23 15:24:30 vslpam10 postfix/cleanup[7973]: B08A1C4B0: message-id=<645638F41810994799AADD85BDB1C38F65866EEE@somedomain.example.de>
Jul 23 15:24:30 vslpam10 postfix/smtpd[7970]: disconnect from relay.subdomain.example.de[<IP>]
Jul 23 15:24:30 vslpam10 postfix/qmgr[7943]: B08A1C4B0: from=<sender@example.de>, size=14053, nrcpt=1 (queue active)
Jul 23 15:24:30 vslpam10 postfix/smtp[7974]: B08A1C4B0: to=<user@server.example.de>, relay=relay.subdomain.example.de[<IP>]:25, delay=0.06, delays=0.03/0.01/0/0.02, dsn=5.1.1, status=bounced (host relay.subdomain.example.de[<IP>] said: 550 5.1.1 <user@server.example.de>: Recipient address rejected: User unknown in local recipient table (in reply to RCPT TO command))
Jul 23 15:24:30 vslpam10 postfix/cleanup[7973]: BE364C55B: message-id=<20120723132430.BE364C55B@server.example.de>
Jul 23 15:24:30 vslpam10 postfix/bounce[7976]: B08A1C4B0: sender non-delivery notification: BE364C55B
Jul 23 15:24:30 vslpam10 postfix/qmgr[7943]: BE364C55B: from=<>, size=16447, nrcpt=1 (queue active)
Jul 23 15:24:30 vslpam10 postfix/qmgr[7943]: B08A1C4B0: removed
Jul 23 15:24:30 vslpam10 postfix/smtp[7974]: BE364C55B: to=<sender@example.de>, relay=relay.subdomain.example.de[<IP>]:25, delay=0.02, delays=0/0/0/0.01, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as C124512C5D4)
Jul 23 15:24:30 vslpam10 postfix/qmgr[7943]: BE364C55B: removed

The User does exist however:

finger user
Login: user                          Name: technical User

Postconf shows the following

(postconf -d; postconf -d; postconf -n; ) | sort | uniq -u
alias_maps = hash:/etc/aliases                                                                                                                            allow_mail_to_commands = alias,forward,include
allow_mail_to_files = alias,forward,include
biff = no
canonical_maps = hash:/etc/postfix/canonical
daemon_directory = /usr/lib/postfix
html_directory = /usr/share/doc/packages/postfix/html
inet_protocols = all
local_recipient_maps = unix:passwd.byname $alias_maps
mailbox_size_limit = 0
manpage_directory = /usr/share/man
masquerade_exceptions = root
myhostname = server.example.de
mynetworks = <IPs>
readme_directory = /usr/share/doc/packages/postfix/README_FILES
relocated_maps = hash:/etc/postfix/relocated
sample_directory = /usr/share/doc/packages/postfix/samples
sender_canonical_maps = hash:/etc/postfix/sender_canonical
setgid_group = maildrop
smtpd_sender_restrictions = hash:/etc/postfix/access
transport_maps = hash:/etc/postfix/transport
virtual_alias_domains = hash:/etc/postfix/virtual
virtual_alias_maps = hash:/etc/postfix/virtual

Has anybody got an explanation for this behaviour?

Best regards

share|improve this question
Why on earth are you setting so many (useless) default values in main.cf? Please provide the output of (postconf -d; postconf -d; postconf -n; ) | sort | uniq -u so we can see what you really did. –  adaptr Jul 23 '12 at 13:59
Thanks for the info. –  Guardian Jul 23 '12 at 14:08
And now the real, complete log from the rejection, please :) –  adaptr Jul 23 '12 at 14:09
And done also ;-). –  Guardian Jul 23 '12 at 14:18
Just to be sure, the user exists on relay.subdomain.example.de since that is where the mail is getting delivered to? –  becomingwisest Jul 23 '12 at 14:40

1 Answer 1

up vote 3 down vote accepted

If postfix is configured to accept mail for a specific destination (as set in mydestination), there must also exist a valid alias or mailbox entry for that user.

Instead, you wish to relay this mail to another system - so the user does not exist.

There are two solutions to this, a bad one and a good one.

The bad solution is simple to implement: switch relay.example.com to relay_domains, and make sure relay_recipient_maps is set to empty:

relay_domains = relay.example.com
relay_recipient_maps = 

This means that all recipients for relay.example.com will be accepted, so you will receive plenty of spam.

The right way to do this is to set relay_recipient_maps to a list of valid addresses in the relay domain.

EDIT: drat, I forgot that you said the user does exist.

In that case, here is what happens: you have not added the relay. subdomain to mydestination, and mydestination (and ONLY mydestination) does not obey parent_domain_matches_subdomains, specifically.

So you could solve it by adding the relay. subdomain to mydestination explicitly, assuming the relay. domain is transported(5) away before being locally delivered.

share|improve this answer
Works like a charm. Thank you very much! –  Guardian Jul 24 '12 at 11:30

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.