Sponsored Content
Full Discussion: SendMail in Perl
Top Forums Shell Programming and Scripting SendMail in Perl Post 81461 by cbkihong on Friday 19th of August 2005 08:59:16 PM
Old 08-19-2005
Now you need to be aware that sending mail in your snippet involves purely invoking an external sendmail executable to send the mail for you. So the only direct way you can check the status is by its return value.

I'm not sure about what sendmail return values will provide (let alone availability of other sendmail clones such as qmail or postfix which may vary in behaviour WRT this). But I think sendmail's return value is not any much useful. Don't forget sendmail does not send the mail immediately but queued it for delivery so the sendmail process will immediately return without waiting for delivery. That is, mail sending with sendmail is an asynchronous operation so there is not much status indication you can get, beyond obvious misconfigurations such as the sendmail executable is not found which may get trapped! So probably, the sendmail return value is always 0 (successful) so you don't have much to tell from it (and so it will nearly always be successful so eval() won't work).

With a programming mind, I generally recommend this method:

(1) Generate mail with an additional header with an ID that your program can use to identify the message. e.g.

X-MsgID: 20050820000001

Note that custom headers should start with 'X-'. We need a custom message ID because we cannot get the actual message ID as we send it, so we need to embed our own.

Save information about this mail with this message ID in some persistent storage (such as database or files) that allows you to, say, associate this message with a particular application activity that triggers this message.

(2a) At sendmail, capture the return mail by redirecting incoming mail to a program (setting /etc/mail/aliases or similar) instead of to mailbox. The program will be invoked with the return mail content. In the program, you can extract the message ID from the custom ID we inserted. Then we know the mail cannot be sent (or deferred for later retry).

(2b) Some others who have no say over mail server configuration may read the destination mailbox (through POP3 for instance) instead.

(3) Some people may even want to extract the actual message ID for extracting the relevant record from /var/log/maillog. But I usually tend to think this is too much of a trouble.

This is a lot of programming. So are there existing modules you can use to help out a little bit? Probably yes. You may want to think about this:

http://search.cpan.org/~freeside/Mai...ounceParser.pm

I haven't used it before so I'm not sure if it's good. From the POD it seems to do the most important part of the trick though.
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

sendmail

What is teh command to run sendmail in the normal operation mode for Red Hat 7.1? Thanks. (1 Reply)
Discussion started by: kara
1 Replies

2. UNIX for Dummies Questions & Answers

sendmail.cf

Dear All , I have Linux Red Hat 6.1 , and i have sendmail (8.11.6 ) . i have big problem with spammers , i was looking in sendmail.cf configuration file and i saw this option , i tried it but it failed : the option is : # file containing known spammers by email,domain,ip Kjunk hash... (1 Reply)
Discussion started by: tamemi
1 Replies

3. UNIX for Dummies Questions & Answers

Sendmail

I have a Sendmail (Red Hat 9.0, Sendmail 8.12.8-4)server set up on the local network. I am able to send mail just fine, and when I copy error messages from the root mail account to my test user, I can download those to Outlook just fine. My problem is that I cannot send messages to my testaccount... (2 Replies)
Discussion started by: Jody
2 Replies

4. UNIX for Advanced & Expert Users

sendmail

When I try to use mailx on AIX 5.2 I get the following message: "The flags you gave make no sense since you're not sending mail." The type of command sent is as follows: mailx -s "Test" -c gilstanden@hotmail.com < sendmail.pid but it just gives the message referenced previously. Do I need to... (1 Reply)
Discussion started by: gstanden
1 Replies

5. Solaris

sendmail.cf

when mailing from server sender address showing in this format: username@hostname.oops.co.uk What changes are required to remove the hostname from the senders address. Solaris 9 thanks :) (5 Replies)
Discussion started by: smcart
5 Replies

6. Shell Programming and Scripting

Perl: Sendmail - Permission denied

Hi, I'm trying to write a simple mail handler perl script for a website I'm working on. I've managed to installed sendmail yesterday, and I'm currently trying to get the script to work. I'm getting an error however. Here's the block of perl code I'm using: open(MAIL, "| $sendmailpath -t")... (7 Replies)
Discussion started by: LNC
7 Replies

7. UNIX for Dummies Questions & Answers

run a perl.script upon receiving an email in Sendmail

Hi All I am newbie with Sendmail and Linux in general. We use sendmail for outgoing and incoming mails. Once our server receives a certain email xxx@yyy.com we would like to run a PERL script doing some task wiht it. Can you address me a little bit on that topic? In order to do that the... (0 Replies)
Discussion started by: manustone
0 Replies

8. UNIX for Advanced & Expert Users

Sendmail questions, SCO 5.0.6 sendmail 8.11.0

I am running SCO 5.0.6 and using sendmail 8.11.0 and having issues with smtp authentication. When trying to send mail the following message will kick back. (reason: 530 5.7.1 Authentication required) 530 5.7.1 Authentication required Not sure what needs to be tweeked in sendmail.cf but I... (1 Reply)
Discussion started by: ziggy6
1 Replies

9. Solaris

Clarifying sendmail configuration - sendmail-client offline

Hi all, I have read about sendmail running as 2 separate process. 1 as a MSP, and the other as the real daemon or MTA. In my current configuration, the sendmail-client is disabled. Both submit.cf and sendmail.cf are left as default untouch I do not specified any mailhost... (3 Replies)
Discussion started by: javanoob
3 Replies

10. Programming

PERL: In a perl-scripttTrying to execute another perl-script that SETS SOME VARIABLES !

I have reviewed many examples on-line about running another process (either PERL or shell command or a program), but do not find any usefull for my needs way. (Reviewed and not useful the system(), 'back ticks', exec() and open()) I would like to run another PERL-script from first one, not... (1 Reply)
Discussion started by: alex_5161
1 Replies
MH-TAILOR(5)							     [nmh-1.5]							      MH-TAILOR(5)

NAME
mh-tailor, mts.conf - mail transport customization for nmh message handler SYNOPSIS
/etc/nmh/mts.conf DESCRIPTION
The file /etc/nmh/mts.conf defines run-time options for those nmh programs which interact (in some form) with the message transport system. At present, these (user) programs are: ap, conflict, inc, msgchk, msh, post, rcvdist, and rcvpack. Each option should be given on a single line. Blank lines and lines which begin with `#' are ignored. The options available along with default values and a description of their meanings are listed below: mts: The mail transport method to use. The two acceptable options are smtp (which is the default), and sendmail. If you use smtp, this will enable a direct SMTP (simple mail transport protocol) interface in nmh. When sending mail, instead of passing the message to the mail transport agent, post will open a socket connection to the mail port on the machine specified in the servers entry. If you use sendmail, then post will send messages by forking a local copy of sendmail. Currently it will still speak SMTP with this local copy of sendmail. localname: The hostname nmh considers local. It should typically be a fully qualified hostname. If this is not set, depending on the version of UNIX you're running, nmh will query the system for this value (e.g. uname, gethostname, etc.), and attempt to fully qualify this value. If you are using POP to retrieve new messages, you may want to set this value to the name of the POP server, so that outgoing message appear to have originated on the POP server. localdomain: If this is set, a `.' followed by this string will be appended to your hostname. This should only be needed, if for some reason nmh is not able to fully qualify the hostname returned by the system (e.g. uname, geth- ostname, etc.). clientname: This option specifies the host name that nmh will give in the SMTP HELO (and EHLO) command, when posting mail. If not set, the default is to use the host name that nmh considers local (see localname above). If this option is set, but empty, no HELO command will be given. Although the HELO command is required by RFC-821, many SMTP servers do not require it. Early versions of SendMail will fail if the hostname given in the HELO command is the local host. Later versions of SendMail will complain if you omit the HELO command. If you run SendMail, find out what your system expects and set this field if needed. systemname: This option is only used for UUCP mail. It specifies the name of the local host in the UUCP "domain". If not set, depending on the version of UNIX you're running, nmh will query the system for this value. This has no equivalent in the nmh configuration file. mmdfldir: /var/mail The directory where maildrops are kept. If this option is set, but empty, the user's home directory is used. This overrides the default value chosen at the time of compilation. mmdflfil: The name of the maildrop file in the directory where maildrops are kept. If this is empty, the user's login name is used. This over- rides the default value (which is empty). mmdelim1: 01010101 The beginning-of-message delimiter for maildrops. mmdelim2: 01010101 The end-of-message delimiter for maildrops. maildelivery: /usr/lib/mh/maildelivery The name of the system-wide default maildelivery file. See slocal(1) for the details. everyone: 200 The highest user-id which should NOT receive mail addressed to "everyone". noshell: If set, then each user-id greater than "everyone" that has a login shell equivalent to the given value (e.g., "/bin/csh") indicates that mail for "everyone" should not be sent to them. This is useful for handling admin, dummy, and guest logins. SMTP support This option is only available if you set mts to smtp. servers: localhost A lists of hosts and networks which to look for SMTP servers when posting local mail. It turns out this is a major win for hosts which don't run an message transport system. The value of servers should be one or more items. Each item is the name of a host which is (hopefully) running a SMTP server. SendMail This option is only available if you set mts to sendmail. sendmail: /usr/sbin/sendmail The pathname to the sendmail program. Post Office Protocol This option is only available if you have compiled nmh with POP support enabled (i.e., "--enable-pop"). pophost: The name of the default POP service host. If this is not set, then nmh looks in the standard maildrop areas for waiting mail, other- wise the named POP service host is consulted. File Locking A few words on locking: nmh has several methods for creating locks on files. When configuring nmh, you will need to decide on the locking style and locking directory (if any). The first controls the method of locking, the second says where lock files should be created. To configure nmh for kernel locking, use the "--with-locking=flock" configure option if you want to use the flock system call; use "--with- locking=lockf" if you want to use the lockf system call; or use "--with-locking=fcntl" if you want to use the fcntl system call for kernel- level locking. Instead of kernel locking, you can configure nmh to use dot locking by using "--with-locking=dot". Dot locking specifies that a file should be created whose existence means "locked" and whose non-existence means "unlocked". The name of this file is constructed by append- ing ".lock" to the name of the file being locked. If "--enable-lockdir=directory" is not specified at build time, lock files will be cre- ated in the directory where the file being locked resides. Otherwise, lock files will be created in the directory specified by "--enable- lockdir". Prior to installing nmh, you should see how locking is done at your site, and set the appropriate values. FILES
/etc/nmh/mts.conf nmh mts configuration file PROFILE COMPONENTS
None SEE ALSO
mh-mts(8), post(8) DEFAULTS
As listed above MH.6.8 11 June 2012 MH-TAILOR(5)
All times are GMT -4. The time now is 11:37 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy