Avatar
Hund

# emerge life

XMPP via the command-line with sendxmpp

sendxmpp is a XMPP client for the command-line. It’s basically a Perl-script and it’s intended to be an alternative to sendmail.

I use it for my servers to notify me about various events that you would normally use something like sendmail for. Two examples is that rTorrent sends me message when it has finished downloading a new torrent, which is handy since it automatically downloads torrents from a local folder that I share via the network and I don’t always have the session with rTorrent open to check its progress.

The other example is that it send the regular reports from Logwatch via XMPP, which is something I used to do via sendmail.

And here’s how it works:

Arch Linux:

$ echo "Hello world" | /usr/bin/site_perl/sendxmpp --tls-ca-path="/etc/ssl/certs" -t hund@example.tld

Debian:

$ echo "Hello world" | /usr/bin/sendxmpp --tls-ca-path="/etc/ssl/certs" -t hund@example.tld

I had issues with some Bash script when I didn’t specify the static path to be binary on both my Arch Linux and Debian machines, which is why I use the full path. I also had to use the flag --tls-ca-path="/etc/ssl/certs" for it to work with TLS.

The rTorrent script

The script for rTorrent looks like this:

#!/bin/bash
echo -e "New torrent!\n\n$1" | /usr/bin/sendxmpp --tls-ca-path="/etc/ssl/certs" -t hund@example.tld

And in my $HOME/.rtorrent.rc I added this:

method.set_key = event.download.finished,notify_xmpp,"execute2=/home/johan/Scripts/rtorrent-xmpp.sh,$d.name="

Installation

It’s available in the official repositories for Debian and Gentoo Linux as sendxmpp and net-im/sendxmpp. If you’re running Arch Linux you need to turn to the AUR; sendxmpp and sendxmpp-git.

Configuration

The configuration file is $HOME/.sendxmpprc and my configurations looks like this:

username: hund
jserver: example.tld:5222
component: example.tld
password: ***

And don’t forget to set some stricter permissions for the configuration:

$ chmod 600 ~/.sendxmpprc

That should be all. :)

Credits

A big thanks to vanad.is and the blog post “Send system cronjob output via XMPP”. It’s where I found out about this neat client.

Feedback

I don't have a commenting system on my blog since there's no good solutions that works without JavaScript, is user friendly and respects both the users freedom and privacy. So for now, all feedback and hellos can be done via either e-mail, XMPP or Mastodon.