#!/usr/bin/perl
#
$argc = @ARGV;
#
if($argc != 2){
die "Usage:[1code]#!/usr/bin/perl
#
$argc = @ARGV;
#
if($argc != 2){
die "Usage:$0 宛先メールアドレス 対象メールボックス\n";
}
#
$file = $ARGV[1];
$file =~ s/^.*\///;
#
if($file eq "mbox"){
$user = $ARGV[1];
$user =~ s/\/mbox//;
$user =~ s/^.*imap\///;
$middle="imap";
}
else {
$user = $file;
$middle="pop"
}
#
$passwd = "/etc/passwd";
open(PIN, "<$passwd");
$acf = "0";
#
while(<PIN>){
@pw_nam = split(/:/, $_);
if($user eq $pw_nam[0]){
$acf = "1";
}
}
#
close(PIN);
#
if($acf eq "0"){
die "アカウント: $user が見つかりません。\n";
}
#
@new = ();
@argv = splice(@ARGV, 1, $argc, @new);
#
foreach $arg (@argv){
open(IN, "<$arg") || die "入力ファイル [$arg] が開けません。\n";
$fflg = "0";
$tflg = "0";
$sflg = "0";
$mflg = "0";
$cflg = "0";
$dflg = "0";
$elen = 0;
$cnt = 0;
$cond = "0";
@f = ();
$to = "";
@s = ();
@m = ();
@c = ();
while(<IN>){
if(/^From /){
if($dflg eq "1"){
close(OUT);
}
@f = ();
$to = "";
@s = ();
@m = ();
@c = ();
#
$fflg = "0";
$tflg = "0";
$sflg = "0";
$mflg = "0";
$cflg = "0";
$dflg = "0";
#
$elen = 0;
$cond = "0";
}
#
if(/^From: /){
$elen = @f;
if($fflg eq "0" && $elen != 0){
print "ファイル [$out] の \"From: \"行[$.] が曖昧。\n";
@f = ();
$fflg = "0";
}
else {
$fflg = "1";
$tflg = "0";
$sflg = "0";
$mflg = "0";
$cflg = "0";
}
}
elsif(/^To: /){
if($tflg eq "1"){
print "ファイル [$out] の \"To: \"行[$.] が曖昧。\n";
$to = "";
$tflg = "0";
}
else {
if($to eq ""){
$to = "To: $ARGV[0]";
$tflg = "1";
$fflg = "0";
$sflg = "0";
$mflg = "0";
$cflg = "0";
}
}
}
elsif(/^Subject: /){
$elen = @s;
if($sflg eq "0" && $elen != 0){
print "ファイル [$out] の \"Subject: \"行[$.] が曖昧。\n";
@s = ();
$sflg = "0";
}
else {
$sflg = "1";
$fflg = "0";
$tflg = "0";
$mflg = "0";
$cflg = "0";
}
}
elsif(/^MIME-Version: /){
$elen = @m;
if($mflg eq "0" && $elen != 0){
print "ファイル [$out] の \"MIME\"行[$.] が曖昧。\n";
@m = ();
$mflg = "0";
}
else {
$mflg = "1";
$fflg = "0";
$tflg = "0";
$sflg = "0";
$cflg = "0";
}
}
elsif(/^Content-/){
$elen = @c;
if($elen != 0){
# print "ファイル [$out] の \"Content\"行[$.] が曖昧。\n";
}
$cflg = "1";
$fflg = "0";
$tflg = "0";
$sflg = "0";
$mflg = "0";
}
elsif(/^$/){
if($dflg eq "0"){
$fel = @f;
$sel = @s;
if($fel != 0 && $to ne "" && $sel != 0){
$putd = "/home/cobra/Mail/";
$out = $putd."$user.$middle.$cnt";
open(OUT, ">$out") || die "出力ファイル [$out] が開けません。\n";
#
$cnt++;
#
foreach $buf (@f){
print OUT $buf;
}
print OUT "$to\n";
foreach $buf (@s){
print OUT $buf;
}
foreach $buf (@m){
print OUT $buf;
}
foreach $buf (@c){
print OUT $buf;
}
$cond = "1";
}
else {
if($fel == 0){
print "ファイル [$user.$middle.$cnt] の \"From: \" 行が見つかりません。\n";
}
if($to eq ""){
print "ファイル [$user.$middle.$cnt] の \"To: \" 行が見つかりません。\n";
}
if($sel == 0){
print "ファイル [$user.$middle.$cnt] の \"Subject: \" 行が見つかりません。\n";
}
}
#
@f = ();
$t = "";
@s = ();
@m = ();
@c = ();
#
$fflg = "1";
$tflg = "0";
$sflg = "1";
$mflg = "1";
$cflg = "1";
$dflg = "1";
}
}
else {
if($dflg eq "0"){
if(/^[A-Z].*:/){
if($fflg eq "1"){
$fflg = "0";
}
if($sflg eq "1"){
$sflg = "0";
}
if($mflg eq "1"){
$mflg = "0";
}
if($cflg eq "1"){
$cflg = "0";
}
}
}
}
#
if($dflg eq "0"){
if($fflg eq "1"){
push(@f, $_);
}
elsif($sflg eq "1"){
push(@s, $_);
}
elsif($mflg eq "1"){
push(@m, $_);
}
elsif($cflg eq "1"){
push(@c, $_);
}
}
else {
if($cond eq "1"){
print OUT;
}
}
#
}
close(IN);
close(OUT);
}
#
print "処理終了\n";
#
exit 0;[/code1] 宛先メールアドレス 対象メールボックス\n";
}
#
$file = $ARGV[1];
$file =~ s/^.*\///;
#
if($file eq "mbox"){
$user = $ARGV[1];
$user =~ s/\/mbox//;
$user =~ s/^.*imap\///;
$middle="imap";
}
else {
$user = $file;
$middle="pop"
}
#
$passwd = "/etc/passwd";
open(PIN, "<$passwd");
$acf = "0";
#
while(<PIN>){
@pw_nam = split(/:/, $_);
if($user eq $pw_nam[0]){
$acf = "1";
}
}
#
close(PIN);
#
if($acf eq "0"){
die "アカウント: $user が見つかりません。\n";
}
#
@new = ();
@argv = splice(@ARGV, 1, $argc, @new);
#
foreach $arg (@argv){
open(IN, "<$arg") || die "入力ファイル [$arg] が開けません。\n";
$fflg = "0";
$tflg = "0";
$sflg = "0";
$mflg = "0";
$cflg = "0";
$dflg = "0";
$elen = 0;
$cnt = 0;
$cond = "0";
@f = ();
$to = "";
@s = ();
@m = ();
@c = ();
while(<IN>){
if(/^From /){
if($dflg eq "1"){
close(OUT);
}
@f = ();
$to = "";
@s = ();
@m = ();
@c = ();
#
$fflg = "0";
$tflg = "0";
$sflg = "0";
$mflg = "0";
$cflg = "0";
$dflg = "0";
#
$elen = 0;
$cond = "0";
}
#
if(/^From: /){
$elen = @f;
if($fflg eq "0" && $elen != 0){
print "ファイル [$out] の \"From: \"行[$.] が曖昧。\n";
@f = ();
$fflg = "0";
}
else {
$fflg = "1";
$tflg = "0";
$sflg = "0";
$mflg = "0";
$cflg = "0";
}
}
elsif(/^To: /){
if($tflg eq "1"){
print "ファイル [$out] の \"To: \"行[$.] が曖昧。\n";
$to = "";
$tflg = "0";
}
else {
if($to eq ""){
$to = "To: $ARGV[0]";
$tflg = "1";
$fflg = "0";
$sflg = "0";
$mflg = "0";
$cflg = "0";
}
}
}
elsif(/^Subject: /){
$elen = @s;
if($sflg eq "0" && $elen != 0){
print "ファイル [$out] の \"Subject: \"行[$.] が曖昧。\n";
@s = ();
$sflg = "0";
}
else {
$sflg = "1";
$fflg = "0";
$tflg = "0";
$mflg = "0";
$cflg = "0";
}
}
elsif(/^MIME-Version: /){
$elen = @m;
if($mflg eq "0" && $elen != 0){
print "ファイル [$out] の \"MIME\"行[$.] が曖昧。\n";
@m = ();
$mflg = "0";
}
else {
$mflg = "1";
$fflg = "0";
$tflg = "0";
$sflg = "0";
$cflg = "0";
}
}
elsif(/^Content-/){
$elen = @c;
if($elen != 0){
# print "ファイル [$out] の \"Content\"行[$.] が曖昧。\n";
}
$cflg = "1";
$fflg = "0";
$tflg = "0";
$sflg = "0";
$mflg = "0";
}
elsif(/^$/){
if($dflg eq "0"){
$fel = @f;
$sel = @s;
if($fel != 0 && $to ne "" && $sel != 0){
$putd = "/home/cobra/Mail/";
$out = $putd."$user.$middle.$cnt";
open(OUT, ">$out") || die "出力ファイル [$out] が開けません。\n";
#
$cnt++;
#
foreach $buf (@f){
print OUT $buf;
}
print OUT "$to\n";
foreach $buf (@s){
print OUT $buf;
}
foreach $buf (@m){
print OUT $buf;
}
foreach $buf (@c){
print OUT $buf;
}
$cond = "1";
}
else {
if($fel == 0){
print "ファイル [$user.$middle.$cnt] の \"From: \" 行が見つかりません。\n";
}
if($to eq ""){
print "ファイル [$user.$middle.$cnt] の \"To: \" 行が見つかりません。\n";
}
if($sel == 0){
print "ファイル [$user.$middle.$cnt] の \"Subject: \" 行が見つかりません。\n";
}
}
#
@f = ();
$t = "";
@s = ();
@m = ();
@c = ();
#
$fflg = "1";
$tflg = "0";
$sflg = "1";
$mflg = "1";
$cflg = "1";
$dflg = "1";
}
}
else {
if($dflg eq "0"){
if(/^[A-Z].*:/){
if($fflg eq "1"){
$fflg = "0";
}
if($sflg eq "1"){
$sflg = "0";
}
if($mflg eq "1"){
$mflg = "0";
}
if($cflg eq "1"){
$cflg = "0";
}
}
}
}
#
if($dflg eq "0"){
if($fflg eq "1"){
push(@f, $_);
}
elsif($sflg eq "1"){
push(@s, $_);
}
elsif($mflg eq "1"){
push(@m, $_);
}
elsif($cflg eq "1"){
push(@c, $_);
}
}
else {
if($cond eq "1"){
print OUT;
}
}
#
}
close(IN);
close(OUT);
}
#
print "処理終了\n";
#
exit 0;
|