chiark / gitweb /
bsmtp-pull, bsmtp-pull-server: Initial implementation of batch SMTP
[bin.git] / bsmtp-pull-server
diff --git a/bsmtp-pull-server b/bsmtp-pull-server
new file mode 100755 (executable)
index 0000000..031b2b1
--- /dev/null
@@ -0,0 +1,27 @@
+#! /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