NowSMS 2009 Available

NowSMS 2009 Available SearchSearch
Author Message
Keith Norris
Moderator
Username: Admin

Post Number: 38
Registered: 05-2003
Posted on Thursday, July 09, 2009 - 06:15 pm:   

NowSMS 2009 is the fastest performance release of NowSMS to date. While we've added considerable new functionality, we've successfully avoided the bloatware trap.

Effective immediately, licenses supporting up to 400 messages per second are available.

NowSMS 2009 is a free update for users with current upgrade and maintenance agreements. The status of your upgrade and maintenance agreement can be found on the "Serial #" page of your NowSMS installation.

The NowSMS 2009 download can be found at the following link:

http://www.nowsms.com/downloads/

The core performance enhancements are also of interest to other high speed, but not-quite-as-high-speed environments for a variety of reasons.

  • Requesting delivery receipts for all (or most) messages can put an increased strain on the system, with previous versions of NowSMS peaking at speeds of 150 to 200 messages per second, and sometimes with a queued backlog of receipt processing. Performance is easily doubled in this update, and the queue backlog is no more.
  • 2-way SMS command performance has been optimised, particularly for HTTP based commands, allowing an HTTP based command to easily keep up with burst rates of hundreds of messages per second.
  • CPU load with large numbers of outbound messaging routes. Historically, the more outbound routes defined to NowSMS, the higher the CPU load, especially if there is a large volume of queued messages waiting for a small number of routes. The routing logic has been dramatically improved to reduce CPU load.
  • If you use HTTP-based accounting callbacks for billing or accounting, they may be significantly limiting your overall message throughput. The new release uses HTTP keep-alive sockets and optimised logic to improve throughput when accounting callbacks are enabled.


Some of the new features include:

  • Multimedia Content Push - This is an enhancement to the Multimedia WAP Push functionality support in earlier versions of NowSMS. The new implementation supports dynamic HTML or WML content delivery packaging to support modern phone browsers that do not support WML, such as the iPhone. Sending the content links via standard text messages instead of WAP Push is also supported to make it easier to work with on North American networks, and to work with devices that don't support WAP Push, such as the aforementioned iPhone. More information can be found here: http://blog.nowsms.com/2009/04/sending-multimedia-content-push.html
  • Enhanced SMS Message Routing Logic - Recipient address masks can now specify addresses to exclude from the selected route, in addition to the existing inclusive logic. Additionally, the SMPP service_type value can be used as a basis for SMS message routing. Some additional preliminary information can be found in the following message thread: http://support.nowsms.com/discus/messages/1/24460.html
  • Dynamic SMS Message Routing Callbacks - This capability is long overdue! It has been availalble for MMS message routing for some time. Essentially, the existing HTTP accounting callbacks have been extended to allow the callbacks to dynamically specify which outbound route should be used for SMS message routing. Some additional preliminary information can be found in the following mesasge thread: http://support.nowsms.com/discus/messages/1/23919.html
  • Explicit SMSC Routing available to SMPP Clients - Perhaps not as signicant as the other enhancements, but it is now possible to give SMPP clients connecting to NowSMS as their SMPP server more control over outbound SMSC routing if desired. Some additional preliminary information can be found in the following message thread: http://support.nowsms.com/discus/messages/1/24485.html
  • Throttling support for outbound MMS routing speed for external MM7, MM4 or EAIF connections.
  • Enhanced support for the "mailto:" command as used in 2-way commands for routing received SMS messages to e-mail. Additional preliminary information can be found in the following message thread: http://support.nowsms.com/discus/messages/1/24428.html.
  • More flexibility in controlling message retry behaviour in UCP/EMI and CIMD environments, as described in the following post: http://blog.nowsms.com/2008/10/sms-retry-error-handling-with-ucpemi.html
  • Delivery receipts are now supported for UCP/EMI and CIMD environments, with NowSMS automatically translating message receipts for those environments into SMPP format to simplify processing.
  • MMSC/MM4 Enhancements for improved real-world compatibility with more MMS interconnect services.
  • Improved Modem Handling - Especially recovery and prevention of "hung modem" scenarios.


The above list is just a sampling of a few of the features/capabilities that seemed significant to me as I typed this message. A more complete list of features and enhancements can be found in the readme file, which I've excerpted below.

===

2009-07-09:

* SMPP Async Mode: Fix for a bug where if the SMSC unexpectedly dropped the connection, a message could get stuck in the queue until the NowSMS service is restarted.


2009-07-07:

* SMS Gateway: Add configuration option to allocate more threads for managing SMSOUT accounting callbacks in SMPP Async mode environments. This may be necessary when using accounting callbacks over higher speed connections. To allocate additional threads, edit SMSGW.INI, and under the [SMSGW] header add AsyncCallbackThreads=##, where ## is the number of additional threads to allocate per async SMPP connection.

* SMS Gateway: Don't create counter based Q (e.g., "###0001") subdirectories unless the outbound queue exceeds the directory size threshold (10,000). Similar logic applied to subdirectory creation for received messages in the SMS-IN queue.

2009-07-04:

* SMS Gateway: Update SMSOUT record when sending via GSM modem to include the modem phone number in a "Sender=" parameter.

* SMS Gateway: Fix for "###0001" Q subdirectories being created even if the "Separate User Queues" setting was disabled. (Note: For most installations it is NOT recommeded to disable the "Separate User Queues" setting.)

* MMSC: Add configuration setting to disable the automatic routing of delivery receipts and read receipts back over the same connection that the original message was received from. To disable this automatic routing, edit MMSC.INI, and under the [MMSC] header, add AutoRouteReceipts=No.

2009-06-30:

* SMPP: Add configuration settings to force certain message types to use a particular DCS (data_coding) value on a per SMPP connection basis. DCS override values can be defined for all 7-bit text, binary and/or Unicode messages. For example, 0x0F is often the preferred DCS value for USSD text messages, and 0x48 is the preferred DCS for USSD unicode messages. When an override is applied, all messages of the specified type (text, binary or Unicode) will have their DCS value converted to the override value. To apply this setting for all messages routed to a specific SMSC, edit SMSGW.INI, and under the SMSC specific section (e.g., [SMPP - server:port]), add TextDCS=##, BinaryDCS=## or UnicodeDCS=## as appropriate, where ## is the DCS value in hex, e.g., TextDCS=F or UnicodeDCS=48.

* SMS Gateway/Modem Handling: Change the default receive polling interval to 10 seconds when "Direct to Modem" is the "SMS Message Storage" type. The polling interval is set to 2 seconds for other "SMS Message Storage" types (in previous versions, it was always 1 second). To change the default add ReceivePoll=##, where ## is the number of seconds, under the appropriate [Modem - driver name] section header of SMSGW.INI. Modem polling logic also optimised to be less resource intensive on the modem. If this change causes problems receiving messages with older phone modem implementations that worked with previous version of NowSMS, add OldPollingLogic=Yes under the appropriate [Modem - driver name] section header of SMSGW.INI.

* SMS Gateway/SMPP Server: Fix for problem (1 in 10,000 chance) that segmented messages received from an SMPP client may not be tracked properly and could be sent via different outbound SMSC connections.

* MMSC: Add configuration option to suppress the generation of delivery reports when MMS messages are received from an "MMSC VASP" account and routed to the "MMS-IN" directory. To suppress these delivery reports from being generated, edit MMSC.INI and under the [MMSC] header add SuppressMMSInDeliveryReport=Yes.

* MMSC: Add configuration option to force the MMS Routing callback (MMSRoutingURL) to always be checked, even for numbers that are in the "MMSC Users" list. This ensures that in mobile number portability environments, any numbers that have been ported out to another carrier will be checked, even if the user was previously provisioned on the MMSC. To enable this option, set ForceRoutingCallback=Yes under the [MMSC] header of MMSC.INI.

2009-06-11:

* SMS Gateway/SMPP Server: When configuring the "SMSC Character Set" for the SMPP server, previous versions of NowSMS would use the specified character set for delivering SMS messages to connected SMPP clients, however NowSMS would expect the default character set used by SMPP clients to be the GSM character set. Beginning with this release, this value will be used as the default character set when receiving messages submitted by SMPP clients.

* MMSC: Fix for 100% CPU utilisation problem that could occur with a message that contained particular invalid file names.

* SMPP: Add support for setting the "Intermediate Notification" bit when requesting SMPP delivery receipts. This setting is available on a per-connection basis. Under the [SMPP - server:port] section header, add IntermediateNotification=Yes to enable this setting. When this setting is enabled, the "intermediate notification" bit will be set in the registered_delivery flag any time a delivery receipt is requested. (If a delivery receipt is not requested, this bit will not be set.)

* MMSC/MM4: Some MM4 interconnects do not understand SMTP "quoted-printable" encoding. NowSMS uses "quoted-printable" encoding to preserve compatibility with 7-bit SMTP relays when SMIL content does not include line breaks. If an MM4 interconnect does not support "quoted-printable" encoding, the result can be missing images in received messages. To address this compatiblity issue, NowSMS will now automatically insert line breaks in SMIL content if MM4QuotedPrintableOK=No under the [MMSC] header of MMSC.INI.

2009-06-08:

* SMS Gateway/GSM Modem: Improved recovery from "hung" modems.

* SMS Gateway: Treat reserved value DCS (data_coding) SMS messages as text format. NowSMS was erroneously trying to decode it as a Unicode. (This happened for a customer who was was receiving USSD messages via SMPP with data_coding = 0x0F.)

2009-05-28:

* HTTP SMSC: Add support for parsing text from the HTTP response to determine whether or not an HTTP SMSC message submission was successful. One or more "success" responses can be defined by editing the SMSGW.INI file, and under the appropriate [HTTP - server:port] header, adding Success=somestring. If somestring is present in the response, the submission will be considered successful, otherwise it will be considered a failure. To specify more than one "success" response, add Success1=somestring on a separate line.

* GSM Modem Handler/Multitech CDMA Modem: When a Multitech CDMA modem is detected, automatically activate the ModemSendWorkaround=Yes option to work-around bugs in the modem's implementation of the AT+CMGS command.

2009-05-26:

* SMS Gateway: When "ReRouteReceived=xxxxx" is used for an SMSC connection, the resulting queued messages were not properly flagged as segmented messages, which could cause problems if the messages were to be re-routed to an SMPP or HTTP connection where long messages are automatically reassembled (such as WDP Adaptation SMPP connections).

* GSM Modem: Fix for problems processing received messages from modems that only support "text mode". (Such as the Multitech CDMA modem.)

2009-05-21:

* SMS Gateway/SMPP Client: Fix for restart errors that could occur on systems with large message queues and multiple SMSC connections with more complex routing restrictions.

2009-05-08:

* SMS Gateway: Fix for bug in 2009 RC versions where unresolvable delivery receipts could trigger exception errors.

2009-05-07:

* Receiving MMS via GPRS Modem: Work-around for a problem where all messages received via Orange UK started to report a sender address of "1". A bug in Orange UK's MMSC seems to be generating MMS notifications where the sender address always indicates "1". If a sender address is present in both the MMS notification and the MMS message, previous versions of NowSMS would give preference to the sender address in the MMS notification. NowSMS will now give preference to the sender address in the actual MMS message.

* UCP/EMI: Fix for bug where presence of "BillingInfo" parameter in an outbound message would cause exception errors.

* 2-Way: When using "Command returns response text", the recipient number of the received SMS was not being properly applied as the sender in the response.

2009-04-09:

* Multiple server installation: Reworked the MessageIDPrefix= logic to resolve some issues related to unique message generation on a multiple server installation with a shared message queue. Note that for multipart messages, the MessageIDPrefix will now be added after the "SAR-" filename prefix instead of before it (e.g., SAR-prefix999999-1-1-1.req).


2009-04-03:

* SMS Gateway: Add support for receiving SMS messages from an SMSC via HTTP, so that they will be routed via the 2-way command processor. To submit a received SMS message to the 2-way command processor, add "&InboundMessage=Yes" to a standard NowSMS URL request. The same URL format that is used to submit outbound SMS messages to NowSMS is used to deliver SMS messages to the 2-way command processor, except that "&InboundMessage=Yes" is included in the URL request to signal that the message is to be treated as a received message. (Alternatively, include "&LocalUser=XXXXX" to route a message to a local "SMS Users" account for delivery via SMPP.) Note that if "SMS Users" accounts are enabled, it is necessary to include an "&User=xxxx&Password=yyyy" parameter to authenticate as an "SMS Users" account, even though the messages are to be processed as received messages instead of outbound message submissions. To prevent the possibility of a received message being routed for outbound delivery, we recommend creating a separate "SMS Users" account for this type of message delivery. Check "Enable Credit Balance" for the account, and leave the credit balance at 0. This will allow the account to deliver received SMS messages (i.e., "&InboundMessage=Yes"), but will disallow any attempts to submit a message for outbound delivery.

* SMS Gateway 2-way Callbacks: Keep-alive sockets for 2-way commands, introduced in the 2008-11-05 update would sometimes send URL requests to the wrong server if there are 2-way commands with URL requests pointing to multiple servers.

2009-03-31:

* MMSC: Content Adaptation now assumes "text/plain" is always a supported MIME type within an MMS message. The UAProf files for the Motorola RAZR V8 and ROKR Z6 do not include "text/plain" as one of the supported content types of the MMS client, causing text parts to be removed from MMS messages, unless the cached UAPROF file is physically edited to add this content type or content adaptation is disabled in the MMSC settings.

2009-03-20:

* SMS Gateway Logs and Accounting Callbacks: Long text messages, Unicode text messages, and other text messages with EMS or port addressing headers are no longer reported as binary messages. They are now reported as text messages with the text included in the log and callbacks with UTF-8 encoding.

* SMS Gateway Configuration UI: Fix for an exception error in the configuration user interface that would occur in the display of received SMS messages with text or binary data longer than 500 characters.

2009-03-17:

* SMPP: For message receipts received from SMPP connections, the SMSIN accounting callback now includes both the NowSMS Message ID and the upstream Message ID assigned by the SMSC. The NowSMS Message ID is in the "SMSCReceiptMsgId=", and the upstream Message ID is in the "SMSCReceiptMsgIdOrig=" parameter. http://support.nowsms.com/discus/messages/1/24902.html

* SMPP: In SMPP environments, generic 8 bit-binary messages can be encoded with a data_coding value of either 2 or 4. NowSMS always uses a data_coding value of 4 (and converts 2 to 4, as they mean the same thing in the SMPP specification), because 4 is a valid data_coding value for a binary message sent over the air in a GSM environment, while 2 is not a valid value for an actual over the air message. To address an issue for a service provider that will only accept binary messages with a data_coding value of 2, there is a new configuration setting to remap the data_coding value from 4 to 2 for SMPP connections. To apply this setting for messages being submitted to a particular SMSC, edit SMSGW.INI, and under the SMSC specific section (e.g., [SMPP - server:port]), add BinaryDCS=2. To apply this setting for all SMPP client accounts (e.g., "SMS Users"), add BinaryDCS=2 under a section header of [SMPP] (this section may or may not already exist, if it does not, it should be added). (Note: There is also a BinaryDCS=## setting available under the [SMSGW] section of SMSGW.INI, however this setting has a slightly different purpose. The other BinaryDCS=## setting sets the data_coding value to be used for any WAP Push messages generated by NowSMS. By default it is F5, however some SMSCs require a value of 4 instead.) http://support.nowsms.com/discus/messages/1/24851.html

2009-03-07:

* To prevent installation problems, automatically add exceptions for NowSMS to the Windows Firewall.

* MMSC/MM7 Version Number/Schema Selection: The configuration screens for MM7 connections have been updated to automatically select the appropriate MMS version number when the MM7 schema is changed, so that the correct version for the selected MM7 schema is selected.

2009-02-16:

* MMSC: Update Multimedia WAP Push functionality to also support sending multimedia content via web links with SMS. Default template now auto-senses whether the client should see the content using HTML or WML. Multimedia WAP Push uses the same API as for sending MMS. When using the propietary NowSMS URL interface, include the variable "MMSSMSPush=Yes" to request that the content be sent over SMS, or "MMSWAPPush=Yes" to request that the content be sent using WAP Push.

* SMS Gateway: When "ReRouteReceived=xxxxxx" is used for an SMSC connection, accounting callbacks were not called when the received messages was re-routed to another outbound SMSC connection. Normal "PreAuth" and "SMSSend" accounting callbacks are now triggered. http://support.nowsms.com/discus/messages/1/24779.html

* OMA Settings: Update e-mail options on web form to support more options including E-mail encryption and authentication types. http://support.nowsms.com/discus/messages/485/24820.html

* MMSC: To improve performance, keep-alive sockets are now enabled by default for MMS accounting and routing callbacks. To disable this support, edit MMSC.INI, and under the [MMSC] header, add AccountingKeepAlive=No to disable the use of keep-alive sockets for MMS accounting callbacks and RoutingKeepAlive=No to disable the use of keep-alive sockets for MMS routing callbacks.

2009-01-26:

* SMS Accounting Callbacks: Add "&ReceiptRequested=Yes" parameter if the message is requesting a delivery receipt. http://support.nowsms.com/discus/messages/1/24721.html

2009-01-12:

* Fix for problem with SMS Q Directory being on shared volume (server path) (QDir=\server\path)

* OMA Provisioning Content: Fix problem where literal tags and attribute names were not included in the encoded output. This can cause a problem for provisioning content implementations that extend the OMA Provisioning Content by adding additional XML tag and/or attribute names, such as Microsoft has defined for Windows Mobile provisioning. (Other vendors tend to extend OMA Provisioning Content by using additional attribute values, which was not a problem.) As a result of this change, some OMA Provisioning Content XML documents that worked properly with previous versions of NowSMS might not work properly with this updated version. A problem would only be experienced if the XML document included a typo or misspelling for an XML tag or attribute name. Previous versions of NowSMS would skip the invalid tag or attribute name. This version will encode any unknown tag or attribute names with WBXML literal encoding. For compatibility reasons, it is possible to disable NowSMS from encoding any tag or attribute names not defined in the OMA Provisioning Content specifications by adding OMAProvisioningContentDisableLiterals=Yes under the [SMSGW] header of SMSGw.INI.

2008-12-04:

* SMS Gateway: Add support for backup (fail-over) routes for SMSC connections. A backup route is activated only when a primary route is down. To configure a backup route, define the SMSC connection to NowSMS as normal, then manually edit the SMSGW.INI file. Under the SMSC section header (e.g., [Modem - driver name] or [SMPP - server:port]), add BackupForRoute=xxxxxx where xxxxxx is either the name of another SMSC connection or a "RouteName=" setting defined for one or more SMSC connections. If xxxxxx is the name of another SMSC connection, this SMSC connection will only be activated if that other SMSC connection is down. If xxxxxx is a "RouteName=" setting defined for one or more SMSC connections, this SMSC connection will only be activated if all other SMSC connections with this route name are down.

* SMS Gateway: EMS/Nokia Smart Messaging - Add support for "&Text=" URL parameter to include text when using the "Send EMS Message"/"Send Picture Message" function to send a picture message in the "Nokia Smart Messaging" format. Parameter is not supported from the web form, only when performing direct URL submission using the "PictureMessageDataText", "PictureMessageDataFile" or "PictureMessageDataURL" parameter.

2008-11-27:

* SMS Gateway: Modem driver update to fix some problems where USB and PC card modems can become unresponsive, otherwise requiring a reboot.

* 2-way SMS: Internal changes to prevent large numbers of delivery receipts to get in the way of processing other inbound SMS messages.

2008-11-21:

* MMSC: Add a way to block all MMS to e-mail recipients so that they are rejected by the MMSC. To do this, define an "MMSC Routing" definition. In the "Route messages to this account for recipient phone number(s)" field, specify "*@*". For the "Route messages to VASP via" setting, specify "Block/Reject Message". If an MMS user tries to send an MMS message to an e-mail recipient, the MMSC will reject the message.

2008-11-13:

* Configuration: Fix for bug introduced in recent versions where the "Advanced Settings" for SMPP connections would not always be proprerly saved during the initial SMSC defintion.


* E-Mail to SMS: Add support for "\r\n" escape characters in SMTP e-mail interface. See http://support.nowsms.com/discus/messages/1/24513.html

* MMSC/MM4: Queue MM4 acks (.RES) separately from other outbound SMTP traffic to prevent delays. (Previously, MM4 acks were in the same queue as other SMTP traffic.)

2008-11-05:

* MMSC: Add ability to specify <ChargedParty>Sender</ChargedParty> in an outbound MM7 message. To configure this setting, edit VASPOUT\accountname\VASP.INI, and under the [VASP] header, add ChargedParty=Sender.

2008-11-05:

* MMSC: Add configuration setting for "MMSC VASP" to allow "Force via Defined Route" to be set to "Direct Delivery". When "Direct Delivery" is selected for this setting, this means that any MMS messages received from this route will be queued for direct delivery with NowSMS as the MMSC, ignoring any other routing considerations.

* SMS Gateway: Add ability for SMS accounting callbacks to be used to specify routing information. When the "SMSSend" accounting callback is issued, it is possible for the callback to return SMSCRoute=routename in the HTTP response to specify the route via which the message should be routed. http://support.nowsms.com/discus/messages/1/23919.html.

* SMS Gateway: To improve performance, keep-alive sockets are now enabled by default for SMS accounting callbacks. To disable this support, edit SMSGW.INI, and under the [SMSGW] header, add AccountingKeepAlive=No.

* SMS Gateway: To improve performance, keep-alive sockets are now enabled by default for 2-way SMS callbacks. To disable this support, edit SMSGW.INI, and under the [SMSGW] header, add 2WayKeepAlive=No. See http://support.nowsms.com/discus/messages/1/24486.html

* SMS Gateway: For licenses of 10 messages per second or higher, default to a higher setting for 2WaySMSThreadCount=##, so that more 2-way command processing threads are allocated by default, allowing multiple 2-way commands to be processed simultaneously.

* E-Mail to SMS: Allow e-mail format of sms.phonenumber@domain.com for a customer requirement.

* SMS Gateway: For for server restart after midnight due to delivery receipt tracking bug introduced in 2008.08.22.

* MMSC: Fix for high CPU utilisation problem that could occur when upgrading from older MMSC versions, especially if MM4 interconnects are defined.

* SMS Gateway: Add support for specifying that SMS messages with particular SMPP "service_type" values should be routed via specific SMSC connections. In the "Preferred SMSC Connection for" list, it is possible to specify service_type values, in addition to recipeint address masks. To specify that messages with the service_type value of "bulk" should be routed via a connection, add "service_type=bulk" to the "Preferred SMSC Connection for" list. To specify that messages with a service_type of "bulk" should be blocked from routing via the connection, add "!service_type=bulk" the "Preferred SMSC Connection for" list. If one or more "service_type=" entries is defined on a "Preferred SMSC Connection for" list, then only messages that match a listed service type value will be routed via this connection. Recipient masks can also be included in the list, however when a service type value is also defined, only messages that match a listed service type value and a recipient address mask, will be routed via this connection. (Note: It is also possible to specify a "service_type" value when submitting messages via HTTP by including "&ServiceType=xxxxxx" in the URL parameter.) Similarly, it is possible to include "service_type=xxxx" in the "Recipient address(es) to route to this user" attribute of an "SMS Users" account to force messages addressed to a particular service_type to be queued for delivery to an SMPP client. See http://support.nowsms.com/discus/messages/1/24460.html.

* SMS Gateway/SMPP Client: Update configuration parameter that allows the "users" directory to be moved to another location other than beneath the NowSMS program directory. This directory contains queues of received messages waiting for SMPP or POP3 clients, as well as user specific log files. Under the [SMSGW] header in SMSGW.INI, use UsersDir=d:\path\ or UsersDir=\Server\Volume\path\ to specify the location of the SMS "users" directory. When this parameter is set, the "SMS Users" database files (SMSUSERS.D2A and SMSUSERS.D2I) will also be located in this directory (by default, when this parameter is not set, these files are in the NowSMS program directory). With this release, it is now possible to separate the queued messages from other user related data and logs. Under the [SMSGW] header, use UsersQDir=d:\path\ or UsersQDir=\Server\Volume\path\ to specify the location of the user directories that will hold queued messages only. Other user directories and files will be stored relative to the "UsersDir=" setting, or in their default location if "UsersDir=" is not present.

* MMSC Routing: Fix for a strange problem on Windows Vista and Windows Server 2008, where under certain conditions the user interface would make changes to the configuration of an "MMSC Routing" definition, but these changes would not be seen by the back-end MMSC service. This could happen because of an administrative rights issue. When the NowSMS configuration program is launched after installation, it is usually running with administrative rights, because administrative rights are required by the installation program, and these rights are inherited by the configuration program when it is launched at the end of the installation. Other times, the NowSMS configuration program is launched without requiring administrative rights, except for installing or starting/stopping services. If an "MMSC Routing" definition is initially defined by the configuration program running with administrative rights, settings for this "MMSC Routing" definition can only be modified if the configuration program is running with administative rights. This fix resolves the problem for new "MMSC Routing" definitions, however it does not resolve the problem for existing installations. If a problem is suspected in an existing installation, try to launch the NowSMS configuration program with a "right-click" and "Run as Administrator" to see if different settings are shown for the "MMSC Routing". If different settings are found, the only resolution for an existing installation is to delete ProgramData\NowSMS\VASPOUT\VASP.INI and recreate the "MMSC Routing", preferably with the configuration program not running with administrative rights.

* SMS Gateway: Performance optimisations for routing logic that evaluates "Preferred SMSC Connection for" recipient address masks.

* SMS Gateway: Add support for specifying blocked recipient address masks for individual SMSC connections. In the "Preferred SMSC Connection for" list, it is possible to specify recipeint address masks that should not be routed via this connection, in addition to recipient address masks that should be routed via this connection. To specify a recipient address mask that should be blocked from using this connection, prefix the address mask with "!". For example, if +447* and !+447700* are in the "Preferred SMSC Connection for" list, +447123456789 would be routed via this connection, but +447700123456 would not be routed via this connection.

* Work-around for problem occurring on some systems where the NowSMS trial period only lasts for a single day. A popular virus scanner product is blocking part of the install program, so that the trial period counter is not properly initialised.

* SMS Gateway: Delete any stray *.LCK files that remain in the Q directory (shouldn't happen unless Q files are manipulated by a separate program external to NowSMS). Make the time period that *.ERR files remain in the Q directory configurable, with the default being 3 days. To change this time period, edit SMSGW.INI, and under the [SMSGW] header, add ErrorQRetainDays=##.

* SMS Gateway: Update SQLITE.DLL used for maintaining SMPP delivery receipt tracking databases, and limit the amount of memory used to cache the databases so that NowSMS does not take up an excessive amount of memory on extremely busy servers.

* SMS Gateway: Faster routing of delivery receipts back to the submitting user account as an interim internal routing step is now bypassed.

* SMS Gateway: Add configuration option to allow selected "SMPPOptions" settings to be automatically copied when generating a reply via the 2-way SMS command facility. Under the [SMSGW] header of SMSGW.INI, the 2WayReplyCopySMPPOptions=xxxx,yyyy setting can be used to specify a list of "SMPPOptions" TLV paramters that should be copied from the received message to the reply message generated by the 2-way command. Any options specified in this list must be included in the [SMPPOptions] section of SMSGW.INI. See http://support.nowsms.com/discus/messages/1/24487.html

* SMS Gateway/CIMD: Fix for 6 to 7 second delays in-between message submissions when messages are received over the same connection.

* SMS Gateway/SMPP Server: Fix for a bug where when NowSMS is acting as an SMPP server, if NowSMS tries to deliver an SMS message to a connected client, but the client does not acknowledge the message, and the client continues to send enquire_link packets, NowSMS will not attempt to deliver any other messages to the client. See http://support.nowsms.com/discus/messages/1/24483.html.

* SMS Gateway: Experimental - Add configuration option to allow the "SMSCRoute=" paramter to be used by SMPP client connections (e.g.,"SMS Users" connected to NowSMS via SMPP). Under an [SMPP] section header of SMSGw.INI, it is possible to add SMSCRouteTLV=####, where #### is the tag number (in hexadecimal). When NowSMS routes a message to an SMPP client, this TLV parameter will contain the route information for the SMSC route from which the message was received (either the SMSC Host Name and port, or the RouteName= parameter configured in SMSGw.INI for the SMSC). Similarly, the SMPP client can specify this parameter when submitting a message to request a specific outbound route for routing the message. See http://support.nowsms.com/discus/messages/1/24485.html.

2008-10-23:

* SMS Gateway/GSM Modem: Add additional modem test for proper implementation of the command that is used for sending SMS messages. Some modems return OK responses to commands that they do not understand, NowSMS now performs further checks to make sure that the modem actually understands all required commands. Previously NowSMS would return OK responses for some Blackberry devices, even though the devices did not implement the command correctly. Also, some of the virtual COM ports defined by the Sierra Wireless 3G devices exhibit this same behaviour. This check helps ensure that NowSMS is not configured to use a modem port that does not provide the required support. The new error message is "Modem does not properly support command for sending SMS (AT+CMGS)".

* SMS Gateway/GSM Modem: When using NowSMS with some modems, such as Sierra Wireless devices with the "Watcher" software enabled, other software that ships with the modem will process received messages before the messages are presented to NowSMS. NowSMS now polls the modem for both read and unread messages so that all messages will be processed. To disable this behaviour for a particular modem, edit SMSGW.INI, and under the [Modem - Driver Name] section header, add ProcessReadMessages=No.

* SMS Gateway/GSM Modem: The "SMS Message Storage" = "Default" receive SMS message handler has been updated to support a mix of polling and direct delivery. This is done primarily to resolve problems with new installations where NowSMS could not receive any messages from the modem until "SMS Message Storage" was set to the "Direct to Modem" setting. If upgrading from a previous version, and a problem is experienced with receiving SMS messages, change "SMS Message Storage" to the "Device Memory" setting for the "Default" setting to work as in previous versions.



2008-10-22:

* MMSC: Add support for outbound message throttling limits for sending messages via external "MMSC Routing" connections (e.g., MM7, MM4, MM1, EAIF). These limits can be defined by manually editing the VASPOUT\accountname\VASP.INI file, and under the [VASP] header, adding SendLimit=x/y where "x" is the number of messages that can be sent over a "y" second interval. If "y" is omitted, a value of "1" is assumed. For example, SendLimit=3 limits the connection to a speed of 3 messages per second. SendLimit=1/2 limits the connection to a speed of 1 message every 2 seconds.


2008-10-17:

* SMS Gateway/SMPP: Fix for potential "exception error" introduced in 2008 version, that could, under limited circumstances, when the debug log is active, trigger a NowSMS service restart when an SMPP connection teriminates unexpectedly.

2008-10-16:

* SMS Gateway/SMPP Server: Fix for a problem where if multiple receiver (or transceiver) binds existed for the same "SMS Users" account, duplicate messages could be delivered to the client.

* MMSC/MM4: Increase maximum supported length for X-Mms-Transaction-ID header from 99 to 249 characters. A customer connecting to France Telecom Open Transit MMS Interconnect was encountering extremely long transaction ids.

* SMS Gateway: Fix for situation where NowSMS would establish only a "receiver bind", even though "Receive SMS Messages" was not checked for the connection. This would happen if 1.) "Support any outbound message traffic" is NOT checked. 2.) The "Preferred SMSC Connection for" list is empty.
3.) Under "Advanced Settings", "Send and Receive Messages over the same connection" is NOT checked. It should happen only if these three conditions are met, and the "Receive SMS Messages" setting is also checked. For more information see http://blog.nowsms.com/2008/07/smpp-connection-types-sender-receiver.html and http://support.nowsms.com/discus/messages/1/24451.html.

2008-10-13:

* MMSC: Internal changes to migrate the VASPQ directory structure to use multiple subdirectories to better facilitate larger message queues and higher volumes of MMS message routing to external MMSC connections. This capability is only enabled by default on 5 messages per second or higher licenses. To enable or disable, edit MMSC.INI, and under the [MMSC] section header, add EnableBulkVASPQ=Yes (or No).

2008-10-09:

* 2-way SMS: Enhance mailto: command support for e-mail to SMS in the 2-way command facility by supporting additional parameters including cc, subject and body. For example, mailto:nowsms@nowsms.com?cc=nowsms@nowsms.net&subject=Received%20SMS%20Message&body=@@FULLSMS@@. See http://support.nowsms.com/discus/messages/1/24428.html.

2008-10-07:

* PAP/PPG interface: Add support for "?SMSCRoute=routname" parameter in PAP URL to specify explicit SMSC routing information. See http://support.nowsms.com/discus/messages/1/24429.html.

2008-10-01:

* MMSC/MM7: Remove trailing "-" characters from MIME boundary separator in MM7 postings, as this appears to be causing a problem with a particular mobile operator MMSC.

* UCP/EMI: Add configuration option to specify UCP/EMI error codes that should be considered a permanent error, so that NowSMS will not retry submitting the message. To specify error codes that should be considered as a permanent error, edit SMSGW.INI, and under the [SMSGW] header, add "UCPRejectErrorCodes=x,y,z". This value can contain a comma delimited list of UCP/EMI error codes. Values should be specified in decimal, e.g., "UCPRejectErrorCodes=21,23,24,25". If you are unsure what error code value your provider is returning for particular error situations, check the error codes listed in the NowSMS SMSOUT-yyyymmdd.LOG file. Alternatively, it is also possible to specify "UCPRejectErrorCodes=All", which indicates that all error codes should be considered a permanent error, so that NowSMS will not retry submitting the message.

* CIMD: Add configuration option to specify CIMD error codes that should be considered a permanent error, so that NowSMS will not retry submitting the message. To specify error codes that should be considered as a permanent error, edit SMSGW.INI, and under the [SMSGW] header, add "CIMDRejectErrorCodes=x,y,z". This value can contain a comma delimited list of CIMD error codes. Values should be specified in decimal, e.g., "CIMDRejectErrorCodes=300,301,302". If you are unsure what error code value your provider is returning for particular error situations, check the error codes listed in the NowSMS SMSOUT-yyyymmdd.LOG file. Alternatively, it is also possible to specify "CIMDRejectErrorCodes=All", which indicates that all error codes should be considered a permanent error, so that NowSMS will not retry submitting the message.

* SMPP: (This configuration option has existed since prior to NowSMS 2006, except for the SMPPRejectErrorCodes=All option which was added in this release.) Add configuration option to specify SMPP error codes that should be considered a permanent error (NowSMS will not retry the message). By default, NowSMS treats the following SMPP error codes as a permanent error: A (ESME_RINVSRCADR - invalid source address), B (ESME_RINVDSTADR - invalid destination address), 66 (ESME_RX_R_APPN - ESME Receiver Reject Message). To add additional error codes that should be considered as a permanent error, edit SMSGW.INI, and under the [SMSGW] header, add "SMPPRejectErrorCodes=x,y,z". This value can contain a comma delimited list of SMPP error codes. Values should be specified in hex, with no leading zeroes, e.g., "SMPPRejectErrorCodes=A,B,66". Alternatively, it is also possible to specify "SMPPRejectErrorCodes=All", which indicates that all error codes, except ESME_RTHROTTLED and ESME_RMSGQFUL should be considered a permanent error, so that NowSMS will not retry submitting the message. If you want to also treat ESME_RTHROTTLED and ESME_RMSGQFUL, it is also possible to include their error codes (58 for ESME_RTHROTTLED and 14 for ESME_RMSGQFUL) in this setting, e.g., "SMPPRejectErrorCodes=All,58,14".


2008-09-16:

* MMSC/MM4: MM4 Acknowledgment responses were returning the header "X-Mms-Request-Status-Code: OK". This has been changed to "X-Mms-Request-Status-Code: Ok" (mixed case "Ok") in order to be consistent with the relevant specification, and to address a real world interoperability issue at a customer site.

2008-09-09:

* SMPP Client: Work-around for delivery receipt processing with an operator SMSC which was returning delivery receipts using the same data_coding value as the original message to which the receipt corresponds, even though the receipt data did not match the coding. (For example, send a unicode message, the data_coding value of the receipt would indicate Unicode, but the actual text of the receipt was a mix of standard text with limited Unicode.) NowSMS now performs additional analysis to allow these receipts to reformat these receipts for correct interpretation.

* SMPP Client: Acknowledge unbind request if received from SMSC, and gracefully terminate connection.

* UCP/EMI Client: Enable translation of delivery receipt reports from UCP/EMI to SMPP format by default, so that applications can request delivery receipts in these environments. If this support needs to be disabled, edit SMSGW.INI, and under the [SMSGW] header, add TrackUCPReceipts=No.

* CIMD Client: Enable translation of delivery receipt reports from CIMD2 to SMPP format by default, so that applications can request delivery receipts in these environments. If this support needs to be disabled, edit SMSGW.INI, and under the [SMSGW] header, add TrackCIMDReceipts=No.


2008-08-26:

* MMSC/MM4: When receiving delivery report (MM4_Delivery_report.REQ) or read reply report (MM4_Read_Reply_report.REQ) transactions over MM4, when an acknowledgment is requested (X-Mms-Ack-Request: Yes), NowSMS would not send the corresponding acknowledgment response (MM4_Delivery_report.RES or MM4_Read_Reply_report.RES) unless a "Sender:" header is present to indicate where the acknowledgment response should be sent. This is all according to the 3GPP TS 23.140 specification, which specifies that "the 'Sender:' header is the system address, to which the corresponding response will be sent." However, in the real world, some MMSCs fail to set the "Sender:" header. This was observed recently with a customer connection to Telenity MMSC. In cases where the "Sender:" header is not present for a delivery report or read reply report where an acknowledgment is requested, NowSMS will now use the SMTP envelope "MAIL FROM:" header as an alternative.

* MMSC: For SMTP E-mail to MMS routing, all text components are now converted to UTF-8 to prevent character set rendering problems.

2008-08-22:

* SMPP: Improve performance of SMPP receipt tracking, which improves sending throughput over SMPP connections when delivery receipts are requested.

* GSM Modem handler update: Recent versions of the Multitech CDMA Modem have a bug in the implementation of the AT+CMGS command, if you experience the error "Error waiting for response from modem (1)", try editing SMSGW.INI, and under the [Modem - driver name] section header, try adding ModemSendWorkaround=Yes. This setting does not apply to the error "Error waiting for response from modem (2)" which is a different type of timeout error condition, from which this update may better recover on problematic modems.


2008-07-25 (only SMSSMPP.DLL updated for this release, version information still says 2008-06-24):

* SMPP: Work-around for strange SMPP SMSC behaviour with long text messages. This particular SMSC expected "Encode long text messages with 7-bit packed encoding" to be UNchecked when a text message is submitted with the default data coding (DCS) value. However, if the data coding specified a message class value, the SMSC would corrupt the message unless "Encode long text messages with 7-bit packed encoding" was checked. (With that setting checked, messages using the default encoding would be corrupt.) As a work-around, if dealing with this situation, edit SMSGW.INI, and under the [SMPP - host:port] section of the file, add GSMPackLongSMSWithMessageClass=Yes.

2008-06-24:

* MMSC: Possible fix for site that periodically experienced MMSC-yyyymmdd.LOG files with only a single entry.

2008-06-20:

* MMSC: MMSRoutingURL callbacks for delivery notifications and read receipts did not always have the "From" field present in the callback.

* MMSC/MM4: For delivery notifications routed via an MM4 connection, the MMSRoutingURL callback was being called multiple times. It is now only called once.

* MMSC/MM4: The message-id returned in delivery receipts and read receipts was not always properly converted to the local message-id before delivery, which could cause problems matching the receipts with the original message.

* MMSC: Versions prior to NowSMS 2006 logged when new user accounts were provisioned automatically to a file named USERDEF.LOG. This logging stopped when the new user database format was introduced in NowSMS 2006. The USERDEF.LOG file has been reenabled.

2008-06-03:

* Add configuration parameters to simplify support for running NowSMS in redundant load-balanced environments where all configuration information and transient messages are stored on a shared network server. To run NowSMS in this configuration, create a SHAREDVOLUME.INI in the NowSMS program directory. Under a header of [SharedVolume], the following settings are supported:

SharedVolume=\server\path\

The "SharedVolume" setting specifies a shared directory location under which NowSMS should look for all configuration files and store transient messages.

MessageIDPrefix=xxx

Specifies a prefix that should be added to all SMS message IDs generated by NowSMS. This ensures that the message IDs that NowSMS generates are unique across a multi-server installation. (Note: For installations that do not use SHAREDVOLUME.INI, it is also possible to specify this setting under the [SMSGW] header of SMSGW.INI.)

LogDirectory=d:\path\

Specifies a directory under which NowSMS should generate all log files other than debug logs. If not specified, this defaults to the NowSMS program directory.(Note: For installations that do not use SHAREDVOLUME.INI, it is also possible to specify this setting under the [SMSGW] header of SMSGW.INI.)

DebugLogDirectory=d:\path\

Specifies a directory under which NowSMS should generate any debug log files. If not specified, this defaults to the NowSMS program directory.(Note: For installations that do not use SHAREDVOLUME.INI, it is also possible to specify this setting under the [SMSGW] header of SMSGW.INI.)


2008-05-27:

* Fix for trial version not working on some Windows Vista systems, reporting immediately after installation that the trial period had expired.

2008-05-22:

* MMSC: When messages are routed to the MMS-IN directory via a routing definition in an "MMSC VASP" account, include an X-NowMMS-Received-From-VASP: header to record the routing information.

2008-05-21:

* SMS Gateway/SMPP: When async mode is NOT enabled, allow messages to continue to be received without delay, even when throttling conditions exist.

2008-05-15:

* MMSC/MM4: Fix for MM4 acknowledgment responses being rejected if the default outbound route for the MMSC is "Block/Reject Message". Users of previous versions who experience this problem can work-around it by applying the following settings: Go to the "MMSC Routing" page. Add a new route ... for the "Account Name" specify "system-user". For "Route messages to this account for recipient phone number", specify "system-user". For "Route messages to VASP via", specify "Direct Delivery (internal MMSC)". This will allow the MM4 ack messages to be processed correctly.

* SMS Gateway/SMPP: Fix timing issue for enquire link command which caused timing of the sending of the enquire link to occur as many as 10 seconds later than configured.

* SMS Gateway/MMSC: Add configuration parameter to allow debug log files to be stored in a directory other than the NowSMS program directory. Edit SMSGw.INI, and under the [SMSGW] header, add DebugLogDirectory=d:\path\ (Note: Previously this setting was available only in MMSC.INI for the MMSCDEBUG.LOG. That setting is still available, but if it is not set in MMSC.INI, the MMSCDEBUG.LOG will be stored in the directory pointed to by the setting in SMSGW.INI.)

* SMS Gateway/SMPP Client: Add configuration parameter to allow the "users" directory to be moved to another location other than beneath the NowSMS program directory. This directory contains queues of received messages waiting for SMPP or POP3 clients. Under the [SMSGW] header in SMSGW.INI, use UsersDir=d:\path\ or UsersDir=\Server\Volume\path\ to specify the location of the SMS "users" directory. When this parameter is set, the "SMS Users" database files (SMSUSERS.D2A and SMSUSERS.D2I) will also be located in this directory (by default, when this parameter is not set, these files are in the NowSMS program directory).

* MMSC: Add configuration parameter to allow the "MMSCUsers" directory and user database to be moved to another location other than beneath the NowSMS program directory. This directory contains statistical information regarding MMSC user transactions. Under [MMSC] header in MMSC.INI, use MMSCUsersDir=d:\path\ or MMSCUsersDir=\Server\Volume\path\ to specify the location of the "MMSCUsers" directory and user database. When this parameter is set, the "MMSC Users" database file (MMSCUSERS.DB) will also be located in this directory (by default, when this parameter is not set, this file is in the NowSMS program directory).


2008-05-07:

* GSM Modem handling - Various fixes to improve compatibility with recent Nokia phone GSM modem implementations, and bugs in Nokia's implementation of the AT+CMGS command that is used to send SMS messages. This fixes an issue that caused NowSMS to repeatedly send the same SMS message and report "Error waiting for response from modem (2)", until the retry counter was exceeded.

2008-05-05:

* SMPP - Improved handling of throttling errors when SMPP async mode is enabled.

2008-04-21:

* SMPP - Fix for a problem where recent versions have not properly passed the "Bind TON" or "Bind NPI" parameter in SMPP connection tests from the configuration dialog.

2008-04-16:

* CIMD: Add preliminary support for delivery receipts in CIMD environments. To enable this support, edit SMSGW.INI, and under the [SMSGW] header, add TrackCIMDReceipts=Yes. NowSMS will convert these delivery receipts into SMPP format. Experimental setting. Please enable SMSDEBUG.LOG for troubleshooting. (Enabling SMSDEBUG.LOG will also enable CIMDDEBUG.LOG)


2008-04-10:

* SMS Gateway: The SMSGW.INI SMSCSendLimit=x/y setting, which can limit the speed at which messages are sent via a specific SMSC connection, does not function well at speeds higher than 50 messages per second. The setting has been reworked to support throttling at higher speeds.

* MM7/EAIF: Keep-alive connections are now enabled by default when connecting to "MMSC Routing" definitions using the MM7 or EAIF protocols. "Keep-alive" support is automatically disabled if the service provider indicates that keep-alive is not supported (e.g., HTTP/1.0 protocol or "Connection: close" header). However, if this support causes problems for a particular MMSC connection, keep-alive support can be disabled for a specific "MMSC Routing" by editing the VASPOUT\routename\VASP.INI file, and adding UseKeepAlive=No under the [VASP] header. By default, if there are no further messages to transmit over the connection, NowSMS will keep the connection open for approximately 90 seconds waiting for additional messages to transmit before closing the connection. To change this timeout, edit VASPOUT\routename\VASP.INI, and add KeepAliveTimeout=### to specify the number of seconds for which the keep-alive connection should be kept open.

* MM4: When routing messages via MM4, NowSMS will now keep the SMTP connection active after transmitting a message, allowing multiple messages to be transmitted over the same connection. This "Keep-Alive" support can be disabled for a specific "MMSC Routing" by editing the VASPOUT\routename\VASP.INI file, and adding UseKeepAlive=No under the [VASP] header. By default, if there are no further messages to transmit over the connection, NowSMS will keep the connection open for approximately 90 seconds waiting for additional messages to transmit before closing the connection. To change this timeout, edit VASPOUT\routename\VASP.INI, and add KeepAliveTimeout=### to specify the number of seconds for which the SMTP connection should be kept open.

* SMPP: Additional logic added to detect SMPP connections that have been abruptly terminated by the service provider, so that NowSMS does not try to send any additional data once NowSMS has received a signal that the connection has been terminated.

* MMSC Routing: NowSMS now logs information about all MMS message delivery attempts for messages being routed via an "MMSC Routing" definition in the MMSC-yyyymmdd.LOG file, so that information about transmission retries and failures can be found in the logs.

* MMSC Routing: Connectivity error conditions for external "MMSC Routing" definitions is now displayed along with the SMSC connectivity error conditions on the "Service" page of the NowSMS configuration dialog. Additionally, the XML Status Query includes information regarding the connectivity status of these MMSC Routes, and the number of messages transmitted in a new "MMSCRouteStatus" section of the XML document.

* MMSC VASP Message Routing: The previous setting to allow received messages from a particular "MMSC VASP" account to be routed to a specific external MM7 "MMSC Routing" has been enhanced to support forced routings for all messages from a particular VASP to be routed via any specific MM7, MM4, MM1 or EAIF "MMSC Routing" definition.

* SMS/SMPP Receipt Message ID Tracking: Allow database files that are used for tracking SMPP receipt message IDs to be stored in a directory other than the default SMPPDATA directory. Under the [SMSGW] header of SMSGW.INI, it is possible to specify MessageIDTrackingDir=d:\path or MessageIDTrackingDir=\server\volume\path


2008-03-23:

* MMSC/MM1 over GPRS Modem: Fix for encoding problem when transmitting UTF-8 subjects over an MM1 connection.
2008-03-22:

* SMS Gateway/2-way: @@SMSCROUTE@@ parameter was not properly supported for 2-way commands. This replaceable parameter should contain the inbound route from which the SMS message was received.

* SMS Gateway/2-way: New configuration parameter added for [SMSGW] section of SMSGW.INI. 2WayReplySameServer=Yes specifies that replies from all 2-way commands should be routed back via the same SMSC connection as which the original message was received.

2008-03-14:

* SMS Gateway/SMPP: If SMPP connection has been terminated unexpectedly by the provider, do not attempt to send an unbind request before terminating our side of the connection. (Shouldn't be necessary, but may be required for acceptance testing by some operators.)

* SMS Gateway/SMPP: If SMPP connection has been terminated unexpectedly by the provider, use retry logic before attempting to re-establish the connection. (Previously, retry logic would only be applied only after an unsuccessful connection attempt, meaning that the retry attempt after an unexpectedly terminated connection was immediate.)

2008-03-05:

* SMS Gateway/SMPP: When NowSMS is bound to a service provider via SMPP with separate sender and receiver connections, if the SMPP connection fails, the retry logic for re-establishing the receiver connection is different from that of the sender connection. This causes problems, primarily for testing environments connecting to a SMPP server simulator, where the simulator won't send delivery receipts if a receiver connection is not bound simultaneously with the sender connection.