Thread Perl Script PGP Email entschlüsseln und weiterleiten
(18 answers)
Opened by Chris at 2017-02-17 21:26
Und was für Fehler kommen? Werden Dir die Fehlermeldungen verschwiegen? Sollen wir raten?
Ich denke, Du wirst Dich ein wenig mit Perl auseinandersetzen müssen ;-) Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 sub decode { my $entity = shift @_; #Create new Mail GPG obj my $mg = Mail::GPG->new; #Decrypt the email from stdin my ($decrypted_entity, $result) = $mg->decrypt ( entity => $entity, passphrase => $passphrase ); #Get a reference to the decoded message body my $decoded_body_sref = $result->get_gpg_stdout; return $decoded_body_sref; # my $to = 'chris'; # my $from = 'root'; # my $subject = 'Test Email'; #open(MAIL, "|/usr/sbin/sendmail -t"); #print MAIL "To: $to\n"; #print MAIL "From: $from\n"; #print MAIL "Subject: $subject\n\n"; #print MAIL $decoded_body_sref ; #close(MAIL); #print "Email Sent Successfully\n"; } Generell wird die Subroutine mit return $decoded_body_sref bereits wieder verlassen, bevor der Code zum Mailversand erreicht werden kann. Zum Mailversand (hab's nur schnell gelesen und schnell geantwortet, daher leider nur in Stichworten): - nutze lexikalische Datei-Handles - nutze 3-Argument-Form des open - prüfe Systemaufrufe wie open() auf Erfolg; gleiches beim close() ... - $decoded_body_sref enthält eine Referenz, die man dereferenzieren muss - Pack den Mailversand in eine eigene Routine, und nicht mit in die decode-Routine - Rufe diese Routine dann im Main auf, nachdem Du die Referenz auf den entschlüsselten Text hast - Sauberer und Besser wäre es, ein passendes Modul zum Mail-Versand zu nehmen; z.B. Email::Sender Schnell gehackter und ungetesteter Vorschlag: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 ... ### MAIN # we get a reference to body my $unencrypted_body = &parse_email($stdin); # ***NEW*** sent dereferenced body by mail mail_it( $$unencrypted_body ); ... sub decode { my $entity = shift @_; #Create new Mail GPG obj my $mg = Mail::GPG->new; #Decrypt the email from stdin my ($decrypted_entity, $result) = $mg->decrypt ( entity => $entity, passphrase => $passphrase ); #Get a reference to the decoded message body my $decoded_body_sref = $result->get_gpg_stdout; return $decoded_body_sref; # ***NEW*** removed mail sending } # ***NEW*** own subroutine for mail sending sub mail_it { my $mailtext = shift; my $to = 'chris'; my $from = 'root'; my $subject = 'Test Email'; open( my $mailer, "|-", "/usr/sbin/sendmail -t" ) or die "Could not open sendmail: $!"; # one print to print it all print $mailer <<"END_OF_MESSAGE"; To: $to From: $from Subject: $subject $mailtext END_OF_MESSAGE close( $mailer ) or die "Close sendmail failed: $!"; print "Email Sent Successfully\n"; } edit: fixed typo in code; thanks Chris Last edited: 2017-02-18 00:03:25 +0100 (CET) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |