* caff:
[pgp-tools.git] / caff / caff
index bb687a289b97768ce8aa38bc0d385bb0b4c19ab3..9712932b92f5f8bcc0831eda8423aa86b8d3c20a 100755 (executable)
--- a/caff/caff
+++ b/caff/caff
@@ -245,14 +245,22 @@ Add a Reply-To: header to messages sent. Default: none.
 Address to send blind carbon copies to when sending mail.
 Default: none.
 
-=item B<smtp-server> [string]
+=item B<mailer-send> [array]
 
-Send mail through specified SMTP server. Default: none (uses
-sendmail).
+Parameters to pass to Mail::Mailer.
+This could for example be
 
-=item B<smtp-port> [string]
+       $CONFIG{mailer-send} =  [ 'smtp', Server => 'mail.server', Auth => ['user', 'pass'] ]
 
-Use specified port for sending mail to SMTP server. Default : 25.
+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
 
@@ -295,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";
@@ -322,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/,.*//;
 
@@ -435,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,
 
@@ -779,14 +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);
-
-       if($CONFIG{'smtp-server'}) {
-               $message_entity->smtpsend(Host => $CONFIG{'smtp-server'},
-                       ($CONFIG{'smtp-port'} ? (Port => $CONFIG{'smtp-port'}) : ()),
-                       MailFrom => $CONFIG{'email'});
-       } else {
-               $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();
 };
 
@@ -1018,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;
        }
 };