in reply to Ways to test sendmail

If sendmail does end up seeming like it's being called correctly and is indeed taking the e-mail from you, perhaps look for the presence of a "dead.letter" file in your home directory.

I might also try to print the contents of the e-mail it would have sent to sendmail (along with the command-line arguments, if they're variable) in a file to be sure that it's properly formed and everything is being passed to sendmail correctly.

Replies are listed 'Best First'.
Re: Re: Ways to test sendmail
by belize (Deacon) on Jan 07, 2001 at 03:20 UTC
    Interesting, yes there is a dead.letter file generated. What does that mean though? All it is is exactly what should be sent out.

    Thanks for the lead.

      It means sendmail is finding it difficult to deliver your mail. Try printing out a "good" e-mail to a text file (or use the dead.letter you found, though you might have to edit it a bit), and pipe it through sendmail yourself:
      $ sendmail -t <message
      See if sendmail says anything to you.
Re: Re: Ways to test sendmail
by belize (Deacon) on Jan 07, 2001 at 04:09 UTC
    Here is the Sub SendMail:

    sub SendMail { if (-e $FORM{'template'}) { } else { &Error('Template File Not Found - Error at sendmail subscri +pt'); } open (FILE, $FORM{'template'}); @File = <FILE>; close (FILE); open (MAIL, "|$mailprog -t") || &Error('Unable to Open Sendmail'); print MAIL "To: $FORM{'mailto'}\n"; print MAIL "From: $FORM{'req-EMail'} ($FORM{'req-FName'} $FORM{'re +q-LName'})\n"; print MAIL "Subject: $FORM{'subject'}\n"; print MAIL "Bcc: \n\n"; print MAIL "This information request form is from the Rainforest & + Reef Resorts of Belize website.\n"; print MAIL "*************************************************\n"; print MAIL "This form was submitted at $time by $FORM{'req-FName'} + $FORM{'req-LName'} ($FORM{'req-EMail'}).\n"; print MAIL "For your records, this is Form Request Number \= $Orde +r from this website.\n"; print MAIL "*************************************************\n\n" +; foreach $File (@File) { $File =~ s/\n//; foreach $Field (@InputFields) { $ReplaceVar = $FORM{$Field}; $SearchVar = '\[' . $Field . '\]'; $File =~ s/$SearchVar/$ReplaceVar/g; } print MAIL "$File\n"; } close (MAIL); }

    After performing this subroutine, it then:

    sub Redirect { if ($FORM{'success'}) { print "Location: $FORM{'success'}\n\n"; } }
    The "success" page is returned, but the mail does not go out and the email is added to the "dead.letter" file.

    Any ideas?

      Hmmm, well Some hints (no big help though):
      sub SendMail { # add debugging my $debug = 6; if (-e $FORM{'template'}) { } else { &Error('Template File Not Found - Error at sendmail subsc +ript'); }
      Normally (note adding the missing file name to error msg):
      if ( ! -e $FORM{'template'}) { &Error('Template File $FORM{template} Not Found - Error at sendma +il subscript'); } open (FILE, $FORM{'template'});<br>
      always:
      open (FILE, $FORM{'template'}) or die "can't open FILE $FORM{tem +plate}: $!";<br> @File = <FILE>; close (FILE); open (MAIL, "|$mailprog -t") || &Error('Unable to Open Sendmail' +);
      Try:
      open (MAIL, "|$mailprog -t") || &Error("Unable to Open $mailprog +: $!"); print "<p>trying: $mailprog -t<br> To: $FORM{mailto}<br> From: $FORM{req-EMAIL} ($FORM{req-FName} $FORM{req-LName})<br> Subject: $FORM{subject}<br>\n" if $debug > 5; print MAIL "To: $FORM{'mailto'}\n"; print MAIL "From: $FORM{'req-EMail'} ($FORM{'req-FName'} $FORM{' +re +q-LName'})\n"; print MAIL "Subject: $FORM{'subject'}\n"; print MAIL "Bcc: \n\n"; print MAIL "This information request form is from the Rainforest + & + Reef Resorts of Belize website.\n"; print MAIL "*************************************************\n" +; + print MAIL "This form was submitted at $time by $FORM{'req-FName +'} + $FORM{'req-LName'} ($FORM{'req-EMail'}).\n"; print MAIL "For your records, this is Form Request Number \= $Or +de +r from this website.\n"; print MAIL "*************************************************\n\ +n" +; foreach $File (@File) { $File =~ s/\n//; foreach $Field (@InputFields) { $ReplaceVar = $FORM{$Field}; $SearchVar = '\[' . $Field . '\]'; $File =~ s/$SearchVar/$ReplaceVar/g;
      This is odd, does each file (file name) possibly have every/any input field w/i it? Anyway, this is/may be 'cooler'
      $File =~ s/\[$Field]/$FORM{$Field}/g; # do you need an 'e' too? } print MAIL "$File\n"; } close (MAIL); }
      Only thing I can see is that, as you don't (here) verify the sender's address or the To: address, it may have junk in there that sendmail doesn't like. Do you need pointy brackets around the actual To|From address parts?

      a