IBM cloud port 25 Sendgrid email services

IBM cloud offers sendgrid email delivery services for your SMTP TCP port 25 applications hosted on IBM cloud. This is because the most common port for SMTP, the port 25 for outbound connections for sending email is not allowed on IBM cloud and several other cloud providers, this is due to too many abuse cases in the past – IBM Cloud says – As of 28 October 2015, IBM Cloud no longer allows outbound connections through TCP port 25 (SMTP) on new accounts:-

On IBM Cloud I am running an exchange 2016 test environment and to be able to perform outbound SMTP connections, I need to have port 25 open, as well as other SMTP ports. We now know IBM cloud blocks outbound port 25, and offers sendgrid email service as an alternative.

I will show you how to setup sendgrid email services, and configure your send connector on Exchange to use sendgrid as a smarthost, to allow you to relay email to sendgrid and from sendgrid it will send your email externally using port 25. You can have a free sendgrid account from IBM Cloud if you plan to send less than 25,000 emails per month. If you need to send more, here are the pricing options:-

  1. To begin, go over to your IBM cloud dashboard, expand the navigation menu on the top left

expand the pin, classic infrastructure and scroll down to services – click open Email delivery

you will see the button to order email delivery

2. Choose the option for free package if you plan to send less than 25,000 a month or any of the pricing options depending on your need as i previously showed in above screenshot. Once done and your service is online, it will appear under Email delivery service with options to view your account details and settings.


Click the check mark button to Enable SMTP, and then expand the Actions arrow to show more options:-

4. We can go directly to sendgrid access portal, by clicking on it:-

Configure Exchange 2016 to use sendgrid

5. To configure your email application on IBM Cloud to use sendgrid as smarthost for SMTP relay, from the sendgrid dashboard, on the left side, click on Email API and then >> Integration guide >> SMTP Relay

6. Follow the steps to name and create and API key, take note of your API key string which will also be your password, so, username and password, server name. As for ports, since we cannot use port 25 on IBM cloud, we can use port 465 or 587 to relay messages to sendgrid. leave this dashboard open we will come back later once exchange side is done.

7. Login to your exchange admin center EAC, go to mail flow >> send connectors, create a new send connector for sendgrid, click + to add new send connector :-

name your send connector, type – custom,

Under network settings, select route mail through smart hosts, click on the + to add the sendgrid server name:-

Add , the servername that we copied from the sendgrid dashboard, click on next

Next, select Basic authentication, choose offer basic authentication only after starting TLS for security, enter your username and password you copied from the sendgrid dashboard earlier

Click the + to add your source server – your exchange server that will be responsible for sending mail to sendgrid and once done, click finish to create your new send connector, which will be visible in your EAC send connectors. Make sure it is enabled.

8. By default your new exchange send connector will use port 25, so we have to change this to port 587, to do this, we need to run below command from exchange management shell

Set-sendconnector -identity “name of your newly created send connector” -Port 587

Once done, you can do Restart-service MSExchangetransport to make sure your changes take effect immediately.

You are done. Go over to your sendgrid dashboard that we left open and do the final steps, tick i’ve updated my settings and verify.

Test sending email from Exchange.

Now all your outbound emails from Exchange will use your new send connector to relay messages to sendgrid and from sendgrid it will be sent to your recipients. From your sendgrid dashboard you can view all the statistics for your messages. Also you can study the message header of your email to see how the message was routed to external recipient.

For all other SMTP applications other than Exchange, you can refer to sendgrid documentation on how to configure this for your application –

Thanks, I hope you found this useful, feel free to comment and add suggestions.

Winmail.dat attachment

Content-Type: application/ms-tnef; name="winmail.dat"

Winmail.dat attachment – One of my user sending emails from Outlook application and Exchange online office365 complains the recipient is receiving a winmail.dat attachment in every email she sends to one specific recipient domain, however, the same email is received by yahoo and other email domain without any winmail.dat attachment. Sender has tried setting her outlook to ensure ‘only plain text’ is used when composing email but still recipient is getting winmail.dat. So why is this one specific recipient domain getting winmail.dat attachments even when outlook has been set to use only plain text?


1. Make sure to get more details if you can about the recipient domain mail system, for me I found out from their website that they recommend ‘plain text’ emails over html or rich text, as their mail system can have problems decoding other mail formats.

2. Check the message email headers of your sender, you can see the content-type showing “winmail.dat” instead of content-type “plain text” :-

Content-type in Message header of email sent that contains winmail.dat:-

Content-Type: application/ms-tnef; name="winmail.dat"

Content-type in Message header of email sent that uses plain text and does not contain winmail.dat:-

Content-Type: text/plain; charset="us-ascii"

3. What is winmail.dat?

Outlook and Exchange uses the Transport Neutral Encapsulation Format (TNEF) format for your emails that contains rich text format (RTF), RTF files offer some formatting features like bold, italic, underline, bullets, different fonts, and text justification. Messaging systems that aren’t based on Microsoft Exchange may be unable to interpret messages that use this rich text format. If the recipient’s messaging system can’t process this format, a file attachment that’s called Winmail.dat is added to the message.

Note: By default, email messages that are sent from Exchange Online in Office 365 use the Transport Neutral Encapsulation Format (TNEF) format

4. If your recipient domain email system cannot decipher TNEF and a winmail.dat is received, then Office 365 admins can use Exchange online PowerShell to change the message format to prevent the Winmail.dat attachment from being sent to those external recipients. To do this:-

Connect to Office365 Exchange Online using Remote PowerShell

  1. Run the following Windows PowerShell commands to configure the message format as plain Text Only for a specific external recipient:
Set-MailContact <ExternalEmailAddress or GUID> -UseMapiRichTextFormat Never
Set-MailContact -Identity <ExternalEmailAddress or GUID> -UsePreferMessageFormat $True 

Run the following Windows PowerShell command to confirm that the message format was applied:-

Get-MailContact | Select <ExternalEmailAddress or GUID> | Select UseMapiRichTextFormat

2. To Change the message format for all messages that are sent to a specific domain
This method requires you to create a remote domain object in Exchange Online to control how messages are sent to external domains. You can also use this method to change the message format for messages that are sent to coexistence domains.

Connect to Office365 Exchange Online using Remote PowerShell

Run the following Windows PowerShell command to create a remote domain for an external domain:

New-RemoteDomain -Name <Name of External Domain> -DomainName 

Run the following Windows PowerShell command to prevent messages from being sent in rich text format:

Set-RemoteDomain -Identity <Name of Domain> -TNEFEnabled $false 

Run the following WindowsPowerShell command to check that the setting was applied:

Get-RemoteDomain -Identity <Name of Domain>| Select TNEFEnabled 

More info on Microsoft docs –