
 |

PGP :: Mails per Script verschlüsseln
Der Mailversand einer PGP-Mail erfolgt auf die gleiche Weise, wie sonst auch: sendmail,
blat oder smtp. Der einzigste Unterschied ist, daß der eigentlich Text vorher durch ein
Unterprogramm per PGP verschlüsselt. Daher eignet sich die Methode auch für die
Verschlüsselung von Textdateien und ähnlichem.
#$mailtmp ist der Mailtext
$mailtmp=&pgp(time,$mailtmp) ;
open(MAIL,"| /usr/lib/sendmail -t") || die "Kann die E-Mail nicht verschicken." ;
print MAIL "To: $mailto\n";
print MAIL "From: $mailfrom\n";
print MAIL "Subject: $mailsub\n\n" ;
print MAIL $mailtmp ;
close (MAIL) ;
sub pgp {
my %CONFIG = {
'PGP_PATH' => '/usr/local/bin/pgp' , #Pfad zu pgp oder pgpe
'PGP_METHODE' => 1 , # Wenn pgp dann 1, bei pgpe 2
'PGP_KEY' => 'perl@perl-archiv.de', #Schlüsselauswahl
'PGP_DIR' => '/home/.pgp' , #Pfad zu den Ringdateien
};
my $output_file=shift ;
my $output_text=shift ;
my $pgp_output;
if ($CONFIG{'PGP_METHODE'}==1) {
#PGP-Path
$ENV{'PGPPATH'} = $CONFIG{'PGP_DIR'} ;
my $pgp_options = "-fea +VERBOSE=0" ;
#PGP-Aufruf
$pgp_command = "$CONFIG{'PGP_PATH'} $pgp_options ";
$pgp_command .= "\"$CONFIG{'PGP_KEY'}\" ";
$pgp_command .= "> $output_file.pgp";
open (PGPCOMMAND, "| $pgp_command");
print PGPCOMMAND $output_text;
close (PGPCOMMAND);
#Ausgabe
open(PGPOUTPUT, "< $output_file.pgp");
while () {
$pgp_output .= $_;
}
close (PGPOUTPUT);
#Tmp-File löschen
unlink("$output_file.pgp");
} elsif ($CONFIG{'PGP_METHODE'}==2) {
#PGP-Path
$ENV{'PGPPATH'} = $CONFIG{'PGP_DIR'} ;
#Tmp-Datei speichern
open(PGPOUTPUT, "> $output_file.pgp.tmp");
print PGPOUTPUT $output_text ;
close (PGPOUTPUT);
#PGP-Aufruf
$pgp_command = "$CONFIG{'PGP_PATH'} ";
$pgp_command .= "-r $CONFIG{'PGP_KEY'} ";
$pgp_command .= "-at ";
$pgp_command .= "-o $output_file.pgp ";
$pgp_command .= "$output_file.pgp.tmp " ;
system($pgp_command) ;
#Ausgabe
open(PGPOUTPUT, "< $output_file.pgp");
while () {
$pgp_output .= $_;
}
close (PGPOUTPUT);
#Tmp-File löschen
unlink("$output_file.pgp","$output_file.pgp.tmp");
}
###
#Fehler: Nichts verschlüsselt
unless ($pgp_output) {
$pgp_output .= "$pgp_command\n\nScript Error: PGP produzierte keinen Output. \n";
$pgp_output .= "Eine Fehlerquelle ist eine falsche ID für den öffentlichen Schlüssel: \n";
$pgp_output .= "(pgp_key: $CONFIG{'PGP_KEY'})\n";
$pgp_output .= "Ein anderer Grund könnte ein falscher Pfad zur pubring.pgp sein: \n";
$pgp_output .= "(pgp_config_files: $CONFIG{'PGP_DIR'}) \n";
}
###
#Rückgabe
return($pgp_output) ;
}
Die Ringdateien müssen nicht auf dem Server erzeugt werden, ihr könnt die nehmen,
die vom Windowspogramm erzeugt wurden. Beim ersten Mailversand erfolgt noch ein
Fehler, beim zweiten geht es dann.
Kommentare
24.01.2002 - 01:30 | Again | sandhase@web.de
Perfekt!Das Script rundet das ganze ab. Kompliment und weiter so. Immer wieder gerne... 

Kommentar anfügen
|

|

|