Table of Contents

1 Overview

Rpipe is a simple tool for forwarding the content of a local file to the stdin of a program running on a remote host via TCP. The tool was created as a prog mailer to deliver messages to a docker container running GNU Mailman 2.x1.

Rpipe implements a slightly modified version of TCPMUX2 protocol. The same binary (rpipe) serves both as a server (on the remote end) and as a client (on the local end). See the Example section below.

2 Istallation

To build and install the packaged version, the usual procedure applies:

sudo make install

There is a number of options that modify the behaviod of configure. The most important of them is --prefix, which sets the installation prefix directory. By default, that directory is /usr/local, which means that the rpipe binary will be installed in /usr/local/bin. To install it in /usr/bin, run

./configure --prefix=/usr

For a detailed description of the installation procedure, refer to the documentation of configure.


Packaged releases of rpipe are available for download from https://download.gnu.org.ua/release/rpipe/.

The recent releases are:

rpipe-1.8.tar.gz (sig), 2021-05-17
Checksums (MD5, SHA1):
6e2edc913e4b78f1272d3831ac67d287  rpipe-1.8.tar.gz
534794957e8f4e4b89eda40984a25be0579c340e  rpipe-1.8.tar.gz
rpipe-1.7.tar.gz (sig), 2021-05-12
Checksums (MD5, SHA1):
848f3ccf11df8f4b7a16e83dd4941f6e  rpipe-1.7.tar.gz
8935213d7b8d62302fc15567279896ebfff22b16  rpipe-1.7.tar.gz
rpipe-1.6.tar.gz (sig), 2021-05-09
Checksums (MD5, SHA1):
9dab739e79cbb386821f8b290aabd0ac  rpipe-1.6.tar.gz
730939e1ea8db26dedfdd163776918a38910e518  rpipe-1.6.tar.gz

Use the PGP signature files (marked as sig in the listing above) to verify that the corresponding tarball is intact. First, import the author's PGP key:

gpg --keyserver keys.gnupg.net --recv-keys 3602B07F55D0C732

Then, run the following command:

gpg --verify rpipe-1.5.tar.gz.sig

4 Example

The following configuration allows the system administrator to run mailman 2.x in a docker container and to distribute messages via the usual list mechanism using MTA on the host machine.

4.1 Server configuration

The container exposes TCP port 1 and runs the following command:

/usr/bin/rpipe -s -vv -udaemon -gsmmsp /opt/mailman/mail/mailman

The -s option tells it to run as a server. The two -v options select maximal output verbosity. Diagnostics will be issued to the standard error. The -u and -g options specify the user and group to run mailman as. The only non-optional argument supplies the full pathname to the binary to run when a request is accepted from the client.

For a detailed description of rpipe command line options, see rpipe(1).

The rpipe utility runs in foreground.

4.2 Client configuration

Normally Mailman-based mailing lists are configured as follows (using sendmail-style aliases):

some-list:       "|/opt/mailman/mail/mailman post some-list"
some-list-admin: "|/opt/mailman/mail/mailman admin some-list"

Just replace the program name after the pipe symbol, so that your list setup becomes:

some-list:       "|/usr/bin/rpipe -a post some-list"
some-list-admin: "|/usr/bin/rpipe -a admin some-list"

Replace with the actual IP of the container.

5 Documentation

The documentaion for rpipe is available online.

6 Other references:

7 Bug reports

If you think you found a bug in rpipe or in its documentation, please send a mail to Sergey Poznyakoff or use the web bug tracker.

8 License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, 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 General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.


Author: Sergey Poznyakoff

Created: 2021-05-17 Mon 21:27

Emacs 25.3.1 (Org mode 8.2.10)