After we changed ISP our exchange server was unable to sent emails to some recipients. The error message it get from other servers was "421 Refused. Your reverse DNS entry does not resolve.". The problem was that ISP does not wrote PTR records in their DNS servers. When DNS records was ok. Problem was still there.
Short investigation show that we had 2 IP adresses on routers WAN interface, and default IP was not the same as dns record points to. The solution is to add NAT rule on the router so that source IP of the exchage server was changed to correct IP.
Thursday, April 10, 2014
Exchange 2013 how to change banner message
get connectors list:
Get-Receiveconnector
set connector banner:
Set-Receiveconnector "connector name" -Banner "220 mail.domain.com"
check banner:
Get-Receiveconnector "connector name" | fl
delete banner:
Set-Receiveconnector "connector name" -Banner $null
Get-Receiveconnector
set connector banner:
Set-Receiveconnector "connector name" -Banner "220 mail.domain.com"
check banner:
Get-Receiveconnector "connector name" | fl
delete banner:
Set-Receiveconnector "connector name" -Banner $null
Tuesday, February 11, 2014
Asterisk. Issue with IVR. DTMF not properly detected.
Asterisk routes all incoming calls, received through chan dongle, to IVR, where callers should press '1', '2' or '3'. Depends on selection made in IVR call is routed to different destination.
When call comes from mobile operator everything works fine, but when call received from landline(actually it was from alcatel pbx) it is impossible to choose destination in IVR.
Affter turning on DTMF logging and playing a little with IVR from landline, log looks like:
[Apr 18 07:56:28] DTMF[1787]: channel.c:4062 __ast_read: DTMF begin '1' received on Dongle/dongle0-0100000000
[Apr 18 07:56:28] DTMF[1787]: channel.c:4066 __ast_read: DTMF begin ignored '1' on Dongle/dongle0-0100000000
[Apr 18 07:56:30] DTMF[1787]: channel.c:4062 __ast_read: DTMF begin '2' received on Dongle/dongle0-0100000000
[Apr 18 07:56:30] DTMF[1787]: channel.c:4066 __ast_read: DTMF begin ignored '2' on Dongle/dongle0-0100000000
[Apr 18 07:56:30] DTMF[1787]: channel.c:4062 __ast_read: DTMF begin '3' received on Dongle/dongle0-0100000000
[Apr 18 07:56:30] DTMF[1787]: channel.c:4066 __ast_read: DTMF begin ignored '3' on Dongle/dongle0-0100000000
It means that asterisk detected DTMF, but duration is of DTMF is too short. To resolve this issue edit dongle.conf file. Find the section [dongleX] where 'X' dongle's number, which receives call, and add or edit parameter mindtmfduration=0. Restart asterisk and make test call. Log file should look like:
[Apr 18 10:35:02] DTMF[2014]: channel.c:4062 __ast_read: DTMF begin '1' received on Dongle/dongle0-0100000002
[Apr 18 10:35:02] DTMF[2014]: channel.c:4066 __ast_read: DTMF begin ignored '1' on Dongle/dongle0-0100000002
[Apr 18 10:35:02] DTMF[2014]: channel.c:3977 __ast_read: DTMF end '1' received on Dongle/dongle0-0100000002, duration 63 ms
It means that asterisk received DTMF code and accepted it(because it shows the duration in the log). After that increase mindtmfduration parameter until you find that asterisk do not accept DTMF signals like it was before. Then decrease duration to last working value.
When call comes from mobile operator everything works fine, but when call received from landline(actually it was from alcatel pbx) it is impossible to choose destination in IVR.
Affter turning on DTMF logging and playing a little with IVR from landline, log looks like:
[Apr 18 07:56:28] DTMF[1787]: channel.c:4062 __ast_read: DTMF begin '1' received on Dongle/dongle0-0100000000
[Apr 18 07:56:28] DTMF[1787]: channel.c:4066 __ast_read: DTMF begin ignored '1' on Dongle/dongle0-0100000000
[Apr 18 07:56:30] DTMF[1787]: channel.c:4062 __ast_read: DTMF begin '2' received on Dongle/dongle0-0100000000
[Apr 18 07:56:30] DTMF[1787]: channel.c:4066 __ast_read: DTMF begin ignored '2' on Dongle/dongle0-0100000000
[Apr 18 07:56:30] DTMF[1787]: channel.c:4062 __ast_read: DTMF begin '3' received on Dongle/dongle0-0100000000
[Apr 18 07:56:30] DTMF[1787]: channel.c:4066 __ast_read: DTMF begin ignored '3' on Dongle/dongle0-0100000000
It means that asterisk detected DTMF, but duration is of DTMF is too short. To resolve this issue edit dongle.conf file. Find the section [dongleX] where 'X' dongle's number, which receives call, and add or edit parameter mindtmfduration=0. Restart asterisk and make test call. Log file should look like:
[Apr 18 10:35:02] DTMF[2014]: channel.c:4062 __ast_read: DTMF begin '1' received on Dongle/dongle0-0100000002
[Apr 18 10:35:02] DTMF[2014]: channel.c:4066 __ast_read: DTMF begin ignored '1' on Dongle/dongle0-0100000002
[Apr 18 10:35:02] DTMF[2014]: channel.c:3977 __ast_read: DTMF end '1' received on Dongle/dongle0-0100000002, duration 63 ms
It means that asterisk received DTMF code and accepted it(because it shows the duration in the log). After that increase mindtmfduration parameter until you find that asterisk do not accept DTMF signals like it was before. Then decrease duration to last working value.
Monday, January 13, 2014
Exchange 2013. Meeting invitations get stuck in a poison queue.
After meeting invitation arrives from external domain, and user accepts meeting. Meeting acceptance message some how crushes transport service and meeting initiator do not get confirmation about meeting acceptance.
The same scenario takes place when user trying to send meeting invitation from my organization to external. Transport service stops and then restarts.
Searching the web did not bring a lot of info, so I started to digging in event logs.
In the event log I found error 10003:
Event 10003, MSExchangeTransport
The transport process failed during message processing with the following call stack: System.ArgumentException: codePage is not detectable...
That probably happens because regional settings on server was set to "Lithuanian".
Check exchange configuration:
Get-RemoteDomain -Identity * | fl
CharacterSet and NonMimeCharacterSet on my server was set to iso-8859-13.
Change it to iso-8859-1("Western European ISO"):
Set-RemoteDomain -Identity * -CharacterSet iso-8859-1 -NonMimeCharacterSet iso-8859-1
after that users can send and accept invitations without any problems.
The same scenario takes place when user trying to send meeting invitation from my organization to external. Transport service stops and then restarts.
Searching the web did not bring a lot of info, so I started to digging in event logs.
In the event log I found error 10003:
Event 10003, MSExchangeTransport
The transport process failed during message processing with the following call stack: System.ArgumentException: codePage is not detectable...
That probably happens because regional settings on server was set to "Lithuanian".
Check exchange configuration:
Get-RemoteDomain -Identity * | fl
CharacterSet and NonMimeCharacterSet on my server was set to iso-8859-13.
Change it to iso-8859-1("Western European ISO"):
Set-RemoteDomain -Identity * -CharacterSet iso-8859-1 -NonMimeCharacterSet iso-8859-1
after that users can send and accept invitations without any problems.
Thursday, December 19, 2013
Exchange 2013 MSDiagnostics Error 1006
Error exist from exchange 2013 RTM to 2013 CU3
Error look like:
The performance counter ‘\\SERVER\LogicalDisk(HarddiskVolume1)\Free Megabytes’ sustained a value of ’0,15′, for the ’10′ minute(s) interval starting at ’8/20/2013 7:21:00 AM’. Additional information: None. Trigger Name:DatabaseDriveSpaceTrigger. Instance:exchndb1
It is not clear what does this error means, because 50% of hard drive space is free.
You can disable this notification. To do this edit configuration file:
C:\Program Files\Microsoft\ExchangeServer\V15\Bin\Microsoft.Exchange.Diagnostics.Service.exe.config
Change “ExchangeJobs.Triggers.DatabaseDriveSpaceTrigger” from “True” to “False”. After making changes do not forget to restart exchange diagnostic service.
Error look like:
The performance counter ‘\\SERVER\LogicalDisk(HarddiskVolume1)\Free Megabytes’ sustained a value of ’0,15′, for the ’10′ minute(s) interval starting at ’8/20/2013 7:21:00 AM’. Additional information: None. Trigger Name:DatabaseDriveSpaceTrigger. Instance:exchndb1
It is not clear what does this error means, because 50% of hard drive space is free.
You can disable this notification. To do this edit configuration file:
C:\Program Files\Microsoft\ExchangeServer\V15\Bin\Microsoft.Exchange.Diagnostics.Service.exe.config
Change “ExchangeJobs.Triggers.DatabaseDriveSpaceTrigger” from “True” to “False”. After making changes do not forget to restart exchange diagnostic service.
Thursday, November 7, 2013
How to enable and configure spam filter on exchange 2013
In Microsoft Exchange Server 2013, the following anti-spam agents are available in the Transport service on Mailbox servers, but they are not installed by default:
Use the shell to run Install-AntispamAgent.ps1 script
& $env:ExchangeInstallPath\Scripts\Install-AntiSpamAgents.ps1
Then close power shell, restart Transport Service and open power shell again.
Specify SMTP servers of your organization
Set-TransportConfig -InternalSMTPServers @{Add="<ip address1>","<ip address2>"...}
example:
Set-TransportConfig -InternalSMTPServers @{Add="10.0.1.22","10.0.1.23"}
check servers list:
Get-TransportConfig | Format-List InternalSMTPServers
InternalSMTPServers : {10.0.1.22, 10.0.1.23)
to clear list set it to $null
Set-TransportConfig -InternalSMTPServers $null
to remove item from list:
Set-TransportConfig -InternalSMTPServers @{Remove="10.0.1.23"}
senders can be blocked on tree different block lists
check bloked senders list
Get-SenderFilterConfig | fl BlockedSenders, BlockedDomains
you should get somthing similar to:
BlockedSenders : {spammer@domain.com, spammer2@domain.com}
BlockedDomains : {spammers.com}
Set-SenderFilterConfig -BlankSenderBlockingEnabled $true
this is usually used to block NDR, received from internet.
Then enable feature of recipient filter config
Set-RecipientFilterConfig -BlockListEnabled $true
Populate blocked recipients list
Set-RecipientFilterConfig -BlockedRecipients @{Add="internal@domain.com", "internal2@domain.com"}
Check that list populated:
Get-RecipientFilterConfig | fl BlockedRecipients
BlockedRecipients : {internal@domain.com, internal2@domain.com}
that blocks all mails to non existing users, but it could expose all directory emails for spammers that use directory harvesting. To protect from directory harvesting we can set delay between send email requests.
get list of receive connectors:
Get-ReceiveConnectors
get tarpit interval of connector:
Get-ReceiveConnector "WIN2012-TEST\Default Frontend WIN2012-TEST" | fl tar*
TarpitInteval : 00:00:05
Set interval to 6 seconds
Set-ReceiveConnector "WIN2012-TEST\Default Frontend WIN2012-TEST" -TarpitInterval 00:00:06
- Content Filter agent
- Sender ID agent
- Sender Filter agent
- Recipient Filter agent
- Protocol Analysis agent for sender reputation
1. Instalation
Use the shell to run Install-AntispamAgent.ps1 script
& $env:ExchangeInstallPath\Scripts\Install-AntiSpamAgents.ps1
Then close power shell, restart Transport Service and open power shell again.
Specify SMTP servers of your organization
Set-TransportConfig -InternalSMTPServers @{Add="<ip address1>","<ip address2>"...}
example:
Set-TransportConfig -InternalSMTPServers @{Add="10.0.1.22","10.0.1.23"}
check servers list:
Get-TransportConfig | Format-List InternalSMTPServers
InternalSMTPServers : {10.0.1.22, 10.0.1.23)
to clear list set it to $null
Set-TransportConfig -InternalSMTPServers $null
to remove item from list:
Set-TransportConfig -InternalSMTPServers @{Remove="10.0.1.23"}
2. Sender filtering configuration
2.1 Sender block list
Set-SenderFilterConfig -Enabled $truesenders can be blocked on tree different block lists
- blocked senders
- blocked domains
- blocked domains and subdomains
check bloked senders list
Get-SenderFilterConfig | fl BlockedSenders, BlockedDomains
you should get somthing similar to:
BlockedSenders : {spammer@domain.com, spammer2@domain.com}
BlockedDomains : {spammers.com}
2.2 Empty sender blocking
Set-SenderFilterConfig -BlankSenderBlockingEnabled $true
this is usually used to block NDR, received from internet.
3. Recipient filtering
Set-RecipientFilterConfig -Enabled $trueThen enable feature of recipient filter config
Set-RecipientFilterConfig -BlockListEnabled $true
Populate blocked recipients list
Set-RecipientFilterConfig -BlockedRecipients @{Add="internal@domain.com", "internal2@domain.com"}
Check that list populated:
Get-RecipientFilterConfig | fl BlockedRecipients
BlockedRecipients : {internal@domain.com, internal2@domain.com}
3.1 Block recipients that is not listed in global address book.
Set-RecipientFilterConfig -RecipientValidationEnabled $truethat blocks all mails to non existing users, but it could expose all directory emails for spammers that use directory harvesting. To protect from directory harvesting we can set delay between send email requests.
get list of receive connectors:
Get-ReceiveConnectors
get tarpit interval of connector:
Get-ReceiveConnector "WIN2012-TEST\Default Frontend WIN2012-TEST" | fl tar*
TarpitInteval : 00:00:05
Set interval to 6 seconds
Set-ReceiveConnector "WIN2012-TEST\Default Frontend WIN2012-TEST" -TarpitInterval 00:00:06
How to install telnet client from cli in windows server 2012
Open cli and type following command:
pkgmgr /iu:"TelnetClient"
pkgmgr /iu:"TelnetClient"
Subscribe to:
Posts (Atom)