I want to configure postfix to only send mail to addresses in a whitelist. I have tried to use smtpd_recipient_restrictions in main.cf like so:

smtpd_recipient_restrictions =
    check_recipient_access hash:/path/to/whitelist

The whitelist file is of the format

address@example.com    OK
another@example.com    OK

And then translated into a hash with the postmap command.

Still, the relay is sending mail to non-whitelisted addresses. What am I missing?

Edit: I am sending this mail via the sendmail command, which apparently bypasses the smptd restrictions. Is there a way to deal with this?

Edit 2/The rest of the story: I spent quite a bit of time trying to make sendmail send via SMTP only to discover the command I was using was not sendmail, but postfix's sendmail compatibility interface which mimics functionality but can't be told to use SMTP as far as I could tell.

84104's solution worked perfectly though.

  • You need to provide the output of postconf -n, so we can see what's real. – adaptr Aug 23 '12 at 12:22

You told postfix to reject some types of mail and accept some other mail. It's possible some messages are not caught be either filter in which case they are permitted. I think you want to tell it to accept (check) only list and reject all else.

smtpd_recipient_restrictions =
    check_recipient_access hash:/path/to/whitelist

in response to edit:
sendmail(1) uses postdrop(1) not smtpd(8) One way to achieve something like what you're looking for is to manipulate transport(5)'s behavior.

    transport_maps = hash:/etc/postfix/transport

    address1@domain.tld :
    address2@domain.tld :
    senderaddress@yourdomain.tld :
    * error: Recipient not whitelisted.

Note: If you don't include the sender's address in the transport map it will be unable to receive bounce messages.

  • That makes sense but does not seem to be my principle problem. If I change it to smtpd_recipient_restrictions = reject, it still delivers the mail. – puffenstuff Aug 21 '12 at 21:31
  • Using the transport method build the hash map with sudo postmap /etc/postfix/transport. – nnutter Nov 2 '16 at 22:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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