Configuring Exchange’s MaxMessageSize

The instructions below explain how to change Exchange’s maximum email message size.  Microsoft’s best practices recommends having the send and receive connectors configured with the same sizes.  In the example below I’m configuring Exchange to allow a max email size of 21MB.

  1. Let’s start at the top by changing the setting under Organization Configuration, Hub Transport, Global Settings.  Then modify the maximum receive and send size.  (Image Below)

    Powershell version to step 1 is:
    To view current settings: Get-TransportConfig |Ft MaxSendSize, MaxReceiveSize
    To modify the settings: Get-TransportConfig | Set-TransportConfig -MaxSendSize 21MB -MaxReceiveSize 21MB
  2. Next is to configure all of your send connectors with 21MB.  The connectors reside under the Organization Configuration, Hub Transport, Send Connectors.  The image below shows a total of 4 connectors that will be modified.

    Powershell version to step 2 is:
    To view current settings: Get-SendConnector | ft Name, MaxMessageSize
    To modify the settings: Get-SendConnector | Set-SendConnector -MaxmessageSize 21MB
  3. Your next stop will be the Receive Connectors located at Organization Configuration, Server Configuration, Hub Transport.  Make sure to change the settings on all receive connectors you may have.

    Powershell version to step 3 is:
    To view current settings: Get-ReceiveConnector | ft Name, MaxMessageSize
    To modify the settings: Get-ReceiveConnector | Set-ReceiveConnector -MaxmessageSize 21MB
  4. You may or may not need to configure your employees Message Size Restrictions if you have a policy in place for that.  In my case, I don’t have to change any settings because my employees size restrictions are applied from the items listed above.
  5. The following setting needs to be done on all of your Hub Transports servers.  Modify the web.config file to match 21MB settings listed above.  The web.config file can be found at c:\Program Files\Microsoft\Exchange Server\ClientAccess\Owa\web.config.  The line you’re modify is:
    <system.web>
      <httpRuntime maxRequestLength=”21504” />
  6. The “Microsoft Exchange Transport” service needs to be restarted after modifying the web.config file.  By restarting the service you force the settings adjusted on step 5.  Please note, by restarting this service your Hub Transport will stop routing email until the service has started again.  Your employees should not notice the short outage but you’ve been warned.
    You can use the PowerShell CMD to restart the service:restart-service -Name “MSExchangeTransport”
  7. Test the settings configured above by sending an email with an attachment of 21MB to confirm everything is working as planned.  Below is a nice  command to create a txt file of any size:

    fsutil file createnew
    Example:
    fsutil file createnew c:\20MBfile\20MBfile.txt 20971520

By using PowerShell you can accomplish the same results in less time.  If you notice I didn’t give a PowerShell command for step 4 because in my situation I didn’t require it.  However, the command to do step 4 is below.  BUT USE WITH CAUTION!

This command will set every employee’s setting to 21MB:

Get-MailBox | Set-Mailbox -MaxSendSize 21MB -MaxReceiveSize 21MB

This command will set only the employee you choose:

Get-MailBox  | ft Name, MaxSendSize, MaxReceiveSize
Set-MailBox <employees’s email> -MaxSendSize 21MB -MaxReceiveSize 21MB

This command will set the every employee’s setting to unlimited.  Note, by setting it to unlimited the employee will be force to comply with the setting configured in steps 1 thru 3.

Get-MailBox | Set-Mailbox -MaxSendSize unlimited -MaxReceiveSize unlimited

AS ALWAYS, TEST EVERY CHANGE BEFORE MODIFYING YOUR PRODUCTION ENVIRONMENT!


Exchange Performance Monitor Counters

The best way to determine your Exchange server’s performance is to capture the data over a period of time.  By doing this you will be able to determine:

  1. How much emails are sent / received.
  2. The busiest time throughout the day for sending and receiving emails.
  3. If the server’s hardware is under or over utilized.
  4. Email storage growth per day or month.

An example of the data I collect on a daily bases tells me my current company processes 33,000 emails per day.  The peak time for sending emails is at 9:40am to 9:55am and then again at 3pm to 3:30pm.  The peak time for email’s received is 9 to 10am.

This list can go on and on with the possibility.  Anyhow, below are links to Microsoft website with the details on what to configure.  Enjoy!

Monitoring Common Counters

Monitoring Mailbox Servers

Monitoring Hub Transport Servers

Monitoring Client Access Servers

Monitoring Unified Messaging Servers

Exchange 2010 Common Counters


Wiping a Mobile Phone using EMS

To Wipe an Exchange active sync device please follow the instructions listed below:

  1. The first step is to get the identity of the device you are going to wipe.  The command listed below will retrieve that information:
    Get-ActiveSyncDeviceStatistics -Mailbox <employees name>
  2. Please make a note of the device ID.  Image below:
  3. Now lets wipe the device using the following cmd:
    Clear-ActiveSyncDeviceStatistics -Identity <Enter the identity from line 2 listed above>
    Example:
    Clear-ActiveSyncDeviceStatistics -Identity mike.tirado@example.com\AirSync-TestActiveSyncConnectivity-1380560068
  4. Let’s confirm that the wipe was successful by typing:
    Get-ActiveSyncDeviceStatistics -Mailbox <employees name>
  5. To remove the device from the employees profile type:
    Remove-ActiveSyncDevice -Identity <Enter the identity from line 2 listed above>

Hyper-V Error when creating a new vSwitch

When creating a new Hyper-V virtual switch (vSwitch) you receive an error “Error Applying New Virtual Network Changes…Setup switch failed…Cannot bind….because it is already bound to another virtual network.”

 This error can occur if the vSwitch has already been configured with that physical network adapter or for some reason (only know to the Microsoft Gods) the Microsoft Virtual Network Switch Protocol has been checked.

First, verify that vSwitch is not already configured in Hyper-V.  If it’s not in use then uncheck the protocol and reconfigure the vSwitch (image above).  But wait; what about if you’re using Hyper-V core?  Not so easy because of the lack of GUI.  Let’s begin:

  1. We need to find the NIC’s GUID that is giving the error by typing: WMIC NICCONFIG GET Description,SettingID
  2. In my case its the HP Network Teaming NIC highlighted in Yellow above.  We need to download Microsoft’s “Network Virtual Service Provider Bind (NVSPBIND)” unity and extract the files on the Hyper-v srv’s c:\windows\system32 directory.  “The purpose of nvspbind is to disable and enable protocol bindings from the command line when operating in the parent partition for Hyper-V in a server core environment.”
  3. Then from a cmd prompt type: nvspbind.exe -u <GUID of the NIC w/ the issue>
  4. You should be good to configure the vSwitch using Microsoft’s SCVMM or Hyper-V manager.  Note: These are the only two support ways of configuring a Hyper-V vSwitch.  Also, Microsoft does provide a document if you require more information on how to use nvspbind.exe.  The doc can be located on the system32 directory as part of the extraction.

Hyper-V Core | HP Nic Teaming

Setting up HP Nic teaming on the GUI version of Hyper-V or Windows server is pretty straight forward.  However, the same can not be said when trying to accomplish the task using Hyper-V Core.  Well, unless you’re following the instructions listed below.  But first you’ll need a server that already has HP NIC teaming configured.  Preferably an identical server with the same amount of NICs configured the way you would like Hyper-V core to be configured.

  1. Log onto a server that already has HP teaming configured; open a command prompt and type CQNICCMD /S <filename>.xml
  2. Modify the file if additional NICs need to be added or remove.  HP recommends checking the file for errors if it has been modified by typing CQNICCMD /P <filename>.xml
  3. Copy the file to the Hyper-V Core server and then type in the cmd prompt: CQNICCMD /C <filename>.xml
  4. Check the log file for errors located at: \cpqsystem\log\cpqteam.log.
  5. Test the NIC teaming and verify the configuration was successful.

Below is a copy of a xml file output in case you don’t have a server which can be used to export the xml file.  However, I’m not responsible for issue you may encounter.  Make sure to add or remove the NICs in the file to mimmic your server configuration.  Also, TEST BEFORE PLACING YOUR SERVER IN PRODUCTION.  ONCE AGAIN, I’M NOT RESPONSIBLE FOR ANY ERRORS YOU MAY ENCOUNTER!  Copy the below xml information and paste it on a file with an xml extension:

<?xml version=”1.0″ encoding=”ISO-8859-1″?>

<teamingconfig>

  <!– The comment lines in this file make it convenient   –>
  <!– to reference <nic>, <team>, and <vlan> elements     –>
  <!– within the file.  It is recommended that these      –>
  <!– comment lines remain unchanged if the user edits    –>
  <!– the file.                                           –>

  <!–                        –>
  <!–     Version Data       –>
  <!–                        –>

  <version UtilityVersion=’9.70.0.16′ ScriptVersion=’3.1’/>

  <!–                        –>
  <!–      Adapter Data      –>
  <!–                        –>

  <!– <nic> element 1 –>
  <nic>
    <property id=’SpeedDuplex’ value=’Auto/Auto’/>
    <property id=’iSCSIEnabled’ value=’0’/>
    <property id=’PriorityVLANTag’ value=’Priority and VLAN Enabled’/>
    <property id=’JumboPacket’ value=’1514 Bytes’/>
    <property id=’FlowControl’ value=’Disable’/>
    <property id=’WireSpeed’ value=’1’/>
    <property id=’TOEEnabled’ value=’1’/>
    <property id=’RSSEnabled’ value=’1’/>
    <property id=’OptimizationMethod’ value=’L2 and L4’/>
    <property id=’TargetInterruptsPerSecond’ value=’4425’/>
    <property id=’IPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPUDPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’LSOV1IPv4′ value=’1’/>
    <property id=’LSOV2IPv4′ value=’1’/>
    <property id=’TransmitBuffers’ value=’1500’/>
    <property id=’NetworkAddress’ value=” />
    <property id=’iSCSIVlanId’ value=’0’/>
    <property id=’iSCSIVlanName’ value=”/>
    <property id=’iSCSIPacketPriority’ value=’Disabled’/>
    <property id=’iSCSIDHCPEnabled’ value=’Enabled’/>
    <property id=’iSCSIIPAddress’ value=’0.0.0.0’/>
    <property id=’iSCSISubnetMask’ value=’0.0.0.0’/>
    <property id=’iSCSIGateway’ value=’0.0.0.0’/>
    <property id=’iSCSILAA’ value=” />
  </nic>

  <!– <nic> element 2 –>
  <nic>
    <property id=’SpeedDuplex’ value=’Auto/Auto’/>
    <property id=’iSCSIEnabled’ value=’0’/>
    <property id=’PriorityVLANTag’ value=’Priority and VLAN Enabled’/>
    <property id=’JumboPacket’ value=’1514 Bytes’/>
    <property id=’FlowControl’ value=’Disable’/>
    <property id=’WireSpeed’ value=’1’/>
    <property id=’TOEEnabled’ value=’1’/>
    <property id=’RSSEnabled’ value=’1’/>
    <property id=’OptimizationMethod’ value=’L2 and L4’/>
    <property id=’TargetInterruptsPerSecond’ value=’4425’/>
    <property id=’IPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPUDPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’LSOV1IPv4′ value=’1’/>
    <property id=’LSOV2IPv4′ value=’1’/>
    <property id=’TransmitBuffers’ value=’1500’/>
    <property id=’NetworkAddress’ value=” />
    <property id=’iSCSIVlanId’ value=’0’/>
    <property id=’iSCSIVlanName’ value=”/>
    <property id=’iSCSIPacketPriority’ value=’Disabled’/>
    <property id=’iSCSIDHCPEnabled’ value=’Enabled’/>
    <property id=’iSCSIIPAddress’ value=’0.0.0.0’/>
    <property id=’iSCSISubnetMask’ value=’0.0.0.0’/>
    <property id=’iSCSIGateway’ value=’0.0.0.0’/>
    <property id=’iSCSILAA’ value=” />
  </nic>

  <!– <nic> element 3 –>
  <nic>
    <property id=’SpeedDuplex’ value=’Auto/Auto’/>
    <property id=’PriorityVLANTag’ value=’Priority and VLAN Enabled’/>
    <property id=’JumboPacket’ value=’1514 Bytes’/>
    <property id=’EnablePME’ value=’Disable’/>
    <property id=’WakeOn’ value=’OS Controlled’/>
    <property id=’MasterSlave’ value=’Auto Detect’/>
    <property id=’SpdEnabled’ value=’H/W Default’/>
    <property id=’WakeOnLink’ value=’Disable’/>
    <property id=’FlowControl’ value=’Rx/Tx Enable’/>
    <property id=’RSSEnabled’ value=’0’/>
    <property id=’IPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’LSOV2IPv4′ value=’1’/>
    <property id=’LSOV2IPv6′ value=’1’/>
    <property id=’ReceiveBuffers’ value=’256’/>
    <property id=’TransmitBuffers’ value=’512’/>
    <property id=’PreferredPrimaryRanking’ value=’0’/>
    <property id=’DualChannelGroup’ value=’0’/>
    <property id=’ConfiguredPortCost’ value=’0’/>
  </nic>

  <!– <nic> element 4 –>
  <nic>
    <property id=’SpeedDuplex’ value=’Auto/Auto’/>
    <property id=’PriorityVLANTag’ value=’Priority and VLAN Enabled’/>
    <property id=’JumboPacket’ value=’1514 Bytes’/>
    <property id=’WakeOn’ value=’Disable’/>
    <property id=’MasterSlave’ value=’Auto Detect’/>
    <property id=’SpdEnabled’ value=’H/W Default’/>
    <property id=’FlowControl’ value=’Rx/Tx Enable’/>
    <property id=’RSSEnabled’ value=’0’/>
    <property id=’IPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’LSOV2IPv4′ value=’1’/>
    <property id=’LSOV2IPv6′ value=’1’/>
    <property id=’ReceiveBuffers’ value=’256’/>
    <property id=’TransmitBuffers’ value=’512’/>
    <property id=’PreferredPrimaryRanking’ value=’1’/>
    <property id=’DualChannelGroup’ value=’0’/>
    <property id=’ConfiguredPortCost’ value=’0’/>
  </nic>

  <!– <nic> element 5 –>
  <nic>
    <property id=’SpeedDuplex’ value=’Auto/Auto’/>
    <property id=’PriorityVLANTag’ value=’Priority and VLAN Enabled’/>
    <property id=’JumboPacket’ value=’1514 Bytes’/>
    <property id=’EnablePME’ value=’Disable’/>
    <property id=’WakeOn’ value=’OS Controlled’/>
    <property id=’MasterSlave’ value=’Auto Detect’/>
    <property id=’SpdEnabled’ value=’H/W Default’/>
    <property id=’WakeOnLink’ value=’Disable’/>
    <property id=’FlowControl’ value=’Rx/Tx Enable’/>
    <property id=’RSSEnabled’ value=’0’/>
    <property id=’IPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’LSOV2IPv4′ value=’1’/>
    <property id=’LSOV2IPv6′ value=’1’/>
    <property id=’ReceiveBuffers’ value=’256’/>
    <property id=’TransmitBuffers’ value=’512’/>
    <property id=’PreferredPrimaryRanking’ value=’2’/>
    <property id=’DualChannelGroup’ value=’0’/>
    <property id=’ConfiguredPortCost’ value=’0’/>
  </nic>

  <!– <nic> element 6 –>
  <nic>
    <property id=’SpeedDuplex’ value=’Auto/Auto’/>
    <property id=’PriorityVLANTag’ value=’Priority and VLAN Enabled’/>
    <property id=’JumboPacket’ value=’1514 Bytes’/>
    <property id=’WakeOn’ value=’Disable’/>
    <property id=’MasterSlave’ value=’Auto Detect’/>
    <property id=’SpdEnabled’ value=’H/W Default’/>
    <property id=’FlowControl’ value=’Rx/Tx Enable’/>
    <property id=’RSSEnabled’ value=’0’/>
    <property id=’IPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’LSOV2IPv4′ value=’1’/>
    <property id=’LSOV2IPv6′ value=’1’/>
    <property id=’ReceiveBuffers’ value=’256’/>
    <property id=’TransmitBuffers’ value=’512’/>
    <property id=’PreferredPrimaryRanking’ value=’3’/>
    <property id=’DualChannelGroup’ value=’0’/>
    <property id=’ConfiguredPortCost’ value=’0’/>
  </nic>

  <!– <nic> element 7 –>
  <nic>
    <property id=’SpeedDuplex’ value=’Auto/Auto’/>
    <property id=’PriorityVLANTag’ value=’Priority and VLAN Enabled’/>
    <property id=’JumboPacket’ value=’1514 Bytes’/>
    <property id=’WakeOn’ value=’Disable’/>
    <property id=’MasterSlave’ value=’Auto Detect’/>
    <property id=’SpdEnabled’ value=’H/W Default’/>
    <property id=’FlowControl’ value=’Rx/Tx Enable’/>
    <property id=’RSSEnabled’ value=’0’/>
    <property id=’IPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’LSOV2IPv4′ value=’1’/>
    <property id=’LSOV2IPv6′ value=’1’/>
    <property id=’ReceiveBuffers’ value=’256’/>
    <property id=’TransmitBuffers’ value=’512’/>
    <property id=’PreferredPrimaryRanking’ value=’3’/>
    <property id=’DualChannelGroup’ value=’0’/>
    <property id=’ConfiguredPortCost’ value=’0’/>
  </nic>

  <!– <nic> element 8 –>
  <nic>
    <property id=’SpeedDuplex’ value=’Auto/Auto’/>
    <property id=’PriorityVLANTag’ value=’Priority and VLAN Enabled’/>
    <property id=’JumboPacket’ value=’1514 Bytes’/>
    <property id=’WakeOn’ value=’Disable’/>
    <property id=’MasterSlave’ value=’Auto Detect’/>
    <property id=’SpdEnabled’ value=’H/W Default’/>
    <property id=’FlowControl’ value=’Rx/Tx Enable’/>
    <property id=’RSSEnabled’ value=’0’/>
    <property id=’IPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’LSOV2IPv4′ value=’1’/>
    <property id=’LSOV2IPv6′ value=’1’/>
    <property id=’ReceiveBuffers’ value=’256’/>
    <property id=’TransmitBuffers’ value=’512’/>
    <property id=’PreferredPrimaryRanking’ value=’3’/>
    <property id=’DualChannelGroup’ value=’0’/>
    <property id=’ConfiguredPortCost’ value=’0’/>
  </nic>

<!–                        –>
  <!–       Team Data        –>
  <!–                        –>

  <!– <team> element 1 –>
  <team relnics=’2 4 5 6 7 8′>
    <property id=’TeamName’ value=’HP Network Team #1’/>
    <property id=’OpMode’ value=’Auto’/>
    <property id=’LoadBalAlgorithm’ value=’Auto’/>
    <property id=’RxPathValidationInterval’ value=’3’/>
    <property id=’TxPathValidationInterval’ value=’3’/>
    <property id=’RxPathValidationMode’ value=’Enabled’/>
    <property id=’TxPathValidationMode’ value=’Enabled’/>
    <property id=’TeamNetworkAddress’ value=” />
    <property id=’JumboPacket’ value=’1514 Bytes’/>
    <property id=’IPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’TCPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv4′ value=’Rx/Tx Enable’/>
    <property id=’UDPChecksumOffloadIPv6′ value=’Rx/Tx Enable’/>
    <property id=’LSOV1IPv4′ value=’0’/>
    <property id=’LSOV2IPv4′ value=’1’/>
    <property id=’LSOV2IPv6′ value=’1’/>
    <property id=’FlowControl’ value=’Rx/Tx Enable’/>
  </team>

</teamingconfig>


Parent partition Memory Reserve

Hyper-V R2 SP1 introduced dynamic memory for the virtual machines.  As a result, memory will be given and taken away as needed by the VM’s.  The parent partition (which is also a VM) may surfer from memory starvation because the other VMs have taken the available memory.  Not a good scenario to encounter.  Which is why Microsoft introduce a regkey that can reserve a static amount of memory just for the parent VM.  How much memory to allocate depends on the load placed on the parent VM.  Below is the regkey information:

HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Virtualization

Then create a new DWORD with the name MemoryReserve.  Set the static amount you wish to allocate for the parent VM.  The value is configured in “Decimal” using MB’s.  For example, 2 Gig’s of RAM would be 2048.  Then restart the server to apply the new changes and call it a day because your done.

For more information on the amount to allocated be visit: PFE Virtualization Blog at technet.


Sending a copy of NDR’s to the Postmaster Mailbox

Troubleshooting Non-Delivery Reports (NDR) is a normal administrative task of anyone who supports emails.  The information provided on an NDR will help resolve the issue.  Getting the NDR’s would require the recipient to send a copy of the email to the administrator.  Which is also considered to be retroactive because you’re not proactively solving the issue(s).

Or, you can configure a mailbox to automatically receive a copy of those NDR’s.  This method allows the administrator to troubleshoot and proactively resolve issues before receiving any tickets.

  1. To make sure the company has not already setup a postmaster account open powershell and type:
    • Get-TransportServer

      The ExternalPostmasterAddress has not been configured because it’s empty.
  2. To assign a mailbox type the following command:
    • Set-TransportServer -ExternalPostmasterAddress postmaster@domain.com
      Excute the command below to make the change on all the Hub Transport
    • Get-TransportServer | Set-TransportServer -ExternalPostmasterAddress postmaster@domain.com:
  3. Now you must associate an internal mailbox to receive the NDR’s.
    • Set-OrganizationConfig -MicrosoftExchangeRecipientReplyRecipient postmaster@domain.com

Make sure to create a postmaster mailbox for the email delivery.  This is done the same way a users mailbox is created.

References: http://technet.microsoft.com/en-us/library/bb400930(EXCHG.80).aspx


Duplicating Exchange Receive Connectors on a 2nd Hub Transport

You may want to duplicate the receive connectors for your Hub Transport (HT) servers if your company has more than one HT.  This would eliminates a single point of failure with your HT’s receive connectors.  The company I work for only allows approved internal IP’s to send email to Exchange for relays.  An example of this is a server sending out reports to Exchange for recipient delivery.  As a result, any emails received from a non-approve servers will fail.  The approved list of IP’s can add up to the hundreds, depending on your organization size.  We currently have 150+ approved IP’s for internal email relay. 

The purpose of the script listed below is to duplicate a receive connector on a second HT with minimum effort on the Exchange Administrator.

To retrieve the existing Receive connectors in your Exchange organization please enter:

Get-ReceiveConnector

Now, here’s the script to copy an existing receive connector:

$ReceiveCTR = Get-ReceiveConnector “<HT-Srv-Name>\<ReceiveConnectorName>”
$ReceiveCTR.RemoteIPRanges
New-ReceiveConnector -Name ‘Name-of-the-ReceiveConnector’ -Usage ‘Internal’ -Server ‘2nd-HT-Srv-Name’ -RemoteIPRanges $ReceiveConnector.RemoteIPRanges

Here’s an example of the process:

Get-ReceiveConnector

We will be duplicating the receive connector “Test” located on corpmailxxx on corpmailxxx1. 

$ReceiveCTR = Get-ReceiveConnector “CORPMAILXXX\Test”
$ReceiveCTR.RemoteIPRanges

New-ReceiveConnector -Name ‘Test’ -Usage ‘Internal’ -Server ‘CORPMAILXXX1’ -RemoteIPRanges $ReceiveCTR.RemoteIPRanges

Lets confirm that the receive connector has been duplicated by entering the powershell CMD:

Get-ReceiveConnector

References:

http://technet.microsoft.com/en-us/library/bb690954.aspx#Shell


Convert a SID to an Account Name

The script below will help you convert a SID to a domain account:

$objSID = New-Object System.Security.Principal.SecurityIdentifier `
(“S-1-5-21-0002111000-1000006000-720005000-30000“)
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
$objUser.Value

Change the second line with the SID your converting.

Reference:

“Working with SIDs”


RedHat Linux Run-Levels

What is a Run-Level?

“Runlevel” defines the state of the machine after boot. Different runlevels are typically assigned to:

  • single-user mode
  • multi-user mode without network services started
  • multi-user mode with network services started
  • system shutdown
  • system reboot

The exact setup of these configurations will vary from OS to OS, and from one Linux distribution to another.  As a result, the information listed below is for Redhat Linux.  Below are the different Redhat levels:

  • 0 is Halt
    • Immediately shuts down system and powers it off, if it can.
  • 1 is Single user
    • Brings system to a bare essentials mode for maintenance
  • 2 & 4 is User-defined or custom
  • 5 is Multi-user with display and console
    • All services are running including X11 (or GUI)
  • 6 is Reboot

You might be able to tell what runlevels are used with you Linux distribution by entering the following command:

cat /etc/inittab

Then look for the section that has a description similar to “Default runlevel.  The runlevels used by…”

How do you tell what runlevel you’re currently running?  Good question, here’s the command:

who -r

The result lets us know that we are currently at level 3 and previously running level 5.  How do we change the current level?  Wow, I’m overwhelmed by the excellent questions for this post ;).  Here’s the command:

init 3

This command will change the run level to 3.  However, on reboot it will go back to the default level which is usually runlevel 5 for Redhat.  To make it permanent run the following commands:

su -c ‘vi /etc/inittab’

Now scroll down to the line that has “id:5:initdefault:” (image below) and enter “o”  This will open a new line and enter edit mode.  Change the 5 to the runlevel your configuring.  In this case it would be 3.  Hit the “ESC” key on your keyboard to exit edit mode.  Then enter the following CMD “:x”.  This command saves and exits vi.

Note: Run-Level 1 stops all services.  As a result, you may need network connectivity.  Below is the command to start the network services:

service network start; service nfs start

References:

http://en.wikipedia.org/wiki/Runlevel