Turns out our email server's weren't allowing it relay. So we needed to add it's IP to the RemoteIPRanges parameter and as Paul Cunningham points out this can be tricky.
function Add-IPToSMTPRelay{ <#
Add-IPToSMTPRelay
.SYNOPSIS
Adds an IP address to the allow
anonymous SMTP relay Receive connector on TMAIL
.DESCRIPTION
You will need to know your receive connectors name... use get-recieveconnector We only use one so it's been hard coded into the funtion, this could be parameterised if you need
.PARAMETER
IP IP Address to add to allowed anonymous SMTP relay
.EXAMPLE
Add-IPToSMTPRelay 192.168.1.1
#>
[CmdletBinding()] param ( [Parameter(mandatory=$true,ValueFromPipeline=$true)] [ipaddress]$ip ) process{ $remoteipranges = (Get-ReceiveConnector "smtp relays").remoteipranges $remoteipranges += ($ip).ToString() Set-ReceiveConnector "smtp relays" -RemoteIPRanges $remoteipranges } } |
You may be saying... "WOAH WOAH WOAH this looks different to your usual posts! What's all this function param process stuff?"
Well as you can see we wrapped up the powershell in a Function. The Comment block at the top is the help. The Param block defines any parameters in this case we've just got $IP. The process block is what actually happens and would be what we'd normally post.
This allows us to embed the function in a module and then stick the module in our powershell profile so it's always available!
This is far better than digging around in a scripts folder we'll dig into setting up a module in the next few weeks.