Solved

Problem with piping email into script on CentOS using /etc/aliases or .forward

Posted on 2009-05-14
2
908 Views
Last Modified: 2013-12-16
I need to use this functionality tomorrow, and am still having issues with it. </panic> </slapForehead> Any assistance would be much appreciated.

I added to /etc/aliases:
tp: "|/raid/home/mdarling/code/sms/sms > /raid/host/toadprinceillustrations.com/logs/tp.log 2>&1"

And, of course, ran newaliases after to regenerate aliases.db.

If I run "mail tp", with test as subject/body, it's like the email goes nowhere.


To try to diagnose the problem down, I:

* Recompiled the c plus plus (experts exchange wont let me use plus signs here for some reason) program sms so the only instruction is "cout << 10 / 0;", which when ran adds a line to dmesg like: "sms[12602] trap divide error . . ." to I can easily see if the program executes, without the possibility of a bug in my program causing it to appear like the email isn't going anywhere. If I "mail tp", a divide error isn't added to dmesg. (I've also tried the program as originally made without the divide by zero instruction -- which works correctly when executed normally not through an email pipe -- and it doesn't seem to execute either, just in case dmesg wouldn't log a divide by zero error for some reason through an email pipe.)

* Made sure there aren't any conflicting entries in /etc/mail/virtusertable, and ran make in that directory to regenerate virtusertable.db.

* Removed the tp line in /etc/aliases, and mailed tp. The email properly arrived in /etc/mail/tp, so I know there isn't a general configuration issue with the account or sendmail in general.

* Removed the tp line in /etc/aliases, and created ~tp/.forward with:
"|/raid/home/mdarling/code/sms/sms > /raid/host/toadprinceillustrations.com/logs/tp.log 2>&1"

which I'm not sure should work, but I saw some references to using .forward instead of /etc/aliases to pipe email. Had no effect here either.

I haven't changed any of the file permissions or ownerships, but ownershio/permission-checks so you can see them are:

[root@servo mail]# ls -la /etc/aliases* /etc/mail/* ~mdarling/code/smsCreditCard/smsCreditCard ~tp/.forward
-rw-r--r-- 1 root             root                1685 May 14 10:29 /etc/aliases
-rw-r----- 1 root             smmsp              12288 May 14 10:17 /etc/aliases.db
-rw-r--r-- 1 root             root                 595 Apr 21 23:42 /etc/mail/access
-rw-r----- 1 root             root               12288 Apr 22 16:00 /etc/mail/access.db
-rw-r--r-- 1 root             root                   0 Mar 14  2007 /etc/mail/domaintable
-rw-r----- 1 root             root               12288 May 17  2008 /etc/mail/domaintable.db
-rw-r--r-- 1 root             root                5521 Mar 14  2007 /etc/mail/helpfile
-rw-r--r-- 1 root             root                 243 Apr 21 23:45 /etc/mail/local-host-names
-rw-r--r-- 1 root             root                  64 Mar 14  2007 /etc/mail/local-host-names.sample
-rw-r--r-- 1 root             root                   0 Mar 14  2007 /etc/mail/mailertable
-rw-r----- 1 root             root               12288 May 17  2008 /etc/mail/mailertable.db
-rw-r--r-- 1 root             root                1048 Mar 14  2007 /etc/mail/Makefile
-rw-r--r-- 1 root             root               58195 May 20  2008 /etc/mail/sendmail.cf
-rw-r--r-- 1 root             root               58194 May 17  2008 /etc/mail/sendmail.cf.sample
-rw-r--r-- 1 root             root                7209 Mar 14  2007 /etc/mail/sendmail.mc
-r--r--r-- 1 root             root               41275 Mar 14  2007 /etc/mail/submit.cf
-rw-r--r-- 1 root             root                 940 Mar 14  2007 /etc/mail/submit.mc
-rw-r--r-- 1 root             root                 127 Mar 14  2007 /etc/mail/trusted-users
-rw-r--r-- 1 root             root                 851 May 14 10:10 /etc/mail/virtusertable
-rw-r--r-- 1 root             root                2204 May 20  2008 /etc/mail/virtusertable.backup
-rw-r--r-- 1 root             root                1044 May 14 10:10 /etc/mail/virtusertable.bak
-rw-r----- 1 root             root               12288 May 14 10:10 /etc/mail/virtusertable.db
-rwxrwxr-x 1 mdarling         mdarling         2597264 May 14 10:01 /raid/home/mdarling/code/sms/smsCredit
-rw-r--r-- 1 tp               tp                 56 May 14 09:57 /raid/host/toadprinceillustrations.com/users/tp/.forward
0
Comment
Question by:darlingm2
2 Comments
 
LVL 14

Accepted Solution

by:
cjl7 earned 500 total points
ID: 24385704
Try removing the tp:... from /etc/aliases

do "mail tp" with the email you want

run the command manually
cat /email-msg | /raid/home/mdarling/code/sms/sms > /raid/host/toadprinceillustrations.com/logs/tp.log

Does that work?

if it does work, can the email user (the user running the email-daemon) execute ths sms-program?

//jonas
0
 

Author Comment

by:darlingm2
ID: 24386010
Thanks, you pointed me to the solution.  Switching to user tp, I couldn't execute /raid/home/mdarling/code/sms/sms, I got permission denied.  Had to chmod 755 ~mdarling, now it works.  By default, it was 700.  I'm the only person who has access to the server, so I'm fine with 755 permissions here.
0

Featured Post

NFR key for Veeam Backup for Microsoft Office 365

Veeam is happy to provide a free NFR license (for 1 year, up to 10 users). This license allows for the non‑production use of Veeam Backup for Microsoft Office 365 in your home lab without any feature limitations.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

1. Introduction As many people are interested in Linux but not as many are interested or knowledgeable (enough) to install Linux on their system, here is a safe way to try out Linux on your existing (Windows) system. The idea is that you insta…
The purpose of this article is to demonstrate how we can use conditional statements using Python.
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:

679 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question