summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2018-07-24 12:04:33 +0800
committerSean Whitton <spwhitton@spwhitton.name>2018-07-24 12:05:18 +0800
commit00cb798ee0a2ef6b373786647e8c4bf00bfd8194 (patch)
tree6f02afbd20fbf5fcccd8f1c57b315a28e3480c99
parent2cda13a86c8a8911b5d0f2b35423baa334f1aae6 (diff)
downloadmailscripts-00cb798ee0a2ef6b373786647e8c4bf00bfd8194.tar.gz
new script: mbox2maildir
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
-rw-r--r--Makefile2
-rw-r--r--debian/install1
-rw-r--r--debian/manpages1
-rwxr-xr-xmbox2maildir45
-rw-r--r--mbox2maildir.1.pod35
5 files changed, 83 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 41b17c9..bcd734e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-MANPAGES=mdmv.1
+MANPAGES=mdmv.1 mbox2maildir.1
all: $(MANPAGES)
diff --git a/debian/install b/debian/install
index 78d679a..6912f70 100644
--- a/debian/install
+++ b/debian/install
@@ -1 +1,2 @@
mdmv /usr/bin
+mbox2maildir /usr/bin
diff --git a/debian/manpages b/debian/manpages
index ef97a1f..70548a8 100644
--- a/debian/manpages
+++ b/debian/manpages
@@ -1 +1,2 @@
mdmv.1
+mbox2maildir.1
diff --git a/mbox2maildir b/mbox2maildir
new file mode 100755
index 0000000..34335e4
--- /dev/null
+++ b/mbox2maildir
@@ -0,0 +1,45 @@
+#!/usr/bin/python3
+
+# mbox2maildir -- convert an mbox to a maildir using Python's libraries
+
+# Copyright (C) 2018 Sean Whitton
+#
+# 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 of the License, 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/>.
+
+# Credits:
+
+# Daniel Kahn Gillmor pointed me to Python's mailbox library and made
+# the suggestion in Debian bug #863570 that it could be used for the
+# purpose of converting a mbox to a maildir.
+
+import sys
+import mailbox
+
+def eprint(*args, **kwargs):
+ print(*args, file=sys.stderr, **kwargs)
+
+us = os.path.basename(sys.argv[0])
+
+if len(sys.argv) != 3:
+ eprint(us + ": usage: " + us + " MBOX MAILDIR")
+ sys.exit(1)
+
+source_path = sys.argv[1]
+dest_path = sys.argv[2]
+
+source = mailbox.mbox(source_path)
+dest = mailbox.Maildir(dest_path)
+
+for message in source:
+ dest.add(message)
diff --git a/mbox2maildir.1.pod b/mbox2maildir.1.pod
new file mode 100644
index 0000000..afc839d
--- /dev/null
+++ b/mbox2maildir.1.pod
@@ -0,0 +1,35 @@
+=head1 NAME
+
+mbox2maildir - convert an mbox to a maildir using Python's libraries
+
+=head1 SYNOPSYS
+
+ mbox2maildir MBOX MAILDIR
+
+=head1 DESCRIPTION
+
+B<mbox2maildir> is a very simple wrapper around Python's mailbox
+library that converts an mbox to a maildir. The maildir may already
+exist, in which case the messages in the mbox are added to the
+maildir.
+
+B<mbox2maildir> is an alternative to the venerable B<mb2md>, which
+fails to process some mboxes that are out there.
+
+=head1 OPTIONS
+
+None.
+
+=head1 BUGS
+
+Hopefully different bugs to those of B<mb2md>.
+
+=head1 SEE ALSO
+
+mb2md(1), mbox(5), maildir(5)
+
+=head1 AUTHOR
+
+B<mbox2maildir> was written by Sean Whitton
+<spwhitton@spwhitton.name>. The suggestion of using the Python
+mailbox library for this purpose is due to Daniel Kahn Gillmor.