Let postfix only accept mails for addresses in Exchange
Problem
- I use postfix as a backup for my Exchange. I want postfix to only accept mail for recipients which exist in Exchange.
Requirements
- I assume you followed my first tutorial here
- Existing postfix installation (mine is on debian)
- Existing Exchange (2010 or 2013) installation
Step 1
- Create the following PowerShell script on your Exchange server:
$ExcludeUsers = @("Administrator", "user1") Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 # Get all valid recipients, excludes DiscoverySearchMailbox and every user alias included in ExcludeUsers $ValidRecipients = Get-Mailbox | where {$_.Alias -NotLike "DiscoverySearchMailbox*"} | where {$_.Alias -NotIn $ExcludeUsers} foreach ($Address in $ValidRecipients.EmailAddresses) {[string]::Format("{0}`tOK", $Address.AddressString)}
- Run the script and save the output to a file like this:
./script.ps > output.txt
Step 2
- Connect to yout server running postfix
- Upload the scriptoutput to /etc/postfix/relay_recipients
- Add the following lines to your /etc/postfix/main.cf:
relay_recipient_maps = hash:/etc/postfix/relay_recipients show_user_unknown_table_name = no
- Reload or restart postfix
Step 3+
- If your addresses change (added new or removed some) you have to repeat step 1 and 2