mail ok in command line, not in scripts

I set up tcpwrapper on a linux machine.
It works fine (non-authorized hosts are banned), but in the deny file, I put the shell command (echo "sthing" | mail me@home.com). I know that this command line is executed with sh shell, which works fine on the linux machine.
If someone is banned I must receive the mail (It works perfectly on IRIX 6.3, exactly with the same shell command) and I receive nothing.
If I enter echo "sthing" | mail me@home.com under command line mode, I receive the mail.
Any suggestion?? Thanks.
steph84Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

ozoCommented:
Is mail in your PATH?  What if you give an absolute path name?
0
TuffCommented:
I'm still kinda new to UNIX but in a perl script when you put in an email address it has to be written as such

anyname\@yourdomain.com

could this be possible?


0
ozoCommented:
It doesn't have to be written as such.  It could also be written as
q(anyname@yourdomain.com)
But it sounds like steph84 is talking about a script for sh, not perl.
0
Cloud Class® Course: MCSA MCSE Windows Server 2012

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

eckspurtCommented:
What ozo suggests is probably correct.  Give the absolute path to the mail program (/bin/mail or /usr/bin/Mail).  System shell scripts should have a very restricted PATH set up so that there's minimal opportunity for a trojan horse to slip in.

0
steph84Author Commented:
I could try it today, it sounded nice but unfortunately, it didn't work....
Quite strange.
0
percynCommented:
Lets see the script.
What shell is it, tcsh or csh ?
0
steph84Author Commented:
(echo "client info: " %c "\nserver info: " %s "\ndate: " `date`) | /usr/bin/mail security@imaginet.fr

The %c and %s values are obtained by the wrapper and work fine.
According tcpwrapper man page, the shell command is interpreted by sh....

0
ozoCommented:
How about using thr full path to `date`?

0
steph84Author Commented:
just as before,arghh!!!!
It's not very very very important if it doesn't work, but I'd like to understand...
I've increase to 150!

0
ozoCommented:
How about:
(/usr/bin/echo "client info: " %c; /usr/bin/echo "server info: " %s ; /usr/bin/echo "date: "; /usr/bin/date) | /usr/bin/mailsecurity@imaginet.fr

Do you get any error messages?
0
steph84Author Commented:
I tried! Nothing, no mail,no error message, nothing.
I even tried (/usr/bin/echo "foo")|/usr/bin/mail security@imaginet.fr
I'm tired of this....
0
mzitoCommented:
I'm going to make two possible answers for this:
1) Are your permissions set on your mail program properly (i.e.  world executable)?
TCP Wrappers run shell commands as nobody, so that could cause a problem

2) Did you use the proper syntax if you're using the extended options?    
Tcp Wrappers can be compiled to use either the standard options or a much more flexible extended options.  If the second case is true, the following is an example hosts.deny:
ALL:ALL: twist echo "sthing" | mail  root@localhost

That will cause that command to be executed in place of the service daemon. I tried this example on my machine, and it worked fine.

Hope this helps.
Matt Zito
0
António SargentoChief ArchitectCommented:
I had tried the following script and work just fine in a SUN Solaris 2.5.1.

#!/bin/sh

echo "sthing" | mail antonio@leia

0
António SargentoChief ArchitectCommented:
I had tried the following script and work just fine in a SUN Solaris 2.5.1.

#!/bin/sh

echo "sthing" | mail me@machine

0
ozoCommented:
That may even be an answer to the original question if you can get your tcpwrapper to call the script.
0
steph84Author Commented:
Sorry but this script work fine, even on my Irix 6.3, but not under tcpwrapper on the linux machine, That's my problem!
I've not enough time right now to try other things.....

0
steph84Author Commented:
Try others things recently, nothing worked.
mail work correctly, tried with whole path, with just echo "smthing" | mail, all rights are ok, ans exactly the same commans works under Irix.
Perhaps a bug from tcpwrapper under my version of linux.....

0
hajekCommented:
if you are not sure if tcpwrapper call the script at all, try to do something what 100% does not need tty in the script (cp something_existing /tmp). If the file appears in /tmp, the script was called.

BTW, I do not know tcpwrapper, but if it runs under "nobody", what are permissions on the script you want to be run ??
0
ahoffmannCommented:
(echo "client info: " %c "\nserver info: " %s "\ndate: " `date`) | /usr/bin/mail  security@imaginet.fr

is this the "server program" you specified in /etc/inetd.conf ?
Have you tried to call a script in /etc/inetd.conf which executes
your commands? Like:
      /your_path/your_script %c %s

your_script:
(echo "client info: " $1 "\nserver info: " $2 "\ndate: " `date`) | /usr/bin/mail security@imaginet.fr

Probably some still mentioned suggestios about full pathnames are
usefull too :-)
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Unix OS

From novice to tech pro — start learning today.