how it works ?
mhonarc_by_month.pl path_to_platal.mrc name_of_the_list mbox1 [mbox2 [mbox3 ...]]
path_to_platal.mrc is the path to platal.mrc
name_of_the_list is for example polytechnique.org-br (HAS TO BE LOWERCASE)
mboxes are UNGZIPPED mboxes, in any order
this script ADDS mails to the archive, so you can give to him mboxes one by one if you want.
for example :
mhonarc_by_month.pl ./my.mrc polytechnique.org-foo foo.mbox.stamp1
mhonarc_by_month.pl ./my.mrc polytechnique.org-foo foo.mbox.stamp2
is equivalent to :
mhonarc_by_month.pl ./my.mrc polytechnique.org-foo foo.mbox.stamp1 foo.mbox.stamp2
it adds the archive in /var/spool/platal/archives/
moreover, /var/spool/platal/archives/attachments/ MUST exists, other directories are created on the fly.
/var/spool/platal/archives/ can obviously be a symlink
--- /dev/null
+#! /bin/perl -w
+#
+use strict;
+
+my $rcfile = shift;
+my $list = shift;
+my $spool = "/var/spool/platal/archives/";
+my $tmpbox = "mytmpbox.mbox";
+
+my %conv;
+$conv{'Jan'} = "01";
+$conv{'Feb'} = "02";
+$conv{'Mar'} = "03";
+$conv{'Apr'} = "04";
+$conv{'May'} = "05";
+$conv{'Jun'} = "06";
+$conv{'Jul'} = "07";
+$conv{'Aug'} = "08";
+$conv{'Sep'} = "09";
+$conv{'Oct'} = "10";
+$conv{'Nov'} = "11";
+$conv{'Dec'} = "12";
+
+my $mail = "";
+my $line = "";
+my $odir = "";
+
+my $y = '';
+my $m = '';
+
+
+while(<>) {
+ $line = $_;
+ if($line =~ /^From +[^@ ]*@[^@ ]* +[a-z]* +([a-z]*) +\d* +\d*:\d*:\d* +(\d*)$/i) {
+ if ($conv{$1} ne $m || $y ne $2) {
+ if($odir) {
+ close FILE;
+ $odir = $spool.$list."/$y/$m";
+ system("mkdir -p $odir") unless (-d $odir);
+ system("mhonarc -add -outdir $odir -rcfile $rcfile $tmpbox");
+ } else {
+ $odir = 1;
+ }
+
+ $m = $conv{$1};
+ $y = $2;
+ open FILE,"> $tmpbox";
+ }
+ }
+ print FILE $line;
+}
+
+if($odir) {
+ close FILE;
+ unlink $tmpbox;
+}