NowSMS Update Release 2011.07.05

Posted by on Jul 12, 2011 in Software Updates, Support Blog

Topic Keywords:

An updated release of the Now SMS & MMS Gateway is currently available at  Use the executable file in this ZIP to update an existing NowSMS installation.

This document details the update release history since the previous official release, version 2010.11.04.  Release history for the changes prior to the current official release can be found at

Customers running any earlier 2011 interim release of NowSMS are strongly encouraged to update to this release due to a number of problems that exist in earlier 2011 interim releases. (If upgrading is not possible, as a  precaution delete the file NLS.INI if it exists in the Program Files\NowSMS directory, which will disable SMS shift table support that was introduced earlier this year.  Note that this recommendation applies only to NowSMS 2011 releases prior to 2011.07.05.  Do not delete this file if running NowSMS 2011.07.05 or later.)

Highlights of this update:

1.) Configuration changes no longer require a NowSMS service restart.  The NowSMS service will activate configuration changes without requiring a full service restart.

2.) Updated web interface templates (we know … the old ones were perfectly functional, but yes, they were a throwback to web 1.0, or possibly web 0.5).

3.) Increased administrative capabilities from the web browser.  In addition to statistics and log files, it is possible to view alerts, recent activity, inbound and outbound messages.  It is also possible to add and update user accounts.

4.) Easier configuration of logical SMSC Route Names (as compared to server addresses in earlier releases).

5.) SMS Shift Table Support (of interest primarily for those working with Turkish and Portuguese languages, as well as for handset developers/testers working to add support for SMS shift tables in languages of the Indian subcontinent).  For more information, see

6.) SMPP connections can define multiple transmitter and/or receiver sessions.

7.) SMPP relay improvements – Support for absolute format validity_period settings, support for additional values in message_state TLV parameters.  Also accounting callbacks can now have the capability to modify TLV parameters, as well as source and destination addresses.

8.) MM4 – Addressed an issue with missing originator/From fields for messages from a particular operator.

9.) E-mail alert improvements (can use SMTP authentication and SSL/TLS to send out via an account).

10.) Numerous accounting callback enhancements (more detailed information can be found in the release notes).

11.) Local PHP script support.  NowSMS can now host PHP scripts directly, so that you do not need to configure an external web server for hosting 2-way commands or accounting callbacks.  For more information, see

12.) SMPP – Improved handling of throttling errors especially as an effort to keep multiple parts of a segmented message from being separated.

There are numerous other minor updates that are detailed in the release history information below.  The release history information provides additional information on configuration settings that have been added to address unusual configuration requirements.


  • SMS Gateway: SMS accounting callbacks can now be used to route messages to an external SMSC account, or to a local user account. When the “SMSSend” accounting callback is issued, it is possible for the callback to return SMSCRoute=routename in the HTTP response to specify an external route via which the message should be routed, or SMSCRoute=localuser:username to route the message to a local user account.
  • SMPP: message_state TLV parameter is now set according to the text of the delivery receipt. Previously a value of 5 (undeliverable) was used for all undeliverable status conditions. Most notable, a value of 3 is now correctly used for messages that were marked expired.
  • Web Interface: Update “Send Text Message” HTML form to address issue where Chrome and Firefox count a line break as one character, but when posting the message, post two characters instead. (Counter now counts two characters for a line break, assuming the browser will post two characters.) IE counts two characters and posts two characters.
  • SMS Gateway: Add support for prefix number conversion when submitting SMS messages to an SMSC connection in order to deal with situations where a particular provider requires national or international number format. In the SMSC specific section of SMSGW.INI (e.g., [Modem – modem driver name] or [SMPP – server:port]) the following settings are now supported to apply number prefix conversions for inbound or outbound messages: OutRecipPrefixConvert, OutSenderPrefixConvert, InRecipPrefixConvert, InSenderPrefixConvert. These settings apply to sender (source) and recipient (destination) addresses, as denoted in the settings name. Prefix conversions can be a comma delimited list, such as 00:+,0:+44 In this case, 0044777777777 is converted to +44777777777, and 0777777777 would be converted to +44777777777. For outbound messages, the conversion occurs before the message is submitted via this SMSC connection. For inbound messages, it is applied as the message is received from the SMSC connection.
  • 2-way SMS: Add support for @@SMSCROUTEID@@ replaceable parameter to contain the unique route name identifier (e.g., “Modem – Driver Name” or “SMPP – host:port”). If the same route name is assigned to multiple connections, the route name is used for @@SMSCROUTE@@. @@SMSCROUTEID@@ allows distinction of which connection the message was received form.
  • SMS Gateway: Add SMSGW.INI [SMSGW] setting, UserOutboundQueueLimitInterval=## to specify the delay interval between user queue size scans when the UserOutboundQueueLimit=## setting is used.
  • SMS Gateway: Fix for exception errors related to improper decoding of some messages that make use of a single shift table.


  • SMPP: Absolute format validity_period setting is now supported from SMPP clients. HTTP clients can also use the “&Validity=” parameter to submit a validity_period setting in SMPP format. (SMPP format validity period will only be forwarded to upstream SMPP connections.
  • MMSC: MmsMessageSizeLimit=#### (value in KB) setting in MMSC.INI now also applies to MM7 and MM4 submissions.
  • MMSC: Handle situation where the HTTP POST from an MM7 client includes a host name in the POST URL. Normally the POST URL in the HTTP request only includes a host name in the URL if the submission is being routed via an HTTP Proxy. MMSC already handles this case for MM1 submissions, but not for MM7 submissions until this release. (According to HTTP 1.1 specification, servers must accept this format, but client should not generate this format unless posting via an HTTP proxy.)


  • 2-way SMS: Additional fix for restarts associated with a bug introduced in 2011.05.23 version for 2-way SMS messages that include SMPPOptions parameters.


  • SMS Gateway: Fix for a resource leak that can be caused by inbound SSL connnections (HTTP or SMPP) that do not complete the SSL handshake.


  • 2-way SMS: Fix for restarts associated with a bug introduced in 2011.05.23 version for 2-way SMS messages that include SMPPOptions parameters.


  • MM4: Fix for a problem where messages received from a particular operator had a missing originator/From field. This was caused by unexpected horizontal tab characters being included in the SMTP “From:” header. According to the SMTP specification, these horizontal tab characters are legal, and NowSMS needs to ignore them.


  • SMS Gateway Startup: Move most database integrity checks to a background thread so as to not delay startup.
  • 2-way SMS commands with mailto: links: Support routing e-mail non-delivery messages back to sender if message undeliverable.


  • SMS Gateway: Fix for 2011-05-23 interface reporting errors with the SMPP server if an SSL port number for SMPP is not defined.
  • SMS Gateway: Route names are now supported in the configuration interface to make it easier to work with SMSC connections. “SMSOUT” and “SMSIN” accounting callbacks now include “&SMSCRouteName=” parameter.
  • SMS Gateway: Fix for problem where server would not take extra time to shutdown if HTTP SSL connections are supported.


  • SMS Gateway Web interface:  Update NowSMS web user interface templates.
  • SMS Gateway:  Web Administration Access is now associated as an attribute to an “SMS Users” account, instead of being a separate login identity.
  • SMS Gateway:  E-Mail alerts can now specify to be sent via a mail server that requires with SMTP Authentication & SSL/TLS.
  • SMPP: Configuration program supports defining the number of simultaneous transmitter and/or receiver sessions to be associated with an SMPP SMSC connection.
  • HTTP SMSC: Configuration program supports defining the number of simultaneous HTTP transmitter sessions to be associated with an HTTP SMSC connection.
  • SMPP: Seldom used configuration parameters for specifying the local TCP port that the SMPP client should bind to have been removed from the configuration program interface. These parameters continue to be supported by manual configuration file entries under the [SMPP – server:port] section header of SMSGW.INI: SenderPort=#### specifies the local TCP port to be used for the transmitter or transceiver session, and ReceiverPort=#### specifies the local TCP port to be used for the receiver session.
  • SMPP:  Fix for [SMPP] / DeliveryReceiptFlag=Yes not working properly. (Only worked properly if set as [SMPP] / DeliveryReceiptFlag=1)
  • SMS Gateway:  Fix for SMS service restarts/exception errors that could be triggered by updating the SMSGW.INI file. (Problem was introduced in 2011.03.15 update.)
  • SMS Gateway: Fix for service restarts that could occur when using the web administrative interface.
  • SMS Gateway & MMSC:  Various configuration restarts no longer require a service restart. (SMSC connections can be added/deleted/modified without requiring a restart. Configuration changes will take effect within within approximately 60 seconds.)
  • Accounting callbacks now have the ability to change sender/recipient values (useful for source address translation when routing messages), and the ability to modify service type, validity and defined SMPP TLV parameters. This capability is enabled in the “SMSSend” and “SMSIN” accounting callbacks when SMSAccountingAllowChanges=Yes is defined in the [SMSGW] section of SMSGW.INI. When this setting is present, NowSMS will parse the HTTP response for “SMSSend” and “SMSIN” accounting callbacks looking for “To=”, “Sender=”, “ServiceType=”, “Validity=” and “SMPPOption_xxxx=” settings. If any of these text strings are present, the value that follows will be used to replace the existing value. (In the case of SMPPOption_xxxx=, a blank value will completely remove the parameter.) It is recommended that the HTTP response terminate the value with a new line to act as an end of value string delimiter.
  • SMPP: TLV parameters defined in GSM Assocation IR.75 are automatically supported by default using the HexString encoding: SMPPOption_source_subaddress (0x202) and SMPPOption_dest_subaddress (0x203). For more information, refer to
  • Retrieving SMS messages via POP3: Fix for carriage return/line feed in an SMS message appearing as \r\n when converted to e-mail format. Also add sender phone number to subject line of message.
  • SMPP Client: Previously NowSMS tracked upstream SMPP message IDs only if the client asked for a delivery report (or non-delivery report). However, many SMPP servers always return delivery reports, which can cause confusion, because if NowSMS did not track the upstream message ID, it will not know how to route it or resolve the message ID. NowSMS now always tracks the upstream SMPP message ID, unless TrackSMPPReceiptsAlways=No is set under the [SMSGW] header of SMSGW.INI.
  • MMSC: Include “MMSStatus=” in “MMSDeliveryReport” callbacks. Status values are extracted from the MMS specifications. Possible values include “Retrieved” (success), “Expired”, “Rejected”, “Deferred”, Unrecognised”, “Indeterminated”, “Forwarded”, “Unreachable” and “Unknown”.
  • MMS Proprietary URL Submission: Include “MMSMessageID=” parameter in accounting callback for MMS message submissions via this interface.
  • MMSC: Reduce DNS query timeouts that can backlog the processing of MM4 acknowledgments, especially when the “MM4 Ack Route” has not been set for a connection.
  • MMSC: Fix for bug receiving MMS messages via MM4 which included filenames that have a “?” character in the filename.
  • E-Mail to SMS: When routing e-mail to SMS, a new configuration option supports tracking the e-mail sender address, so that an SMS reply can be routed back to the original e-mail sender. Note that when this tracking option is enabled, if multiple e-mail senders send to the same SMS phone recipient, NowSMS cannot distinguish which e-mail address should receive the reply, and the reply will be directed to the most recent e-mail sender. To enable this tracking, add SMSEMailTrackSender=Yes to the [MMSC] section of MMSC.INI. If it is possible for NowSMS to send/receive SMS using multiple SMS numbers, NowSMS can use the multiple SMS numbers to improve tracking if multiple e-mail addresses send to the same SMS recipient. To define the SMS sender numbers to be used for e-mail to SMS, add SMSEMailSender= to the [MMSC] section of MMSC.INI. SMSEMailSender supports a comma delimited list of sender numbers, and also supports ranges of sender numbers such as 800001-800100 to allocate a sequential range of numbers.
  • SMS Gateway: Additional subdirectories created to prevent situations where a large SMS-IN queue makes the system unstable.
  • SMS Gateway: NowSMS can now host PHP scripts locally (accounting callbacks, 2-way commands) without requiring an external web server. Further information and details are avaialble at


  • SMS Gateway: Add configuration parameter to allow customisation of the maximum message length for automatic message segmentation to allow for smaller segments that may be necessary in some environments. These settings can be configured under the [SMSGW] section header of SMSGW.INI, using the following parameters: MaxSMSSegmentLengthText=160 and MaxSMSSegmentLengthBinary=140
  • 2-Way SMS: Previously NowSMS would only retry a 2-way SMS command if the connection to the web server failed or a timeout error occurred. It would not retry the command if the web server returned an HTTP error (such as 500 Internal Error), and would simply rename the message file to have a .BAD extension. This version changes the behaviour to perform retries with progressive delays, similar to the processing of outbound SMS messages. By default, NowSMS uses the same retry parameters as described at To define retry parameters specific to 2-way SMS processing, place them under a [2Way] section header in SMSGW.INI, instead of under the [SMSGW] section. If a server hosting a 2-way command is down and is not accepting connections or not returning a valid HTTP response, NowSMS continues to retry the 2-way command indefinitely, but it does introduce a progressive delay for these retries.
  • MMSC: Performance optimisation for configuration front end open and displaying statistics, particularly on a multiple server installation, where if the configuration program were open simultaneously on multiple servers, it would become sluggish or unresponsive until other copies were closed.
  • 2-Way MMS: Add configuration option to simplify processing received MMS messages so that they can be posted to a PHP script via HTTP. Previously, it was necessary to create an “MMSC Routing” definition to point to a PHP script. That mechanism is still supported, but it is also possible to now define a 2-way MMS POST URL on the “2-way” page of the configuration. The URL defined on this page will process any received MMS messages that get posted to the MMS-IN directory. The format of the POST uses the PHP format described at


  • Configuration Program: Update font selection for configuration program to address issues where some installations were seeing text that was too large to display in the window.
  • SMS Gateway: Fix for problem that could occur if an automated program submitting messages via HTTP uses multiple user accounts over a single HTTP connection. If some user accounts have “forced sender address” configured, and some do not, the “forced sender address” from a previously accessed account would be applied to submissions from an account with no “forced sender address” setting. Note that this could only occur if a program was submitting over a single HTTP connection using multiple user accounts for different message submissions.


  • SMS Gateway: Fix for web interface not working properly with Firefox. (Problem introduced with late 2010 update to enable keep alive sockets.)


  • MMSC: Fix for problem in a multiple server installation (SHAREDVOLUME.INI) where only one front-end would actively listen for connections for MMS messages converted to SMS. (Fix was attempted in 2011-03-15 version, but did not completely fix the problem.)


  • SMS Gateway: Add configuration setting to limit individual user accounts from flooding the outbound message queue. This setting enforces a maximum number of queued messages that any individual user account can have pending in the outbound message queue. If a user attempts to submit additional messages when over the limit, a throttling error will be returned. To enable this throttling, the setting UserOutboundQueueLimit=##### must be added to the [SMSGW] section of SMSGW.INI. The ##### value sets a default maximum outbound message queue size to be applied to all user accounts. (A special value of 0 means no limit, but enables non-default settings to be applied to individual user accounts.) To override the default setting for individual user accounts, create an [UserOutboundQueueLimit] section, and add username=##### to this section to enable a limit for a specific user account. (A value of 0 will disable limits for that user account.) Note that queue size monitoring experiences a 30 to 60 second delay, so it is possible that users may slightly exceed configured limits. Also note that for SMPP accounts, care is taken to ensure that a throttling error does not occur in the middle of a multipart message transmission.
  • SMS Gateway: Improved handling of “User Queue Size Threshold” to prevent problems where SMPP user accounts could be allocated multiple queue directories, giving extra priority to that account.
  • SMS Gateway: The SMSGW.INI SMSCSendLimit=x/y setting, which can limit the speed at which messages are sent via a specific SMSC connection, was not functioning accurately at higher speeds. The setting has been reworked to support throttling at higher speeds.
  • SMS Gateway: Fix for changes to the [Inbound SMS Routing] table (used for routing received messages to local user accounts based upon recipient address matching) not automatically being reloaded by the server without a restart.
  • 2-Way SMS Command Processor: Fix for a problem where a message with invalid UDH could be posted repeatedly to a 2-way command. The problem could occur if the user data header indicated a multipart message where the current part number was larger than the number of indicated message parts.


  • SMS Gateway: Add configuration option to duplicate SMPP receipts being routed to a local SMPP user account, so that they are also routed to 2-way command processing. This setting would be used when an installation needs to process all delivery receipts via a 2-way command. To enable this option, edit SMSGW.INI, and under the [SMSGW] header, add DuplicateUserReceiptsFor2Way=Yes.


  • SMPP Server: Fix for a change first introduced in 2010-05-20 version which could cause extra null messages to be delivered to connected SMPP clients. This problem could only potentially occur if a client had multiple receive (or transceive) connections open to the NowSMS SMPP server.
  • MMSC: Change MM7 transaction ID format to not include @ character, due to suspcion that this was causing a problem for a particular provider.


  • MM7: When AllowAlphaRecip=Yes is enabled, use <Number> instead of <ShortCode> for the recipient address type, even if it is not a number.
  • Configuration program opens LOG files using the default program for the .LOG extension instead of always using Notepad.


  • MMS via GPRS Modem: Fix for problem introduced in 2010.11.04 version where MMS messages would not be retrieved from some operator MMSCs, particularly T-Mobile USA.


  • Web Interface: Fix for problem sending pre-compiled MMS messages via the “Send MMS Message” web interface that could cause these messages to become corrupted.
  • SMS Gateway/SMPP Client: When a throttling error occurs, additional logic requeues the message that triggered the error so that several retries will be attempted without requiring a pass through the entire message queue before the message is retried. This is necessary for proper handling of multipart segmented messages, so that if one part of the message encounters a throttling error, it can still be transmitted within the same window as other parts of the message when the outbound message queue is very full.
  • MM7: Don’t add extra CRLF before closing MIME boundary as this might be confusing some Java libraries.


  • MMSC: Fix for problem where the message ID in a delivery receipt was not formatted correctly (“/” characters changed to “.”) for delivery receipts that arrived via an MM4 connection. This prevented sending clients from being able to correctly resolve delivery receipts.
  • SMS Gateway: Fix for web admin interface only sending the first 16KB when attempting to remotely download log files.

For comments and further discussion, please click here to visit the NowSMS Technical Forums (Discussion Board)...