X-Git-Url: http://git.sthu.org/?a=blobdiff_plain;f=caff%2Fcaff;h=9712932b92f5f8bcc0831eda8423aa86b8d3c20a;hb=2bf18e1cd6dc480aa947e440f45d33be9aa6d62d;hp=052ef8b84314748974bab8fdc3006936f0657672;hpb=b9455d161650fbadb1dcc9cc4284a227b4d1086c;p=pgp-tools.git diff --git a/caff/caff b/caff/caff index 052ef8b..9712932 100755 --- a/caff/caff +++ b/caff/caff @@ -50,7 +50,8 @@ CA Fire and Forget is a script that helps you in keysigning. It takes a list of keyids on the command line, fetches them from a keyserver and calls GnuPG so that you can sign it. It then mails each key to all its email addresses - only including the one UID that we send to in each mail, pruned from all but self -sigs and sigs done by you. +sigs and sigs done by you. The mailed key is encrypted with itself as a means +to verify that key belongs to the recipient. =head1 OPTIONS @@ -244,6 +245,23 @@ Add a Reply-To: header to messages sent. Default: none. Address to send blind carbon copies to when sending mail. Default: none. +=item B [array] + +Parameters to pass to Mail::Mailer. +This could for example be + + $CONFIG{mailer-send} = [ 'smtp', Server => 'mail.server', Auth => ['user', 'pass'] ] + +to use the perl SMTP client or + + $CONFIG{mailer-send} = [ 'sendmail', '-o8' ] + +to pass arguments to the sendmail program. +For more information run C<< perldoc Mail::Mailer >>. +Setting this option is strongly discouraged. Fix your local MTA +instead. +Default: none. + =back =head1 AUTHORS @@ -285,6 +303,10 @@ my $VERSION = "0.0.0.$REVISION_NUMER"; +sub mywarn($) { + my ($line) = @_; + print "[WARN] $line\n"; +}; sub notice($) { my ($line) = @_; print "[NOTICE] $line\n"; @@ -312,9 +334,12 @@ sub generate_config() { my $gecos = defined $ENV{'LOGNAME'} ? (getpwnam($ENV{LOGNAME}))[6] : undef; my $email; my @keys; - my $hostname = `hostname -f`; + # BSD does not have hostname -f, so we try without -f first + my $hostname = `hostname`; + $hostname = `hostname -f` unless $hostname =~ /\./; chomp $hostname; my ($Cgecos,$Cemail,$Ckeys) = ('','',''); + if (defined $gecos) { $gecos =~ s/,.*//; @@ -425,6 +450,8 @@ sub load_config() { $CONFIG{'no-download'} = 0 unless defined $CONFIG{'no-download'}; $CONFIG{'no-sign'} = 0 unless defined $CONFIG{'no-sign'}; $CONFIG{'key-files'} = () unless defined $CONFIG{'key-files'}; + $CONFIG{'mailer-send'} = [] unless defined $CONFIG{'mailer-send'}; + die ("$PROGRAM_NAME: mailer-send is not an array ref in $config.\n") unless (ref $CONFIG{'mailer-send'} eq 'ARRAY'); $CONFIG{'mail-template'} = <<'EOM' unless defined $CONFIG{'mail-template'}; Hi, @@ -746,7 +773,8 @@ sub send_mail($$$@) { $message = $stdout; $message_entity = MIME::Entity->build( - Type => 'multipart/encrypted; protocol="application/pgp-encrypted"'); + Type => 'multipart/encrypted; protocol="application/pgp-encrypted"', + Encoding => '7bit'); $message_entity->attach( Type => "application/pgp-encrypted", @@ -768,7 +796,8 @@ sub send_mail($$$@) { $message_entity->head->add("Reply-To", $CONFIG{'reply-to'}) if defined $CONFIG{'reply-to'}; $message_entity->head->add("Bcc", $CONFIG{'bcc'}) if defined $CONFIG{'bcc'}; $message_entity->head->add("User-Agent", $USER_AGENT); - $message_entity->send(); + mywarn("You have set arguments to pass to Mail::Mailer. Better fix your MTA. (Also, Mail::Mailer's error reporting is non existant, so it won't tell you when it doesn't work.)") if (scalar @{$CONFIG{'mailer-send'}} > 0); + $message_entity->send(@{$CONFIG{'mailer-send'}}); $message_entity->stringify(); }; @@ -1000,6 +1029,12 @@ if ($CONFIG{'no-download'}) { if (scalar %local_keyids) { notice ("Import failed for: ". (join ' ', keys %local_keyids)."." . ($had_v3_keys ? " (Or maybe it's one of those ugly v3 keys?)" : "")); exit 1 unless ask ("Some keys could not be imported - continue anyway?", 0); + if (scalar %local_keyids == 1) { + mywarn("Assuming ". (join ' ', keys %local_keyids)." is a fine keyid."); + } else { + mywarn("Assuming ". (join ' ', keys %local_keyids)." are fine keyids."); + }; + push @keyids_ok, keys %local_keyids; } };