/ etc / aliases使用管道运行脚本返回错误(mailer = prog,dsn = 5.3.0,stat = unknown mailer error 2)

时间:2014-03-13 12:05:23

标签: email pipe sendmail aliases

我想对我的问题提出任何建议,以便在/ etc / aliases上运行脚本。 首先,这是我的环境/脚本。

  • OS:centos 6
  • script:python 2.6.6
  • mail:sendmail-8.14 / dovecot-2x
  • python脚本(测试非常简单)
  

导入sys

     

f =开启(" aa.txt",' w')

     

对于范围内的i(1,5):       data ="%d \ n" % 一世       f.write(数据)

     

f.close()   sys.exit()

然后我做了一些使用smrsh的配置,在/ etc / smrsh /上创建链接,在/ etc / smrsh /...上移动脚本。

然后修改/ etc / aliases如下:

testuser:  "|/etc/smrsh/python /etc/smrsh/aa.py"

然后运行newaliases

当我向testuser用户发送电子邮件时,maillog会显示如下错误: (抱歉更改IP,域等信息)

Mar 13 11:14:38 localhost sendmail[8153]: s2DBEcX7008153: from=<ttt@test.com>, size=4448, class=0, nrcpts=1, msgid=<B75C8C1216C9824DBF46410575577E294559AC17@test.com>, proto=ESMTP, daemon=MTA, relay=relay.test.com [xx.xxx.000.xx]
Mar 13 11:14:39 localhost sendmail[8154]: s2DBEcX7008153: to="|/etc/smrsh/python /etc/smrsh/aa.py", ctladdr=<testuser@[xx.xx.xx.xx]> (8/0), delay=00:00:01, xdelay=00:00:01, mailer=prog, pri=34652, dsn=5.3.0, stat=unknown mailer error 1
Mar 13 11:14:39 localhost sendmail[8154]: s2DBEcX7008153: s2DBEdX7008154: DSN: unknown mailer error 1

但是,只需通过/ etc / aliases转发电子邮件就可以了, testuser:test@zzz.com

我试图在shell上运行smrsh:

  
    

smrsh -c&#34; | / etc / smrsh / python /etc/smrsh/aa.py"

  

它也很有效。

这是我对Mprog的sendmail.cf,

Mlocal,         P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
                T=DNS/RFC822/X-Unix,
                A=procmail -t -Y -a $h -d $u
Mprog,          P=/usr/sbin/smrsh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/,
                T=X-Unix/X-Unix/X-Unix,
                A=smrsh -c $u

和/ etc / smrsh /

lrwxrwxrwx.  1 root root   17 Mar 13 09:01 procmail -> /usr/bin/procmail
lrwxrwxrwx.  1 root root   15 Mar 13 09:08 python -> /usr/bin/python
lrwxrwxrwx.  1 root root   15 Mar 13 09:42 smrsh -> /usr/sbin/smrsh
lrwxrwxrwx.  1 root root   17 Feb 13 09:17 vacation -> /usr/bin/vacation
-rwxr-xr-x.  1 root root  125 Mar 13 11:27 aa.py
-rw-r--r--.  1 root root   12 Mar 13 11:27 aa.txt

有人可以帮助解决这个问题吗? 非常感谢!

2 个答案:

答案 0 :(得分:3)

Sendmail FAQ 4.13 : What does "unknown mailer error 1" mean?

Sendmail希望退出代码为零(0),以便从64到78发出所有“OK” OR 退出代码信号,以指示特定问题。在您的情况下,退出代码(1)不在sendmail可以解释的退出代码列表中。

sysexits.h

中列出了表示错误/问题的有效退出代码
#define EX_USAGE        64      /* command line usage error */
#define EX_DATAERR      65      /* data format error */
#define EX_NOINPUT      66      /* cannot open input */
#define EX_NOUSER       67      /* addressee unknown */
#define EX_NOHOST       68      /* host name unknown */
#define EX_UNAVAILABLE  69      /* service unavailable */
#define EX_SOFTWARE     70      /* internal software error */
#define EX_OSERR        71      /* system error (e.g., can't fork) */
#define EX_OSFILE       72      /* critical OS file missing */
#define EX_CANTCREAT    73      /* can't create (user) output file */
#define EX_IOERR        74      /* input/output error */
#define EX_TEMPFAIL     75      /* temp failure; user is invited to retry */
#define EX_PROTOCOL     76      /* remote error in protocol */
#define EX_NOPERM       77      /* permission denied */
#define EX_CONFIG       78      /* configuration error */

答案 1 :(得分:0)

可能是因为脚本中的错误。 我只是尝试使用完整路径启动脚本来解决同样的问题。

user@linuxMachine:$ /etc/smrsh/aa.py

如果使用文件,可能会出现与代码中相关路径相关的错误。