sms4you forwards messages from and to SMS and connecting it with with Extensible Messaging and Presence Protocol (XMPP). Nice for receiving or sending SMS, independently from carrying a SIM card.
Connect a suitable GSM modem or phone containing a SIM card into a computer (e.g. a Raspberry Pi) at a fixed place. Give sms4you access to a small xmpp server. It will use this connection to receive xmpp messages to be sent out as SMS and to send out xmpp messages with received SMS messages.
There can be many reasons, why you want to use sms4you. Here are some examples:
sms4you is implemented as a Python daemon, using Asynchronous I/O and depends on the following python packages:
In addition it requires the following services to be installed on the system:
For the connection with the modem it uses ModemManager it will be accessed via DBus and your modem must, of course, be supported by ModemManager.
For the connection with XMPP a suitable server must be running on the system, e.g. Ejabberd or Prosody, which at least has s2s
connection to the outside world.
Add the following lines to your prosody configuration, e.g. /etc/prosody/prosody.cfg.lua:
Component "sms4you.localhost" component_secret = "Mb2.r5oHf-0t"
$ sudo addgroup --force-badname --system _sms4you $ sudo adduser --force-badname --home /nonexistent \ --ingroup _sms4you --no-create-home --system _sms4you $ sudo cp sms4you.conf /etc/dbus-1/system.d/ $ sudo cp sms4you.pkla /var/lib/polkit-1/localauthority/30-site.d/ $ sudo chown root:_sms4you /etc/sms4you/{sim_pin,xmpp_component_password} $ sudo chmod 640 /etc/sms4you/{sim_pin,xmpp_component_password}
Save the password (Mb2.r5oHf-0t) in /etc/sms4you/xmpp_component_password.txt. and configure the XMPP account (JID), which should be allowed to send and receive SMS in /etc/sms4you/sms4you.ini:
USER_JID=user@jabberserver.foo.bar
You probably need to configure more details in /etc/systemd/system/sms4you-xmpp.service. Look at the command line arguments: /usr/local/sbin/sms4you-xmpp --help.
Copyright (C) 2019-2025
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements.
See the LICENSE for the full license text.