--- /dev/null
+#! /bin/sh
+# Depends: lockfile-progs, ssh
+set -e
+
+if [ -z "$1" ]; then
+ echo "Usage: $0 hostname" 2>&1
+ exit 1
+fi
+
+DIR="$HOME/.bsmtp"
+mkdir -p "$DIR"
+cd "$DIR"
+
+HOST="$1"
+
+# TODO: Note that this scheme may currently lose mail if the local disk
+# fills up! This is obviously very bad. Fix this.
+
+# By default, lockfile-create gives up after three minutes, so don't cron
+# this any more frequently than that without supplying a --retry argument.
+lockfile-create "$HOST"
+lockfile-touch "$HOST" &
+TOUCH="$!"
+trap 'kill "$TOUCH"; lockfile-remove "$HOST"' EXIT ERR HUP INT QUIT TERM
+
+ssh -2 -C "$HOST" bsmtp-pull-server > "$HOST"
+[ -s "$HOST" ] || exit 0
+/usr/sbin/sendmail -bS < "$HOST"
+rm -f "$HOST"
+
+exit 0
--- /dev/null
+#! /bin/sh
+set -e
+
+DIR="$HOME/bsmtp"
+FILE="riva.debian.net"
+TRANSIT="$FILE.transit"
+
+cd "$DIR" || exit 0
+
+# Is there anything to send?
+[ -s "$FILE" ] || exit 0
+
+lockfile-create "$FILE"
+lockfile-touch "$FILE" &
+TOUCH="$!"
+trap 'kill "$TOUCH"; lockfile-remove "$FILE"' EXIT ERR HUP INT QUIT TERM
+
+if [ -f "$TRANSIT" ]; then
+ cat "$FILE" >> "$TRANSIT" && rm -f "$FILE"
+else
+ mv -f "$FILE" "$TRANSIT"
+fi
+
+cat "$TRANSIT"
+rm -f "$TRANSIT"
+
+exit 0