How to discard mails sent from a specific local user to external addresses

postfix

How can I configure Postfix to silently drop / discard mails that were sent from one of my users to an external address?

I'm already able to discard all mails to external addresses using the following transport_maps

example.com      :
*          discard:

However I want to apply this rule to one user within my Postfix server only.

Also mails addressed to external and local addresses should get deliverd to the local users only.

Why do I need this?

The company I work at thinks that an intern should not sent mails directly to the customer. So the intern would send a mail using the customers address for to and adding his supervisor into the cc. Then Postfix shoud only deliver the mail to the supervisor so that he can check and sent the mail to the customer without searching for the customers address.

Best Answer

To do what OP need, we need a check at transport level, which turn out to be simple.

  1. Add following line to /etc/postfix/main.cf

    sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transport_maps
    
  2. Create /etc/postfix/sender_transport_maps as follow

    user@local.domain   discard
    
  3. Create postfix map file and restart postfix

    cd /etc/postfix
    postmap sender_transport_maps
    service postfix restart
    

This method works because postfix only use transport map for out-bound mail. In this case, instead of using a normal smtp service (smtp:), we use postfix DISCARD service.

Related Question