I'm unable to replicate this on my end.
jburk-mbPro:~ jburk$ qbsub -req host.os=linux -mail -name "mail test" ls /home/jburk/test
2694
jburk-mbPro:~ jburk$ qbsub -req host.os=linux -mail -name "mail test" ls /home/jburk/test/1
2695
jburk-mbPro:~ jburk$ qbsub -req host.os=linux -mail -name "mail test" ls /home/jburk/test1
2696
I received mail for all 3 jobs.
Check the callbacks for the jobs that fail to send mail. Look for the one that has a language set to "mail". It should look something like this:
count : 1
code :
language : mail
triggers : done-job-self
pid : 2696
maximum : -1
user : jburk
ready : done-job-self 1
id : 1
You're interested in the value at the end of the 'ready' line: 1 means the condition to fire the trigger has been met, 0 means not. If ready == 1, check the 'count', which is how many times the callback actually ran. It's usually 1, but if it's 0, then it never ran, despite the trigger condition being met.
If the callback is running, you'll need to dig deeper.
Can you build a test job that runs very fast that fails to send mail? If so, is your supervisor an OSX or linux box, and if you have access to it, you may want to tail the supelog and see what's happening when your job runs.
Look for lines like:
[Dec 11, 2009 9:04:57] build01 : executing mail callback (2696)2696*1 trigger: done-job-self event: done-job-2696
[Dec 11, 2009 9:04:57] build01 : executing mail callback (2696): done-job-self event: done-job-2696 - begin
[Dec 11, 2009 9:04:57] build01 : sending notification mail to: jburk
[Dec 11, 2009 9:04:59] build01 : sent mail to user: jburk via: mail.pipelinefx.com
[Dec 11, 2009 9:04:59] build01 : executing mail callback (2696): done-job-self event: done-job-2696 - end
If you see the 'sent mail' line, but you never receive the mail, it may be getting caught in a spam trap, either on your end or somewhere between the supervisor and your mailbox.