SMS Server Tools

Version history

28.6.2007    2.2.18
This release solves missing last digit in phone numbers in received messages. It also fixes some minor string buffer overflows.

27.6.2007    2.2.17
Random characters in alphanumeric sender names have been fixed and a non-critical string termination bug has been fixed.

23.6.2007    2.2.16
This release fixes a documentation bug regarding the [provider] section in config file. The program has been changed to support both keywords now [provider] and [providers] as well as [queue] and [queues]. Singular/plural does not matter anymore.

15.5.2007    2.2.15
Fixed a string termination bug that causes sporadic program termination when sending messages with linefeed characters or when mixing dos/unix linefeed at the delimiter between header and message body.

11.1.2007    2.2.14
The main program has been changed to create its own process group which ensures that smsd kills only its own child processes when the program exits. And it ignores the SIGHUP signal now to keep smsd running even if the user who started smsd logs out or closes the terminal windows.

2.12.2006    2.2.13
A buffer error reading the config file has been resolved.

24.11.2006    2.2.12
A small bug in the example script mysmsd has been resolved. It did not read status reports properly.

18.11.2006    2.2.11
A security issue in syslog() call has been resolved.

04.11.2006    2.2.10
A wrong string termination has been fixed that causes error message "Could not find device [] in config file." on Ubuntu 6.10 and possibly also other operating systems.

25.09.2006    2.2.9
Two bugfixes have been applied: The "s" prefix to phone numbers and the UDH header line did not work.

18.09.2006    2.2.8
The example eventhandler has been changed to concatenate incoming long messages even if the parts arrive in scrambled order.

04.09.2006    2.2.7
Some regular expressions have been modified to get better performance on Solaris 5.9 and maybe also other versions. The startup script and also the pkill script have been changed to kill only the desired program and not all programs that have the given keyword in the command line arguments. The example event handler script smsevent has been enhanced to concatenate received multipart text messages.

15.08.2006    2.2.6
This release fixes missing status report for all sent messages.

28.07.2006    2.2.5
Fixed wrong counters. New config option to skip statistic files when there was no activity. Program receives now one message between sending each part of multipart messages when receiving has high priority. Program terminates now gracefully after SIGTERM and SIGINT signal instead of cancelling all operations.

08.07.2006    2.2.4
If "receive before send" option is enabled, then the program reads one received before sending each part of a long message. Previously, the program did this only one time before sending the first part. Received files have no correct permissions according to umask command.

30.06.2006    2.2.3
3 Bugfixes: Two log messages did not fill placeholders with values, modem handler crashes sporadically after receiving a short message, program does not set UDH flag properly in concatenated messages.

14.06.2006    2.2.2
Bugfix: Text messages without "UDH: false" header were not splitted.

06.06.2006    2.2.1
Bugfix: The main spooler duplicated itself after a serial port was not accessible. Program exits more cleanly after a fatal error.

31.05.2006    2.2.0
New feature: The program can now send concatenated messages.

27.05.2006    2.1.2
New feature: The program can now send text messages with self-created UDH.

26.05.2006    2.1.1
New feature: Added two scripts that convert hex-dump to decimal numbers and binary files.

23.05.2006    2.1
New feature: Raw support of UDH in text messages. Please note that the header of received text messages has now one more line, so you might need to modify your programs that read these files.
Bugfix: In binary messages, the UDH flag was not detected properly.

26.03.2006    2.0.7
Replaced the workaround from version 2.0.6 by a config file option.

26.03.2006    2.0.6
Added an automatic workaround for receiving SMS with Vodafone Connect Card GPRS/UMTS

21.03.2006    2.0.5
Bugfixes: The installation script creates basic spool directories. Smsd does not ignore report=yes in config file anymore.
Enhancements: Config file options are also detected if they begin with capital letters. Added support for greek character set (capital letters only).

21.02.2006    2.0.4
This release fixes empty modem name in logfile entries and alarm_handler.

25.01.2006    2.0.3
This release resolves a name conflict with stdio.h in recent Cygwin versions.

20.01.2006    2.0.2
Smsd can now send eMail files without conversion. It automatically finds phone numbers in the To: field even if there is a Name and/or an eMail address in the same line. The phone number must be prefixed with a + in this case. Example: "Stefan +491721234567".

23.12.2005    2.0.1
Fixed a small bug in install.sh script. And the program does not block the modem anymore after every 3rd successful message.

23.12.2005    2.0
No change.

28.9.2005    1.16.1 and 2.0.testing-4
After 3 failed sending attempts, the last failed file goes now immediately into the failed directory.

17.10.2005    2.0.testing-3
Program does not try to use an undefined directory anymore when you try to send a message to unknown provider and use the provider sorting function. Init strings work now fine. Program does now call global eventhandler for received messages if no modem specific eventhandler exists.

10.10.2005    2.0.testing-2
Program does now detect ERROR answer after AT+CMGR command. It does not try to delete memory space 0 and it does not write empty or broken messages file anymore after failed read attempt.

05.10.2005    2.0.testing-1
This release is a major rewrite of version 1.16. It combines smsd, getsms and putsms into one single pogram. This reduces disk and cpu load and it should fix problems with special characters in messages that the shell cannot pass properly though command line arguments. This release introduces a high risk of new bugs because I modified nearly everything. Please do not use this version in a productive envirronment. But please test it for me if you like to support the delevlopment.

28.9.2005    1.16
The program supports now 2 init strings. But I think only very few users need this.

27.8.2005    1.15.7
The program passes now the ID of sent messages to eventhandler when statusreport is disabled in the config file but requested in the sms file.

16.8.2005    1.15.6
The autosplit configuration setting can be overridden in each sms file. A bug with hanging open temporary files has been fixed (introduced in version 1.15.5).

12.8.2005    1.15.5
Status reports can now be requested or disabled in each sms file to override the config file setting. The loglevel setting affects also syslog, which is specially useful for "BusyBox" systems. The program outputs a warning if a statuseport is accidently requested while receiving is disabled. Some cleanups were done on the whole source code to get rid of compiler warnings.

11.8.2005    1.15.4
Fixed a typo that caused an endless loop when the program waited for a modem answer. Added some debug and error messages to make troubleshooting modem communication easier.

08.8.2005    1.15.3
Problems with USB devices under Windows are now completely resolved by a good workaround and a bugfix in CygWin.

04.8.2005    1.15.2
Time between sending of characters can be slowed down to workaround problems with modems that do not support hardware handshake. Bugfix: smsd passed wrong -l option to the sub-programs when logging destination was not configured.

29.7.2005    1.15.1
The program getsms garbled received messages randomly.

19.7.2005    1.15
This release is a major code cleanup, including some new features and bugfixes:
New: Support for unicode.
New: Sending a sigle-quote character is now possible
New: Program generates helpful log messages for unknown characters, it's now much easier to add new characters to the conversion tables.
Changed: Serial port timing and message flow for better performance and better error handling.
Changed: Defaults statistic=disabled and cs_convert=enabled.
Changed: Program aborts now if whitelist or blacklist is not readable.
Changed: I rewrote major parts for less CPU load and better readable source code.

19.7.2005    1.14.11
Bugfix: The SMSC number was not sent to the modem, when the modem received a message before the first message was sent.

9.4.2005    1.14.10
This version fixes a bug. Empty lines and lines that contain only a comment matched all pone numbers in blacklist and whitelist. Now those empty lines are ignored.

5.4.2005    1.14.9
I inserted some delays in write() commands to workaround USB driver issues.

8.12.2004    1.14.8
Fixed a bug where the length of destination phone number was calculated wrong when it had an odd number of digits and was precedded by an s.

2.10.2004    1.14.7
The program and all its sub-programs are now running in an individual process group. Previously, smsd killed some other programs accidently on exit. This does not happen anymore.

5.9.2004    1.14.6
The blacklist and whitelist format has been changed. You can now write abbreviated numbers in both list. For example 44 stands for all destinations in UK. Sending to short numbers is now possible by preceeding them with an "s".

26.7.2004    1.14.5
The keyword "spool" in config files has changed to "outgoing". The old keyword works still for compatibility.

26.7.2004    1.14.4
During modem initialisation the program send a pdu-string termination character to the modem. This is necessary after a program stop while sending a message. Otherwise the modem may not be ready to answer commands after program restart.

21.4.2004    1.14.3
Smsd crashed always with a segmentation fault when killed. When no provider queues were set in the config file, the program did not check outgoing messages against blacklist, whitelist and checkhandler. These bugs were introduced with version 1.13 and are now fixed.

6.4.2004    1.14.2
Fixed a memory leak in smsd.

5.3.2004    1.14.1
I wrote new Makefiles that look better.

2.03.2004    1.14.1
Bugfix: Config file option "spool=dir" was ignored when no provider queues were used.

24.02.2004    1.14
You can now override the SMSC number of the config file by setting it in the SMS file.

22.02.2004    1.13.1
Fixed a bug where the progran sent more init strings than neccessary to the modem after trying to read an empty receive-buffer.

09.01.2004    1.13
Removed default usage of provider queues and added some functions for quick and easy start with much smaller and easier configuration file. However, the program can still read configuration files from older version properly.

31.10.2003    1.12.5
Changed putsms to make two retries instead of one, when sending failes. Added a script useful to resend failed messages.

03.10.2003    1.12.4
Fixed two bugs: putsms did not send binary messages that start with 0x00. Getsms and putsms did not write error messages when command line arguments were wrong or missing.

06.09.2003    1.12.3
Changed the script email2sms to make email to sms conversion more convenient. Now the receivers number is in the To field instead of the Subject field. Caution: the eMail format is not backward compatible!

08.08.2003    1.12.2
Fixed a bug where SMSD scrambles configuration file when modem names are similar (e.g. Modem and Modem2)

09.07.2003    1.12.1
Swapped order of init string and PIN. Some modems do not accept the init string before the PIN is entered.

26.06.2003    1.12
Fixes a bug where the program was not able to decode some messages with alphanumeric sender. Status monitor can now be piped to sed.

19.05.2003    1.11
This version initializes the modem faster and has better error messages when the modem does not initialize. It has a better init string in the default configuration file.

06.05.2003    1.10.4
Fixed a bug: the whitelist and blacklist files were not closed by smsd.

12.04.2003    1.10.3
Changed the output method of statusmonitor to allow redirection to shell scripts or into files.

06.04.2003    1.10.2
Fixed a bug where the Smsd main task always crashes with segmentation fault when using chechandler. Sorry for this stupid bug.

03.04.2003    1.10.1
Smsd writes now in the logfile when it was started and when it was stopped, together with its version number. No new version number because this change is very small.

02.04.2003    1.10.1
Hopefully fixed a bug with crashing getsms when a message with alpahnumeric sender is received. I cannot reproduce this problem because there is nobody who can send me such messages. Please tell me if this patch works.

26.03.2003    1.10.0
Added support for checkhandler. This is a program that check the validity of each sms file in the outgoing queue and tells smsd if it is allowed to send it or not.

29.01.2003    1.9.0
Added full support for status reports in a mysql database: The status codes are now logged in the same rows as the sent messages.
Again better error messages when smsd cannot move or delete files. Better error messages when statistic files cannot be written. Fixed wrong date format in the fileformat documentation.

28.01.2003    1.8.2
Better error messages when smsd cannot move or delete files. Changed the script sendsms for Solaris compatibility.

22.01.2003    1.8.1
Allows path names longer than 256 characters if the operating system support them. Some minor changes in startup script were made for Solaris 6 compatibility.

18.01.2003    1.8.0
Uses lockfiles when moving and opening files in the outgoing spool directory. Adds support for alpanumeric sender names in received short messages.

20.11.2002    1.7.8
Space and other special characters in alarmhandler name are now allowed.

20.11.2002    1.7.7
Fixes a bug where messages are rejected when there is no whitelist.

15.11.2002    1.7.6
Adds support for a whitelist, and a Step by Step instruction for Windows.

15.11.2002    1.7.5
Smsd surrounds the modem init string in single quotes. This allows you to use double quotes in the init string that are needed for some modem commands.

7.9.2002    1.7.4
This version has a new config file option to disable part numbers in splitted SM. It has a few patches for problems with some cygwin versions.

23.8.2002    1.7.3
This version adds support for extended characters (^{}\[]~|¤). Some minor changes to the example scripts are made and the documentation is updated.

21.8.2002    1.7.2
Added a small patch for OpenBSD (wrong baudrate setting). Changed the date format in all places to YY-MM-DD or YYYY-MM-DD. Removed timestamp from the log-message "SMS received, From...." and added a new alarm- and log-message for "SMS sent, To...". Fixed a bug in mode=ascii where the seconds of timestamp were wrong. Fixed trailing F in MSISDN numbers with odd digits.
Important note for updates: The new date format may affect other programs, for example eventhandler.

19.7.2002    1.7.1
Fixed compile problem on Solaris when statistics are enabled. Fixed wrong exit code of getsms when a status report was received. Fixed wrong argument to eventhandler (RECEIVED instead of REPORT) after receive of status report.

21.6.2002    1.7.0
Added Support for Flash SMS.

18.6.2002    1.6.3
Changed path of temporary statistic file to allow multiple instances of smsd at the same time. Changed timing in putsms to save about 5 seconds when sending messages. Bugfix: Smsd ends no longer in an endless loop if the modem answers with ERROR when sending messages. New feature: You can now select the priority between sending and receiving.

13.6.2002    1.6.2
Some changes for Mobile Number Portability. Compiling is now possible without the mm library (without statistic functions). Character set conversion improved. Received SM are stored with a received-timestamp. Fixed missing manual in tar.gz file.

12.6.2002    1.6.1
Option to force flush of the first SIM card memory before sending SM. This is a workaround for modems that cannot send SM with a full SIM card. Faster by omitting some AT-commands that are not necessary for every access to the modem.

06.06.2002    1.6.0
Quotes (') are not replaced by asterisks (") anymore and because the SM character set does not have backquotes. New options: option to call external alarm handler, option to disable splitting of long SMS files, option do disable hardware handshake. New feature: logging of sent messages, received messages and status reports into mysql database

24.4.2002    1.5.4
Fixed compile problems on Windows.

23.4.2002    1.5.3
Bug with detection of UDH flag in sms files (was sometimes ignored). Program does not hang anymore if CTS is inactive.

20.4.2002    1.5.2
You can send binary messages without UDH flag. One user asked me for this feature.

19.4.2002    1.5.1
Changed loglevel of message text in getsms to LOG_DEBUG. Fixed hanging program if modem does not respond.

04.04.2002    1.5.0
no change

28.03.2002    1.5.0_beta
New Feature: The program can decode SMS Status Reports. Needs to be tested.

15.03.2002    1.4.9
The status monitor does not show status for removed modems anymore.

09.03.2002    1.4.8
Another security fix. Smsd replaces ' by " to avoid execution of programs by using ' combined with backquotes.

06.03.2002    1.4.7
Added a patch to enable log in into roaming partner network. Security fix to disable execution of programs by using backquotes in the message text. Patch to enable sending of line feed characters.

24.01.2002    1.4.6
All professional features are now free. Added check for wrong file permissions in queue directories.

24.01.2002    1.4.5
Some Workarounds for Motorola Timeport.

21.01.2002    1.4.4
The program can now read more than 10 memory spaces and getsms is faster.

11.01.2002    1.4.3
Bugfix: Crash when calling smsd -d and using the loglevel option.

19.12.2001    1.4.2
Bugfix: Program opened very much files in /tmp without closing them.

7.12.2001    1.4.1
Bugfix for spool-directories with more than 31 characters length.

4.12.2001    1.4.0
New option to use a log file instead syslog.

1.12.2001    1.3.9
Some changes to make the program Windows compatible. I will change the logging mechanism to enable a log file in Windows.

16.11.2001    1.3.8
Bugfix: Program stopped to read the outgoing queue on empty files.

10.11.2001    1.3.7
Bugfix: Corrected wrong position of -- in putsms call.

4.11.2001    1.3.6
Bugfix: Smsd can now send message that begin with a dash.

3.10.2001    1.3.5
Bugfix: Exception when using -h. New: Support for 57600-230400 bps.

30.9.2001    1.3.4
Bugfix: Workaround for Solaris 8 bug where getsms and putsms does not always return 0 (=success) by default.

28.8.2001    1.3.3
Bugfix: Problem with missing OK answer on some modems.

28.8.2001    1.3.2
Added an option to keep sent messages in a sent directory.

16.8.2001    1.3.1
Simplified syntax of config file. Space chars before and after = is neccessary and it is now Ok to put characters after ]. Added support for a black-list.

11.8.2001    1.3.0
Syslog logs now the modem name instead of port name. Added statistic files and status info.

24.7.2001    1.2.11
Added option -e and errorsleeptime to specify a sleep time for retries after ERROR answer. This prevents putsms to block (hopefully in all cases).

22.7.2001    1.2.10
Fixed the bug that all SM got a trailing space character by smsd.

20.7.2001    1.2.9
Change priority of send queue. Each modem sends all SM before receiving them. This should improve performance for some users. Fixed a bug: SM with 157-160 characters were sent twice.

23.06.2001    1.2.8
Detects ERROR answer without leading \r\n because some modems answer with ERROR followed by an error code. Getsms reports the senders SMSC if available.

20.05.2001    1.2.7
Bugfix. ERROR-answer for AT+CMGS in mode new.

20.5.2001    1.2.6
Workaround for Siemens S25 to enable receive of more than 1 SMS.

19.05.2001    1.2.5
Added an option to request status report SMS. Added individual eventhandler settings. Note: Receive of status reports is in experimental state.

02.04.2001    1.2.4
Changed retry method inc ase the modem answers with ERROR. Changed decoding of recieved SMS to avoid trailing F in pone numbers.

22.03.2001    1.2.2
Added configurabe modem init string. Small bugfix in putsms for retrying of AT+CMGS. Fixed wrong PDU flags for binary in mode=new.

20.03.2001    1.2.1
Modified for Solaris compatibility.

12.03.2001    1.2.0
Support for Yaps removed. Support for binary files added. Changed Message class from 02 to 01.

18.12.2000    1.1.2
Addes M20 senders name support for ascii mode.

16.12.2000    1.1.1
Added support for the senders name. This is a special feature of Siemens M20. New option -k to getsms wich isused in debug mode to keep received SMS in the modems memory. Added support for digicom modems.

16.12.2000    1.1.0
Added support for character set conversion. Putsms makes 1 retry if sending failed. Updated documentation. Full support of PID file. Better killing: The main thread kills now all childs if killed itself.

09.12.2000    1.0.11
Added a + to ascii sms, added creation of a pid file. Modified getsms to support pdu sms without alpha field. Changed the file mode of all incoming sms.

29.11.2000    1.0.10
Modified option -d to show only used variables. Increased the max. number of queues, devices and numbers to 16. Fixed a bug where smsd forgot to give the pin to getsms.

28.11.2000    1.0.9
Removed buggy option -b and changed startup script. Sorry Folkert, but your patch does not work if we start smd -b using a script.

25.11.2000    1.0.8
Increased all read timeouts to support very slow modems.

04.11.2000    1.0.7
Fix to a bug: The receive buffer for the modem was sometimes overfilled so the answers from the modem were not received correctly.

23.09.2000    1.0.6
Two tiny bugfixes (removed an unneeded space between command line option caused by an unwanted linebreak in the source). Support for ascii mode instead of pdu mode. Another bugfix where smsd ignored the command line option for the config file path.

13.09.2000    1.0.5
Many bugfixes and improvements by Folkert van Heusden. Changed the way how getsms outputs the received SMS. Added an option to set the baudrate. Change the way of logging to syslog. Changed the default baudrate to 19200 and the mode to new because most users need these settings. Removed excelexport because there is no logfile anymore. Maybe I will include it again later.

30.07.2000    1.0.4
Added a new config option to set the smsc of each modem. Changedthe debug output of "smsd -v3" to higher verbosity. Changed smsd that the option mode and smsc are optional.

25.07.2000    1.0.3
Added a new config option to set if the old or new PDU version should be used (mode and -m). This makes the programs compatible to newer Modems mich are full ETSI GSM 07.05 compatible.

20.07.2000    1.0.2
Changed the way of giving the PDU string to the modem. Now it will be terminated by Ctrl-Z (was \r).

13.06.2000    1.0.1
Added a sample script to build an "email to sms" gateway. Support for longer From: fields (was 32 chars).

05.06.2000    1.0
Added a patch wich enable national character at the Beginning and at the End of SMS. All Sources were translated into english. This is the final release 1.0. Removed a small bug where smsd gives wrong filename to the event handler.

08.04.2000    1.0 beta 4
I added a new config file option that allows you to run an event handler(external program) every time a messages was sent or received.

07.04.2000    1.0 beta 3
I added a new config file option that allows us to set delay after that smsd checks the queues if there were no files before.

12.03.2000    1.0 beta 2
New files in the outgoing directory are checked whether they change in size before reading them. This solved the problem that smsd tried to read new files during their creation (without lock file). Added some example startup scripts.