summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--procmailrc.example17
-rwxr-xr-xsfeed_maildir21
2 files changed, 38 insertions, 0 deletions
diff --git a/procmailrc.example b/procmailrc.example
new file mode 100644
index 0000000..5f0e517
--- /dev/null
+++ b/procmailrc.example
@@ -0,0 +1,17 @@
+# Example for use with sfeed_maildir.
+# The header X-Feedname is used to split into separate maildirs. It is assumes
+# this name is sane.
+
+MAILDIR="$HOME/feeds/"
+
+:0
+* ^X-Feedname: \/.*
+{
+ FEED="$MATCH"
+
+ :0 Wh: "msgid_$FEED.lock"
+ | formail -D 1024000 ".cache/msgid_$FEED.cache"
+
+ :0
+ "$FEED"/
+}
diff --git a/sfeed_maildir b/sfeed_maildir
new file mode 100755
index 0000000..099bc13
--- /dev/null
+++ b/sfeed_maildir
@@ -0,0 +1,21 @@
+#!/bin/sh
+# Uses procmail to format mbox to maildir, see procmailrc.example.
+# Copy procmailrc.example to $procmailconfig (see below).
+# Depends on: procmail, formail, sfeed_mbox.
+
+maildir="$HOME/feeds"
+feedsdir="$HOME/.sfeed/feeds"
+procmailconfig="$HOME/.sfeed/procmailrc"
+
+# message-id cache to prevent duplicates.
+mkdir -p "${maildir}/.cache"
+
+find "${feedsdir}" -type f -exec printf '%s\n' {} \; | while read -r d; do
+ (name=$(basename "${d}")
+ mkdir -p "${maildir}/${name}/cur"
+ mkdir -p "${maildir}/${name}/new"
+ mkdir -p "${maildir}/${name}/tmp"
+ printf 'Mailbox %s\n' "${name}"
+ sfeed_mbox "${d}" | formail -s procmail "${procmailconfig}") &
+done
+wait