3.6 KiB
Listen to messages from the SMS Forwarder app on Android and send mail.
Installation
Use uv
(https://docs.astral.sh/uv/getting-started/installation).
Easy way to install uv
on Debian:
apt install -y pipx && pipx install uv
Configuration
Configuration is done by environment variables, prefixed by SMS_HANDLER_
:
SMS_HANDLER_MAIL_SENDER
: origin email address (default: @localhost)SMS_HANDLER_MAIL_TO
: destination email address (default: @localhost)SMS_HANDLER_MAIL_SERVER
: address of the mail server (default: localhost)SMS_HANDLER_MAIL_SERVER_PORT
: port of the mail server (default: 25)SMS_HANDLER_MAIL_SERVER_START_TLS
: initiate mail server connection with TLS (default: no)SMS_HANDLER_MAIL_TEMLATE
: used to format the body of the mailsSMS_HANDLER_MAIL_ENABLE
: no or false to disable mails (default: yes)
The default settings assume that a mail server runs on the localhost, and mails are sent to the user that owns the process.
SMS handler app configuration
Set the Webhook URL with as https://your.server.name:8025/sms-handle
.
The URI path /sms-handle
is not configurable.
Run
In foreground
fastapi run server:app
Try fastapi --help
for configuration of the server:
port, address to listen on, etc. For example:
fastapi run server:app --port 8025
As a deamon (Systemd)
Create a service as follows.
Pass the settings for the web server (listen address, port) in the ExecStart statement,
and the parameters as Environment=MAIL_SERVER_START_TLS=yes
.
[Unit]
Description=SMS handler
[Service]
ExecStart=fastapi run server:app
Environment=SMS_HANDLER_MAIL_SENDER=snoopy@peanuts.com
Environment=SMS_HANDLER_MAIL_TO=snoopy@peanuts.com
Restart=on-failure
[Install]
WantedBy=default.target
Container
Use podman
or docker
:
podman run tiptop:5000/sms_handler
Pass parameters like this:
```sh
podman run -e SMS_HANDLER_MAIL_SERVER_PORT=8025 -e SMS_HANDLER_MAIL_SENDER=snoopy@peanuts.com SMS_HANDLER_MAIL_TO=snoopy@peanuts.com tiptop:5000/sms_handler
Container as a systemd service
Systemd can "orchestrate" containers easily thanks to podman.
Rootlass (as regular user)
For a rootless container, create a file in .config/containers/systemd/sms-handler.container
:
[Container]
ContainerName=sms-handler
Environment=SMS_HANDLER_MAIL_SENDER=snoopy@peanuts.com
Environment=SMS_HANDLER_MAIL_TO=snoopy@peanuts.com
Image=tiptop:5000/sms_handler
Network=podman
PublishPort=80°25:8025
[Service]
Restart=always
[Install]
WantedBy=default.target
Request systemd to reload configuration, creating the service for this container:
systemctl --user daemon-reload
Start the container as a service:
systemctl start sms-handler.service
To start rootless containers at boot time, without the need for the user (snoopy) to log in:
sudo loginctl enable-linger snoopy
Rootful (as root)
For a rootless container, create a file in /etc/containers/systemd/sms-handler.container
:
[Container]
ContainerName=sms-handler
Environment=SMS_HANDLER_MAIL_SENDER=snoopy@peanuts.com
Environment=SMS_HANDLER_MAIL_TO=snoopy@peanuts.com
Image=tiptop:5000/sms_handler
Network=podman
PublishPort=80°25:8025
[Service]
Restart=always
[Install]
WantedBy=default.target
Request systemd to reload configuration, creating the service for this container:
sudo systemctl daemon-reload
Start the container as a service:
sudo systemctl start sms-handler.service