Cron output mail lost with update to RELENG_7

Kevin Oberman oberman at es.net
Tue Mar 9 23:43:05 UTC 2010


> Date: Fri, 5 Mar 2010 12:33:09 -0800
> From: Jeremy Chadwick <freebsd at jdc.parodius.com>
> Sender: owner-freebsd-stable at freebsd.org
> 
> On Fri, Mar 05, 2010 at 11:32:47AM -0800, Kevin Oberman wrote:
> > I have discovered a problem with the mail sent by cron jobs (I refer
> > only to logs, not invocations of mail from scripts.) They never are
> > delivered.
> > Mar  5 10:32:30 noc5 postfix/sendmail[1175]: fatal: root(0): No recipient addresses found in message header
> > Mar  5 10:32:30 noc5 postfix/sendmail[1175]: fatal: root(0): No recipient addresses found in message header
> > Mar  5 10:37:00 noc5 postfix/sendmail[1268]: fatal: root(0): No recipient addresses found in message header
> > Mar  5 10:37:00 noc5 postfix/sendmail[1268]: fatal: root(0): No recipient addresses found in message header
> > 
> > This showed up when I upgraded the system to RELENG_7 yesterday. My
> > previous install was RELENG_7 of May 2, 2009 and it delivered the logs
> > without any problems. No other changes were made. postfix was 2.6.5.
> > 
> > I have this same issue on all 8.0 systems I have, but I was blaming a
> > fault in postfix config. Now I realize that this is not the problem.
> > 
> > I really don't know quite where to look for this. Any clues would be
> > appreciated. 
> 
> I don't have this issue on any of our RELENG_7 or RELENG_8 systems, all
> of which use postfix and WITHOUT_SENDMAIL in /etc/src.conf.
> 
> It sounds like cron is trying to spawn something like mail(1) (more
> likely /usr/sbin/sendmail; would have to look at the code) and passing
> it either incorrect flags or actual content within the header itself,
> e.g. a missing To: line.
> 
> Since postfix is involved, have you verified your /etc/mail
> configuration to make sure mailwrapper is referring to the correct
> postfix binaries?
> 
> The only other thing I can think of would be, possibly, some sort of
> cronjob root has (either crontab -l or /etc/crontab) which makes use of
> the MAILTO environment variable.  See cron(8) for what I'm talking
> about.
> 
> You might have to run cron in debug mode (see -x flag; your argument
> list will probably be quite long :-) ) to see what it's doing.
> Otherwise truss or ktrace might be the only way to track down what's
> going on underneath.

After a lot of testing, I created a dummy sendmail that simply captured
the arguments and the data from STDIN. 
#!/usr/local/bin/perl
open OUT, ">/home/oberman/cronout.txt";
foreach (@ARGV) {print OUT "$_\n";}
print OUT "Mailcat ran!\n";
sleep 5;
while (<STDIN>) { print OUT $_; }
close OUT;

It looks like cron is sending an empty message. I see MAILARG of
'-FCronDaemon -odi -oem -oi -t' but that is followed by EOF with no
content at all.

I'm looking at the cron source, but I am baffled for the moment. I see
no recent updates to cron in RELENG_7, though there are in RELENG_8. I'm
running out of ideas.
-- 
R. Kevin Oberman, Network Engineer
Energy Sciences Network (ESnet)
Ernest O. Lawrence Berkeley National Laboratory (Berkeley Lab)
E-mail: oberman at es.net			Phone: +1 510 486-8634
Key fingerprint:059B 2DDF 031C 9BA3 14A4  EADA 927D EBB3 987B 3751


More information about the freebsd-stable mailing list